0;x--)h="0"+h;return k>-1&&(h=h.toString().replace(/(\d)(?=(\d{3})+(?!\d))/g,"$1"+m.delimiters.thousands)),0===c.indexOf(".")&&(h=""),l=h+v+(q?q:""),n?l=(n&&w?"(":"")+l+(n&&w?")":""):j>=0?l=0===j?(w?"-":"+")+l:l+(w?"-":"+"):w&&(l="-"+l),l},stringToNumber:function(a){var b,c,d,e=f[h.currentLocale],g=a,i={thousand:3,million:6,billion:9,trillion:12};if(h.zeroFormat&&a===h.zeroFormat)c=0;else if(h.nullFormat&&a===h.nullFormat||!a.replace(/[^0-9]+/g,"").length)c=null;else{c=1,"."!==e.delimiters.decimal&&(a=a.replace(/\./g,"").replace(e.delimiters.decimal,"."));for(b in i)if(d=new RegExp("[^a-zA-Z]"+e.abbreviations[b]+"(?:\\)|(\\"+e.currency.symbol+")?(?:\\))?)?$"),g.match(d)){c*=Math.pow(10,i[b]);break}c*=(a.split("-").length+Math.min(a.split("(").length-1,a.split(")").length-1))%2?1:-1,a=a.replace(/[^0-9\.]+/g,""),c*=Number(a)}return c},isNaN:function(a){return"number"==typeof a&&isNaN(a)},includes:function(a,b){return-1!==a.indexOf(b)},insert:function(a,b,c){return a.slice(0,c)+b+a.slice(c)},reduce:function(a,b){if(null===this)throw new TypeError("Array.prototype.reduce called on null or undefined");if("function"!=typeof b)throw new TypeError(b+" is not a function");var c,d=Object(a),e=d.length>>>0,f=0;if(3===arguments.length)c=arguments[2];else{for(;e>f&&!(f in d);)f++;if(f>=e)throw new TypeError("Reduce of empty array with no initial value");c=d[f++]}for(;e>f;f++)f in d&&(c=b(c,d[f],f,d));return c},multiplier:function(a){var b=a.toString().split(".");return b.length<2?1:Math.pow(10,b[1].length)},correctionFactor:function(){var a=Array.prototype.slice.call(arguments);return a.reduce(function(a,b){var d=c.multiplier(b);return a>d?a:d},1)},toFixed:function(a,b,c,d){var e,f,g,h,i=a.toString().split("."),j=b-(d||0);return e=2===i.length?Math.min(Math.max(i[1].length,j),b):j,g=Math.pow(10,e),h=(c(a+"e+"+e)/g).toFixed(e),d>b-e&&(f=new RegExp("\\.?0{1,"+(d-(b-e))+"}$"),h=h.replace(f,"")),h}},b.options=h,b.formats=e,b.locales=f,b.locale=function(a){return a&&(h.currentLocale=a.toLowerCase()),h.currentLocale},b.localeData=function(a){if(!a)return f[h.currentLocale];if(a=a.toLowerCase(),!f[a])throw new Error("Unknown locale : "+a);return f[a]},b.reset=function(){for(var a in g)h[a]=g[a]},b.zeroFormat=function(a){h.zeroFormat="string"==typeof a?a:null},b.nullFormat=function(a){h.nullFormat="string"==typeof a?a:null},b.defaultFormat=function(a){h.defaultFormat="string"==typeof a?a:"0.0"},b.register=function(a,b,c){if(b=b.toLowerCase(),this[a+"s"][b])throw new TypeError(b+" "+a+" already registered.");return this[a+"s"][b]=c,c},b.validate=function(a,c){var d,e,f,g,h,i,j,k;if("string"!=typeof a&&(a+="",console.warn&&console.warn("Numeral.js: Value is not string. It has been co-erced to: ",a)),a=a.trim(),a.match(/^\d+$/))return!0;if(""===a)return!1;try{j=b.localeData(c)}catch(l){j=b.localeData(b.locale())}return f=j.currency.symbol,h=j.abbreviations,d=j.delimiters.decimal,e="."===j.delimiters.thousands?"\\.":j.delimiters.thousands,k=a.match(/^[^\d]+/),null!==k&&(a=a.substr(1),k[0]!==f)?!1:(k=a.match(/[^\d]+$/),null!==k&&(a=a.slice(0,-1),k[0]!==h.thousand&&k[0]!==h.million&&k[0]!==h.billion&&k[0]!==h.trillion)?!1:(i=new RegExp(e+"{2}"),a.match(/[^\d.,]/g)?!1:(g=a.split(d),g.length>2?!1:g.length<2?!!g[0].match(/^\d+.*\d$/)&&!g[0].match(i):1===g[0].length?!!g[0].match(/^\d+$/)&&!g[0].match(i)&&!!g[1].match(/^\d+$/):!!g[0].match(/^\d+.*\d$/)&&!g[0].match(i)&&!!g[1].match(/^\d+$/))))},b.fn=a.prototype={clone:function(){return b(this)},format:function(a,c){var d,f,g,i=this._value,j=a||h.defaultFormat;if(c=c||Math.round,0===i&&null!==h.zeroFormat)f=h.zeroFormat;else if(null===i&&null!==h.nullFormat)f=h.nullFormat;else{for(d in e)if(j.match(e[d].regexps.format)){g=e[d].format;break}g=g||b._.numberToFormat,f=g(i,j,c)}return f},value:function(){return this._value},input:function(){return this._input},set:function(a){return this._value=Number(a),this},add:function(a){function b(a,b,c,e){return a+Math.round(d*b)}var d=c.correctionFactor.call(null,this._value,a);return this._value=c.reduce([this._value,a],b,0)/d,this},subtract:function(a){function b(a,b,c,e){return a-Math.round(d*b)}var d=c.correctionFactor.call(null,this._value,a);return this._value=c.reduce([a],b,Math.round(this._value*d))/d,this},multiply:function(a){function b(a,b,d,e){var f=c.correctionFactor(a,b);return Math.round(a*f)*Math.round(b*f)/Math.round(f*f)}return this._value=c.reduce([this._value,a],b,1),this},divide:function(a){function b(a,b,d,e){var f=c.correctionFactor(a,b);return Math.round(a*f)/Math.round(b*f)}return this._value=c.reduce([this._value,a],b),this},difference:function(a){return Math.abs(b(this._value).subtract(a).value())}},b.register("locale","en",{delimiters:{thousands:",",decimal:"."},abbreviations:{thousand:"k",million:"m",billion:"b",trillion:"t"},ordinal:function(a){var b=a%10;return 1===~~(a%100/10)?"th":1===b?"st":2===b?"nd":3===b?"rd":"th"},currency:{symbol:"$"}}),function(){b.register("format","bps",{regexps:{format:/(BPS)/,unformat:/(BPS)/},format:function(a,c,d){var e,f=b._.includes(c," BPS")?" ":"";return a=1e4*a,c=c.replace(/\s?BPS/,""),e=b._.numberToFormat(a,c,d),b._.includes(e,")")?(e=e.split(""),e.splice(-1,0,f+"BPS"),e=e.join("")):e=e+f+"BPS",e},unformat:function(a){return+(1e-4*b._.stringToNumber(a)).toFixed(15)}})}(),function(){var a={base:1e3,suffixes:["B","KB","MB","GB","TB","PB","EB","ZB","YB"]},c={base:1024,suffixes:["B","KiB","MiB","GiB","TiB","PiB","EiB","ZiB","YiB"]},d=a.suffixes.concat(c.suffixes.filter(function(b){return a.suffixes.indexOf(b)<0})),e=d.join("|");e="("+e.replace("B","B(?!PS)")+")",b.register("format","bytes",{regexps:{format:/([0\s]i?b)/,unformat:new RegExp(e)},format:function(d,e,f){var g,h,i,j,k=b._.includes(e,"ib")?c:a,l=b._.includes(e," b")||b._.includes(e," ib")?" ":"";for(e=e.replace(/\s?i?b/,""),h=0;h<=k.suffixes.length;h++)if(i=Math.pow(k.base,h),j=Math.pow(k.base,h+1),null===d||0===d||d>=i&&j>d){l+=k.suffixes[h],i>0&&(d/=i);break}return g=b._.numberToFormat(d,e,f),g+l},unformat:function(d){var e,f,g=b._.stringToNumber(d);if(g){for(e=a.suffixes.length-1;e>=0;e--){if(b._.includes(d,a.suffixes[e])){f=Math.pow(a.base,e);break}if(b._.includes(d,c.suffixes[e])){f=Math.pow(c.base,e);break}}g*=f||1}return g}})}(),function(){b.register("format","currency",{regexps:{format:/(\$)/},format:function(a,c,d){var e,f,g,h=b.locales[b.options.currentLocale],i={before:c.match(/^([\+|\-|\(|\s|\$]*)/)[0],after:c.match(/([\+|\-|\)|\s|\$]*)$/)[0]};for(c=c.replace(/\s?\$\s?/,""),e=b._.numberToFormat(a,c,d),a>=0?(i.before=i.before.replace(/[\-\(]/,""),i.after=i.after.replace(/[\-\)]/,"")):0>a&&!b._.includes(i.before,"-")&&!b._.includes(i.before,"(")&&(i.before="-"+i.before),g=0;g 0;x--)h="0"+h;return k>-1&&(h=h.toString().replace(/(\d)(?=(\d{3})+(?!\d))/g,"$1"+m.delimiters.thousands)),0===c.indexOf(".")&&(h=""),l=h+v+(q?q:""),n?l=(n&&w?"(":"")+l+(n&&w?")":""):j>=0?l=0===j?(w?"-":"+")+l:l+(w?"-":"+"):w&&(l="-"+l),l},stringToNumber:function(a){var b,c,d,e=f[h.currentLocale],g=a,i={thousand:3,million:6,billion:9,trillion:12};if(h.zeroFormat&&a===h.zeroFormat)c=0;else if(h.nullFormat&&a===h.nullFormat||!a.replace(/[^0-9]+/g,"").length)c=null;else{c=1,"."!==e.delimiters.decimal&&(a=a.replace(/\./g,"").replace(e.delimiters.decimal,"."));for(b in i)if(d=new RegExp("[^a-zA-Z]"+e.abbreviations[b]+"(?:\\)|(\\"+e.currency.symbol+")?(?:\\))?)?$"),g.match(d)){c*=Math.pow(10,i[b]);break}c*=(a.split("-").length+Math.min(a.split("(").length-1,a.split(")").length-1))%2?1:-1,a=a.replace(/[^0-9\.]+/g,""),c*=Number(a)}return c},isNaN:function(a){return"number"==typeof a&&isNaN(a)},includes:function(a,b){return-1!==a.indexOf(b)},insert:function(a,b,c){return a.slice(0,c)+b+a.slice(c)},reduce:function(a,b){if(null===this)throw new TypeError("Array.prototype.reduce called on null or undefined");if("function"!=typeof b)throw new TypeError(b+" is not a function");var c,d=Object(a),e=d.length>>>0,f=0;if(3===arguments.length)c=arguments[2];else{for(;e>f&&!(f in d);)f++;if(f>=e)throw new TypeError("Reduce of empty array with no initial value");c=d[f++]}for(;e>f;f++)f in d&&(c=b(c,d[f],f,d));return c},multiplier:function(a){var b=a.toString().split(".");return b.length<2?1:Math.pow(10,b[1].length)},correctionFactor:function(){var a=Array.prototype.slice.call(arguments);return a.reduce(function(a,b){var d=c.multiplier(b);return a>d?a:d},1)},toFixed:function(a,b,c,d){var e,f,g,h,i=a.toString().split("."),j=b-(d||0);return e=2===i.length?Math.min(Math.max(i[1].length,j),b):j,g=Math.pow(10,e),h=(c(a+"e+"+e)/g).toFixed(e),d>b-e&&(f=new RegExp("\\.?0{1,"+(d-(b-e))+"}$"),h=h.replace(f,"")),h}},b.options=h,b.formats=e,b.locales=f,b.locale=function(a){return a&&(h.currentLocale=a.toLowerCase()),h.currentLocale},b.localeData=function(a){if(!a)return f[h.currentLocale];if(a=a.toLowerCase(),!f[a])throw new Error("Unknown locale : "+a);return f[a]},b.reset=function(){for(var a in g)h[a]=g[a]},b.zeroFormat=function(a){h.zeroFormat="string"==typeof a?a:null},b.nullFormat=function(a){h.nullFormat="string"==typeof a?a:null},b.defaultFormat=function(a){h.defaultFormat="string"==typeof a?a:"0.0"},b.register=function(a,b,c){if(b=b.toLowerCase(),this[a+"s"][b])throw new TypeError(b+" "+a+" already registered.");return this[a+"s"][b]=c,c},b.validate=function(a,c){var d,e,f,g,h,i,j,k;if("string"!=typeof a&&(a+="",console.warn&&console.warn("Numeral.js: Value is not string. It has been co-erced to: ",a)),a=a.trim(),a.match(/^\d+$/))return!0;if(""===a)return!1;try{j=b.localeData(c)}catch(l){j=b.localeData(b.locale())}return f=j.currency.symbol,h=j.abbreviations,d=j.delimiters.decimal,e="."===j.delimiters.thousands?"\\.":j.delimiters.thousands,k=a.match(/^[^\d]+/),null!==k&&(a=a.substr(1),k[0]!==f)?!1:(k=a.match(/[^\d]+$/),null!==k&&(a=a.slice(0,-1),k[0]!==h.thousand&&k[0]!==h.million&&k[0]!==h.billion&&k[0]!==h.trillion)?!1:(i=new RegExp(e+"{2}"),a.match(/[^\d.,]/g)?!1:(g=a.split(d),g.length>2?!1:g.length<2?!!g[0].match(/^\d+.*\d$/)&&!g[0].match(i):1===g[0].length?!!g[0].match(/^\d+$/)&&!g[0].match(i)&&!!g[1].match(/^\d+$/):!!g[0].match(/^\d+.*\d$/)&&!g[0].match(i)&&!!g[1].match(/^\d+$/))))},b.fn=a.prototype={clone:function(){return b(this)},format:function(a,c){var d,f,g,i=this._value,j=a||h.defaultFormat;if(c=c||Math.round,0===i&&null!==h.zeroFormat)f=h.zeroFormat;else if(null===i&&null!==h.nullFormat)f=h.nullFormat;else{for(d in e)if(j.match(e[d].regexps.format)){g=e[d].format;break}g=g||b._.numberToFormat,f=g(i,j,c)}return f},value:function(){return this._value},input:function(){return this._input},set:function(a){return this._value=Number(a),this},add:function(a){function b(a,b,c,e){return a+Math.round(d*b)}var d=c.correctionFactor.call(null,this._value,a);return this._value=c.reduce([this._value,a],b,0)/d,this},subtract:function(a){function b(a,b,c,e){return a-Math.round(d*b)}var d=c.correctionFactor.call(null,this._value,a);return this._value=c.reduce([a],b,Math.round(this._value*d))/d,this},multiply:function(a){function b(a,b,d,e){var f=c.correctionFactor(a,b);return Math.round(a*f)*Math.round(b*f)/Math.round(f*f)}return this._value=c.reduce([this._value,a],b,1),this},divide:function(a){function b(a,b,d,e){var f=c.correctionFactor(a,b);return Math.round(a*f)/Math.round(b*f)}return this._value=c.reduce([this._value,a],b),this},difference:function(a){return Math.abs(b(this._value).subtract(a).value())}},b.register("locale","en",{delimiters:{thousands:",",decimal:"."},abbreviations:{thousand:"k",million:"m",billion:"b",trillion:"t"},ordinal:function(a){var b=a%10;return 1===~~(a%100/10)?"th":1===b?"st":2===b?"nd":3===b?"rd":"th"},currency:{symbol:"$"}}),function(){b.register("format","bps",{regexps:{format:/(BPS)/,unformat:/(BPS)/},format:function(a,c,d){var e,f=b._.includes(c," BPS")?" ":"";return a=1e4*a,c=c.replace(/\s?BPS/,""),e=b._.numberToFormat(a,c,d),b._.includes(e,")")?(e=e.split(""),e.splice(-1,0,f+"BPS"),e=e.join("")):e=e+f+"BPS",e},unformat:function(a){return+(1e-4*b._.stringToNumber(a)).toFixed(15)}})}(),function(){var a={base:1e3,suffixes:["B","KB","MB","GB","TB","PB","EB","ZB","YB"]},c={base:1024,suffixes:["B","KiB","MiB","GiB","TiB","PiB","EiB","ZiB","YiB"]},d=a.suffixes.concat(c.suffixes.filter(function(b){return a.suffixes.indexOf(b)<0})),e=d.join("|");e="("+e.replace("B","B(?!PS)")+")",b.register("format","bytes",{regexps:{format:/([0\s]i?b)/,unformat:new RegExp(e)},format:function(d,e,f){var g,h,i,j,k=b._.includes(e,"ib")?c:a,l=b._.includes(e," b")||b._.includes(e," ib")?" ":"";for(e=e.replace(/\s?i?b/,""),h=0;h<=k.suffixes.length;h++)if(i=Math.pow(k.base,h),j=Math.pow(k.base,h+1),null===d||0===d||d>=i&&j>d){l+=k.suffixes[h],i>0&&(d/=i);break}return g=b._.numberToFormat(d,e,f),g+l},unformat:function(d){var e,f,g=b._.stringToNumber(d);if(g){for(e=a.suffixes.length-1;e>=0;e--){if(b._.includes(d,a.suffixes[e])){f=Math.pow(a.base,e);break}if(b._.includes(d,c.suffixes[e])){f=Math.pow(c.base,e);break}}g*=f||1}return g}})}(),function(){b.register("format","currency",{regexps:{format:/(\$)/},format:function(a,c,d){var e,f,g,h=b.locales[b.options.currentLocale],i={before:c.match(/^([\+|\-|\(|\s|\$]*)/)[0],after:c.match(/([\+|\-|\)|\s|\$]*)$/)[0]};for(c=c.replace(/\s?\$\s?/,""),e=b._.numberToFormat(a,c,d),a>=0?(i.before=i.before.replace(/[\-\(]/,""),i.after=i.after.replace(/[\-\)]/,"")):0>a&&!b._.includes(i.before,"-")&&!b._.includes(i.before,"(")&&(i.before="-"+i.before),g=0;g Level: RAM: Cores: Node name: Production: " + mat.name + ": " + Object(_utils_StringHelperFunctions_js__WEBPACK_IMPORTED_MODULE_11__["formatNumber"])(mat.qty, 3) +
"(" + Object(_utils_StringHelperFunctions_js__WEBPACK_IMPORTED_MODULE_11__["formatNumber"])(totalGain, 3) + "/s)" +
@@ -55811,11 +56535,12 @@ Warehouse.prototype.createProductUI = function(product, parentRefs) {
//Completed products
var cmpAndDmdText = "";
if (company.unlockUpgrades[2] === 1) {
- cmpAndDmdText += " " + product.name + ": " + Object(_utils_StringHelperFunctions_js__WEBPACK_IMPORTED_MODULE_11__["formatNumber"])(product.data[city][0], 3) + //Quantity
@@ -55830,9 +56555,9 @@ Warehouse.prototype.createProductUI = function(product, parentRefs) {
"Aesthetics: " + Object(_utils_StringHelperFunctions_js__WEBPACK_IMPORTED_MODULE_11__["formatNumber"])(product.aes, 3) + " Est. Production Cost: " + _utils_numeral_min_js__WEBPACK_IMPORTED_MODULE_10___default()(product.pCost / ProductProductionCostRatio).format("$0.000a") +
+ " Est. Production Cost: " + numeral_min_numeral_min__WEBPACK_IMPORTED_MODULE_10___default()(product.pCost / ProductProductionCostRatio).format("$0.000a") +
"An estimate of the material cost it takes to create this Product. Est. Market Price: " + _utils_numeral_min_js__WEBPACK_IMPORTED_MODULE_10___default()(product.pCost + product.rat / product.mku).format("$0.000a") +
+ " Est. Market Price: " + numeral_min_numeral_min__WEBPACK_IMPORTED_MODULE_10___default()(product.pCost + product.rat / product.mku).format("$0.000a") +
"An estimate of how much consumers are willing to pay for this product. " +
"Setting the sale price above this may result in less sales. Setting the sale price below this may result " +
"in more sales. 0;x--)h="0"+h;return k>-1&&(h=h.toString().replace(/(\d)(?=(\d{3})+(?!\d))/g,"$1"+m.delimiters.thousands)),0===c.indexOf(".")&&(h=""),l=h+v+(q?q:""),n?l=(n&&w?"(":"")+l+(n&&w?")":""):j>=0?l=0===j?(w?"-":"+")+l:l+(w?"-":"+"):w&&(l="-"+l),l},stringToNumber:function(a){var b,c,d,e=f[h.currentLocale],g=a,i={thousand:3,million:6,billion:9,trillion:12};if(h.zeroFormat&&a===h.zeroFormat)c=0;else if(h.nullFormat&&a===h.nullFormat||!a.replace(/[^0-9]+/g,"").length)c=null;else{c=1,"."!==e.delimiters.decimal&&(a=a.replace(/\./g,"").replace(e.delimiters.decimal,"."));for(b in i)if(d=new RegExp("[^a-zA-Z]"+e.abbreviations[b]+"(?:\\)|(\\"+e.currency.symbol+")?(?:\\))?)?$"),g.match(d)){c*=Math.pow(10,i[b]);break}c*=(a.split("-").length+Math.min(a.split("(").length-1,a.split(")").length-1))%2?1:-1,a=a.replace(/[^0-9\.]+/g,""),c*=Number(a)}return c},isNaN:function(a){return"number"==typeof a&&isNaN(a)},includes:function(a,b){return-1!==a.indexOf(b)},insert:function(a,b,c){return a.slice(0,c)+b+a.slice(c)},reduce:function(a,b){if(null===this)throw new TypeError("Array.prototype.reduce called on null or undefined");if("function"!=typeof b)throw new TypeError(b+" is not a function");var c,d=Object(a),e=d.length>>>0,f=0;if(3===arguments.length)c=arguments[2];else{for(;e>f&&!(f in d);)f++;if(f>=e)throw new TypeError("Reduce of empty array with no initial value");c=d[f++]}for(;e>f;f++)f in d&&(c=b(c,d[f],f,d));return c},multiplier:function(a){var b=a.toString().split(".");return b.length<2?1:Math.pow(10,b[1].length)},correctionFactor:function(){var a=Array.prototype.slice.call(arguments);return a.reduce(function(a,b){var d=c.multiplier(b);return a>d?a:d},1)},toFixed:function(a,b,c,d){var e,f,g,h,i=a.toString().split("."),j=b-(d||0);return e=2===i.length?Math.min(Math.max(i[1].length,j),b):j,g=Math.pow(10,e),h=(c(a+"e+"+e)/g).toFixed(e),d>b-e&&(f=new RegExp("\\.?0{1,"+(d-(b-e))+"}$"),h=h.replace(f,"")),h}},b.options=h,b.formats=e,b.locales=f,b.locale=function(a){return a&&(h.currentLocale=a.toLowerCase()),h.currentLocale},b.localeData=function(a){if(!a)return f[h.currentLocale];if(a=a.toLowerCase(),!f[a])throw new Error("Unknown locale : "+a);return f[a]},b.reset=function(){for(var a in g)h[a]=g[a]},b.zeroFormat=function(a){h.zeroFormat="string"==typeof a?a:null},b.nullFormat=function(a){h.nullFormat="string"==typeof a?a:null},b.defaultFormat=function(a){h.defaultFormat="string"==typeof a?a:"0.0"},b.register=function(a,b,c){if(b=b.toLowerCase(),this[a+"s"][b])throw new TypeError(b+" "+a+" already registered.");return this[a+"s"][b]=c,c},b.validate=function(a,c){var d,e,f,g,h,i,j,k;if("string"!=typeof a&&(a+="",console.warn&&console.warn("Numeral.js: Value is not string. It has been co-erced to: ",a)),a=a.trim(),a.match(/^\d+$/))return!0;if(""===a)return!1;try{j=b.localeData(c)}catch(l){j=b.localeData(b.locale())}return f=j.currency.symbol,h=j.abbreviations,d=j.delimiters.decimal,e="."===j.delimiters.thousands?"\\.":j.delimiters.thousands,k=a.match(/^[^\d]+/),null!==k&&(a=a.substr(1),k[0]!==f)?!1:(k=a.match(/[^\d]+$/),null!==k&&(a=a.slice(0,-1),k[0]!==h.thousand&&k[0]!==h.million&&k[0]!==h.billion&&k[0]!==h.trillion)?!1:(i=new RegExp(e+"{2}"),a.match(/[^\d.,]/g)?!1:(g=a.split(d),g.length>2?!1:g.length<2?!!g[0].match(/^\d+.*\d$/)&&!g[0].match(i):1===g[0].length?!!g[0].match(/^\d+$/)&&!g[0].match(i)&&!!g[1].match(/^\d+$/):!!g[0].match(/^\d+.*\d$/)&&!g[0].match(i)&&!!g[1].match(/^\d+$/))))},b.fn=a.prototype={clone:function(){return b(this)},format:function(a,c){var d,f,g,i=this._value,j=a||h.defaultFormat;if(c=c||Math.round,0===i&&null!==h.zeroFormat)f=h.zeroFormat;else if(null===i&&null!==h.nullFormat)f=h.nullFormat;else{for(d in e)if(j.match(e[d].regexps.format)){g=e[d].format;break}g=g||b._.numberToFormat,f=g(i,j,c)}return f},value:function(){return this._value},input:function(){return this._input},set:function(a){return this._value=Number(a),this},add:function(a){function b(a,b,c,e){return a+Math.round(d*b)}var d=c.correctionFactor.call(null,this._value,a);return this._value=c.reduce([this._value,a],b,0)/d,this},subtract:function(a){function b(a,b,c,e){return a-Math.round(d*b)}var d=c.correctionFactor.call(null,this._value,a);return this._value=c.reduce([a],b,Math.round(this._value*d))/d,this},multiply:function(a){function b(a,b,d,e){var f=c.correctionFactor(a,b);return Math.round(a*f)*Math.round(b*f)/Math.round(f*f)}return this._value=c.reduce([this._value,a],b,1),this},divide:function(a){function b(a,b,d,e){var f=c.correctionFactor(a,b);return Math.round(a*f)/Math.round(b*f)}return this._value=c.reduce([this._value,a],b),this},difference:function(a){return Math.abs(b(this._value).subtract(a).value())}},b.register("locale","en",{delimiters:{thousands:",",decimal:"."},abbreviations:{thousand:"k",million:"m",billion:"b",trillion:"t"},ordinal:function(a){var b=a%10;return 1===~~(a%100/10)?"th":1===b?"st":2===b?"nd":3===b?"rd":"th"},currency:{symbol:"$"}}),function(){b.register("format","bps",{regexps:{format:/(BPS)/,unformat:/(BPS)/},format:function(a,c,d){var e,f=b._.includes(c," BPS")?" ":"";return a=1e4*a,c=c.replace(/\s?BPS/,""),e=b._.numberToFormat(a,c,d),b._.includes(e,")")?(e=e.split(""),e.splice(-1,0,f+"BPS"),e=e.join("")):e=e+f+"BPS",e},unformat:function(a){return+(1e-4*b._.stringToNumber(a)).toFixed(15)}})}(),function(){var a={base:1e3,suffixes:["B","KB","MB","GB","TB","PB","EB","ZB","YB"]},c={base:1024,suffixes:["B","KiB","MiB","GiB","TiB","PiB","EiB","ZiB","YiB"]},d=a.suffixes.concat(c.suffixes.filter(function(b){return a.suffixes.indexOf(b)<0})),e=d.join("|");e="("+e.replace("B","B(?!PS)")+")",b.register("format","bytes",{regexps:{format:/([0\s]i?b)/,unformat:new RegExp(e)},format:function(d,e,f){var g,h,i,j,k=b._.includes(e,"ib")?c:a,l=b._.includes(e," b")||b._.includes(e," ib")?" ":"";for(e=e.replace(/\s?i?b/,""),h=0;h<=k.suffixes.length;h++)if(i=Math.pow(k.base,h),j=Math.pow(k.base,h+1),null===d||0===d||d>=i&&j>d){l+=k.suffixes[h],i>0&&(d/=i);break}return g=b._.numberToFormat(d,e,f),g+l},unformat:function(d){var e,f,g=b._.stringToNumber(d);if(g){for(e=a.suffixes.length-1;e>=0;e--){if(b._.includes(d,a.suffixes[e])){f=Math.pow(a.base,e);break}if(b._.includes(d,c.suffixes[e])){f=Math.pow(c.base,e);break}}g*=f||1}return g}})}(),function(){b.register("format","currency",{regexps:{format:/(\$)/},format:function(a,c,d){var e,f,g,h=b.locales[b.options.currentLocale],i={before:c.match(/^([\+|\-|\(|\s|\$]*)/)[0],after:c.match(/([\+|\-|\)|\s|\$]*)$/)[0]};for(c=c.replace(/\s?\$\s?/,""),e=b._.numberToFormat(a,c,d),a>=0?(i.before=i.before.replace(/[\-\(]/,""),i.after=i.after.replace(/[\-\)]/,"")):0>a&&!b._.includes(i.before,"-")&&!b._.includes(i.before,"(")&&(i.before="-"+i.before),g=0;g Script name:
" +
"Server growth rate is reduced by 80%
" +
"You will start out with $150b so that you can start your corporation
" +
- "You now only need 75 reputation with a faction in order to donate to it, rather than 150
" +
+ "You now only need 75 favour with a faction in order to donate to it, rather than 150
" +
"Destroying this BitNode will give you Source-File 3, or if you already have this Source-File it will " +
"upgrade its level up to a maximum of 3. This Source-File lets you create corporations on other BitNodes (although " +
"some BitNodes will disable this mechanic). This Source-File also increases your charisma and company salary multipliers by:
" +
@@ -12462,10 +12428,13 @@ function initBitNodes() {
"Level 1: 24%
" +
"Level 2: 36%
" +
"Level 3: 42%");
-
+ BitNodes["BitNode12"] = new BitNode(12, "The Recursion", "Repeat.",
+ "To iterate is human, to recurse divine.
" +
+ "Every time this BitNode is destroyed, it becomes slightly harder. Destroying this BitNode will give your Souce-File 12, or " +
+ "if you already have this Source-File it will upgrade its level. There is no maximum level for Source-File 12. Each level " +
+ "of Source-File 12 will increase all of your multipliers by 1%.");
//Books: Frontera, Shiner
- BitNodes["BitNode12"] = new BitNode(12, "fOS", "COMING SOON"); //Unlocks the new game mode and the rest of the BitNodes
- BitNodes["BitNode13"] = new BitNode(13, "", "COMING SOON");
+ BitNodes["BitNode13"] = new BitNode(13, "fOS", "COMING SOON"); //Unlocks the new game mode and the rest of the BitNodes
BitNodes["BitNode14"] = new BitNode(14, "", "COMING SOON");
BitNodes["BitNode15"] = new BitNode(15, "", "COMING SOON");
BitNodes["BitNode16"] = new BitNode(16, "", "COMING SOON");
@@ -12538,10 +12507,10 @@ function initBitNodeMultipliers() {
BitNodeMultipliers.RepToDonateToFaction = 0.5;
BitNodeMultipliers.AugmentationRepCost = 3;
BitNodeMultipliers.AugmentationMoneyCost = 3;
- BitNodeMultipliers.ServerMaxMoney = 0.25;
- BitNodeMultipliers.ServerStartingMoney = 0.25;
- BitNodeMultipliers.ServerGrowthRate = 0.20;
- BitNodeMultipliers.ScriptHackMoney = 0.25;
+ BitNodeMultipliers.ServerMaxMoney = 0.2;
+ BitNodeMultipliers.ServerStartingMoney = 0.2;
+ BitNodeMultipliers.ServerGrowthRate = 0.2;
+ BitNodeMultipliers.ScriptHackMoney = 0.2;
BitNodeMultipliers.CompanyWorkMoney = 0.25;
BitNodeMultipliers.CrimeMoney = 0.25;
BitNodeMultipliers.HacknetNodeMoney = 0.25;
@@ -12610,6 +12579,48 @@ function initBitNodeMultipliers() {
BitNodeMultipliers.InfiltrationRep = 2.5;
BitNodeMultipliers.CorporationValuation = 0.01;
break;
+ case 12: //The Recursion
+ let sf12Lvl = 0;
+ for (let i = 0; i < _Player_js__WEBPACK_IMPORTED_MODULE_0__["Player"].sourceFiles.length; i++) {
+ if (_Player_js__WEBPACK_IMPORTED_MODULE_0__["Player"].sourceFiles[i].n === 12) {
+ sf12Lvl = _Player_js__WEBPACK_IMPORTED_MODULE_0__["Player"].sourceFiles[i].lvl;
+ }
+ }
+ const inc = Math.pow(1.01, sf12Lvl);
+ const dec = Math.pow(0.99, sf12Lvl);
+ BitNodeMultipliers.HackingLevelMultiplier = dec;
+
+ BitNodeMultipliers.ServerMaxMoney = dec;
+ BitNodeMultipliers.ServerStartingMoney = dec;
+ BitNodeMultipliers.ServerGrowthRate = dec;
+ BitNodeMultipliers.ServerWeakenRate = dec;
+
+ //Does not scale, otherwise security might start at 300+
+ BitNodeMultipliers.ServerStartingSecurity = 1.5;
+
+ BitNodeMultipliers.ManualHackMoney = dec;
+ BitNodeMultipliers.ScriptHackMoney = dec;
+ BitNodeMultipliers.CompanyWorkMoney = dec;
+ BitNodeMultipliers.CrimeMoney = dec;
+ BitNodeMultipliers.HacknetNodeMoney = dec;
+
+ BitNodeMultipliers.CompanyWorkExpGain = dec;
+ BitNodeMultipliers.ClassGymExpGain = dec;
+ BitNodeMultipliers.FactionWorkExpGain = dec;
+ BitNodeMultipliers.HackExpGain = dec;
+ BitNodeMultipliers.CrimeExpGain = dec;
+
+ BitNodeMultipliers.FactionWorkRepGain = dec;
+ BitNodeMultipliers.FactionPassiveRepGain = dec;
+ BitNodeMultipliers.RepToDonateToFaction = inc;
+
+ BitNodeMultipliers.AugmentationRepCost = inc;
+ BitNodeMultipliers.AugmentationMoneyCost = inc;
+
+ BitNodeMultipliers.InfiltrationMoney = dec;
+ BitNodeMultipliers.InfiltrationRep = dec;
+
+ BitNodeMultipliers.CorporationValuation = dec;
default:
console.log("WARNING: Player.bitNodeN invalid");
break;
@@ -12621,9 +12632,6 @@ function initBitNodeMultipliers() {
/***/ }),
/* 16 */
-/*!****************************!*\
- !*** ./utils/IPAddress.js ***!
- \****************************/
/***/ (function(module, __webpack_exports__, __webpack_require__) {
"use strict";
@@ -12631,7 +12639,7 @@ __webpack_require__.r(__webpack_exports__);
/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "createRandomIp", function() { return createRandomIp; });
/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "ipExists", function() { return ipExists; });
/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "isValidIPAddress", function() { return isValidIPAddress; });
-/* harmony import */ var _src_Server_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../src/Server.js */ 10);
+/* harmony import */ var _src_Server_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(8);
/* Functions to deal with manipulating IP addresses*/
@@ -12679,9 +12687,2658 @@ function isValidIPAddress(ipaddress) {
/***/ }),
/* 17 */
-/*!*********************************!*\
- !*** ./src/SpecialServerIps.js ***!
- \*********************************/
+/***/ (function(module, __webpack_exports__, __webpack_require__) {
+
+"use strict";
+__webpack_require__.r(__webpack_exports__);
+/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "AugmentationNames", function() { return AugmentationNames; });
+/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "Augmentations", function() { return Augmentations; });
+/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "PlayerOwnedAugmentation", function() { return PlayerOwnedAugmentation; });
+/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "installAugmentations", function() { return installAugmentations; });
+/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "initAugmentations", function() { return initAugmentations; });
+/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "applyAugmentation", function() { return applyAugmentation; });
+/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "augmentationExists", function() { return augmentationExists; });
+/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "Augmentation", function() { return Augmentation; });
+/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "displayAugmentationsContent", function() { return displayAugmentationsContent; });
+/* harmony import */ var _BitNode_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(15);
+/* harmony import */ var _Constants_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(3);
+/* harmony import */ var _engine_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(5);
+/* harmony import */ var _Faction_js__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(11);
+/* harmony import */ var _NetscriptFunctions_js__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(30);
+/* harmony import */ var _NetscriptWorker_js__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(20);
+/* harmony import */ var _Player_js__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(0);
+/* harmony import */ var _Prestige_js__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(56);
+/* harmony import */ var _SaveObject_js__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(46);
+/* harmony import */ var _Script_js__WEBPACK_IMPORTED_MODULE_9__ = __webpack_require__(25);
+/* harmony import */ var _Server_js__WEBPACK_IMPORTED_MODULE_10__ = __webpack_require__(8);
+/* harmony import */ var _SourceFile_js__WEBPACK_IMPORTED_MODULE_11__ = __webpack_require__(41);
+/* harmony import */ var _utils_DialogBox_js__WEBPACK_IMPORTED_MODULE_12__ = __webpack_require__(7);
+/* harmony import */ var _utils_HelperFunctions_js__WEBPACK_IMPORTED_MODULE_13__ = __webpack_require__(1);
+/* harmony import */ var _utils_JSONReviver_js__WEBPACK_IMPORTED_MODULE_14__ = __webpack_require__(9);
+/* harmony import */ var _utils_StringHelperFunctions_js__WEBPACK_IMPORTED_MODULE_15__ = __webpack_require__(2);
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+//Augmentations
+function Augmentation(params) {
+ if (params.name == null || params.info == null || params.moneyCost == null || params.repCost == null) {
+ Object(_utils_DialogBox_js__WEBPACK_IMPORTED_MODULE_12__["dialogBoxCreate"])("ERROR Creating Augmentations. This is a bug please contact game dev");
+ return;
+ }
+ this.name = params.name;
+ this.info = params.info;
+ this.owned = false;
+ this.prereqs = params.prereqs ? params.prereqs : [];
+
+ //Price and reputation base requirements (can change based on faction multipliers)
+ this.baseRepRequirement = params.repCost * _Constants_js__WEBPACK_IMPORTED_MODULE_1__["CONSTANTS"].AugmentationRepMultiplier * _BitNode_js__WEBPACK_IMPORTED_MODULE_0__["BitNodeMultipliers"].AugmentationRepCost;
+ this.baseCost = params.moneyCost * _Constants_js__WEBPACK_IMPORTED_MODULE_1__["CONSTANTS"].AugmentationCostMultiplier * _BitNode_js__WEBPACK_IMPORTED_MODULE_0__["BitNodeMultipliers"].AugmentationMoneyCost;
+
+ //Level - Only applicable for some augmentations
+ // NeuroFlux Governor
+ this.level = 0;
+}
+
+//Takes in an array of faction names and adds this augmentation to all of those factions
+Augmentation.prototype.addToFactions = function(factionList) {
+ for (var i = 0; i < factionList.length; ++i) {
+ var faction = _Faction_js__WEBPACK_IMPORTED_MODULE_3__["Factions"][factionList[i]];
+ if (faction == null) {
+ throw new Error("In Augmentation.addToFactions(), could not find faction with this name:" + factionList[i]);
+ continue;
+ }
+ faction.augmentations.push(this.name);
+ }
+}
+
+Augmentation.prototype.addToAllFactions = function() {
+ for (var fac in _Faction_js__WEBPACK_IMPORTED_MODULE_3__["Factions"]) {
+ if (_Faction_js__WEBPACK_IMPORTED_MODULE_3__["Factions"].hasOwnProperty(fac)) {
+ var facObj = _Faction_js__WEBPACK_IMPORTED_MODULE_3__["Factions"][fac];
+ if (facObj == null) {
+ console.log("ERROR: Invalid faction object");
+ continue;
+ }
+ facObj.augmentations.push(this.name);
+ }
+ }
+}
+
+Augmentation.prototype.toJSON = function() {
+ return Object(_utils_JSONReviver_js__WEBPACK_IMPORTED_MODULE_14__["Generic_toJSON"])("Augmentation", this);
+}
+
+Augmentation.fromJSON = function(value) {
+ return Object(_utils_JSONReviver_js__WEBPACK_IMPORTED_MODULE_14__["Generic_fromJSON"])(Augmentation, value.data);
+}
+
+_utils_JSONReviver_js__WEBPACK_IMPORTED_MODULE_14__["Reviver"].constructors.Augmentation = Augmentation;
+
+let Augmentations = {}
+
+function AddToAugmentations(aug) {
+ var name = aug.name;
+ Augmentations[name] = aug;
+}
+
+let AugmentationNames = {
+ Targeting1: "Augmented Targeting I",
+ Targeting2: "Augmented Targeting II",
+ Targeting3: "Augmented Targeting III",
+ SyntheticHeart: "Synthetic Heart",
+ SynfibrilMuscle: "Synfibril Muscle",
+ CombatRib1: "Combat Rib I",
+ CombatRib2: "Combat Rib II",
+ CombatRib3: "Combat Rib III",
+ NanofiberWeave: "Nanofiber Weave",
+ SubdermalArmor: "NEMEAN Subdermal Weave",
+ WiredReflexes: "Wired Reflexes",
+ GrapheneBoneLacings: "Graphene Bone Lacings",
+ BionicSpine: "Bionic Spine",
+ GrapheneBionicSpine: "Graphene Bionic Spine Upgrade",
+ BionicLegs: "Bionic Legs",
+ GrapheneBionicLegs: "Graphene Bionic Legs Upgrade",
+ SpeechProcessor: "Speech Processor Implant",
+ TITN41Injection: "TITN-41 Gene-Modification Injection",
+ EnhancedSocialInteractionImplant: "Enhanced Social Interaction Implant",
+ BitWire: "BitWire",
+ ArtificialBioNeuralNetwork: "Artificial Bio-neural Network Implant",
+ ArtificialSynapticPotentiation: "Artificial Synaptic Potentiation",
+ EnhancedMyelinSheathing: "Enhanced Myelin Sheathing",
+ SynapticEnhancement: "Synaptic Enhancement Implant",
+ NeuralRetentionEnhancement: "Neural-Retention Enhancement",
+ DataJack: "DataJack",
+ ENM: "Embedded Netburner Module",
+ ENMCore: "Embedded Netburner Module Core Implant",
+ ENMCoreV2: "Embedded Netburner Module Core V2 Upgrade",
+ ENMCoreV3: "Embedded Netburner Module Core V3 Upgrade",
+ ENMAnalyzeEngine: "Embedded Netburner Module Analyze Engine",
+ ENMDMA: "Embedded Netburner Module Direct Memory Access Upgrade",
+ Neuralstimulator: "Neuralstimulator",
+ NeuralAccelerator: "Neural Accelerator",
+ CranialSignalProcessorsG1: "Cranial Signal Processors - Gen I",
+ CranialSignalProcessorsG2: "Cranial Signal Processors - Gen II",
+ CranialSignalProcessorsG3: "Cranial Signal Processors - Gen III",
+ CranialSignalProcessorsG4: "Cranial Signal Processors - Gen IV",
+ CranialSignalProcessorsG5: "Cranial Signal Processors - Gen V",
+ NeuronalDensification: "Neuronal Densification",
+ NuoptimalInjectorImplant: "Nuoptimal Nootropic Injector Implant",
+ SpeechEnhancement: "Speech Enhancement",
+ FocusWire: "FocusWire",
+ PCDNI: "PC Direct-Neural Interface",
+ PCDNIOptimizer: "PC Direct-Neural Interface Optimization Submodule",
+ PCDNINeuralNetwork: "PC Direct-Neural Interface NeuroNet Injector",
+ ADRPheromone1: "ADR-V1 Pheromone Gene",
+ ADRPheromone2: "ADR-V2 Pheromone Gene",
+ HacknetNodeCPUUpload: "Hacknet Node CPU Architecture Neural-Upload",
+ HacknetNodeCacheUpload: "Hacknet Node Cache Architecture Neural-Upload",
+ HacknetNodeNICUpload: "Hacknet Node NIC Architecture Neural-Upload",
+ HacknetNodeKernelDNI: "Hacknet Node Kernel Direct-Neural Interface",
+ HacknetNodeCoreDNI: "Hacknet Node Core Direct-Neural Interface",
+ NeuroFluxGovernor: "NeuroFlux Governor",
+ Neurotrainer1: "Neurotrainer I",
+ Neurotrainer2: "Neurotrainer II",
+ Neurotrainer3: "Neurotrainer III",
+ Hypersight: "HyperSight Corneal Implant",
+ LuminCloaking1: "LuminCloaking-V1 Skin Implant",
+ LuminCloaking2: "LuminCloaking-V2 Skin Implant",
+ HemoRecirculator: "HemoRecirculator",
+ SmartSonar: "SmartSonar Implant",
+ PowerRecirculator: "Power Recirculation Core",
+ QLink: "QLink",
+ TheRedPill: "The Red Pill",
+ SPTN97: "SPTN-97 Gene Modification",
+ HiveMind: "ECorp HVMind Implant",
+ CordiARCReactor: "CordiARC Fusion Reactor",
+ SmartJaw: "SmartJaw",
+ Neotra: "Neotra",
+ Xanipher: "Xanipher",
+ nextSENS: "nextSENS Gene Modification",
+ OmniTekInfoLoad: "OmniTek InfoLoad",
+ PhotosyntheticCells: "Photosynthetic Cells",
+ Neurolink: "BitRunners Neurolink",
+ TheBlackHand: "The Black Hand",
+ CRTX42AA: "CRTX42-AA Gene Modification",
+ Neuregen: "Neuregen Gene Modification",
+ CashRoot: "CashRoot Starter Kit",
+ NutriGen: "NutriGen Implant",
+ INFRARet: "INFRARET Enhancement",
+ DermaForce: "DermaForce Particle Barrier",
+ GrapheneBrachiBlades: "Graphene BranchiBlades Upgrade",
+ GrapheneBionicArms: "Graphene Bionic Arms Upgrade",
+ BrachiBlades: "BrachiBlades",
+ BionicArms: "Bionic Arms",
+ SNA: "Social Negotiation Assistant (S.N.A)",
+ EsperEyewear: "EsperTech Bladeburner Eyewear",
+ EMS4Recombination: "EMS-4 Recombination",
+ OrionShoulder: "ORION-MKIV Shoulder",
+ HyperionV1: "Hyperion Plasma Cannon V1",
+ HyperionV2: "Hyperion Plasma Cannon V2",
+ GolemSerum: "GOLEM Serum",
+ VangelisVirus: "Vangelis Virus",
+ VangelisVirus3: "Vangelis Virus 3.0",
+ INTERLINKED: "I.N.T.E.R.L.I.N.K.E.D",
+ BladeRunner: "Blade's Runners",
+ BladeArmor: "BLADE-51b Tesla Armor",
+ BladeArmorPowerCells: "BLADE-51b Tesla Armor: Power Cells Upgrade",
+ BladeArmorEnergyShielding: "BLADE-51b Tesla Armor: Energy Shielding Upgrade",
+ BladeArmorUnibeam: "BLADE-51b Tesla Armor: Unibeam Upgrade",
+ BladeArmorOmnibeam: "BLADE-51b Tesla Armor: Omnibeam Upgrade",
+ BladeArmorIPU: "BLADE-51b Tesla Armor: IPU Upgrade",
+ BladesSimulacrum: "The Blade's Simulacrum",
+
+ //Wasteland Augs
+ //PepBoy: "P.E.P-Boy", Plasma Energy Projection System
+ //PepBoyForceField Generates plasma force fields
+ //PepBoyBlasts Generate high density plasma concussive blasts
+ //PepBoyDataStorage STore more data on pep boy,
+}
+
+function initAugmentations() {
+ for (var name in _Faction_js__WEBPACK_IMPORTED_MODULE_3__["Factions"]) {
+ if (_Faction_js__WEBPACK_IMPORTED_MODULE_3__["Factions"].hasOwnProperty(name)) {
+ _Faction_js__WEBPACK_IMPORTED_MODULE_3__["Factions"][name].augmentations = [];
+ }
+ }
+
+ //Reset Augmentations
+ Object(_utils_HelperFunctions_js__WEBPACK_IMPORTED_MODULE_13__["clearObject"])(Augmentations);
+
+ //Combat stat augmentations
+ var HemoRecirculator = new Augmentation({
+ name:AugmentationNames.HemoRecirculator, moneyCost: 9e6, repCost:4e3,
+ info:"A heart implant that greatly increases the body's ability to effectively use and pump " +
+ "blood.
This augmentation increases all of the player's combat stats by 8%."
+ });
+ HemoRecirculator.addToFactions(["Tetrads", "The Dark Army", "The Syndicate"]);
+ if (augmentationExists(AugmentationNames.HemoRecirculator)) {
+ delete Augmentations[AugmentationNames.HemoRecirculator];
+ }
+ AddToAugmentations(HemoRecirculator);
+
+ var Targeting1 = new Augmentation({
+ name:AugmentationNames.Targeting1, moneyCost:3e6, repCost:2e3,
+ info:"This cranial implant is embedded within the player's inner ear structure and optic nerves. It regulates and enhances the user's " +
+ "balance and hand-eye coordination. It is also capable of augmenting reality by projecting digital information " +
+ "directly onto the retina. These enhancements allow the player to better lock-on and keep track of enemies.
" +
+ "This augmentation increases the player's dexterity by 10%."
+ });
+ Targeting1.addToFactions(["Slum Snakes", "The Dark Army", "The Syndicate", "Sector-12", "Volhaven", "Ishima",
+ "OmniTek Incorporated", "KuaiGong International", "Blade Industries"]);
+ if (augmentationExists(AugmentationNames.Targeting1)) {
+ delete Augmentations[AugmentationNames.Targeting1];
+ }
+ AddToAugmentations(Targeting1);
+
+ var Targeting2 = new Augmentation({
+ name:AugmentationNames.Targeting2, moneyCost:8.5e6, repCost:3.5e3,
+ info:"This is an upgrade of the Augmented Targeting I cranial implant, which is capable of augmenting reality " +
+ "and enhances the user's balance and hand-eye coordination.
This upgrade increases the player's dexterity " +
+ "by an additional 20%.",
+ prereqs:[AugmentationNames.Targeting1]
+ });
+ Targeting2.addToFactions(["The Dark Army", "The Syndicate", "Sector-12", "Volhaven", "Ishima",
+ "OmniTek Incorporated", "KuaiGong International", "Blade Industries"]);
+ if (augmentationExists(AugmentationNames.Targeting2)) {
+ delete Augmentations[AugmentationNames.Targeting2];
+ }
+ AddToAugmentations(Targeting2);
+
+ var Targeting3 = new Augmentation({
+ name:AugmentationNames.Targeting3, moneyCost:23e6, repCost:11e3,
+ info:"This is an upgrade of the Augmented Targeting II cranial implant, which is capable of augmenting reality " +
+ "and enhances the user's balance and hand-eye coordination.
This upgrade increases the player's dexterity " +
+ "by an additional 30%.",
+ prereqs:[AugmentationNames.Targeting2]
+ });
+ Targeting3.addToFactions(["The Dark Army", "The Syndicate", "OmniTek Incorporated",
+ "KuaiGong International", "Blade Industries", "The Covenant"]);
+ if (augmentationExists(AugmentationNames.Targeting3)) {
+ delete Augmentations[AugmentationNames.Targeting3];
+ }
+ AddToAugmentations(Targeting3);
+
+ var SyntheticHeart = new Augmentation({
+ name:AugmentationNames.SyntheticHeart, moneyCost:575e6, repCost:300e3,
+ info:"This advanced artificial heart, created from plasteel and graphene, is capable of pumping more blood " +
+ "at much higher efficiencies than a normal human heart.
This augmentation increases the player's agility " +
+ "and strength by 50%"
+ });
+ SyntheticHeart.addToFactions(["KuaiGong International", "Fulcrum Secret Technologies", "Speakers for the Dead",
+ "NWO", "The Covenant", "Daedalus", "Illuminati"]);
+ if (augmentationExists(AugmentationNames.SyntheticHeart)) {
+ delete Augmentations[AugmentationNames.SyntheticHeart];
+ }
+ AddToAugmentations(SyntheticHeart);
+
+ var SynfibrilMuscle = new Augmentation({
+ name:AugmentationNames.SynfibrilMuscle, repCost:175e3, moneyCost:225e6,
+ info:"The myofibrils in human muscles are injected with special chemicals that react with the proteins inside " +
+ "the myofibrils, altering their underlying structure. The end result is muscles that are stronger and more elastic. " +
+ "Scientists have named these artificially enhanced units 'synfibrils'.
This augmentation increases the player's " +
+ "strength and defense by 30%."
+ });
+ SynfibrilMuscle.addToFactions(["KuaiGong International", "Fulcrum Secret Technologies", "Speakers for the Dead",
+ "NWO", "The Covenant", "Daedalus", "Illuminati", "Blade Industries"]);
+ if (augmentationExists(AugmentationNames.SynfibrilMuscle)) {
+ delete Augmentations[AugmentationNames.SynfibrilMuscle];
+ }
+ AddToAugmentations(SynfibrilMuscle)
+
+ var CombatRib1 = new Augmentation({
+ name:AugmentationNames.CombatRib1, repCost:3e3, moneyCost:4750000,
+ info:"The human body's ribs are replaced with artificial ribs that automatically and continuously release cognitive " +
+ "and performance-enhancing drugs into the bloodstream, improving the user's abilities in combat.
" +
+ "This augmentation increases the player's strength and defense by 10%."
+ });
+ CombatRib1.addToFactions(["Slum Snakes", "The Dark Army", "The Syndicate", "Sector-12", "Volhaven", "Ishima",
+ "OmniTek Incorporated", "KuaiGong International", "Blade Industries"]);
+ if (augmentationExists(AugmentationNames.CombatRib1)) {
+ delete Augmentations[AugmentationNames.CombatRib1];
+ }
+ AddToAugmentations(CombatRib1);
+
+ var CombatRib2 = new Augmentation({
+ name:AugmentationNames.CombatRib2, repCost:7.5e3, moneyCost:13e6,
+ info:"This is an upgrade to the Combat Rib I augmentation, and is capable of releasing even more potent combat-enhancing " +
+ "drugs into the bloodstream.
This upgrade increases the player's strength and defense by an additional 14%.",
+ prereqs:[AugmentationNames.CombatRib1]
+ });
+ CombatRib2.addToFactions(["The Dark Army", "The Syndicate", "Sector-12", "Volhaven", "Ishima",
+ "OmniTek Incorporated", "KuaiGong International", "Blade Industries"]);
+ if (augmentationExists(AugmentationNames.CombatRib2)) {
+ delete Augmentations[AugmentationNames.CombatRib2];
+ }
+ AddToAugmentations(CombatRib2);
+
+ var CombatRib3 = new Augmentation({
+ name:AugmentationNames.CombatRib3, repCost:14e3, moneyCost:24e6,
+ info:"This is an upgrade to the Combat Rib II augmentation, and is capable of releasing even more potent combat-enhancing " +
+ "drugs into the bloodstream
. This upgrade increases the player's strength and defense by an additional 18%.",
+ prereqs:[AugmentationNames.CombatRib2],
+ });
+ CombatRib3.addToFactions(["The Dark Army", "The Syndicate", "OmniTek Incorporated",
+ "KuaiGong International", "Blade Industries", "The Covenant"]);
+ if (augmentationExists(AugmentationNames.CombatRib3)) {
+ delete Augmentations[AugmentationNames.CombatRib3];
+ }
+ AddToAugmentations(CombatRib3);
+
+ var NanofiberWeave = new Augmentation({
+ name:AugmentationNames.NanofiberWeave, repCost:15e3, moneyCost:25e6,
+ info:"Synthetic nanofibers are woven into the skin's extracellular matrix using electrospinning. " +
+ "This improves the skin's ability to regenerate itself and protect the body from external stresses and forces.
" +
+ "This augmentation increases the player's strength and defense by 20%."
+ });
+ NanofiberWeave.addToFactions(["Tian Di Hui", "The Syndicate", "The Dark Army", "Speakers for the Dead",
+ "Blade Industries", "Fulcrum Secret Technologies", "OmniTek Incorporated"]);
+ if (augmentationExists(AugmentationNames.NanofiberWeave)) {
+ delete Augmentations[AugmentationNames.NanofiberWeave];
+ }
+ AddToAugmentations(NanofiberWeave);
+
+ var SubdermalArmor = new Augmentation({
+ name:AugmentationNames.SubdermalArmor, repCost:350e3, moneyCost:650e6,
+ info:"The NEMEAN Subdermal Weave is a thin, light-weight, graphene plating that houses a dilatant fluid. " +
+ "The material is implanted underneath the skin, and is the most advanced form of defensive enhancement " +
+ "that has ever been created. The dilatant fluid, despite being thin and light, is extremely effective " +
+ "at stopping piercing blows and reducing blunt trauma. The properties of graphene allow the plating to " +
+ "mitigate damage from any fire-related or electrical traumas.
" +
+ "This augmentation increases the player's defense by 120%."
+ });
+ SubdermalArmor.addToFactions(["The Syndicate", "Fulcrum Secret Technologies", "Illuminati", "Daedalus",
+ "The Covenant"]);
+ if (augmentationExists(AugmentationNames.SubdermalArmor)) {
+ delete Augmentations[AugmentationNames.SubdermalArmor];
+ }
+ AddToAugmentations(SubdermalArmor);
+
+ var WiredReflexes = new Augmentation({
+ name:AugmentationNames.WiredReflexes, repCost:500, moneyCost:500e3,
+ info:"Synthetic nerve-enhancements are injected into all major parts of the somatic nervous system, " +
+ "supercharging the body's ability to send signals through neurons. This results in increased reflex speed.
" +
+ "This augmentation increases the player's agility and dexterity by 5%."
+ });
+ WiredReflexes.addToFactions(["Tian Di Hui", "Slum Snakes", "Sector-12", "Volhaven", "Aevum", "Ishima",
+ "The Syndicate", "The Dark Army", "Speakers for the Dead"]);
+ if (augmentationExists(AugmentationNames.WiredReflexes)) {
+ delete Augmentations[AugmentationNames.WiredReflexes];
+ }
+ AddToAugmentations(WiredReflexes);
+
+ var GrapheneBoneLacings = new Augmentation({
+ name:AugmentationNames.GrapheneBoneLacings, repCost:450e3, moneyCost:850e6,
+ info:"A graphene-based material is grafted and fused into the user's bones, significantly increasing " +
+ "their density and tensile strength.
" +
+ "This augmentation increases the player's strength and defense by 70%."
+ });
+ GrapheneBoneLacings.addToFactions(["Fulcrum Secret Technologies", "The Covenant"]);
+ if (augmentationExists(AugmentationNames.GrapheneBoneLacings)) {
+ delete Augmentations[AugmentationNames.GrapheneBoneLacings];
+ }
+ AddToAugmentations(GrapheneBoneLacings);
+
+ var BionicSpine = new Augmentation({
+ name:AugmentationNames.BionicSpine, repCost:18e3, moneyCost:25e6,
+ info:"An artificial spine created from plasteel and carbon fibers that completely replaces the organic spine. " +
+ "Not only is the Bionic Spine physically stronger than a human spine, but it is also capable of digitally " +
+ "stimulating and regulating the neural signals that are sent and received by the spinal cord. This results in " +
+ "greatly improved senses and reaction speeds.
" +
+ "This augmentation increases all of the player's combat stats by 15%."
+ });
+ BionicSpine.addToFactions(["Speakers for the Dead", "The Syndicate", "KuaiGong International",
+ "OmniTek Incorporated", "Blade Industries"]);
+ if (augmentationExists(AugmentationNames.BionicSpine)) {
+ delete Augmentations[AugmentationNames.BionicSpine];
+ }
+ AddToAugmentations(BionicSpine);
+
+ var GrapheneBionicSpine = new Augmentation({
+ name:AugmentationNames.GrapheneBionicSpine, repCost:650e3, moneyCost:1200e6,
+ info:"An upgrade to the Bionic Spine augmentation. It fuses the implant with an advanced graphene " +
+ "material to make it much stronger and lighter.
" +
+ "This augmentation increases all of the player's combat stats by 60%.",
+ prereqs:[AugmentationNames.BionicSpine],
+ });
+ GrapheneBionicSpine.addToFactions(["Fulcrum Secret Technologies", "ECorp"]);
+ if (augmentationExists(AugmentationNames.GrapheneBionicSpine)) {
+ delete Augmentations[AugmentationNames.GrapheneBionicSpine];
+ }
+ AddToAugmentations(GrapheneBionicSpine);
+
+ var BionicLegs = new Augmentation({
+ name:AugmentationNames.BionicLegs, repCost:60e3, moneyCost:75e6,
+ info:"Cybernetic legs created from plasteel and carbon fibers that completely replace the user's organic legs.
" +
+ "This augmentation increases the player's agility by 60%."
+ });
+ BionicLegs.addToFactions(["Speakers for the Dead", "The Syndicate", "KuaiGong International",
+ "OmniTek Incorporated", "Blade Industries"]);
+ if (augmentationExists(AugmentationNames.BionicLegs)) {
+ delete Augmentations[AugmentationNames.BionicLegs];
+ }
+ AddToAugmentations(BionicLegs);
+
+ var GrapheneBionicLegs = new Augmentation({
+ name:AugmentationNames.GrapheneBionicLegs, repCost:300e3, moneyCost:900e6,
+ info:"An upgrade to the Bionic Legs augmentation. It fuses the implant with an advanced graphene " +
+ "material to make it much stronger and lighter.
" +
+ "This augmentation increases the player's agility by an additional 150%.",
+ prereqs:[AugmentationNames.BionicLegs],
+ });
+ GrapheneBionicLegs.addToFactions(["MegaCorp", "ECorp", "Fulcrum Secret Technologies"]);
+ if (augmentationExists(AugmentationNames.GrapheneBionicLegs)) {
+ delete Augmentations[AugmentationNames.GrapheneBionicLegs];
+ }
+ AddToAugmentations(GrapheneBionicLegs);
+
+ //Labor stat augmentations
+ var SpeechProcessor = new Augmentation({
+ name:AugmentationNames.SpeechProcessor, repCost:3e3, moneyCost:10e6,
+ info:"A cochlear implant with an embedded computer that analyzes incoming speech. " +
+ "The embedded computer processes characteristics of incoming speech, such as tone " +
+ "and inflection, to pick up on subtle cues and aid in social interactions.
" +
+ "This augmentation increases the player's charisma by 20%."
+ });
+ SpeechProcessor.addToFactions(["Tian Di Hui", "Chongqing", "Sector-12", "New Tokyo", "Aevum",
+ "Ishima", "Volhaven", "Silhouette"]);
+ if (augmentationExists(AugmentationNames.SpeechProcessor)) {
+ delete Augmentations[AugmentationNames.SpeechProcessor];
+ }
+ AddToAugmentations(SpeechProcessor);
+
+ let TITN41Injection = new Augmentation({
+ name:AugmentationNames.TITN41Injection, repCost:10e3, moneyCost:38e6,
+ info:"TITN is a series of viruses that targets and alters the sequences of human DNA in genes that " +
+ "control personality. The TITN-41 strain alters these genes so that the subject becomes more " +
+ "outgoing and socialable.
" +
+ "This augmentation increases the player's charisma and charisma experience gain rate by 15%"
+ });
+ TITN41Injection.addToFactions(["Silhouette"]);
+ if (augmentationExists(AugmentationNames.TITN41Injection)) {
+ delete Augmentations[AugmentationNames.TITN41Injection];
+ }
+ AddToAugmentations(TITN41Injection);
+
+ var EnhancedSocialInteractionImplant = new Augmentation({
+ name:AugmentationNames.EnhancedSocialInteractionImplant, repCost:150e3, moneyCost:275e6,
+ info:"A cranial implant that greatly assists in the user's ability to analyze social situations " +
+ "and interactions. The system uses a wide variety of factors such as facial expression, body " +
+ "language, and the voice's tone/inflection to determine the best course of action during social" +
+ "situations. The implant also uses deep learning software to continuously learn new behavior" +
+ "patterns and how to best respond.
" +
+ "This augmentation increases the player's charisma and charisma experience gain rate by 60%."
+ });
+ EnhancedSocialInteractionImplant.addToFactions(["Bachman & Associates", "NWO", "Clarke Incorporated",
+ "OmniTek Incorporated", "Four Sigma"]);
+ if (augmentationExists(AugmentationNames.EnhancedSocialInteractionImplant)) {
+ delete Augmentations[AugmentationNames.EnhancedSocialInteractionImplant];
+ }
+ AddToAugmentations(EnhancedSocialInteractionImplant);
+
+ //Hacking augmentations
+ var BitWire = new Augmentation({
+ name:AugmentationNames.BitWire, repCost:1500, moneyCost:2e6,
+ info: "A small brain implant embedded in the cerebrum. This regulates and improves the brain's computing " +
+ "capabilities.
This augmentation increases the player's hacking skill by 5%"
+ });
+ BitWire.addToFactions(["CyberSec", "NiteSec"]);
+ if (augmentationExists(AugmentationNames.BitWire)) {
+ delete Augmentations[AugmentationNames.BitWire];
+ }
+ AddToAugmentations(BitWire);
+
+ var ArtificialBioNeuralNetwork = new Augmentation({
+ name:AugmentationNames.ArtificialBioNeuralNetwork, repCost:110e3, moneyCost:600e6,
+ info:"A network consisting of millions of nanoprocessors is embedded into the brain. " +
+ "The network is meant to mimick the way a biological brain solves a problem, which each " +
+ "nanoprocessor acting similar to the way a neuron would in a neural network. However, these " +
+ "nanoprocessors are programmed to perform computations much faster than organic neurons, " +
+ "allowing its user to solve much more complex problems at a much faster rate.
" +
+ "This augmentation:
" +
+ "Increases the player's hacking speed by 3%
" +
+ "Increases the amount of money the player's gains from hacking by 15%
" +
+ "Increases the player's hacking skill by 12%"
+ });
+ ArtificialBioNeuralNetwork.addToFactions(["BitRunners", "Fulcrum Secret Technologies"]);
+ if (augmentationExists(AugmentationNames.ArtificialBioNeuralNetwork)) {
+ delete Augmentations[AugmentationNames.ArtificialBioNeuralNetwork];
+ }
+ AddToAugmentations(ArtificialBioNeuralNetwork);
+
+ var ArtificialSynapticPotentiation = new Augmentation({
+ name:AugmentationNames.ArtificialSynapticPotentiation, repCost:2500, moneyCost:16e6,
+ info:"The body is injected with a chemical that artificially induces synaptic potentiation, " +
+ "otherwise known as the strengthening of synapses. This results in a enhanced cognitive abilities.
" +
+ "This augmentation:
" +
+ "Increases the player's hacking speed by 2%
" +
+ "Increases the player's hacking chance by 5%
" +
+ "Increases the player's hacking experience gain rate by 5%"
+ });
+ ArtificialSynapticPotentiation.addToFactions(["The Black Hand", "NiteSec"]);
+ if (augmentationExists(AugmentationNames.ArtificialSynapticPotentiation)) {
+ delete Augmentations[AugmentationNames.ArtificialSynapticPotentiation];
+ }
+ AddToAugmentations(ArtificialSynapticPotentiation);
+
+ var EnhancedMyelinSheathing = new Augmentation({
+ name:AugmentationNames.EnhancedMyelinSheathing, repCost:40e3, moneyCost:275e6,
+ info:"Electrical signals are used to induce a new, artificial form of myelinogensis in the human body. " +
+ "This process results in the proliferation of new, synthetic myelin sheaths in the nervous " +
+ "system. These myelin sheaths can propogate neuro-signals much faster than their organic " +
+ "counterparts, leading to greater processing speeds and better brain function.
" +
+ "This augmentation:
" +
+ "Increases the player's hacking speed by 3%
" +
+ "Increases the player's hacking skill by 8%
" +
+ "Increases the player's hacking experience gain rate by 10%"
+ });
+ EnhancedMyelinSheathing.addToFactions(["Fulcrum Secret Technologies", "BitRunners", "The Black Hand"]);
+ if (augmentationExists(AugmentationNames.EnhancedMyelinSheathing)) {
+ delete Augmentations[AugmentationNames.EnhancedMyelinSheathing];
+ }
+ AddToAugmentations(EnhancedMyelinSheathing);
+
+ var SynapticEnhancement = new Augmentation({
+ name:AugmentationNames.SynapticEnhancement, repCost:800, moneyCost:1.5e6,
+ info:"A small cranial implant that continuously uses weak electric signals to stimulate the brain and " +
+ "induce stronger synaptic activity. This improves the user's cognitive abilities.
" +
+ "This augmentation increases the player's hacking speed by 3%."
+ });
+ SynapticEnhancement.addToFactions(["CyberSec"]);
+ if (augmentationExists(AugmentationNames.SynapticEnhancement)) {
+ delete Augmentations[AugmentationNames.SynapticEnhancement];
+ }
+ AddToAugmentations(SynapticEnhancement);
+
+ var NeuralRetentionEnhancement = new Augmentation({
+ name:AugmentationNames.NeuralRetentionEnhancement, repCost:8e3, moneyCost:50e6,
+ info:"Chemical injections are used to permanently alter and strengthen the brain's neuronal " +
+ "circuits, strengthening its ability to retain information.
" +
+ "This augmentation increases the player's hacking experience gain rate by 25%."
+ });
+ NeuralRetentionEnhancement.addToFactions(["NiteSec"]);
+ if (augmentationExists(AugmentationNames.NeuralRetentionEnhancement)) {
+ delete Augmentations[AugmentationNames.NeuralRetentionEnhancement];
+ }
+ AddToAugmentations(NeuralRetentionEnhancement);
+
+ var DataJack = new Augmentation({
+ name:AugmentationNames.DataJack, repCost:45e3, moneyCost:90e6,
+ info:"A brain implant that provides an interface for direct, wireless communication between a computer's main " +
+ "memory and the mind. This implant allows the user to not only access a computer's memory, but also alter " +
+ "and delete it.
" +
+ "This augmentation increases the amount of money the player gains from hacking by 25%"
+ });
+ DataJack.addToFactions(["BitRunners", "The Black Hand", "NiteSec", "Chongqing", "New Tokyo"]);
+ if (augmentationExists(AugmentationNames.DataJack)) {
+ delete Augmentations[AugmentationNames.DataJack];
+ }
+ AddToAugmentations(DataJack);
+
+ var ENM = new Augmentation({
+ name:AugmentationNames.ENM, repCost:6e3, moneyCost:50e6,
+ info:"A thin device embedded inside the arm containing a wireless module capable of connecting " +
+ "to nearby networks. Once connected, the Netburner Module is capable of capturing and " +
+ "processing all of the traffic on that network. By itself, the Embedded Netburner Module does " +
+ "not do much, but a variety of very powerful upgrades can be installed that allow you to fully " +
+ "control the traffic on a network.
" +
+ "This augmentation increases the player's hacking skill by 8%"
+ });
+ ENM.addToFactions(["BitRunners", "The Black Hand", "NiteSec", "ECorp", "MegaCorp",
+ "Fulcrum Secret Technologies", "NWO", "Blade Industries"]);
+ if (augmentationExists(AugmentationNames.ENM)) {
+ delete Augmentations[AugmentationNames.ENM];
+ }
+ AddToAugmentations(ENM);
+
+ var ENMCore = new Augmentation({
+ name:AugmentationNames.ENMCore, repCost:100e3, moneyCost:500e6,
+ info:"The Core library is an implant that upgrades the firmware of the Embedded Netburner Module. " +
+ "This upgrade allows the Embedded Netburner Module to generate its own data on a network.
" +
+ "This augmentation:
" +
+ "Increases the player's hacking speed by 3%
" +
+ "Increases the amount of money the player gains from hacking by 10%
" +
+ "Increases the player's chance of successfully performing a hack by 3%
" +
+ "Increases the player's hacking experience gain rate by 7%
" +
+ "Increases the player's hacking skill by 7%",
+ prereqs:[AugmentationNames.ENM]
+ });
+ ENMCore.addToFactions(["BitRunners", "The Black Hand", "ECorp", "MegaCorp",
+ "Fulcrum Secret Technologies", "NWO", "Blade Industries"]);
+ if (augmentationExists(AugmentationNames.ENMCore)) {
+ delete Augmentations[AugmentationNames.ENMCore];
+ }
+ AddToAugmentations(ENMCore);
+
+ var ENMCoreV2 = new Augmentation({
+ name:AugmentationNames.ENMCoreV2, repCost:400e3, moneyCost:900e6,
+ info:"The Core V2 library is an implant that upgrades the firmware of the Embedded Netburner Module. " +
+ "This upgraded firmware allows the Embedded Netburner Module to control the information on " +
+ "a network by re-routing traffic, spoofing IP addresses, or altering the data inside network " +
+ "packets.
" +
+ "This augmentation:
" +
+ "Increases the player's hacking speed by 5%
" +
+ "Increases the amount of money the player gains from hacking by 30%
" +
+ "Increases the player's chance of successfully performing a hack by 5%
" +
+ "Increases the player's hacking experience gain rate by 15%
" +
+ "Increases the player's hacking skill by 8%",
+ prereqs:[AugmentationNames.ENMCore]
+ });
+ ENMCoreV2.addToFactions(["BitRunners", "ECorp", "MegaCorp", "Fulcrum Secret Technologies", "NWO",
+ "Blade Industries", "OmniTek Incorporated", "KuaiGong International"]);
+ if (augmentationExists(AugmentationNames.ENMCoreV2)) {
+ delete Augmentations[AugmentationNames.ENMCoreV2];
+ }
+ AddToAugmentations(ENMCoreV2);
+
+ var ENMCoreV3 = new Augmentation({
+ name:AugmentationNames.ENMCoreV3, repCost:700e3, moneyCost:1500e6,
+ info:"The Core V3 library is an implant that upgrades the firmware of the Embedded Netburner Module. " +
+ "This upgraded firmware allows the Embedded Netburner Module to seamlessly inject code into " +
+ "any device on a network.
" +
+ "This augmentation:
" +
+ "Increases the player's hacking speed by 5%
" +
+ "Increases the amount of money the player gains from hacking by 40%
" +
+ "Increases the player's chance of successfully performing a hack by 10%
" +
+ "Increases the player's hacking experience gain rate by 25%
" +
+ "Increases the player's hacking skill by 10%",
+ prereqs:[AugmentationNames.ENMCoreV2],
+ });
+ ENMCoreV3.addToFactions(["ECorp", "MegaCorp", "Fulcrum Secret Technologies", "NWO",
+ "Daedalus", "The Covenant", "Illuminati"]);
+ if (augmentationExists(AugmentationNames.ENMCoreV3)) {
+ delete Augmentations[AugmentationNames.ENMCoreV3];
+ }
+ AddToAugmentations(ENMCoreV3);
+
+ var ENMAnalyzeEngine = new Augmentation({
+ name:AugmentationNames.ENMAnalyzeEngine, repCost:250e3, moneyCost:1200e6,
+ info:"Installs the Analyze Engine for the Embedded Netburner Module, which is a CPU cluster " +
+ "that vastly outperforms the Netburner Module's native single-core processor.
" +
+ "This augmentation increases the player's hacking speed by 10%.",
+ prereqs:[AugmentationNames.ENM],
+ });
+ ENMAnalyzeEngine.addToFactions(["ECorp", "MegaCorp", "Fulcrum Secret Technologies", "NWO",
+ "Daedalus", "The Covenant", "Illuminati"]);
+ if (augmentationExists(AugmentationNames.ENMAnalyzeEngine)) {
+ delete Augmentations[AugmentationNames.ENMAnalyzeEngine];
+ }
+ AddToAugmentations(ENMAnalyzeEngine);
+
+ var ENMDMA = new Augmentation({
+ name:AugmentationNames.ENMDMA, repCost:400e3, moneyCost:1400e6,
+ info:"This implant installs a Direct Memory Access (DMA) controller into the " +
+ "Embedded Netburner Module. This allows the Module to send and receive data " +
+ "directly to and from the main memory of devices on a network.
" +
+ "This augmentation:
" +
+ "Increases the amount of money the player gains from hacking by 40%
" +
+ "Increases the player's chance of successfully performing a hack by 20%",
+ prereqs:[AugmentationNames.ENM],
+ });
+ ENMDMA.addToFactions(["ECorp", "MegaCorp", "Fulcrum Secret Technologies", "NWO",
+ "Daedalus", "The Covenant", "Illuminati"]);
+ if (augmentationExists(AugmentationNames.ENMDMA)) {
+ delete Augmentations[AugmentationNames.ENMDMA];
+ }
+ AddToAugmentations(ENMDMA);
+
+ var Neuralstimulator = new Augmentation({
+ name:AugmentationNames.Neuralstimulator, repCost:20e3, moneyCost:600e6,
+ info:"A cranial implant that intelligently stimulates certain areas of the brain " +
+ "in order to improve cognitive functions
" +
+ "This augmentation:
" +
+ "Increases the player's hacking speed by 2%
" +
+ "Increases the player's chance of successfully performing a hack by 10%
" +
+ "Increases the player's hacking experience gain rate by 12%"
+ });
+ Neuralstimulator.addToFactions(["The Black Hand", "Chongqing", "Sector-12", "New Tokyo", "Aevum",
+ "Ishima", "Volhaven", "Bachman & Associates", "Clarke Incorporated",
+ "Four Sigma"]);
+ if (augmentationExists(AugmentationNames.Neuralstimulator)) {
+ delete Augmentations[AugmentationNames.Neuralstimulator];
+ }
+ AddToAugmentations(Neuralstimulator);
+
+ var NeuralAccelerator = new Augmentation({
+ name:AugmentationNames.NeuralAccelerator, repCost:80e3, moneyCost:350e6,
+ info:"A microprocessor that accelerates the processing " +
+ "speed of biological neural networks. This is a cranial implant that is embedded inside the brain.
" +
+ "This augmentation:
" +
+ "Increases the player's hacking skill by 10%
" +
+ "Increases the player's hacking experience gain rate by 15%
" +
+ "Increases the amount of money the player gains from hacking by 20%"
+ });
+ NeuralAccelerator.addToFactions(["BitRunners"]);
+ if (augmentationExists(AugmentationNames.NeuralAccelerator)) {
+ delete Augmentations[AugmentationNames.NeuralAccelerator];
+ }
+ AddToAugmentations(NeuralAccelerator);
+
+ var CranialSignalProcessorsG1 = new Augmentation({
+ name:AugmentationNames.CranialSignalProcessorsG1, repCost:4e3, moneyCost:14e6,
+ info:"The first generation of Cranial Signal Processors. Cranial Signal Processors " +
+ "are a set of specialized microprocessors that are attached to " +
+ "neurons in the brain. These chips process neural signals to quickly and automatically perform specific computations " +
+ "so that the brain doesn't have to.
" +
+ "This augmentation:
" +
+ "Increases the player's hacking speed by 1%
" +
+ "Increases the player's hacking skill by 5%"
+ });
+ CranialSignalProcessorsG1.addToFactions(["CyberSec"]);
+ if (augmentationExists(AugmentationNames.CranialSignalProcessorsG1)) {
+ delete Augmentations[AugmentationNames.CranialSignalProcessorsG1];
+ }
+ AddToAugmentations(CranialSignalProcessorsG1);
+
+ var CranialSignalProcessorsG2 = new Augmentation({
+ name:AugmentationNames.CranialSignalProcessorsG2, repCost:7500, moneyCost:25e6,
+ info:"The second generation of Cranial Signal Processors. Cranial Signal Processors " +
+ "are a set of specialized microprocessors that are attached to " +
+ "neurons in the brain. These chips process neural signals to quickly and automatically perform specific computations " +
+ "so that the brain doesn't have to.
" +
+ "This augmentation:
" +
+ "Increases the player's hacking speed by 2%
" +
+ "Increases the player's chance of successfully performing a hack by 5%
" +
+ "Increases the player's hacking skill by 7%"
+ });
+ CranialSignalProcessorsG2.addToFactions(["NiteSec"]);
+ if (augmentationExists(AugmentationNames.CranialSignalProcessorsG2)) {
+ delete Augmentations[AugmentationNames.CranialSignalProcessorsG2];
+ }
+ AddToAugmentations(CranialSignalProcessorsG2);
+
+ var CranialSignalProcessorsG3 = new Augmentation({
+ name:AugmentationNames.CranialSignalProcessorsG3, repCost:20e3, moneyCost:110e6,
+ info:"The third generation of Cranial Signal Processors. Cranial Signal Processors " +
+ "are a set of specialized microprocessors that are attached to " +
+ "neurons in the brain. These chips process neural signals to quickly and automatically perform specific computations " +
+ "so that the brain doesn't have to.
" +
+ "This augmentation:
" +
+ "Increases the player's hacking speed by 2%
" +
+ "Increases the amount of money the player gains from hacking by 15%
" +
+ "Increases the player's hacking skill by 9%"
+ });
+ CranialSignalProcessorsG3.addToFactions(["NiteSec", "The Black Hand"]);
+ if (augmentationExists(AugmentationNames.CranialSignalProcessorsG3)) {
+ delete Augmentations[AugmentationNames.CranialSignalProcessorsG3];
+ }
+ AddToAugmentations(CranialSignalProcessorsG3);
+
+ var CranialSignalProcessorsG4 = new Augmentation({
+ name:AugmentationNames.CranialSignalProcessorsG4, repCost:50e3, moneyCost:220e6,
+ info:"The fourth generation of Cranial Signal Processors. Cranial Signal Processors " +
+ "are a set of specialized microprocessors that are attached to " +
+ "neurons in the brain. These chips process neural signals to quickly and automatically perform specific computations " +
+ "so that the brain doesn't have to.
" +
+ "This augmentation:
" +
+ "Increases the player's hacking speed by 2%
" +
+ "Increases the amount of money the player gains from hacking by 20%
" +
+ "Increases the amount of money the player can inject into servers using grow() by 25%"
+ });
+ CranialSignalProcessorsG4.addToFactions(["The Black Hand"]);
+ if (augmentationExists(AugmentationNames.CranialSignalProcessorsG4)) {
+ delete Augmentations[AugmentationNames.CranialSignalProcessorsG4];
+ }
+ AddToAugmentations(CranialSignalProcessorsG4);
+
+ var CranialSignalProcessorsG5 = new Augmentation({
+ name:AugmentationNames.CranialSignalProcessorsG5, repCost:100e3, moneyCost:450e6,
+ info:"The fifth generation of Cranial Signal Processors. Cranial Signal Processors " +
+ "are a set of specialized microprocessors that are attached to " +
+ "neurons in the brain. These chips process neural signals to quickly and automatically perform specific computations " +
+ "so that the brain doesn't have to.
" +
+ "This augmentation:
" +
+ "Increases the player's hacking skill by 30%
" +
+ "Increases the amount of money the player gains from hacking by 25%
" +
+ "Increases the amount of money the player can inject into servers using grow() by 75%"
+ });
+ CranialSignalProcessorsG5.addToFactions(["BitRunners"]);
+ if (augmentationExists(AugmentationNames.CranialSignalProcessorsG5)) {
+ delete Augmentations[AugmentationNames.CranialSignalProcessorsG5];
+ }
+ AddToAugmentations(CranialSignalProcessorsG5);
+
+ var NeuronalDensification = new Augmentation({
+ name:AugmentationNames.NeuronalDensification, repCost:75e3, moneyCost:275e6,
+ info:"The brain is surgically re-engineered to have increased neuronal density " +
+ "by decreasing the neuron gap junction. Then, the body is genetically modified " +
+ "to enhance the production and capabilities of its neural stem cells.
" +
+ "This augmentation:
" +
+ "Increases the player's hacking skill by 15%
" +
+ "Increases the player's hacking experience gain rate by 10%
"+
+ "Increases the player's hacking speed by 3%"
+ });
+ NeuronalDensification.addToFactions(["Clarke Incorporated"]);
+ if (augmentationExists(AugmentationNames.NeuronalDensification)) {
+ delete Augmentations[AugmentationNames.NeuronalDensification];
+ }
+ AddToAugmentations(NeuronalDensification);
+
+ //Work Augmentations
+ var NuoptimalInjectorImplant = new Augmentation({
+ name:AugmentationNames.NuoptimalInjectorImplant, repCost:2e3, moneyCost:4e6,
+ info:"This torso implant automatically injects nootropic supplements into " +
+ "the bloodstream to improve memory, increase focus, and provide other " +
+ "cognitive enhancements.
" +
+ "This augmentation increases the amount of reputation the player gains " +
+ "when working for a company by 20%."
+ });
+ NuoptimalInjectorImplant.addToFactions(["Tian Di Hui", "Volhaven", "New Tokyo", "Chongqing", "Ishima",
+ "Clarke Incorporated", "Four Sigma", "Bachman & Associates"]);
+ if (augmentationExists(AugmentationNames.NuoptimalInjectorImplant)) {
+ delete Augmentations[AugmentationNames.NuoptimalInjectorImplant];
+ }
+ AddToAugmentations(NuoptimalInjectorImplant);
+
+ var SpeechEnhancement = new Augmentation({
+ name:AugmentationNames.SpeechEnhancement, repCost:1e3, moneyCost:2.5e6,
+ info:"An advanced neural implant that improves your speaking abilities, making " +
+ "you more convincing and likable in conversations and overall improving your " +
+ "social interactions.
" +
+ "This augmentation:
" +
+ "Increases the player's charisma by 10%
" +
+ "Increases the amount of reputation the player gains when working for a company by 10%"
+ });
+ SpeechEnhancement.addToFactions(["Tian Di Hui", "Speakers for the Dead", "Four Sigma", "KuaiGong International",
+ "Clarke Incorporated", "Four Sigma", "Bachman & Associates"]);
+ if (augmentationExists(AugmentationNames.SpeechEnhancement)) {
+ delete Augmentations[AugmentationNames.SpeechEnhancement];
+ }
+ AddToAugmentations(SpeechEnhancement);
+
+ var FocusWire = new Augmentation({
+ name:AugmentationNames.FocusWire, repCost:30e3, moneyCost:180e6,
+ info:"A cranial implant that stops procrastination by blocking specific neural pathways " +
+ "in the brain.
" +
+ "This augmentation:
" +
+ "Increases all experience gains by 5%
" +
+ "Increases the amount of money the player gains from working by 20%
" +
+ "Increases the amount of reputation the player gains when working for a company by 10%"
+ });
+ FocusWire.addToFactions(["Bachman & Associates", "Clarke Incorporated", "Four Sigma", "KuaiGong International"]);
+ if (augmentationExists(AugmentationNames.FocusWire)) {
+ delete Augmentations[AugmentationNames.FocusWire];
+ }
+ AddToAugmentations(FocusWire)
+
+ var PCDNI = new Augmentation({
+ name:AugmentationNames.PCDNI, repCost:150e3, moneyCost:750e6,
+ info:"Installs a Direct-Neural Interface jack into your arm that is compatible with most " +
+ "computers. Connecting to a computer through this jack allows you to interface with " +
+ "it using the brain's electrochemical signals.
" +
+ "This augmentation:
" +
+ "Increases the amount of reputation the player gains when working for a company by 30%
" +
+ "Increases the player's hacking skill by 8%"
+ });
+ PCDNI.addToFactions(["Four Sigma", "OmniTek Incorporated", "ECorp", "Blade Industries"]);
+ if (augmentationExists(AugmentationNames.PCDNI)) {
+ delete Augmentations[AugmentationNames.PCDNI];
+ }
+ AddToAugmentations(PCDNI);
+
+ var PCDNIOptimizer = new Augmentation({
+ name:AugmentationNames.PCDNIOptimizer, repCost:200e3, moneyCost:900e6,
+ info:"This is a submodule upgrade to the PC Direct-Neural Interface augmentation. It " +
+ "improves the performance of the interface and gives the user more control options " +
+ "to the connected computer.
" +
+ "This augmentation:
" +
+ "Increases the amount of reputation the player gains when working for a company by 75%
" +
+ "Increases the player's hacking skill by 10%",
+ prereqs:[AugmentationNames.PCDNI],
+ });
+ PCDNIOptimizer.addToFactions(["Fulcrum Secret Technologies", "ECorp", "Blade Industries"]);
+ if (augmentationExists(AugmentationNames.PCDNIOptimizer)) {
+ delete Augmentations[AugmentationNames.PCDNIOptimizer];
+ }
+ AddToAugmentations(PCDNIOptimizer);
+
+ var PCDNINeuralNetwork = new Augmentation({
+ name:AugmentationNames.PCDNINeuralNetwork, repCost:600e3, moneyCost:1500e6,
+ info:"This is an additional installation that upgrades the functionality of the " +
+ "PC Direct-Neural Interface augmentation. When connected to a computer, " +
+ "The NeuroNet Injector upgrade allows the user to use his/her own brain's " +
+ "processing power to aid the computer in computational tasks.
" +
+ "This augmentation:
" +
+ "Increases the amount of reputation the player gains when working for a company by 100%
" +
+ "Increases the player's hacking skill by 10%
" +
+ "Increases the player's hacking speed by 5%",
+ prereqs:[AugmentationNames.PCDNI],
+ });
+ PCDNINeuralNetwork.addToFactions(["Fulcrum Secret Technologies"]);
+ if (augmentationExists(AugmentationNames.PCDNINeuralNetwork)) {
+ delete Augmentations[AugmentationNames.PCDNINeuralNetwork];
+ }
+ AddToAugmentations(PCDNINeuralNetwork);
+
+ var ADRPheromone1 = new Augmentation({
+ name:AugmentationNames.ADRPheromone1, repCost:1500, moneyCost:3.5e6,
+ info:"The body is genetically re-engineered so that it produces the ADR-V1 pheromone, " +
+ "an artificial pheromone discovered by scientists. The ADR-V1 pheromone, when excreted, " +
+ "triggers feelings of admiration and approval in other people.
" +
+ "This augmentation:
" +
+ "Increases the amount of reputation the player gains when working for a company by 10%
" +
+ "Increases the amount of reputation the player gains for a faction by 10%"
+ });
+ ADRPheromone1.addToFactions(["Tian Di Hui", "The Syndicate", "NWO", "MegaCorp", "Four Sigma"]);
+ if (augmentationExists(AugmentationNames.ADRPheromone1)) {
+ delete Augmentations[AugmentationNames.ADRPheromone1];
+ }
+ AddToAugmentations(ADRPheromone1);
+
+ var ADRPheromone2 = new Augmentation({
+ name:AugmentationNames.ADRPheromone2, repCost:25e3, moneyCost:110e6,
+ info:"The body is genetically re-engineered so that it produces the ADR-V2 pheromone, " +
+ "which is similar to but more potent than ADR-V1. This pheromone, when excreted, " +
+ "triggers feelings of admiration, approval, and respect in others.
" +
+ "This augmentation:
" +
+ "Increases the amount of reputation the player gains for a faction and company by 20%."
+ });
+ ADRPheromone2.addToFactions(["Silhouette", "Four Sigma", "Bachman & Associates", "Clarke Incorporated"]);
+ if (augmentationExists(AugmentationNames.ADRPheromone2)) {
+ delete Augmentations[AugmentationNames.ADRPheromone2];
+ }
+ AddToAugmentations(ADRPheromone2);
+
+ //HacknetNode Augmentations
+ var HacknetNodeCPUUpload = new Augmentation({
+ name:AugmentationNames.HacknetNodeCPUUpload, repCost:1500, moneyCost:2.2e6,
+ info:"Uploads the architecture and design details of a Hacknet Node's CPU into " +
+ "the brain. This allows the user to engineer custom hardware and software " +
+ "for the Hacknet Node that provides better performance.
" +
+ "This augmentation:
" +
+ "Increases the amount of money produced by Hacknet Nodes by 15%
" +
+ "Decreases the cost of purchasing a Hacknet Node by 15%"
+ });
+ HacknetNodeCPUUpload.addToFactions(["Netburners"]);
+ if (augmentationExists(AugmentationNames.HacknetNodeCPUUpload)) {
+ delete Augmentations[AugmentationNames.HacknetNodeCPUUpload];
+ }
+ AddToAugmentations(HacknetNodeCPUUpload);
+
+ var HacknetNodeCacheUpload = new Augmentation({
+ name:AugmentationNames.HacknetNodeCacheUpload, repCost:1e3, moneyCost:1.1e6,
+ info:"Uploads the architecture and design details of a Hacknet Node's main-memory cache " +
+ "into the brain. This allows the user to engineer custom cache hardware for the " +
+ "Hacknet Node that offers better performance.
" +
+ "This augmentation:
" +
+ "Increases the amount of money produced by Hacknet Nodes by 10%
" +
+ "Decreases the cost of leveling up a Hacknet Node by 15%"
+ });
+ HacknetNodeCacheUpload.addToFactions(["Netburners"]);
+ if (augmentationExists(AugmentationNames.HacknetNodeCacheUpload)) {
+ delete Augmentations[AugmentationNames.HacknetNodeCacheUpload];
+ }
+ AddToAugmentations(HacknetNodeCacheUpload);
+
+ var HacknetNodeNICUpload = new Augmentation({
+ name:AugmentationNames.HacknetNodeNICUpload, repCost:750, moneyCost:900e3,
+ info:"Uploads the architecture and design details of a Hacknet Node's Network Interface Card (NIC) " +
+ "into the brain. This allows the user to engineer a custom NIC for the Hacknet Node that " +
+ "offers better performance.
" +
+ "This augmentation:
" +
+ "Increases the amount of money produced by Hacknet Nodes by 10%
" +
+ "Decreases the cost of purchasing a Hacknet Node by 10%"
+ });
+ HacknetNodeNICUpload.addToFactions(["Netburners"]);
+ if (augmentationExists(AugmentationNames.HacknetNodeNICUpload)) {
+ delete Augmentations[AugmentationNames.HacknetNodeNICUpload];
+ }
+ AddToAugmentations(HacknetNodeNICUpload);
+
+ var HacknetNodeKernelDNI = new Augmentation({
+ name:AugmentationNames.HacknetNodeKernelDNI, repCost:3e3, moneyCost:8e6,
+ info:"Installs a Direct-Neural Interface jack into the arm that is capable of connecting to a " +
+ "Hacknet Node. This lets the user access and manipulate the Node's kernel using the mind's " +
+ "electrochemical signals.
" +
+ "This augmentation increases the amount of money produced by Hacknet Nodes by 25%."
+ });
+ HacknetNodeKernelDNI.addToFactions(["Netburners"]);
+ if (augmentationExists(AugmentationNames.HacknetNodeKernelDNI)) {
+ delete Augmentations[AugmentationNames.HacknetNodeKernelDNI];
+ }
+ AddToAugmentations(HacknetNodeKernelDNI);
+
+ var HacknetNodeCoreDNI = new Augmentation({
+ name:AugmentationNames.HacknetNodeCoreDNI, repCost:5e3, moneyCost:12e6,
+ info:"Installs a Direct-Neural Interface jack into the arm that is capable of connecting " +
+ "to a Hacknet Node. This lets the user access and manipulate the Node's processing logic using " +
+ "the mind's electrochemical signals.
" +
+ "This augmentation increases the amount of money produced by Hacknet Nodes by 45%."
+ });
+ HacknetNodeCoreDNI.addToFactions(["Netburners"]);
+ if (augmentationExists(AugmentationNames.HacknetNodeCoreDNI)) {
+ delete Augmentations[AugmentationNames.HacknetNodeCoreDNI];
+ }
+ AddToAugmentations(HacknetNodeCoreDNI);
+
+ //Misc/Hybrid augmentations
+ var NeuroFluxGovernor = new Augmentation({
+ name:AugmentationNames.NeuroFluxGovernor, repCost:500, moneyCost: 750e3,
+ info:"A device that is embedded in the back of the neck. The NeuroFlux Governor " +
+ "monitors and regulates nervous impulses coming to and from the spinal column, " +
+ "essentially 'governing' the body. By doing so, it improves the functionality of the " +
+ "body's nervous system.
" +
+ "This is a special augmentation because it can be leveled up infinitely. Each level of this augmentation " +
+ "increases ALL of the player's multipliers by 1%"
+ });
+ var nextLevel = Object(_Faction_js__WEBPACK_IMPORTED_MODULE_3__["getNextNeurofluxLevel"])();
+ NeuroFluxGovernor.level = nextLevel - 1;
+ mult = Math.pow(_Constants_js__WEBPACK_IMPORTED_MODULE_1__["CONSTANTS"].NeuroFluxGovernorLevelMult, NeuroFluxGovernor.level);
+ NeuroFluxGovernor.baseRepRequirement = 500 * mult * _Constants_js__WEBPACK_IMPORTED_MODULE_1__["CONSTANTS"].AugmentationRepMultiplier * _BitNode_js__WEBPACK_IMPORTED_MODULE_0__["BitNodeMultipliers"].AugmentationRepCost;
+ NeuroFluxGovernor.baseCost = 750e3 * mult * _Constants_js__WEBPACK_IMPORTED_MODULE_1__["CONSTANTS"].AugmentationCostMultiplier * _BitNode_js__WEBPACK_IMPORTED_MODULE_0__["BitNodeMultipliers"].AugmentationMoneyCost;
+ if (augmentationExists(AugmentationNames.NeuroFluxGovernor)) {
+ delete Augmentations[AugmentationNames.NeuroFluxGovernor];
+ }
+ NeuroFluxGovernor.addToAllFactions();
+ AddToAugmentations(NeuroFluxGovernor);
+
+ var Neurotrainer1 = new Augmentation({
+ name:AugmentationNames.Neurotrainer1, repCost:400, moneyCost:800e3,
+ info:"A decentralized cranial implant that improves the brain's ability to learn. It is " +
+ "installed by releasing millions of nanobots into the human brain, each of which " +
+ "attaches to a different neural pathway to enhance the brain's ability to retain " +
+ "and retrieve information.
" +
+ "This augmentation increases the player's experience gain rate for all stats by 10%"
+ });
+ Neurotrainer1.addToFactions(["CyberSec"]);
+ if (augmentationExists(AugmentationNames.Neurotrainer1)) {
+ delete Augmentations[AugmentationNames.Neurotrainer1];
+ }
+ AddToAugmentations(Neurotrainer1);
+
+ var Neurotrainer2 = new Augmentation({
+ name:AugmentationNames.Neurotrainer2, repCost:4e3, moneyCost:9e6,
+ info:"A decentralized cranial implant that improves the brain's ability to learn. This " +
+ "is a more powerful version of the Neurotrainer I augmentation, but it does not " +
+ "require Neurotrainer I to be installed as a prerequisite.
" +
+ "This augmentation increases the player's experience gain rate for all stats by 15%"
+ });
+ Neurotrainer2.addToFactions(["BitRunners", "NiteSec"]);
+ if (augmentationExists(AugmentationNames.Neurotrainer2)) {
+ delete Augmentations[AugmentationNames.Neurotrainer2];
+ }
+ AddToAugmentations(Neurotrainer2);
+
+ var Neurotrainer3 = new Augmentation({
+ name:AugmentationNames.Neurotrainer3, repCost:10e3, moneyCost:26e6,
+ info:"A decentralized cranial implant that improves the brain's ability to learn. This " +
+ "is a more powerful version of the Neurotrainer I and Neurotrainer II augmentation, " +
+ "but it does not require either of them to be installed as a prerequisite.
" +
+ "This augmentation increases the player's experience gain rate for all stats by 20%"
+ });
+ Neurotrainer3.addToFactions(["NWO", "Four Sigma"]);
+ if (augmentationExists(AugmentationNames.Neurotrainer3)) {
+ delete Augmentations[AugmentationNames.Neurotrainer3];
+ }
+ AddToAugmentations(Neurotrainer3);
+
+ var Hypersight = new Augmentation({
+ name:AugmentationNames.Hypersight, repCost:60e3, moneyCost:550e6,
+ info:"A bionic eye implant that grants sight capabilities far beyond those of a natural human. " +
+ "Embedded circuitry within the implant provides the ability to detect heat and movement " +
+ "through solid objects such as wells, thus providing 'x-ray vision'-like capabilities.
" +
+ "This augmentation:
" +
+ "Increases the player's dexterity by 40%
" +
+ "Increases the player's hacking speed by 3%
" +
+ "Increases the amount of money the player gains from hacking by 10%"
+ });
+ Hypersight.addToFactions(["Blade Industries", "KuaiGong International"]);
+ if (augmentationExists(AugmentationNames.Hypersight)) {
+ delete Augmentations[AugmentationNames.Hypersight];
+ }
+ AddToAugmentations(Hypersight);
+
+ var LuminCloaking1 = new Augmentation({
+ name:AugmentationNames.LuminCloaking1, repCost:600, moneyCost:1e6,
+ info:"A skin implant that reinforces the skin with highly-advanced synthetic cells. These " +
+ "cells, when powered, have a negative refractive index. As a result, they bend light " +
+ "around the skin, making the user much harder to see from the naked eye.
" +
+ "This augmentation:
" +
+ "Increases the player's agility by 5%
" +
+ "Increases the amount of money the player gains from crimes by 10%"
+ });
+ LuminCloaking1.addToFactions(["Slum Snakes", "Tetrads"]);
+ if (augmentationExists(AugmentationNames.LuminCloaking1)) {
+ delete Augmentations[AugmentationNames.LuminCloaking1];
+ }
+ AddToAugmentations(LuminCloaking1);
+
+ var LuminCloaking2 = new Augmentation({
+ name:AugmentationNames.LuminCloaking2, repCost:2e3, moneyCost:6e6,
+ info:"This is a more advanced version of the LuminCloaking-V2 augmentation. This skin implant " +
+ "reinforces the skin with highly-advanced synthetic cells. These " +
+ "cells, when powered, are capable of not only bending light but also of bending heat, " +
+ "making the user more resilient as well as stealthy.
" +
+ "This augmentation:
" +
+ "Increases the player's agility by 10%
" +
+ "Increases the player's defense by 10%
" +
+ "Increases the amount of money the player gains from crimes by 25%"
+ });
+ LuminCloaking2.addToFactions(["Slum Snakes", "Tetrads"]);
+ if (augmentationExists(AugmentationNames.LuminCloaking2)) {
+ delete Augmentations[AugmentationNames.LuminCloaking2];
+ }
+ AddToAugmentations(LuminCloaking2);
+
+ var SmartSonar = new Augmentation({
+ name:AugmentationNames.SmartSonar, repCost:9e3, moneyCost:15e6,
+ info:"A cochlear implant that helps the player detect and locate enemies " +
+ "using sound propagation.
" +
+ "This augmentation:
" +
+ "Increases the player's dexterity by 10%
" +
+ "Increases the player's dexterity experience gain rate by 15%
" +
+ "Increases the amount of money the player gains from crimes by 25%"
+ });
+ SmartSonar.addToFactions(["Slum Snakes"]);
+ if (augmentationExists(AugmentationNames.SmartSonar)) {
+ delete Augmentations[AugmentationNames.SmartSonar];
+ }
+ AddToAugmentations(SmartSonar);
+
+ var PowerRecirculator = new Augmentation({
+ name:AugmentationNames.PowerRecirculator, repCost:10e3, moneyCost:36e6,
+ info:"The body's nerves are attached with polypyrrole nanocircuits that " +
+ "are capable of capturing wasted energy (in the form of heat) " +
+ "and converting it back into usable power.
" +
+ "This augmentation:
" +
+ "Increases all of the player's stats by 5%
" +
+ "Increases the player's experience gain rate for all stats by 10%"
+ });
+ PowerRecirculator.addToFactions(["Tetrads", "The Dark Army", "The Syndicate", "NWO"]);
+ if (augmentationExists(AugmentationNames.PowerRecirculator)) {
+ delete Augmentations[AugmentationNames.PowerRecirculator];
+ }
+ AddToAugmentations(PowerRecirculator);
+
+ //Unique AUGS (Each Faction gets one unique augmentation)
+ //Factions that already have unique augs up to this point:
+ // Slum Snakes, CyberSec, Netburners, Fulcrum Secret Technologies,
+ // Silhouette
+
+ //Illuminati
+ var QLink = new Augmentation({
+ name:AugmentationNames.QLink, repCost:750e3, moneyCost:1300e6,
+ info:"A brain implant that wirelessly connects you to the Illuminati's " +
+ "quantum supercomputer, allowing you to access and use its incredible " +
+ "computing power.
" +
+ "This augmentation:
" +
+ "Increases the player's hacking speed by 10%
" +
+ "Increases the player's chance of successfully performing a hack by 30%
" +
+ "Increases the amount of money the player gains from hacking by 100%"
+ });
+ QLink.addToFactions(["Illuminati"]);
+ if (augmentationExists(AugmentationNames.QLink)) {
+ delete Augmentations[AugmentationNames.QLink];
+ }
+ AddToAugmentations(QLink);
+
+ //Daedalus
+ var RedPill = new Augmentation({
+ name:AugmentationNames.TheRedPill, repCost:1e6, moneyCost:0,
+ info:"It's time to leave the cave"
+ });
+ RedPill.addToFactions(["Daedalus"]);
+ if (augmentationExists(AugmentationNames.TheRedPill)) {
+ delete Augmentations[AugmentationNames.TheRedPill];
+ }
+ AddToAugmentations(RedPill);
+
+ //Covenant
+ var SPTN97 = new Augmentation({
+ name:AugmentationNames.SPTN97, repCost:500e3, moneyCost:975e6,
+ info:"The SPTN-97 gene is injected into the genome. The SPTN-97 gene is an " +
+ "artificially-synthesized gene that was developed by DARPA to create " +
+ "super-soldiers through genetic modification. The gene was outlawed in " +
+ "2056.
" +
+ "This augmentation:
" +
+ "Increases all of the player's combat stats by 75%
" +
+ "Increases the player's hacking skill by 15%"
+ });
+ SPTN97.addToFactions(["The Covenant"]);
+ if (augmentationExists(AugmentationNames.SPTN97)) {
+ delete Augmentations[AugmentationNames.SPTN97];
+ }
+ AddToAugmentations(SPTN97);
+
+ //ECorp
+ var HiveMind = new Augmentation({
+ name:AugmentationNames.HiveMind, repCost:600e3, moneyCost:1100e6,
+ info:"A brain implant developed by ECorp. They do not reveal what " +
+ "exactly the implant does, but they promise that it will greatly " +
+ "enhance your abilities."
+ });
+ HiveMind.addToFactions(["ECorp"]);
+ if (augmentationExists(AugmentationNames.HiveMind)) {
+ delete Augmentations[AugmentationNames.HiveMind];
+ }
+ AddToAugmentations(HiveMind);
+
+ //MegaCorp
+ var CordiARCReactor = new Augmentation({
+ name:AugmentationNames.CordiARCReactor, repCost:450e3, moneyCost:1000e6,
+ info:"The thoracic cavity is equipped with a small chamber designed " +
+ "to hold and sustain hydrogen plasma. The plasma is used to generate " +
+ "fusion power through nuclear fusion, providing limitless amount of clean " +
+ "energy for the body.
" +
+ "This augmentation:
" +
+ "Increases all of the player's combat stats by 35%
" +
+ "Increases all of the player's combat stat experience gain rate by 35%"
+ });
+ CordiARCReactor.addToFactions(["MegaCorp"]);
+ if (augmentationExists(AugmentationNames.CordiARCReactor)) {
+ delete Augmentations[AugmentationNames.CordiARCReactor];
+ }
+ AddToAugmentations(CordiARCReactor);
+
+ //BachmanAndAssociates
+ var SmartJaw = new Augmentation({
+ name:AugmentationNames.SmartJaw, repCost:150e3, moneyCost:550e6,
+ info:"A bionic jaw that contains advanced hardware and software " +
+ "capable of psychoanalyzing and profiling the personality of " +
+ "others using optical imaging software.
" +
+ "This augmentation:
" +
+ "Increases the player's charisma by 50%.
" +
+ "Increases the player's charisma experience gain rate by 50%
" +
+ "Increases the amount of reputation the player gains for a company by 25%
" +
+ "Increases the amount of reputation the player gains for a faction by 25%"
+ });
+ SmartJaw.addToFactions(["Bachman & Associates"]);
+ if (augmentationExists(AugmentationNames.SmartJaw)) {
+ delete Augmentations[AugmentationNames.SmartJaw];
+ }
+ AddToAugmentations(SmartJaw);
+
+ //BladeIndustries
+ var Neotra = new Augmentation({
+ name:AugmentationNames.Neotra, repCost:225e3, moneyCost:575e6,
+ info:"A highly-advanced techno-organic drug that is injected into the skeletal " +
+ "and integumentary system. The drug permanently modifies the DNA of the " +
+ "body's skin and bone cells, granting them the ability to repair " +
+ "and restructure themselves.
" +
+ "This augmentation increases the player's strength and defense by 55%"
+ });
+ Neotra.addToFactions(["Blade Industries"]);
+ if (augmentationExists(AugmentationNames.Neotra)) {
+ delete Augmentations[AugmentationNames.Neotra];
+ }
+ AddToAugmentations(Neotra);
+
+ //NWO
+ var Xanipher = new Augmentation({
+ name:AugmentationNames.Xanipher, repCost:350e3, moneyCost:850e6,
+ info:"A concoction of advanced nanobots that is orally ingested into the " +
+ "body. These nanobots induce physiological change and significantly " +
+ "improve the body's functionining in all aspects.
" +
+ "This augmentation:
" +
+ "Increases all of the player's stats by 20%
" +
+ "Increases the player's experience gain rate for all stats by 15%"
+ });
+ Xanipher.addToFactions(["NWO"]);
+ if (augmentationExists(AugmentationNames.Xanipher)) {
+ delete Augmentations[AugmentationNames.Xanipher];
+ }
+ AddToAugmentations(Xanipher);
+
+ //ClarkeIncorporated
+ var nextSENS = new Augmentation({
+ name:AugmentationNames.nextSENS, repCost:175e3, moneyCost:385e6,
+ info:"The body is genetically re-engineered to maintain a state " +
+ "of negligible senescence, preventing the body from " +
+ "deteriorating with age.
" +
+ "This augmentation increases all of the player's stats by 20%"
+ });
+ nextSENS.addToFactions(["Clarke Incorporated"]);
+ if (augmentationExists(AugmentationNames.nextSENS)) {
+ delete Augmentations[AugmentationNames.nextSENS];
+ }
+ AddToAugmentations(nextSENS);
+
+ //OmniTekIncorporated
+ var OmniTekInfoLoad = new Augmentation({
+ name:AugmentationNames.OmniTekInfoLoad, repCost:250e3, moneyCost:575e6,
+ info:"OmniTek's data and information repository is uploaded " +
+ "into your brain, enhancing your programming and " +
+ "hacking abilities.
" +
+ "This augmentation:
" +
+ "Increases the player's hacking skill by 20%
" +
+ "Increases the player's hacking experience gain rate by 25%"
+ });
+ OmniTekInfoLoad.addToFactions(["OmniTek Incorporated"]);
+ if (augmentationExists(AugmentationNames.OmniTekInfoLoad)) {
+ delete Augmentations[AugmentationNames.OmniTekInfoLoad];
+ }
+ AddToAugmentations(OmniTekInfoLoad);
+
+ //FourSigma
+ //TODO Later when Intelligence is added in . Some aug that greatly increases int
+
+ //KuaiGongInternational
+ var PhotosyntheticCells = new Augmentation({
+ name:AugmentationNames.PhotosyntheticCells, repCost:225e3, moneyCost:550e6,
+ info:"Chloroplasts are added to epidermal stem cells and are applied " +
+ "to the body using a skin graft. The result is photosynthetic " +
+ "skin cells, allowing users to generate their own energy " +
+ "and nutrition using solar power.
" +
+ "This augmentation increases the player's strength, defense, and agility by 40%"
+ });
+ PhotosyntheticCells.addToFactions(["KuaiGong International"]);
+ if (augmentationExists(AugmentationNames.PhotosyntheticCells)) {
+ delete Augmentations[AugmentationNames.PhotosyntheticCells];
+ }
+ AddToAugmentations(PhotosyntheticCells);
+
+ //BitRunners
+ var Neurolink = new Augmentation({
+ name:AugmentationNames.Neurolink, repCost:350e3, moneyCost:875e6,
+ info:"A brain implant that provides a high-bandwidth, direct neural link between your " +
+ "mind and BitRunners' data servers, which reportedly contain " +
+ "the largest database of hacking tools and information in the world.
" +
+ "This augmentation:
" +
+ "Increases the player's hacking skill by 15%
" +
+ "Increases the player's hacking experience gain rate by 20%
" +
+ "Increases the player's chance of successfully performing a hack by 10%
" +
+ "Increases the player's hacking speed by 5%
" +
+ "Lets the player start with the FTPCrack.exe and relaySMTP.exe programs after a reset"
+ });
+ Neurolink.addToFactions(["BitRunners"]);
+ if (augmentationExists(AugmentationNames.Neurolink)) {
+ delete Augmentations[AugmentationNames.Neurolink];
+ }
+ AddToAugmentations(Neurolink);
+
+ //BlackHand
+ var TheBlackHand = new Augmentation({
+ name:AugmentationNames.TheBlackHand, repCost:40e3, moneyCost:110e6,
+ info:"A highly advanced bionic hand. This prosthetic not only " +
+ "enhances strength and dexterity but it is also embedded " +
+ "with hardware and firmware that lets the user connect to, access and hack " +
+ "devices and machines just by touching them.
" +
+ "This augmentation:
" +
+ "Increases the player's strength and dexterity by 15%
" +
+ "Increases the player's hacking skill by 10%
" +
+ "Increases the player's hacking speed by 2%
" +
+ "Increases the amount of money the player gains from hacking by 10%"
+ });
+ TheBlackHand.addToFactions(["The Black Hand"]);
+ if (augmentationExists(AugmentationNames.TheBlackHand)) {
+ delete Augmentations[AugmentationNames.TheBlackHand];
+ }
+ AddToAugmentations(TheBlackHand);
+
+ //NiteSec
+ var CRTX42AA = new Augmentation({
+ name:AugmentationNames.CRTX42AA, repCost:18e3, moneyCost:45e6,
+ info:"The CRTX42-AA gene is injected into the genome. " +
+ "The CRTX42-AA is an artificially-synthesized gene that targets the visual and prefrontal " +
+ "cortex and improves cognitive abilities.
" +
+ "This augmentation:
" +
+ "Improves the player's hacking skill by 8%
" +
+ "Improves the player's hacking experience gain rate by 15%"
+ });
+ CRTX42AA.addToFactions(["NiteSec"]);
+ if (augmentationExists(AugmentationNames.CRTX42AA)) {
+ delete Augmentations[AugmentationNames.CRTX42AA];
+ }
+ AddToAugmentations(CRTX42AA);
+
+ //Chongqing
+ var Neuregen = new Augmentation({
+ name:AugmentationNames.Neuregen, repCost:15e3, moneyCost:75e6,
+ info:"A drug that genetically modifies the neurons in the brain. " +
+ "The result is that these neurons never die and continuously " +
+ "regenerate and strengthen themselves.
" +
+ "This augmentation increases the player's hacking experience gain rate by 40%"
+ });
+ Neuregen.addToFactions(["Chongqing"]);
+ if (augmentationExists(AugmentationNames.Neuregen)) {
+ delete Augmentations[AugmentationNames.Neuregen];
+ }
+ AddToAugmentations(Neuregen);
+
+ //Sector12
+ var CashRoot = new Augmentation({
+ name:AugmentationNames.CashRoot, repCost:5e3, moneyCost:25e6,
+ info:"A collection of digital assets saved on a small chip. The chip is implanted " +
+ "into your wrist. A small jack in the chip allows you to connect it to a computer " +
+ "and upload the assets.
" +
+ "This augmentation:
" +
+ "Lets the player start with $1,000,000 after a reset
" +
+ "Lets the player start with the BruteSSH.exe program after a reset"
+ });
+ CashRoot.addToFactions(["Sector-12"]);
+ if (augmentationExists(AugmentationNames.CashRoot)) {
+ delete Augmentations[AugmentationNames.CashRoot];
+ }
+ AddToAugmentations(CashRoot);
+
+ //NewTokyo
+ var NutriGen = new Augmentation({
+ name:AugmentationNames.NutriGen, repCost:2500, moneyCost:500e3,
+ info:"A thermo-powered artificial nutrition generator. Endogenously " +
+ "synthesizes glucose, amino acids, and vitamins and redistributes them " +
+ "across the body. The device is powered by the body's naturally wasted " +
+ "energy in the form of heat.
" +
+ "This augmentation:
" +
+ "Increases the player's experience gain rate for all combat stats by 20%"
+ });
+ NutriGen.addToFactions(["New Tokyo"]);
+ if (augmentationExists(AugmentationNames.NutriGen)) {
+ delete Augmentations[AugmentationNames.NutriGen];
+ }
+ AddToAugmentations(NutriGen);
+
+ //Aevum
+ //TODO Later Something that lets you learn advanced math...this increases int
+ //and profits as a trader/from trading
+
+ //Ishima
+ var INFRARet = new Augmentation({
+ name:AugmentationNames.INFRARet, repCost:3e3, moneyCost:6e6,
+ info:"A retina implant consisting of a tiny chip that sits behind the " +
+ "retina. This implant lets people visually detect infrared radiation.
" +
+ "This augmentation:
" +
+ "Increases the player's crime success rate by 25%
" +
+ "Increases the amount of money the player gains from crimes by 10%
" +
+ "Increases the player's dexterity by 10%"
+ });
+ INFRARet.addToFactions(["Ishima"]);
+ if (augmentationExists(AugmentationNames.INFRARet)) {
+ delete Augmentations[AugmentationNames.INFRARet];
+ }
+ AddToAugmentations(INFRARet);
+
+ //Volhaven
+ var DermaForce = new Augmentation({
+ name:AugmentationNames.DermaForce, repCost:6e3, moneyCost:10e6,
+ info:"A synthetic skin is grafted onto the body. The skin consists of " +
+ "millions of nanobots capable of projecting high-density muon beams, " +
+ "creating an energy barrier around the user.
" +
+ "This augmentation increases the player's defense by 40%"
+ });
+ DermaForce.addToFactions(["Volhaven"]);
+ if (augmentationExists(AugmentationNames.DermaForce)) {
+ delete Augmentations[AugmentationNames.DermaForce];
+ }
+ AddToAugmentations(DermaForce);
+
+ //SpeakersForTheDead
+ var GrapheneBrachiBlades = new Augmentation({
+ name:AugmentationNames.GrapheneBrachiBlades, repCost:90e3, moneyCost:500e6,
+ info:"An upgrade to the BrachiBlades augmentation. It infuses " +
+ "the retractable blades with an advanced graphene material " +
+ "to make them much stronger and lighter.
" +
+ "This augmentation:
" +
+ "Increases the player's strength and defense by 40%
" +
+ "Increases the player's crime success rate by 10%
" +
+ "Increases the amount of money the player gains from crimes by 30%",
+ prereqs:[AugmentationNames.BrachiBlades],
+ });
+ GrapheneBrachiBlades.addToFactions(["Speakers for the Dead"]);
+ if (augmentationExists(AugmentationNames.GrapheneBrachiBlades)) {
+ delete Augmentations[AugmentationNames.GrapheneBrachiBlades];
+ }
+ AddToAugmentations(GrapheneBrachiBlades);
+
+ //DarkArmy
+ var GrapheneBionicArms = new Augmentation({
+ name:AugmentationNames.GrapheneBionicArms, repCost:200e3, moneyCost:750e6,
+ info:"An upgrade to the Bionic Arms augmentation. It infuses the " +
+ "prosthetic arms with an advanced graphene material " +
+ "to make them much stronger and lighter.
" +
+ "This augmentation increases the player's strength and dexterity by 85%",
+ prereqs:[AugmentationNames.BionicArms],
+ });
+ GrapheneBionicArms.addToFactions(["The Dark Army"]);
+ if (augmentationExists(AugmentationNames.GrapheneBionicArms)) {
+ delete Augmentations[AugmentationNames.GrapheneBionicArms];
+ }
+ AddToAugmentations(GrapheneBionicArms);
+
+ //TheSyndicate
+ var BrachiBlades = new Augmentation({
+ name:AugmentationNames.BrachiBlades, repCost:5e3, moneyCost:18e6,
+ info:"A set of retractable plasteel blades are implanted in the arm, underneath the skin. " +
+ "
This augmentation:
" +
+ "Increases the player's strength and defense by 15%
" +
+ "Increases the player's crime success rate by 10%
" +
+ "Increases the amount of money the player gains from crimes by 15%"
+ });
+ BrachiBlades.addToFactions(["The Syndicate"]);
+ if (augmentationExists(AugmentationNames.BrachiBlades)) {
+ delete Augmentations[AugmentationNames.BrachiBlades];
+ }
+ AddToAugmentations(BrachiBlades);
+
+ //Tetrads
+ var BionicArms = new Augmentation({
+ name:AugmentationNames.BionicArms, repCost:25e3, moneyCost:55e6,
+ info:"Cybernetic arms created from plasteel and carbon fibers that completely replace " +
+ "the user's organic arms.
" +
+ "This augmentation increases the user's strength and dexterity by 30%"
+ });
+ BionicArms.addToFactions(["Tetrads"]);
+ if (augmentationExists(AugmentationNames.BionicArms)) {
+ delete Augmentations[AugmentationNames.BionicArms];
+ }
+ AddToAugmentations(BionicArms);
+
+ //TianDiHui
+ var SNA = new Augmentation({
+ name:AugmentationNames.SNA, repCost:2500, moneyCost:6e6,
+ info:"A cranial implant that affects the user's personality, making them better " +
+ "at negotiation in social situations.
" +
+ "This augmentation:
" +
+ "Increases the amount of money the player earns at a company by 10%
" +
+ "Increases the amount of reputation the player gains when working for a " +
+ "company or faction by 15%"
+ });
+ SNA.addToFactions(["Tian Di Hui"]);
+ if (augmentationExists(AugmentationNames.SNA)) {
+ delete Augmentations[AugmentationNames.SNA];
+ }
+ AddToAugmentations(SNA);
+
+ //For BitNode-2, add all Augmentations to crime/evil factions.
+ //Do this before adding special Augmentations that become available in later BitNodes
+ if (_Player_js__WEBPACK_IMPORTED_MODULE_6__["Player"].bitNodeN === 2) {
+ console.log("Adding all augmentations to crime factions for Bit node 2");
+ _Faction_js__WEBPACK_IMPORTED_MODULE_3__["Factions"]["Slum Snakes"].addAllAugmentations();
+ _Faction_js__WEBPACK_IMPORTED_MODULE_3__["Factions"]["Tetrads"].addAllAugmentations();
+ _Faction_js__WEBPACK_IMPORTED_MODULE_3__["Factions"]["The Syndicate"].addAllAugmentations();
+ _Faction_js__WEBPACK_IMPORTED_MODULE_3__["Factions"]["The Dark Army"].addAllAugmentations();
+ _Faction_js__WEBPACK_IMPORTED_MODULE_3__["Factions"]["Speakers for the Dead"].addAllAugmentations();
+ _Faction_js__WEBPACK_IMPORTED_MODULE_3__["Factions"]["NiteSec"].addAllAugmentations();
+ _Faction_js__WEBPACK_IMPORTED_MODULE_3__["Factions"]["The Black Hand"].addAllAugmentations();
+ }
+
+ //Special Bladeburner Augmentations
+ var BladeburnersFactionName = "Bladeburners";
+ if (Object(_Faction_js__WEBPACK_IMPORTED_MODULE_3__["factionExists"])(BladeburnersFactionName)) {
+ var EsperEyewear = new Augmentation({
+ name:AugmentationNames.EsperEyewear, repCost:500, moneyCost:33e6,
+ info:"Ballistic-grade protective and retractable eyewear that was designed specially " +
+ "for Bladeburner units. This " +
+ "is implanted by installing a mechanical frame in the skull's orbit. " +
+ "This frame interfaces with the brain and allows the user to " +
+ "automatically extrude and extract the eyewear. The eyewear protects " +
+ "against debris, shrapnel, laser, flash, and gas. It is also " +
+ "embedded with a data processing chip that can be programmed to display an " +
+ "AR HUD and assist the user in field missions.
" +
+ "This augmentation:
" +
+ "Increases the player's success chance in Bladeburner contracts/operations by 3%
" +
+ "Increases the player's dexterity by 3%"
+ });
+ EsperEyewear.addToFactions([BladeburnersFactionName]);
+ resetAugmentation(EsperEyewear);
+
+ var EMS4Recombination = new Augmentation({
+ name:AugmentationNames.EMS4Recombination, repCost: 1e3, moneyCost:55e6,
+ info:"A DNA recombination of the EMS-4 Gene. This genetic engineering " +
+ "technique was originally used on Bladeburners during the Synthoid uprising " +
+ "to induce wakefulness and concentration, suppress fear, reduce empathy, and " +
+ "improve reflexes and memory-recall among other things.
" +
+ "This augmentation:
" +
+ "Increases the player's sucess chance in Bladeburner contracts/operations by 3%
" +
+ "Increases the player's effectiveness in Bladeburner Field Analysis by 5%
" +
+ "Increases the player's Bladeburner stamina gain rate by 1%"
+ });
+ EMS4Recombination.addToFactions([BladeburnersFactionName]);
+ resetAugmentation(EMS4Recombination);
+
+ var OrionShoulder = new Augmentation({
+ name:AugmentationNames.OrionShoulder, repCost:2.5e3, moneyCost:110e6,
+ info:"A bionic shoulder augmentation for the right shoulder. Using cybernetics, " +
+ "the ORION-MKIV shoulder enhances the strength and dexterity " +
+ "of the user's right arm. It also provides protection due to its " +
+ "crystallized graphene plating.
" +
+ "This augmentation:
" +
+ "Increases the player's defense by 5%.
" +
+ "Increases the player's strength and dexterity by 3%
" +
+ "Increases the player's success chance in Bladeburner contracts/operations by 4%"
+ });
+ OrionShoulder.addToFactions([BladeburnersFactionName]);
+ resetAugmentation(OrionShoulder);
+
+ var HyperionV1 = new Augmentation({
+ name:AugmentationNames.HyperionV1, repCost: 5e3, moneyCost:550e6,
+ info:"A pair of mini plasma cannons embedded into the hands. The Hyperion is capable " +
+ "of rapidly firing bolts of high-density plasma. The weapon is meant to " +
+ "be used against augmented enemies as the ionized " +
+ "nature of the plasma disrupts the electrical systems of Augmentations. However, " +
+ "it can also be effective against non-augmented enemies due to its high temperature " +
+ "and concussive force.
" +
+ "This augmentation:
" +
+ "Increases the player's success chance in Bladeburner contracts/operations by 5%"
+ });
+ HyperionV1.addToFactions([BladeburnersFactionName]);
+ resetAugmentation(HyperionV1);
+
+ var HyperionV2 = new Augmentation({
+ name:AugmentationNames.HyperionV2, repCost:10e3, moneyCost:1.1e9,
+ info:"A pair of mini plasma cannons embedded into the hands. This augmentation " +
+ "is more advanced and powerful than the original V1 model. This V2 model is " +
+ "more power-efficiency, more accurate, and can fire plasma bolts at a much " +
+ "higher velocity than the V1 model.
" +
+ "This augmentation:
" +
+ "Increases the player's success chance in Bladeburner contracts/operations by 7%",
+ prereqs:[AugmentationNames.HyperionV1]
+ });
+ HyperionV2.addToFactions([BladeburnersFactionName]);
+ resetAugmentation(HyperionV2);
+
+ var GolemSerum = new Augmentation({
+ name:AugmentationNames.GolemSerum, repCost:12.5e3, moneyCost:2.2e9,
+ info:"A serum that permanently enhances many aspects of a human's capabilities, " +
+ "including strength, speed, immune system performance, and mitochondrial efficiency. The " +
+ "serum was originally developed by the Chinese military in an attempt to " +
+ "create super soldiers.
" +
+ "This augmentation:
" +
+ "Increases all of the player's combat stats by 5%
" +
+ "Increases the player's Bladeburner stamina gain rate by 5%
"
+ });
+ GolemSerum.addToFactions([BladeburnersFactionName]);
+ resetAugmentation(GolemSerum);
+
+ var VangelisVirus = new Augmentation({
+ name:AugmentationNames.VangelisVirus, repCost:7.5e3, moneyCost:550e6,
+ info:"A synthetic symbiotic virus that is injected into the human brain tissue. The Vangelis virus " +
+ "heightens the senses and focus of its host, and also enhances its intuition.
" +
+ "This augmentation:
" +
+ "Increases the player's effectiveness in Bladeburner Field Analysis by 10%
" +
+ "Increases the player's success chance in Bladeburner contracts/operations by 4%
" +
+ "Increases the player's dexterity experience gain rate by 5%"
+ });
+ VangelisVirus.addToFactions([BladeburnersFactionName]);
+ resetAugmentation(VangelisVirus);
+
+ var VangelisVirus3 = new Augmentation({
+ name:AugmentationNames.VangelisVirus3, repCost:15e3, moneyCost:2.2e9,
+ info:"An improved version of Vangelis, a synthetic symbiotic virus that is " +
+ "injected into the human brain tissue. On top of the benefits of the original " +
+ "virus, this also grants an accelerated healing factor and enhanced " +
+ "agility/reflexes.
" +
+ "This augmentation:
" +
+ "Increases the player's effectiveness in Bladeburner Field Analysis by 15%
" +
+ "Increases the player's defense and dexterity experience gain rate by 5%
" +
+ "Increases the player's success chance in Bladeburner contracts/operations by 5%",
+ prereqs:[AugmentationNames.VangelisVirus]
+ });
+ VangelisVirus3.addToFactions([BladeburnersFactionName]);
+ resetAugmentation(VangelisVirus3);
+
+ var INTERLINKED = new Augmentation({
+ name:AugmentationNames.INTERLINKED, repCost:10e3, moneyCost:1.1e9,
+ info:"The DNA is genetically modified to enhance the human's body " +
+ "extracellular matrix (ECM). This improves the ECM's ability to " +
+ "structurally support the body and grants heightened strength and " +
+ "durability.
" +
+ "This augmentation:
" +
+ "Increases the player's experience gain rate for all combat stats by 4%
" +
+ "Increases the player's Bladeburner max stamina by 10%"
+ });
+ INTERLINKED.addToFactions([BladeburnersFactionName]);
+ resetAugmentation(INTERLINKED);
+
+ var BladeRunner = new Augmentation({
+ name:AugmentationNames.BladeRunner, repCost:8e3, moneyCost:1.65e9,
+ info:"A cybernetic foot augmentation that was specially created for Bladeburners " +
+ "during the Synthoid Uprising. The organic musculature of the human foot " +
+ "is enhanced with flexible carbon nanotube matrices that are controlled by " +
+ "intelligent servo-motors.
" +
+ "This augmentation:
" +
+ "Increases the player's agility by 5%
" +
+ "Increases the player's Bladeburner max stamina by 5%
" +
+ "Increases the player's Bladeburner stamina gain rate by 5%
"
+ });
+ BladeRunner.addToFactions([BladeburnersFactionName]);
+ resetAugmentation(BladeRunner);
+
+ var BladeArmor = new Augmentation({
+ name:AugmentationNames.BladeArmor, repCost:5e3, moneyCost:275e6,
+ info:"A powered exoskeleton suit (exosuit) designed as armor for Bladeburner units. This " +
+ "exoskeleton is incredibly adaptable and can protect the wearer from blunt, piercing, " +
+ "concussive, thermal, chemical, and electric trauma. It also enhances the user's " +
+ "strength and agility.
" +
+ "This augmentation:
" +
+ "Increases all of the player's combat stats by 2%
" +
+ "Increases the player's Bladeburner stamina gain rate by 2%
" +
+ "Increases the player's success chance in Bladeburner contracts/operations by 3%",
+ });
+ BladeArmor.addToFactions([BladeburnersFactionName]);
+ resetAugmentation(BladeArmor);
+
+ var BladeArmorPowerCells = new Augmentation({
+ name:AugmentationNames.BladeArmorPowerCells, repCost:7.5e3, moneyCost:550e6,
+ info:"Upgrades the BLADE-51b Tesla Armor with Ion Power Cells, which are capable of " +
+ "more efficiently storing and using power.
" +
+ "This augmentation:
" +
+ "Increases the player's success chance in Bladeburner contracts/operations by 5%" +
+ "Increases the player's Bladeburner stamina gain rate by 2%
" +
+ "Increases the player's Bladeburner max stamina by 5%
",
+ prereqs:[AugmentationNames.BladeArmor]
+ });
+ BladeArmorPowerCells.addToFactions([BladeburnersFactionName]);
+ resetAugmentation(BladeArmorPowerCells);
+
+ var BladeArmorEnergyShielding = new Augmentation({
+ name:AugmentationNames.BladeArmorEnergyShielding, repCost:8.5e3, moneyCost:1.1e9,
+ info:"Upgrades the BLADE-51b Tesla Armor with a plasma energy propulsion system " +
+ "that is capable of projecting an energy shielding force field.
" +
+ "This augmentation:
" +
+ "Increases the player's defense by 5%
" +
+ "Increases the player's success chance in Bladeburner contracts/operations by 6%",
+ prereqs:[AugmentationNames.BladeArmor]
+ });
+ BladeArmorEnergyShielding.addToFactions([BladeburnersFactionName]);
+ resetAugmentation(BladeArmorEnergyShielding);
+
+ var BladeArmorUnibeam = new Augmentation({
+ name:AugmentationNames.BladeArmorUnibeam, repCost:12.5e3, moneyCost:3.3e9,
+ info:"Upgrades the BLADE-51b Tesla Armor with a concentrated deuterium-fluoride laser " +
+ "weapon. It's precision an accuracy makes it useful for quickly neutralizing " +
+ "threats while keeping casualties to a minimum.
" +
+ "This augmentation:
" +
+ "Increases the player's success chance in Bladeburner contracts/operations by 8%",
+ prereqs:[AugmentationNames.BladeArmor]
+ });
+ BladeArmorUnibeam.addToFactions([BladeburnersFactionName]);
+ resetAugmentation(BladeArmorUnibeam);
+
+ var BladeArmorOmnibeam = new Augmentation({
+ name:AugmentationNames.BladeArmorOmnibeam, repCost:25e3, moneyCost:5.5e9,
+ info:"Upgrades the BLADE-51b Tesla Armor Unibeam augmentation to use " +
+ "multiple-fiber system. The upgraded weapon uses multiple fiber laser " +
+ "modules that combine together to form a single, more powerful beam of up to " +
+ "2000MW.
" +
+ "This augmentation:
" +
+ "Increases the player's success chance in Bladeburner contracts/operations by 10%",
+ prereqs:[AugmentationNames.BladeArmorUnibeam]
+ });
+ BladeArmorOmnibeam.addToFactions([BladeburnersFactionName]);
+ resetAugmentation(BladeArmorOmnibeam);
+
+ var BladeArmorIPU = new Augmentation({
+ name:AugmentationNames.BladeArmorIPU, repCost: 6e3, moneyCost:220e6,
+ info:"Upgrades the BLADE-51b Tesla Armor with an AI Information Processing " +
+ "Unit that was specially designed to analyze Synthoid related data and " +
+ "information.
" +
+ "This augmentation:
" +
+ "Increases the player's effectiveness in Bladeburner Field Analysis by 15%
" +
+ "Increases the player's success chance in Bladeburner contracts/operations by 2%",
+ prereqs:[AugmentationNames.BladeArmor]
+ });
+ BladeArmorIPU.addToFactions([BladeburnersFactionName]);
+ resetAugmentation(BladeArmorIPU);
+
+ var BladesSimulacrum = new Augmentation({
+ name:AugmentationNames.BladesSimulacrum, repCost:6e3, moneyCost:75e9,
+ info:"A highly-advanced matter phase-shifter module that is embedded " +
+ "in the brainstem and cerebellum. This augmentation allows " +
+ "the user to project and control a holographic simulacrum within an " +
+ "extremely large radius. These specially-modified holograms were specially " +
+ "weaponized by Bladeburner units to be used against Synthoids.
" +
+ "This augmentation allows you to perform Bladeburner actions and other " +
+ "actions (such as working, commiting crimes, etc.) at the same time."
+ });
+ BladesSimulacrum.addToFactions([BladeburnersFactionName]);
+ resetAugmentation(BladesSimulacrum);
+ }
+
+ //Update costs based on how many have been purchased
+ var mult = Math.pow(_Constants_js__WEBPACK_IMPORTED_MODULE_1__["CONSTANTS"].MultipleAugMultiplier, _Player_js__WEBPACK_IMPORTED_MODULE_6__["Player"].queuedAugmentations.length);
+ for (var name in Augmentations) {
+ if (Augmentations.hasOwnProperty(name)) {
+ Augmentations[name].baseCost *= mult;
+ }
+ }
+
+ _Player_js__WEBPACK_IMPORTED_MODULE_6__["Player"].reapplyAllAugmentations();
+}
+
+//Resets an Augmentation during (re-initizliation)
+function resetAugmentation(newAugObject) {
+ if (!(newAugObject instanceof Augmentation)) {
+ throw new Error("Invalid argument 'newAugObject' passed into resetAugmentation");
+ }
+ var name = newAugObject.name;
+ if (augmentationExists(name)) {
+ delete Augmentations[name];
+ }
+ AddToAugmentations(newAugObject);
+}
+
+function applyAugmentation(aug, reapply=false) {
+ Augmentations[aug.name].owned = true;
+ switch(aug.name) {
+ //Combat stat augmentations
+ case AugmentationNames.Targeting1:
+ _Player_js__WEBPACK_IMPORTED_MODULE_6__["Player"].dexterity_mult *= 1.10;
+ break;
+ case AugmentationNames.Targeting2:
+ _Player_js__WEBPACK_IMPORTED_MODULE_6__["Player"].dexterity_mult *= 1.20;
+ break;
+ case AugmentationNames.Targeting3:
+ _Player_js__WEBPACK_IMPORTED_MODULE_6__["Player"].dexterity_mult *= 1.30;
+ break;
+ case AugmentationNames.SyntheticHeart: //High level
+ _Player_js__WEBPACK_IMPORTED_MODULE_6__["Player"].agility_mult *= 1.5;
+ _Player_js__WEBPACK_IMPORTED_MODULE_6__["Player"].strength_mult *= 1.5;
+ break;
+ case AugmentationNames.SynfibrilMuscle: //Medium-high level
+ _Player_js__WEBPACK_IMPORTED_MODULE_6__["Player"].strength_mult *= 1.3;
+ _Player_js__WEBPACK_IMPORTED_MODULE_6__["Player"].defense_mult *= 1.3;
+ break;
+ case AugmentationNames.CombatRib1:
+ _Player_js__WEBPACK_IMPORTED_MODULE_6__["Player"].strength_mult *= 1.1;
+ _Player_js__WEBPACK_IMPORTED_MODULE_6__["Player"].defense_mult *= 1.1;
+ break;
+ case AugmentationNames.CombatRib2:
+ _Player_js__WEBPACK_IMPORTED_MODULE_6__["Player"].strength_mult *= 1.14;
+ _Player_js__WEBPACK_IMPORTED_MODULE_6__["Player"].defense_mult *= 1.14;
+ break;
+ case AugmentationNames.CombatRib3:
+ _Player_js__WEBPACK_IMPORTED_MODULE_6__["Player"].strength_mult *= 1.18;
+ _Player_js__WEBPACK_IMPORTED_MODULE_6__["Player"].defense_mult *= 1.18;
+ break;
+ case AugmentationNames.NanofiberWeave: //Med level
+ _Player_js__WEBPACK_IMPORTED_MODULE_6__["Player"].strength_mult *= 1.2;
+ _Player_js__WEBPACK_IMPORTED_MODULE_6__["Player"].defense_mult *= 1.2;
+ break;
+ case AugmentationNames.SubdermalArmor: //High level
+ _Player_js__WEBPACK_IMPORTED_MODULE_6__["Player"].defense_mult *= 2.2;
+ break;
+ case AugmentationNames.WiredReflexes: //Low level
+ _Player_js__WEBPACK_IMPORTED_MODULE_6__["Player"].agility_mult *= 1.05;
+ _Player_js__WEBPACK_IMPORTED_MODULE_6__["Player"].dexterity_mult *= 1.05;
+ break;
+ case AugmentationNames.GrapheneBoneLacings: //High level
+ _Player_js__WEBPACK_IMPORTED_MODULE_6__["Player"].strength_mult *= 1.7;
+ _Player_js__WEBPACK_IMPORTED_MODULE_6__["Player"].defense_mult *= 1.7;
+ break;
+ case AugmentationNames.BionicSpine: //Med level
+ _Player_js__WEBPACK_IMPORTED_MODULE_6__["Player"].strength_mult *= 1.15;
+ _Player_js__WEBPACK_IMPORTED_MODULE_6__["Player"].defense_mult *= 1.15;
+ _Player_js__WEBPACK_IMPORTED_MODULE_6__["Player"].agility_mult *= 1.15;
+ _Player_js__WEBPACK_IMPORTED_MODULE_6__["Player"].dexterity_mult *= 1.15;
+ break;
+ case AugmentationNames.GrapheneBionicSpine: //High level
+ _Player_js__WEBPACK_IMPORTED_MODULE_6__["Player"].strength_mult *= 1.6;
+ _Player_js__WEBPACK_IMPORTED_MODULE_6__["Player"].defense_mult *= 1.6;
+ _Player_js__WEBPACK_IMPORTED_MODULE_6__["Player"].agility_mult *= 1.6;
+ _Player_js__WEBPACK_IMPORTED_MODULE_6__["Player"].dexterity_mult *= 1.6;
+ break;
+ case AugmentationNames.BionicLegs: //Med level
+ _Player_js__WEBPACK_IMPORTED_MODULE_6__["Player"].agility_mult *= 1.6;
+ break;
+ case AugmentationNames.GrapheneBionicLegs: //High level
+ _Player_js__WEBPACK_IMPORTED_MODULE_6__["Player"].agility_mult *= 2.5;
+ break;
+
+ //Labor stats augmentations
+ case AugmentationNames.EnhancedSocialInteractionImplant: //Med-high level
+ _Player_js__WEBPACK_IMPORTED_MODULE_6__["Player"].charisma_mult *= 1.6;
+ _Player_js__WEBPACK_IMPORTED_MODULE_6__["Player"].charisma_exp_mult *= 1.6;
+ break;
+ case AugmentationNames.TITN41Injection:
+ _Player_js__WEBPACK_IMPORTED_MODULE_6__["Player"].charisma_mult *= 1.15;
+ _Player_js__WEBPACK_IMPORTED_MODULE_6__["Player"].charisma_exp_mult *= 1.15;
+ break;
+ case AugmentationNames.SpeechProcessor: //Med level
+ _Player_js__WEBPACK_IMPORTED_MODULE_6__["Player"].charisma_mult *= 1.2;
+ break;
+
+ //Hacking augmentations
+ case AugmentationNames.BitWire:
+ _Player_js__WEBPACK_IMPORTED_MODULE_6__["Player"].hacking_mult *= 1.05;
+ break;
+ case AugmentationNames.ArtificialBioNeuralNetwork: //Med level
+ _Player_js__WEBPACK_IMPORTED_MODULE_6__["Player"].hacking_speed_mult *= 1.03;
+ _Player_js__WEBPACK_IMPORTED_MODULE_6__["Player"].hacking_money_mult *= 1.15;
+ _Player_js__WEBPACK_IMPORTED_MODULE_6__["Player"].hacking_mult *= 1.12;
+ break;
+ case AugmentationNames.ArtificialSynapticPotentiation: //Med level
+ _Player_js__WEBPACK_IMPORTED_MODULE_6__["Player"].hacking_speed_mult *= 1.02;
+ _Player_js__WEBPACK_IMPORTED_MODULE_6__["Player"].hacking_chance_mult *= 1.05;
+ _Player_js__WEBPACK_IMPORTED_MODULE_6__["Player"].hacking_exp_mult *= 1.05;
+ break;
+ case AugmentationNames.EnhancedMyelinSheathing: //Med level
+ _Player_js__WEBPACK_IMPORTED_MODULE_6__["Player"].hacking_speed_mult *= 1.03;
+ _Player_js__WEBPACK_IMPORTED_MODULE_6__["Player"].hacking_exp_mult *= 1.1;
+ _Player_js__WEBPACK_IMPORTED_MODULE_6__["Player"].hacking_mult *= 1.08;
+ break;
+ case AugmentationNames.SynapticEnhancement: //Low Level
+ _Player_js__WEBPACK_IMPORTED_MODULE_6__["Player"].hacking_speed_mult *= 1.03;
+ break;
+ case AugmentationNames.NeuralRetentionEnhancement: //Med level
+ _Player_js__WEBPACK_IMPORTED_MODULE_6__["Player"].hacking_exp_mult *= 1.25;
+ break;
+ case AugmentationNames.DataJack: //Med low level
+ _Player_js__WEBPACK_IMPORTED_MODULE_6__["Player"].hacking_money_mult *= 1.25;
+ break;
+ case AugmentationNames.ENM: //Medium level
+ _Player_js__WEBPACK_IMPORTED_MODULE_6__["Player"].hacking_mult *= 1.08;
+ break;
+ case AugmentationNames.ENMCore: //Medium level
+ _Player_js__WEBPACK_IMPORTED_MODULE_6__["Player"].hacking_speed_mult *= 1.03;
+ _Player_js__WEBPACK_IMPORTED_MODULE_6__["Player"].hacking_money_mult *= 1.1;
+ _Player_js__WEBPACK_IMPORTED_MODULE_6__["Player"].hacking_chance_mult *= 1.03;
+ _Player_js__WEBPACK_IMPORTED_MODULE_6__["Player"].hacking_exp_mult *= 1.07;
+ _Player_js__WEBPACK_IMPORTED_MODULE_6__["Player"].hacking_mult *= 1.07;
+ break;
+ case AugmentationNames.ENMCoreV2: //Medium high level
+ _Player_js__WEBPACK_IMPORTED_MODULE_6__["Player"].hacking_speed_mult *= 1.05;
+ _Player_js__WEBPACK_IMPORTED_MODULE_6__["Player"].hacking_money_mult *= 1.3;
+ _Player_js__WEBPACK_IMPORTED_MODULE_6__["Player"].hacking_chance_mult *= 1.05;
+ _Player_js__WEBPACK_IMPORTED_MODULE_6__["Player"].hacking_exp_mult *= 1.15;
+ _Player_js__WEBPACK_IMPORTED_MODULE_6__["Player"].hacking_mult *= 1.08;
+ break;
+ case AugmentationNames.ENMCoreV3: //High level
+ _Player_js__WEBPACK_IMPORTED_MODULE_6__["Player"].hacking_speed_mult *= 1.05;
+ _Player_js__WEBPACK_IMPORTED_MODULE_6__["Player"].hacking_money_mult *= 1.4;
+ _Player_js__WEBPACK_IMPORTED_MODULE_6__["Player"].hacking_chance_mult *= 1.1;
+ _Player_js__WEBPACK_IMPORTED_MODULE_6__["Player"].hacking_exp_mult *= 1.25;
+ _Player_js__WEBPACK_IMPORTED_MODULE_6__["Player"].hacking_mult *= 1.1;
+ break;
+ case AugmentationNames.ENMAnalyzeEngine: //High level
+ _Player_js__WEBPACK_IMPORTED_MODULE_6__["Player"].hacking_speed_mult *= 1.1;
+ break;
+ case AugmentationNames.ENMDMA: //High level
+ _Player_js__WEBPACK_IMPORTED_MODULE_6__["Player"].hacking_money_mult *= 1.4;
+ _Player_js__WEBPACK_IMPORTED_MODULE_6__["Player"].hacking_chance_mult *= 1.2;
+ break;
+ case AugmentationNames.Neuralstimulator: //Medium Level
+ _Player_js__WEBPACK_IMPORTED_MODULE_6__["Player"].hacking_speed_mult *= 1.02;
+ _Player_js__WEBPACK_IMPORTED_MODULE_6__["Player"].hacking_chance_mult *= 1.1;
+ _Player_js__WEBPACK_IMPORTED_MODULE_6__["Player"].hacking_exp_mult *= 1.12;
+ break;
+ case AugmentationNames.NeuralAccelerator:
+ _Player_js__WEBPACK_IMPORTED_MODULE_6__["Player"].hacking_mult *= 1.1;
+ _Player_js__WEBPACK_IMPORTED_MODULE_6__["Player"].hacking_exp_mult *= 1.15;
+ _Player_js__WEBPACK_IMPORTED_MODULE_6__["Player"].hacking_money_mult *= 1.2;
+ break;
+ case AugmentationNames.CranialSignalProcessorsG1:
+ _Player_js__WEBPACK_IMPORTED_MODULE_6__["Player"].hacking_speed_mult *= 1.01;
+ _Player_js__WEBPACK_IMPORTED_MODULE_6__["Player"].hacking_mult *= 1.05;
+ break;
+ case AugmentationNames.CranialSignalProcessorsG2:
+ _Player_js__WEBPACK_IMPORTED_MODULE_6__["Player"].hacking_speed_mult *= 1.02;
+ _Player_js__WEBPACK_IMPORTED_MODULE_6__["Player"].hacking_chance_mult *= 1.05;
+ _Player_js__WEBPACK_IMPORTED_MODULE_6__["Player"].hacking_mult *= 1.07;
+ break;
+ case AugmentationNames.CranialSignalProcessorsG3:
+ _Player_js__WEBPACK_IMPORTED_MODULE_6__["Player"].hacking_speed_mult *= 1.02;
+ _Player_js__WEBPACK_IMPORTED_MODULE_6__["Player"].hacking_money_mult *= 1.15;
+ _Player_js__WEBPACK_IMPORTED_MODULE_6__["Player"].hacking_mult *= 1.09;
+ break;
+ case AugmentationNames.CranialSignalProcessorsG4:
+ _Player_js__WEBPACK_IMPORTED_MODULE_6__["Player"].hacking_speed_mult *= 1.02;
+ _Player_js__WEBPACK_IMPORTED_MODULE_6__["Player"].hacking_money_mult *= 1.2;
+ _Player_js__WEBPACK_IMPORTED_MODULE_6__["Player"].hacking_grow_mult *= 1.25;
+ break;
+ case AugmentationNames.CranialSignalProcessorsG5:
+ _Player_js__WEBPACK_IMPORTED_MODULE_6__["Player"].hacking_mult *= 1.3;
+ _Player_js__WEBPACK_IMPORTED_MODULE_6__["Player"].hacking_money_mult *= 1.25;
+ _Player_js__WEBPACK_IMPORTED_MODULE_6__["Player"].hacking_grow_mult *= 1.75;
+ break;
+ case AugmentationNames.NeuronalDensification:
+ _Player_js__WEBPACK_IMPORTED_MODULE_6__["Player"].hacking_mult *= 1.15;
+ _Player_js__WEBPACK_IMPORTED_MODULE_6__["Player"].hacking_exp_mult *= 1.1;
+ _Player_js__WEBPACK_IMPORTED_MODULE_6__["Player"].hacking_speed_mult *= 1.03;
+ break;
+
+ //Work augmentations
+ case AugmentationNames.NuoptimalInjectorImplant: //Low medium level
+ _Player_js__WEBPACK_IMPORTED_MODULE_6__["Player"].company_rep_mult *= 1.2;
+ break;
+ case AugmentationNames.SpeechEnhancement: //Low level
+ _Player_js__WEBPACK_IMPORTED_MODULE_6__["Player"].company_rep_mult *= 1.1;
+ _Player_js__WEBPACK_IMPORTED_MODULE_6__["Player"].charisma_mult *= 1.1;
+ break;
+ case AugmentationNames.FocusWire: //Med level
+ _Player_js__WEBPACK_IMPORTED_MODULE_6__["Player"].hacking_exp_mult *= 1.05;
+ _Player_js__WEBPACK_IMPORTED_MODULE_6__["Player"].strength_exp_mult *= 1.05;
+ _Player_js__WEBPACK_IMPORTED_MODULE_6__["Player"].defense_exp_mult *= 1.05;
+ _Player_js__WEBPACK_IMPORTED_MODULE_6__["Player"].dexterity_exp_mult *= 1.05;
+ _Player_js__WEBPACK_IMPORTED_MODULE_6__["Player"].agility_exp_mult *= 1.05;
+ _Player_js__WEBPACK_IMPORTED_MODULE_6__["Player"].charisma_exp_mult *= 1.05;
+ _Player_js__WEBPACK_IMPORTED_MODULE_6__["Player"].company_rep_mult *= 1.1;
+ _Player_js__WEBPACK_IMPORTED_MODULE_6__["Player"].work_money_mult *= 1.2;
+ break;
+ case AugmentationNames.PCDNI: //Med level
+ _Player_js__WEBPACK_IMPORTED_MODULE_6__["Player"].company_rep_mult *= 1.3;
+ _Player_js__WEBPACK_IMPORTED_MODULE_6__["Player"].hacking_mult *= 1.08;
+ break;
+ case AugmentationNames.PCDNIOptimizer: //High level
+ _Player_js__WEBPACK_IMPORTED_MODULE_6__["Player"].company_rep_mult *= 1.75;
+ _Player_js__WEBPACK_IMPORTED_MODULE_6__["Player"].hacking_mult *= 1.1;
+ break;
+ case AugmentationNames.PCDNINeuralNetwork: //High level
+ _Player_js__WEBPACK_IMPORTED_MODULE_6__["Player"].company_rep_mult *= 2;
+ _Player_js__WEBPACK_IMPORTED_MODULE_6__["Player"].hacking_mult *= 1.1;
+ _Player_js__WEBPACK_IMPORTED_MODULE_6__["Player"].hacking_speed_mult *= 1.05;
+ break;
+ case AugmentationNames.ADRPheromone1:
+ _Player_js__WEBPACK_IMPORTED_MODULE_6__["Player"].company_rep_mult *= 1.1;
+ _Player_js__WEBPACK_IMPORTED_MODULE_6__["Player"].faction_rep_mult *= 1.1;
+ break;
+ case AugmentationNames.ADRPheromone2:
+ _Player_js__WEBPACK_IMPORTED_MODULE_6__["Player"].company_rep_mult *= 1.2;
+ _Player_js__WEBPACK_IMPORTED_MODULE_6__["Player"].faction_rep_mult *= 1.2;
+ break;
+
+ //Hacknet Node Augmentations
+ case AugmentationNames.HacknetNodeCPUUpload:
+ _Player_js__WEBPACK_IMPORTED_MODULE_6__["Player"].hacknet_node_money_mult *= 1.15;
+ _Player_js__WEBPACK_IMPORTED_MODULE_6__["Player"].hacknet_node_purchase_cost_mult *= 0.85;
+ break;
+ case AugmentationNames.HacknetNodeCacheUpload:
+ _Player_js__WEBPACK_IMPORTED_MODULE_6__["Player"].hacknet_node_money_mult *= 1.10;
+ _Player_js__WEBPACK_IMPORTED_MODULE_6__["Player"].hacknet_node_level_cost_mult *= 0.85;
+ break;
+ case AugmentationNames.HacknetNodeNICUpload:
+ _Player_js__WEBPACK_IMPORTED_MODULE_6__["Player"].hacknet_node_money_mult *= 1.1;
+ _Player_js__WEBPACK_IMPORTED_MODULE_6__["Player"].hacknet_node_purchase_cost_mult *= 0.9;
+ break;
+ case AugmentationNames.HacknetNodeKernelDNI:
+ _Player_js__WEBPACK_IMPORTED_MODULE_6__["Player"].hacknet_node_money_mult *= 1.25;
+ break;
+ case AugmentationNames.HacknetNodeCoreDNI:
+ _Player_js__WEBPACK_IMPORTED_MODULE_6__["Player"].hacknet_node_money_mult *= 1.45;
+ break;
+
+ //Misc augmentations
+ case AugmentationNames.NeuroFluxGovernor:
+ _Player_js__WEBPACK_IMPORTED_MODULE_6__["Player"].hacking_chance_mult *= 1.01;
+ _Player_js__WEBPACK_IMPORTED_MODULE_6__["Player"].hacking_speed_mult *= 1.01;
+ _Player_js__WEBPACK_IMPORTED_MODULE_6__["Player"].hacking_money_mult *= 1.01;
+ _Player_js__WEBPACK_IMPORTED_MODULE_6__["Player"].hacking_grow_mult *= 1.01;
+ _Player_js__WEBPACK_IMPORTED_MODULE_6__["Player"].hacking_mult *= 1.01;
+
+ _Player_js__WEBPACK_IMPORTED_MODULE_6__["Player"].strength_mult *= 1.01;
+ _Player_js__WEBPACK_IMPORTED_MODULE_6__["Player"].defense_mult *= 1.01;
+ _Player_js__WEBPACK_IMPORTED_MODULE_6__["Player"].dexterity_mult *= 1.01;
+ _Player_js__WEBPACK_IMPORTED_MODULE_6__["Player"].agility_mult *= 1.01;
+ _Player_js__WEBPACK_IMPORTED_MODULE_6__["Player"].charisma_mult *= 1.01;
+
+ _Player_js__WEBPACK_IMPORTED_MODULE_6__["Player"].hacking_exp_mult *= 1.01;
+ _Player_js__WEBPACK_IMPORTED_MODULE_6__["Player"].strength_exp_mult *= 1.01;
+ _Player_js__WEBPACK_IMPORTED_MODULE_6__["Player"].defense_exp_mult *= 1.01;
+ _Player_js__WEBPACK_IMPORTED_MODULE_6__["Player"].dexterity_exp_mult *= 1.01;
+ _Player_js__WEBPACK_IMPORTED_MODULE_6__["Player"].agility_exp_mult *= 1.01;
+ _Player_js__WEBPACK_IMPORTED_MODULE_6__["Player"].charisma_exp_mult *= 1.01;
+
+ _Player_js__WEBPACK_IMPORTED_MODULE_6__["Player"].company_rep_mult *= 1.01;
+ _Player_js__WEBPACK_IMPORTED_MODULE_6__["Player"].faction_rep_mult *= 1.01;
+
+ _Player_js__WEBPACK_IMPORTED_MODULE_6__["Player"].crime_money_mult *= 1.01;
+ _Player_js__WEBPACK_IMPORTED_MODULE_6__["Player"].crime_success_mult *= 1.01;
+
+ _Player_js__WEBPACK_IMPORTED_MODULE_6__["Player"].hacknet_node_money_mult *= 1.01;
+ _Player_js__WEBPACK_IMPORTED_MODULE_6__["Player"].hacknet_node_purchase_cost_mult *= 0.99;
+ _Player_js__WEBPACK_IMPORTED_MODULE_6__["Player"].hacknet_node_ram_cost_mult *= 0.99;
+ _Player_js__WEBPACK_IMPORTED_MODULE_6__["Player"].hacknet_node_core_cost_mult *= 0.99;
+ _Player_js__WEBPACK_IMPORTED_MODULE_6__["Player"].hacknet_node_level_cost_mult *= 0.99;
+
+ _Player_js__WEBPACK_IMPORTED_MODULE_6__["Player"].work_money_mult *= 1.01;
+
+ if (!reapply) {
+ Augmentations[aug.name].level = aug.level;
+ for (var i = 0; i < _Player_js__WEBPACK_IMPORTED_MODULE_6__["Player"].augmentations.length; ++i) {
+ if (_Player_js__WEBPACK_IMPORTED_MODULE_6__["Player"].augmentations[i].name == AugmentationNames.NeuroFluxGovernor) {
+ _Player_js__WEBPACK_IMPORTED_MODULE_6__["Player"].augmentations[i].level = aug.level;
+ break;
+ }
+ }
+ }
+ break;
+ case AugmentationNames.Neurotrainer1: //Low Level
+ _Player_js__WEBPACK_IMPORTED_MODULE_6__["Player"].hacking_exp_mult *= 1.1;
+ _Player_js__WEBPACK_IMPORTED_MODULE_6__["Player"].strength_exp_mult *= 1.1;
+ _Player_js__WEBPACK_IMPORTED_MODULE_6__["Player"].defense_exp_mult *= 1.1;
+ _Player_js__WEBPACK_IMPORTED_MODULE_6__["Player"].dexterity_exp_mult *= 1.1;
+ _Player_js__WEBPACK_IMPORTED_MODULE_6__["Player"].agility_exp_mult *= 1.1;
+ _Player_js__WEBPACK_IMPORTED_MODULE_6__["Player"].charisma_exp_mult *= 1.1;
+ break;
+ case AugmentationNames.Neurotrainer2: //Medium level
+ _Player_js__WEBPACK_IMPORTED_MODULE_6__["Player"].hacking_exp_mult *= 1.15;
+ _Player_js__WEBPACK_IMPORTED_MODULE_6__["Player"].strength_exp_mult *= 1.15;
+ _Player_js__WEBPACK_IMPORTED_MODULE_6__["Player"].defense_exp_mult *= 1.15;
+ _Player_js__WEBPACK_IMPORTED_MODULE_6__["Player"].dexterity_exp_mult *= 1.15;
+ _Player_js__WEBPACK_IMPORTED_MODULE_6__["Player"].agility_exp_mult *= 1.15;
+ _Player_js__WEBPACK_IMPORTED_MODULE_6__["Player"].charisma_exp_mult *= 1.15;
+ break;
+ case AugmentationNames.Neurotrainer3: //High Level
+ _Player_js__WEBPACK_IMPORTED_MODULE_6__["Player"].hacking_exp_mult *= 1.2;
+ _Player_js__WEBPACK_IMPORTED_MODULE_6__["Player"].strength_exp_mult *= 1.2;
+ _Player_js__WEBPACK_IMPORTED_MODULE_6__["Player"].defense_exp_mult *= 1.2;
+ _Player_js__WEBPACK_IMPORTED_MODULE_6__["Player"].dexterity_exp_mult *= 1.2;
+ _Player_js__WEBPACK_IMPORTED_MODULE_6__["Player"].agility_exp_mult *= 1.2;
+ _Player_js__WEBPACK_IMPORTED_MODULE_6__["Player"].charisma_exp_mult *= 1.2;
+ break;
+ case AugmentationNames.Hypersight: //Medium high level
+ _Player_js__WEBPACK_IMPORTED_MODULE_6__["Player"].dexterity_mult *= 1.4;
+ _Player_js__WEBPACK_IMPORTED_MODULE_6__["Player"].hacking_speed_mult *= 1.03;
+ _Player_js__WEBPACK_IMPORTED_MODULE_6__["Player"].hacking_money_mult *= 1.1;
+ break;
+ case AugmentationNames.LuminCloaking1:
+ _Player_js__WEBPACK_IMPORTED_MODULE_6__["Player"].agility_mult *= 1.05;
+ _Player_js__WEBPACK_IMPORTED_MODULE_6__["Player"].crime_money_mult *= 1.1;
+ break;
+ case AugmentationNames.LuminCloaking2:
+ _Player_js__WEBPACK_IMPORTED_MODULE_6__["Player"].agility_mult *= 1.1;
+ _Player_js__WEBPACK_IMPORTED_MODULE_6__["Player"].defense_mult *= 1.1;
+ _Player_js__WEBPACK_IMPORTED_MODULE_6__["Player"].crime_money_mult *= 1.25;
+ break;
+ case AugmentationNames.HemoRecirculator:
+ _Player_js__WEBPACK_IMPORTED_MODULE_6__["Player"].strength_mult *= 1.08;
+ _Player_js__WEBPACK_IMPORTED_MODULE_6__["Player"].defense_mult *= 1.08;
+ _Player_js__WEBPACK_IMPORTED_MODULE_6__["Player"].agility_mult *= 1.08;
+ _Player_js__WEBPACK_IMPORTED_MODULE_6__["Player"].dexterity_mult *= 1.08;
+ break;
+ case AugmentationNames.SmartSonar:
+ _Player_js__WEBPACK_IMPORTED_MODULE_6__["Player"].dexterity_mult *= 1.1;
+ _Player_js__WEBPACK_IMPORTED_MODULE_6__["Player"].dexterity_exp_mult *= 1.15;
+ _Player_js__WEBPACK_IMPORTED_MODULE_6__["Player"].crime_money_mult *= 1.25;
+ break;
+ case AugmentationNames.PowerRecirculator:
+ _Player_js__WEBPACK_IMPORTED_MODULE_6__["Player"].hacking_mult *= 1.05;
+ _Player_js__WEBPACK_IMPORTED_MODULE_6__["Player"].strength_mult *= 1.05;
+ _Player_js__WEBPACK_IMPORTED_MODULE_6__["Player"].defense_mult *= 1.05;
+ _Player_js__WEBPACK_IMPORTED_MODULE_6__["Player"].dexterity_mult *= 1.05;
+ _Player_js__WEBPACK_IMPORTED_MODULE_6__["Player"].agility_mult *= 1.05;
+ _Player_js__WEBPACK_IMPORTED_MODULE_6__["Player"].charisma_mult *= 1.05;
+ _Player_js__WEBPACK_IMPORTED_MODULE_6__["Player"].hacking_exp_mult *= 1.1;
+ _Player_js__WEBPACK_IMPORTED_MODULE_6__["Player"].strength_exp_mult *= 1.1;
+ _Player_js__WEBPACK_IMPORTED_MODULE_6__["Player"].defense_exp_mult *= 1.1;
+ _Player_js__WEBPACK_IMPORTED_MODULE_6__["Player"].dexterity_exp_mult *= 1.1;
+ _Player_js__WEBPACK_IMPORTED_MODULE_6__["Player"].agility_exp_mult *= 1.1;
+ _Player_js__WEBPACK_IMPORTED_MODULE_6__["Player"].charisma_exp_mult *= 1.1;
+ break;
+ //Unique augmentations (for factions)
+ case AugmentationNames.QLink:
+ _Player_js__WEBPACK_IMPORTED_MODULE_6__["Player"].hacking_speed_mult *= 1.1;
+ _Player_js__WEBPACK_IMPORTED_MODULE_6__["Player"].hacking_chance_mult *= 1.3;
+ _Player_js__WEBPACK_IMPORTED_MODULE_6__["Player"].hacking_money_mult *= 2;
+ break;
+ case AugmentationNames.TheRedPill:
+ break;
+ case AugmentationNames.SPTN97:
+ _Player_js__WEBPACK_IMPORTED_MODULE_6__["Player"].strength_mult *= 1.75;
+ _Player_js__WEBPACK_IMPORTED_MODULE_6__["Player"].defense_mult *= 1.75;
+ _Player_js__WEBPACK_IMPORTED_MODULE_6__["Player"].dexterity_mult *= 1.75;
+ _Player_js__WEBPACK_IMPORTED_MODULE_6__["Player"].agility_mult *= 1.75;
+ _Player_js__WEBPACK_IMPORTED_MODULE_6__["Player"].hacking_mult *= 1.15;
+ break;
+ case AugmentationNames.HiveMind:
+ _Player_js__WEBPACK_IMPORTED_MODULE_6__["Player"].hacking_grow_mult *= 3;
+ break;
+ case AugmentationNames.CordiARCReactor:
+ _Player_js__WEBPACK_IMPORTED_MODULE_6__["Player"].strength_mult *= 1.35;
+ _Player_js__WEBPACK_IMPORTED_MODULE_6__["Player"].defense_mult *= 1.35;
+ _Player_js__WEBPACK_IMPORTED_MODULE_6__["Player"].dexterity_mult *= 1.35;
+ _Player_js__WEBPACK_IMPORTED_MODULE_6__["Player"].agility_mult *= 1.35;
+ _Player_js__WEBPACK_IMPORTED_MODULE_6__["Player"].strength_exp_mult *= 1.35;
+ _Player_js__WEBPACK_IMPORTED_MODULE_6__["Player"].defense_exp_mult *= 1.35;
+ _Player_js__WEBPACK_IMPORTED_MODULE_6__["Player"].dexterity_exp_mult *= 1.35;
+ _Player_js__WEBPACK_IMPORTED_MODULE_6__["Player"].agility_exp_mult *= 1.35;
+ break;
+ case AugmentationNames.SmartJaw:
+ _Player_js__WEBPACK_IMPORTED_MODULE_6__["Player"].charisma_mult *= 1.5;
+ _Player_js__WEBPACK_IMPORTED_MODULE_6__["Player"].charisma_exp_mult *= 1.5;
+ _Player_js__WEBPACK_IMPORTED_MODULE_6__["Player"].company_rep_mult *= 1.25;
+ _Player_js__WEBPACK_IMPORTED_MODULE_6__["Player"].faction_rep_mult *= 1.25;
+ break;
+ case AugmentationNames.Neotra:
+ _Player_js__WEBPACK_IMPORTED_MODULE_6__["Player"].strength_mult *= 1.55;
+ _Player_js__WEBPACK_IMPORTED_MODULE_6__["Player"].defense_mult *= 1.55;
+ break;
+ case AugmentationNames.Xanipher:
+ _Player_js__WEBPACK_IMPORTED_MODULE_6__["Player"].hacking_mult *= 1.2;
+ _Player_js__WEBPACK_IMPORTED_MODULE_6__["Player"].strength_mult *= 1.2;
+ _Player_js__WEBPACK_IMPORTED_MODULE_6__["Player"].defense_mult *= 1.2;
+ _Player_js__WEBPACK_IMPORTED_MODULE_6__["Player"].dexterity_mult *= 1.2;
+ _Player_js__WEBPACK_IMPORTED_MODULE_6__["Player"].agility_mult *= 1.2;
+ _Player_js__WEBPACK_IMPORTED_MODULE_6__["Player"].charisma_mult *= 1.2;
+ _Player_js__WEBPACK_IMPORTED_MODULE_6__["Player"].hacking_exp_mult *= 1.15;
+ _Player_js__WEBPACK_IMPORTED_MODULE_6__["Player"].strength_exp_mult *= 1.15;
+ _Player_js__WEBPACK_IMPORTED_MODULE_6__["Player"].defense_exp_mult *= 1.15;
+ _Player_js__WEBPACK_IMPORTED_MODULE_6__["Player"].dexterity_exp_mult *= 1.15;
+ _Player_js__WEBPACK_IMPORTED_MODULE_6__["Player"].agility_exp_mult *= 1.15;
+ _Player_js__WEBPACK_IMPORTED_MODULE_6__["Player"].charisma_exp_mult *= 1.15;
+ break;
+ case AugmentationNames.nextSENS:
+ _Player_js__WEBPACK_IMPORTED_MODULE_6__["Player"].hacking_mult *= 1.2;
+ _Player_js__WEBPACK_IMPORTED_MODULE_6__["Player"].strength_mult *= 1.2;
+ _Player_js__WEBPACK_IMPORTED_MODULE_6__["Player"].defense_mult *= 1.2;
+ _Player_js__WEBPACK_IMPORTED_MODULE_6__["Player"].dexterity_mult *= 1.2;
+ _Player_js__WEBPACK_IMPORTED_MODULE_6__["Player"].agility_mult *= 1.2;
+ _Player_js__WEBPACK_IMPORTED_MODULE_6__["Player"].charisma_mult *= 1.2;
+ break;
+ case AugmentationNames.OmniTekInfoLoad:
+ _Player_js__WEBPACK_IMPORTED_MODULE_6__["Player"].hacking_mult *= 1.2;
+ _Player_js__WEBPACK_IMPORTED_MODULE_6__["Player"].hacking_exp_mult *= 1.25;
+ break;
+ case AugmentationNames.PhotosyntheticCells:
+ _Player_js__WEBPACK_IMPORTED_MODULE_6__["Player"].strength_mult *= 1.4;
+ _Player_js__WEBPACK_IMPORTED_MODULE_6__["Player"].defense_mult *= 1.4;
+ _Player_js__WEBPACK_IMPORTED_MODULE_6__["Player"].agility_mult *= 1.4;
+ break;
+ case AugmentationNames.Neurolink:
+ _Player_js__WEBPACK_IMPORTED_MODULE_6__["Player"].hacking_mult *= 1.15;
+ _Player_js__WEBPACK_IMPORTED_MODULE_6__["Player"].hacking_exp_mult *= 1.2;
+ _Player_js__WEBPACK_IMPORTED_MODULE_6__["Player"].hacking_chance_mult *= 1.1;
+ _Player_js__WEBPACK_IMPORTED_MODULE_6__["Player"].hacking_speed_mult *= 1.05;
+ break;
+ case AugmentationNames.TheBlackHand:
+ _Player_js__WEBPACK_IMPORTED_MODULE_6__["Player"].strength_mult *= 1.15;
+ _Player_js__WEBPACK_IMPORTED_MODULE_6__["Player"].dexterity_mult *= 1.15;
+ _Player_js__WEBPACK_IMPORTED_MODULE_6__["Player"].hacking_mult *= 1.1;
+ _Player_js__WEBPACK_IMPORTED_MODULE_6__["Player"].hacking_speed_mult *= 1.02;
+ _Player_js__WEBPACK_IMPORTED_MODULE_6__["Player"].hacking_money_mult *= 1.1;
+ break;
+ case AugmentationNames.CRTX42AA:
+ _Player_js__WEBPACK_IMPORTED_MODULE_6__["Player"].hacking_mult *= 1.08;
+ _Player_js__WEBPACK_IMPORTED_MODULE_6__["Player"].hacking_exp_mult *= 1.15;
+ break;
+ case AugmentationNames.Neuregen:
+ _Player_js__WEBPACK_IMPORTED_MODULE_6__["Player"].hacking_exp_mult *= 1.4;
+ break;
+ case AugmentationNames.CashRoot:
+ break;
+ case AugmentationNames.NutriGen:
+ _Player_js__WEBPACK_IMPORTED_MODULE_6__["Player"].strength_exp_mult *= 1.2;
+ _Player_js__WEBPACK_IMPORTED_MODULE_6__["Player"].defense_exp_mult *= 1.2;
+ _Player_js__WEBPACK_IMPORTED_MODULE_6__["Player"].dexterity_exp_mult *= 1.2;
+ _Player_js__WEBPACK_IMPORTED_MODULE_6__["Player"].agility_exp_mult *= 1.2;
+ break;
+ case AugmentationNames.INFRARet:
+ _Player_js__WEBPACK_IMPORTED_MODULE_6__["Player"].crime_success_mult *= 1.25;
+ _Player_js__WEBPACK_IMPORTED_MODULE_6__["Player"].crime_money_mult *= 1.1;
+ _Player_js__WEBPACK_IMPORTED_MODULE_6__["Player"].dexterity_mult *= 1.1;
+ break;
+ case AugmentationNames.DermaForce:
+ _Player_js__WEBPACK_IMPORTED_MODULE_6__["Player"].defense_mult *= 1.4;
+ break;
+ case AugmentationNames.GrapheneBrachiBlades:
+ _Player_js__WEBPACK_IMPORTED_MODULE_6__["Player"].strength_mult *= 1.4;
+ _Player_js__WEBPACK_IMPORTED_MODULE_6__["Player"].defense_mult *= 1.4;
+ _Player_js__WEBPACK_IMPORTED_MODULE_6__["Player"].crime_success_mult *= 1.1;
+ _Player_js__WEBPACK_IMPORTED_MODULE_6__["Player"].crime_money_mult *= 1.3;
+ break;
+ case AugmentationNames.GrapheneBionicArms:
+ _Player_js__WEBPACK_IMPORTED_MODULE_6__["Player"].strength_mult *= 1.85;
+ _Player_js__WEBPACK_IMPORTED_MODULE_6__["Player"].dexterity_mult *= 1.85;
+ break;
+ case AugmentationNames.BrachiBlades:
+ _Player_js__WEBPACK_IMPORTED_MODULE_6__["Player"].strength_mult *= 1.15;
+ _Player_js__WEBPACK_IMPORTED_MODULE_6__["Player"].defense_mult *= 1.15;
+ _Player_js__WEBPACK_IMPORTED_MODULE_6__["Player"].crime_success_mult *= 1.1;
+ _Player_js__WEBPACK_IMPORTED_MODULE_6__["Player"].crime_money_mult *= 1.15;
+ break;
+ case AugmentationNames.BionicArms:
+ _Player_js__WEBPACK_IMPORTED_MODULE_6__["Player"].strength_mult *= 1.3;
+ _Player_js__WEBPACK_IMPORTED_MODULE_6__["Player"].dexterity_mult *= 1.3;
+ break;
+ case AugmentationNames.SNA:
+ _Player_js__WEBPACK_IMPORTED_MODULE_6__["Player"].work_money_mult *= 1.1;
+ _Player_js__WEBPACK_IMPORTED_MODULE_6__["Player"].company_rep_mult *= 1.15;
+ _Player_js__WEBPACK_IMPORTED_MODULE_6__["Player"].faction_rep_mult *= 1.15;
+ break;
+
+ //Bladeburner augmentations
+ case AugmentationNames.EsperEyewear:
+ _Player_js__WEBPACK_IMPORTED_MODULE_6__["Player"].bladeburner_success_chance_mult *= 1.03;
+ _Player_js__WEBPACK_IMPORTED_MODULE_6__["Player"].dexterity_mult *= 1.03;
+ break;
+ case AugmentationNames.EMS4Recombination:
+ _Player_js__WEBPACK_IMPORTED_MODULE_6__["Player"].bladeburner_success_chance_mult *= 1.03;
+ _Player_js__WEBPACK_IMPORTED_MODULE_6__["Player"].bladeburner_analysis_mult *= 1.05;
+ _Player_js__WEBPACK_IMPORTED_MODULE_6__["Player"].bladeburner_stamina_gain_mult *= 1.01;
+ break;
+ case AugmentationNames.OrionShoulder:
+ _Player_js__WEBPACK_IMPORTED_MODULE_6__["Player"].defense_mult *= 1.05;
+ _Player_js__WEBPACK_IMPORTED_MODULE_6__["Player"].strength_mult *= 1.03;
+ _Player_js__WEBPACK_IMPORTED_MODULE_6__["Player"].dexterity_mult *= 1.03;
+ _Player_js__WEBPACK_IMPORTED_MODULE_6__["Player"].bladeburner_success_chance_mult *= 1.04;
+ break;
+ case AugmentationNames.HyperionV1:
+ _Player_js__WEBPACK_IMPORTED_MODULE_6__["Player"].bladeburner_success_chance_mult *= 1.05;
+ break;
+ case AugmentationNames.HyperionV2:
+ _Player_js__WEBPACK_IMPORTED_MODULE_6__["Player"].bladeburner_success_chance_mult *= 1.07;
+ break;
+ case AugmentationNames.GolemSerum:
+ _Player_js__WEBPACK_IMPORTED_MODULE_6__["Player"].strength_mult *= 1.05;
+ _Player_js__WEBPACK_IMPORTED_MODULE_6__["Player"].defense_mult *= 1.05;
+ _Player_js__WEBPACK_IMPORTED_MODULE_6__["Player"].dexterity_mult *= 1.05;
+ _Player_js__WEBPACK_IMPORTED_MODULE_6__["Player"].agility_mult *= 1.05;
+ _Player_js__WEBPACK_IMPORTED_MODULE_6__["Player"].bladeburner_stamina_gain_mult *= 1.05;
+ break;
+ case AugmentationNames.VangelisVirus:
+ _Player_js__WEBPACK_IMPORTED_MODULE_6__["Player"].dexterity_exp_mult *= 1.05;
+ _Player_js__WEBPACK_IMPORTED_MODULE_6__["Player"].bladeburner_analysis_mult *= 1.1;
+ _Player_js__WEBPACK_IMPORTED_MODULE_6__["Player"].bladeburner_success_chance_mult *= 1.04;
+ break;
+ case AugmentationNames.VangelisVirus3:
+ _Player_js__WEBPACK_IMPORTED_MODULE_6__["Player"].defense_exp_mult *= 1.05;
+ _Player_js__WEBPACK_IMPORTED_MODULE_6__["Player"].dexterity_exp_mult *= 1.05;
+ _Player_js__WEBPACK_IMPORTED_MODULE_6__["Player"].bladeburner_analysis_mult *= 1.15;
+ _Player_js__WEBPACK_IMPORTED_MODULE_6__["Player"].bladeburner_success_chance_mult *= 1.05;
+ break;
+ case AugmentationNames.INTERLINKED:
+ _Player_js__WEBPACK_IMPORTED_MODULE_6__["Player"].strength_exp_mult *= 1.04;
+ _Player_js__WEBPACK_IMPORTED_MODULE_6__["Player"].defense_exp_mult *= 1.04;
+ _Player_js__WEBPACK_IMPORTED_MODULE_6__["Player"].dexterity_exp_mult *= 1.04;
+ _Player_js__WEBPACK_IMPORTED_MODULE_6__["Player"].agility_exp_mult *= 1.04;
+ _Player_js__WEBPACK_IMPORTED_MODULE_6__["Player"].bladeburner_max_stamina_mult *= 1.1;
+ break;
+ case AugmentationNames.BladeRunner:
+ _Player_js__WEBPACK_IMPORTED_MODULE_6__["Player"].agility_mult *= 1.05;
+ _Player_js__WEBPACK_IMPORTED_MODULE_6__["Player"].bladeburner_max_stamina_mult *= 1.05;
+ _Player_js__WEBPACK_IMPORTED_MODULE_6__["Player"].bladeburner_stamina_gain_mult *= 1.05;
+ break;
+ case AugmentationNames.BladeArmor:
+ _Player_js__WEBPACK_IMPORTED_MODULE_6__["Player"].strength_mult *= 1.02;
+ _Player_js__WEBPACK_IMPORTED_MODULE_6__["Player"].defense_mult *= 1.02;
+ _Player_js__WEBPACK_IMPORTED_MODULE_6__["Player"].dexterity_mult *= 1.02;
+ _Player_js__WEBPACK_IMPORTED_MODULE_6__["Player"].agility_mult *= 1.02;
+ _Player_js__WEBPACK_IMPORTED_MODULE_6__["Player"].bladeburner_stamina_gain_mult *= 1.02;
+ _Player_js__WEBPACK_IMPORTED_MODULE_6__["Player"].bladeburner_success_chance_mult *= 1.03;
+ break;
+ case AugmentationNames.BladeArmorPowerCells:
+ _Player_js__WEBPACK_IMPORTED_MODULE_6__["Player"].bladeburner_success_chance_mult *= 1.05;
+ _Player_js__WEBPACK_IMPORTED_MODULE_6__["Player"].bladeburner_stamina_gain_mult *= 1.02;
+ _Player_js__WEBPACK_IMPORTED_MODULE_6__["Player"].bladeburner_max_stamina_mult *= 1.05;
+ break;
+ case AugmentationNames.BladeArmorEnergyShielding:
+ _Player_js__WEBPACK_IMPORTED_MODULE_6__["Player"].defense_mult *= 1.05;
+ _Player_js__WEBPACK_IMPORTED_MODULE_6__["Player"].bladeburner_success_chance_mult *= 1.06;
+ break;
+ case AugmentationNames.BladeArmorUnibeam:
+ _Player_js__WEBPACK_IMPORTED_MODULE_6__["Player"].bladeburner_success_chance_mult *= 1.08;
+ break;
+ case AugmentationNames.BladeArmorOmnibeam:
+ _Player_js__WEBPACK_IMPORTED_MODULE_6__["Player"].bladeburner_success_chance_mult *= 1.1;
+ break;
+ case AugmentationNames.BladeArmorIPU:
+ _Player_js__WEBPACK_IMPORTED_MODULE_6__["Player"].bladeburner_analysis_mult *= 1.15;
+ _Player_js__WEBPACK_IMPORTED_MODULE_6__["Player"].bladeburner_success_chance_mult *= 1.02;
+ break;
+ case AugmentationNames.BladesSimulacrum: //No multiplier effect
+ break;
+ default:
+ throw new Error("ERROR: No such augmentation!");
+ return;
+ }
+
+ if (aug.name == AugmentationNames.NeuroFluxGovernor) {
+ for (var i = 0; i < _Player_js__WEBPACK_IMPORTED_MODULE_6__["Player"].augmentations.length; ++i) {
+ if (_Player_js__WEBPACK_IMPORTED_MODULE_6__["Player"].augmentations[i].name == AugmentationNames.NeuroFluxGovernor) {
+ //Already have this aug, just upgrade the level
+ return;
+ }
+ }
+ }
+
+ if (!reapply) {
+ var ownedAug = new PlayerOwnedAugmentation(aug.name);
+ _Player_js__WEBPACK_IMPORTED_MODULE_6__["Player"].augmentations.push(ownedAug);
+ }
+}
+
+function PlayerOwnedAugmentation(name) {
+ this.name = name;
+ this.level = 1;
+}
+
+function installAugmentations(cbScript=null) {
+ if (_Player_js__WEBPACK_IMPORTED_MODULE_6__["Player"].queuedAugmentations.length == 0) {
+ Object(_utils_DialogBox_js__WEBPACK_IMPORTED_MODULE_12__["dialogBoxCreate"])("You have not purchased any Augmentations to install!");
+ return false;
+ }
+ var augmentationList = "";
+ for (var i = 0; i < _Player_js__WEBPACK_IMPORTED_MODULE_6__["Player"].queuedAugmentations.length; ++i) {
+ var aug = Augmentations[_Player_js__WEBPACK_IMPORTED_MODULE_6__["Player"].queuedAugmentations[i].name];
+ if (aug == null) {
+ console.log("ERROR. Invalid augmentation");
+ continue;
+ }
+ applyAugmentation(_Player_js__WEBPACK_IMPORTED_MODULE_6__["Player"].queuedAugmentations[i]);
+ augmentationList += (aug.name + "
");
+ }
+ _Player_js__WEBPACK_IMPORTED_MODULE_6__["Player"].queuedAugmentations = [];
+ Object(_utils_DialogBox_js__WEBPACK_IMPORTED_MODULE_12__["dialogBoxCreate"])("You slowly drift to sleep as scientists put you under in order " +
+ "to install the following Augmentations:
" + augmentationList +
+ "
You wake up in your home...you feel different...");
+ Object(_Prestige_js__WEBPACK_IMPORTED_MODULE_7__["prestigeAugmentation"])();
+
+ //Run a script after prestiging
+ if (cbScript && Object(_utils_StringHelperFunctions_js__WEBPACK_IMPORTED_MODULE_15__["isString"])(cbScript)) {
+ var home = _Player_js__WEBPACK_IMPORTED_MODULE_6__["Player"].getHomeComputer();
+ for (var i = 0; i < home.scripts.length; ++i) {
+ if (home.scripts[i].filename === cbScript) {
+ var script = home.scripts[i];
+ var ramUsage = script.ramUsage;
+ var ramAvailable = home.maxRam - home.ramUsed;
+ if (ramUsage > ramAvailable) {
+ return; //Not enough RAM
+ }
+ var runningScriptObj = new _Script_js__WEBPACK_IMPORTED_MODULE_9__["RunningScript"](script, []); //No args
+ runningScriptObj.threads = 1; //Only 1 thread
+ home.runningScripts.push(runningScriptObj);
+ Object(_NetscriptWorker_js__WEBPACK_IMPORTED_MODULE_5__["addWorkerScript"])(runningScriptObj, home);
+ }
+ }
+ }
+}
+
+function augmentationExists(name) {
+ return Augmentations.hasOwnProperty(name);
+}
+
+//Used for testing balance
+function giveAllAugmentations() {
+ for (var name in Augmentations) {
+ var aug = Augmentations[name];
+ if (aug == null) {continue;}
+ var ownedAug = new PlayerOwnedAugmentation(name);
+ _Player_js__WEBPACK_IMPORTED_MODULE_6__["Player"].augmentations.push(ownedAug);
+ }
+ _Player_js__WEBPACK_IMPORTED_MODULE_6__["Player"].reapplyAllAugmentations();
+}
+
+function displayAugmentationsContent() {
+ Object(_utils_HelperFunctions_js__WEBPACK_IMPORTED_MODULE_13__["removeChildrenFromElement"])(_engine_js__WEBPACK_IMPORTED_MODULE_2__["Engine"].Display.augmentationsContent);
+ _engine_js__WEBPACK_IMPORTED_MODULE_2__["Engine"].Display.augmentationsContent.appendChild(Object(_utils_HelperFunctions_js__WEBPACK_IMPORTED_MODULE_13__["createElement"])("h1", {
+ innerText:"Purchased Augmentations",
+ }));
+
+ //Bladeburner text, once mechanic is unlocked
+ var bladeburnerText = "\n";
+ if (_Player_js__WEBPACK_IMPORTED_MODULE_6__["Player"].bitNodeN === 6 || _NetscriptFunctions_js__WEBPACK_IMPORTED_MODULE_4__["hasBladeburnerSF"]) {
+ bladeburnerText = "Bladeburner Progress\n\n";
+ }
+
+ _engine_js__WEBPACK_IMPORTED_MODULE_2__["Engine"].Display.augmentationsContent.appendChild(Object(_utils_HelperFunctions_js__WEBPACK_IMPORTED_MODULE_13__["createElement"])("pre", {
+ width:"70%", whiteSpace:"pre-wrap", display:"block",
+ innerText:"Below is a list of all Augmentations you have purchased but not yet installed. Click the button below to install them.\n" +
+ "WARNING: Installing your Augmentations resets most of your progress, including:\n\n" +
+ "Stats/Skill levels and Experience\n" +
+ "Money\n" +
+ "Scripts on every computer but your home computer\n" +
+ "Purchased servers\n" +
+ "Hacknet Nodes\n" +
+ "Faction/Company reputation\n" +
+ "Stocks\n" +
+ bladeburnerText +
+ "Installing Augmentations lets you start over with the perks and benefits granted by all " +
+ "of the Augmentations you have ever installed. Also, you will keep any scripts and RAM/Core upgrades " +
+ "on your home computer (but you will lose all programs besides NUKE.exe)."
+ }));
+
+ //Install Augmentations button
+ _engine_js__WEBPACK_IMPORTED_MODULE_2__["Engine"].Display.augmentationsContent.appendChild(Object(_utils_HelperFunctions_js__WEBPACK_IMPORTED_MODULE_13__["createElement"])("a", {
+ class:"a-link-button", innerText:"Install Augmentations",
+ tooltip:"'I never asked for this'",
+ clickListener:()=>{
+ installAugmentations();
+ return false;
+ }
+ }));
+
+ //Backup button
+ _engine_js__WEBPACK_IMPORTED_MODULE_2__["Engine"].Display.augmentationsContent.appendChild(Object(_utils_HelperFunctions_js__WEBPACK_IMPORTED_MODULE_13__["createElement"])("a", {
+ class:"a-link-button flashing-button", innerText:"Backup Save (Export)",
+ tooltip:"It's always a good idea to backup/export your save!",
+ clickListener:()=>{
+ _SaveObject_js__WEBPACK_IMPORTED_MODULE_8__["saveObject"].exportGame();
+ return false;
+ }
+ }));
+
+ //Purchased/queued augmentations list
+ var queuedAugmentationsList = Object(_utils_HelperFunctions_js__WEBPACK_IMPORTED_MODULE_13__["createElement"])("ul", {class:"augmentations-list"});
+
+ for (var i = 0; i < _Player_js__WEBPACK_IMPORTED_MODULE_6__["Player"].queuedAugmentations.length; ++i) {
+ var augName = _Player_js__WEBPACK_IMPORTED_MODULE_6__["Player"].queuedAugmentations[i].name;
+ var aug = Augmentations[augName];
+
+ var displayName = augName;
+ if (augName === AugmentationNames.NeuroFluxGovernor) {
+ displayName += " - Level " + (_Player_js__WEBPACK_IMPORTED_MODULE_6__["Player"].queuedAugmentations[i].level);
+ }
+
+ var accordion = Object(_utils_HelperFunctions_js__WEBPACK_IMPORTED_MODULE_13__["createAccordionElement"])({hdrText:displayName, panelText:aug.info});
+ queuedAugmentationsList.appendChild(accordion[0]);
+ }
+ _engine_js__WEBPACK_IMPORTED_MODULE_2__["Engine"].Display.augmentationsContent.appendChild(queuedAugmentationsList);
+
+ //Installed augmentations list
+ _engine_js__WEBPACK_IMPORTED_MODULE_2__["Engine"].Display.augmentationsContent.appendChild(Object(_utils_HelperFunctions_js__WEBPACK_IMPORTED_MODULE_13__["createElement"])("h1", {
+ innerText:"Installed Augmentations", marginTop:"8px",
+ }));
+ _engine_js__WEBPACK_IMPORTED_MODULE_2__["Engine"].Display.augmentationsContent.appendChild(Object(_utils_HelperFunctions_js__WEBPACK_IMPORTED_MODULE_13__["createElement"])("p", {
+ width:"70%", whiteSpace:"pre-wrap",
+ innerText:"List of all Augmentations (including Source Files) that have been " +
+ "installed. You have gained the effects of these Augmentations."
+ }));
+
+ var augmentationsList = Object(_utils_HelperFunctions_js__WEBPACK_IMPORTED_MODULE_13__["createElement"])("ul", {class:"augmentations-list"});
+
+ //Expand/Collapse All buttons
+ _engine_js__WEBPACK_IMPORTED_MODULE_2__["Engine"].Display.augmentationsContent.appendChild(Object(_utils_HelperFunctions_js__WEBPACK_IMPORTED_MODULE_13__["createElement"])("a", {
+ class:"a-link-button", fontSize:"14px", innerText:"Expand All", display:"inline-block",
+ clickListener:()=>{
+ var allHeaders = augmentationsList.getElementsByClassName("accordion-header");
+ for (var i = 0; i < allHeaders.length; ++i) {
+ if (!allHeaders[i].classList.contains("active")) {allHeaders[i].click();}
+ }
+ }
+ }));
+ _engine_js__WEBPACK_IMPORTED_MODULE_2__["Engine"].Display.augmentationsContent.appendChild(Object(_utils_HelperFunctions_js__WEBPACK_IMPORTED_MODULE_13__["createElement"])("a", {
+ class:"a-link-button", fontSize:"14px", innerText:"Collapse All", display:"inline-block",
+ clickListener:()=>{
+ var allHeaders = augmentationsList.getElementsByClassName("accordion-header");
+ for (var i = 0; i < allHeaders.length; ++i) {
+ if (allHeaders[i].classList.contains("active")) {allHeaders[i].click();}
+ }
+ }
+ }));
+
+ //Sort Buttons
+ _engine_js__WEBPACK_IMPORTED_MODULE_2__["Engine"].Display.augmentationsContent.appendChild(Object(_utils_HelperFunctions_js__WEBPACK_IMPORTED_MODULE_13__["createElement"])("a", {
+ class:"a-link-button", fontSize:"14px", innerText:"Sort in Order",
+ tooltip:"Sorts the Augmentations alphabetically and Source Files in numerical order (1, 2, 3,...)",
+ clickListener:()=>{
+ Object(_utils_HelperFunctions_js__WEBPACK_IMPORTED_MODULE_13__["removeChildrenFromElement"])(augmentationsList);
+
+ //Create a copy of Player's Source Files and augs array and sort them
+ var sourceFiles = _Player_js__WEBPACK_IMPORTED_MODULE_6__["Player"].sourceFiles.slice();
+ var augs = _Player_js__WEBPACK_IMPORTED_MODULE_6__["Player"].augmentations.slice();
+ sourceFiles.sort((sf1, sf2)=>{
+ return sf1.n - sf2.n;
+ });
+ augs.sort((aug1, aug2)=>{
+ return aug1.name <= aug2.name ? -1 : 1;
+ });
+ displaySourceFiles(augmentationsList, sourceFiles);
+ displayAugmentations(augmentationsList, augs);
+ }
+ }));
+
+ _engine_js__WEBPACK_IMPORTED_MODULE_2__["Engine"].Display.augmentationsContent.appendChild(Object(_utils_HelperFunctions_js__WEBPACK_IMPORTED_MODULE_13__["createElement"])("a", {
+ class:"a-link-button", fontSize:"14px", innerText:"Sort by Acquirement Time",
+ tooltip:"Sorts the Augmentations and Source Files based on when you acquired them (same as default)",
+ clickListener:()=>{
+ Object(_utils_HelperFunctions_js__WEBPACK_IMPORTED_MODULE_13__["removeChildrenFromElement"])(augmentationsList);
+ displaySourceFiles(augmentationsList, _Player_js__WEBPACK_IMPORTED_MODULE_6__["Player"].sourceFiles);
+ displayAugmentations(augmentationsList, _Player_js__WEBPACK_IMPORTED_MODULE_6__["Player"].augmentations);
+ }
+ }));
+
+ //Source Files - Temporary...Will probably put in a separate pane Later
+ displaySourceFiles(augmentationsList, _Player_js__WEBPACK_IMPORTED_MODULE_6__["Player"].sourceFiles);
+ displayAugmentations(augmentationsList, _Player_js__WEBPACK_IMPORTED_MODULE_6__["Player"].augmentations);
+ _engine_js__WEBPACK_IMPORTED_MODULE_2__["Engine"].Display.augmentationsContent.appendChild(augmentationsList);
+}
+
+//Creates the accordion elements to display Augmentations
+// @listElement - List DOM element to append accordion elements to
+// @augs - Array of Augmentation objects
+function displayAugmentations(listElement, augs) {
+ for (var i = 0; i < augs.length; ++i) {
+ var augName = augs[i].name;
+ var aug = Augmentations[augName];
+
+ var displayName = augName;
+ if (augName === AugmentationNames.NeuroFluxGovernor) {
+ displayName += " - Level " + (augs[i].level);
+ }
+ var accordion = Object(_utils_HelperFunctions_js__WEBPACK_IMPORTED_MODULE_13__["createAccordionElement"])({hdrText:displayName, panelText:aug.info});
+ listElement.appendChild(accordion[0]);
+ }
+}
+
+//Creates the accordion elements to display Source Files
+// @listElement - List DOM element to append accordion elements to
+// @sourceFiles - Array of Source File objects
+function displaySourceFiles(listElement, sourceFiles) {
+ for (var i = 0; i < sourceFiles.length; ++i) {
+ var srcFileKey = "SourceFile" + sourceFiles[i].n;
+ var sourceFileObject = _SourceFile_js__WEBPACK_IMPORTED_MODULE_11__["SourceFiles"][srcFileKey];
+ if (sourceFileObject == null) {
+ console.log("ERROR: Invalid source file number: " + sourceFiles[i].n);
+ continue;
+ }
+ const maxLevel = sourceFiles[i].n == 12 ? "∞" : "3";
+ var accordion = Object(_utils_HelperFunctions_js__WEBPACK_IMPORTED_MODULE_13__["createAccordionElement"])({
+ hdrText:sourceFileObject.name + "
" + "Level " + (sourceFiles[i].lvl) + " / "+maxLevel,
+ panelText:sourceFileObject.info
+ });
+
+ listElement.appendChild(accordion[0]);
+ }
+}
+
+
+
+
+
+/***/ }),
+/* 18 */
/***/ (function(module, __webpack_exports__, __webpack_require__) {
"use strict";
@@ -12692,7 +15349,7 @@ __webpack_require__.r(__webpack_exports__);
/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "loadSpecialServerIps", function() { return loadSpecialServerIps; });
/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "prestigeSpecialServerIps", function() { return prestigeSpecialServerIps; });
/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "initSpecialServerIps", function() { return initSpecialServerIps; });
-/* harmony import */ var _utils_JSONReviver_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../utils/JSONReviver.js */ 8);
+/* harmony import */ var _utils_JSONReviver_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(9);
/* Holds IP of Special Servers */
@@ -12744,10 +15401,7 @@ function initSpecialServerIps() {
/***/ }),
-/* 18 */
-/*!*************************!*\
- !*** ./src/Terminal.js ***!
- \*************************/
+/* 19 */
/***/ (function(module, __webpack_exports__, __webpack_require__) {
"use strict";
@@ -12756,32 +15410,32 @@ __webpack_require__.r(__webpack_exports__);
/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "post", function() { return post; });
/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "Terminal", function() { return Terminal; });
/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "KEY", function() { return KEY; });
-/* harmony import */ var _Alias_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./Alias.js */ 30);
-/* harmony import */ var _Constants_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./Constants.js */ 3);
-/* harmony import */ var _CreateProgram_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./CreateProgram.js */ 14);
-/* harmony import */ var _DarkWeb_js__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./DarkWeb.js */ 35);
-/* harmony import */ var _engine_js__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ./engine.js */ 5);
-/* harmony import */ var _Fconf_js__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ./Fconf.js */ 33);
-/* harmony import */ var _HelpText_js__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! ./HelpText.js */ 71);
-/* harmony import */ var _InteractiveTutorial_js__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! ./InteractiveTutorial.js */ 25);
-/* harmony import */ var _Literature_js__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! ./Literature.js */ 53);
-/* harmony import */ var _Message_js__WEBPACK_IMPORTED_MODULE_9__ = __webpack_require__(/*! ./Message.js */ 29);
-/* harmony import */ var _NetscriptEvaluator_js__WEBPACK_IMPORTED_MODULE_10__ = __webpack_require__(/*! ./NetscriptEvaluator.js */ 6);
-/* harmony import */ var _NetscriptWorker_js__WEBPACK_IMPORTED_MODULE_11__ = __webpack_require__(/*! ./NetscriptWorker.js */ 21);
-/* harmony import */ var _Player_js__WEBPACK_IMPORTED_MODULE_12__ = __webpack_require__(/*! ./Player.js */ 0);
-/* harmony import */ var _RedPill_js__WEBPACK_IMPORTED_MODULE_13__ = __webpack_require__(/*! ./RedPill.js */ 45);
-/* harmony import */ var _Script_js__WEBPACK_IMPORTED_MODULE_14__ = __webpack_require__(/*! ./Script.js */ 26);
-/* harmony import */ var _Server_js__WEBPACK_IMPORTED_MODULE_15__ = __webpack_require__(/*! ./Server.js */ 10);
-/* harmony import */ var _Settings_js__WEBPACK_IMPORTED_MODULE_16__ = __webpack_require__(/*! ./Settings.js */ 23);
-/* harmony import */ var _SpecialServerIps_js__WEBPACK_IMPORTED_MODULE_17__ = __webpack_require__(/*! ./SpecialServerIps.js */ 17);
-/* harmony import */ var _TextFile_js__WEBPACK_IMPORTED_MODULE_18__ = __webpack_require__(/*! ./TextFile.js */ 43);
-/* harmony import */ var _utils_StringHelperFunctions_js__WEBPACK_IMPORTED_MODULE_19__ = __webpack_require__(/*! ../utils/StringHelperFunctions.js */ 2);
-/* harmony import */ var _utils_HelperFunctions_js__WEBPACK_IMPORTED_MODULE_20__ = __webpack_require__(/*! ../utils/HelperFunctions.js */ 1);
-/* harmony import */ var _utils_LogBox_js__WEBPACK_IMPORTED_MODULE_21__ = __webpack_require__(/*! ../utils/LogBox.js */ 51);
-/* harmony import */ var _utils_YesNoBox_js__WEBPACK_IMPORTED_MODULE_22__ = __webpack_require__(/*! ../utils/YesNoBox.js */ 12);
-/* harmony import */ var jszip__WEBPACK_IMPORTED_MODULE_23__ = __webpack_require__(/*! jszip */ 120);
+/* harmony import */ var _Alias_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(29);
+/* harmony import */ var _Constants_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(3);
+/* harmony import */ var _CreateProgram_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(13);
+/* harmony import */ var _DarkWeb_js__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(34);
+/* harmony import */ var _engine_js__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(5);
+/* harmony import */ var _Fconf_js__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(32);
+/* harmony import */ var _HelpText_js__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(69);
+/* harmony import */ var _InteractiveTutorial_js__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(24);
+/* harmony import */ var _Literature_js__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(52);
+/* harmony import */ var _Message_js__WEBPACK_IMPORTED_MODULE_9__ = __webpack_require__(28);
+/* harmony import */ var _NetscriptEvaluator_js__WEBPACK_IMPORTED_MODULE_10__ = __webpack_require__(6);
+/* harmony import */ var _NetscriptWorker_js__WEBPACK_IMPORTED_MODULE_11__ = __webpack_require__(20);
+/* harmony import */ var _Player_js__WEBPACK_IMPORTED_MODULE_12__ = __webpack_require__(0);
+/* harmony import */ var _RedPill_js__WEBPACK_IMPORTED_MODULE_13__ = __webpack_require__(38);
+/* harmony import */ var _Script_js__WEBPACK_IMPORTED_MODULE_14__ = __webpack_require__(25);
+/* harmony import */ var _Server_js__WEBPACK_IMPORTED_MODULE_15__ = __webpack_require__(8);
+/* harmony import */ var _Settings_js__WEBPACK_IMPORTED_MODULE_16__ = __webpack_require__(22);
+/* harmony import */ var _SpecialServerIps_js__WEBPACK_IMPORTED_MODULE_17__ = __webpack_require__(18);
+/* harmony import */ var _TextFile_js__WEBPACK_IMPORTED_MODULE_18__ = __webpack_require__(44);
+/* harmony import */ var _utils_StringHelperFunctions_js__WEBPACK_IMPORTED_MODULE_19__ = __webpack_require__(2);
+/* harmony import */ var _utils_HelperFunctions_js__WEBPACK_IMPORTED_MODULE_20__ = __webpack_require__(1);
+/* harmony import */ var _utils_LogBox_js__WEBPACK_IMPORTED_MODULE_21__ = __webpack_require__(50);
+/* harmony import */ var _utils_YesNoBox_js__WEBPACK_IMPORTED_MODULE_22__ = __webpack_require__(12);
+/* harmony import */ var jszip__WEBPACK_IMPORTED_MODULE_23__ = __webpack_require__(120);
/* harmony import */ var jszip__WEBPACK_IMPORTED_MODULE_23___default = /*#__PURE__*/__webpack_require__.n(jszip__WEBPACK_IMPORTED_MODULE_23__);
-/* harmony import */ var file_saver__WEBPACK_IMPORTED_MODULE_24__ = __webpack_require__(/*! file-saver */ 119);
+/* harmony import */ var file_saver__WEBPACK_IMPORTED_MODULE_24__ = __webpack_require__(119);
/* harmony import */ var file_saver__WEBPACK_IMPORTED_MODULE_24___default = /*#__PURE__*/__webpack_require__.n(file_saver__WEBPACK_IMPORTED_MODULE_24__);
@@ -14813,2968 +17467,10 @@ let Terminal = {
-/* WEBPACK VAR INJECTION */}.call(this, __webpack_require__(/*! jquery */ 39)))
-
-/***/ }),
-/* 19 */
-/*!******************************!*\
- !*** ./src/Augmentations.js ***!
- \******************************/
-/***/ (function(module, __webpack_exports__, __webpack_require__) {
-
-"use strict";
-__webpack_require__.r(__webpack_exports__);
-/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "AugmentationNames", function() { return AugmentationNames; });
-/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "Augmentations", function() { return Augmentations; });
-/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "PlayerOwnedAugmentation", function() { return PlayerOwnedAugmentation; });
-/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "installAugmentations", function() { return installAugmentations; });
-/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "initAugmentations", function() { return initAugmentations; });
-/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "applyAugmentation", function() { return applyAugmentation; });
-/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "augmentationExists", function() { return augmentationExists; });
-/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "Augmentation", function() { return Augmentation; });
-/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "displayAugmentationsContent", function() { return displayAugmentationsContent; });
-/* harmony import */ var _BitNode_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./BitNode.js */ 15);
-/* harmony import */ var _Constants_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./Constants.js */ 3);
-/* harmony import */ var _engine_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./engine.js */ 5);
-/* harmony import */ var _Faction_js__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./Faction.js */ 11);
-/* harmony import */ var _NetscriptFunctions_js__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ./NetscriptFunctions.js */ 31);
-/* harmony import */ var _NetscriptWorker_js__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ./NetscriptWorker.js */ 21);
-/* harmony import */ var _Player_js__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! ./Player.js */ 0);
-/* harmony import */ var _Prestige_js__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! ./Prestige.js */ 57);
-/* harmony import */ var _SaveObject_js__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! ./SaveObject.js */ 47);
-/* harmony import */ var _Script_js__WEBPACK_IMPORTED_MODULE_9__ = __webpack_require__(/*! ./Script.js */ 26);
-/* harmony import */ var _Server_js__WEBPACK_IMPORTED_MODULE_10__ = __webpack_require__(/*! ./Server.js */ 10);
-/* harmony import */ var _SourceFile_js__WEBPACK_IMPORTED_MODULE_11__ = __webpack_require__(/*! ./SourceFile.js */ 44);
-/* harmony import */ var _utils_DialogBox_js__WEBPACK_IMPORTED_MODULE_12__ = __webpack_require__(/*! ../utils/DialogBox.js */ 7);
-/* harmony import */ var _utils_HelperFunctions_js__WEBPACK_IMPORTED_MODULE_13__ = __webpack_require__(/*! ../utils/HelperFunctions.js */ 1);
-/* harmony import */ var _utils_JSONReviver_js__WEBPACK_IMPORTED_MODULE_14__ = __webpack_require__(/*! ../utils/JSONReviver.js */ 8);
-/* harmony import */ var _utils_StringHelperFunctions_js__WEBPACK_IMPORTED_MODULE_15__ = __webpack_require__(/*! ../utils/StringHelperFunctions.js */ 2);
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-//Augmentations
-function Augmentation(params) {
- if (params.name == null || params.info == null || params.moneyCost == null || params.repCost == null) {
- Object(_utils_DialogBox_js__WEBPACK_IMPORTED_MODULE_12__["dialogBoxCreate"])("ERROR Creating Augmentations. This is a bug please contact game dev");
- return;
- }
- this.name = params.name;
- this.info = params.info;
- this.owned = false;
- this.prereqs = params.prereqs ? params.prereqs : [];
-
- //Price and reputation base requirements (can change based on faction multipliers)
- this.baseRepRequirement = params.repCost * _Constants_js__WEBPACK_IMPORTED_MODULE_1__["CONSTANTS"].AugmentationRepMultiplier * _BitNode_js__WEBPACK_IMPORTED_MODULE_0__["BitNodeMultipliers"].AugmentationRepCost;
- this.baseCost = params.moneyCost * _Constants_js__WEBPACK_IMPORTED_MODULE_1__["CONSTANTS"].AugmentationCostMultiplier * _BitNode_js__WEBPACK_IMPORTED_MODULE_0__["BitNodeMultipliers"].AugmentationMoneyCost;
-
- //Level - Only applicable for some augmentations
- // NeuroFlux Governor
- this.level = 0;
-}
-
-//Takes in an array of faction names and adds this augmentation to all of those factions
-Augmentation.prototype.addToFactions = function(factionList) {
- for (var i = 0; i < factionList.length; ++i) {
- var faction = _Faction_js__WEBPACK_IMPORTED_MODULE_3__["Factions"][factionList[i]];
- if (faction == null) {
- throw new Error("In Augmentation.addToFactions(), could not find faction with this name:" + factionList[i]);
- continue;
- }
- faction.augmentations.push(this.name);
- }
-}
-
-Augmentation.prototype.addToAllFactions = function() {
- for (var fac in _Faction_js__WEBPACK_IMPORTED_MODULE_3__["Factions"]) {
- if (_Faction_js__WEBPACK_IMPORTED_MODULE_3__["Factions"].hasOwnProperty(fac)) {
- var facObj = _Faction_js__WEBPACK_IMPORTED_MODULE_3__["Factions"][fac];
- if (facObj == null) {
- console.log("ERROR: Invalid faction object");
- continue;
- }
- facObj.augmentations.push(this.name);
- }
- }
-}
-
-Augmentation.prototype.toJSON = function() {
- return Object(_utils_JSONReviver_js__WEBPACK_IMPORTED_MODULE_14__["Generic_toJSON"])("Augmentation", this);
-}
-
-Augmentation.fromJSON = function(value) {
- return Object(_utils_JSONReviver_js__WEBPACK_IMPORTED_MODULE_14__["Generic_fromJSON"])(Augmentation, value.data);
-}
-
-_utils_JSONReviver_js__WEBPACK_IMPORTED_MODULE_14__["Reviver"].constructors.Augmentation = Augmentation;
-
-let Augmentations = {}
-
-function AddToAugmentations(aug) {
- var name = aug.name;
- Augmentations[name] = aug;
-}
-
-let AugmentationNames = {
- Targeting1: "Augmented Targeting I",
- Targeting2: "Augmented Targeting II",
- Targeting3: "Augmented Targeting III",
- SyntheticHeart: "Synthetic Heart",
- SynfibrilMuscle: "Synfibril Muscle",
- CombatRib1: "Combat Rib I",
- CombatRib2: "Combat Rib II",
- CombatRib3: "Combat Rib III",
- NanofiberWeave: "Nanofiber Weave",
- SubdermalArmor: "NEMEAN Subdermal Weave",
- WiredReflexes: "Wired Reflexes",
- GrapheneBoneLacings: "Graphene Bone Lacings",
- BionicSpine: "Bionic Spine",
- GrapheneBionicSpine: "Graphene Bionic Spine Upgrade",
- BionicLegs: "Bionic Legs",
- GrapheneBionicLegs: "Graphene Bionic Legs Upgrade",
- SpeechProcessor: "Speech Processor Implant",
- TITN41Injection: "TITN-41 Gene-Modification Injection",
- EnhancedSocialInteractionImplant: "Enhanced Social Interaction Implant",
- BitWire: "BitWire",
- ArtificialBioNeuralNetwork: "Artificial Bio-neural Network Implant",
- ArtificialSynapticPotentiation: "Artificial Synaptic Potentiation",
- EnhancedMyelinSheathing: "Enhanced Myelin Sheathing",
- SynapticEnhancement: "Synaptic Enhancement Implant",
- NeuralRetentionEnhancement: "Neural-Retention Enhancement",
- DataJack: "DataJack",
- ENM: "Embedded Netburner Module",
- ENMCore: "Embedded Netburner Module Core Implant",
- ENMCoreV2: "Embedded Netburner Module Core V2 Upgrade",
- ENMCoreV3: "Embedded Netburner Module Core V3 Upgrade",
- ENMAnalyzeEngine: "Embedded Netburner Module Analyze Engine",
- ENMDMA: "Embedded Netburner Module Direct Memory Access Upgrade",
- Neuralstimulator: "Neuralstimulator",
- NeuralAccelerator: "Neural Accelerator",
- CranialSignalProcessorsG1: "Cranial Signal Processors - Gen I",
- CranialSignalProcessorsG2: "Cranial Signal Processors - Gen II",
- CranialSignalProcessorsG3: "Cranial Signal Processors - Gen III",
- CranialSignalProcessorsG4: "Cranial Signal Processors - Gen IV",
- CranialSignalProcessorsG5: "Cranial Signal Processors - Gen V",
- NeuronalDensification: "Neuronal Densification",
- NuoptimalInjectorImplant: "Nuoptimal Nootropic Injector Implant",
- SpeechEnhancement: "Speech Enhancement",
- FocusWire: "FocusWire",
- PCDNI: "PC Direct-Neural Interface",
- PCDNIOptimizer: "PC Direct-Neural Interface Optimization Submodule",
- PCDNINeuralNetwork: "PC Direct-Neural Interface NeuroNet Injector",
- ADRPheromone1: "ADR-V1 Pheromone Gene",
- ADRPheromone2: "ADR-V2 Pheromone Gene",
- HacknetNodeCPUUpload: "Hacknet Node CPU Architecture Neural-Upload",
- HacknetNodeCacheUpload: "Hacknet Node Cache Architecture Neural-Upload",
- HacknetNodeNICUpload: "Hacknet Node NIC Architecture Neural-Upload",
- HacknetNodeKernelDNI: "Hacknet Node Kernel Direct-Neural Interface",
- HacknetNodeCoreDNI: "Hacknet Node Core Direct-Neural Interface",
- NeuroFluxGovernor: "NeuroFlux Governor",
- Neurotrainer1: "Neurotrainer I",
- Neurotrainer2: "Neurotrainer II",
- Neurotrainer3: "Neurotrainer III",
- Hypersight: "HyperSight Corneal Implant",
- LuminCloaking1: "LuminCloaking-V1 Skin Implant",
- LuminCloaking2: "LuminCloaking-V2 Skin Implant",
- HemoRecirculator: "HemoRecirculator",
- SmartSonar: "SmartSonar Implant",
- PowerRecirculator: "Power Recirculation Core",
- QLink: "QLink",
- TheRedPill: "The Red Pill",
- SPTN97: "SPTN-97 Gene Modification",
- HiveMind: "ECorp HVMind Implant",
- CordiARCReactor: "CordiARC Fusion Reactor",
- SmartJaw: "SmartJaw",
- Neotra: "Neotra",
- Xanipher: "Xanipher",
- nextSENS: "nextSENS Gene Modification",
- OmniTekInfoLoad: "OmniTek InfoLoad",
- PhotosyntheticCells: "Photosynthetic Cells",
- Neurolink: "BitRunners Neurolink",
- TheBlackHand: "The Black Hand",
- CRTX42AA: "CRTX42-AA Gene Modification",
- Neuregen: "Neuregen Gene Modification",
- CashRoot: "CashRoot Starter Kit",
- NutriGen: "NutriGen Implant",
- INFRARet: "INFRARET Enhancement",
- DermaForce: "DermaForce Particle Barrier",
- GrapheneBrachiBlades: "Graphene BranchiBlades Upgrade",
- GrapheneBionicArms: "Graphene Bionic Arms Upgrade",
- BrachiBlades: "BrachiBlades",
- BionicArms: "Bionic Arms",
- SNA: "Social Negotiation Assistant (S.N.A)",
- EsperEyewear: "EsperTech Bladeburner Eyewear",
- EMS4Recombination: "EMS-4 Recombination",
- OrionShoulder: "ORION-MKIV Shoulder",
- HyperionV1: "Hyperion Plasma Cannon V1",
- HyperionV2: "Hyperion Plasma Cannon V2",
- GolemSerum: "GOLEM Serum",
- VangelisVirus: "Vangelis Virus",
- VangelisVirus3: "Vangelis Virus 3.0",
- INTERLINKED: "I.N.T.E.R.L.I.N.K.E.D",
- BladeRunner: "Blade's Runners",
- BladeArmor: "BLADE-51b Tesla Armor",
- BladeArmorPowerCells: "BLADE-51b Tesla Armor: Power Cells Upgrade",
- BladeArmorEnergyShielding: "BLADE-51b Tesla Armor: Energy Shielding Upgrade",
- BladeArmorUnibeam: "BLADE-51b Tesla Armor: Unibeam Upgrade",
- BladeArmorOmnibeam: "BLADE-51b Tesla Armor: Omnibeam Upgrade",
- BladeArmorIPU: "BLADE-51b Tesla Armor: IPU Upgrade",
-
- //Wasteland Augs
- //PepBoy: "P.E.P-Boy", Plasma Energy Projection System
- //PepBoyForceField Generates plasma force fields
- //PepBoyBlasts Generate high density plasma concussive blasts
- //PepBoyDataStorage STore more data on pep boy,
-}
-
-function initAugmentations() {
- for (var name in _Faction_js__WEBPACK_IMPORTED_MODULE_3__["Factions"]) {
- if (_Faction_js__WEBPACK_IMPORTED_MODULE_3__["Factions"].hasOwnProperty(name)) {
- _Faction_js__WEBPACK_IMPORTED_MODULE_3__["Factions"][name].augmentations = [];
- }
- }
-
- //Reset Augmentations
- Object(_utils_HelperFunctions_js__WEBPACK_IMPORTED_MODULE_13__["clearObject"])(Augmentations);
-
- //Combat stat augmentations
- var HemoRecirculator = new Augmentation({
- name:AugmentationNames.HemoRecirculator, moneyCost: 9e6, repCost:4e3,
- info:"A heart implant that greatly increases the body's ability to effectively use and pump " +
- "blood.
This augmentation increases all of the player's combat stats by 8%."
- });
- HemoRecirculator.addToFactions(["Tetrads", "The Dark Army", "The Syndicate"]);
- if (augmentationExists(AugmentationNames.HemoRecirculator)) {
- delete Augmentations[AugmentationNames.HemoRecirculator];
- }
- AddToAugmentations(HemoRecirculator);
-
- var Targeting1 = new Augmentation({
- name:AugmentationNames.Targeting1, moneyCost:3e6, repCost:2e3,
- info:"This cranial implant is embedded within the player's inner ear structure and optic nerves. It regulates and enhances the user's " +
- "balance and hand-eye coordination. It is also capable of augmenting reality by projecting digital information " +
- "directly onto the retina. These enhancements allow the player to better lock-on and keep track of enemies.
" +
- "This augmentation increases the player's dexterity by 10%."
- });
- Targeting1.addToFactions(["Slum Snakes", "The Dark Army", "The Syndicate", "Sector-12", "Volhaven", "Ishima",
- "OmniTek Incorporated", "KuaiGong International", "Blade Industries"]);
- if (augmentationExists(AugmentationNames.Targeting1)) {
- delete Augmentations[AugmentationNames.Targeting1];
- }
- AddToAugmentations(Targeting1);
-
- var Targeting2 = new Augmentation({
- name:AugmentationNames.Targeting2, moneyCost:8.5e6, repCost:3.5e3,
- info:"This is an upgrade of the Augmented Targeting I cranial implant, which is capable of augmenting reality " +
- "and enhances the user's balance and hand-eye coordination.
This upgrade increases the player's dexterity " +
- "by an additional 20%.",
- prereqs:[AugmentationNames.Targeting1]
- });
- Targeting2.addToFactions(["The Dark Army", "The Syndicate", "Sector-12", "Volhaven", "Ishima",
- "OmniTek Incorporated", "KuaiGong International", "Blade Industries"]);
- if (augmentationExists(AugmentationNames.Targeting2)) {
- delete Augmentations[AugmentationNames.Targeting2];
- }
- AddToAugmentations(Targeting2);
-
- var Targeting3 = new Augmentation({
- name:AugmentationNames.Targeting3, moneyCost:23e6, repCost:11e3,
- info:"This is an upgrade of the Augmented Targeting II cranial implant, which is capable of augmenting reality " +
- "and enhances the user's balance and hand-eye coordination.
This upgrade increases the player's dexterity " +
- "by an additional 30%.",
- prereqs:[AugmentationNames.Targeting2]
- });
- Targeting3.addToFactions(["The Dark Army", "The Syndicate", "OmniTek Incorporated",
- "KuaiGong International", "Blade Industries", "The Covenant"]);
- if (augmentationExists(AugmentationNames.Targeting3)) {
- delete Augmentations[AugmentationNames.Targeting3];
- }
- AddToAugmentations(Targeting3);
-
- var SyntheticHeart = new Augmentation({
- name:AugmentationNames.SyntheticHeart, moneyCost:575e6, repCost:300e3,
- info:"This advanced artificial heart, created from plasteel and graphene, is capable of pumping more blood " +
- "at much higher efficiencies than a normal human heart.
This augmentation increases the player's agility " +
- "and strength by 50%"
- });
- SyntheticHeart.addToFactions(["KuaiGong International", "Fulcrum Secret Technologies", "Speakers for the Dead",
- "NWO", "The Covenant", "Daedalus", "Illuminati"]);
- if (augmentationExists(AugmentationNames.SyntheticHeart)) {
- delete Augmentations[AugmentationNames.SyntheticHeart];
- }
- AddToAugmentations(SyntheticHeart);
-
- var SynfibrilMuscle = new Augmentation({
- name:AugmentationNames.SynfibrilMuscle, repCost:175e3, moneyCost:225e6,
- info:"The myofibrils in human muscles are injected with special chemicals that react with the proteins inside " +
- "the myofibrils, altering their underlying structure. The end result is muscles that are stronger and more elastic. " +
- "Scientists have named these artificially enhanced units 'synfibrils'.
This augmentation increases the player's " +
- "strength and defense by 30%."
- });
- SynfibrilMuscle.addToFactions(["KuaiGong International", "Fulcrum Secret Technologies", "Speakers for the Dead",
- "NWO", "The Covenant", "Daedalus", "Illuminati", "Blade Industries"]);
- if (augmentationExists(AugmentationNames.SynfibrilMuscle)) {
- delete Augmentations[AugmentationNames.SynfibrilMuscle];
- }
- AddToAugmentations(SynfibrilMuscle)
-
- var CombatRib1 = new Augmentation({
- name:AugmentationNames.CombatRib1, repCost:3e3, moneyCost:4750000,
- info:"The human body's ribs are replaced with artificial ribs that automatically and continuously release cognitive " +
- "and performance-enhancing drugs into the bloodstream, improving the user's abilities in combat.
" +
- "This augmentation increases the player's strength and defense by 10%."
- });
- CombatRib1.addToFactions(["Slum Snakes", "The Dark Army", "The Syndicate", "Sector-12", "Volhaven", "Ishima",
- "OmniTek Incorporated", "KuaiGong International", "Blade Industries"]);
- if (augmentationExists(AugmentationNames.CombatRib1)) {
- delete Augmentations[AugmentationNames.CombatRib1];
- }
- AddToAugmentations(CombatRib1);
-
- var CombatRib2 = new Augmentation({
- name:AugmentationNames.CombatRib2, repCost:7.5e3, moneyCost:13e6,
- info:"This is an upgrade to the Combat Rib I augmentation, and is capable of releasing even more potent combat-enhancing " +
- "drugs into the bloodstream.
This upgrade increases the player's strength and defense by an additional 14%.",
- prereqs:[AugmentationNames.CombatRib1]
- });
- CombatRib2.addToFactions(["The Dark Army", "The Syndicate", "Sector-12", "Volhaven", "Ishima",
- "OmniTek Incorporated", "KuaiGong International", "Blade Industries"]);
- if (augmentationExists(AugmentationNames.CombatRib2)) {
- delete Augmentations[AugmentationNames.CombatRib2];
- }
- AddToAugmentations(CombatRib2);
-
- var CombatRib3 = new Augmentation({
- name:AugmentationNames.CombatRib3, repCost:14e3, moneyCost:24e6,
- info:"This is an upgrade to the Combat Rib II augmentation, and is capable of releasing even more potent combat-enhancing " +
- "drugs into the bloodstream
. This upgrade increases the player's strength and defense by an additional 18%.",
- prereqs:[AugmentationNames.CombatRib2],
- });
- CombatRib3.addToFactions(["The Dark Army", "The Syndicate", "OmniTek Incorporated",
- "KuaiGong International", "Blade Industries", "The Covenant"]);
- if (augmentationExists(AugmentationNames.CombatRib3)) {
- delete Augmentations[AugmentationNames.CombatRib3];
- }
- AddToAugmentations(CombatRib3);
-
- var NanofiberWeave = new Augmentation({
- name:AugmentationNames.NanofiberWeave, repCost:15e3, moneyCost:25e6,
- info:"Synthetic nanofibers are woven into the skin's extracellular matrix using electrospinning. " +
- "This improves the skin's ability to regenerate itself and protect the body from external stresses and forces.
" +
- "This augmentation increases the player's strength and defense by 20%."
- });
- NanofiberWeave.addToFactions(["Tian Di Hui", "The Syndicate", "The Dark Army", "Speakers for the Dead",
- "Blade Industries", "Fulcrum Secret Technologies", "OmniTek Incorporated"]);
- if (augmentationExists(AugmentationNames.NanofiberWeave)) {
- delete Augmentations[AugmentationNames.NanofiberWeave];
- }
- AddToAugmentations(NanofiberWeave);
-
- var SubdermalArmor = new Augmentation({
- name:AugmentationNames.SubdermalArmor, repCost:350e3, moneyCost:650e6,
- info:"The NEMEAN Subdermal Weave is a thin, light-weight, graphene plating that houses a dilatant fluid. " +
- "The material is implanted underneath the skin, and is the most advanced form of defensive enhancement " +
- "that has ever been created. The dilatant fluid, despite being thin and light, is extremely effective " +
- "at stopping piercing blows and reducing blunt trauma. The properties of graphene allow the plating to " +
- "mitigate damage from any fire-related or electrical traumas.
" +
- "This augmentation increases the player's defense by 120%."
- });
- SubdermalArmor.addToFactions(["The Syndicate", "Fulcrum Secret Technologies", "Illuminati", "Daedalus",
- "The Covenant"]);
- if (augmentationExists(AugmentationNames.SubdermalArmor)) {
- delete Augmentations[AugmentationNames.SubdermalArmor];
- }
- AddToAugmentations(SubdermalArmor);
-
- var WiredReflexes = new Augmentation({
- name:AugmentationNames.WiredReflexes, repCost:500, moneyCost:500e3,
- info:"Synthetic nerve-enhancements are injected into all major parts of the somatic nervous system, " +
- "supercharging the body's ability to send signals through neurons. This results in increased reflex speed.
" +
- "This augmentation increases the player's agility and dexterity by 5%."
- });
- WiredReflexes.addToFactions(["Tian Di Hui", "Slum Snakes", "Sector-12", "Volhaven", "Aevum", "Ishima",
- "The Syndicate", "The Dark Army", "Speakers for the Dead"]);
- if (augmentationExists(AugmentationNames.WiredReflexes)) {
- delete Augmentations[AugmentationNames.WiredReflexes];
- }
- AddToAugmentations(WiredReflexes);
-
- var GrapheneBoneLacings = new Augmentation({
- name:AugmentationNames.GrapheneBoneLacings, repCost:450e3, moneyCost:850e6,
- info:"A graphene-based material is grafted and fused into the user's bones, significantly increasing " +
- "their density and tensile strength.
" +
- "This augmentation increases the player's strength and defense by 70%."
- });
- GrapheneBoneLacings.addToFactions(["Fulcrum Secret Technologies", "The Covenant"]);
- if (augmentationExists(AugmentationNames.GrapheneBoneLacings)) {
- delete Augmentations[AugmentationNames.GrapheneBoneLacings];
- }
- AddToAugmentations(GrapheneBoneLacings);
-
- var BionicSpine = new Augmentation({
- name:AugmentationNames.BionicSpine, repCost:18e3, moneyCost:25e6,
- info:"An artificial spine created from plasteel and carbon fibers that completely replaces the organic spine. " +
- "Not only is the Bionic Spine physically stronger than a human spine, but it is also capable of digitally " +
- "stimulating and regulating the neural signals that are sent and received by the spinal cord. This results in " +
- "greatly improved senses and reaction speeds.
" +
- "This augmentation increases all of the player's combat stats by 15%."
- });
- BionicSpine.addToFactions(["Speakers for the Dead", "The Syndicate", "KuaiGong International",
- "OmniTek Incorporated", "Blade Industries"]);
- if (augmentationExists(AugmentationNames.BionicSpine)) {
- delete Augmentations[AugmentationNames.BionicSpine];
- }
- AddToAugmentations(BionicSpine);
-
- var GrapheneBionicSpine = new Augmentation({
- name:AugmentationNames.GrapheneBionicSpine, repCost:650e3, moneyCost:1200e6,
- info:"An upgrade to the Bionic Spine augmentation. It fuses the implant with an advanced graphene " +
- "material to make it much stronger and lighter.
" +
- "This augmentation increases all of the player's combat stats by 60%.",
- prereqs:[AugmentationNames.BionicSpine],
- });
- GrapheneBionicSpine.addToFactions(["Fulcrum Secret Technologies", "ECorp"]);
- if (augmentationExists(AugmentationNames.GrapheneBionicSpine)) {
- delete Augmentations[AugmentationNames.GrapheneBionicSpine];
- }
- AddToAugmentations(GrapheneBionicSpine);
-
- var BionicLegs = new Augmentation({
- name:AugmentationNames.BionicLegs, repCost:60e3, moneyCost:75e6,
- info:"Cybernetic legs created from plasteel and carbon fibers that completely replace the user's organic legs.
" +
- "This augmentation increases the player's agility by 60%."
- });
- BionicLegs.addToFactions(["Speakers for the Dead", "The Syndicate", "KuaiGong International",
- "OmniTek Incorporated", "Blade Industries"]);
- if (augmentationExists(AugmentationNames.BionicLegs)) {
- delete Augmentations[AugmentationNames.BionicLegs];
- }
- AddToAugmentations(BionicLegs);
-
- var GrapheneBionicLegs = new Augmentation({
- name:AugmentationNames.GrapheneBionicLegs, repCost:300e3, moneyCost:900e6,
- info:"An upgrade to the Bionic Legs augmentation. It fuses the implant with an advanced graphene " +
- "material to make it much stronger and lighter.
" +
- "This augmentation increases the player's agility by an additional 150%.",
- prereqs:[AugmentationNames.BionicLegs],
- });
- GrapheneBionicLegs.addToFactions(["MegaCorp", "ECorp", "Fulcrum Secret Technologies"]);
- if (augmentationExists(AugmentationNames.GrapheneBionicLegs)) {
- delete Augmentations[AugmentationNames.GrapheneBionicLegs];
- }
- AddToAugmentations(GrapheneBionicLegs);
-
- //Labor stat augmentations
- var SpeechProcessor = new Augmentation({
- name:AugmentationNames.SpeechProcessor, repCost:3e3, moneyCost:10e6,
- info:"A cochlear implant with an embedded computer that analyzes incoming speech. " +
- "The embedded computer processes characteristics of incoming speech, such as tone " +
- "and inflection, to pick up on subtle cues and aid in social interactions.
" +
- "This augmentation increases the player's charisma by 20%."
- });
- SpeechProcessor.addToFactions(["Tian Di Hui", "Chongqing", "Sector-12", "New Tokyo", "Aevum",
- "Ishima", "Volhaven", "Silhouette"]);
- if (augmentationExists(AugmentationNames.SpeechProcessor)) {
- delete Augmentations[AugmentationNames.SpeechProcessor];
- }
- AddToAugmentations(SpeechProcessor);
-
- let TITN41Injection = new Augmentation({
- name:AugmentationNames.TITN41Injection, repCost:10e3, moneyCost:38e6,
- info:"TITN is a series of viruses that targets and alters the sequences of human DNA in genes that " +
- "control personality. The TITN-41 strain alters these genes so that the subject becomes more " +
- "outgoing and socialable.
" +
- "This augmentation increases the player's charisma and charisma experience gain rate by 15%"
- });
- TITN41Injection.addToFactions(["Silhouette"]);
- if (augmentationExists(AugmentationNames.TITN41Injection)) {
- delete Augmentations[AugmentationNames.TITN41Injection];
- }
- AddToAugmentations(TITN41Injection);
-
- var EnhancedSocialInteractionImplant = new Augmentation({
- name:AugmentationNames.EnhancedSocialInteractionImplant, repCost:150e3, moneyCost:275e6,
- info:"A cranial implant that greatly assists in the user's ability to analyze social situations " +
- "and interactions. The system uses a wide variety of factors such as facial expression, body " +
- "language, and the voice's tone/inflection to determine the best course of action during social" +
- "situations. The implant also uses deep learning software to continuously learn new behavior" +
- "patterns and how to best respond.
" +
- "This augmentation increases the player's charisma and charisma experience gain rate by 60%."
- });
- EnhancedSocialInteractionImplant.addToFactions(["Bachman & Associates", "NWO", "Clarke Incorporated",
- "OmniTek Incorporated", "Four Sigma"]);
- if (augmentationExists(AugmentationNames.EnhancedSocialInteractionImplant)) {
- delete Augmentations[AugmentationNames.EnhancedSocialInteractionImplant];
- }
- AddToAugmentations(EnhancedSocialInteractionImplant);
-
- //Hacking augmentations
- var BitWire = new Augmentation({
- name:AugmentationNames.BitWire, repCost:1500, moneyCost:2e6,
- info: "A small brain implant embedded in the cerebrum. This regulates and improves the brain's computing " +
- "capabilities.
This augmentation increases the player's hacking skill by 5%"
- });
- BitWire.addToFactions(["CyberSec", "NiteSec"]);
- if (augmentationExists(AugmentationNames.BitWire)) {
- delete Augmentations[AugmentationNames.BitWire];
- }
- AddToAugmentations(BitWire);
-
- var ArtificialBioNeuralNetwork = new Augmentation({
- name:AugmentationNames.ArtificialBioNeuralNetwork, repCost:110e3, moneyCost:600e6,
- info:"A network consisting of millions of nanoprocessors is embedded into the brain. " +
- "The network is meant to mimick the way a biological brain solves a problem, which each " +
- "nanoprocessor acting similar to the way a neuron would in a neural network. However, these " +
- "nanoprocessors are programmed to perform computations much faster than organic neurons, " +
- "allowing its user to solve much more complex problems at a much faster rate.
" +
- "This augmentation:
" +
- "Increases the player's hacking speed by 3%
" +
- "Increases the amount of money the player's gains from hacking by 15%
" +
- "Increases the player's hacking skill by 12%"
- });
- ArtificialBioNeuralNetwork.addToFactions(["BitRunners", "Fulcrum Secret Technologies"]);
- if (augmentationExists(AugmentationNames.ArtificialBioNeuralNetwork)) {
- delete Augmentations[AugmentationNames.ArtificialBioNeuralNetwork];
- }
- AddToAugmentations(ArtificialBioNeuralNetwork);
-
- var ArtificialSynapticPotentiation = new Augmentation({
- name:AugmentationNames.ArtificialSynapticPotentiation, repCost:2500, moneyCost:16e6,
- info:"The body is injected with a chemical that artificially induces synaptic potentiation, " +
- "otherwise known as the strengthening of synapses. This results in a enhanced cognitive abilities.
" +
- "This augmentation:
" +
- "Increases the player's hacking speed by 2%
" +
- "Increases the player's hacking chance by 5%
" +
- "Increases the player's hacking experience gain rate by 5%"
- });
- ArtificialSynapticPotentiation.addToFactions(["The Black Hand", "NiteSec"]);
- if (augmentationExists(AugmentationNames.ArtificialSynapticPotentiation)) {
- delete Augmentations[AugmentationNames.ArtificialSynapticPotentiation];
- }
- AddToAugmentations(ArtificialSynapticPotentiation);
-
- var EnhancedMyelinSheathing = new Augmentation({
- name:AugmentationNames.EnhancedMyelinSheathing, repCost:40e3, moneyCost:275e6,
- info:"Electrical signals are used to induce a new, artificial form of myelinogensis in the human body. " +
- "This process results in the proliferation of new, synthetic myelin sheaths in the nervous " +
- "system. These myelin sheaths can propogate neuro-signals much faster than their organic " +
- "counterparts, leading to greater processing speeds and better brain function.
" +
- "This augmentation:
" +
- "Increases the player's hacking speed by 3%
" +
- "Increases the player's hacking skill by 8%
" +
- "Increases the player's hacking experience gain rate by 10%"
- });
- EnhancedMyelinSheathing.addToFactions(["Fulcrum Secret Technologies", "BitRunners", "The Black Hand"]);
- if (augmentationExists(AugmentationNames.EnhancedMyelinSheathing)) {
- delete Augmentations[AugmentationNames.EnhancedMyelinSheathing];
- }
- AddToAugmentations(EnhancedMyelinSheathing);
-
- var SynapticEnhancement = new Augmentation({
- name:AugmentationNames.SynapticEnhancement, repCost:800, moneyCost:1.5e6,
- info:"A small cranial implant that continuously uses weak electric signals to stimulate the brain and " +
- "induce stronger synaptic activity. This improves the user's cognitive abilities.
" +
- "This augmentation increases the player's hacking speed by 3%."
- });
- SynapticEnhancement.addToFactions(["CyberSec"]);
- if (augmentationExists(AugmentationNames.SynapticEnhancement)) {
- delete Augmentations[AugmentationNames.SynapticEnhancement];
- }
- AddToAugmentations(SynapticEnhancement);
-
- var NeuralRetentionEnhancement = new Augmentation({
- name:AugmentationNames.NeuralRetentionEnhancement, repCost:8e3, moneyCost:50e6,
- info:"Chemical injections are used to permanently alter and strengthen the brain's neuronal " +
- "circuits, strengthening its ability to retain information.
" +
- "This augmentation increases the player's hacking experience gain rate by 25%."
- });
- NeuralRetentionEnhancement.addToFactions(["NiteSec"]);
- if (augmentationExists(AugmentationNames.NeuralRetentionEnhancement)) {
- delete Augmentations[AugmentationNames.NeuralRetentionEnhancement];
- }
- AddToAugmentations(NeuralRetentionEnhancement);
-
- var DataJack = new Augmentation({
- name:AugmentationNames.DataJack, repCost:45e3, moneyCost:90e6,
- info:"A brain implant that provides an interface for direct, wireless communication between a computer's main " +
- "memory and the mind. This implant allows the user to not only access a computer's memory, but also alter " +
- "and delete it.
" +
- "This augmentation increases the amount of money the player gains from hacking by 25%"
- });
- DataJack.addToFactions(["BitRunners", "The Black Hand", "NiteSec", "Chongqing", "New Tokyo"]);
- if (augmentationExists(AugmentationNames.DataJack)) {
- delete Augmentations[AugmentationNames.DataJack];
- }
- AddToAugmentations(DataJack);
-
- var ENM = new Augmentation({
- name:AugmentationNames.ENM, repCost:6e3, moneyCost:50e6,
- info:"A thin device embedded inside the arm containing a wireless module capable of connecting " +
- "to nearby networks. Once connected, the Netburner Module is capable of capturing and " +
- "processing all of the traffic on that network. By itself, the Embedded Netburner Module does " +
- "not do much, but a variety of very powerful upgrades can be installed that allow you to fully " +
- "control the traffic on a network.
" +
- "This augmentation increases the player's hacking skill by 8%"
- });
- ENM.addToFactions(["BitRunners", "The Black Hand", "NiteSec", "ECorp", "MegaCorp",
- "Fulcrum Secret Technologies", "NWO", "Blade Industries"]);
- if (augmentationExists(AugmentationNames.ENM)) {
- delete Augmentations[AugmentationNames.ENM];
- }
- AddToAugmentations(ENM);
-
- var ENMCore = new Augmentation({
- name:AugmentationNames.ENMCore, repCost:100e3, moneyCost:500e6,
- info:"The Core library is an implant that upgrades the firmware of the Embedded Netburner Module. " +
- "This upgrade allows the Embedded Netburner Module to generate its own data on a network.
" +
- "This augmentation:
" +
- "Increases the player's hacking speed by 3%
" +
- "Increases the amount of money the player gains from hacking by 10%
" +
- "Increases the player's chance of successfully performing a hack by 3%
" +
- "Increases the player's hacking experience gain rate by 7%
" +
- "Increases the player's hacking skill by 7%",
- prereqs:[AugmentationNames.ENM]
- });
- ENMCore.addToFactions(["BitRunners", "The Black Hand", "ECorp", "MegaCorp",
- "Fulcrum Secret Technologies", "NWO", "Blade Industries"]);
- if (augmentationExists(AugmentationNames.ENMCore)) {
- delete Augmentations[AugmentationNames.ENMCore];
- }
- AddToAugmentations(ENMCore);
-
- var ENMCoreV2 = new Augmentation({
- name:AugmentationNames.ENMCoreV2, repCost:400e3, moneyCost:900e6,
- info:"The Core V2 library is an implant that upgrades the firmware of the Embedded Netburner Module. " +
- "This upgraded firmware allows the Embedded Netburner Module to control the information on " +
- "a network by re-routing traffic, spoofing IP addresses, or altering the data inside network " +
- "packets.
" +
- "This augmentation:
" +
- "Increases the player's hacking speed by 5%
" +
- "Increases the amount of money the player gains from hacking by 30%
" +
- "Increases the player's chance of successfully performing a hack by 5%
" +
- "Increases the player's hacking experience gain rate by 15%
" +
- "Increases the player's hacking skill by 8%",
- prereqs:[AugmentationNames.ENMCore]
- });
- ENMCoreV2.addToFactions(["BitRunners", "ECorp", "MegaCorp", "Fulcrum Secret Technologies", "NWO",
- "Blade Industries", "OmniTek Incorporated", "KuaiGong International"]);
- if (augmentationExists(AugmentationNames.ENMCoreV2)) {
- delete Augmentations[AugmentationNames.ENMCoreV2];
- }
- AddToAugmentations(ENMCoreV2);
-
- var ENMCoreV3 = new Augmentation({
- name:AugmentationNames.ENMCoreV3, repCost:700e3, moneyCost:1500e6,
- info:"The Core V3 library is an implant that upgrades the firmware of the Embedded Netburner Module. " +
- "This upgraded firmware allows the Embedded Netburner Module to seamlessly inject code into " +
- "any device on a network.
" +
- "This augmentation:
" +
- "Increases the player's hacking speed by 5%
" +
- "Increases the amount of money the player gains from hacking by 40%
" +
- "Increases the player's chance of successfully performing a hack by 10%
" +
- "Increases the player's hacking experience gain rate by 25%
" +
- "Increases the player's hacking skill by 10%",
- prereqs:[AugmentationNames.ENMCoreV2],
- });
- ENMCoreV3.addToFactions(["ECorp", "MegaCorp", "Fulcrum Secret Technologies", "NWO",
- "Daedalus", "The Covenant", "Illuminati"]);
- if (augmentationExists(AugmentationNames.ENMCoreV3)) {
- delete Augmentations[AugmentationNames.ENMCoreV3];
- }
- AddToAugmentations(ENMCoreV3);
-
- var ENMAnalyzeEngine = new Augmentation({
- name:AugmentationNames.ENMAnalyzeEngine, repCost:250e3, moneyCost:1200e6,
- info:"Installs the Analyze Engine for the Embedded Netburner Module, which is a CPU cluster " +
- "that vastly outperforms the Netburner Module's native single-core processor.
" +
- "This augmentation increases the player's hacking speed by 10%.",
- prereqs:[AugmentationNames.ENM],
- });
- ENMAnalyzeEngine.addToFactions(["ECorp", "MegaCorp", "Fulcrum Secret Technologies", "NWO",
- "Daedalus", "The Covenant", "Illuminati"]);
- if (augmentationExists(AugmentationNames.ENMAnalyzeEngine)) {
- delete Augmentations[AugmentationNames.ENMAnalyzeEngine];
- }
- AddToAugmentations(ENMAnalyzeEngine);
-
- var ENMDMA = new Augmentation({
- name:AugmentationNames.ENMDMA, repCost:400e3, moneyCost:1400e6,
- info:"This implant installs a Direct Memory Access (DMA) controller into the " +
- "Embedded Netburner Module. This allows the Module to send and receive data " +
- "directly to and from the main memory of devices on a network.
" +
- "This augmentation:
" +
- "Increases the amount of money the player gains from hacking by 40%
" +
- "Increases the player's chance of successfully performing a hack by 20%",
- prereqs:[AugmentationNames.ENM],
- });
- ENMDMA.addToFactions(["ECorp", "MegaCorp", "Fulcrum Secret Technologies", "NWO",
- "Daedalus", "The Covenant", "Illuminati"]);
- if (augmentationExists(AugmentationNames.ENMDMA)) {
- delete Augmentations[AugmentationNames.ENMDMA];
- }
- AddToAugmentations(ENMDMA);
-
- var Neuralstimulator = new Augmentation({
- name:AugmentationNames.Neuralstimulator, repCost:20e3, moneyCost:600e6,
- info:"A cranial implant that intelligently stimulates certain areas of the brain " +
- "in order to improve cognitive functions
" +
- "This augmentation:
" +
- "Increases the player's hacking speed by 2%
" +
- "Increases the player's chance of successfully performing a hack by 10%
" +
- "Increases the player's hacking experience gain rate by 12%"
- });
- Neuralstimulator.addToFactions(["The Black Hand", "Chongqing", "Sector-12", "New Tokyo", "Aevum",
- "Ishima", "Volhaven", "Bachman & Associates", "Clarke Incorporated",
- "Four Sigma"]);
- if (augmentationExists(AugmentationNames.Neuralstimulator)) {
- delete Augmentations[AugmentationNames.Neuralstimulator];
- }
- AddToAugmentations(Neuralstimulator);
-
- var NeuralAccelerator = new Augmentation({
- name:AugmentationNames.NeuralAccelerator, repCost:80e3, moneyCost:350e6,
- info:"A microprocessor that accelerates the processing " +
- "speed of biological neural networks. This is a cranial implant that is embedded inside the brain.
" +
- "This augmentation:
" +
- "Increases the player's hacking skill by 10%
" +
- "Increases the player's hacking experience gain rate by 15%
" +
- "Increases the amount of money the player gains from hacking by 20%"
- });
- NeuralAccelerator.addToFactions(["BitRunners"]);
- if (augmentationExists(AugmentationNames.NeuralAccelerator)) {
- delete Augmentations[AugmentationNames.NeuralAccelerator];
- }
- AddToAugmentations(NeuralAccelerator);
-
- var CranialSignalProcessorsG1 = new Augmentation({
- name:AugmentationNames.CranialSignalProcessorsG1, repCost:4e3, moneyCost:14e6,
- info:"The first generation of Cranial Signal Processors. Cranial Signal Processors " +
- "are a set of specialized microprocessors that are attached to " +
- "neurons in the brain. These chips process neural signals to quickly and automatically perform specific computations " +
- "so that the brain doesn't have to.
" +
- "This augmentation:
" +
- "Increases the player's hacking speed by 1%
" +
- "Increases the player's hacking skill by 5%"
- });
- CranialSignalProcessorsG1.addToFactions(["CyberSec"]);
- if (augmentationExists(AugmentationNames.CranialSignalProcessorsG1)) {
- delete Augmentations[AugmentationNames.CranialSignalProcessorsG1];
- }
- AddToAugmentations(CranialSignalProcessorsG1);
-
- var CranialSignalProcessorsG2 = new Augmentation({
- name:AugmentationNames.CranialSignalProcessorsG2, repCost:7500, moneyCost:25e6,
- info:"The second generation of Cranial Signal Processors. Cranial Signal Processors " +
- "are a set of specialized microprocessors that are attached to " +
- "neurons in the brain. These chips process neural signals to quickly and automatically perform specific computations " +
- "so that the brain doesn't have to.
" +
- "This augmentation:
" +
- "Increases the player's hacking speed by 2%
" +
- "Increases the player's chance of successfully performing a hack by 5%
" +
- "Increases the player's hacking skill by 7%"
- });
- CranialSignalProcessorsG2.addToFactions(["NiteSec"]);
- if (augmentationExists(AugmentationNames.CranialSignalProcessorsG2)) {
- delete Augmentations[AugmentationNames.CranialSignalProcessorsG2];
- }
- AddToAugmentations(CranialSignalProcessorsG2);
-
- var CranialSignalProcessorsG3 = new Augmentation({
- name:AugmentationNames.CranialSignalProcessorsG3, repCost:20e3, moneyCost:110e6,
- info:"The third generation of Cranial Signal Processors. Cranial Signal Processors " +
- "are a set of specialized microprocessors that are attached to " +
- "neurons in the brain. These chips process neural signals to quickly and automatically perform specific computations " +
- "so that the brain doesn't have to.
" +
- "This augmentation:
" +
- "Increases the player's hacking speed by 2%
" +
- "Increases the amount of money the player gains from hacking by 15%
" +
- "Increases the player's hacking skill by 9%"
- });
- CranialSignalProcessorsG3.addToFactions(["NiteSec", "The Black Hand"]);
- if (augmentationExists(AugmentationNames.CranialSignalProcessorsG3)) {
- delete Augmentations[AugmentationNames.CranialSignalProcessorsG3];
- }
- AddToAugmentations(CranialSignalProcessorsG3);
-
- var CranialSignalProcessorsG4 = new Augmentation({
- name:AugmentationNames.CranialSignalProcessorsG4, repCost:50e3, moneyCost:220e6,
- info:"The fourth generation of Cranial Signal Processors. Cranial Signal Processors " +
- "are a set of specialized microprocessors that are attached to " +
- "neurons in the brain. These chips process neural signals to quickly and automatically perform specific computations " +
- "so that the brain doesn't have to.
" +
- "This augmentation:
" +
- "Increases the player's hacking speed by 2%
" +
- "Increases the amount of money the player gains from hacking by 20%
" +
- "Increases the amount of money the player can inject into servers using grow() by 25%"
- });
- CranialSignalProcessorsG4.addToFactions(["The Black Hand"]);
- if (augmentationExists(AugmentationNames.CranialSignalProcessorsG4)) {
- delete Augmentations[AugmentationNames.CranialSignalProcessorsG4];
- }
- AddToAugmentations(CranialSignalProcessorsG4);
-
- var CranialSignalProcessorsG5 = new Augmentation({
- name:AugmentationNames.CranialSignalProcessorsG5, repCost:100e3, moneyCost:450e6,
- info:"The fifth generation of Cranial Signal Processors. Cranial Signal Processors " +
- "are a set of specialized microprocessors that are attached to " +
- "neurons in the brain. These chips process neural signals to quickly and automatically perform specific computations " +
- "so that the brain doesn't have to.
" +
- "This augmentation:
" +
- "Increases the player's hacking skill by 30%
" +
- "Increases the amount of money the player gains from hacking by 25%
" +
- "Increases the amount of money the player can inject into servers using grow() by 75%"
- });
- CranialSignalProcessorsG5.addToFactions(["BitRunners"]);
- if (augmentationExists(AugmentationNames.CranialSignalProcessorsG5)) {
- delete Augmentations[AugmentationNames.CranialSignalProcessorsG5];
- }
- AddToAugmentations(CranialSignalProcessorsG5);
-
- var NeuronalDensification = new Augmentation({
- name:AugmentationNames.NeuronalDensification, repCost:75e3, moneyCost:275e6,
- info:"The brain is surgically re-engineered to have increased neuronal density " +
- "by decreasing the neuron gap junction. Then, the body is genetically modified " +
- "to enhance the production and capabilities of its neural stem cells.
" +
- "This augmentation:
" +
- "Increases the player's hacking skill by 15%
" +
- "Increases the player's hacking experience gain rate by 10%
"+
- "Increases the player's hacking speed by 3%"
- });
- NeuronalDensification.addToFactions(["Clarke Incorporated"]);
- if (augmentationExists(AugmentationNames.NeuronalDensification)) {
- delete Augmentations[AugmentationNames.NeuronalDensification];
- }
- AddToAugmentations(NeuronalDensification);
-
- //Work Augmentations
- var NuoptimalInjectorImplant = new Augmentation({
- name:AugmentationNames.NuoptimalInjectorImplant, repCost:2e3, moneyCost:4e6,
- info:"This torso implant automatically injects nootropic supplements into " +
- "the bloodstream to improve memory, increase focus, and provide other " +
- "cognitive enhancements.
" +
- "This augmentation increases the amount of reputation the player gains " +
- "when working for a company by 20%."
- });
- NuoptimalInjectorImplant.addToFactions(["Tian Di Hui", "Volhaven", "New Tokyo", "Chongqing", "Ishima",
- "Clarke Incorporated", "Four Sigma", "Bachman & Associates"]);
- if (augmentationExists(AugmentationNames.NuoptimalInjectorImplant)) {
- delete Augmentations[AugmentationNames.NuoptimalInjectorImplant];
- }
- AddToAugmentations(NuoptimalInjectorImplant);
-
- var SpeechEnhancement = new Augmentation({
- name:AugmentationNames.SpeechEnhancement, repCost:1e3, moneyCost:2.5e6,
- info:"An advanced neural implant that improves your speaking abilities, making " +
- "you more convincing and likable in conversations and overall improving your " +
- "social interactions.
" +
- "This augmentation:
" +
- "Increases the player's charisma by 10%
" +
- "Increases the amount of reputation the player gains when working for a company by 10%"
- });
- SpeechEnhancement.addToFactions(["Tian Di Hui", "Speakers for the Dead", "Four Sigma", "KuaiGong International",
- "Clarke Incorporated", "Four Sigma", "Bachman & Associates"]);
- if (augmentationExists(AugmentationNames.SpeechEnhancement)) {
- delete Augmentations[AugmentationNames.SpeechEnhancement];
- }
- AddToAugmentations(SpeechEnhancement);
-
- var FocusWire = new Augmentation({
- name:AugmentationNames.FocusWire, repCost:30e3, moneyCost:180e6,
- info:"A cranial implant that stops procrastination by blocking specific neural pathways " +
- "in the brain.
" +
- "This augmentation:
" +
- "Increases all experience gains by 5%
" +
- "Increases the amount of money the player gains from working by 20%
" +
- "Increases the amount of reputation the player gains when working for a company by 10%"
- });
- FocusWire.addToFactions(["Bachman & Associates", "Clarke Incorporated", "Four Sigma", "KuaiGong International"]);
- if (augmentationExists(AugmentationNames.FocusWire)) {
- delete Augmentations[AugmentationNames.FocusWire];
- }
- AddToAugmentations(FocusWire)
-
- var PCDNI = new Augmentation({
- name:AugmentationNames.PCDNI, repCost:150e3, moneyCost:750e6,
- info:"Installs a Direct-Neural Interface jack into your arm that is compatible with most " +
- "computers. Connecting to a computer through this jack allows you to interface with " +
- "it using the brain's electrochemical signals.
" +
- "This augmentation:
" +
- "Increases the amount of reputation the player gains when working for a company by 30%
" +
- "Increases the player's hacking skill by 8%"
- });
- PCDNI.addToFactions(["Four Sigma", "OmniTek Incorporated", "ECorp", "Blade Industries"]);
- if (augmentationExists(AugmentationNames.PCDNI)) {
- delete Augmentations[AugmentationNames.PCDNI];
- }
- AddToAugmentations(PCDNI);
-
- var PCDNIOptimizer = new Augmentation({
- name:AugmentationNames.PCDNIOptimizer, repCost:200e3, moneyCost:900e6,
- info:"This is a submodule upgrade to the PC Direct-Neural Interface augmentation. It " +
- "improves the performance of the interface and gives the user more control options " +
- "to the connected computer.
" +
- "This augmentation:
" +
- "Increases the amount of reputation the player gains when working for a company by 75%
" +
- "Increases the player's hacking skill by 10%",
- prereqs:[AugmentationNames.PCDNI],
- });
- PCDNIOptimizer.addToFactions(["Fulcrum Secret Technologies", "ECorp", "Blade Industries"]);
- if (augmentationExists(AugmentationNames.PCDNIOptimizer)) {
- delete Augmentations[AugmentationNames.PCDNIOptimizer];
- }
- AddToAugmentations(PCDNIOptimizer);
-
- var PCDNINeuralNetwork = new Augmentation({
- name:AugmentationNames.PCDNINeuralNetwork, repCost:600e3, moneyCost:1500e6,
- info:"This is an additional installation that upgrades the functionality of the " +
- "PC Direct-Neural Interface augmentation. When connected to a computer, " +
- "The NeuroNet Injector upgrade allows the user to use his/her own brain's " +
- "processing power to aid the computer in computational tasks.
" +
- "This augmentation:
" +
- "Increases the amount of reputation the player gains when working for a company by 100%
" +
- "Increases the player's hacking skill by 10%
" +
- "Increases the player's hacking speed by 5%",
- prereqs:[AugmentationNames.PCDNI],
- });
- PCDNINeuralNetwork.addToFactions(["Fulcrum Secret Technologies"]);
- if (augmentationExists(AugmentationNames.PCDNINeuralNetwork)) {
- delete Augmentations[AugmentationNames.PCDNINeuralNetwork];
- }
- AddToAugmentations(PCDNINeuralNetwork);
-
- var ADRPheromone1 = new Augmentation({
- name:AugmentationNames.ADRPheromone1, repCost:1500, moneyCost:3.5e6,
- info:"The body is genetically re-engineered so that it produces the ADR-V1 pheromone, " +
- "an artificial pheromone discovered by scientists. The ADR-V1 pheromone, when excreted, " +
- "triggers feelings of admiration and approval in other people.
" +
- "This augmentation:
" +
- "Increases the amount of reputation the player gains when working for a company by 10%
" +
- "Increases the amount of reputation the player gains for a faction by 10%"
- });
- ADRPheromone1.addToFactions(["Tian Di Hui", "The Syndicate", "NWO", "MegaCorp", "Four Sigma"]);
- if (augmentationExists(AugmentationNames.ADRPheromone1)) {
- delete Augmentations[AugmentationNames.ADRPheromone1];
- }
- AddToAugmentations(ADRPheromone1);
-
- var ADRPheromone2 = new Augmentation({
- name:AugmentationNames.ADRPheromone2, repCost:25e3, moneyCost:110e6,
- info:"The body is genetically re-engineered so that it produces the ADR-V2 pheromone, " +
- "which is similar to but more potent than ADR-V1. This pheromone, when excreted, " +
- "triggers feelings of admiration, approval, and respect in others.
" +
- "This augmentation:
" +
- "Increases the amount of reputation the player gains for a faction and company by 20%."
- });
- ADRPheromone2.addToFactions(["Silhouette", "Four Sigma", "Bachman & Associates", "Clarke Incorporated"]);
- if (augmentationExists(AugmentationNames.ADRPheromone2)) {
- delete Augmentations[AugmentationNames.ADRPheromone2];
- }
- AddToAugmentations(ADRPheromone2);
-
- //HacknetNode Augmentations
- var HacknetNodeCPUUpload = new Augmentation({
- name:AugmentationNames.HacknetNodeCPUUpload, repCost:1500, moneyCost:2.2e6,
- info:"Uploads the architecture and design details of a Hacknet Node's CPU into " +
- "the brain. This allows the user to engineer custom hardware and software " +
- "for the Hacknet Node that provides better performance.
" +
- "This augmentation:
" +
- "Increases the amount of money produced by Hacknet Nodes by 15%
" +
- "Decreases the cost of purchasing a Hacknet Node by 15%"
- });
- HacknetNodeCPUUpload.addToFactions(["Netburners"]);
- if (augmentationExists(AugmentationNames.HacknetNodeCPUUpload)) {
- delete Augmentations[AugmentationNames.HacknetNodeCPUUpload];
- }
- AddToAugmentations(HacknetNodeCPUUpload);
-
- var HacknetNodeCacheUpload = new Augmentation({
- name:AugmentationNames.HacknetNodeCacheUpload, repCost:1e3, moneyCost:1.1e6,
- info:"Uploads the architecture and design details of a Hacknet Node's main-memory cache " +
- "into the brain. This allows the user to engineer custom cache hardware for the " +
- "Hacknet Node that offers better performance.
" +
- "This augmentation:
" +
- "Increases the amount of money produced by Hacknet Nodes by 10%
" +
- "Decreases the cost of leveling up a Hacknet Node by 15%"
- });
- HacknetNodeCacheUpload.addToFactions(["Netburners"]);
- if (augmentationExists(AugmentationNames.HacknetNodeCacheUpload)) {
- delete Augmentations[AugmentationNames.HacknetNodeCacheUpload];
- }
- AddToAugmentations(HacknetNodeCacheUpload);
-
- var HacknetNodeNICUpload = new Augmentation({
- name:AugmentationNames.HacknetNodeNICUpload, repCost:750, moneyCost:900e3,
- info:"Uploads the architecture and design details of a Hacknet Node's Network Interface Card (NIC) " +
- "into the brain. This allows the user to engineer a custom NIC for the Hacknet Node that " +
- "offers better performance.
" +
- "This augmentation:
" +
- "Increases the amount of money produced by Hacknet Nodes by 10%
" +
- "Decreases the cost of purchasing a Hacknet Node by 10%"
- });
- HacknetNodeNICUpload.addToFactions(["Netburners"]);
- if (augmentationExists(AugmentationNames.HacknetNodeNICUpload)) {
- delete Augmentations[AugmentationNames.HacknetNodeNICUpload];
- }
- AddToAugmentations(HacknetNodeNICUpload);
-
- var HacknetNodeKernelDNI = new Augmentation({
- name:AugmentationNames.HacknetNodeKernelDNI, repCost:3e3, moneyCost:8e6,
- info:"Installs a Direct-Neural Interface jack into the arm that is capable of connecting to a " +
- "Hacknet Node. This lets the user access and manipulate the Node's kernel using the mind's " +
- "electrochemical signals.
" +
- "This augmentation increases the amount of money produced by Hacknet Nodes by 25%."
- });
- HacknetNodeKernelDNI.addToFactions(["Netburners"]);
- if (augmentationExists(AugmentationNames.HacknetNodeKernelDNI)) {
- delete Augmentations[AugmentationNames.HacknetNodeKernelDNI];
- }
- AddToAugmentations(HacknetNodeKernelDNI);
-
- var HacknetNodeCoreDNI = new Augmentation({
- name:AugmentationNames.HacknetNodeCoreDNI, repCost:5e3, moneyCost:12e6,
- info:"Installs a Direct-Neural Interface jack into the arm that is capable of connecting " +
- "to a Hacknet Node. This lets the user access and manipulate the Node's processing logic using " +
- "the mind's electrochemical signals.
" +
- "This augmentation increases the amount of money produced by Hacknet Nodes by 45%."
- });
- HacknetNodeCoreDNI.addToFactions(["Netburners"]);
- if (augmentationExists(AugmentationNames.HacknetNodeCoreDNI)) {
- delete Augmentations[AugmentationNames.HacknetNodeCoreDNI];
- }
- AddToAugmentations(HacknetNodeCoreDNI);
-
- //Misc/Hybrid augmentations
- var NeuroFluxGovernor = new Augmentation({
- name:AugmentationNames.NeuroFluxGovernor, repCost:500, moneyCost: 750e3,
- info:"A device that is embedded in the back of the neck. The NeuroFlux Governor " +
- "monitors and regulates nervous impulses coming to and from the spinal column, " +
- "essentially 'governing' the body. By doing so, it improves the functionality of the " +
- "body's nervous system.
" +
- "This is a special augmentation because it can be leveled up infinitely. Each level of this augmentation " +
- "increases ALL of the player's multipliers by 1%"
- });
- var nextLevel = Object(_Faction_js__WEBPACK_IMPORTED_MODULE_3__["getNextNeurofluxLevel"])();
- NeuroFluxGovernor.level = nextLevel - 1;
- mult = Math.pow(_Constants_js__WEBPACK_IMPORTED_MODULE_1__["CONSTANTS"].NeuroFluxGovernorLevelMult, NeuroFluxGovernor.level);
- NeuroFluxGovernor.baseRepRequirement = 500 * mult * _Constants_js__WEBPACK_IMPORTED_MODULE_1__["CONSTANTS"].AugmentationRepMultiplier * _BitNode_js__WEBPACK_IMPORTED_MODULE_0__["BitNodeMultipliers"].AugmentationRepCost;
- NeuroFluxGovernor.baseCost = 750e3 * mult * _Constants_js__WEBPACK_IMPORTED_MODULE_1__["CONSTANTS"].AugmentationCostMultiplier * _BitNode_js__WEBPACK_IMPORTED_MODULE_0__["BitNodeMultipliers"].AugmentationMoneyCost;
- if (augmentationExists(AugmentationNames.NeuroFluxGovernor)) {
- delete Augmentations[AugmentationNames.NeuroFluxGovernor];
- }
- NeuroFluxGovernor.addToAllFactions();
- AddToAugmentations(NeuroFluxGovernor);
-
- var Neurotrainer1 = new Augmentation({
- name:AugmentationNames.Neurotrainer1, repCost:400, moneyCost:800e3,
- info:"A decentralized cranial implant that improves the brain's ability to learn. It is " +
- "installed by releasing millions of nanobots into the human brain, each of which " +
- "attaches to a different neural pathway to enhance the brain's ability to retain " +
- "and retrieve information.
" +
- "This augmentation increases the player's experience gain rate for all stats by 10%"
- });
- Neurotrainer1.addToFactions(["CyberSec"]);
- if (augmentationExists(AugmentationNames.Neurotrainer1)) {
- delete Augmentations[AugmentationNames.Neurotrainer1];
- }
- AddToAugmentations(Neurotrainer1);
-
- var Neurotrainer2 = new Augmentation({
- name:AugmentationNames.Neurotrainer2, repCost:4e3, moneyCost:9e6,
- info:"A decentralized cranial implant that improves the brain's ability to learn. This " +
- "is a more powerful version of the Neurotrainer I augmentation, but it does not " +
- "require Neurotrainer I to be installed as a prerequisite.
" +
- "This augmentation increases the player's experience gain rate for all stats by 15%"
- });
- Neurotrainer2.addToFactions(["BitRunners", "NiteSec"]);
- if (augmentationExists(AugmentationNames.Neurotrainer2)) {
- delete Augmentations[AugmentationNames.Neurotrainer2];
- }
- AddToAugmentations(Neurotrainer2);
-
- var Neurotrainer3 = new Augmentation({
- name:AugmentationNames.Neurotrainer3, repCost:10e3, moneyCost:26e6,
- info:"A decentralized cranial implant that improves the brain's ability to learn. This " +
- "is a more powerful version of the Neurotrainer I and Neurotrainer II augmentation, " +
- "but it does not require either of them to be installed as a prerequisite.
" +
- "This augmentation increases the player's experience gain rate for all stats by 20%"
- });
- Neurotrainer3.addToFactions(["NWO", "Four Sigma"]);
- if (augmentationExists(AugmentationNames.Neurotrainer3)) {
- delete Augmentations[AugmentationNames.Neurotrainer3];
- }
- AddToAugmentations(Neurotrainer3);
-
- var Hypersight = new Augmentation({
- name:AugmentationNames.Hypersight, repCost:60e3, moneyCost:550e6,
- info:"A bionic eye implant that grants sight capabilities far beyond those of a natural human. " +
- "Embedded circuitry within the implant provides the ability to detect heat and movement " +
- "through solid objects such as wells, thus providing 'x-ray vision'-like capabilities.
" +
- "This augmentation:
" +
- "Increases the player's dexterity by 40%
" +
- "Increases the player's hacking speed by 3%
" +
- "Increases the amount of money the player gains from hacking by 10%"
- });
- Hypersight.addToFactions(["Blade Industries", "KuaiGong International"]);
- if (augmentationExists(AugmentationNames.Hypersight)) {
- delete Augmentations[AugmentationNames.Hypersight];
- }
- AddToAugmentations(Hypersight);
-
- var LuminCloaking1 = new Augmentation({
- name:AugmentationNames.LuminCloaking1, repCost:600, moneyCost:1e6,
- info:"A skin implant that reinforces the skin with highly-advanced synthetic cells. These " +
- "cells, when powered, have a negative refractive index. As a result, they bend light " +
- "around the skin, making the user much harder to see from the naked eye.
" +
- "This augmentation:
" +
- "Increases the player's agility by 5%
" +
- "Increases the amount of money the player gains from crimes by 10%"
- });
- LuminCloaking1.addToFactions(["Slum Snakes", "Tetrads"]);
- if (augmentationExists(AugmentationNames.LuminCloaking1)) {
- delete Augmentations[AugmentationNames.LuminCloaking1];
- }
- AddToAugmentations(LuminCloaking1);
-
- var LuminCloaking2 = new Augmentation({
- name:AugmentationNames.LuminCloaking2, repCost:2e3, moneyCost:6e6,
- info:"This is a more advanced version of the LuminCloaking-V2 augmentation. This skin implant " +
- "reinforces the skin with highly-advanced synthetic cells. These " +
- "cells, when powered, are capable of not only bending light but also of bending heat, " +
- "making the user more resilient as well as stealthy.
" +
- "This augmentation:
" +
- "Increases the player's agility by 10%
" +
- "Increases the player's defense by 10%
" +
- "Increases the amount of money the player gains from crimes by 25%"
- });
- LuminCloaking2.addToFactions(["Slum Snakes", "Tetrads"]);
- if (augmentationExists(AugmentationNames.LuminCloaking2)) {
- delete Augmentations[AugmentationNames.LuminCloaking2];
- }
- AddToAugmentations(LuminCloaking2);
-
- var SmartSonar = new Augmentation({
- name:AugmentationNames.SmartSonar, repCost:9e3, moneyCost:15e6,
- info:"A cochlear implant that helps the player detect and locate enemies " +
- "using sound propagation.
" +
- "This augmentation:
" +
- "Increases the player's dexterity by 10%
" +
- "Increases the player's dexterity experience gain rate by 15%
" +
- "Increases the amount of money the player gains from crimes by 25%"
- });
- SmartSonar.addToFactions(["Slum Snakes"]);
- if (augmentationExists(AugmentationNames.SmartSonar)) {
- delete Augmentations[AugmentationNames.SmartSonar];
- }
- AddToAugmentations(SmartSonar);
-
- var PowerRecirculator = new Augmentation({
- name:AugmentationNames.PowerRecirculator, repCost:10e3, moneyCost:36e6,
- info:"The body's nerves are attached with polypyrrole nanocircuits that " +
- "are capable of capturing wasted energy (in the form of heat) " +
- "and converting it back into usable power.
" +
- "This augmentation:
" +
- "Increases all of the player's stats by 5%
" +
- "Increases the player's experience gain rate for all stats by 10%"
- });
- PowerRecirculator.addToFactions(["Tetrads", "The Dark Army", "The Syndicate", "NWO"]);
- if (augmentationExists(AugmentationNames.PowerRecirculator)) {
- delete Augmentations[AugmentationNames.PowerRecirculator];
- }
- AddToAugmentations(PowerRecirculator);
-
- //Unique AUGS (Each Faction gets one unique augmentation)
- //Factions that already have unique augs up to this point:
- // Slum Snakes, CyberSec, Netburners, Fulcrum Secret Technologies,
- // Silhouette
-
- //Illuminati
- var QLink = new Augmentation({
- name:AugmentationNames.QLink, repCost:750e3, moneyCost:1300e6,
- info:"A brain implant that wirelessly connects you to the Illuminati's " +
- "quantum supercomputer, allowing you to access and use its incredible " +
- "computing power.
" +
- "This augmentation:
" +
- "Increases the player's hacking speed by 10%
" +
- "Increases the player's chance of successfully performing a hack by 30%
" +
- "Increases the amount of money the player gains from hacking by 100%"
- });
- QLink.addToFactions(["Illuminati"]);
- if (augmentationExists(AugmentationNames.QLink)) {
- delete Augmentations[AugmentationNames.QLink];
- }
- AddToAugmentations(QLink);
-
- //Daedalus
- var RedPill = new Augmentation({
- name:AugmentationNames.TheRedPill, repCost:1e6, moneyCost:0,
- info:"It's time to leave the cave"
- });
- RedPill.addToFactions(["Daedalus"]);
- if (augmentationExists(AugmentationNames.TheRedPill)) {
- delete Augmentations[AugmentationNames.TheRedPill];
- }
- AddToAugmentations(RedPill);
-
- //Covenant
- var SPTN97 = new Augmentation({
- name:AugmentationNames.SPTN97, repCost:500e3, moneyCost:975e6,
- info:"The SPTN-97 gene is injected into the genome. The SPTN-97 gene is an " +
- "artificially-synthesized gene that was developed by DARPA to create " +
- "super-soldiers through genetic modification. The gene was outlawed in " +
- "2056.
" +
- "This augmentation:
" +
- "Increases all of the player's combat stats by 75%
" +
- "Increases the player's hacking skill by 15%"
- });
- SPTN97.addToFactions(["The Covenant"]);
- if (augmentationExists(AugmentationNames.SPTN97)) {
- delete Augmentations[AugmentationNames.SPTN97];
- }
- AddToAugmentations(SPTN97);
-
- //ECorp
- var HiveMind = new Augmentation({
- name:AugmentationNames.HiveMind, repCost:600e3, moneyCost:1100e6,
- info:"A brain implant developed by ECorp. They do not reveal what " +
- "exactly the implant does, but they promise that it will greatly " +
- "enhance your abilities."
- });
- HiveMind.addToFactions(["ECorp"]);
- if (augmentationExists(AugmentationNames.HiveMind)) {
- delete Augmentations[AugmentationNames.HiveMind];
- }
- AddToAugmentations(HiveMind);
-
- //MegaCorp
- var CordiARCReactor = new Augmentation({
- name:AugmentationNames.CordiARCReactor, repCost:450e3, moneyCost:1000e6,
- info:"The thoracic cavity is equipped with a small chamber designed " +
- "to hold and sustain hydrogen plasma. The plasma is used to generate " +
- "fusion power through nuclear fusion, providing limitless amount of clean " +
- "energy for the body.
" +
- "This augmentation:
" +
- "Increases all of the player's combat stats by 35%
" +
- "Increases all of the player's combat stat experience gain rate by 35%"
- });
- CordiARCReactor.addToFactions(["MegaCorp"]);
- if (augmentationExists(AugmentationNames.CordiARCReactor)) {
- delete Augmentations[AugmentationNames.CordiARCReactor];
- }
- AddToAugmentations(CordiARCReactor);
-
- //BachmanAndAssociates
- var SmartJaw = new Augmentation({
- name:AugmentationNames.SmartJaw, repCost:150e3, moneyCost:550e6,
- info:"A bionic jaw that contains advanced hardware and software " +
- "capable of psychoanalyzing and profiling the personality of " +
- "others using optical imaging software.
" +
- "This augmentation:
" +
- "Increases the player's charisma by 50%.
" +
- "Increases the player's charisma experience gain rate by 50%
" +
- "Increases the amount of reputation the player gains for a company by 25%
" +
- "Increases the amount of reputation the player gains for a faction by 25%"
- });
- SmartJaw.addToFactions(["Bachman & Associates"]);
- if (augmentationExists(AugmentationNames.SmartJaw)) {
- delete Augmentations[AugmentationNames.SmartJaw];
- }
- AddToAugmentations(SmartJaw);
-
- //BladeIndustries
- var Neotra = new Augmentation({
- name:AugmentationNames.Neotra, repCost:225e3, moneyCost:575e6,
- info:"A highly-advanced techno-organic drug that is injected into the skeletal " +
- "and integumentary system. The drug permanently modifies the DNA of the " +
- "body's skin and bone cells, granting them the ability to repair " +
- "and restructure themselves.
" +
- "This augmentation increases the player's strength and defense by 55%"
- });
- Neotra.addToFactions(["Blade Industries"]);
- if (augmentationExists(AugmentationNames.Neotra)) {
- delete Augmentations[AugmentationNames.Neotra];
- }
- AddToAugmentations(Neotra);
-
- //NWO
- var Xanipher = new Augmentation({
- name:AugmentationNames.Xanipher, repCost:350e3, moneyCost:850e6,
- info:"A concoction of advanced nanobots that is orally ingested into the " +
- "body. These nanobots induce physiological change and significantly " +
- "improve the body's functionining in all aspects.
" +
- "This augmentation:
" +
- "Increases all of the player's stats by 20%
" +
- "Increases the player's experience gain rate for all stats by 15%"
- });
- Xanipher.addToFactions(["NWO"]);
- if (augmentationExists(AugmentationNames.Xanipher)) {
- delete Augmentations[AugmentationNames.Xanipher];
- }
- AddToAugmentations(Xanipher);
-
- //ClarkeIncorporated
- var nextSENS = new Augmentation({
- name:AugmentationNames.nextSENS, repCost:175e3, moneyCost:385e6,
- info:"The body is genetically re-engineered to maintain a state " +
- "of negligible senescence, preventing the body from " +
- "deteriorating with age.
" +
- "This augmentation increases all of the player's stats by 20%"
- });
- nextSENS.addToFactions(["Clarke Incorporated"]);
- if (augmentationExists(AugmentationNames.nextSENS)) {
- delete Augmentations[AugmentationNames.nextSENS];
- }
- AddToAugmentations(nextSENS);
-
- //OmniTekIncorporated
- var OmniTekInfoLoad = new Augmentation({
- name:AugmentationNames.OmniTekInfoLoad, repCost:250e3, moneyCost:575e6,
- info:"OmniTek's data and information repository is uploaded " +
- "into your brain, enhancing your programming and " +
- "hacking abilities.
" +
- "This augmentation:
" +
- "Increases the player's hacking skill by 20%
" +
- "Increases the player's hacking experience gain rate by 25%"
- });
- OmniTekInfoLoad.addToFactions(["OmniTek Incorporated"]);
- if (augmentationExists(AugmentationNames.OmniTekInfoLoad)) {
- delete Augmentations[AugmentationNames.OmniTekInfoLoad];
- }
- AddToAugmentations(OmniTekInfoLoad);
-
- //FourSigma
- //TODO Later when Intelligence is added in . Some aug that greatly increases int
-
- //KuaiGongInternational
- var PhotosyntheticCells = new Augmentation({
- name:AugmentationNames.PhotosyntheticCells, repCost:225e3, moneyCost:550e6,
- info:"Chloroplasts are added to epidermal stem cells and are applied " +
- "to the body using a skin graft. The result is photosynthetic " +
- "skin cells, allowing users to generate their own energy " +
- "and nutrition using solar power.
" +
- "This augmentation increases the player's strength, defense, and agility by 40%"
- });
- PhotosyntheticCells.addToFactions(["KuaiGong International"]);
- if (augmentationExists(AugmentationNames.PhotosyntheticCells)) {
- delete Augmentations[AugmentationNames.PhotosyntheticCells];
- }
- AddToAugmentations(PhotosyntheticCells);
-
- //BitRunners
- var Neurolink = new Augmentation({
- name:AugmentationNames.Neurolink, repCost:350e3, moneyCost:875e6,
- info:"A brain implant that provides a high-bandwidth, direct neural link between your " +
- "mind and BitRunners' data servers, which reportedly contain " +
- "the largest database of hacking tools and information in the world.
" +
- "This augmentation:
" +
- "Increases the player's hacking skill by 15%
" +
- "Increases the player's hacking experience gain rate by 20%
" +
- "Increases the player's chance of successfully performing a hack by 10%
" +
- "Increases the player's hacking speed by 5%
" +
- "Lets the player start with the FTPCrack.exe and relaySMTP.exe programs after a reset"
- });
- Neurolink.addToFactions(["BitRunners"]);
- if (augmentationExists(AugmentationNames.Neurolink)) {
- delete Augmentations[AugmentationNames.Neurolink];
- }
- AddToAugmentations(Neurolink);
-
- //BlackHand
- var TheBlackHand = new Augmentation({
- name:AugmentationNames.TheBlackHand, repCost:40e3, moneyCost:110e6,
- info:"A highly advanced bionic hand. This prosthetic not only " +
- "enhances strength and dexterity but it is also embedded " +
- "with hardware and firmware that lets the user connect to, access and hack " +
- "devices and machines just by touching them.
" +
- "This augmentation:
" +
- "Increases the player's strength and dexterity by 15%
" +
- "Increases the player's hacking skill by 10%
" +
- "Increases the player's hacking speed by 2%
" +
- "Increases the amount of money the player gains from hacking by 10%"
- });
- TheBlackHand.addToFactions(["The Black Hand"]);
- if (augmentationExists(AugmentationNames.TheBlackHand)) {
- delete Augmentations[AugmentationNames.TheBlackHand];
- }
- AddToAugmentations(TheBlackHand);
-
- //NiteSec
- var CRTX42AA = new Augmentation({
- name:AugmentationNames.CRTX42AA, repCost:18e3, moneyCost:45e6,
- info:"The CRTX42-AA gene is injected into the genome. " +
- "The CRTX42-AA is an artificially-synthesized gene that targets the visual and prefrontal " +
- "cortex and improves cognitive abilities.
" +
- "This augmentation:
" +
- "Improves the player's hacking skill by 8%
" +
- "Improves the player's hacking experience gain rate by 15%"
- });
- CRTX42AA.addToFactions(["NiteSec"]);
- if (augmentationExists(AugmentationNames.CRTX42AA)) {
- delete Augmentations[AugmentationNames.CRTX42AA];
- }
- AddToAugmentations(CRTX42AA);
-
- //Chongqing
- var Neuregen = new Augmentation({
- name:AugmentationNames.Neuregen, repCost:15e3, moneyCost:75e6,
- info:"A drug that genetically modifies the neurons in the brain. " +
- "The result is that these neurons never die and continuously " +
- "regenerate and strengthen themselves.
" +
- "This augmentation increases the player's hacking experience gain rate by 40%"
- });
- Neuregen.addToFactions(["Chongqing"]);
- if (augmentationExists(AugmentationNames.Neuregen)) {
- delete Augmentations[AugmentationNames.Neuregen];
- }
- AddToAugmentations(Neuregen);
-
- //Sector12
- var CashRoot = new Augmentation({
- name:AugmentationNames.CashRoot, repCost:5e3, moneyCost:25e6,
- info:"A collection of digital assets saved on a small chip. The chip is implanted " +
- "into your wrist. A small jack in the chip allows you to connect it to a computer " +
- "and upload the assets.
" +
- "This augmentation:
" +
- "Lets the player start with $1,000,000 after a reset
" +
- "Lets the player start with the BruteSSH.exe program after a reset"
- });
- CashRoot.addToFactions(["Sector-12"]);
- if (augmentationExists(AugmentationNames.CashRoot)) {
- delete Augmentations[AugmentationNames.CashRoot];
- }
- AddToAugmentations(CashRoot);
-
- //NewTokyo
- var NutriGen = new Augmentation({
- name:AugmentationNames.NutriGen, repCost:2500, moneyCost:500e3,
- info:"A thermo-powered artificial nutrition generator. Endogenously " +
- "synthesizes glucose, amino acids, and vitamins and redistributes them " +
- "across the body. The device is powered by the body's naturally wasted " +
- "energy in the form of heat.
" +
- "This augmentation:
" +
- "Increases the player's experience gain rate for all combat stats by 20%"
- });
- NutriGen.addToFactions(["New Tokyo"]);
- if (augmentationExists(AugmentationNames.NutriGen)) {
- delete Augmentations[AugmentationNames.NutriGen];
- }
- AddToAugmentations(NutriGen);
-
- //Aevum
- //TODO Later Something that lets you learn advanced math...this increases int
- //and profits as a trader/from trading
-
- //Ishima
- var INFRARet = new Augmentation({
- name:AugmentationNames.INFRARet, repCost:3e3, moneyCost:6e6,
- info:"A retina implant consisting of a tiny chip that sits behind the " +
- "retina. This implant lets people visually detect infrared radiation.
" +
- "This augmentation:
" +
- "Increases the player's crime success rate by 25%
" +
- "Increases the amount of money the player gains from crimes by 10%
" +
- "Increases the player's dexterity by 10%"
- });
- INFRARet.addToFactions(["Ishima"]);
- if (augmentationExists(AugmentationNames.INFRARet)) {
- delete Augmentations[AugmentationNames.INFRARet];
- }
- AddToAugmentations(INFRARet);
-
- //Volhaven
- var DermaForce = new Augmentation({
- name:AugmentationNames.DermaForce, repCost:6e3, moneyCost:10e6,
- info:"A synthetic skin is grafted onto the body. The skin consists of " +
- "millions of nanobots capable of projecting high-density muon beams, " +
- "creating an energy barrier around the user.
" +
- "This augmentation increases the player's defense by 40%"
- });
- DermaForce.addToFactions(["Volhaven"]);
- if (augmentationExists(AugmentationNames.DermaForce)) {
- delete Augmentations[AugmentationNames.DermaForce];
- }
- AddToAugmentations(DermaForce);
-
- //SpeakersForTheDead
- var GrapheneBrachiBlades = new Augmentation({
- name:AugmentationNames.GrapheneBrachiBlades, repCost:90e3, moneyCost:500e6,
- info:"An upgrade to the BrachiBlades augmentation. It infuses " +
- "the retractable blades with an advanced graphene material " +
- "to make them much stronger and lighter.
" +
- "This augmentation:
" +
- "Increases the player's strength and defense by 40%
" +
- "Increases the player's crime success rate by 10%
" +
- "Increases the amount of money the player gains from crimes by 30%",
- prereqs:[AugmentationNames.BrachiBlades],
- });
- GrapheneBrachiBlades.addToFactions(["Speakers for the Dead"]);
- if (augmentationExists(AugmentationNames.GrapheneBrachiBlades)) {
- delete Augmentations[AugmentationNames.GrapheneBrachiBlades];
- }
- AddToAugmentations(GrapheneBrachiBlades);
-
- //DarkArmy
- var GrapheneBionicArms = new Augmentation({
- name:AugmentationNames.GrapheneBionicArms, repCost:200e3, moneyCost:750e6,
- info:"An upgrade to the Bionic Arms augmentation. It infuses the " +
- "prosthetic arms with an advanced graphene material " +
- "to make them much stronger and lighter.
" +
- "This augmentation increases the player's strength and dexterity by 85%",
- prereqs:[AugmentationNames.BionicArms],
- });
- GrapheneBionicArms.addToFactions(["The Dark Army"]);
- if (augmentationExists(AugmentationNames.GrapheneBionicArms)) {
- delete Augmentations[AugmentationNames.GrapheneBionicArms];
- }
- AddToAugmentations(GrapheneBionicArms);
-
- //TheSyndicate
- var BrachiBlades = new Augmentation({
- name:AugmentationNames.BrachiBlades, repCost:5e3, moneyCost:18e6,
- info:"A set of retractable plasteel blades are implanted in the arm, underneath the skin. " +
- "
This augmentation:
" +
- "Increases the player's strength and defense by 15%
" +
- "Increases the player's crime success rate by 10%
" +
- "Increases the amount of money the player gains from crimes by 15%"
- });
- BrachiBlades.addToFactions(["The Syndicate"]);
- if (augmentationExists(AugmentationNames.BrachiBlades)) {
- delete Augmentations[AugmentationNames.BrachiBlades];
- }
- AddToAugmentations(BrachiBlades);
-
- //Tetrads
- var BionicArms = new Augmentation({
- name:AugmentationNames.BionicArms, repCost:25e3, moneyCost:55e6,
- info:"Cybernetic arms created from plasteel and carbon fibers that completely replace " +
- "the user's organic arms.
" +
- "This augmentation increases the user's strength and dexterity by 30%"
- });
- BionicArms.addToFactions(["Tetrads"]);
- if (augmentationExists(AugmentationNames.BionicArms)) {
- delete Augmentations[AugmentationNames.BionicArms];
- }
- AddToAugmentations(BionicArms);
-
- //TianDiHui
- var SNA = new Augmentation({
- name:AugmentationNames.SNA, repCost:2500, moneyCost:6e6,
- info:"A cranial implant that affects the user's personality, making them better " +
- "at negotiation in social situations.
" +
- "This augmentation:
" +
- "Increases the amount of money the player earns at a company by 10%
" +
- "Increases the amount of reputation the player gains when working for a " +
- "company or faction by 15%"
- });
- SNA.addToFactions(["Tian Di Hui"]);
- if (augmentationExists(AugmentationNames.SNA)) {
- delete Augmentations[AugmentationNames.SNA];
- }
- AddToAugmentations(SNA);
-
- //For BitNode-2, add all Augmentations to crime/evil factions.
- //Do this before adding special Augmentations that become available in later BitNodes
- if (_Player_js__WEBPACK_IMPORTED_MODULE_6__["Player"].bitNodeN === 2) {
- console.log("Adding all augmentations to crime factions for Bit node 2");
- _Faction_js__WEBPACK_IMPORTED_MODULE_3__["Factions"]["Slum Snakes"].addAllAugmentations();
- _Faction_js__WEBPACK_IMPORTED_MODULE_3__["Factions"]["Tetrads"].addAllAugmentations();
- _Faction_js__WEBPACK_IMPORTED_MODULE_3__["Factions"]["The Syndicate"].addAllAugmentations();
- _Faction_js__WEBPACK_IMPORTED_MODULE_3__["Factions"]["The Dark Army"].addAllAugmentations();
- _Faction_js__WEBPACK_IMPORTED_MODULE_3__["Factions"]["Speakers for the Dead"].addAllAugmentations();
- _Faction_js__WEBPACK_IMPORTED_MODULE_3__["Factions"]["NiteSec"].addAllAugmentations();
- _Faction_js__WEBPACK_IMPORTED_MODULE_3__["Factions"]["The Black Hand"].addAllAugmentations();
- }
-
- //Special Bladeburner Augmentations
- var BladeburnersFactionName = "Bladeburners";
- if (Object(_Faction_js__WEBPACK_IMPORTED_MODULE_3__["factionExists"])(BladeburnersFactionName)) {
- var EsperEyewear = new Augmentation({
- name:AugmentationNames.EsperEyewear, repCost:400, moneyCost:30e6,
- info:"Ballistic-grade protective and retractable eyewear that was designed specially " +
- "for Bladeburner units. This " +
- "is implanted by installing a mechanical frame in the skull's orbit. " +
- "This frame interfaces with the brain and allows the user to " +
- "automatically extrude and extract the eyewear. The eyewear protects " +
- "against debris, shrapnel, laser, flash, and gas. It is also " +
- "embedded with a data processing chip that can be programmed to display an " +
- "AR HUD and assist the user in field missions.
" +
- "This augmentation:
" +
- "Increases the player's success chance in Bladeburner contracts/operations by 3%
" +
- "Increases the player's dexterity by 3%"
- });
- EsperEyewear.addToFactions([BladeburnersFactionName]);
- resetAugmentation(EsperEyewear);
-
- var EMS4Recombination = new Augmentation({
- name:AugmentationNames.EMS4Recombination, repCost: 800, moneyCost:50e6,
- info:"A DNA recombination of the EMS-4 Gene. This genetic engineering " +
- "technique was originally used on Bladeburners during the Synthoid uprising " +
- "to induce wakefulness and concentration, suppress fear, reduce empathy, and " +
- "improve reflexes and memory-recall among other things.
" +
- "This augmentation:
" +
- "Increases the player's sucess chance in Bladeburner contracts/operations by 3%
" +
- "Increases the player's effectiveness in Bladeburner Field Analysis by 5%
" +
- "Increases the player's Bladeburner stamina gain rate by 1%"
- });
- EMS4Recombination.addToFactions([BladeburnersFactionName]);
- resetAugmentation(EMS4Recombination);
-
- var OrionShoulder = new Augmentation({
- name:AugmentationNames.OrionShoulder, repCost:2e3, moneyCost:100e6,
- info:"A bionic shoulder augmentation for the right shoulder. Using cybernetics, " +
- "the ORION-MKIV shoulder enhances the strength and dexterity " +
- "of the user's right arm. It also provides protection due to its " +
- "crystallized graphene plating.
" +
- "This augmentation:
" +
- "Increases the player's defense by 5%.
" +
- "Increases the player's strength and dexterity by 3%
" +
- "Increases the player's success chance in Bladeburner contracts/operations by 4%"
- });
- OrionShoulder.addToFactions([BladeburnersFactionName]);
- resetAugmentation(OrionShoulder);
-
- var HyperionV1 = new Augmentation({
- name:AugmentationNames.HyperionV1, repCost: 4e3, moneyCost:500e6,
- info:"A pair of mini plasma cannons embedded into the hands. The Hyperion is capable " +
- "of rapidly firing bolts of high-density plasma. The weapon is meant to " +
- "be used against augmented enemies as the ionized " +
- "nature of the plasma disrupts the electrical systems of Augmentations. However, " +
- "it can also be effective against non-augmented enemies due to its high temperature " +
- "and concussive force.
" +
- "This augmentation:
" +
- "Increases the player's success chance in Bladeburner contracts/operations by 5%"
- });
- HyperionV1.addToFactions([BladeburnersFactionName]);
- resetAugmentation(HyperionV1);
-
- var HyperionV2 = new Augmentation({
- name:AugmentationNames.HyperionV2, repCost:8e3, moneyCost:1e9,
- info:"A pair of mini plasma cannons embedded into the hands. This augmentation " +
- "is more advanced and powerful than the original V1 model. This V2 model is " +
- "more power-efficiency, more accurate, and can fire plasma bolts at a much " +
- "higher velocity than the V1 model.
" +
- "This augmentation:
" +
- "Increases the player's success chance in Bladeburner contracts/operations by 7%",
- prereqs:[AugmentationNames.HyperionV1]
- });
- HyperionV2.addToFactions([BladeburnersFactionName]);
- resetAugmentation(HyperionV2);
-
- var GolemSerum = new Augmentation({
- name:AugmentationNames.GolemSerum, repCost:10e3, moneyCost:2e9,
- info:"A serum that permanently enhances many aspects of a human's capabilities, " +
- "including strength, speed, immune system performance, and mitochondrial efficiency. The " +
- "serum was originally developed by the Chinese military in an attempt to " +
- "create super soldiers.
" +
- "This augmentation:
" +
- "Increases all of the player's combat stats by 5%
" +
- "Increases the player's Bladeburner stamina gain rate by 5%
"
- });
- GolemSerum.addToFactions([BladeburnersFactionName]);
- resetAugmentation(GolemSerum);
-
- var VangelisVirus = new Augmentation({
- name:AugmentationNames.VangelisVirus, repCost:6e3, moneyCost:500e6,
- info:"A synthetic symbiotic virus that is injected into the human brain tissue. The Vangelis virus " +
- "heightens the senses and focus of its host, and also enhances its intuition.
" +
- "This augmentation:
" +
- "Increases the player's effectiveness in Bladeburner Field Analysis by 10%
" +
- "Increases the player's success chance in Bladeburner contracts/operations by 4%
" +
- "Increases the player's dexterity experience gain rate by 5%"
- });
- VangelisVirus.addToFactions([BladeburnersFactionName]);
- resetAugmentation(VangelisVirus);
-
- var VangelisVirus3 = new Augmentation({
- name:AugmentationNames.VangelisVirus3, repCost:12e3, moneyCost:2e9,
- info:"An improved version of Vangelis, a synthetic symbiotic virus that is " +
- "injected into the human brain tissue. On top of the benefits of the original " +
- "virus, this also grants an accelerated healing factor and enhanced " +
- "agility/reflexes.
" +
- "This augmentation:
" +
- "Increases the player's effectiveness in Bladeburner Field Analysis by 15%
" +
- "Increases the player's defense and dexterity experience gain rate by 5%
" +
- "Increases the player's success chance in Bladeburner contracts/operations by 5%",
- prereqs:[AugmentationNames.VangelisVirus]
- });
- VangelisVirus3.addToFactions([BladeburnersFactionName]);
- resetAugmentation(VangelisVirus3);
-
- var INTERLINKED = new Augmentation({
- name:AugmentationNames.INTERLINKED, repCost:8e3, moneyCost:1e9,
- info:"The DNA is genetically modified to enhance the human's body " +
- "extracellular matrix (ECM). This improves the ECM's ability to " +
- "structurally support the body and grants heightened strength and " +
- "durability.
" +
- "This augmentation:
" +
- "Increases the player's experience gain rate for all combat stats by 4%
" +
- "Increases the player's Bladeburner max stamina by 10%"
- });
- INTERLINKED.addToFactions([BladeburnersFactionName]);
- resetAugmentation(INTERLINKED);
-
- var BladeRunner = new Augmentation({
- name:AugmentationNames.BladeRunner, repCost:8e3, moneyCost:1.5e9,
- info:"A cybernetic foot augmentation that was specially created for Bladeburners " +
- "during the Synthoid Uprising. The organic musculature of the human foot " +
- "is enhanced with flexible carbon nanotube matrices that are controlled by " +
- "intelligent servo-motors.
" +
- "This augmentation:
" +
- "Increases the player's agility by 5%
" +
- "Increases the player's Bladeburner max stamina by 5%
" +
- "Increases the player's Bladeburner stamina gain rate by 5%
"
- });
- BladeRunner.addToFactions([BladeburnersFactionName]);
- resetAugmentation(BladeRunner);
-
- var BladeArmor = new Augmentation({
- name:AugmentationNames.BladeArmor, repCost:4e3, moneyCost:250e6,
- info:"A powered exoskeleton suit (exosuit) designed as armor for Bladeburner units. This " +
- "exoskeleton is incredibly adaptable and can protect the wearer from blunt, piercing, " +
- "concussive, thermal, chemical, and electric trauma. It also enhances the user's " +
- "strength and agility.
" +
- "This augmentation:
" +
- "Increases all of the player's combat stats by 2%
" +
- "Increases the player's Bladeburner stamina gain rate by 2%
" +
- "Increases the player's success chance in Bladeburner contracts/operations by 3%",
- });
- BladeArmor.addToFactions([BladeburnersFactionName]);
- resetAugmentation(BladeArmor);
-
- var BladeArmorPowerCells = new Augmentation({
- name:AugmentationNames.BladeArmorPowerCells, repCost:6e3, moneyCost:500e6,
- info:"Upgrades the BLADE-51b Tesla Armor with Ion Power Cells, which are capable of " +
- "more efficiently storing and using power.
" +
- "This augmentation:
" +
- "Increases the player's success chance in Bladeburner contracts/operations by 5%" +
- "Increases the player's Bladeburner stamina gain rate by 2%
" +
- "Increases the player's Bladeburner max stamina by 5%
",
- prereqs:[AugmentationNames.BladeArmor]
- });
- BladeArmorPowerCells.addToFactions([BladeburnersFactionName]);
- resetAugmentation(BladeArmorPowerCells);
-
- var BladeArmorEnergyShielding = new Augmentation({
- name:AugmentationNames.BladeArmorEnergyShielding, repCost:7e3, moneyCost:1e9,
- info:"Upgrades the BLADE-51b Tesla Armor with a plasma energy propulsion system " +
- "that is capable of projecting an energy shielding force field.
" +
- "This augmentation:
" +
- "Increases the player's defense by 5%
" +
- "Increases the player's success chance in Bladeburner contracts/operations by 6%",
- prereqs:[AugmentationNames.BladeArmor]
- });
- BladeArmorEnergyShielding.addToFactions([BladeburnersFactionName]);
- resetAugmentation(BladeArmorEnergyShielding);
-
- var BladeArmorUnibeam = new Augmentation({
- name:AugmentationNames.BladeArmorUnibeam, repCost:10e3, moneyCost:3e9,
- info:"Upgrades the BLADE-51b Tesla Armor with a concentrated deuterium-fluoride laser " +
- "weapon. It's precision an accuracy makes it useful for quickly neutralizing " +
- "threats while keeping casualties to a minimum.
" +
- "This augmentation:
" +
- "Increases the player's success chance in Bladeburner contracts/operations by 8%",
- prereqs:[AugmentationNames.BladeArmor]
- });
- BladeArmorUnibeam.addToFactions([BladeburnersFactionName]);
- resetAugmentation(BladeArmorUnibeam);
-
- var BladeArmorOmnibeam = new Augmentation({
- name:AugmentationNames.BladeArmorOmnibeam, repCost:20e3, moneyCost:5e9,
- info:"Upgrades the BLADE-51b Tesla Armor Unibeam augmentation to use " +
- "multiple-fiber system. The upgraded weapon uses multiple fiber laser " +
- "modules that combine together to form a single, more powerful beam of up to " +
- "2000MW.
" +
- "This augmentation:
" +
- "Increases the player's success chance in Bladeburner contracts/operations by 10%",
- prereqs:[AugmentationNames.BladeArmorUnibeam]
- });
- BladeArmorOmnibeam.addToFactions([BladeburnersFactionName]);
- resetAugmentation(BladeArmorOmnibeam);
-
- var BladeArmorIPU = new Augmentation({
- name:AugmentationNames.BladeArmorIPU, repCost: 5e3, moneyCost:200e6,
- info:"Upgrades the BLADE-51b Tesla Armor with an AI Information Processing " +
- "Unit that was specially designed to analyze Synthoid related data and " +
- "information.
" +
- "This augmentation:
" +
- "Increases the player's effectiveness in Bladeburner Field Analysis by 15%
" +
- "Increases the player's success chance in Bladeburner contracts/operations by 2%",
- prereqs:[AugmentationNames.BladeArmor]
- });
- BladeArmorIPU.addToFactions([BladeburnersFactionName]);
- resetAugmentation(BladeArmorIPU);
- }
-
- //Update costs based on how many have been purchased
- var mult = Math.pow(_Constants_js__WEBPACK_IMPORTED_MODULE_1__["CONSTANTS"].MultipleAugMultiplier, _Player_js__WEBPACK_IMPORTED_MODULE_6__["Player"].queuedAugmentations.length);
- for (var name in Augmentations) {
- if (Augmentations.hasOwnProperty(name)) {
- Augmentations[name].baseCost *= mult;
- }
- }
-
- _Player_js__WEBPACK_IMPORTED_MODULE_6__["Player"].reapplyAllAugmentations();
-
-
-}
-
-//Resets an Augmentation during (re-initizliation)
-function resetAugmentation(newAugObject) {
- if (!(newAugObject instanceof Augmentation)) {
- throw new Error("Invalid argument 'newAugObject' passed into resetAugmentation");
- }
- var name = newAugObject.name;
- if (augmentationExists(name)) {
- delete Augmentations[name];
- }
- AddToAugmentations(newAugObject);
-}
-
-function applyAugmentation(aug, reapply=false) {
- Augmentations[aug.name].owned = true;
- switch(aug.name) {
- //Combat stat augmentations
- case AugmentationNames.Targeting1:
- _Player_js__WEBPACK_IMPORTED_MODULE_6__["Player"].dexterity_mult *= 1.10;
- break;
- case AugmentationNames.Targeting2:
- _Player_js__WEBPACK_IMPORTED_MODULE_6__["Player"].dexterity_mult *= 1.20;
- break;
- case AugmentationNames.Targeting3:
- _Player_js__WEBPACK_IMPORTED_MODULE_6__["Player"].dexterity_mult *= 1.30;
- break;
- case AugmentationNames.SyntheticHeart: //High level
- _Player_js__WEBPACK_IMPORTED_MODULE_6__["Player"].agility_mult *= 1.5;
- _Player_js__WEBPACK_IMPORTED_MODULE_6__["Player"].strength_mult *= 1.5;
- break;
- case AugmentationNames.SynfibrilMuscle: //Medium-high level
- _Player_js__WEBPACK_IMPORTED_MODULE_6__["Player"].strength_mult *= 1.3;
- _Player_js__WEBPACK_IMPORTED_MODULE_6__["Player"].defense_mult *= 1.3;
- break;
- case AugmentationNames.CombatRib1:
- _Player_js__WEBPACK_IMPORTED_MODULE_6__["Player"].strength_mult *= 1.1;
- _Player_js__WEBPACK_IMPORTED_MODULE_6__["Player"].defense_mult *= 1.1;
- break;
- case AugmentationNames.CombatRib2:
- _Player_js__WEBPACK_IMPORTED_MODULE_6__["Player"].strength_mult *= 1.14;
- _Player_js__WEBPACK_IMPORTED_MODULE_6__["Player"].defense_mult *= 1.14;
- break;
- case AugmentationNames.CombatRib3:
- _Player_js__WEBPACK_IMPORTED_MODULE_6__["Player"].strength_mult *= 1.18;
- _Player_js__WEBPACK_IMPORTED_MODULE_6__["Player"].defense_mult *= 1.18;
- break;
- case AugmentationNames.NanofiberWeave: //Med level
- _Player_js__WEBPACK_IMPORTED_MODULE_6__["Player"].strength_mult *= 1.2;
- _Player_js__WEBPACK_IMPORTED_MODULE_6__["Player"].defense_mult *= 1.2;
- break;
- case AugmentationNames.SubdermalArmor: //High level
- _Player_js__WEBPACK_IMPORTED_MODULE_6__["Player"].defense_mult *= 2.2;
- break;
- case AugmentationNames.WiredReflexes: //Low level
- _Player_js__WEBPACK_IMPORTED_MODULE_6__["Player"].agility_mult *= 1.05;
- _Player_js__WEBPACK_IMPORTED_MODULE_6__["Player"].dexterity_mult *= 1.05;
- break;
- case AugmentationNames.GrapheneBoneLacings: //High level
- _Player_js__WEBPACK_IMPORTED_MODULE_6__["Player"].strength_mult *= 1.7;
- _Player_js__WEBPACK_IMPORTED_MODULE_6__["Player"].defense_mult *= 1.7;
- break;
- case AugmentationNames.BionicSpine: //Med level
- _Player_js__WEBPACK_IMPORTED_MODULE_6__["Player"].strength_mult *= 1.15;
- _Player_js__WEBPACK_IMPORTED_MODULE_6__["Player"].defense_mult *= 1.15;
- _Player_js__WEBPACK_IMPORTED_MODULE_6__["Player"].agility_mult *= 1.15;
- _Player_js__WEBPACK_IMPORTED_MODULE_6__["Player"].dexterity_mult *= 1.15;
- break;
- case AugmentationNames.GrapheneBionicSpine: //High level
- _Player_js__WEBPACK_IMPORTED_MODULE_6__["Player"].strength_mult *= 1.6;
- _Player_js__WEBPACK_IMPORTED_MODULE_6__["Player"].defense_mult *= 1.6;
- _Player_js__WEBPACK_IMPORTED_MODULE_6__["Player"].agility_mult *= 1.6;
- _Player_js__WEBPACK_IMPORTED_MODULE_6__["Player"].dexterity_mult *= 1.6;
- break;
- case AugmentationNames.BionicLegs: //Med level
- _Player_js__WEBPACK_IMPORTED_MODULE_6__["Player"].agility_mult *= 1.6;
- break;
- case AugmentationNames.GrapheneBionicLegs: //High level
- _Player_js__WEBPACK_IMPORTED_MODULE_6__["Player"].agility_mult *= 2.5;
- break;
-
- //Labor stats augmentations
- case AugmentationNames.EnhancedSocialInteractionImplant: //Med-high level
- _Player_js__WEBPACK_IMPORTED_MODULE_6__["Player"].charisma_mult *= 1.6;
- _Player_js__WEBPACK_IMPORTED_MODULE_6__["Player"].charisma_exp_mult *= 1.6;
- break;
- case AugmentationNames.TITN41Injection:
- _Player_js__WEBPACK_IMPORTED_MODULE_6__["Player"].charisma_mult *= 1.15;
- _Player_js__WEBPACK_IMPORTED_MODULE_6__["Player"].charisma_exp_mult *= 1.15;
- break;
- case AugmentationNames.SpeechProcessor: //Med level
- _Player_js__WEBPACK_IMPORTED_MODULE_6__["Player"].charisma_mult *= 1.2;
- break;
-
- //Hacking augmentations
- case AugmentationNames.BitWire:
- _Player_js__WEBPACK_IMPORTED_MODULE_6__["Player"].hacking_mult *= 1.05;
- break;
- case AugmentationNames.ArtificialBioNeuralNetwork: //Med level
- _Player_js__WEBPACK_IMPORTED_MODULE_6__["Player"].hacking_speed_mult *= 1.03;
- _Player_js__WEBPACK_IMPORTED_MODULE_6__["Player"].hacking_money_mult *= 1.15;
- _Player_js__WEBPACK_IMPORTED_MODULE_6__["Player"].hacking_mult *= 1.12;
- break;
- case AugmentationNames.ArtificialSynapticPotentiation: //Med level
- _Player_js__WEBPACK_IMPORTED_MODULE_6__["Player"].hacking_speed_mult *= 1.02;
- _Player_js__WEBPACK_IMPORTED_MODULE_6__["Player"].hacking_chance_mult *= 1.05;
- _Player_js__WEBPACK_IMPORTED_MODULE_6__["Player"].hacking_exp_mult *= 1.05;
- break;
- case AugmentationNames.EnhancedMyelinSheathing: //Med level
- _Player_js__WEBPACK_IMPORTED_MODULE_6__["Player"].hacking_speed_mult *= 1.03;
- _Player_js__WEBPACK_IMPORTED_MODULE_6__["Player"].hacking_exp_mult *= 1.1;
- _Player_js__WEBPACK_IMPORTED_MODULE_6__["Player"].hacking_mult *= 1.08;
- break;
- case AugmentationNames.SynapticEnhancement: //Low Level
- _Player_js__WEBPACK_IMPORTED_MODULE_6__["Player"].hacking_speed_mult *= 1.03;
- break;
- case AugmentationNames.NeuralRetentionEnhancement: //Med level
- _Player_js__WEBPACK_IMPORTED_MODULE_6__["Player"].hacking_exp_mult *= 1.25;
- break;
- case AugmentationNames.DataJack: //Med low level
- _Player_js__WEBPACK_IMPORTED_MODULE_6__["Player"].hacking_money_mult *= 1.25;
- break;
- case AugmentationNames.ENM: //Medium level
- _Player_js__WEBPACK_IMPORTED_MODULE_6__["Player"].hacking_mult *= 1.08;
- break;
- case AugmentationNames.ENMCore: //Medium level
- _Player_js__WEBPACK_IMPORTED_MODULE_6__["Player"].hacking_speed_mult *= 1.03;
- _Player_js__WEBPACK_IMPORTED_MODULE_6__["Player"].hacking_money_mult *= 1.1;
- _Player_js__WEBPACK_IMPORTED_MODULE_6__["Player"].hacking_chance_mult *= 1.03;
- _Player_js__WEBPACK_IMPORTED_MODULE_6__["Player"].hacking_exp_mult *= 1.07;
- _Player_js__WEBPACK_IMPORTED_MODULE_6__["Player"].hacking_mult *= 1.07;
- break;
- case AugmentationNames.ENMCoreV2: //Medium high level
- _Player_js__WEBPACK_IMPORTED_MODULE_6__["Player"].hacking_speed_mult *= 1.05;
- _Player_js__WEBPACK_IMPORTED_MODULE_6__["Player"].hacking_money_mult *= 1.3;
- _Player_js__WEBPACK_IMPORTED_MODULE_6__["Player"].hacking_chance_mult *= 1.05;
- _Player_js__WEBPACK_IMPORTED_MODULE_6__["Player"].hacking_exp_mult *= 1.15;
- _Player_js__WEBPACK_IMPORTED_MODULE_6__["Player"].hacking_mult *= 1.08;
- break;
- case AugmentationNames.ENMCoreV3: //High level
- _Player_js__WEBPACK_IMPORTED_MODULE_6__["Player"].hacking_speed_mult *= 1.05;
- _Player_js__WEBPACK_IMPORTED_MODULE_6__["Player"].hacking_money_mult *= 1.4;
- _Player_js__WEBPACK_IMPORTED_MODULE_6__["Player"].hacking_chance_mult *= 1.1;
- _Player_js__WEBPACK_IMPORTED_MODULE_6__["Player"].hacking_exp_mult *= 1.25;
- _Player_js__WEBPACK_IMPORTED_MODULE_6__["Player"].hacking_mult *= 1.1;
- break;
- case AugmentationNames.ENMAnalyzeEngine: //High level
- _Player_js__WEBPACK_IMPORTED_MODULE_6__["Player"].hacking_speed_mult *= 1.1;
- break;
- case AugmentationNames.ENMDMA: //High level
- _Player_js__WEBPACK_IMPORTED_MODULE_6__["Player"].hacking_money_mult *= 1.4;
- _Player_js__WEBPACK_IMPORTED_MODULE_6__["Player"].hacking_chance_mult *= 1.2;
- break;
- case AugmentationNames.Neuralstimulator: //Medium Level
- _Player_js__WEBPACK_IMPORTED_MODULE_6__["Player"].hacking_speed_mult *= 1.02;
- _Player_js__WEBPACK_IMPORTED_MODULE_6__["Player"].hacking_chance_mult *= 1.1;
- _Player_js__WEBPACK_IMPORTED_MODULE_6__["Player"].hacking_exp_mult *= 1.12;
- break;
- case AugmentationNames.NeuralAccelerator:
- _Player_js__WEBPACK_IMPORTED_MODULE_6__["Player"].hacking_mult *= 1.1;
- _Player_js__WEBPACK_IMPORTED_MODULE_6__["Player"].hacking_exp_mult *= 1.15;
- _Player_js__WEBPACK_IMPORTED_MODULE_6__["Player"].hacking_money_mult *= 1.2;
- break;
- case AugmentationNames.CranialSignalProcessorsG1:
- _Player_js__WEBPACK_IMPORTED_MODULE_6__["Player"].hacking_speed_mult *= 1.01;
- _Player_js__WEBPACK_IMPORTED_MODULE_6__["Player"].hacking_mult *= 1.05;
- break;
- case AugmentationNames.CranialSignalProcessorsG2:
- _Player_js__WEBPACK_IMPORTED_MODULE_6__["Player"].hacking_speed_mult *= 1.02;
- _Player_js__WEBPACK_IMPORTED_MODULE_6__["Player"].hacking_chance_mult *= 1.05;
- _Player_js__WEBPACK_IMPORTED_MODULE_6__["Player"].hacking_mult *= 1.07;
- break;
- case AugmentationNames.CranialSignalProcessorsG3:
- _Player_js__WEBPACK_IMPORTED_MODULE_6__["Player"].hacking_speed_mult *= 1.02;
- _Player_js__WEBPACK_IMPORTED_MODULE_6__["Player"].hacking_money_mult *= 1.15;
- _Player_js__WEBPACK_IMPORTED_MODULE_6__["Player"].hacking_mult *= 1.09;
- break;
- case AugmentationNames.CranialSignalProcessorsG4:
- _Player_js__WEBPACK_IMPORTED_MODULE_6__["Player"].hacking_speed_mult *= 1.02;
- _Player_js__WEBPACK_IMPORTED_MODULE_6__["Player"].hacking_money_mult *= 1.2;
- _Player_js__WEBPACK_IMPORTED_MODULE_6__["Player"].hacking_grow_mult *= 1.25;
- break;
- case AugmentationNames.CranialSignalProcessorsG5:
- _Player_js__WEBPACK_IMPORTED_MODULE_6__["Player"].hacking_mult *= 1.3;
- _Player_js__WEBPACK_IMPORTED_MODULE_6__["Player"].hacking_money_mult *= 1.25;
- _Player_js__WEBPACK_IMPORTED_MODULE_6__["Player"].hacking_grow_mult *= 1.75;
- break;
- case AugmentationNames.NeuronalDensification:
- _Player_js__WEBPACK_IMPORTED_MODULE_6__["Player"].hacking_mult *= 1.15;
- _Player_js__WEBPACK_IMPORTED_MODULE_6__["Player"].hacking_exp_mult *= 1.1;
- _Player_js__WEBPACK_IMPORTED_MODULE_6__["Player"].hacking_speed_mult *= 1.03;
- break;
-
- //Work augmentations
- case AugmentationNames.NuoptimalInjectorImplant: //Low medium level
- _Player_js__WEBPACK_IMPORTED_MODULE_6__["Player"].company_rep_mult *= 1.2;
- break;
- case AugmentationNames.SpeechEnhancement: //Low level
- _Player_js__WEBPACK_IMPORTED_MODULE_6__["Player"].company_rep_mult *= 1.1;
- _Player_js__WEBPACK_IMPORTED_MODULE_6__["Player"].charisma_mult *= 1.1;
- break;
- case AugmentationNames.FocusWire: //Med level
- _Player_js__WEBPACK_IMPORTED_MODULE_6__["Player"].hacking_exp_mult *= 1.05;
- _Player_js__WEBPACK_IMPORTED_MODULE_6__["Player"].strength_exp_mult *= 1.05;
- _Player_js__WEBPACK_IMPORTED_MODULE_6__["Player"].defense_exp_mult *= 1.05;
- _Player_js__WEBPACK_IMPORTED_MODULE_6__["Player"].dexterity_exp_mult *= 1.05;
- _Player_js__WEBPACK_IMPORTED_MODULE_6__["Player"].agility_exp_mult *= 1.05;
- _Player_js__WEBPACK_IMPORTED_MODULE_6__["Player"].charisma_exp_mult *= 1.05;
- _Player_js__WEBPACK_IMPORTED_MODULE_6__["Player"].company_rep_mult *= 1.1;
- _Player_js__WEBPACK_IMPORTED_MODULE_6__["Player"].work_money_mult *= 1.2;
- break;
- case AugmentationNames.PCDNI: //Med level
- _Player_js__WEBPACK_IMPORTED_MODULE_6__["Player"].company_rep_mult *= 1.3;
- _Player_js__WEBPACK_IMPORTED_MODULE_6__["Player"].hacking_mult *= 1.08;
- break;
- case AugmentationNames.PCDNIOptimizer: //High level
- _Player_js__WEBPACK_IMPORTED_MODULE_6__["Player"].company_rep_mult *= 1.75;
- _Player_js__WEBPACK_IMPORTED_MODULE_6__["Player"].hacking_mult *= 1.1;
- break;
- case AugmentationNames.PCDNINeuralNetwork: //High level
- _Player_js__WEBPACK_IMPORTED_MODULE_6__["Player"].company_rep_mult *= 2;
- _Player_js__WEBPACK_IMPORTED_MODULE_6__["Player"].hacking_mult *= 1.1;
- _Player_js__WEBPACK_IMPORTED_MODULE_6__["Player"].hacking_speed_mult *= 1.05;
- break;
- case AugmentationNames.ADRPheromone1:
- _Player_js__WEBPACK_IMPORTED_MODULE_6__["Player"].company_rep_mult *= 1.1;
- _Player_js__WEBPACK_IMPORTED_MODULE_6__["Player"].faction_rep_mult *= 1.1;
- break;
- case AugmentationNames.ADRPheromone2:
- _Player_js__WEBPACK_IMPORTED_MODULE_6__["Player"].company_rep_mult *= 1.2;
- _Player_js__WEBPACK_IMPORTED_MODULE_6__["Player"].faction_rep_mult *= 1.2;
- break;
-
- //Hacknet Node Augmentations
- case AugmentationNames.HacknetNodeCPUUpload:
- _Player_js__WEBPACK_IMPORTED_MODULE_6__["Player"].hacknet_node_money_mult *= 1.15;
- _Player_js__WEBPACK_IMPORTED_MODULE_6__["Player"].hacknet_node_purchase_cost_mult *= 0.85;
- break;
- case AugmentationNames.HacknetNodeCacheUpload:
- _Player_js__WEBPACK_IMPORTED_MODULE_6__["Player"].hacknet_node_money_mult *= 1.10;
- _Player_js__WEBPACK_IMPORTED_MODULE_6__["Player"].hacknet_node_level_cost_mult *= 0.85;
- break;
- case AugmentationNames.HacknetNodeNICUpload:
- _Player_js__WEBPACK_IMPORTED_MODULE_6__["Player"].hacknet_node_money_mult *= 1.1;
- _Player_js__WEBPACK_IMPORTED_MODULE_6__["Player"].hacknet_node_purchase_cost_mult *= 0.9;
- break;
- case AugmentationNames.HacknetNodeKernelDNI:
- _Player_js__WEBPACK_IMPORTED_MODULE_6__["Player"].hacknet_node_money_mult *= 1.25;
- break;
- case AugmentationNames.HacknetNodeCoreDNI:
- _Player_js__WEBPACK_IMPORTED_MODULE_6__["Player"].hacknet_node_money_mult *= 1.45;
- break;
-
- //Misc augmentations
- case AugmentationNames.NeuroFluxGovernor:
- _Player_js__WEBPACK_IMPORTED_MODULE_6__["Player"].hacking_chance_mult *= 1.01;
- _Player_js__WEBPACK_IMPORTED_MODULE_6__["Player"].hacking_speed_mult *= 1.01;
- _Player_js__WEBPACK_IMPORTED_MODULE_6__["Player"].hacking_money_mult *= 1.01;
- _Player_js__WEBPACK_IMPORTED_MODULE_6__["Player"].hacking_grow_mult *= 1.01;
- _Player_js__WEBPACK_IMPORTED_MODULE_6__["Player"].hacking_mult *= 1.01;
-
- _Player_js__WEBPACK_IMPORTED_MODULE_6__["Player"].strength_mult *= 1.01;
- _Player_js__WEBPACK_IMPORTED_MODULE_6__["Player"].defense_mult *= 1.01;
- _Player_js__WEBPACK_IMPORTED_MODULE_6__["Player"].dexterity_mult *= 1.01;
- _Player_js__WEBPACK_IMPORTED_MODULE_6__["Player"].agility_mult *= 1.01;
- _Player_js__WEBPACK_IMPORTED_MODULE_6__["Player"].charisma_mult *= 1.01;
-
- _Player_js__WEBPACK_IMPORTED_MODULE_6__["Player"].hacking_exp_mult *= 1.01;
- _Player_js__WEBPACK_IMPORTED_MODULE_6__["Player"].strength_exp_mult *= 1.01;
- _Player_js__WEBPACK_IMPORTED_MODULE_6__["Player"].defense_exp_mult *= 1.01;
- _Player_js__WEBPACK_IMPORTED_MODULE_6__["Player"].dexterity_exp_mult *= 1.01;
- _Player_js__WEBPACK_IMPORTED_MODULE_6__["Player"].agility_exp_mult *= 1.01;
- _Player_js__WEBPACK_IMPORTED_MODULE_6__["Player"].charisma_exp_mult *= 1.01;
-
- _Player_js__WEBPACK_IMPORTED_MODULE_6__["Player"].company_rep_mult *= 1.01;
- _Player_js__WEBPACK_IMPORTED_MODULE_6__["Player"].faction_rep_mult *= 1.01;
-
- _Player_js__WEBPACK_IMPORTED_MODULE_6__["Player"].crime_money_mult *= 1.01;
- _Player_js__WEBPACK_IMPORTED_MODULE_6__["Player"].crime_success_mult *= 1.01;
-
- _Player_js__WEBPACK_IMPORTED_MODULE_6__["Player"].hacknet_node_money_mult *= 1.01;
- _Player_js__WEBPACK_IMPORTED_MODULE_6__["Player"].hacknet_node_purchase_cost_mult *= 0.99;
- _Player_js__WEBPACK_IMPORTED_MODULE_6__["Player"].hacknet_node_ram_cost_mult *= 0.99;
- _Player_js__WEBPACK_IMPORTED_MODULE_6__["Player"].hacknet_node_core_cost_mult *= 0.99;
- _Player_js__WEBPACK_IMPORTED_MODULE_6__["Player"].hacknet_node_level_cost_mult *= 0.99;
-
- _Player_js__WEBPACK_IMPORTED_MODULE_6__["Player"].work_money_mult *= 1.01;
-
- if (!reapply) {
- Augmentations[aug.name].level = aug.level;
- for (var i = 0; i < _Player_js__WEBPACK_IMPORTED_MODULE_6__["Player"].augmentations.length; ++i) {
- if (_Player_js__WEBPACK_IMPORTED_MODULE_6__["Player"].augmentations[i].name == AugmentationNames.NeuroFluxGovernor) {
- _Player_js__WEBPACK_IMPORTED_MODULE_6__["Player"].augmentations[i].level = aug.level;
- break;
- }
- }
- }
- break;
- case AugmentationNames.Neurotrainer1: //Low Level
- _Player_js__WEBPACK_IMPORTED_MODULE_6__["Player"].hacking_exp_mult *= 1.1;
- _Player_js__WEBPACK_IMPORTED_MODULE_6__["Player"].strength_exp_mult *= 1.1;
- _Player_js__WEBPACK_IMPORTED_MODULE_6__["Player"].defense_exp_mult *= 1.1;
- _Player_js__WEBPACK_IMPORTED_MODULE_6__["Player"].dexterity_exp_mult *= 1.1;
- _Player_js__WEBPACK_IMPORTED_MODULE_6__["Player"].agility_exp_mult *= 1.1;
- _Player_js__WEBPACK_IMPORTED_MODULE_6__["Player"].charisma_exp_mult *= 1.1;
- break;
- case AugmentationNames.Neurotrainer2: //Medium level
- _Player_js__WEBPACK_IMPORTED_MODULE_6__["Player"].hacking_exp_mult *= 1.15;
- _Player_js__WEBPACK_IMPORTED_MODULE_6__["Player"].strength_exp_mult *= 1.15;
- _Player_js__WEBPACK_IMPORTED_MODULE_6__["Player"].defense_exp_mult *= 1.15;
- _Player_js__WEBPACK_IMPORTED_MODULE_6__["Player"].dexterity_exp_mult *= 1.15;
- _Player_js__WEBPACK_IMPORTED_MODULE_6__["Player"].agility_exp_mult *= 1.15;
- _Player_js__WEBPACK_IMPORTED_MODULE_6__["Player"].charisma_exp_mult *= 1.15;
- break;
- case AugmentationNames.Neurotrainer3: //High Level
- _Player_js__WEBPACK_IMPORTED_MODULE_6__["Player"].hacking_exp_mult *= 1.2;
- _Player_js__WEBPACK_IMPORTED_MODULE_6__["Player"].strength_exp_mult *= 1.2;
- _Player_js__WEBPACK_IMPORTED_MODULE_6__["Player"].defense_exp_mult *= 1.2;
- _Player_js__WEBPACK_IMPORTED_MODULE_6__["Player"].dexterity_exp_mult *= 1.2;
- _Player_js__WEBPACK_IMPORTED_MODULE_6__["Player"].agility_exp_mult *= 1.2;
- _Player_js__WEBPACK_IMPORTED_MODULE_6__["Player"].charisma_exp_mult *= 1.2;
- break;
- case AugmentationNames.Hypersight: //Medium high level
- _Player_js__WEBPACK_IMPORTED_MODULE_6__["Player"].dexterity_mult *= 1.4;
- _Player_js__WEBPACK_IMPORTED_MODULE_6__["Player"].hacking_speed_mult *= 1.03;
- _Player_js__WEBPACK_IMPORTED_MODULE_6__["Player"].hacking_money_mult *= 1.1;
- break;
- case AugmentationNames.LuminCloaking1:
- _Player_js__WEBPACK_IMPORTED_MODULE_6__["Player"].agility_mult *= 1.05;
- _Player_js__WEBPACK_IMPORTED_MODULE_6__["Player"].crime_money_mult *= 1.1;
- break;
- case AugmentationNames.LuminCloaking2:
- _Player_js__WEBPACK_IMPORTED_MODULE_6__["Player"].agility_mult *= 1.1;
- _Player_js__WEBPACK_IMPORTED_MODULE_6__["Player"].defense_mult *= 1.1;
- _Player_js__WEBPACK_IMPORTED_MODULE_6__["Player"].crime_money_mult *= 1.25;
- break;
- case AugmentationNames.HemoRecirculator:
- _Player_js__WEBPACK_IMPORTED_MODULE_6__["Player"].strength_mult *= 1.08;
- _Player_js__WEBPACK_IMPORTED_MODULE_6__["Player"].defense_mult *= 1.08;
- _Player_js__WEBPACK_IMPORTED_MODULE_6__["Player"].agility_mult *= 1.08;
- _Player_js__WEBPACK_IMPORTED_MODULE_6__["Player"].dexterity_mult *= 1.08;
- break;
- case AugmentationNames.SmartSonar:
- _Player_js__WEBPACK_IMPORTED_MODULE_6__["Player"].dexterity_mult *= 1.1;
- _Player_js__WEBPACK_IMPORTED_MODULE_6__["Player"].dexterity_exp_mult *= 1.15;
- _Player_js__WEBPACK_IMPORTED_MODULE_6__["Player"].crime_money_mult *= 1.25;
- break;
- case AugmentationNames.PowerRecirculator:
- _Player_js__WEBPACK_IMPORTED_MODULE_6__["Player"].hacking_mult *= 1.05;
- _Player_js__WEBPACK_IMPORTED_MODULE_6__["Player"].strength_mult *= 1.05;
- _Player_js__WEBPACK_IMPORTED_MODULE_6__["Player"].defense_mult *= 1.05;
- _Player_js__WEBPACK_IMPORTED_MODULE_6__["Player"].dexterity_mult *= 1.05;
- _Player_js__WEBPACK_IMPORTED_MODULE_6__["Player"].agility_mult *= 1.05;
- _Player_js__WEBPACK_IMPORTED_MODULE_6__["Player"].charisma_mult *= 1.05;
- _Player_js__WEBPACK_IMPORTED_MODULE_6__["Player"].hacking_exp_mult *= 1.1;
- _Player_js__WEBPACK_IMPORTED_MODULE_6__["Player"].strength_exp_mult *= 1.1;
- _Player_js__WEBPACK_IMPORTED_MODULE_6__["Player"].defense_exp_mult *= 1.1;
- _Player_js__WEBPACK_IMPORTED_MODULE_6__["Player"].dexterity_exp_mult *= 1.1;
- _Player_js__WEBPACK_IMPORTED_MODULE_6__["Player"].agility_exp_mult *= 1.1;
- _Player_js__WEBPACK_IMPORTED_MODULE_6__["Player"].charisma_exp_mult *= 1.1;
- break;
- //Unique augmentations (for factions)
- case AugmentationNames.QLink:
- _Player_js__WEBPACK_IMPORTED_MODULE_6__["Player"].hacking_speed_mult *= 1.1;
- _Player_js__WEBPACK_IMPORTED_MODULE_6__["Player"].hacking_chance_mult *= 1.3;
- _Player_js__WEBPACK_IMPORTED_MODULE_6__["Player"].hacking_money_mult *= 2;
- break;
- case AugmentationNames.TheRedPill:
- break;
- case AugmentationNames.SPTN97:
- _Player_js__WEBPACK_IMPORTED_MODULE_6__["Player"].strength_mult *= 1.75;
- _Player_js__WEBPACK_IMPORTED_MODULE_6__["Player"].defense_mult *= 1.75;
- _Player_js__WEBPACK_IMPORTED_MODULE_6__["Player"].dexterity_mult *= 1.75;
- _Player_js__WEBPACK_IMPORTED_MODULE_6__["Player"].agility_mult *= 1.75;
- _Player_js__WEBPACK_IMPORTED_MODULE_6__["Player"].hacking_mult *= 1.15;
- break;
- case AugmentationNames.HiveMind:
- _Player_js__WEBPACK_IMPORTED_MODULE_6__["Player"].hacking_grow_mult *= 3;
- break;
- case AugmentationNames.CordiARCReactor:
- _Player_js__WEBPACK_IMPORTED_MODULE_6__["Player"].strength_mult *= 1.35;
- _Player_js__WEBPACK_IMPORTED_MODULE_6__["Player"].defense_mult *= 1.35;
- _Player_js__WEBPACK_IMPORTED_MODULE_6__["Player"].dexterity_mult *= 1.35;
- _Player_js__WEBPACK_IMPORTED_MODULE_6__["Player"].agility_mult *= 1.35;
- _Player_js__WEBPACK_IMPORTED_MODULE_6__["Player"].strength_exp_mult *= 1.35;
- _Player_js__WEBPACK_IMPORTED_MODULE_6__["Player"].defense_exp_mult *= 1.35;
- _Player_js__WEBPACK_IMPORTED_MODULE_6__["Player"].dexterity_exp_mult *= 1.35;
- _Player_js__WEBPACK_IMPORTED_MODULE_6__["Player"].agility_exp_mult *= 1.35;
- break;
- case AugmentationNames.SmartJaw:
- _Player_js__WEBPACK_IMPORTED_MODULE_6__["Player"].charisma_mult *= 1.5;
- _Player_js__WEBPACK_IMPORTED_MODULE_6__["Player"].charisma_exp_mult *= 1.5;
- _Player_js__WEBPACK_IMPORTED_MODULE_6__["Player"].company_rep_mult *= 1.25;
- _Player_js__WEBPACK_IMPORTED_MODULE_6__["Player"].faction_rep_mult *= 1.25;
- break;
- case AugmentationNames.Neotra:
- _Player_js__WEBPACK_IMPORTED_MODULE_6__["Player"].strength_mult *= 1.55;
- _Player_js__WEBPACK_IMPORTED_MODULE_6__["Player"].defense_mult *= 1.55;
- break;
- case AugmentationNames.Xanipher:
- _Player_js__WEBPACK_IMPORTED_MODULE_6__["Player"].hacking_mult *= 1.2;
- _Player_js__WEBPACK_IMPORTED_MODULE_6__["Player"].strength_mult *= 1.2;
- _Player_js__WEBPACK_IMPORTED_MODULE_6__["Player"].defense_mult *= 1.2;
- _Player_js__WEBPACK_IMPORTED_MODULE_6__["Player"].dexterity_mult *= 1.2;
- _Player_js__WEBPACK_IMPORTED_MODULE_6__["Player"].agility_mult *= 1.2;
- _Player_js__WEBPACK_IMPORTED_MODULE_6__["Player"].charisma_mult *= 1.2;
- _Player_js__WEBPACK_IMPORTED_MODULE_6__["Player"].hacking_exp_mult *= 1.15;
- _Player_js__WEBPACK_IMPORTED_MODULE_6__["Player"].strength_exp_mult *= 1.15;
- _Player_js__WEBPACK_IMPORTED_MODULE_6__["Player"].defense_exp_mult *= 1.15;
- _Player_js__WEBPACK_IMPORTED_MODULE_6__["Player"].dexterity_exp_mult *= 1.15;
- _Player_js__WEBPACK_IMPORTED_MODULE_6__["Player"].agility_exp_mult *= 1.15;
- _Player_js__WEBPACK_IMPORTED_MODULE_6__["Player"].charisma_exp_mult *= 1.15;
- break;
- case AugmentationNames.nextSENS:
- _Player_js__WEBPACK_IMPORTED_MODULE_6__["Player"].hacking_mult *= 1.2;
- _Player_js__WEBPACK_IMPORTED_MODULE_6__["Player"].strength_mult *= 1.2;
- _Player_js__WEBPACK_IMPORTED_MODULE_6__["Player"].defense_mult *= 1.2;
- _Player_js__WEBPACK_IMPORTED_MODULE_6__["Player"].dexterity_mult *= 1.2;
- _Player_js__WEBPACK_IMPORTED_MODULE_6__["Player"].agility_mult *= 1.2;
- _Player_js__WEBPACK_IMPORTED_MODULE_6__["Player"].charisma_mult *= 1.2;
- break;
- case AugmentationNames.OmniTekInfoLoad:
- _Player_js__WEBPACK_IMPORTED_MODULE_6__["Player"].hacking_mult *= 1.2;
- _Player_js__WEBPACK_IMPORTED_MODULE_6__["Player"].hacking_exp_mult *= 1.25;
- break;
- case AugmentationNames.PhotosyntheticCells:
- _Player_js__WEBPACK_IMPORTED_MODULE_6__["Player"].strength_mult *= 1.4;
- _Player_js__WEBPACK_IMPORTED_MODULE_6__["Player"].defense_mult *= 1.4;
- _Player_js__WEBPACK_IMPORTED_MODULE_6__["Player"].agility_mult *= 1.4;
- break;
- case AugmentationNames.Neurolink:
- _Player_js__WEBPACK_IMPORTED_MODULE_6__["Player"].hacking_mult *= 1.15;
- _Player_js__WEBPACK_IMPORTED_MODULE_6__["Player"].hacking_exp_mult *= 1.2;
- _Player_js__WEBPACK_IMPORTED_MODULE_6__["Player"].hacking_chance_mult *= 1.1;
- _Player_js__WEBPACK_IMPORTED_MODULE_6__["Player"].hacking_speed_mult *= 1.05;
- break;
- case AugmentationNames.TheBlackHand:
- _Player_js__WEBPACK_IMPORTED_MODULE_6__["Player"].strength_mult *= 1.15;
- _Player_js__WEBPACK_IMPORTED_MODULE_6__["Player"].dexterity_mult *= 1.15;
- _Player_js__WEBPACK_IMPORTED_MODULE_6__["Player"].hacking_mult *= 1.1;
- _Player_js__WEBPACK_IMPORTED_MODULE_6__["Player"].hacking_speed_mult *= 1.02;
- _Player_js__WEBPACK_IMPORTED_MODULE_6__["Player"].hacking_money_mult *= 1.1;
- break;
- case AugmentationNames.CRTX42AA:
- _Player_js__WEBPACK_IMPORTED_MODULE_6__["Player"].hacking_mult *= 1.08;
- _Player_js__WEBPACK_IMPORTED_MODULE_6__["Player"].hacking_exp_mult *= 1.15;
- break;
- case AugmentationNames.Neuregen:
- _Player_js__WEBPACK_IMPORTED_MODULE_6__["Player"].hacking_exp_mult *= 1.4;
- break;
- case AugmentationNames.CashRoot:
- break;
- case AugmentationNames.NutriGen:
- _Player_js__WEBPACK_IMPORTED_MODULE_6__["Player"].strength_exp_mult *= 1.2;
- _Player_js__WEBPACK_IMPORTED_MODULE_6__["Player"].defense_exp_mult *= 1.2;
- _Player_js__WEBPACK_IMPORTED_MODULE_6__["Player"].dexterity_exp_mult *= 1.2;
- _Player_js__WEBPACK_IMPORTED_MODULE_6__["Player"].agility_exp_mult *= 1.2;
- break;
- case AugmentationNames.INFRARet:
- _Player_js__WEBPACK_IMPORTED_MODULE_6__["Player"].crime_success_mult *= 1.25;
- _Player_js__WEBPACK_IMPORTED_MODULE_6__["Player"].crime_money_mult *= 1.1;
- _Player_js__WEBPACK_IMPORTED_MODULE_6__["Player"].dexterity_mult *= 1.1;
- break;
- case AugmentationNames.DermaForce:
- _Player_js__WEBPACK_IMPORTED_MODULE_6__["Player"].defense_mult *= 1.4;
- break;
- case AugmentationNames.GrapheneBrachiBlades:
- _Player_js__WEBPACK_IMPORTED_MODULE_6__["Player"].strength_mult *= 1.4;
- _Player_js__WEBPACK_IMPORTED_MODULE_6__["Player"].defense_mult *= 1.4;
- _Player_js__WEBPACK_IMPORTED_MODULE_6__["Player"].crime_success_mult *= 1.1;
- _Player_js__WEBPACK_IMPORTED_MODULE_6__["Player"].crime_money_mult *= 1.3;
- break;
- case AugmentationNames.GrapheneBionicArms:
- _Player_js__WEBPACK_IMPORTED_MODULE_6__["Player"].strength_mult *= 1.85;
- _Player_js__WEBPACK_IMPORTED_MODULE_6__["Player"].dexterity_mult *= 1.85;
- break;
- case AugmentationNames.BrachiBlades:
- _Player_js__WEBPACK_IMPORTED_MODULE_6__["Player"].strength_mult *= 1.15;
- _Player_js__WEBPACK_IMPORTED_MODULE_6__["Player"].defense_mult *= 1.15;
- _Player_js__WEBPACK_IMPORTED_MODULE_6__["Player"].crime_success_mult *= 1.1;
- _Player_js__WEBPACK_IMPORTED_MODULE_6__["Player"].crime_money_mult *= 1.15;
- break;
- case AugmentationNames.BionicArms:
- _Player_js__WEBPACK_IMPORTED_MODULE_6__["Player"].strength_mult *= 1.3;
- _Player_js__WEBPACK_IMPORTED_MODULE_6__["Player"].dexterity_mult *= 1.3;
- break;
- case AugmentationNames.SNA:
- _Player_js__WEBPACK_IMPORTED_MODULE_6__["Player"].work_money_mult *= 1.1;
- _Player_js__WEBPACK_IMPORTED_MODULE_6__["Player"].company_rep_mult *= 1.15;
- _Player_js__WEBPACK_IMPORTED_MODULE_6__["Player"].faction_rep_mult *= 1.15;
- break;
-
- //Bladeburner augmentations
- case AugmentationNames.EsperEyewear:
- _Player_js__WEBPACK_IMPORTED_MODULE_6__["Player"].bladeburner_success_chance_mult *= 1.03;
- _Player_js__WEBPACK_IMPORTED_MODULE_6__["Player"].dexterity_mult *= 1.03;
- break;
- case AugmentationNames.EMS4Recombination:
- _Player_js__WEBPACK_IMPORTED_MODULE_6__["Player"].bladeburner_success_chance_mult *= 1.03;
- _Player_js__WEBPACK_IMPORTED_MODULE_6__["Player"].bladeburner_analysis_mult *= 1.05;
- _Player_js__WEBPACK_IMPORTED_MODULE_6__["Player"].bladeburner_stamina_gain_mult *= 1.01;
- break;
- case AugmentationNames.OrionShoulder:
- _Player_js__WEBPACK_IMPORTED_MODULE_6__["Player"].defense_mult *= 1.05;
- _Player_js__WEBPACK_IMPORTED_MODULE_6__["Player"].strength_mult *= 1.03;
- _Player_js__WEBPACK_IMPORTED_MODULE_6__["Player"].dexterity_mult *= 1.03;
- _Player_js__WEBPACK_IMPORTED_MODULE_6__["Player"].bladeburner_success_chance_mult *= 1.04;
- break;
- case AugmentationNames.HyperionV1:
- _Player_js__WEBPACK_IMPORTED_MODULE_6__["Player"].bladeburner_success_chance_mult *= 1.05;
- break;
- case AugmentationNames.HyperionV2:
- _Player_js__WEBPACK_IMPORTED_MODULE_6__["Player"].bladeburner_success_chance_mult *= 1.07;
- break;
- case AugmentationNames.GolemSerum:
- _Player_js__WEBPACK_IMPORTED_MODULE_6__["Player"].strength_mult *= 1.05;
- _Player_js__WEBPACK_IMPORTED_MODULE_6__["Player"].defense_mult *= 1.05;
- _Player_js__WEBPACK_IMPORTED_MODULE_6__["Player"].dexterity_mult *= 1.05;
- _Player_js__WEBPACK_IMPORTED_MODULE_6__["Player"].agility_mult *= 1.05;
- _Player_js__WEBPACK_IMPORTED_MODULE_6__["Player"].bladeburner_stamina_gain_mult *= 1.05;
- break;
- case AugmentationNames.VangelisVirus:
- _Player_js__WEBPACK_IMPORTED_MODULE_6__["Player"].dexterity_exp_mult *= 1.05;
- _Player_js__WEBPACK_IMPORTED_MODULE_6__["Player"].bladeburner_analysis_mult *= 1.1;
- _Player_js__WEBPACK_IMPORTED_MODULE_6__["Player"].bladeburner_success_chance_mult *= 1.04;
- break;
- case AugmentationNames.VangelisVirus3:
- _Player_js__WEBPACK_IMPORTED_MODULE_6__["Player"].defense_exp_mult *= 1.05;
- _Player_js__WEBPACK_IMPORTED_MODULE_6__["Player"].dexterity_exp_mult *= 1.05;
- _Player_js__WEBPACK_IMPORTED_MODULE_6__["Player"].bladeburner_analysis_mult *= 1.15;
- _Player_js__WEBPACK_IMPORTED_MODULE_6__["Player"].bladeburner_success_chance_mult *= 1.05;
- break;
- case AugmentationNames.INTERLINKED:
- _Player_js__WEBPACK_IMPORTED_MODULE_6__["Player"].strength_exp_mult *= 1.04;
- _Player_js__WEBPACK_IMPORTED_MODULE_6__["Player"].defense_exp_mult *= 1.04;
- _Player_js__WEBPACK_IMPORTED_MODULE_6__["Player"].dexterity_exp_mult *= 1.04;
- _Player_js__WEBPACK_IMPORTED_MODULE_6__["Player"].agility_exp_mult *= 1.04;
- _Player_js__WEBPACK_IMPORTED_MODULE_6__["Player"].bladeburner_max_stamina_mult *= 1.1;
- break;
- case AugmentationNames.BladeRunner:
- _Player_js__WEBPACK_IMPORTED_MODULE_6__["Player"].agility_mult *= 1.05;
- _Player_js__WEBPACK_IMPORTED_MODULE_6__["Player"].bladeburner_max_stamina_mult *= 1.05;
- _Player_js__WEBPACK_IMPORTED_MODULE_6__["Player"].bladeburner_stamina_gain_mult *= 1.05;
- break;
- case AugmentationNames.BladeArmor:
- _Player_js__WEBPACK_IMPORTED_MODULE_6__["Player"].strength_mult *= 1.02;
- _Player_js__WEBPACK_IMPORTED_MODULE_6__["Player"].defense_mult *= 1.02;
- _Player_js__WEBPACK_IMPORTED_MODULE_6__["Player"].dexterity_mult *= 1.02;
- _Player_js__WEBPACK_IMPORTED_MODULE_6__["Player"].agility_mult *= 1.02;
- _Player_js__WEBPACK_IMPORTED_MODULE_6__["Player"].bladeburner_stamina_gain_mult *= 1.02;
- _Player_js__WEBPACK_IMPORTED_MODULE_6__["Player"].bladeburner_success_chance_mult *= 1.03;
- break;
- case AugmentationNames.BladeArmorPowerCells:
- _Player_js__WEBPACK_IMPORTED_MODULE_6__["Player"].bladeburner_success_chance_mult *= 1.05;
- _Player_js__WEBPACK_IMPORTED_MODULE_6__["Player"].bladeburner_stamina_gain_mult *= 1.02;
- _Player_js__WEBPACK_IMPORTED_MODULE_6__["Player"].bladeburner_max_stamina_mult *= 1.05;
- break;
- case AugmentationNames.BladeArmorEnergyShielding:
- _Player_js__WEBPACK_IMPORTED_MODULE_6__["Player"].defense_mult *= 1.05;
- _Player_js__WEBPACK_IMPORTED_MODULE_6__["Player"].bladeburner_success_chance_mult *= 1.06;
- break;
- case AugmentationNames.BladeArmorUnibeam:
- _Player_js__WEBPACK_IMPORTED_MODULE_6__["Player"].bladeburner_success_chance_mult *= 1.08;
- break;
- case AugmentationNames.BladeArmorOmnibeam:
- _Player_js__WEBPACK_IMPORTED_MODULE_6__["Player"].bladeburner_success_chance_mult *= 1.1;
- break;
- case AugmentationNames.BladeArmorIPU:
- _Player_js__WEBPACK_IMPORTED_MODULE_6__["Player"].bladeburner_analysis_mult *= 1.15;
- _Player_js__WEBPACK_IMPORTED_MODULE_6__["Player"].bladeburner_success_chance_mult *= 1.02;
- break;
- default:
- throw new Error("ERROR: No such augmentation!");
- return;
- }
-
- if (aug.name == AugmentationNames.NeuroFluxGovernor) {
- for (var i = 0; i < _Player_js__WEBPACK_IMPORTED_MODULE_6__["Player"].augmentations.length; ++i) {
- if (_Player_js__WEBPACK_IMPORTED_MODULE_6__["Player"].augmentations[i].name == AugmentationNames.NeuroFluxGovernor) {
- //Already have this aug, just upgrade the level
- return;
- }
- }
- }
-
- if (!reapply) {
- var ownedAug = new PlayerOwnedAugmentation(aug.name);
- _Player_js__WEBPACK_IMPORTED_MODULE_6__["Player"].augmentations.push(ownedAug);
- }
-}
-
-function PlayerOwnedAugmentation(name) {
- this.name = name;
- this.level = 1;
-}
-
-function installAugmentations(cbScript=null) {
- if (_Player_js__WEBPACK_IMPORTED_MODULE_6__["Player"].queuedAugmentations.length == 0) {
- Object(_utils_DialogBox_js__WEBPACK_IMPORTED_MODULE_12__["dialogBoxCreate"])("You have not purchased any Augmentations to install!");
- return false;
- }
- var augmentationList = "";
- for (var i = 0; i < _Player_js__WEBPACK_IMPORTED_MODULE_6__["Player"].queuedAugmentations.length; ++i) {
- var aug = Augmentations[_Player_js__WEBPACK_IMPORTED_MODULE_6__["Player"].queuedAugmentations[i].name];
- if (aug == null) {
- console.log("ERROR. Invalid augmentation");
- continue;
- }
- applyAugmentation(_Player_js__WEBPACK_IMPORTED_MODULE_6__["Player"].queuedAugmentations[i]);
- augmentationList += (aug.name + "
");
- }
- _Player_js__WEBPACK_IMPORTED_MODULE_6__["Player"].queuedAugmentations = [];
- Object(_utils_DialogBox_js__WEBPACK_IMPORTED_MODULE_12__["dialogBoxCreate"])("You slowly drift to sleep as scientists put you under in order " +
- "to install the following Augmentations:
" + augmentationList +
- "
You wake up in your home...you feel different...");
- Object(_Prestige_js__WEBPACK_IMPORTED_MODULE_7__["prestigeAugmentation"])();
-
- //Run a script after prestiging
- if (cbScript && Object(_utils_StringHelperFunctions_js__WEBPACK_IMPORTED_MODULE_15__["isString"])(cbScript)) {
- var home = _Player_js__WEBPACK_IMPORTED_MODULE_6__["Player"].getHomeComputer();
- for (var i = 0; i < home.scripts.length; ++i) {
- if (home.scripts[i].filename === cbScript) {
- var script = home.scripts[i];
- var ramUsage = script.ramUsage;
- var ramAvailable = home.maxRam - home.ramUsed;
- if (ramUsage > ramAvailable) {
- return; //Not enough RAM
- }
- var runningScriptObj = new _Script_js__WEBPACK_IMPORTED_MODULE_9__["RunningScript"](script, []); //No args
- runningScriptObj.threads = 1; //Only 1 thread
- home.runningScripts.push(runningScriptObj);
- Object(_NetscriptWorker_js__WEBPACK_IMPORTED_MODULE_5__["addWorkerScript"])(runningScriptObj, home);
- }
- }
- }
-}
-
-function augmentationExists(name) {
- return Augmentations.hasOwnProperty(name);
-}
-
-//Used for testing balance
-function giveAllAugmentations() {
- for (var name in Augmentations) {
- var aug = Augmentations[name];
- if (aug == null) {continue;}
- var ownedAug = new PlayerOwnedAugmentation(name);
- _Player_js__WEBPACK_IMPORTED_MODULE_6__["Player"].augmentations.push(ownedAug);
- }
- _Player_js__WEBPACK_IMPORTED_MODULE_6__["Player"].reapplyAllAugmentations();
-}
-
-function displayAugmentationsContent() {
- Object(_utils_HelperFunctions_js__WEBPACK_IMPORTED_MODULE_13__["removeChildrenFromElement"])(_engine_js__WEBPACK_IMPORTED_MODULE_2__["Engine"].Display.augmentationsContent);
- _engine_js__WEBPACK_IMPORTED_MODULE_2__["Engine"].Display.augmentationsContent.appendChild(Object(_utils_HelperFunctions_js__WEBPACK_IMPORTED_MODULE_13__["createElement"])("h1", {
- innerText:"Purchased Augmentations",
- }));
-
- //Bladeburner text, once mechanic is unlocked
- var bladeburnerText = "\n";
- if (_Player_js__WEBPACK_IMPORTED_MODULE_6__["Player"].bitNodeN === 6 || _NetscriptFunctions_js__WEBPACK_IMPORTED_MODULE_4__["hasBladeburnerSF"]) {
- bladeburnerText = "Bladeburner Progress\n\n";
- }
-
- _engine_js__WEBPACK_IMPORTED_MODULE_2__["Engine"].Display.augmentationsContent.appendChild(Object(_utils_HelperFunctions_js__WEBPACK_IMPORTED_MODULE_13__["createElement"])("pre", {
- width:"70%", whiteSpace:"pre-wrap", display:"block",
- innerText:"Below is a list of all Augmentations you have purchased but not yet installed. Click the button below to install them.\n" +
- "WARNING: Installing your Augmentations resets most of your progress, including:\n\n" +
- "Stats/Skill levels and Experience\n" +
- "Money\n" +
- "Scripts on every computer but your home computer\n" +
- "Purchased servers\n" +
- "Hacknet Nodes\n" +
- "Faction/Company reputation\n" +
- "Stocks\n" +
- bladeburnerText +
- "Installing Augmentations lets you start over with the perks and benefits granted by all " +
- "of the Augmentations you have ever installed. Also, you will keep any scripts and RAM/Core upgrades " +
- "on your home computer (but you will lose all programs besides NUKE.exe)."
- }));
-
- //Install Augmentations button
- _engine_js__WEBPACK_IMPORTED_MODULE_2__["Engine"].Display.augmentationsContent.appendChild(Object(_utils_HelperFunctions_js__WEBPACK_IMPORTED_MODULE_13__["createElement"])("a", {
- class:"a-link-button", innerText:"Install Augmentations",
- tooltip:"'I never asked for this'",
- clickListener:()=>{
- installAugmentations();
- return false;
- }
- }));
-
- //Backup button
- _engine_js__WEBPACK_IMPORTED_MODULE_2__["Engine"].Display.augmentationsContent.appendChild(Object(_utils_HelperFunctions_js__WEBPACK_IMPORTED_MODULE_13__["createElement"])("a", {
- class:"a-link-button flashing-button", innerText:"Backup Save (Export)",
- tooltip:"It's always a good idea to backup/export your save!",
- clickListener:()=>{
- _SaveObject_js__WEBPACK_IMPORTED_MODULE_8__["saveObject"].exportGame();
- return false;
- }
- }));
-
- //Purchased/queued augmentations list
- var queuedAugmentationsList = Object(_utils_HelperFunctions_js__WEBPACK_IMPORTED_MODULE_13__["createElement"])("ul", {class:"augmentations-list"});
-
- for (var i = 0; i < _Player_js__WEBPACK_IMPORTED_MODULE_6__["Player"].queuedAugmentations.length; ++i) {
- var augName = _Player_js__WEBPACK_IMPORTED_MODULE_6__["Player"].queuedAugmentations[i].name;
- var aug = Augmentations[augName];
-
- var displayName = augName;
- if (augName === AugmentationNames.NeuroFluxGovernor) {
- displayName += " - Level " + (_Player_js__WEBPACK_IMPORTED_MODULE_6__["Player"].queuedAugmentations[i].level);
- }
-
- var accordion = Object(_utils_HelperFunctions_js__WEBPACK_IMPORTED_MODULE_13__["createAccordionElement"])({hdrText:displayName, panelText:aug.info});
- queuedAugmentationsList.appendChild(accordion[0]);
- }
- _engine_js__WEBPACK_IMPORTED_MODULE_2__["Engine"].Display.augmentationsContent.appendChild(queuedAugmentationsList);
-
- //Installed augmentations list
- _engine_js__WEBPACK_IMPORTED_MODULE_2__["Engine"].Display.augmentationsContent.appendChild(Object(_utils_HelperFunctions_js__WEBPACK_IMPORTED_MODULE_13__["createElement"])("h1", {
- innerText:"Installed Augmentations", marginTop:"8px",
- }));
- _engine_js__WEBPACK_IMPORTED_MODULE_2__["Engine"].Display.augmentationsContent.appendChild(Object(_utils_HelperFunctions_js__WEBPACK_IMPORTED_MODULE_13__["createElement"])("p", {
- width:"70%", whiteSpace:"pre-wrap",
- innerText:"List of all Augmentations (including Source Files) that have been " +
- "installed. You have gained the effects of these Augmentations."
- }));
-
- var augmentationsList = Object(_utils_HelperFunctions_js__WEBPACK_IMPORTED_MODULE_13__["createElement"])("ul", {class:"augmentations-list"});
-
- //Expand/Collapse All buttons
- _engine_js__WEBPACK_IMPORTED_MODULE_2__["Engine"].Display.augmentationsContent.appendChild(Object(_utils_HelperFunctions_js__WEBPACK_IMPORTED_MODULE_13__["createElement"])("a", {
- class:"a-link-button", fontSize:"14px", innerText:"Expand All", display:"inline-block",
- clickListener:()=>{
- var allHeaders = augmentationsList.getElementsByClassName("accordion-header");
- for (var i = 0; i < allHeaders.length; ++i) {
- if (!allHeaders[i].classList.contains("active")) {allHeaders[i].click();}
- }
- }
- }));
- _engine_js__WEBPACK_IMPORTED_MODULE_2__["Engine"].Display.augmentationsContent.appendChild(Object(_utils_HelperFunctions_js__WEBPACK_IMPORTED_MODULE_13__["createElement"])("a", {
- class:"a-link-button", fontSize:"14px", innerText:"Collapse All", display:"inline-block",
- clickListener:()=>{
- var allHeaders = augmentationsList.getElementsByClassName("accordion-header");
- for (var i = 0; i < allHeaders.length; ++i) {
- if (allHeaders[i].classList.contains("active")) {allHeaders[i].click();}
- }
- }
- }));
-
- //Sort Buttons
- _engine_js__WEBPACK_IMPORTED_MODULE_2__["Engine"].Display.augmentationsContent.appendChild(Object(_utils_HelperFunctions_js__WEBPACK_IMPORTED_MODULE_13__["createElement"])("a", {
- class:"a-link-button", fontSize:"14px", innerText:"Sort in Order",
- tooltip:"Sorts the Augmentations alphabetically and Source Files in numerical order (1, 2, 3,...)",
- clickListener:()=>{
- Object(_utils_HelperFunctions_js__WEBPACK_IMPORTED_MODULE_13__["removeChildrenFromElement"])(augmentationsList);
-
- //Create a copy of Player's Source Files and augs array and sort them
- var sourceFiles = _Player_js__WEBPACK_IMPORTED_MODULE_6__["Player"].sourceFiles.slice();
- var augs = _Player_js__WEBPACK_IMPORTED_MODULE_6__["Player"].augmentations.slice();
- sourceFiles.sort((sf1, sf2)=>{
- return sf1.n - sf2.n;
- });
- augs.sort((aug1, aug2)=>{
- return aug1.name <= aug2.name ? -1 : 1;
- });
- displaySourceFiles(augmentationsList, sourceFiles);
- displayAugmentations(augmentationsList, augs);
- }
- }));
-
- _engine_js__WEBPACK_IMPORTED_MODULE_2__["Engine"].Display.augmentationsContent.appendChild(Object(_utils_HelperFunctions_js__WEBPACK_IMPORTED_MODULE_13__["createElement"])("a", {
- class:"a-link-button", fontSize:"14px", innerText:"Sort by Acquirement Time",
- tooltip:"Sorts the Augmentations and Source Files based on when you acquired them (same as default)",
- clickListener:()=>{
- Object(_utils_HelperFunctions_js__WEBPACK_IMPORTED_MODULE_13__["removeChildrenFromElement"])(augmentationsList);
- displaySourceFiles(augmentationsList, _Player_js__WEBPACK_IMPORTED_MODULE_6__["Player"].sourceFiles);
- displayAugmentations(augmentationsList, _Player_js__WEBPACK_IMPORTED_MODULE_6__["Player"].augmentations);
- }
- }));
-
- //Source Files - Temporary...Will probably put in a separate pane Later
- displaySourceFiles(augmentationsList, _Player_js__WEBPACK_IMPORTED_MODULE_6__["Player"].sourceFiles);
- displayAugmentations(augmentationsList, _Player_js__WEBPACK_IMPORTED_MODULE_6__["Player"].augmentations);
- _engine_js__WEBPACK_IMPORTED_MODULE_2__["Engine"].Display.augmentationsContent.appendChild(augmentationsList);
-}
-
-//Creates the accordion elements to display Augmentations
-// @listElement - List DOM element to append accordion elements to
-// @augs - Array of Augmentation objects
-function displayAugmentations(listElement, augs) {
- for (var i = 0; i < augs.length; ++i) {
- var augName = augs[i].name;
- var aug = Augmentations[augName];
-
- var displayName = augName;
- if (augName === AugmentationNames.NeuroFluxGovernor) {
- displayName += " - Level " + (augs[i].level);
- }
- var accordion = Object(_utils_HelperFunctions_js__WEBPACK_IMPORTED_MODULE_13__["createAccordionElement"])({hdrText:displayName, panelText:aug.info});
- listElement.appendChild(accordion[0]);
- }
-}
-
-//Creates the accordion elements to display Source Files
-// @listElement - List DOM element to append accordion elements to
-// @sourceFiles - Array of Source File objects
-function displaySourceFiles(listElement, sourceFiles) {
- for (var i = 0; i < sourceFiles.length; ++i) {
- var srcFileKey = "SourceFile" + sourceFiles[i].n;
- var sourceFileObject = _SourceFile_js__WEBPACK_IMPORTED_MODULE_11__["SourceFiles"][srcFileKey];
- if (sourceFileObject == null) {
- console.log("ERROR: Invalid source file number: " + sourceFiles[i].n);
- continue;
- }
- var accordion = Object(_utils_HelperFunctions_js__WEBPACK_IMPORTED_MODULE_13__["createAccordionElement"])({
- hdrText:sourceFileObject.name + "
" + "Level " + (sourceFiles[i].lvl) + " / 3",
- panelText:sourceFileObject.info
- });
-
- listElement.appendChild(accordion[0]);
- }
-}
-
-
-
-
+/* WEBPACK VAR INJECTION */}.call(this, __webpack_require__(40)))
/***/ }),
/* 20 */
-/*!***********************!*\
- !*** ./src/Crimes.js ***!
- \***********************/
-/***/ (function(module, __webpack_exports__, __webpack_require__) {
-
-"use strict";
-__webpack_require__.r(__webpack_exports__);
-/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "commitShopliftCrime", function() { return commitShopliftCrime; });
-/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "commitRobStoreCrime", function() { return commitRobStoreCrime; });
-/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "commitMugCrime", function() { return commitMugCrime; });
-/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "commitLarcenyCrime", function() { return commitLarcenyCrime; });
-/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "commitDealDrugsCrime", function() { return commitDealDrugsCrime; });
-/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "commitBondForgeryCrime", function() { return commitBondForgeryCrime; });
-/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "commitTraffickArmsCrime", function() { return commitTraffickArmsCrime; });
-/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "commitHomicideCrime", function() { return commitHomicideCrime; });
-/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "commitGrandTheftAutoCrime", function() { return commitGrandTheftAutoCrime; });
-/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "commitKidnapCrime", function() { return commitKidnapCrime; });
-/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "commitAssassinationCrime", function() { return commitAssassinationCrime; });
-/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "commitHeistCrime", function() { return commitHeistCrime; });
-/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "determineCrimeSuccess", function() { return determineCrimeSuccess; });
-/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "determineCrimeChanceShoplift", function() { return determineCrimeChanceShoplift; });
-/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "determineCrimeChanceRobStore", function() { return determineCrimeChanceRobStore; });
-/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "determineCrimeChanceMug", function() { return determineCrimeChanceMug; });
-/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "determineCrimeChanceLarceny", function() { return determineCrimeChanceLarceny; });
-/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "determineCrimeChanceDealDrugs", function() { return determineCrimeChanceDealDrugs; });
-/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "determineCrimeChanceBondForgery", function() { return determineCrimeChanceBondForgery; });
-/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "determineCrimeChanceTraffickArms", function() { return determineCrimeChanceTraffickArms; });
-/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "determineCrimeChanceHomicide", function() { return determineCrimeChanceHomicide; });
-/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "determineCrimeChanceGrandTheftAuto", function() { return determineCrimeChanceGrandTheftAuto; });
-/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "determineCrimeChanceKidnap", function() { return determineCrimeChanceKidnap; });
-/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "determineCrimeChanceAssassination", function() { return determineCrimeChanceAssassination; });
-/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "determineCrimeChanceHeist", function() { return determineCrimeChanceHeist; });
-/* harmony import */ var _Constants_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./Constants.js */ 3);
-/* harmony import */ var _Player_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./Player.js */ 0);
-/* harmony import */ var _utils_DialogBox_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../utils/DialogBox.js */ 7);
-
-
-
-
-/* Crimes.js */
-function commitShopliftCrime(div=1, singParams=null) {
- if (div <= 0) {div = 1;}
- _Player_js__WEBPACK_IMPORTED_MODULE_1__["Player"].crimeType = _Constants_js__WEBPACK_IMPORTED_MODULE_0__["CONSTANTS"].CrimeShoplift;
- var time = 2000;
- _Player_js__WEBPACK_IMPORTED_MODULE_1__["Player"].startCrime(0, 0, 0, 2/div, 2/div, 0, 15000/div, time, singParams); //$7500/s, 1 exp/s
- return time;
-}
-
-function commitRobStoreCrime(div=1, singParams=null) {
- if (div <= 0) {div = 1;}
- _Player_js__WEBPACK_IMPORTED_MODULE_1__["Player"].crimeType = _Constants_js__WEBPACK_IMPORTED_MODULE_0__["CONSTANTS"].CrimeRobStore;
- var time = 60000;
- _Player_js__WEBPACK_IMPORTED_MODULE_1__["Player"].startCrime(30/div, 0, 0, 45/div, 45/div, 0, 400000/div, time, singParams); //$6666,6/2, 0.5exp/s, 0.75exp/s
- return time;
-}
-
-function commitMugCrime(div=1, singParams=null) {
- if (div <= 0) {div = 1;}
- _Player_js__WEBPACK_IMPORTED_MODULE_1__["Player"].crimeType = _Constants_js__WEBPACK_IMPORTED_MODULE_0__["CONSTANTS"].CrimeMug;
- var time = 4000;
- _Player_js__WEBPACK_IMPORTED_MODULE_1__["Player"].startCrime(0, 3/div, 3/div, 3/div, 3/div, 0, 36000/div, time, singParams); //$9000/s, .66 exp/s
- return time;
-}
-
-function commitLarcenyCrime(div=1, singParams=null) {
- if (div <= 0) {div = 1;}
- _Player_js__WEBPACK_IMPORTED_MODULE_1__["Player"].crimeType = _Constants_js__WEBPACK_IMPORTED_MODULE_0__["CONSTANTS"].CrimeLarceny;
- var time = 90000;
- _Player_js__WEBPACK_IMPORTED_MODULE_1__["Player"].startCrime(45/div, 0, 0, 60/div, 60/div, 0, 800000/div, time, singParams) // $8888.88/s, .5 exp/s, .66 exp/s
- return time;
-}
-
-function commitDealDrugsCrime(div=1, singParams=null) {
- if (div <= 0) {div = 1;}
- _Player_js__WEBPACK_IMPORTED_MODULE_1__["Player"].crimeType = _Constants_js__WEBPACK_IMPORTED_MODULE_0__["CONSTANTS"].CrimeDrugs;
- var time = 10000;
- _Player_js__WEBPACK_IMPORTED_MODULE_1__["Player"].startCrime(0, 0, 0, 5/div, 5/div, 10/div, 120000/div, time, singParams); //$12000/s, .5 exp/s, 1 exp/s
- return time;
-}
-
-function commitBondForgeryCrime(div=1, singParams=null) {
- if (div <= 0) {div = 1;}
- _Player_js__WEBPACK_IMPORTED_MODULE_1__["Player"].crimeType = _Constants_js__WEBPACK_IMPORTED_MODULE_0__["CONSTANTS"].CrimeBondForgery;
- var time = 300000;
- _Player_js__WEBPACK_IMPORTED_MODULE_1__["Player"].startCrime(100/div, 0, 0, 150/div, 0, 15/div, 4500000/div, time, singParams); //$15000/s, 0.33 hack exp/s, .5 dex exp/s, .05 cha exp
- return time;
-}
-
-function commitTraffickArmsCrime(div=1, singParams=null) {
- if (div <= 0) {div = 1;}
- _Player_js__WEBPACK_IMPORTED_MODULE_1__["Player"].crimeType = _Constants_js__WEBPACK_IMPORTED_MODULE_0__["CONSTANTS"].CrimeTraffickArms;
- var time = 40000;
- _Player_js__WEBPACK_IMPORTED_MODULE_1__["Player"].startCrime(0, 20/div, 20/div, 20/div, 20/div, 40/div, 600000/div, time, singParams); //$15000/s, .5 combat exp/s, 1 cha exp/s
- return time;
-}
-
-function commitHomicideCrime(div=1, singParams=null) {
- if (div <= 0) {div = 1;}
- _Player_js__WEBPACK_IMPORTED_MODULE_1__["Player"].crimeType = _Constants_js__WEBPACK_IMPORTED_MODULE_0__["CONSTANTS"].CrimeHomicide;
- var time = 3000;
- _Player_js__WEBPACK_IMPORTED_MODULE_1__["Player"].startCrime(0, 2/div, 2/div, 2/div, 2/div, 0, 45000/div, time, singParams); //$15000/s, 0.66 combat exp/s
- return time;
-}
-
-function commitGrandTheftAutoCrime(div=1, singParams=null) {
- if (div <= 0) {div = 1;}
- _Player_js__WEBPACK_IMPORTED_MODULE_1__["Player"].crimeType = _Constants_js__WEBPACK_IMPORTED_MODULE_0__["CONSTANTS"].CrimeGrandTheftAuto;
- var time = 80000;
- _Player_js__WEBPACK_IMPORTED_MODULE_1__["Player"].startCrime(0, 20/div, 20/div, 20/div, 80/div, 40/div, 1600000/div, time, singParams); //$20000/s, .25 exp/s, 1 exp/s, .5 exp/s
- return time;
-}
-
-function commitKidnapCrime(div=1, singParams=null) {
- if (div <= 0) {div = 1;}
- _Player_js__WEBPACK_IMPORTED_MODULE_1__["Player"].crimeType = _Constants_js__WEBPACK_IMPORTED_MODULE_0__["CONSTANTS"].CrimeKidnap;
- var time = 120000;
- _Player_js__WEBPACK_IMPORTED_MODULE_1__["Player"].startCrime(0, 80/div, 80/div, 80/div, 80/div, 80/div, 3600000/div, time, singParams); //$30000/s. .66 exp/s
- return time;
-}
-
-function commitAssassinationCrime(div=1, singParams=null) {
- if (div <= 0) {div = 1;}
- _Player_js__WEBPACK_IMPORTED_MODULE_1__["Player"].crimeType = _Constants_js__WEBPACK_IMPORTED_MODULE_0__["CONSTANTS"].CrimeAssassination;
- var time = 300000;
- _Player_js__WEBPACK_IMPORTED_MODULE_1__["Player"].startCrime(0, 300/div, 300/div, 300/div, 300/div, 0, 12000000/div, time, singParams); //$40000/s, 1 exp/s
- return time;
-}
-
-function commitHeistCrime(div=1, singParams=null) {
- if (div <= 0) {div = 1;}
- _Player_js__WEBPACK_IMPORTED_MODULE_1__["Player"].crimeType = _Constants_js__WEBPACK_IMPORTED_MODULE_0__["CONSTANTS"].CrimeHeist;
- var time = 600000;
- _Player_js__WEBPACK_IMPORTED_MODULE_1__["Player"].startCrime(450/div, 450/div, 450/div, 450/div, 450/div, 450/div, 120000000/div, time, singParams); //$200000/s, .75exp/s
- return time;
-}
-
-function determineCrimeSuccess(crime, moneyGained) {
- var chance = 0;
- switch (crime) {
- case _Constants_js__WEBPACK_IMPORTED_MODULE_0__["CONSTANTS"].CrimeShoplift:
- chance = determineCrimeChanceShoplift();
- break;
- case _Constants_js__WEBPACK_IMPORTED_MODULE_0__["CONSTANTS"].CrimeRobStore:
- chance = determineCrimeChanceRobStore();
- break;
- case _Constants_js__WEBPACK_IMPORTED_MODULE_0__["CONSTANTS"].CrimeMug:
- chance = determineCrimeChanceMug();
- break;
- case _Constants_js__WEBPACK_IMPORTED_MODULE_0__["CONSTANTS"].CrimeLarceny:
- chance = determineCrimeChanceLarceny();
- break;
- case _Constants_js__WEBPACK_IMPORTED_MODULE_0__["CONSTANTS"].CrimeDrugs:
- chance = determineCrimeChanceDealDrugs();
- break;
- case _Constants_js__WEBPACK_IMPORTED_MODULE_0__["CONSTANTS"].CrimeBondForgery:
- chance = determineCrimeChanceBondForgery();
- break;
- case _Constants_js__WEBPACK_IMPORTED_MODULE_0__["CONSTANTS"].CrimeTraffickArms:
- chance = determineCrimeChanceTraffickArms();
- break;
- case _Constants_js__WEBPACK_IMPORTED_MODULE_0__["CONSTANTS"].CrimeHomicide:
- chance = determineCrimeChanceHomicide();
- break;
- case _Constants_js__WEBPACK_IMPORTED_MODULE_0__["CONSTANTS"].CrimeGrandTheftAuto:
- chance = determineCrimeChanceGrandTheftAuto();
- break;
- case _Constants_js__WEBPACK_IMPORTED_MODULE_0__["CONSTANTS"].CrimeKidnap:
- chance = determineCrimeChanceKidnap();
- break;
- case _Constants_js__WEBPACK_IMPORTED_MODULE_0__["CONSTANTS"].CrimeAssassination:
- chance = determineCrimeChanceAssassination();
- break;
- case _Constants_js__WEBPACK_IMPORTED_MODULE_0__["CONSTANTS"].CrimeHeist:
- chance = determineCrimeChanceHeist();
- break;
- default:
- console.log(crime);
- Object(_utils_DialogBox_js__WEBPACK_IMPORTED_MODULE_2__["dialogBoxCreate"])("ERR: Unrecognized crime type. This is probably a bug please contact the developer");
- return;
- }
-
- if (Math.random() <= chance) {
- //Success
- _Player_js__WEBPACK_IMPORTED_MODULE_1__["Player"].gainMoney(moneyGained);
- return true;
- } else {
- //Failure
- return false;
- }
-}
-
-let intWgt = _Constants_js__WEBPACK_IMPORTED_MODULE_0__["CONSTANTS"].IntelligenceCrimeWeight;
-let maxLvl = _Constants_js__WEBPACK_IMPORTED_MODULE_0__["CONSTANTS"].MaxSkillLevel;
-
-function determineCrimeChanceShoplift() {
- var chance = (_Player_js__WEBPACK_IMPORTED_MODULE_1__["Player"].dexterity / maxLvl +
- _Player_js__WEBPACK_IMPORTED_MODULE_1__["Player"].agility / maxLvl +
- intWgt * _Player_js__WEBPACK_IMPORTED_MODULE_1__["Player"].intelligence / maxLvl) * 20;
- chance *= _Player_js__WEBPACK_IMPORTED_MODULE_1__["Player"].crime_success_mult;
- return Math.min(chance, 1);
-}
-
-function determineCrimeChanceRobStore() {
- var chance = (0.5 * _Player_js__WEBPACK_IMPORTED_MODULE_1__["Player"].hacking_skill / maxLvl +
- 2 * _Player_js__WEBPACK_IMPORTED_MODULE_1__["Player"].dexterity / maxLvl +
- 1 * _Player_js__WEBPACK_IMPORTED_MODULE_1__["Player"].agility / maxLvl +
- intWgt * _Player_js__WEBPACK_IMPORTED_MODULE_1__["Player"].intelligence / maxLvl) * 5;
- chance *= _Player_js__WEBPACK_IMPORTED_MODULE_1__["Player"].crime_success_mult;
- return Math.min(chance, 1);
-}
-
-function determineCrimeChanceMug() {
- var chance = (1.5 * _Player_js__WEBPACK_IMPORTED_MODULE_1__["Player"].strength / maxLvl +
- 0.5 * _Player_js__WEBPACK_IMPORTED_MODULE_1__["Player"].defense / maxLvl +
- 1.5 * _Player_js__WEBPACK_IMPORTED_MODULE_1__["Player"].dexterity / maxLvl +
- 0.5 * _Player_js__WEBPACK_IMPORTED_MODULE_1__["Player"].agility / maxLvl +
- intWgt * _Player_js__WEBPACK_IMPORTED_MODULE_1__["Player"].intelligence / maxLvl) * 5;
- chance *= _Player_js__WEBPACK_IMPORTED_MODULE_1__["Player"].crime_success_mult;
- return Math.min(chance, 1);
-}
-
-function determineCrimeChanceLarceny() {
- var chance = (0.5 * _Player_js__WEBPACK_IMPORTED_MODULE_1__["Player"].hacking_skill / maxLvl +
- _Player_js__WEBPACK_IMPORTED_MODULE_1__["Player"].dexterity / maxLvl +
- _Player_js__WEBPACK_IMPORTED_MODULE_1__["Player"].agility / maxLvl +
- intWgt * _Player_js__WEBPACK_IMPORTED_MODULE_1__["Player"].intelligence / maxLvl) * 3;
- chance *= _Player_js__WEBPACK_IMPORTED_MODULE_1__["Player"].crime_success_mult;
- return Math.min(chance, 1);
-}
-
-function determineCrimeChanceDealDrugs() {
- var chance = (3*_Player_js__WEBPACK_IMPORTED_MODULE_1__["Player"].charisma / maxLvl +
- 2*_Player_js__WEBPACK_IMPORTED_MODULE_1__["Player"].dexterity / maxLvl +
- _Player_js__WEBPACK_IMPORTED_MODULE_1__["Player"].agility / maxLvl +
- intWgt * _Player_js__WEBPACK_IMPORTED_MODULE_1__["Player"].intelligence / maxLvl);
- chance *= _Player_js__WEBPACK_IMPORTED_MODULE_1__["Player"].crime_success_mult;
- return Math.min(chance, 1);
-}
-
-function determineCrimeChanceBondForgery() {
- var chance = (0.1*_Player_js__WEBPACK_IMPORTED_MODULE_1__["Player"].hacking_skill / maxLvl +
- 2.5*_Player_js__WEBPACK_IMPORTED_MODULE_1__["Player"].dexterity / maxLvl +
- 2*intWgt*_Player_js__WEBPACK_IMPORTED_MODULE_1__["Player"].intelligence / maxLvl);
- chance *= _Player_js__WEBPACK_IMPORTED_MODULE_1__["Player"].crime_success_mult;
- return Math.min(chance, 1);
-}
-
-function determineCrimeChanceTraffickArms() {
- var chance = (_Player_js__WEBPACK_IMPORTED_MODULE_1__["Player"].charisma / maxLvl +
- _Player_js__WEBPACK_IMPORTED_MODULE_1__["Player"].strength / maxLvl +
- _Player_js__WEBPACK_IMPORTED_MODULE_1__["Player"].defense / maxLvl +
- _Player_js__WEBPACK_IMPORTED_MODULE_1__["Player"].dexterity / maxLvl +
- _Player_js__WEBPACK_IMPORTED_MODULE_1__["Player"].agility / maxLvl +
- intWgt * _Player_js__WEBPACK_IMPORTED_MODULE_1__["Player"].intelligence / maxLvl) / 2;
- chance *= _Player_js__WEBPACK_IMPORTED_MODULE_1__["Player"].crime_success_mult;
- return Math.min(chance, 1);
-}
-
-function determineCrimeChanceHomicide() {
- var chance = (2 * _Player_js__WEBPACK_IMPORTED_MODULE_1__["Player"].strength / maxLvl +
- 2 * _Player_js__WEBPACK_IMPORTED_MODULE_1__["Player"].defense / maxLvl +
- 0.5 * _Player_js__WEBPACK_IMPORTED_MODULE_1__["Player"].dexterity / maxLvl +
- 0.5 * _Player_js__WEBPACK_IMPORTED_MODULE_1__["Player"].agility / maxLvl +
- intWgt * _Player_js__WEBPACK_IMPORTED_MODULE_1__["Player"].intelligence / maxLvl);
- chance *= _Player_js__WEBPACK_IMPORTED_MODULE_1__["Player"].crime_success_mult;
- return Math.min(chance, 1);
-}
-
-function determineCrimeChanceGrandTheftAuto() {
- var chance = (_Player_js__WEBPACK_IMPORTED_MODULE_1__["Player"].hacking_skill / maxLvl +
- _Player_js__WEBPACK_IMPORTED_MODULE_1__["Player"].strength / maxLvl +
- 4 * _Player_js__WEBPACK_IMPORTED_MODULE_1__["Player"].dexterity / maxLvl +
- 2 * _Player_js__WEBPACK_IMPORTED_MODULE_1__["Player"].agility / maxLvl +
- 2 * _Player_js__WEBPACK_IMPORTED_MODULE_1__["Player"].charisma / maxLvl +
- intWgt * _Player_js__WEBPACK_IMPORTED_MODULE_1__["Player"].intelligence / maxLvl) / 8;
- chance *= _Player_js__WEBPACK_IMPORTED_MODULE_1__["Player"].crime_success_mult;
- return Math.min(chance, 1);
-}
-
-function determineCrimeChanceKidnap() {
- var chance = (_Player_js__WEBPACK_IMPORTED_MODULE_1__["Player"].charisma / maxLvl +
- _Player_js__WEBPACK_IMPORTED_MODULE_1__["Player"].strength / maxLvl +
- _Player_js__WEBPACK_IMPORTED_MODULE_1__["Player"].dexterity / maxLvl +
- _Player_js__WEBPACK_IMPORTED_MODULE_1__["Player"].agility / maxLvl +
- intWgt * _Player_js__WEBPACK_IMPORTED_MODULE_1__["Player"].intelligence / maxLvl) / 5;
- chance *= _Player_js__WEBPACK_IMPORTED_MODULE_1__["Player"].crime_success_mult;
- return Math.min(chance, 1);
-}
-
-function determineCrimeChanceAssassination() {
- var chance = (_Player_js__WEBPACK_IMPORTED_MODULE_1__["Player"].strength / maxLvl +
- 2 * _Player_js__WEBPACK_IMPORTED_MODULE_1__["Player"].dexterity / maxLvl +
- _Player_js__WEBPACK_IMPORTED_MODULE_1__["Player"].agility / maxLvl +
- intWgt * _Player_js__WEBPACK_IMPORTED_MODULE_1__["Player"].intelligence / maxLvl) / 8;
- chance *= _Player_js__WEBPACK_IMPORTED_MODULE_1__["Player"].crime_success_mult;
- return Math.min(chance, 1);
-}
-
-function determineCrimeChanceHeist() {
- var chance = (_Player_js__WEBPACK_IMPORTED_MODULE_1__["Player"].hacking_skill / maxLvl +
- _Player_js__WEBPACK_IMPORTED_MODULE_1__["Player"].strength / maxLvl +
- _Player_js__WEBPACK_IMPORTED_MODULE_1__["Player"].defense / maxLvl +
- _Player_js__WEBPACK_IMPORTED_MODULE_1__["Player"].dexterity / maxLvl +
- _Player_js__WEBPACK_IMPORTED_MODULE_1__["Player"].agility / maxLvl +
- _Player_js__WEBPACK_IMPORTED_MODULE_1__["Player"].charisma / maxLvl +
- intWgt * _Player_js__WEBPACK_IMPORTED_MODULE_1__["Player"].intelligence / maxLvl) / 18;
- chance *= _Player_js__WEBPACK_IMPORTED_MODULE_1__["Player"].crime_success_mult;
- return Math.min(chance, 1);
-}
-
-
-
-
-/***/ }),
-/* 21 */
-/*!********************************!*\
- !*** ./src/NetscriptWorker.js ***!
- \********************************/
/***/ (function(module, __webpack_exports__, __webpack_require__) {
"use strict";
@@ -17787,19 +17483,19 @@ __webpack_require__.r(__webpack_exports__);
/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "addWorkerScript", function() { return addWorkerScript; });
/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "updateOnlineScriptTimes", function() { return updateOnlineScriptTimes; });
/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "prestigeWorkerScripts", function() { return prestigeWorkerScripts; });
-/* harmony import */ var _ActiveScriptsUI_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./ActiveScriptsUI.js */ 41);
-/* harmony import */ var _Constants_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./Constants.js */ 3);
-/* harmony import */ var _engine_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./engine.js */ 5);
-/* harmony import */ var _NetscriptEnvironment_js__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./NetscriptEnvironment.js */ 69);
-/* harmony import */ var _NetscriptEvaluator_js__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ./NetscriptEvaluator.js */ 6);
-/* harmony import */ var _NetscriptJSEvaluator_js__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ./NetscriptJSEvaluator.js */ 63);
-/* harmony import */ var _NetscriptPort_js__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! ./NetscriptPort.js */ 46);
-/* harmony import */ var _Server_js__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! ./Server.js */ 10);
-/* harmony import */ var _Settings_js__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! ./Settings.js */ 23);
-/* harmony import */ var _utils_acorn_js__WEBPACK_IMPORTED_MODULE_9__ = __webpack_require__(/*! ../utils/acorn.js */ 36);
+/* harmony import */ var _ActiveScriptsUI_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(42);
+/* harmony import */ var _Constants_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(3);
+/* harmony import */ var _engine_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(5);
+/* harmony import */ var _NetscriptEnvironment_js__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(67);
+/* harmony import */ var _NetscriptEvaluator_js__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(6);
+/* harmony import */ var _NetscriptJSEvaluator_js__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(82);
+/* harmony import */ var _NetscriptPort_js__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(45);
+/* harmony import */ var _Server_js__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(8);
+/* harmony import */ var _Settings_js__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(22);
+/* harmony import */ var _utils_acorn_js__WEBPACK_IMPORTED_MODULE_9__ = __webpack_require__(36);
/* harmony import */ var _utils_acorn_js__WEBPACK_IMPORTED_MODULE_9___default = /*#__PURE__*/__webpack_require__.n(_utils_acorn_js__WEBPACK_IMPORTED_MODULE_9__);
-/* harmony import */ var _utils_DialogBox_js__WEBPACK_IMPORTED_MODULE_10__ = __webpack_require__(/*! ../utils/DialogBox.js */ 7);
-/* harmony import */ var _utils_HelperFunctions_js__WEBPACK_IMPORTED_MODULE_11__ = __webpack_require__(/*! ../utils/HelperFunctions.js */ 1);
+/* harmony import */ var _utils_DialogBox_js__WEBPACK_IMPORTED_MODULE_10__ = __webpack_require__(7);
+/* harmony import */ var _utils_HelperFunctions_js__WEBPACK_IMPORTED_MODULE_11__ = __webpack_require__(1);
@@ -17829,8 +17525,12 @@ function WorkerScript(runningScriptObj) {
this.delay = null;
this.fnWorker = null; //Workerscript for a function call
this.checkingRam = false;
- this.loadedFns = {}; //Stores names of fns that are "loaded" by this script, thus using RAM
+ this.loadedFns = {}; //Stores names of fns that are "loaded" by this script, thus using RAM. Used for static RAM evaluation
this.disableLogs = {}; //Stores names of fns that should have logs disabled
+
+ //Properties used for dynamic RAM evaluation
+ this.dynamicRamUsage = 1.4;
+ this.dynamicLoadedFns = {};
}
//Returns the server on which the workerScript is running
@@ -17850,6 +17550,14 @@ WorkerScript.prototype.getScript = function() {
return null;
}
+WorkerScript.prototype.shouldLog = function(fn) {
+ return (this.disableLogs.ALL == null && this.disableLogs[fn] == null);
+}
+
+WorkerScript.prototype.log = function(txt) {
+ this.scriptRef.log(txt);
+}
+
//Array containing all scripts that are running across all servers, to easily run them all
let workerScripts = [];
@@ -18115,10 +17823,7 @@ function updateOnlineScriptTimes(numCycles = 1) {
/***/ }),
-/* 22 */
-/*!****************************!*\
- !*** ./src/StockMarket.js ***!
- \****************************/
+/* 21 */
/***/ (function(module, __webpack_exports__, __webpack_require__) {
"use strict";
@@ -18145,19 +17850,19 @@ __webpack_require__.r(__webpack_exports__);
/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "Order", function() { return Order; });
/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "OrderTypes", function() { return OrderTypes; });
/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "PositionTypes", function() { return PositionTypes; });
-/* harmony import */ var _Constants_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./Constants.js */ 3);
-/* harmony import */ var _engine_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./engine.js */ 5);
-/* harmony import */ var _Location_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./Location.js */ 4);
-/* harmony import */ var _NetscriptFunctions_js__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./NetscriptFunctions.js */ 31);
-/* harmony import */ var _NetscriptWorker_js__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ./NetscriptWorker.js */ 21);
-/* harmony import */ var _Player_js__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ./Player.js */ 0);
-/* harmony import */ var _utils_DialogBox_js__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! ../utils/DialogBox.js */ 7);
-/* harmony import */ var _utils_HelperFunctions_js__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! ../utils/HelperFunctions.js */ 1);
-/* harmony import */ var _utils_JSONReviver_js__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! ../utils/JSONReviver.js */ 8);
-/* harmony import */ var _utils_numeral_min_js__WEBPACK_IMPORTED_MODULE_9__ = __webpack_require__(/*! ../utils/numeral.min.js */ 13);
-/* harmony import */ var _utils_numeral_min_js__WEBPACK_IMPORTED_MODULE_9___default = /*#__PURE__*/__webpack_require__.n(_utils_numeral_min_js__WEBPACK_IMPORTED_MODULE_9__);
-/* harmony import */ var _utils_StringHelperFunctions_js__WEBPACK_IMPORTED_MODULE_10__ = __webpack_require__(/*! ../utils/StringHelperFunctions.js */ 2);
-/* harmony import */ var _utils_YesNoBox_js__WEBPACK_IMPORTED_MODULE_11__ = __webpack_require__(/*! ../utils/YesNoBox.js */ 12);
+/* harmony import */ var _Constants_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(3);
+/* harmony import */ var _engine_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(5);
+/* harmony import */ var _Location_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(4);
+/* harmony import */ var _NetscriptFunctions_js__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(30);
+/* harmony import */ var _NetscriptWorker_js__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(20);
+/* harmony import */ var _Player_js__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(0);
+/* harmony import */ var _utils_DialogBox_js__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(7);
+/* harmony import */ var _utils_HelperFunctions_js__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(1);
+/* harmony import */ var _utils_JSONReviver_js__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(9);
+/* harmony import */ var numeral_min_numeral_min__WEBPACK_IMPORTED_MODULE_9__ = __webpack_require__(14);
+/* harmony import */ var numeral_min_numeral_min__WEBPACK_IMPORTED_MODULE_9___default = /*#__PURE__*/__webpack_require__.n(numeral_min_numeral_min__WEBPACK_IMPORTED_MODULE_9__);
+/* harmony import */ var _utils_StringHelperFunctions_js__WEBPACK_IMPORTED_MODULE_10__ = __webpack_require__(2);
+/* harmony import */ var _utils_YesNoBox_js__WEBPACK_IMPORTED_MODULE_11__ = __webpack_require__(12);
@@ -18262,7 +17967,7 @@ function cancelOrder(params, workerScript=null) {
//Order properties are passed in. Need to look for the order
var stockOrders = StockMarket["Orders"][params.stock.symbol];
var orderTxt = params.stock.symbol + " - " + params.shares + " @ " +
- _utils_numeral_min_js__WEBPACK_IMPORTED_MODULE_9___default()(params.price).format('$0.000a');
+ numeral_min_numeral_min__WEBPACK_IMPORTED_MODULE_9___default()(params.price).format('$0.000a');
for (var i = 0; i < stockOrders.length; ++i) {
var order = stockOrders[i];
if (params.shares === order.shares &&
@@ -18643,7 +18348,7 @@ function shortStock(stock, shares, workerScript=null) {
if (tixApi) {
workerScript.scriptRef.log("ERROR: shortStock() failed because you do not have " +
"money to purchase this short position. You need " +
- _utils_numeral_min_js__WEBPACK_IMPORTED_MODULE_9___default()(totalPrice + _Constants_js__WEBPACK_IMPORTED_MODULE_0__["CONSTANTS"].StockMarketCommission).format('($0.000a)'));
+ numeral_min_numeral_min__WEBPACK_IMPORTED_MODULE_9___default()(totalPrice + _Constants_js__WEBPACK_IMPORTED_MODULE_0__["CONSTANTS"].StockMarketCommission).format('($0.000a)'));
} else {
Object(_utils_DialogBox_js__WEBPACK_IMPORTED_MODULE_6__["dialogBoxCreate"])("You do not have enough money to purchase this short position. You need $" +
Object(_utils_StringHelperFunctions_js__WEBPACK_IMPORTED_MODULE_10__["formatNumber"])(totalPrice + _Constants_js__WEBPACK_IMPORTED_MODULE_0__["CONSTANTS"].StockMarketCommission, 2) + ".");
@@ -18661,8 +18366,8 @@ function shortStock(stock, shares, workerScript=null) {
if (tixApi) {
if (workerScript.disableLogs.ALL == null && workerScript.disableLogs.shortStock == null) {
workerScript.scriptRef.log("Bought a short position of " + Object(_utils_StringHelperFunctions_js__WEBPACK_IMPORTED_MODULE_10__["formatNumber"])(shares, 0) + " shares of " + stock.symbol + " at " +
- _utils_numeral_min_js__WEBPACK_IMPORTED_MODULE_9___default()(stock.price).format('($0.000a)') + " per share. Paid " +
- _utils_numeral_min_js__WEBPACK_IMPORTED_MODULE_9___default()(_Constants_js__WEBPACK_IMPORTED_MODULE_0__["CONSTANTS"].StockMarketCommission).format('($0.000a)') + " in commission fees.");
+ numeral_min_numeral_min__WEBPACK_IMPORTED_MODULE_9___default()(stock.price).format('($0.000a)') + " per share. Paid " +
+ numeral_min_numeral_min__WEBPACK_IMPORTED_MODULE_9___default()(_Constants_js__WEBPACK_IMPORTED_MODULE_0__["CONSTANTS"].StockMarketCommission).format('($0.000a)') + " in commission fees.");
}
} else {
Object(_utils_DialogBox_js__WEBPACK_IMPORTED_MODULE_6__["dialogBoxCreate"])("Bought a short position of " + Object(_utils_StringHelperFunctions_js__WEBPACK_IMPORTED_MODULE_10__["formatNumber"])(shares, 0) + " shares of " + stock.symbol + " at $" +
@@ -18705,8 +18410,8 @@ function sellShort(stock, shares, workerScript=null) {
if (tixApi) {
if (workerScript.disableLogs.ALL == null && workerScript.disableLogs.sellShort == null) {
workerScript.scriptRef.log("Sold your short position of " + shares + " shares of " + stock.symbol + " at " +
- _utils_numeral_min_js__WEBPACK_IMPORTED_MODULE_9___default()(stock.price).format('($0.000a)') + " per share. After commissions, you gained " +
- "a total of " + _utils_numeral_min_js__WEBPACK_IMPORTED_MODULE_9___default()(origCost + profit).format('($0.000a)'));
+ numeral_min_numeral_min__WEBPACK_IMPORTED_MODULE_9___default()(stock.price).format('($0.000a)') + " per share. After commissions, you gained " +
+ "a total of " + numeral_min_numeral_min__WEBPACK_IMPORTED_MODULE_9___default()(origCost + profit).format('($0.000a)'));
}
} else {
Object(_utils_DialogBox_js__WEBPACK_IMPORTED_MODULE_6__["dialogBoxCreate"])("Sold your short position of " + Object(_utils_StringHelperFunctions_js__WEBPACK_IMPORTED_MODULE_10__["formatNumber"])(shares, 0) + " shares of " + stock.symbol + " at $" +
@@ -18855,6 +18560,9 @@ function displayStockMarketContent() {
wseAccountButton.innerText = "Buy WSE Account - $" + Object(_utils_StringHelperFunctions_js__WEBPACK_IMPORTED_MODULE_10__["formatNumber"])(_Constants_js__WEBPACK_IMPORTED_MODULE_0__["CONSTANTS"].WSEAccountCost, 2).toString();
if (!_Player_js__WEBPACK_IMPORTED_MODULE_5__["Player"].hasWseAccount && _Player_js__WEBPACK_IMPORTED_MODULE_5__["Player"].money.gte(_Constants_js__WEBPACK_IMPORTED_MODULE_0__["CONSTANTS"].WSEAccountCost)) {
wseAccountButton.setAttribute("class", "a-link-button");
+ } else if (_Player_js__WEBPACK_IMPORTED_MODULE_5__["Player"].hasWseAccount){
+ wseAccountButton.innerText = "WSE Account - Purchased";
+ wseAccountButton.setAttribute("class", "a-link-button-bought");
} else {
wseAccountButton.setAttribute("class", "a-link-button-inactive");
}
@@ -18873,6 +18581,9 @@ function displayStockMarketContent() {
Object(_utils_StringHelperFunctions_js__WEBPACK_IMPORTED_MODULE_10__["formatNumber"])(_Constants_js__WEBPACK_IMPORTED_MODULE_0__["CONSTANTS"].TIXAPICost, 2).toString();
if (!_Player_js__WEBPACK_IMPORTED_MODULE_5__["Player"].hasTixApiAccess && _Player_js__WEBPACK_IMPORTED_MODULE_5__["Player"].money.gte(_Constants_js__WEBPACK_IMPORTED_MODULE_0__["CONSTANTS"].TIXAPICost)) {
tixApiAccessButton.setAttribute("class", "a-link-button");
+ } else if(_Player_js__WEBPACK_IMPORTED_MODULE_5__["Player"].hasTixApiAccess) {
+ tixApiAccessButton.innerText = "Trade Information eXchange (TIX) API Access - Purchased"
+ tixApiAccessButton.setAttribute("class", "a-link-button-bought");
} else {
tixApiAccessButton.setAttribute("class", "a-link-button-inactive");
}
@@ -19404,9 +19115,9 @@ function updateStockPlayerPosition(stock) {
"Shares in the long position will increase " +
"in value if the price of the corresponding stock increases" +
"
Shares: " + Object(_utils_StringHelperFunctions_js__WEBPACK_IMPORTED_MODULE_10__["formatNumber"])(stock.playerShares, 0) +
- "
Average Price: " + _utils_numeral_min_js__WEBPACK_IMPORTED_MODULE_9___default()(stock.playerAvgPx).format('$0.000a') +
- " (Total Cost: " + _utils_numeral_min_js__WEBPACK_IMPORTED_MODULE_9___default()(totalCost).format('$0.000a') + ")" +
- "
Profit: " + _utils_numeral_min_js__WEBPACK_IMPORTED_MODULE_9___default()(gains).format('$0.000a') +
+ "
Average Price: " + numeral_min_numeral_min__WEBPACK_IMPORTED_MODULE_9___default()(stock.playerAvgPx).format('$0.000a') +
+ " (Total Cost: " + numeral_min_numeral_min__WEBPACK_IMPORTED_MODULE_9___default()(totalCost).format('$0.000a') + ")" +
+ "
Profit: " + numeral_min_numeral_min__WEBPACK_IMPORTED_MODULE_9___default()(gains).format('$0.000a') +
" (" + Object(_utils_StringHelperFunctions_js__WEBPACK_IMPORTED_MODULE_10__["formatNumber"])(percentageGains*100, 2) + "%)
";
if (_Player_js__WEBPACK_IMPORTED_MODULE_5__["Player"].bitNodeN === 8 || (_NetscriptFunctions_js__WEBPACK_IMPORTED_MODULE_3__["hasWallStreetSF"] && _NetscriptFunctions_js__WEBPACK_IMPORTED_MODULE_3__["wallStreetSFLvl"] >= 2)) {
stock.posTxtEl.innerHTML +=
@@ -19414,9 +19125,9 @@ function updateStockPlayerPosition(stock) {
"Shares in short position will increase " +
"in value if the price of the corresponding stock decreases" +
"
Shares: " + Object(_utils_StringHelperFunctions_js__WEBPACK_IMPORTED_MODULE_10__["formatNumber"])(stock.playerShortShares, 0) +
- "
Average Price: " + _utils_numeral_min_js__WEBPACK_IMPORTED_MODULE_9___default()(stock.playerAvgShortPx).format('$0.000a') +
- " (Total Cost: " + _utils_numeral_min_js__WEBPACK_IMPORTED_MODULE_9___default()(shortTotalCost).format('$0.000a') + ")" +
- "
Profit: " + _utils_numeral_min_js__WEBPACK_IMPORTED_MODULE_9___default()(shortGains).format('$0.000a') +
+ "
Average Price: " + numeral_min_numeral_min__WEBPACK_IMPORTED_MODULE_9___default()(stock.playerAvgShortPx).format('$0.000a') +
+ " (Total Cost: " + numeral_min_numeral_min__WEBPACK_IMPORTED_MODULE_9___default()(shortTotalCost).format('$0.000a') + ")" +
+ "
Profit: " + numeral_min_numeral_min__WEBPACK_IMPORTED_MODULE_9___default()(shortGains).format('$0.000a') +
" (" + Object(_utils_StringHelperFunctions_js__WEBPACK_IMPORTED_MODULE_10__["formatNumber"])(shortPercentageGains*100, 2) + "%)" +
"Orders:
";
}
@@ -19495,10 +19206,7 @@ function updateStockOrderList(stock) {
/***/ }),
-/* 23 */
-/*!*************************!*\
- !*** ./src/Settings.js ***!
- \*************************/
+/* 22 */
/***/ (function(module, __webpack_exports__, __webpack_require__) {
"use strict";
@@ -19507,7 +19215,7 @@ __webpack_require__.r(__webpack_exports__);
/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "initSettings", function() { return initSettings; });
/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "setSettingsLabels", function() { return setSettingsLabels; });
/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "loadSettings", function() { return loadSettings; });
-/* harmony import */ var _engine_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./engine.js */ 5);
+/* harmony import */ var _engine_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(5);
/* Settings.js */
@@ -19517,6 +19225,7 @@ let Settings = {
MaxPortCapacity: 50,
SuppressMessages: false,
SuppressFactionInvites: false,
+ SuppressTravelConfirmation: false,
AutosaveInterval: 60,
DisableHotkeys: false,
ThemeHighlightColor: "#ffffff",
@@ -19536,6 +19245,7 @@ function initSettings() {
Settings.MaxPortCapacity = 50;
Settings.SuppressMessages = false;
Settings.SuppressFactionInvites = false;
+ Settings.SuppressTravelConfirmation = false,
Settings.AutosaveInterval = 60;
Settings.DisableHotkeys = false;
}
@@ -19546,6 +19256,7 @@ function setSettingsLabels() {
var nsPortLimit = document.getElementById("settingsNSPortRangeValLabel");
var suppressMsgs = document.getElementById("settingsSuppressMessages");
var suppressFactionInv = document.getElementById("settingsSuppressFactionInvites")
+ var suppressTravelConfirmation = document.getElementById("settingsSuppressTravelConfirmation");
var autosaveInterval = document.getElementById("settingsAutosaveIntervalValLabel");
var disableHotkeys = document.getElementById("settingsDisableHotkeys");
@@ -19555,6 +19266,7 @@ function setSettingsLabels() {
nsPortLimit.innerHTML = Settings.MaxPortCapacity;
suppressMsgs.checked = Settings.SuppressMessages;
suppressFactionInv.checked = Settings.SuppressFactionInvites;
+ suppressTravelConfirmation.checked = Settings.SuppressTravelConfirmation;
autosaveInterval.innerHTML = Settings.AutosaveInterval;
disableHotkeys.checked = Settings.DisableHotkeys;
@@ -19601,6 +19313,10 @@ function setSettingsLabels() {
Settings.SuppressFactionInvites = this.checked;
};
+ suppressTravelConfirmation.onclick = function() {
+ Settings.SuppressTravelConfirmation = this.checked;
+ };
+
disableHotkeys.onclick = function() {
Settings.DisableHotkeys = this.checked;
}
@@ -19623,10 +19339,7 @@ function setSettingsLabels() {
/***/ }),
-/* 24 */
-/*!************************************************!*\
- !*** ./node_modules/decimal.js/decimal.es6.js ***!
- \************************************************/
+/* 23 */
/***/ (function(module, __webpack_exports__, __webpack_require__) {
"use strict";
@@ -24416,10 +24129,7 @@ PI = new Decimal(pi);
/***/ }),
-/* 25 */
-/*!************************************!*\
- !*** ./src/InteractiveTutorial.js ***!
- \************************************/
+/* 24 */
/***/ (function(module, __webpack_exports__, __webpack_require__) {
"use strict";
@@ -24430,10 +24140,10 @@ __webpack_require__.r(__webpack_exports__);
/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "iTutorialNextStep", function() { return iTutorialNextStep; });
/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "currITutorialStep", function() { return currITutorialStep; });
/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "iTutorialIsRunning", function() { return iTutorialIsRunning; });
-/* harmony import */ var _engine_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./engine.js */ 5);
-/* harmony import */ var _Player_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./Player.js */ 0);
-/* harmony import */ var _utils_DialogBox_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../utils/DialogBox.js */ 7);
-/* harmony import */ var _utils_HelperFunctions_js__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ../utils/HelperFunctions.js */ 1);
+/* harmony import */ var _engine_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(5);
+/* harmony import */ var _Player_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(0);
+/* harmony import */ var _utils_DialogBox_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(7);
+/* harmony import */ var _utils_HelperFunctions_js__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(1);
@@ -25100,10 +24810,7 @@ function iTutorialSetText(txt) {
/***/ }),
-/* 26 */
-/*!***********************!*\
- !*** ./src/Script.js ***!
- \***********************/
+/* 25 */
/***/ (function(module, __webpack_exports__, __webpack_require__) {
"use strict";
@@ -25116,41 +24823,41 @@ __webpack_require__.r(__webpack_exports__);
/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "AllServersMap", function() { return AllServersMap; });
/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "scriptEditorInit", function() { return scriptEditorInit; });
/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "isScriptFilename", function() { return isScriptFilename; });
-/* harmony import */ var _Constants_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./Constants.js */ 3);
-/* harmony import */ var _engine_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./engine.js */ 5);
-/* harmony import */ var _Fconf_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./Fconf.js */ 33);
-/* harmony import */ var _InteractiveTutorial_js__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./InteractiveTutorial.js */ 25);
-/* harmony import */ var _NetscriptEvaluator_js__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ./NetscriptEvaluator.js */ 6);
-/* harmony import */ var _NetscriptFunctions_js__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ./NetscriptFunctions.js */ 31);
-/* harmony import */ var _NetscriptWorker_js__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! ./NetscriptWorker.js */ 21);
-/* harmony import */ var _Player_js__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! ./Player.js */ 0);
-/* harmony import */ var _Server_js__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! ./Server.js */ 10);
-/* harmony import */ var _Settings_js__WEBPACK_IMPORTED_MODULE_9__ = __webpack_require__(/*! ./Settings.js */ 23);
-/* harmony import */ var _Terminal_js__WEBPACK_IMPORTED_MODULE_10__ = __webpack_require__(/*! ./Terminal.js */ 18);
-/* harmony import */ var _TextFile_js__WEBPACK_IMPORTED_MODULE_11__ = __webpack_require__(/*! ./TextFile.js */ 43);
-/* harmony import */ var _utils_acorn_js__WEBPACK_IMPORTED_MODULE_12__ = __webpack_require__(/*! ../utils/acorn.js */ 36);
+/* harmony import */ var _Constants_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(3);
+/* harmony import */ var _engine_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(5);
+/* harmony import */ var _Fconf_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(32);
+/* harmony import */ var _InteractiveTutorial_js__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(24);
+/* harmony import */ var _NetscriptEvaluator_js__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(6);
+/* harmony import */ var _NetscriptFunctions_js__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(30);
+/* harmony import */ var _NetscriptWorker_js__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(20);
+/* harmony import */ var _Player_js__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(0);
+/* harmony import */ var _Server_js__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(8);
+/* harmony import */ var _Settings_js__WEBPACK_IMPORTED_MODULE_9__ = __webpack_require__(22);
+/* harmony import */ var _Terminal_js__WEBPACK_IMPORTED_MODULE_10__ = __webpack_require__(19);
+/* harmony import */ var _TextFile_js__WEBPACK_IMPORTED_MODULE_11__ = __webpack_require__(44);
+/* harmony import */ var _utils_acorn_js__WEBPACK_IMPORTED_MODULE_12__ = __webpack_require__(36);
/* harmony import */ var _utils_acorn_js__WEBPACK_IMPORTED_MODULE_12___default = /*#__PURE__*/__webpack_require__.n(_utils_acorn_js__WEBPACK_IMPORTED_MODULE_12__);
-/* harmony import */ var _utils_DialogBox_js__WEBPACK_IMPORTED_MODULE_13__ = __webpack_require__(/*! ../utils/DialogBox.js */ 7);
-/* harmony import */ var _utils_JSONReviver_js__WEBPACK_IMPORTED_MODULE_14__ = __webpack_require__(/*! ../utils/JSONReviver.js */ 8);
-/* harmony import */ var _utils_HelperFunctions_js__WEBPACK_IMPORTED_MODULE_15__ = __webpack_require__(/*! ../utils/HelperFunctions.js */ 1);
-/* harmony import */ var _utils_StringHelperFunctions_js__WEBPACK_IMPORTED_MODULE_16__ = __webpack_require__(/*! ../utils/StringHelperFunctions.js */ 2);
-var ace = __webpack_require__(/*! brace */ 196);
-__webpack_require__(/*! brace/mode/javascript */ 195);
-__webpack_require__(/*! ../netscript */ 194);
-__webpack_require__(/*! brace/theme/chaos */ 193);
-__webpack_require__(/*! brace/theme/chrome */ 192);
-__webpack_require__(/*! brace/theme/monokai */ 191);
-__webpack_require__(/*! brace/theme/solarized_dark */ 190);
-__webpack_require__(/*! brace/theme/solarized_light */ 189);
-__webpack_require__(/*! brace/theme/terminal */ 188);
-__webpack_require__(/*! brace/theme/twilight */ 187);
-__webpack_require__(/*! brace/theme/xcode */ 186);
-__webpack_require__(/*! brace/keybinding/vim */ 185);
-__webpack_require__(/*! brace/keybinding/emacs */ 184);
-__webpack_require__(/*! brace/ext/language_tools */ 183);
+/* harmony import */ var _utils_DialogBox_js__WEBPACK_IMPORTED_MODULE_13__ = __webpack_require__(7);
+/* harmony import */ var _utils_JSONReviver_js__WEBPACK_IMPORTED_MODULE_14__ = __webpack_require__(9);
+/* harmony import */ var _utils_HelperFunctions_js__WEBPACK_IMPORTED_MODULE_15__ = __webpack_require__(1);
+/* harmony import */ var _utils_StringHelperFunctions_js__WEBPACK_IMPORTED_MODULE_16__ = __webpack_require__(2);
+var ace = __webpack_require__(196);
+__webpack_require__(195);
+__webpack_require__(194);
+__webpack_require__(193);
+__webpack_require__(192);
+__webpack_require__(191);
+__webpack_require__(190);
+__webpack_require__(189);
+__webpack_require__(188);
+__webpack_require__(187);
+__webpack_require__(186);
+__webpack_require__(185);
+__webpack_require__(184);
+__webpack_require__(183);
// Importing this doesn't work for some reason.
-const walk = __webpack_require__(/*! acorn/dist/walk */ 182);
+const walk = __webpack_require__(182);
@@ -25580,6 +25287,7 @@ function parseOnlyRamCalculate(server, code, workerScript) {
if (ref == specialReferenceFOR) ram += _Constants_js__WEBPACK_IMPORTED_MODULE_0__["CONSTANTS"].ScriptForRamCost;
if (ref == specialReferenceWHILE) ram += _Constants_js__WEBPACK_IMPORTED_MODULE_0__["CONSTANTS"].ScriptWhileRamCost;
if (ref == "hacknetnodes") ram += _Constants_js__WEBPACK_IMPORTED_MODULE_0__["CONSTANTS"].ScriptHacknetNodesRamCost;
+ if (ref == "document" || ref == "window") ram += _Constants_js__WEBPACK_IMPORTED_MODULE_0__["CONSTANTS"].ScriptDomRamCost;
// Check if this ident is a function in the workerscript env. If it is, then we need to
// get its RAM cost. We do this by calling it, which works because the running script
@@ -25640,11 +25348,15 @@ function parseOnlyCalculateDeps(code, currentModule) {
s.add(name); // For builtins like hack.
}
+ //A list of identifiers that resolve to "native Javascript code"
+ const objectPrototypeProperties = Object.getOwnPropertyNames(Object.prototype);
+
// If we discover a dependency identifier, state.key is the dependent identifier.
// walkDeeper is for doing recursive walks of expressions in composites that we handle.
function commonVisitors() {
return {
Identifier: (node, st, walkDeeper) => {
+ if (objectPrototypeProperties.includes(node.name)) {return;}
addRef(st.key, node.name);
},
WhileStatement: (node, st, walkDeeper) => {
@@ -26098,31 +25810,30 @@ _utils_JSONReviver_js__WEBPACK_IMPORTED_MODULE_14__["Reviver"].constructors.AllS
-/* WEBPACK VAR INJECTION */}.call(this, __webpack_require__(/*! jquery */ 39)))
+/* WEBPACK VAR INJECTION */}.call(this, __webpack_require__(40)))
/***/ }),
-/* 27 */
-/*!****************************!*\
- !*** ./src/Bladeburner.js ***!
- \****************************/
+/* 26 */
/***/ (function(module, __webpack_exports__, __webpack_require__) {
"use strict";
__webpack_require__.r(__webpack_exports__);
/* WEBPACK VAR INJECTION */(function($) {/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "Bladeburner", function() { return Bladeburner; });
-/* harmony import */ var _Constants_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./Constants.js */ 3);
-/* harmony import */ var _engine_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./engine.js */ 5);
-/* harmony import */ var _Faction_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./Faction.js */ 11);
-/* harmony import */ var _Location_js__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./Location.js */ 4);
-/* harmony import */ var _Player_js__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ./Player.js */ 0);
-/* harmony import */ var _RedPill_js__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ./RedPill.js */ 45);
-/* harmony import */ var _Terminal_js__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! ./Terminal.js */ 18);
-/* harmony import */ var _utils_DialogBox_js__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! ../utils/DialogBox.js */ 7);
-/* harmony import */ var _utils_HelperFunctions_js__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! ../utils/HelperFunctions.js */ 1);
-/* harmony import */ var _utils_JSONReviver_js__WEBPACK_IMPORTED_MODULE_9__ = __webpack_require__(/*! ../utils/JSONReviver.js */ 8);
-/* harmony import */ var _utils_numeral_min_js__WEBPACK_IMPORTED_MODULE_10__ = __webpack_require__(/*! ../utils/numeral.min.js */ 13);
-/* harmony import */ var _utils_numeral_min_js__WEBPACK_IMPORTED_MODULE_10___default = /*#__PURE__*/__webpack_require__.n(_utils_numeral_min_js__WEBPACK_IMPORTED_MODULE_10__);
-/* harmony import */ var _utils_StringHelperFunctions_js__WEBPACK_IMPORTED_MODULE_11__ = __webpack_require__(/*! ../utils/StringHelperFunctions.js */ 2);
+/* harmony import */ var _Augmentations_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(17);
+/* harmony import */ var _Constants_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(3);
+/* harmony import */ var _engine_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(5);
+/* harmony import */ var _Faction_js__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(11);
+/* harmony import */ var _Location_js__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(4);
+/* harmony import */ var _Player_js__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(0);
+/* harmony import */ var _RedPill_js__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(38);
+/* harmony import */ var _Terminal_js__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(19);
+/* harmony import */ var _utils_DialogBox_js__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(7);
+/* harmony import */ var _utils_HelperFunctions_js__WEBPACK_IMPORTED_MODULE_9__ = __webpack_require__(1);
+/* harmony import */ var _utils_JSONReviver_js__WEBPACK_IMPORTED_MODULE_10__ = __webpack_require__(9);
+/* harmony import */ var numeral_min_numeral_min__WEBPACK_IMPORTED_MODULE_11__ = __webpack_require__(14);
+/* harmony import */ var numeral_min_numeral_min__WEBPACK_IMPORTED_MODULE_11___default = /*#__PURE__*/__webpack_require__.n(numeral_min_numeral_min__WEBPACK_IMPORTED_MODULE_11__);
+/* harmony import */ var _utils_StringHelperFunctions_js__WEBPACK_IMPORTED_MODULE_12__ = __webpack_require__(2);
+
@@ -26148,10 +25859,16 @@ var MaxStaminaToGainFactor = 70000; //Max Stamina is divided by this to get
var DifficultyToTimeFactor = 10; //Action Difficulty divided by this to get base action time
-//The difficulty multiplier affects stamina loss and hp loss of an action. Its formula is:
+//The difficulty multiplier affects stamina loss and hp loss of an action. Also affects
+//experience gain. Its formula is:
//difficulty ^ exponentialFactor + difficulty / linearFactor
var DiffMultExponentialFactor = 0.28;
-var DiffMultLinearFactor = 670;
+var DiffMultLinearFactor = 650;
+
+var EffAgiLinearFactor = 90e3;
+var EffDexLinearFactor = 90e3;
+var EffAgiExponentialFactor = 0.031;
+var EffDexExponentialFactor = 0.03;
var BaseRecruitmentTimeNeeded = 300; //Base time needed (s) to complete a Recruitment action
@@ -26164,13 +25881,14 @@ var BaseIntGain = 0.001; //Base intelligence stat gain
var ActionCountGrowthPeriod = 300; //Time (s) it takes for action count to grow by its specified value
var RankToFactionRepFactor = 2; //Delta Faction Rep = this * Delta Rank
+var RankNeededForFaction = 25;
-var ContractSuccessesPerLevel = 15; //How many successes you need to level up a contract
-var OperationSuccessesPerLevel = 10; //How many successes you need to level up an op
+var ContractSuccessesPerLevel = 3; //How many successes you need to level up a contract
+var OperationSuccessesPerLevel = 2.5; //How many successes you need to level up an op
var RanksPerSkillPoint = 4; //How many ranks needed to get 1 Skill Point
-var ContractBaseMoneyGain = 5e3; //Base Money Gained per contract
+var ContractBaseMoneyGain = 10e3; //Base Money Gained per contract
//DOM related variables
var ActiveActionCssClass = "bladeburner-active-action";
@@ -26249,25 +25967,25 @@ var consoleHelpText = {
//Keypresses for Console
$(document).keydown(function(event) {
- if (_engine_js__WEBPACK_IMPORTED_MODULE_1__["Engine"].currentPage === _engine_js__WEBPACK_IMPORTED_MODULE_1__["Engine"].Page.Bladeburner) {
+ if (_engine_js__WEBPACK_IMPORTED_MODULE_2__["Engine"].currentPage === _engine_js__WEBPACK_IMPORTED_MODULE_2__["Engine"].Page.Bladeburner) {
//if (DomElems.consoleInput && !event.ctrlKey && !event.shiftKey && !event.altKey) {
// DomElems.consoleInput.focus();
//}
- if (!(_Player_js__WEBPACK_IMPORTED_MODULE_4__["Player"].bladeburner instanceof Bladeburner)) {return;}
+ if (!(_Player_js__WEBPACK_IMPORTED_MODULE_5__["Player"].bladeburner instanceof Bladeburner)) {return;}
//NOTE: Keycodes imported from Terminal.js
- if (event.keyCode === _Terminal_js__WEBPACK_IMPORTED_MODULE_6__["KEY"].ENTER) {
+ if (event.keyCode === _Terminal_js__WEBPACK_IMPORTED_MODULE_7__["KEY"].ENTER) {
event.preventDefault();
var command = DomElems.consoleInput.value;
if (command.length > 0) {
- _Player_js__WEBPACK_IMPORTED_MODULE_4__["Player"].bladeburner.postToConsole("> " + command);
- _Player_js__WEBPACK_IMPORTED_MODULE_4__["Player"].bladeburner.resetConsoleInput();
- _Player_js__WEBPACK_IMPORTED_MODULE_4__["Player"].bladeburner.executeConsoleCommands(command);
+ _Player_js__WEBPACK_IMPORTED_MODULE_5__["Player"].bladeburner.postToConsole("> " + command);
+ _Player_js__WEBPACK_IMPORTED_MODULE_5__["Player"].bladeburner.resetConsoleInput();
+ _Player_js__WEBPACK_IMPORTED_MODULE_5__["Player"].bladeburner.executeConsoleCommands(command);
}
}
- if (event.keyCode === _Terminal_js__WEBPACK_IMPORTED_MODULE_6__["KEY"].UPARROW) {
+ if (event.keyCode === _Terminal_js__WEBPACK_IMPORTED_MODULE_7__["KEY"].UPARROW) {
if (DomElems.consoleInput == null) {return;}
var i = consoleHistoryIndex;
var len = consoleHistory.length;
@@ -26286,7 +26004,7 @@ $(document).keydown(function(event) {
setTimeout(function(){DomElems.consoleInput.selectionStart = DomElems.consoleInput.selectionEnd = 10000; }, 0);
}
- if (event.keyCode === _Terminal_js__WEBPACK_IMPORTED_MODULE_6__["KEY"].DOWNARROW) {
+ if (event.keyCode === _Terminal_js__WEBPACK_IMPORTED_MODULE_7__["KEY"].DOWNARROW) {
if (DomElems.consoleInput == null) {return;}
var i = consoleHistoryIndex;
var len = consoleHistory.length;
@@ -26310,15 +26028,15 @@ $(document).keydown(function(event) {
});
function City(params={}) {
- this.name = params.name ? params.name : _Location_js__WEBPACK_IMPORTED_MODULE_3__["Locations"].Sector12;
+ this.name = params.name ? params.name : _Location_js__WEBPACK_IMPORTED_MODULE_4__["Locations"].Sector12;
//Synthoid population and estimate
- this.pop = params.pop ? params.pop : Object(_utils_HelperFunctions_js__WEBPACK_IMPORTED_MODULE_8__["getRandomInt"])(800e6, 1.2*PopulationThreshold);
+ this.pop = params.pop ? params.pop : Object(_utils_HelperFunctions_js__WEBPACK_IMPORTED_MODULE_9__["getRandomInt"])(800e6, 1.2*PopulationThreshold);
this.popEst = this.pop * (Math.random() + 0.5);
//Number of Synthoid communities population and estimate
- this.comms = params.comms ? params.comms : Object(_utils_HelperFunctions_js__WEBPACK_IMPORTED_MODULE_8__["getRandomInt"])(1, 40);
- this.commsEst = this.comms + Object(_utils_HelperFunctions_js__WEBPACK_IMPORTED_MODULE_8__["getRandomInt"])(-2, 2);
+ this.comms = params.comms ? params.comms : Object(_utils_HelperFunctions_js__WEBPACK_IMPORTED_MODULE_9__["getRandomInt"])(1, 40);
+ this.commsEst = this.comms + Object(_utils_HelperFunctions_js__WEBPACK_IMPORTED_MODULE_9__["getRandomInt"])(-2, 2);
if (this.commsEst < 0) {this.commsEst = 0;}
this.chaos = 0;
}
@@ -26367,7 +26085,7 @@ City.prototype.changePopulationByCount = function(n, params={}) {
this.pop += n;
if (params.estChange && !isNaN(params.estChange)) {this.popEst += params.estChange;}
if (params.estOffset) {
- this.popEst = Object(_utils_HelperFunctions_js__WEBPACK_IMPORTED_MODULE_8__["addOffset"])(this.popEst, params.estOffset);
+ this.popEst = Object(_utils_HelperFunctions_js__WEBPACK_IMPORTED_MODULE_9__["addOffset"])(this.popEst, params.estOffset);
}
this.popEst = Math.max(this.popEst, 0);
}
@@ -26411,12 +26129,12 @@ City.prototype.changeChaosByPercentage = function(p) {
}
City.prototype.toJSON = function() {
- return Object(_utils_JSONReviver_js__WEBPACK_IMPORTED_MODULE_9__["Generic_toJSON"])("City", this);
+ return Object(_utils_JSONReviver_js__WEBPACK_IMPORTED_MODULE_10__["Generic_toJSON"])("City", this);
}
City.fromJSON = function(value) {
- return Object(_utils_JSONReviver_js__WEBPACK_IMPORTED_MODULE_9__["Generic_fromJSON"])(City, value.data);
+ return Object(_utils_JSONReviver_js__WEBPACK_IMPORTED_MODULE_10__["Generic_fromJSON"])(City, value.data);
}
-_utils_JSONReviver_js__WEBPACK_IMPORTED_MODULE_9__["Reviver"].constructors.City = City;
+_utils_JSONReviver_js__WEBPACK_IMPORTED_MODULE_10__["Reviver"].constructors.City = City;
function Skill(params={name:"foo", desc:"foo"}) {
if (params.name) {
@@ -26488,7 +26206,7 @@ function Action(params={}) {
this.level = 1;
this.maxLevel = 1;
this.autoLevel = true;
- this.baseDifficulty = params.baseDifficulty ? Object(_utils_HelperFunctions_js__WEBPACK_IMPORTED_MODULE_8__["addOffset"])(params.baseDifficulty, 10) : 100;
+ this.baseDifficulty = params.baseDifficulty ? Object(_utils_HelperFunctions_js__WEBPACK_IMPORTED_MODULE_9__["addOffset"])(params.baseDifficulty, 10) : 100;
this.difficultyFac = params.difficultyFac ? params.difficultyFac : 1.01;
//Rank increase/decrease is affected by this exponent
@@ -26511,8 +26229,8 @@ function Action(params={}) {
//Number of this contract remaining, and its growth rate
//Growth rate is an integer and the count will increase by that integer every "cycle"
- this.count = params.count ? params.count : Object(_utils_HelperFunctions_js__WEBPACK_IMPORTED_MODULE_8__["getRandomInt"])(1e3, 25e3);
- this.countGrowth = params.countGrowth ? params.countGrowth : Object(_utils_HelperFunctions_js__WEBPACK_IMPORTED_MODULE_8__["getRandomInt"])(1, 5);
+ this.count = params.count ? params.count : Object(_utils_HelperFunctions_js__WEBPACK_IMPORTED_MODULE_9__["getRandomInt"])(1e3, 25e3);
+ this.countGrowth = params.countGrowth ? params.countGrowth : Object(_utils_HelperFunctions_js__WEBPACK_IMPORTED_MODULE_9__["getRandomInt"])(1, 5);
//Weighting of each stat in determining action success rate
var defaultWeights = {hack:1/7,str:1/7,def:1/7,dex:1/7,agi:1/7,cha:1/7,int:1/7};
@@ -26559,7 +26277,7 @@ Action.prototype.getSuccessChance = function(inst, params={}) {
var competence = 0;
for (var stat in this.weights) {
if (this.weights.hasOwnProperty(stat)) {
- var playerStatLvl = _Player_js__WEBPACK_IMPORTED_MODULE_4__["Player"].queryStatFromString(stat);
+ var playerStatLvl = _Player_js__WEBPACK_IMPORTED_MODULE_5__["Player"].queryStatFromString(stat);
var key = "eff" + stat.charAt(0).toUpperCase() + stat.slice(1);
var effMultiplier = inst.skillMultipliers[key];
if (effMultiplier == null) {
@@ -26618,7 +26336,7 @@ Action.prototype.getSuccessChance = function(inst, params={}) {
}
//Augmentation multiplier
- competence *= _Player_js__WEBPACK_IMPORTED_MODULE_4__["Player"].bladeburner_success_chance_mult;
+ competence *= _Player_js__WEBPACK_IMPORTED_MODULE_5__["Player"].bladeburner_success_chance_mult;
if (isNaN(competence)) {throw new Error("Competence calculated as NaN in Action.getSuccessChance()");}
return Math.min(1, competence / difficulty);
@@ -26635,9 +26353,12 @@ Action.prototype.getActionTime = function(inst) {
var baseTime = difficulty / DifficultyToTimeFactor;
var skillFac = inst.skillMultipliers.actionTime; //Always < 1
- var effAgility = _Player_js__WEBPACK_IMPORTED_MODULE_4__["Player"].agility * inst.skillMultipliers.effAgi;
- var effDexterity = _Player_js__WEBPACK_IMPORTED_MODULE_4__["Player"].dexterity * inst.skillMultipliers.effDex;
- var statFac = 0.5 * (Math.pow(effAgility, 0.03) + Math.pow(effDexterity, 0.03)); //Always > 1
+ var effAgility = _Player_js__WEBPACK_IMPORTED_MODULE_5__["Player"].agility * inst.skillMultipliers.effAgi;
+ var effDexterity = _Player_js__WEBPACK_IMPORTED_MODULE_5__["Player"].dexterity * inst.skillMultipliers.effDex;
+ var statFac = 0.5 * (Math.pow(effAgility, EffAgiExponentialFactor) +
+ Math.pow(effDexterity, EffDexExponentialFactor) +
+ (effAgility / EffAgiLinearFactor) +
+ (effDexterity / EffDexLinearFactor)); //Always > 1
baseTime = Math.max(1, baseTime * skillFac / statFac);
@@ -26652,13 +26373,23 @@ Action.prototype.getActionTime = function(inst) {
}
}
+Action.prototype.getSuccessesNeededForNextLevel = function(baseSuccessesPerLevel) {
+ return Math.ceil((0.5) * (this.maxLevel) * (2 * baseSuccessesPerLevel + (this.maxLevel-1)));
+}
+
+Action.prototype.setMaxLevel = function(baseSuccessesPerLevel) {
+ if (this.successes >= this.getSuccessesNeededForNextLevel(baseSuccessesPerLevel)) {
+ ++this.maxLevel;
+ }
+}
+
Action.prototype.toJSON = function() {
- return Object(_utils_JSONReviver_js__WEBPACK_IMPORTED_MODULE_9__["Generic_toJSON"])("Action", this);
+ return Object(_utils_JSONReviver_js__WEBPACK_IMPORTED_MODULE_10__["Generic_toJSON"])("Action", this);
}
Action.fromJSON = function(value) {
- return Object(_utils_JSONReviver_js__WEBPACK_IMPORTED_MODULE_9__["Generic_fromJSON"])(Action, value.data);
+ return Object(_utils_JSONReviver_js__WEBPACK_IMPORTED_MODULE_10__["Generic_fromJSON"])(Action, value.data);
}
-_utils_JSONReviver_js__WEBPACK_IMPORTED_MODULE_9__["Reviver"].constructors.Action = Action;
+_utils_JSONReviver_js__WEBPACK_IMPORTED_MODULE_10__["Reviver"].constructors.Action = Action;
var GeneralActions = {}; //Training, Field Analysis, Recruitment, etc.
//Action Identifier
@@ -26678,12 +26409,12 @@ function ActionIdentifier(params={}) {
if (params.type) {this.type = params.type;}
}
ActionIdentifier.prototype.toJSON = function() {
- return Object(_utils_JSONReviver_js__WEBPACK_IMPORTED_MODULE_9__["Generic_toJSON"])("ActionIdentifier", this);
+ return Object(_utils_JSONReviver_js__WEBPACK_IMPORTED_MODULE_10__["Generic_toJSON"])("ActionIdentifier", this);
}
ActionIdentifier.fromJSON = function(value) {
- return Object(_utils_JSONReviver_js__WEBPACK_IMPORTED_MODULE_9__["Generic_fromJSON"])(ActionIdentifier, value.data);
+ return Object(_utils_JSONReviver_js__WEBPACK_IMPORTED_MODULE_10__["Generic_fromJSON"])(ActionIdentifier, value.data);
}
-_utils_JSONReviver_js__WEBPACK_IMPORTED_MODULE_9__["Reviver"].constructors.ActionIdentifier = ActionIdentifier;
+_utils_JSONReviver_js__WEBPACK_IMPORTED_MODULE_10__["Reviver"].constructors.ActionIdentifier = ActionIdentifier;
//Contracts
function Contract(params={}) {
@@ -26691,12 +26422,12 @@ function Contract(params={}) {
}
Contract.prototype = Object.create(Action.prototype);
Contract.prototype.toJSON = function() {
- return Object(_utils_JSONReviver_js__WEBPACK_IMPORTED_MODULE_9__["Generic_toJSON"])("Contract", this);
+ return Object(_utils_JSONReviver_js__WEBPACK_IMPORTED_MODULE_10__["Generic_toJSON"])("Contract", this);
}
Contract.fromJSON = function(value) {
- return Object(_utils_JSONReviver_js__WEBPACK_IMPORTED_MODULE_9__["Generic_fromJSON"])(Contract, value.data);
+ return Object(_utils_JSONReviver_js__WEBPACK_IMPORTED_MODULE_10__["Generic_fromJSON"])(Contract, value.data);
}
-_utils_JSONReviver_js__WEBPACK_IMPORTED_MODULE_9__["Reviver"].constructors.Contract = Contract;
+_utils_JSONReviver_js__WEBPACK_IMPORTED_MODULE_10__["Reviver"].constructors.Contract = Contract;
//Operations
function Operation(params={}) {
@@ -26706,12 +26437,12 @@ function Operation(params={}) {
}
Operation.prototype = Object.create(Action.prototype);
Operation.prototype.toJSON = function() {
- return Object(_utils_JSONReviver_js__WEBPACK_IMPORTED_MODULE_9__["Generic_toJSON"])("Operation", this);
+ return Object(_utils_JSONReviver_js__WEBPACK_IMPORTED_MODULE_10__["Generic_toJSON"])("Operation", this);
}
Operation.fromJSON = function(value) {
- return Object(_utils_JSONReviver_js__WEBPACK_IMPORTED_MODULE_9__["Generic_fromJSON"])(Operation, value.data);
+ return Object(_utils_JSONReviver_js__WEBPACK_IMPORTED_MODULE_10__["Generic_fromJSON"])(Operation, value.data);
}
-_utils_JSONReviver_js__WEBPACK_IMPORTED_MODULE_9__["Reviver"].constructors.Operation = Operation;
+_utils_JSONReviver_js__WEBPACK_IMPORTED_MODULE_10__["Reviver"].constructors.Operation = Operation;
//Black Operations
function BlackOperation(params={}) {
@@ -26723,12 +26454,12 @@ function BlackOperation(params={}) {
}
BlackOperation.prototype = Object.create(Action.prototype);
BlackOperation.prototype.toJSON = function() {
- return Object(_utils_JSONReviver_js__WEBPACK_IMPORTED_MODULE_9__["Generic_toJSON"])("BlackOperation", this);
+ return Object(_utils_JSONReviver_js__WEBPACK_IMPORTED_MODULE_10__["Generic_toJSON"])("BlackOperation", this);
}
BlackOperation.fromJSON = function(value) {
- return Object(_utils_JSONReviver_js__WEBPACK_IMPORTED_MODULE_9__["Generic_fromJSON"])(BlackOperation, value.data);
+ return Object(_utils_JSONReviver_js__WEBPACK_IMPORTED_MODULE_10__["Generic_fromJSON"])(BlackOperation, value.data);
}
-_utils_JSONReviver_js__WEBPACK_IMPORTED_MODULE_9__["Reviver"].constructors.BlackOperation = BlackOperation;
+_utils_JSONReviver_js__WEBPACK_IMPORTED_MODULE_10__["Reviver"].constructors.BlackOperation = BlackOperation;
var BlackOperations = {};
function Bladeburner(params={}) {
@@ -26745,7 +26476,7 @@ function Bladeburner(params={}) {
this.storedCycles = 0;
- this.randomEventCounter = Object(_utils_HelperFunctions_js__WEBPACK_IMPORTED_MODULE_8__["getRandomInt"])(300, 600); //5-10 minutes
+ this.randomEventCounter = Object(_utils_HelperFunctions_js__WEBPACK_IMPORTED_MODULE_9__["getRandomInt"])(300, 600); //5-10 minutes
//These times are in seconds
this.actionTimeToComplete = 0; //0 or -1 is an infinite running action (like training)
@@ -26759,7 +26490,7 @@ function Bladeburner(params={}) {
for (var i = 0; i < CityNames.length; ++i) {
this.cities[CityNames[i]] = new City({name:CityNames[i]});
}
- this.city = _Location_js__WEBPACK_IMPORTED_MODULE_3__["Locations"].Sector12;
+ this.city = _Location_js__WEBPACK_IMPORTED_MODULE_4__["Locations"].Sector12;
//Map of SkillNames -> level
this.skills = {};
@@ -26803,6 +26534,14 @@ function Bladeburner(params={}) {
if (params.new) {this.create();}
}
+Bladeburner.prototype.prestige = function() {
+ this.resetAction();
+ var bladeburnerFac = _Faction_js__WEBPACK_IMPORTED_MODULE_3__["Factions"]["Bladeburners"];
+ if (this.rank >= RankNeededForFaction) {
+ Object(_Faction_js__WEBPACK_IMPORTED_MODULE_3__["joinFaction"])(bladeburnerFac);
+ }
+}
+
Bladeburner.prototype.create = function() {
this.contracts["Tracking"] = new Contract({
name:"Tracking",
@@ -26812,7 +26551,7 @@ Bladeburner.prototype.create = function() {
"whatever city you are currently in.",
baseDifficulty:125,difficultyFac:1.02,rewardFac:1.041,
rankGain:0.3, hpLoss:0.5,
- count:Object(_utils_HelperFunctions_js__WEBPACK_IMPORTED_MODULE_8__["getRandomInt"])(300, 800), countGrowth:Object(_utils_HelperFunctions_js__WEBPACK_IMPORTED_MODULE_8__["getRandomInt"])(1, 5),
+ count:Object(_utils_HelperFunctions_js__WEBPACK_IMPORTED_MODULE_9__["getRandomInt"])(300, 800), countGrowth:Object(_utils_HelperFunctions_js__WEBPACK_IMPORTED_MODULE_9__["getRandomInt"])(1, 5),
weights:{hack:0,str:0.05,def:0.05,dex:0.35,agi:0.35,cha:0.1, int:0.05},
decays:{hack:0,str:0.91,def:0.91,dex:0.91,agi:0.91,cha:0.9, int:1},
isStealth:true
@@ -26824,7 +26563,7 @@ Bladeburner.prototype.create = function() {
"current city, and will also increase its chaos level.",
baseDifficulty:250, difficultyFac:1.04,rewardFac:1.085,
rankGain:0.9, hpLoss:1,
- count:Object(_utils_HelperFunctions_js__WEBPACK_IMPORTED_MODULE_8__["getRandomInt"])(200, 750), countGrowth:Object(_utils_HelperFunctions_js__WEBPACK_IMPORTED_MODULE_8__["getRandomInt"])(1, 3),
+ count:Object(_utils_HelperFunctions_js__WEBPACK_IMPORTED_MODULE_9__["getRandomInt"])(200, 750), countGrowth:Object(_utils_HelperFunctions_js__WEBPACK_IMPORTED_MODULE_9__["getRandomInt"])(1, 3),
weights:{hack:0,str:0.15,def:0.15,dex:0.25,agi:0.25,cha:0.1, int:0.1},
decays:{hack:0,str:0.91,def:0.91,dex:0.91,agi:0.91,cha:0.8, int:0.9},
isKill:true
@@ -26836,7 +26575,7 @@ Bladeburner.prototype.create = function() {
"city, and will also increase its chaos level.",
baseDifficulty:200, difficultyFac:1.03, rewardFac:1.065,
rankGain:0.6, hpLoss:1,
- count:Object(_utils_HelperFunctions_js__WEBPACK_IMPORTED_MODULE_8__["getRandomInt"])(300, 900), countGrowth:Object(_utils_HelperFunctions_js__WEBPACK_IMPORTED_MODULE_8__["getRandomInt"])(1,4),
+ count:Object(_utils_HelperFunctions_js__WEBPACK_IMPORTED_MODULE_9__["getRandomInt"])(300, 900), countGrowth:Object(_utils_HelperFunctions_js__WEBPACK_IMPORTED_MODULE_9__["getRandomInt"])(1,4),
weights:{hack:0,str:0.2,def:0.2,dex:0.2,agi:0.2,cha:0.1, int:0.1},
decays:{hack:0,str:0.91,def:0.91,dex:0.91,agi:0.91,cha:0.8, int:0.9},
isKill:true
@@ -26851,7 +26590,7 @@ Bladeburner.prototype.create = function() {
"You will NOT lose HP from failed Investigation ops.",
baseDifficulty:400, difficultyFac:1.03,rewardFac:1.07,reqdRank:25,
rankGain:2, rankLoss:0.2,
- count:Object(_utils_HelperFunctions_js__WEBPACK_IMPORTED_MODULE_8__["getRandomInt"])(50, 400), countGrowth:1,
+ count:Object(_utils_HelperFunctions_js__WEBPACK_IMPORTED_MODULE_9__["getRandomInt"])(50, 400), countGrowth:1,
weights:{hack:0.25,str:0.05,def:0.05,dex:0.2,agi:0.1,cha:0.25, int:0.1},
decays:{hack:0.85,str:0.9,def:0.9,dex:0.9,agi:0.9,cha:0.7, int:0.9},
isStealth:true
@@ -26864,7 +26603,7 @@ Bladeburner.prototype.create = function() {
"data.",
baseDifficulty:500, difficultyFac:1.04, rewardFac:1.09, reqdRank:100,
rankGain:4, rankLoss:0.4, hpLoss:2,
- count:Object(_utils_HelperFunctions_js__WEBPACK_IMPORTED_MODULE_8__["getRandomInt"])(50, 300), countGrowth:1,
+ count:Object(_utils_HelperFunctions_js__WEBPACK_IMPORTED_MODULE_9__["getRandomInt"])(50, 300), countGrowth:1,
weights:{hack:0.2,str:0.05,def:0.05,dex:0.2,agi:0.2,cha:0.2, int:0.1},
decays:{hack:0.8,str:0.9,def:0.9,dex:0.9,agi:0.9,cha:0.7, int:0.9},
isStealth:true
@@ -26875,7 +26614,7 @@ Bladeburner.prototype.create = function() {
"notorious Synthoid criminals.",
baseDifficulty:650, difficultyFac:1.04, rewardFac:1.095, reqdRank:500,
rankGain:5, rankLoss:0.5, hpLoss:2.5,
- count:Object(_utils_HelperFunctions_js__WEBPACK_IMPORTED_MODULE_8__["getRandomInt"])(25,400), countGrowth:0.75,
+ count:Object(_utils_HelperFunctions_js__WEBPACK_IMPORTED_MODULE_9__["getRandomInt"])(25,400), countGrowth:0.75,
weights:{hack:0.25,str:0.05,def:0.05,dex:0.25,agi:0.1,cha:0.2, int:0.1},
decays:{hack:0.8,str:0.85,def:0.85,dex:0.85,agi:0.85,cha:0.7, int:0.9},
isStealth:true
@@ -26887,7 +26626,7 @@ Bladeburner.prototype.create = function() {
"in order for this Operation to be successful",
baseDifficulty:800, difficultyFac:1.045, rewardFac:1.1, reqdRank:3000,
rankGain:50,rankLoss:2.5,hpLoss:50,
- count:Object(_utils_HelperFunctions_js__WEBPACK_IMPORTED_MODULE_8__["getRandomInt"])(25, 150), countGrowth:0.2,
+ count:Object(_utils_HelperFunctions_js__WEBPACK_IMPORTED_MODULE_9__["getRandomInt"])(25, 150), countGrowth:0.2,
weights:{hack:0.1,str:0.2,def:0.2,dex:0.2,agi:0.2,cha:0, int:0.1},
decays:{hack:0.7,str:0.8,def:0.8,dex:0.8,agi:0.8,cha:0, int:0.9},
isKill:true
@@ -26899,7 +26638,7 @@ Bladeburner.prototype.create = function() {
"drawing any attention. Stealth and discretion are key.",
baseDifficulty:1000, difficultyFac:1.05, rewardFac:1.11, reqdRank:20e3,
rankGain:20, rankLoss:2, hpLoss:10,
- count:Object(_utils_HelperFunctions_js__WEBPACK_IMPORTED_MODULE_8__["getRandomInt"])(25, 250), countGrowth:0.1,
+ count:Object(_utils_HelperFunctions_js__WEBPACK_IMPORTED_MODULE_9__["getRandomInt"])(25, 250), countGrowth:0.1,
weights:{hack:0.1,str:0.1,def:0.1,dex:0.3,agi:0.3,cha:0, int:0.1},
decays:{hack:0.7,str:0.8,def:0.8,dex:0.8,agi:0.8,cha:0, int:0.9},
isStealth:true, isKill:true
@@ -26911,7 +26650,7 @@ Bladeburner.prototype.create = function() {
"in the Synthoid communities.",
baseDifficulty:1500, difficultyFac:1.06, rewardFac:1.14, reqdRank:50e3,
rankGain:40, rankLoss:4, hpLoss:5,
- count:Object(_utils_HelperFunctions_js__WEBPACK_IMPORTED_MODULE_8__["getRandomInt"])(25, 200), countGrowth:0.1,
+ count:Object(_utils_HelperFunctions_js__WEBPACK_IMPORTED_MODULE_9__["getRandomInt"])(25, 200), countGrowth:0.1,
weights:{hack:0.1,str:0.1,def:0.1,dex:0.3,agi:0.3,cha:0, int:0.1},
decays:{hack:0.6,str:0.8,def:0.8,dex:0.8,agi:0.8,cha:0, int:0.8},
isStealth:true, isKill:true
@@ -26923,10 +26662,15 @@ Bladeburner.prototype.storeCycles = function(numCycles=1) {
}
Bladeburner.prototype.process = function() {
+ //Extreme condition...if Operation Daedalus is complete trigger the BitNode
+ if (_RedPill_js__WEBPACK_IMPORTED_MODULE_6__["redPillFlag"] === false && this.blackops.hasOwnProperty("Operation Daedalus")) {
+ return Object(_RedPill_js__WEBPACK_IMPORTED_MODULE_6__["hackWorldDaemon"])(_Player_js__WEBPACK_IMPORTED_MODULE_5__["Player"].bitNodeN);
+ }
+
//If the Player starts doing some other actions, set action to idle and alert
- if (_Player_js__WEBPACK_IMPORTED_MODULE_4__["Player"].isWorking) {
+ if (_Augmentations_js__WEBPACK_IMPORTED_MODULE_0__["Augmentations"][_Augmentations_js__WEBPACK_IMPORTED_MODULE_0__["AugmentationNames"].BladesSimulacrum].owned === false && _Player_js__WEBPACK_IMPORTED_MODULE_5__["Player"].isWorking) {
if (this.action.type !== ActionTypes["Idle"]) {
- Object(_utils_DialogBox_js__WEBPACK_IMPORTED_MODULE_7__["dialogBoxCreate"])("Your Bladeburner action was cancelled because you started " +
+ Object(_utils_DialogBox_js__WEBPACK_IMPORTED_MODULE_8__["dialogBoxCreate"])("Your Bladeburner action was cancelled because you started " +
"doing something else");
}
this.resetAction();
@@ -26969,7 +26713,7 @@ Bladeburner.prototype.process = function() {
this.randomEventCounter -= seconds;
if (this.randomEventCounter <= 0) {
this.randomEvent();
- this.randomEventCounter = Object(_utils_HelperFunctions_js__WEBPACK_IMPORTED_MODULE_8__["getRandomInt"])(300, 600);
+ this.randomEventCounter = Object(_utils_HelperFunctions_js__WEBPACK_IMPORTED_MODULE_9__["getRandomInt"])(300, 600);
}
this.processAction(seconds);
@@ -26989,26 +26733,26 @@ Bladeburner.prototype.process = function() {
}
}
- if (_engine_js__WEBPACK_IMPORTED_MODULE_1__["Engine"].currentPage === _engine_js__WEBPACK_IMPORTED_MODULE_1__["Engine"].Page.Bladeburner) {
+ if (_engine_js__WEBPACK_IMPORTED_MODULE_2__["Engine"].currentPage === _engine_js__WEBPACK_IMPORTED_MODULE_2__["Engine"].Page.Bladeburner) {
this.updateContent();
}
}
}
Bladeburner.prototype.calculateMaxStamina = function() {
- var effAgility = _Player_js__WEBPACK_IMPORTED_MODULE_4__["Player"].agility * this.skillMultipliers.effAgi;
+ var effAgility = _Player_js__WEBPACK_IMPORTED_MODULE_5__["Player"].agility * this.skillMultipliers.effAgi;
var maxStamina = (Math.pow(effAgility, 0.8) + this.staminaBonus);
maxStamina *= this.skillMultipliers.stamina;
- maxStamina *= _Player_js__WEBPACK_IMPORTED_MODULE_4__["Player"].bladeburner_max_stamina_mult;
+ maxStamina *= _Player_js__WEBPACK_IMPORTED_MODULE_5__["Player"].bladeburner_max_stamina_mult;
if (isNaN(maxStamina)) {throw new Error("Max Stamina calculated to be NaN in Bladeburner.calculateMaxStamina()");}
this.maxStamina = maxStamina;
}
Bladeburner.prototype.calculateStaminaGainPerSecond = function() {
- var effAgility = _Player_js__WEBPACK_IMPORTED_MODULE_4__["Player"].agility * this.skillMultipliers.effAgi;
+ var effAgility = _Player_js__WEBPACK_IMPORTED_MODULE_5__["Player"].agility * this.skillMultipliers.effAgi;
var maxStaminaBonus = this.maxStamina / MaxStaminaToGainFactor;
var gain = (StaminaGainPerSecond + maxStaminaBonus) * Math.pow(effAgility, 0.17);
- return gain * (this.skillMultipliers.stamina * _Player_js__WEBPACK_IMPORTED_MODULE_4__["Player"].bladeburner_stamina_gain_mult);
+ return gain * (this.skillMultipliers.stamina * _Player_js__WEBPACK_IMPORTED_MODULE_5__["Player"].bladeburner_stamina_gain_mult);
}
Bladeburner.prototype.calculateStaminaPenalty = function() {
@@ -27022,13 +26766,14 @@ Bladeburner.prototype.changeRank = function(change) {
this.maxRank = Math.max(this.rank, this.maxRank);
var bladeburnersFactionName = "Bladeburners";
- if (Object(_Faction_js__WEBPACK_IMPORTED_MODULE_2__["factionExists"])(bladeburnersFactionName)) {
- var bladeburnerFac = _Faction_js__WEBPACK_IMPORTED_MODULE_2__["Factions"][bladeburnersFactionName];
- if (!(bladeburnerFac instanceof _Faction_js__WEBPACK_IMPORTED_MODULE_2__["Faction"])) {
+ if (Object(_Faction_js__WEBPACK_IMPORTED_MODULE_3__["factionExists"])(bladeburnersFactionName)) {
+ var bladeburnerFac = _Faction_js__WEBPACK_IMPORTED_MODULE_3__["Factions"][bladeburnersFactionName];
+ if (!(bladeburnerFac instanceof _Faction_js__WEBPACK_IMPORTED_MODULE_3__["Faction"])) {
throw new Error("Could not properly get Bladeburner Faction object in Bladeburner UI Overview Faction button");
}
if (bladeburnerFac.isMember) {
- bladeburnerFac.playerReputation += (RankToFactionRepFactor * change * _Player_js__WEBPACK_IMPORTED_MODULE_4__["Player"].faction_rep_mult);
+ var favorBonus = 1 + (bladeburnerFac.favor / 100);
+ bladeburnerFac.playerReputation += (RankToFactionRepFactor * change * _Player_js__WEBPACK_IMPORTED_MODULE_5__["Player"].faction_rep_mult * favorBonus);
}
}
@@ -27140,6 +26885,7 @@ Bladeburner.prototype.resetAction = function() {
}
Bladeburner.prototype.startAction = function(actionId) {
+ if (actionId == null) {return;}
this.action = actionId;
this.actionTimeCurrent = 0;
switch (actionId.type) {
@@ -27155,7 +26901,7 @@ Bladeburner.prototype.startAction = function(actionId) {
if (action.count < 1) {return this.resetAction();}
this.actionTimeToComplete = action.getActionTime(this);
} catch(e) {
- Object(_utils_HelperFunctions_js__WEBPACK_IMPORTED_MODULE_8__["exceptionAlert"])(e);
+ Object(_utils_HelperFunctions_js__WEBPACK_IMPORTED_MODULE_9__["exceptionAlert"])(e);
}
break;
case ActionTypes["Operation"]:
@@ -27167,7 +26913,7 @@ Bladeburner.prototype.startAction = function(actionId) {
if (action.count < 1) {return this.resetAction();}
this.actionTimeToComplete = action.getActionTime(this);
} catch(e) {
- Object(_utils_HelperFunctions_js__WEBPACK_IMPORTED_MODULE_8__["exceptionAlert"])(e);
+ Object(_utils_HelperFunctions_js__WEBPACK_IMPORTED_MODULE_9__["exceptionAlert"])(e);
}
break;
case ActionTypes["BlackOp"]:
@@ -27179,17 +26925,14 @@ Bladeburner.prototype.startAction = function(actionId) {
}
this.actionTimeToComplete = action.getActionTime(this);
} catch(e) {
- Object(_utils_HelperFunctions_js__WEBPACK_IMPORTED_MODULE_8__["exceptionAlert"])(e);
+ Object(_utils_HelperFunctions_js__WEBPACK_IMPORTED_MODULE_9__["exceptionAlert"])(e);
}
break;
case ActionTypes["Training"]:
this.actionTimeToComplete = 30;
break;
case ActionTypes["Recruitment"]:
- var effCharisma = _Player_js__WEBPACK_IMPORTED_MODULE_4__["Player"].charisma * this.skillMultipliers.effCha;
- var charismaFactor = Math.pow(effCharisma, 0.81) + effCharisma / 90;
- var time = Math.max(10, Math.round(BaseRecruitmentTimeNeeded - charismaFactor));
- this.actionTimeToComplete = time;
+ this.actionTimeToComplete = this.getRecruitmentTime();
break;
case ActionTypes["FieldAnalysis"]:
case ActionTypes["Field Analysis"]:
@@ -27245,21 +26988,21 @@ Bladeburner.prototype.completeAction = function() {
var moneyGain = 0;
if (!isOperation) {
moneyGain = ContractBaseMoneyGain * rewardMultiplier;
- _Player_js__WEBPACK_IMPORTED_MODULE_4__["Player"].gainMoney(moneyGain);
+ _Player_js__WEBPACK_IMPORTED_MODULE_5__["Player"].gainMoney(moneyGain);
}
if (isOperation) {
- action.maxLevel = Math.floor(action.successes / OperationSuccessesPerLevel) + 1;
+ action.setMaxLevel(OperationSuccessesPerLevel);
} else {
- action.maxLevel = Math.floor(action.successes / ContractSuccessesPerLevel) + 1;
+ action.setMaxLevel(ContractSuccessesPerLevel);
}
if (action.rankGain) {
- var gain = Object(_utils_HelperFunctions_js__WEBPACK_IMPORTED_MODULE_8__["addOffset"])(action.rankGain * rewardMultiplier, 10);
+ var gain = Object(_utils_HelperFunctions_js__WEBPACK_IMPORTED_MODULE_9__["addOffset"])(action.rankGain * rewardMultiplier, 10);
this.changeRank(gain);
if (isOperation && this.logging.ops) {
- this.log(action.name + " successfully completed! Gained " + Object(_utils_StringHelperFunctions_js__WEBPACK_IMPORTED_MODULE_11__["formatNumber"])(gain, 3) + " rank");
+ this.log(action.name + " successfully completed! Gained " + Object(_utils_StringHelperFunctions_js__WEBPACK_IMPORTED_MODULE_12__["formatNumber"])(gain, 3) + " rank");
} else if (!isOperation && this.logging.contracts) {
- this.log(action.name + " contract successfully completed! Gained " + Object(_utils_StringHelperFunctions_js__WEBPACK_IMPORTED_MODULE_11__["formatNumber"])(gain, 3) + " rank and " + _utils_numeral_min_js__WEBPACK_IMPORTED_MODULE_10___default()(moneyGain).format("$0.000a"));
+ this.log(action.name + " contract successfully completed! Gained " + Object(_utils_StringHelperFunctions_js__WEBPACK_IMPORTED_MODULE_12__["formatNumber"])(gain, 3) + " rank and " + numeral_min_numeral_min__WEBPACK_IMPORTED_MODULE_11___default()(moneyGain).format("$0.000a"));
}
}
isOperation ? this.completeOperation(true) : this.completeContract(true);
@@ -27268,21 +27011,21 @@ Bladeburner.prototype.completeAction = function() {
++action.failures;
var loss = 0, damage = 0;
if (action.rankLoss) {
- loss = Object(_utils_HelperFunctions_js__WEBPACK_IMPORTED_MODULE_8__["addOffset"])(action.rankLoss * rewardMultiplier, 10);
+ loss = Object(_utils_HelperFunctions_js__WEBPACK_IMPORTED_MODULE_9__["addOffset"])(action.rankLoss * rewardMultiplier, 10);
this.changeRank(-1 * loss);
}
if (action.hpLoss) {
damage = action.hpLoss * difficultyMultiplier;
- damage = Math.ceil(Object(_utils_HelperFunctions_js__WEBPACK_IMPORTED_MODULE_8__["addOffset"])(damage, 10));
+ damage = Math.ceil(Object(_utils_HelperFunctions_js__WEBPACK_IMPORTED_MODULE_9__["addOffset"])(damage, 10));
this.hpLost += damage;
- if (_Player_js__WEBPACK_IMPORTED_MODULE_4__["Player"].takeDamage(damage)) {
+ if (_Player_js__WEBPACK_IMPORTED_MODULE_5__["Player"].takeDamage(damage)) {
++this.numHosp;
- this.moneyLost += (_Constants_js__WEBPACK_IMPORTED_MODULE_0__["CONSTANTS"].HospitalCostPerHp * _Player_js__WEBPACK_IMPORTED_MODULE_4__["Player"].max_hp);
+ this.moneyLost += (_Constants_js__WEBPACK_IMPORTED_MODULE_1__["CONSTANTS"].HospitalCostPerHp * _Player_js__WEBPACK_IMPORTED_MODULE_5__["Player"].max_hp);
}
}
var logLossText = "";
- if (loss > 0) {logLossText += "Lost " + Object(_utils_StringHelperFunctions_js__WEBPACK_IMPORTED_MODULE_11__["formatNumber"])(loss, 3) + " rank.";}
- if (damage > 0) {logLossText += "Took " + Object(_utils_StringHelperFunctions_js__WEBPACK_IMPORTED_MODULE_11__["formatNumber"])(damage, 0) + " damage.";}
+ if (loss > 0) {logLossText += "Lost " + Object(_utils_StringHelperFunctions_js__WEBPACK_IMPORTED_MODULE_12__["formatNumber"])(loss, 3) + " rank.";}
+ if (damage > 0) {logLossText += "Took " + Object(_utils_StringHelperFunctions_js__WEBPACK_IMPORTED_MODULE_12__["formatNumber"])(damage, 0) + " damage.";}
if (isOperation && this.logging.ops) {
this.log(action.name + " failed! " + logLossText);
} else if (!isOperation && this.logging.contracts) {
@@ -27293,7 +27036,7 @@ Bladeburner.prototype.completeAction = function() {
if (action.autoLevel) {action.level = action.maxLevel;} //Autolevel
this.startAction(this.action); //Repeat action
} catch(e) {
- Object(_utils_HelperFunctions_js__WEBPACK_IMPORTED_MODULE_8__["exceptionAlert"])(e);
+ Object(_utils_HelperFunctions_js__WEBPACK_IMPORTED_MODULE_9__["exceptionAlert"])(e);
}
break;
case ActionTypes["BlackOp"]:
@@ -27319,7 +27062,7 @@ Bladeburner.prototype.completeAction = function() {
this.blackops[action.name] = true;
var rankGain = 0;
if (action.rankGain) {
- rankGain = Object(_utils_HelperFunctions_js__WEBPACK_IMPORTED_MODULE_8__["addOffset"])(action.rankGain, 10);
+ rankGain = Object(_utils_HelperFunctions_js__WEBPACK_IMPORTED_MODULE_9__["addOffset"])(action.rankGain, 10);
this.changeRank(rankGain);
}
teamLossMax = Math.ceil(teamCount/2);
@@ -27327,35 +27070,35 @@ Bladeburner.prototype.completeAction = function() {
//Operation Daedalus
if (action.name === "Operation Daedalus") {
this.resetAction();
- return Object(_RedPill_js__WEBPACK_IMPORTED_MODULE_5__["hackWorldDaemon"])(_Player_js__WEBPACK_IMPORTED_MODULE_4__["Player"].bitNodeN);
+ return Object(_RedPill_js__WEBPACK_IMPORTED_MODULE_6__["hackWorldDaemon"])(_Player_js__WEBPACK_IMPORTED_MODULE_5__["Player"].bitNodeN);
}
- if (_engine_js__WEBPACK_IMPORTED_MODULE_1__["Engine"].currentPage === _engine_js__WEBPACK_IMPORTED_MODULE_1__["Engine"].Page.Bladeburner) {
+ if (_engine_js__WEBPACK_IMPORTED_MODULE_2__["Engine"].currentPage === _engine_js__WEBPACK_IMPORTED_MODULE_2__["Engine"].Page.Bladeburner) {
this.createActionAndSkillsContent();
}
if (this.logging.blackops) {
- this.log(action.name + " successful! Gained " + Object(_utils_StringHelperFunctions_js__WEBPACK_IMPORTED_MODULE_11__["formatNumber"])(rankGain, 1) + " rank");
+ this.log(action.name + " successful! Gained " + Object(_utils_StringHelperFunctions_js__WEBPACK_IMPORTED_MODULE_12__["formatNumber"])(rankGain, 1) + " rank");
}
} else {
this.gainActionStats(action, false);
var rankLoss = 0, damage = 0;
if (action.rankLoss) {
- rankLoss = Object(_utils_HelperFunctions_js__WEBPACK_IMPORTED_MODULE_8__["addOffset"])(action.rankLoss, 10);
+ rankLoss = Object(_utils_HelperFunctions_js__WEBPACK_IMPORTED_MODULE_9__["addOffset"])(action.rankLoss, 10);
this.changeRank(-1 * rankLoss);
}
if (action.hpLoss) {
damage = action.hpLoss * difficultyMultiplier;
- damage = Math.ceil(Object(_utils_HelperFunctions_js__WEBPACK_IMPORTED_MODULE_8__["addOffset"])(damage, 10));
- if (_Player_js__WEBPACK_IMPORTED_MODULE_4__["Player"].takeDamage(damage)) {
+ damage = Math.ceil(Object(_utils_HelperFunctions_js__WEBPACK_IMPORTED_MODULE_9__["addOffset"])(damage, 10));
+ if (_Player_js__WEBPACK_IMPORTED_MODULE_5__["Player"].takeDamage(damage)) {
++this.numHosp;
- this.moneyLost += (_Constants_js__WEBPACK_IMPORTED_MODULE_0__["CONSTANTS"].HospitalCostPerHp * _Player_js__WEBPACK_IMPORTED_MODULE_4__["Player"].max_hp);
+ this.moneyLost += (_Constants_js__WEBPACK_IMPORTED_MODULE_1__["CONSTANTS"].HospitalCostPerHp * _Player_js__WEBPACK_IMPORTED_MODULE_5__["Player"].max_hp);
}
}
teamLossMax = Math.floor(teamCount);
if (this.logging.blackops) {
- this.log(action.name + " failed! Lost " + Object(_utils_StringHelperFunctions_js__WEBPACK_IMPORTED_MODULE_11__["formatNumber"])(rankLoss, 1) + " rank and took" + Object(_utils_StringHelperFunctions_js__WEBPACK_IMPORTED_MODULE_11__["formatNumber"])(damage, 0) + " damage");
+ this.log(action.name + " failed! Lost " + Object(_utils_StringHelperFunctions_js__WEBPACK_IMPORTED_MODULE_12__["formatNumber"])(rankLoss, 1) + " rank and took" + Object(_utils_StringHelperFunctions_js__WEBPACK_IMPORTED_MODULE_12__["formatNumber"])(damage, 0) + " damage");
}
}
@@ -27363,77 +27106,77 @@ Bladeburner.prototype.completeAction = function() {
//Calculate team lossses
if (teamCount >= 1) {
- var losses = Object(_utils_HelperFunctions_js__WEBPACK_IMPORTED_MODULE_8__["getRandomInt"])(1, teamLossMax);
+ var losses = Object(_utils_HelperFunctions_js__WEBPACK_IMPORTED_MODULE_9__["getRandomInt"])(1, teamLossMax);
this.teamSize -= losses;
this.teamLost += losses;
if (this.logging.blackops) {
- this.log("You lost " + Object(_utils_StringHelperFunctions_js__WEBPACK_IMPORTED_MODULE_11__["formatNumber"])(losses, 0) + " team members during " + action.name);
+ this.log("You lost " + Object(_utils_StringHelperFunctions_js__WEBPACK_IMPORTED_MODULE_12__["formatNumber"])(losses, 0) + " team members during " + action.name);
}
}
} catch(e) {
- Object(_utils_HelperFunctions_js__WEBPACK_IMPORTED_MODULE_8__["exceptionAlert"])(e);
+ Object(_utils_HelperFunctions_js__WEBPACK_IMPORTED_MODULE_9__["exceptionAlert"])(e);
}
break;
case ActionTypes["Training"]:
this.stamina -= (0.5 * BaseStaminaLoss);
- var strExpGain = 30 * _Player_js__WEBPACK_IMPORTED_MODULE_4__["Player"].strength_exp_mult,
- defExpGain = 30 * _Player_js__WEBPACK_IMPORTED_MODULE_4__["Player"].defense_exp_mult,
- dexExpGain = 30 * _Player_js__WEBPACK_IMPORTED_MODULE_4__["Player"].dexterity_exp_mult,
- agiExpGain = 30 * _Player_js__WEBPACK_IMPORTED_MODULE_4__["Player"].agility_exp_mult,
+ var strExpGain = 30 * _Player_js__WEBPACK_IMPORTED_MODULE_5__["Player"].strength_exp_mult,
+ defExpGain = 30 * _Player_js__WEBPACK_IMPORTED_MODULE_5__["Player"].defense_exp_mult,
+ dexExpGain = 30 * _Player_js__WEBPACK_IMPORTED_MODULE_5__["Player"].dexterity_exp_mult,
+ agiExpGain = 30 * _Player_js__WEBPACK_IMPORTED_MODULE_5__["Player"].agility_exp_mult,
staminaGain = 0.04 * this.skillMultipliers.stamina;
- _Player_js__WEBPACK_IMPORTED_MODULE_4__["Player"].gainStrengthExp(strExpGain);
- _Player_js__WEBPACK_IMPORTED_MODULE_4__["Player"].gainDefenseExp(defExpGain);
- _Player_js__WEBPACK_IMPORTED_MODULE_4__["Player"].gainDexterityExp(dexExpGain);
- _Player_js__WEBPACK_IMPORTED_MODULE_4__["Player"].gainAgilityExp(agiExpGain);
+ _Player_js__WEBPACK_IMPORTED_MODULE_5__["Player"].gainStrengthExp(strExpGain);
+ _Player_js__WEBPACK_IMPORTED_MODULE_5__["Player"].gainDefenseExp(defExpGain);
+ _Player_js__WEBPACK_IMPORTED_MODULE_5__["Player"].gainDexterityExp(dexExpGain);
+ _Player_js__WEBPACK_IMPORTED_MODULE_5__["Player"].gainAgilityExp(agiExpGain);
this.staminaBonus += (staminaGain);
if (this.logging.general) {
this.log("Training completed. Gained: " +
- Object(_utils_StringHelperFunctions_js__WEBPACK_IMPORTED_MODULE_11__["formatNumber"])(strExpGain, 1) + " str exp, " +
- Object(_utils_StringHelperFunctions_js__WEBPACK_IMPORTED_MODULE_11__["formatNumber"])(defExpGain, 1) + " def exp, " +
- Object(_utils_StringHelperFunctions_js__WEBPACK_IMPORTED_MODULE_11__["formatNumber"])(dexExpGain, 1) + " dex exp, " +
- Object(_utils_StringHelperFunctions_js__WEBPACK_IMPORTED_MODULE_11__["formatNumber"])(agiExpGain, 1) + " agi exp, " +
- Object(_utils_StringHelperFunctions_js__WEBPACK_IMPORTED_MODULE_11__["formatNumber"])(staminaGain, 3) + " max stamina");
+ Object(_utils_StringHelperFunctions_js__WEBPACK_IMPORTED_MODULE_12__["formatNumber"])(strExpGain, 1) + " str exp, " +
+ Object(_utils_StringHelperFunctions_js__WEBPACK_IMPORTED_MODULE_12__["formatNumber"])(defExpGain, 1) + " def exp, " +
+ Object(_utils_StringHelperFunctions_js__WEBPACK_IMPORTED_MODULE_12__["formatNumber"])(dexExpGain, 1) + " dex exp, " +
+ Object(_utils_StringHelperFunctions_js__WEBPACK_IMPORTED_MODULE_12__["formatNumber"])(agiExpGain, 1) + " agi exp, " +
+ Object(_utils_StringHelperFunctions_js__WEBPACK_IMPORTED_MODULE_12__["formatNumber"])(staminaGain, 3) + " max stamina");
}
this.startAction(this.action); //Repeat action
break;
case ActionTypes["FieldAnalysis"]:
case ActionTypes["Field Analysis"]:
//Does not use stamina. Effectiveness depends on hacking, int, and cha
- var eff = 0.04 * Math.pow(_Player_js__WEBPACK_IMPORTED_MODULE_4__["Player"].hacking_skill, 0.3) +
- 0.04 * Math.pow(_Player_js__WEBPACK_IMPORTED_MODULE_4__["Player"].intelligence, 0.9) +
- 0.02 * Math.pow(_Player_js__WEBPACK_IMPORTED_MODULE_4__["Player"].charisma, 0.3);
- eff *= _Player_js__WEBPACK_IMPORTED_MODULE_4__["Player"].bladeburner_analysis_mult;
+ var eff = 0.04 * Math.pow(_Player_js__WEBPACK_IMPORTED_MODULE_5__["Player"].hacking_skill, 0.3) +
+ 0.04 * Math.pow(_Player_js__WEBPACK_IMPORTED_MODULE_5__["Player"].intelligence, 0.9) +
+ 0.02 * Math.pow(_Player_js__WEBPACK_IMPORTED_MODULE_5__["Player"].charisma, 0.3);
+ eff *= _Player_js__WEBPACK_IMPORTED_MODULE_5__["Player"].bladeburner_analysis_mult;
if (isNaN(eff) || eff < 0) {
throw new Error("Field Analysis Effectiveness calculated to be NaN or negative");
}
- var hackingExpGain = 20 * _Player_js__WEBPACK_IMPORTED_MODULE_4__["Player"].hacking_exp_mult,
- charismaExpGain = 20 * _Player_js__WEBPACK_IMPORTED_MODULE_4__["Player"].charisma_exp_mult;
- _Player_js__WEBPACK_IMPORTED_MODULE_4__["Player"].gainHackingExp(hackingExpGain);
- _Player_js__WEBPACK_IMPORTED_MODULE_4__["Player"].gainIntelligenceExp(BaseIntGain);
- _Player_js__WEBPACK_IMPORTED_MODULE_4__["Player"].gainCharismaExp(charismaExpGain);
+ var hackingExpGain = 20 * _Player_js__WEBPACK_IMPORTED_MODULE_5__["Player"].hacking_exp_mult,
+ charismaExpGain = 20 * _Player_js__WEBPACK_IMPORTED_MODULE_5__["Player"].charisma_exp_mult;
+ _Player_js__WEBPACK_IMPORTED_MODULE_5__["Player"].gainHackingExp(hackingExpGain);
+ _Player_js__WEBPACK_IMPORTED_MODULE_5__["Player"].gainIntelligenceExp(BaseIntGain);
+ _Player_js__WEBPACK_IMPORTED_MODULE_5__["Player"].gainCharismaExp(charismaExpGain);
this.changeRank(0.1);
console.log("DEBUG: Field Analysis effectiveness is " + (eff * this.skillMultipliers.successChanceEstimate));
this.getCurrentCity().improvePopulationEstimateByPercentage(eff * this.skillMultipliers.successChanceEstimate);
if (this.logging.general) {
- this.log("Field analysis completed. Gained 0.1 rank, " + Object(_utils_StringHelperFunctions_js__WEBPACK_IMPORTED_MODULE_11__["formatNumber"])(hackingExpGain, 1) + " hacking exp, and " + Object(_utils_StringHelperFunctions_js__WEBPACK_IMPORTED_MODULE_11__["formatNumber"])(charismaExpGain, 1) + " charisma exp");
+ this.log("Field analysis completed. Gained 0.1 rank, " + Object(_utils_StringHelperFunctions_js__WEBPACK_IMPORTED_MODULE_12__["formatNumber"])(hackingExpGain, 1) + " hacking exp, and " + Object(_utils_StringHelperFunctions_js__WEBPACK_IMPORTED_MODULE_12__["formatNumber"])(charismaExpGain, 1) + " charisma exp");
}
this.startAction(this.action); //Repeat action
break;
case ActionTypes["Recruitment"]:
- var successChance = Math.pow(_Player_js__WEBPACK_IMPORTED_MODULE_4__["Player"].charisma, 0.45) / (this.teamSize + 1);
+ var successChance = this.getRecruitmentSuccessChance();
console.log("Bladeburner recruitment success chance: " + successChance);
if (Math.random() < successChance) {
var expGain = 2 * BaseStatGain * this.actionTimeToComplete;
- _Player_js__WEBPACK_IMPORTED_MODULE_4__["Player"].gainCharismaExp(expGain);
+ _Player_js__WEBPACK_IMPORTED_MODULE_5__["Player"].gainCharismaExp(expGain);
++this.teamSize;
if (this.logging.general) {
- this.log("Successfully recruited a team member! Gained " + Object(_utils_StringHelperFunctions_js__WEBPACK_IMPORTED_MODULE_11__["formatNumber"])(expGain, 1) + " charisma exp");
+ this.log("Successfully recruited a team member! Gained " + Object(_utils_StringHelperFunctions_js__WEBPACK_IMPORTED_MODULE_12__["formatNumber"])(expGain, 1) + " charisma exp");
}
} else {
var expGain = BaseStatGain * this.actionTimeToComplete;
- _Player_js__WEBPACK_IMPORTED_MODULE_4__["Player"].gainCharismaExp(expGain);
+ _Player_js__WEBPACK_IMPORTED_MODULE_5__["Player"].gainCharismaExp(expGain);
if (this.logging.general) {
- this.log("Failed to recruit a team member. Gained " + Object(_utils_StringHelperFunctions_js__WEBPACK_IMPORTED_MODULE_11__["formatNumber"])(expGain, 1) + " charisma exp");
+ this.log("Failed to recruit a team member. Gained " + Object(_utils_StringHelperFunctions_js__WEBPACK_IMPORTED_MODULE_12__["formatNumber"])(expGain, 1) + " charisma exp");
}
}
this.startAction(this.action); //Repeat action
@@ -27452,7 +27195,7 @@ Bladeburner.prototype.completeContract = function(success) {
switch (this.action.name) {
case "Tracking":
//Increase estimate accuracy by a relatively small amount
- city.improvePopulationEstimateByCount(Object(_utils_HelperFunctions_js__WEBPACK_IMPORTED_MODULE_8__["getRandomInt"])(100, 1e3));
+ city.improvePopulationEstimateByCount(Object(_utils_HelperFunctions_js__WEBPACK_IMPORTED_MODULE_9__["getRandomInt"])(100, 1e3));
break;
case "Bounty Hunter":
city.changePopulationByCount(-1, {estChange:-1});
@@ -27485,11 +27228,11 @@ Bladeburner.prototype.completeOperation = function(success) {
} else {
max = Math.floor(teamCount)
}
- var losses = Object(_utils_HelperFunctions_js__WEBPACK_IMPORTED_MODULE_8__["getRandomInt"])(0, max);
+ var losses = Object(_utils_HelperFunctions_js__WEBPACK_IMPORTED_MODULE_9__["getRandomInt"])(0, max);
this.teamSize -= losses;
this.teamLost += losses;
if (this.logging.ops && losses > 0) {
- this.log("Lost " + Object(_utils_StringHelperFunctions_js__WEBPACK_IMPORTED_MODULE_11__["formatNumber"])(losses, 0) + " team members during this " + action.name);
+ this.log("Lost " + Object(_utils_StringHelperFunctions_js__WEBPACK_IMPORTED_MODULE_12__["formatNumber"])(losses, 0) + " team members during this " + action.name);
}
}
@@ -27534,28 +27277,38 @@ Bladeburner.prototype.completeOperation = function(success) {
--city.comms;
--city.commsEst;
} else {
- var change = Object(_utils_HelperFunctions_js__WEBPACK_IMPORTED_MODULE_8__["getRandomInt"])(-3, -1);
+ var change = Object(_utils_HelperFunctions_js__WEBPACK_IMPORTED_MODULE_9__["getRandomInt"])(-3, -1);
city.changePopulationByPercentage(change, {nonZero:true});
}
- city.changeChaosByPercentage(Object(_utils_HelperFunctions_js__WEBPACK_IMPORTED_MODULE_8__["getRandomInt"])(1, 5));
+ city.changeChaosByPercentage(Object(_utils_HelperFunctions_js__WEBPACK_IMPORTED_MODULE_9__["getRandomInt"])(1, 5));
break;
case "Stealth Retirement Operation":
if (success) {
city.changePopulationByPercentage(-0.5, {changeEstEqually:true,nonZero:true});
}
- city.changeChaosByPercentage(Object(_utils_HelperFunctions_js__WEBPACK_IMPORTED_MODULE_8__["getRandomInt"])(-3, -1));
+ city.changeChaosByPercentage(Object(_utils_HelperFunctions_js__WEBPACK_IMPORTED_MODULE_9__["getRandomInt"])(-3, -1));
break;
case "Assassination":
if (success) {
city.changePopulationByCount(-1, {estChange:-1});
}
- city.changeChaosByPercentage(Object(_utils_HelperFunctions_js__WEBPACK_IMPORTED_MODULE_8__["getRandomInt"])(-5, 5));
+ city.changeChaosByPercentage(Object(_utils_HelperFunctions_js__WEBPACK_IMPORTED_MODULE_9__["getRandomInt"])(-5, 5));
break;
default:
throw new Error("Invalid Action name in completeOperation: " + this.action.name);
}
}
+Bladeburner.prototype.getRecruitmentTime = function() {
+ var effCharisma = _Player_js__WEBPACK_IMPORTED_MODULE_5__["Player"].charisma * this.skillMultipliers.effCha;
+ var charismaFactor = Math.pow(effCharisma, 0.81) + effCharisma / 90;
+ return Math.max(10, Math.round(BaseRecruitmentTimeNeeded - charismaFactor));
+}
+
+Bladeburner.prototype.getRecruitmentSuccessChance = function() {
+ return Math.pow(_Player_js__WEBPACK_IMPORTED_MODULE_5__["Player"].charisma, 0.45) / (this.teamSize + 1);
+}
+
//Process stat gains from Contracts, Operations, and Black Operations
//@action(Action obj) - Derived action class
//@success(bool) - Whether action was successful
@@ -27564,35 +27317,35 @@ Bladeburner.prototype.gainActionStats = function(action, success) {
//Gain multiplier based on difficulty. If this changes then the
//same variable calculated in completeAction() needs to change too
- var difficultyMult = Math.pow(difficulty, 0.21);
+ var difficultyMult = Math.pow(difficulty, DiffMultExponentialFactor) + difficulty / DiffMultLinearFactor;
var time = this.actionTimeToComplete;
var successMult = success ? 1 : 0.5;
var unweightedGain = time * BaseStatGain * successMult * difficultyMult;
var unweightedIntGain = time * BaseIntGain * successMult * difficultyMult;
- _Player_js__WEBPACK_IMPORTED_MODULE_4__["Player"].gainHackingExp(unweightedGain * action.weights.hack * _Player_js__WEBPACK_IMPORTED_MODULE_4__["Player"].hacking_exp_mult);
- _Player_js__WEBPACK_IMPORTED_MODULE_4__["Player"].gainStrengthExp(unweightedGain * action.weights.str * _Player_js__WEBPACK_IMPORTED_MODULE_4__["Player"].strength_exp_mult);
- _Player_js__WEBPACK_IMPORTED_MODULE_4__["Player"].gainDefenseExp(unweightedGain * action.weights.def * _Player_js__WEBPACK_IMPORTED_MODULE_4__["Player"].defense_exp_mult);
- _Player_js__WEBPACK_IMPORTED_MODULE_4__["Player"].gainDexterityExp(unweightedGain * action.weights.dex * _Player_js__WEBPACK_IMPORTED_MODULE_4__["Player"].dexterity_exp_mult);
- _Player_js__WEBPACK_IMPORTED_MODULE_4__["Player"].gainAgilityExp(unweightedGain * action.weights.agi * _Player_js__WEBPACK_IMPORTED_MODULE_4__["Player"].agility_exp_mult);
- _Player_js__WEBPACK_IMPORTED_MODULE_4__["Player"].gainCharismaExp(unweightedGain * action.weights.cha * _Player_js__WEBPACK_IMPORTED_MODULE_4__["Player"].charisma_exp_mult);
- _Player_js__WEBPACK_IMPORTED_MODULE_4__["Player"].gainIntelligenceExp(unweightedIntGain * action.weights.int);
+ _Player_js__WEBPACK_IMPORTED_MODULE_5__["Player"].gainHackingExp(unweightedGain * action.weights.hack * _Player_js__WEBPACK_IMPORTED_MODULE_5__["Player"].hacking_exp_mult);
+ _Player_js__WEBPACK_IMPORTED_MODULE_5__["Player"].gainStrengthExp(unweightedGain * action.weights.str * _Player_js__WEBPACK_IMPORTED_MODULE_5__["Player"].strength_exp_mult);
+ _Player_js__WEBPACK_IMPORTED_MODULE_5__["Player"].gainDefenseExp(unweightedGain * action.weights.def * _Player_js__WEBPACK_IMPORTED_MODULE_5__["Player"].defense_exp_mult);
+ _Player_js__WEBPACK_IMPORTED_MODULE_5__["Player"].gainDexterityExp(unweightedGain * action.weights.dex * _Player_js__WEBPACK_IMPORTED_MODULE_5__["Player"].dexterity_exp_mult);
+ _Player_js__WEBPACK_IMPORTED_MODULE_5__["Player"].gainAgilityExp(unweightedGain * action.weights.agi * _Player_js__WEBPACK_IMPORTED_MODULE_5__["Player"].agility_exp_mult);
+ _Player_js__WEBPACK_IMPORTED_MODULE_5__["Player"].gainCharismaExp(unweightedGain * action.weights.cha * _Player_js__WEBPACK_IMPORTED_MODULE_5__["Player"].charisma_exp_mult);
+ _Player_js__WEBPACK_IMPORTED_MODULE_5__["Player"].gainIntelligenceExp(unweightedIntGain * action.weights.int);
}
Bladeburner.prototype.randomEvent = function() {
var chance = Math.random();
//Choose random source/destination city for events
- var sourceCityName = CityNames[Object(_utils_HelperFunctions_js__WEBPACK_IMPORTED_MODULE_8__["getRandomInt"])(0, 5)];
+ var sourceCityName = CityNames[Object(_utils_HelperFunctions_js__WEBPACK_IMPORTED_MODULE_9__["getRandomInt"])(0, 5)];
var sourceCity = this.cities[sourceCityName];
if (!(sourceCity instanceof City)) {
throw new Error("sourceCity was not a City object in Bladeburner.randomEvent()");
}
- var destCityName = CityNames[Object(_utils_HelperFunctions_js__WEBPACK_IMPORTED_MODULE_8__["getRandomInt"])(0, 5)];
+ var destCityName = CityNames[Object(_utils_HelperFunctions_js__WEBPACK_IMPORTED_MODULE_9__["getRandomInt"])(0, 5)];
while (destCityName === sourceCityName) {
- destCityName = CityNames[Object(_utils_HelperFunctions_js__WEBPACK_IMPORTED_MODULE_8__["getRandomInt"])(0, 5)];
+ destCityName = CityNames[Object(_utils_HelperFunctions_js__WEBPACK_IMPORTED_MODULE_9__["getRandomInt"])(0, 5)];
}
var destCity = this.cities[destCityName];
@@ -27603,7 +27356,7 @@ Bladeburner.prototype.randomEvent = function() {
if (chance <= 0.05) {
//New Synthoid Community, 5%
++sourceCity.comms;
- var percentage = Object(_utils_HelperFunctions_js__WEBPACK_IMPORTED_MODULE_8__["getRandomInt"])(10, 20) / 100;
+ var percentage = Object(_utils_HelperFunctions_js__WEBPACK_IMPORTED_MODULE_9__["getRandomInt"])(10, 20) / 100;
var count = Math.round(sourceCity.pop * percentage);
sourceCity.pop += count;
if (this.logging.events) {
@@ -27614,7 +27367,7 @@ Bladeburner.prototype.randomEvent = function() {
if (sourceCity.comms <= 0) {
//If no comms in source city, then instead trigger a new Synthoid community event
++sourceCity.comms;
- var percentage = Object(_utils_HelperFunctions_js__WEBPACK_IMPORTED_MODULE_8__["getRandomInt"])(10, 20) / 100;
+ var percentage = Object(_utils_HelperFunctions_js__WEBPACK_IMPORTED_MODULE_9__["getRandomInt"])(10, 20) / 100;
var count = Math.round(sourceCity.pop * percentage);
sourceCity.pop += count;
if (this.logging.events) {
@@ -27625,7 +27378,7 @@ Bladeburner.prototype.randomEvent = function() {
++destCity.comms;
//Change pop
- var percentage = Object(_utils_HelperFunctions_js__WEBPACK_IMPORTED_MODULE_8__["getRandomInt"])(10, 20) / 100;
+ var percentage = Object(_utils_HelperFunctions_js__WEBPACK_IMPORTED_MODULE_9__["getRandomInt"])(10, 20) / 100;
var count = Math.round(sourceCity.pop * percentage);
sourceCity.pop -= count;
destCity.pop += count;
@@ -27636,7 +27389,7 @@ Bladeburner.prototype.randomEvent = function() {
}
} else if (chance <= 0.3) {
//New Synthoids (non community), 20%
- var percentage = Object(_utils_HelperFunctions_js__WEBPACK_IMPORTED_MODULE_8__["getRandomInt"])(8, 24) / 100;
+ var percentage = Object(_utils_HelperFunctions_js__WEBPACK_IMPORTED_MODULE_9__["getRandomInt"])(8, 24) / 100;
var count = Math.round(sourceCity.pop * percentage);
sourceCity.pop += count;
if (this.logging.events) {
@@ -27651,13 +27404,13 @@ Bladeburner.prototype.randomEvent = function() {
} else if (chance <= 0.7) {
//Synthoid Riots (+chaos), 20%
sourceCity.chaos += 1;
- sourceCity.chaos *= (1 + Object(_utils_HelperFunctions_js__WEBPACK_IMPORTED_MODULE_8__["getRandomInt"])(5, 10) / 100);
+ sourceCity.chaos *= (1 + Object(_utils_HelperFunctions_js__WEBPACK_IMPORTED_MODULE_9__["getRandomInt"])(5, 10) / 100);
if (this.logging.events) {
this.log("Tensions between Synthoids and humans lead to riots in " + sourceCityName + "! Chaos increased");
}
} else if (chance <= 0.9) {
//Less Synthoids, 20%
- var percentage = Object(_utils_HelperFunctions_js__WEBPACK_IMPORTED_MODULE_8__["getRandomInt"])(5, 20) / 100;
+ var percentage = Object(_utils_HelperFunctions_js__WEBPACK_IMPORTED_MODULE_9__["getRandomInt"])(5, 20) / 100;
var count = Math.round(sourceCity.pop * percentage);
sourceCity.pop -= count;
if (this.logging.events) {
@@ -27676,19 +27429,19 @@ Bladeburner.prototype.triggerPotentialMigration = function(sourceCityName, chanc
}
Bladeburner.prototype.triggerMigration = function(sourceCityName) {
- var destCityName = CityNames[Object(_utils_HelperFunctions_js__WEBPACK_IMPORTED_MODULE_8__["getRandomInt"])(0, 5)];
+ var destCityName = CityNames[Object(_utils_HelperFunctions_js__WEBPACK_IMPORTED_MODULE_9__["getRandomInt"])(0, 5)];
while (destCityName === sourceCityName) {
- destCityName = CityNames[Object(_utils_HelperFunctions_js__WEBPACK_IMPORTED_MODULE_8__["getRandomInt"])(0, 5)];
+ destCityName = CityNames[Object(_utils_HelperFunctions_js__WEBPACK_IMPORTED_MODULE_9__["getRandomInt"])(0, 5)];
}
var destCity = this.cities[destCityName];
var sourceCity = this.cities[sourceCityName];
if (destCity == null || sourceCity == null) {
throw new Error("Failed to find City with name: " + destCityName);
}
- var rand = Math.random(), percentage = Object(_utils_HelperFunctions_js__WEBPACK_IMPORTED_MODULE_8__["getRandomInt"])(3, 15) / 100;
+ var rand = Math.random(), percentage = Object(_utils_HelperFunctions_js__WEBPACK_IMPORTED_MODULE_9__["getRandomInt"])(3, 15) / 100;
if (rand < 0.05 && sourceCity.comms > 0) { //5% chance for community migration
- percentage *= Object(_utils_HelperFunctions_js__WEBPACK_IMPORTED_MODULE_8__["getRandomInt"])(2, 4); //Migration increases population change
+ percentage *= Object(_utils_HelperFunctions_js__WEBPACK_IMPORTED_MODULE_9__["getRandomInt"])(2, 4); //Migration increases population change
--sourceCity.comms;
++destCity.comms;
}
@@ -27740,25 +27493,26 @@ Bladeburner.prototype.initializeDomElementRefs = function() {
operations: {},
blackops: {},
skills: {},
+ skillPointsDisplay: null,
};
}
Bladeburner.prototype.createContent = function() {
- DomElems.bladeburnerDiv = Object(_utils_HelperFunctions_js__WEBPACK_IMPORTED_MODULE_8__["createElement"])("div", {
+ DomElems.bladeburnerDiv = Object(_utils_HelperFunctions_js__WEBPACK_IMPORTED_MODULE_9__["createElement"])("div", {
id:"bladeburner-container", position:"fixed", class:"generic-menupage-container",
});
//Parent Div for Overview and Console
- DomElems.overviewConsoleParentDiv = Object(_utils_HelperFunctions_js__WEBPACK_IMPORTED_MODULE_8__["createElement"])("div", {
+ DomElems.overviewConsoleParentDiv = Object(_utils_HelperFunctions_js__WEBPACK_IMPORTED_MODULE_9__["createElement"])("div", {
height:"60%", display:"block", position:"relative",
});
//Overview and Action/Skill pane
- DomElems.overviewDiv = Object(_utils_HelperFunctions_js__WEBPACK_IMPORTED_MODULE_8__["createElement"])("div", {
+ DomElems.overviewDiv = Object(_utils_HelperFunctions_js__WEBPACK_IMPORTED_MODULE_9__["createElement"])("div", {
width:"30%", display:"inline-block", border:"1px solid white",
});
- DomElems.actionAndSkillsDiv = Object(_utils_HelperFunctions_js__WEBPACK_IMPORTED_MODULE_8__["createElement"])("div", {
+ DomElems.actionAndSkillsDiv = Object(_utils_HelperFunctions_js__WEBPACK_IMPORTED_MODULE_9__["createElement"])("div", {
height:"60%", width:"70%", display:"block",
border:"1px solid white", margin:"6px", padding:"6px",
});
@@ -27769,7 +27523,7 @@ Bladeburner.prototype.createContent = function() {
this.createActionAndSkillsContent();
//Console
- DomElems.consoleDiv = Object(_utils_HelperFunctions_js__WEBPACK_IMPORTED_MODULE_8__["createElement"])("div", {
+ DomElems.consoleDiv = Object(_utils_HelperFunctions_js__WEBPACK_IMPORTED_MODULE_9__["createElement"])("div", {
class:"bladeburner-console-div",
clickListener:()=>{
if (DomElems.consoleInput instanceof Element) {
@@ -27778,11 +27532,11 @@ Bladeburner.prototype.createContent = function() {
return false;
}
});
- DomElems.consoleTable = Object(_utils_HelperFunctions_js__WEBPACK_IMPORTED_MODULE_8__["createElement"])("table", {class:"bladeburner-console-table"});
- DomElems.consoleInputRow = Object(_utils_HelperFunctions_js__WEBPACK_IMPORTED_MODULE_8__["createElement"])("tr", {class:"bladeburner-console-input-row", id:"bladeubrner-console-input-row"});
- DomElems.consoleInputCell = Object(_utils_HelperFunctions_js__WEBPACK_IMPORTED_MODULE_8__["createElement"])("td", {class:"bladeburner-console-input-cell"});
- DomElems.consoleInputHeader = Object(_utils_HelperFunctions_js__WEBPACK_IMPORTED_MODULE_8__["createElement"])("pre", {innerText:"> "});
- DomElems.consoleInput = Object(_utils_HelperFunctions_js__WEBPACK_IMPORTED_MODULE_8__["createElement"])("input", {
+ DomElems.consoleTable = Object(_utils_HelperFunctions_js__WEBPACK_IMPORTED_MODULE_9__["createElement"])("table", {class:"bladeburner-console-table"});
+ DomElems.consoleInputRow = Object(_utils_HelperFunctions_js__WEBPACK_IMPORTED_MODULE_9__["createElement"])("tr", {class:"bladeburner-console-input-row", id:"bladeubrner-console-input-row"});
+ DomElems.consoleInputCell = Object(_utils_HelperFunctions_js__WEBPACK_IMPORTED_MODULE_9__["createElement"])("td", {class:"bladeburner-console-input-cell"});
+ DomElems.consoleInputHeader = Object(_utils_HelperFunctions_js__WEBPACK_IMPORTED_MODULE_9__["createElement"])("pre", {innerText:"> "});
+ DomElems.consoleInput = Object(_utils_HelperFunctions_js__WEBPACK_IMPORTED_MODULE_9__["createElement"])("input", {
type:"text", class:"bladeburner-console-input", tabIndex:1,
onfocus:()=>{DomElems.consoleInput.value = DomElems.consoleInput.value}
});
@@ -27801,15 +27555,16 @@ Bladeburner.prototype.createContent = function() {
document.getElementById("entire-game-container").appendChild(DomElems.bladeburnerDiv);
this.postToConsole("Bladeburner Console BETA");
+ this.postToConsole("Type 'help' to see console commands");
DomElems.consoleInput.focus();
}
Bladeburner.prototype.clearContent = function() {
if (DomElems.bladeburnerDiv instanceof Element) {
- Object(_utils_HelperFunctions_js__WEBPACK_IMPORTED_MODULE_8__["removeChildrenFromElement"])(DomElems.bladeburnerDiv);
- Object(_utils_HelperFunctions_js__WEBPACK_IMPORTED_MODULE_8__["removeElement"])(DomElems.bladeburnerDiv);
+ Object(_utils_HelperFunctions_js__WEBPACK_IMPORTED_MODULE_9__["removeChildrenFromElement"])(DomElems.bladeburnerDiv);
+ Object(_utils_HelperFunctions_js__WEBPACK_IMPORTED_MODULE_9__["removeElement"])(DomElems.bladeburnerDiv);
}
- Object(_utils_HelperFunctions_js__WEBPACK_IMPORTED_MODULE_8__["clearObject"])(DomElems);
+ Object(_utils_HelperFunctions_js__WEBPACK_IMPORTED_MODULE_9__["clearObject"])(DomElems);
this.initializeDomElementRefs();
}
@@ -27818,20 +27573,20 @@ Bladeburner.prototype.createOverviewContent = function() {
throw new Error("Bladeburner.createOverviewContent() called with DomElems.overviewDiv = null");
}
- DomElems.overviewRank = Object(_utils_HelperFunctions_js__WEBPACK_IMPORTED_MODULE_8__["createElement"])("p", {
+ DomElems.overviewRank = Object(_utils_HelperFunctions_js__WEBPACK_IMPORTED_MODULE_9__["createElement"])("p", {
innerText:"Rank: ",
display:"inline-block",
tooltip:"Your rank within the Bladeburner division",
});
- DomElems.overviewStamina = Object(_utils_HelperFunctions_js__WEBPACK_IMPORTED_MODULE_8__["createElement"])("p", {
+ DomElems.overviewStamina = Object(_utils_HelperFunctions_js__WEBPACK_IMPORTED_MODULE_9__["createElement"])("p", {
display:"inline-block",
});
- DomElems.overviewStaminaHelpTip = Object(_utils_HelperFunctions_js__WEBPACK_IMPORTED_MODULE_8__["createElement"])("div", {
+ DomElems.overviewStaminaHelpTip = Object(_utils_HelperFunctions_js__WEBPACK_IMPORTED_MODULE_9__["createElement"])("div", {
innerText:"?", class:"help-tip",
clickListener:()=>{
- Object(_utils_DialogBox_js__WEBPACK_IMPORTED_MODULE_7__["dialogBoxCreate"])("Performing actions will use up your stamina.
" +
+ Object(_utils_DialogBox_js__WEBPACK_IMPORTED_MODULE_8__["dialogBoxCreate"])("Performing actions will use up your stamina.
" +
"Your max stamina is determined primarily by your agility stat.
" +
"Your stamina gain rate is determined by both your agility and your " +
"max stamina. Higher max stamina leads to a higher gain rate.
" +
@@ -27845,21 +27600,21 @@ Bladeburner.prototype.createOverviewContent = function() {
}
});
- DomElems.overviewGen1 = Object(_utils_HelperFunctions_js__WEBPACK_IMPORTED_MODULE_8__["createElement"])("p", {
+ DomElems.overviewGen1 = Object(_utils_HelperFunctions_js__WEBPACK_IMPORTED_MODULE_9__["createElement"])("p", {
display:"block",
});
- DomElems.overviewEstPop = Object(_utils_HelperFunctions_js__WEBPACK_IMPORTED_MODULE_8__["createElement"])("p", {
+ DomElems.overviewEstPop = Object(_utils_HelperFunctions_js__WEBPACK_IMPORTED_MODULE_9__["createElement"])("p", {
innerText:"Est. Synthoid Population: ",
display:"inline-block",
tooltip:"This is your Bladeburner division's estimate of how many Synthoids exist " +
"in your current city."
});
- DomElems.overviewEstPopHelpTip = Object(_utils_HelperFunctions_js__WEBPACK_IMPORTED_MODULE_8__["createElement"])("div", {
+ DomElems.overviewEstPopHelpTip = Object(_utils_HelperFunctions_js__WEBPACK_IMPORTED_MODULE_9__["createElement"])("div", {
innerText:"?", class:"help-tip",
clickListener:()=>{
- Object(_utils_DialogBox_js__WEBPACK_IMPORTED_MODULE_7__["dialogBoxCreate"])("The success rate of your contracts/operations depends on " +
+ Object(_utils_DialogBox_js__WEBPACK_IMPORTED_MODULE_8__["dialogBoxCreate"])("The success rate of your contracts/operations depends on " +
"the population of Synthoids in your current city. " +
"The success rate that is shown to you is only an estimate, " +
"and it is based on your Synthoid population estimate.
" +
@@ -27874,61 +27629,61 @@ Bladeburner.prototype.createOverviewContent = function() {
}
});
- DomElems.overviewEstComms = Object(_utils_HelperFunctions_js__WEBPACK_IMPORTED_MODULE_8__["createElement"])("p", {
+ DomElems.overviewEstComms = Object(_utils_HelperFunctions_js__WEBPACK_IMPORTED_MODULE_9__["createElement"])("p", {
innerText:"Est. Synthoid Communities: ",
display:"inline-block",
tooltip:"This is your Bladeburner divison's estimate of how many Synthoid " +
"communities exist in your current city.",
});
- DomElems.overviewChaos = Object(_utils_HelperFunctions_js__WEBPACK_IMPORTED_MODULE_8__["createElement"])("p", {
+ DomElems.overviewChaos = Object(_utils_HelperFunctions_js__WEBPACK_IMPORTED_MODULE_9__["createElement"])("p", {
innerText:"City Chaos: ",
display:"inline-block",
tooltip:"The city's chaos level due to tensions and conflicts between humans and Synthoids. " +
"Having too high of a chaos level can make contracts and operations harder."
});
- DomElems.overviewSkillPoints = Object(_utils_HelperFunctions_js__WEBPACK_IMPORTED_MODULE_8__["createElement"])("p", {display:"block"});
+ DomElems.overviewSkillPoints = Object(_utils_HelperFunctions_js__WEBPACK_IMPORTED_MODULE_9__["createElement"])("p", {display:"block"});
- DomElems.overviewAugSuccessMult = Object(_utils_HelperFunctions_js__WEBPACK_IMPORTED_MODULE_8__["createElement"])("p", {display:"block"});
- DomElems.overviewAugMaxStaminaMult = Object(_utils_HelperFunctions_js__WEBPACK_IMPORTED_MODULE_8__["createElement"])("p", {display:"block"});
- DomElems.overviewAugStaminaGainMult = Object(_utils_HelperFunctions_js__WEBPACK_IMPORTED_MODULE_8__["createElement"])("p", {display:"block"});
- DomElems.overviewAugAnalysisMult = Object(_utils_HelperFunctions_js__WEBPACK_IMPORTED_MODULE_8__["createElement"])("p", {display:"block"});
+ DomElems.overviewAugSuccessMult = Object(_utils_HelperFunctions_js__WEBPACK_IMPORTED_MODULE_9__["createElement"])("p", {display:"block"});
+ DomElems.overviewAugMaxStaminaMult = Object(_utils_HelperFunctions_js__WEBPACK_IMPORTED_MODULE_9__["createElement"])("p", {display:"block"});
+ DomElems.overviewAugStaminaGainMult = Object(_utils_HelperFunctions_js__WEBPACK_IMPORTED_MODULE_9__["createElement"])("p", {display:"block"});
+ DomElems.overviewAugAnalysisMult = Object(_utils_HelperFunctions_js__WEBPACK_IMPORTED_MODULE_9__["createElement"])("p", {display:"block"});
DomElems.overviewDiv.appendChild(DomElems.overviewRank);
- Object(_utils_HelperFunctions_js__WEBPACK_IMPORTED_MODULE_8__["appendLineBreaks"])(DomElems.overviewDiv, 1);
+ Object(_utils_HelperFunctions_js__WEBPACK_IMPORTED_MODULE_9__["appendLineBreaks"])(DomElems.overviewDiv, 1);
DomElems.overviewDiv.appendChild(DomElems.overviewStamina);
DomElems.overviewDiv.appendChild(DomElems.overviewStaminaHelpTip);
DomElems.overviewDiv.appendChild(DomElems.overviewGen1);
DomElems.overviewDiv.appendChild(DomElems.overviewEstPop);
DomElems.overviewDiv.appendChild(DomElems.overviewEstPopHelpTip);
- Object(_utils_HelperFunctions_js__WEBPACK_IMPORTED_MODULE_8__["appendLineBreaks"])(DomElems.overviewDiv, 1);
+ Object(_utils_HelperFunctions_js__WEBPACK_IMPORTED_MODULE_9__["appendLineBreaks"])(DomElems.overviewDiv, 1);
DomElems.overviewDiv.appendChild(DomElems.overviewEstComms);
- Object(_utils_HelperFunctions_js__WEBPACK_IMPORTED_MODULE_8__["appendLineBreaks"])(DomElems.overviewDiv, 1);
+ Object(_utils_HelperFunctions_js__WEBPACK_IMPORTED_MODULE_9__["appendLineBreaks"])(DomElems.overviewDiv, 1);
DomElems.overviewDiv.appendChild(DomElems.overviewChaos);
- Object(_utils_HelperFunctions_js__WEBPACK_IMPORTED_MODULE_8__["appendLineBreaks"])(DomElems.overviewDiv, 2);
+ Object(_utils_HelperFunctions_js__WEBPACK_IMPORTED_MODULE_9__["appendLineBreaks"])(DomElems.overviewDiv, 2);
DomElems.overviewDiv.appendChild(DomElems.overviewSkillPoints);
- Object(_utils_HelperFunctions_js__WEBPACK_IMPORTED_MODULE_8__["appendLineBreaks"])(DomElems.overviewDiv, 1);
+ Object(_utils_HelperFunctions_js__WEBPACK_IMPORTED_MODULE_9__["appendLineBreaks"])(DomElems.overviewDiv, 1);
DomElems.overviewDiv.appendChild(DomElems.overviewAugSuccessMult);
DomElems.overviewDiv.appendChild(DomElems.overviewAugMaxStaminaMult);
DomElems.overviewDiv.appendChild(DomElems.overviewAugStaminaGainMult);
DomElems.overviewDiv.appendChild(DomElems.overviewAugAnalysisMult);
//Travel to new city button
- Object(_utils_HelperFunctions_js__WEBPACK_IMPORTED_MODULE_8__["appendLineBreaks"])(DomElems.overviewDiv, 1);
- DomElems.overviewDiv.appendChild(Object(_utils_HelperFunctions_js__WEBPACK_IMPORTED_MODULE_8__["createElement"])("a", {
+ Object(_utils_HelperFunctions_js__WEBPACK_IMPORTED_MODULE_9__["appendLineBreaks"])(DomElems.overviewDiv, 1);
+ DomElems.overviewDiv.appendChild(Object(_utils_HelperFunctions_js__WEBPACK_IMPORTED_MODULE_9__["createElement"])("a", {
innerHTML:"Travel", class:"a-link-button", display:"inline-block",
clickListener:()=>{
var popupId = "bladeburner-travel-popup-cancel-btn";
var popupArguments = [];
- popupArguments.push(Object(_utils_HelperFunctions_js__WEBPACK_IMPORTED_MODULE_8__["createElement"])("a", { //Cancel Button
+ popupArguments.push(Object(_utils_HelperFunctions_js__WEBPACK_IMPORTED_MODULE_9__["createElement"])("a", { //Cancel Button
innerText:"Cancel", class:"a-link-button",
clickListener:()=>{
- Object(_utils_HelperFunctions_js__WEBPACK_IMPORTED_MODULE_8__["removeElementById"])(popupId); return false;
+ Object(_utils_HelperFunctions_js__WEBPACK_IMPORTED_MODULE_9__["removeElementById"])(popupId); return false;
}
}))
- popupArguments.push(Object(_utils_HelperFunctions_js__WEBPACK_IMPORTED_MODULE_8__["createElement"])("p", { //Info Text
+ popupArguments.push(Object(_utils_HelperFunctions_js__WEBPACK_IMPORTED_MODULE_9__["createElement"])("p", { //Info Text
innerText:"Travel to a different city for your Bladeburner " +
"activities. This does not cost any money. The city you are " +
"in for your Bladeburner duties does not affect " +
@@ -27936,46 +27691,46 @@ Bladeburner.prototype.createOverviewContent = function() {
}));
for (var i = 0; i < CityNames.length; ++i) {
(function(inst, i) {
- popupArguments.push(Object(_utils_HelperFunctions_js__WEBPACK_IMPORTED_MODULE_8__["createElement"])("div", {
+ popupArguments.push(Object(_utils_HelperFunctions_js__WEBPACK_IMPORTED_MODULE_9__["createElement"])("div", {
//Reusing this css class...it adds a border and makes it
//so that background color changes when you hover
class:"cmpy-mgmt-find-employee-option",
innerText:CityNames[i],
clickListener:()=>{
inst.city = CityNames[i];
- Object(_utils_HelperFunctions_js__WEBPACK_IMPORTED_MODULE_8__["removeElementById"])(popupId);
+ Object(_utils_HelperFunctions_js__WEBPACK_IMPORTED_MODULE_9__["removeElementById"])(popupId);
inst.updateOverviewContent();
return false;
}
}));
})(this, i);
}
- Object(_utils_HelperFunctions_js__WEBPACK_IMPORTED_MODULE_8__["createPopup"])(popupId, popupArguments);
+ Object(_utils_HelperFunctions_js__WEBPACK_IMPORTED_MODULE_9__["createPopup"])(popupId, popupArguments);
}
}));
//Faction button
- var bladeburnersFactionName = "Bladeburners";
- if (Object(_Faction_js__WEBPACK_IMPORTED_MODULE_2__["factionExists"])(bladeburnersFactionName)) {
- var bladeburnerFac = _Faction_js__WEBPACK_IMPORTED_MODULE_2__["Factions"][bladeburnersFactionName];
- if (!(bladeburnerFac instanceof _Faction_js__WEBPACK_IMPORTED_MODULE_2__["Faction"])) {
+ const bladeburnersFactionName = "Bladeburners";
+ if (Object(_Faction_js__WEBPACK_IMPORTED_MODULE_3__["factionExists"])(bladeburnersFactionName)) {
+ var bladeburnerFac = _Faction_js__WEBPACK_IMPORTED_MODULE_3__["Factions"][bladeburnersFactionName];
+ if (!(bladeburnerFac instanceof _Faction_js__WEBPACK_IMPORTED_MODULE_3__["Faction"])) {
throw new Error("Could not properly get Bladeburner Faction object in Bladeburner UI Overview Faction button");
}
- DomElems.overviewDiv.appendChild(Object(_utils_HelperFunctions_js__WEBPACK_IMPORTED_MODULE_8__["createElement"])("a", {
+ DomElems.overviewDiv.appendChild(Object(_utils_HelperFunctions_js__WEBPACK_IMPORTED_MODULE_9__["createElement"])("a", {
innerText:"Faction", class:"a-link-button", display:"inline-block",
tooltip:"Apply to the Bladeburner Faction, or go to the faction page if you are already a member",
clickListener:()=>{
if (bladeburnerFac.isMember) {
- _engine_js__WEBPACK_IMPORTED_MODULE_1__["Engine"].loadFactionContent();
- Object(_Faction_js__WEBPACK_IMPORTED_MODULE_2__["displayFactionContent"])(bladeburnersFactionName);
+ _engine_js__WEBPACK_IMPORTED_MODULE_2__["Engine"].loadFactionContent();
+ Object(_Faction_js__WEBPACK_IMPORTED_MODULE_3__["displayFactionContent"])(bladeburnersFactionName);
} else {
- if (this.rank >= 25) {
- Object(_Faction_js__WEBPACK_IMPORTED_MODULE_2__["joinFaction"])(bladeburnerFac);
- Object(_utils_DialogBox_js__WEBPACK_IMPORTED_MODULE_7__["dialogBoxCreate"])("Congratulations! You were accepted into the Bladeburners faction");
- Object(_utils_HelperFunctions_js__WEBPACK_IMPORTED_MODULE_8__["removeChildrenFromElement"])(DomElems.overviewDiv);
+ if (this.rank >= RankNeededForFaction) {
+ Object(_Faction_js__WEBPACK_IMPORTED_MODULE_3__["joinFaction"])(bladeburnerFac);
+ Object(_utils_DialogBox_js__WEBPACK_IMPORTED_MODULE_8__["dialogBoxCreate"])("Congratulations! You were accepted into the Bladeburners faction");
+ Object(_utils_HelperFunctions_js__WEBPACK_IMPORTED_MODULE_9__["removeChildrenFromElement"])(DomElems.overviewDiv);
this.createOverviewContent();
} else {
- Object(_utils_DialogBox_js__WEBPACK_IMPORTED_MODULE_7__["dialogBoxCreate"])("You need a rank of 25 to join the Bladeburners Faction!")
+ Object(_utils_DialogBox_js__WEBPACK_IMPORTED_MODULE_8__["dialogBoxCreate"])("You need a rank of 25 to join the Bladeburners Faction!")
}
}
return false;
@@ -27983,8 +27738,8 @@ Bladeburner.prototype.createOverviewContent = function() {
}));
}
- DomElems.overviewDiv.appendChild(Object(_utils_HelperFunctions_js__WEBPACK_IMPORTED_MODULE_8__["createElement"])("br"));
- DomElems.overviewDiv.appendChild(Object(_utils_HelperFunctions_js__WEBPACK_IMPORTED_MODULE_8__["createElement"])("br"));
+ DomElems.overviewDiv.appendChild(Object(_utils_HelperFunctions_js__WEBPACK_IMPORTED_MODULE_9__["createElement"])("br"));
+ DomElems.overviewDiv.appendChild(Object(_utils_HelperFunctions_js__WEBPACK_IMPORTED_MODULE_9__["createElement"])("br"));
this.updateOverviewContent();
}
@@ -27992,12 +27747,12 @@ Bladeburner.prototype.createOverviewContent = function() {
Bladeburner.prototype.createActionAndSkillsContent = function() {
if (DomElems.currentTab == null) {DomElems.currentTab = "general";}
- Object(_utils_HelperFunctions_js__WEBPACK_IMPORTED_MODULE_8__["removeChildrenFromElement"])(DomElems.actionAndSkillsDiv);
- Object(_utils_HelperFunctions_js__WEBPACK_IMPORTED_MODULE_8__["clearObject"])(DomElems.generalActions);
- Object(_utils_HelperFunctions_js__WEBPACK_IMPORTED_MODULE_8__["clearObject"])(DomElems.contracts);
- Object(_utils_HelperFunctions_js__WEBPACK_IMPORTED_MODULE_8__["clearObject"])(DomElems.operations);
- Object(_utils_HelperFunctions_js__WEBPACK_IMPORTED_MODULE_8__["clearObject"])(DomElems.blackops);
- Object(_utils_HelperFunctions_js__WEBPACK_IMPORTED_MODULE_8__["clearObject"])(DomElems.skills);
+ Object(_utils_HelperFunctions_js__WEBPACK_IMPORTED_MODULE_9__["removeChildrenFromElement"])(DomElems.actionAndSkillsDiv);
+ Object(_utils_HelperFunctions_js__WEBPACK_IMPORTED_MODULE_9__["clearObject"])(DomElems.generalActions);
+ Object(_utils_HelperFunctions_js__WEBPACK_IMPORTED_MODULE_9__["clearObject"])(DomElems.contracts);
+ Object(_utils_HelperFunctions_js__WEBPACK_IMPORTED_MODULE_9__["clearObject"])(DomElems.operations);
+ Object(_utils_HelperFunctions_js__WEBPACK_IMPORTED_MODULE_9__["clearObject"])(DomElems.blackops);
+ Object(_utils_HelperFunctions_js__WEBPACK_IMPORTED_MODULE_9__["clearObject"])(DomElems.skills);
//Navigation buttons
var currTab = DomElems.currentTab.toLowerCase();
@@ -28005,7 +27760,7 @@ Bladeburner.prototype.createActionAndSkillsContent = function() {
for (var i = 0; i < buttons.length; ++i) {
(function(buttons, i, inst, currTab) {
- DomElems.actionAndSkillsDiv.appendChild(Object(_utils_HelperFunctions_js__WEBPACK_IMPORTED_MODULE_8__["createElement"])("a", {
+ DomElems.actionAndSkillsDiv.appendChild(Object(_utils_HelperFunctions_js__WEBPACK_IMPORTED_MODULE_9__["createElement"])("a", {
innerText:buttons[i],
class:currTab === buttons[i].toLowerCase() ? "bladeburner-nav-button-inactive" : "bladeburner-nav-button",
clickListener:()=>{
@@ -28018,13 +27773,13 @@ Bladeburner.prototype.createActionAndSkillsContent = function() {
}
//General info/description for each action
- DomElems.actionsAndSkillsDesc = Object(_utils_HelperFunctions_js__WEBPACK_IMPORTED_MODULE_8__["createElement"])("p", {
+ DomElems.actionsAndSkillsDesc = Object(_utils_HelperFunctions_js__WEBPACK_IMPORTED_MODULE_9__["createElement"])("p", {
display:"block", margin:"4px", padding:"4px"
});
//List for actions/skills
- Object(_utils_HelperFunctions_js__WEBPACK_IMPORTED_MODULE_8__["removeChildrenFromElement"])(DomElems.actionsAndSkillsList);
- DomElems.actionsAndSkillsList = Object(_utils_HelperFunctions_js__WEBPACK_IMPORTED_MODULE_8__["createElement"])("ul");
+ Object(_utils_HelperFunctions_js__WEBPACK_IMPORTED_MODULE_9__["removeChildrenFromElement"])(DomElems.actionsAndSkillsList);
+ DomElems.actionsAndSkillsList = Object(_utils_HelperFunctions_js__WEBPACK_IMPORTED_MODULE_9__["createElement"])("ul");
switch(currTab) {
case "general":
@@ -28063,7 +27818,7 @@ Bladeburner.prototype.createGeneralActionsContent = function() {
for (var actionName in GeneralActions) {
if (GeneralActions.hasOwnProperty(actionName)) {
- DomElems.generalActions[actionName] = Object(_utils_HelperFunctions_js__WEBPACK_IMPORTED_MODULE_8__["createElement"])("div", {
+ DomElems.generalActions[actionName] = Object(_utils_HelperFunctions_js__WEBPACK_IMPORTED_MODULE_9__["createElement"])("div", {
class:"bladeburner-action", name:actionName
});
DomElems.actionsAndSkillsList.appendChild(DomElems.generalActions[actionName]);
@@ -28085,7 +27840,7 @@ Bladeburner.prototype.createContractsContent = function() {
for (var contractName in this.contracts) {
if (this.contracts.hasOwnProperty(contractName)) {
- DomElems.contracts[contractName] = Object(_utils_HelperFunctions_js__WEBPACK_IMPORTED_MODULE_8__["createElement"])("div", {
+ DomElems.contracts[contractName] = Object(_utils_HelperFunctions_js__WEBPACK_IMPORTED_MODULE_9__["createElement"])("div", {
class:"bladeburner-action", name:contractName
});
DomElems.actionsAndSkillsList.appendChild(DomElems.contracts[contractName]);
@@ -28114,7 +27869,7 @@ Bladeburner.prototype.createOperationsContent = function() {
for (var operationName in this.operations) {
if (this.operations.hasOwnProperty(operationName)) {
- DomElems.operations[operationName] = Object(_utils_HelperFunctions_js__WEBPACK_IMPORTED_MODULE_8__["createElement"])("div", {
+ DomElems.operations[operationName] = Object(_utils_HelperFunctions_js__WEBPACK_IMPORTED_MODULE_9__["createElement"])("div", {
class:"bladeburner-action", name:operationName
});
DomElems.actionsAndSkillsList.appendChild(DomElems.operations[operationName]);
@@ -28147,7 +27902,7 @@ Bladeburner.prototype.createBlackOpsContent = function() {
});
for (var i = 0; i < blackops.length; ++i) {
- DomElems.blackops[blackops[i].name] = Object(_utils_HelperFunctions_js__WEBPACK_IMPORTED_MODULE_8__["createElement"])("div", {
+ DomElems.blackops[blackops[i].name] = Object(_utils_HelperFunctions_js__WEBPACK_IMPORTED_MODULE_9__["createElement"])("div", {
class:"bladeburner-action", name:blackops[i].name
});
DomElems.actionsAndSkillsList.appendChild(DomElems.blackops[blackops[i].name]);
@@ -28170,7 +27925,7 @@ Bladeburner.prototype.createSkillsContent = function() {
for (var i = 0; i < multKeys.length; ++i) {
var mult = this.skillMultipliers[multKeys[i]];
if (mult && mult !== 1) {
- mult = Object(_utils_StringHelperFunctions_js__WEBPACK_IMPORTED_MODULE_11__["formatNumber"])(mult, 3);
+ mult = Object(_utils_StringHelperFunctions_js__WEBPACK_IMPORTED_MODULE_12__["formatNumber"])(mult, 3);
switch(multKeys[i]) {
case "successChanceAll":
DomElems.actionsAndSkillsDesc.innerHTML += "Total Success Chance: x" + mult + "
";
@@ -28231,14 +27986,15 @@ Bladeburner.prototype.createSkillsContent = function() {
}
//Skill Points
- DomElems.actionAndSkillsDiv.appendChild(Object(_utils_HelperFunctions_js__WEBPACK_IMPORTED_MODULE_8__["createElement"])("p", {
- innerHTML:"
Skill Points: " + Object(_utils_StringHelperFunctions_js__WEBPACK_IMPORTED_MODULE_11__["formatNumber"])(this.skillPoints, 0) + ""
- }));
+ DomElems.skillPointsDisplay = Object(_utils_HelperFunctions_js__WEBPACK_IMPORTED_MODULE_9__["createElement"])("p", {
+ innerHTML:"
Skill Points: " + Object(_utils_StringHelperFunctions_js__WEBPACK_IMPORTED_MODULE_12__["formatNumber"])(this.skillPoints, 0) + ""
+ });
+ DomElems.actionAndSkillsDiv.appendChild(DomElems.skillPointsDisplay);
//UI Element for each skill
for (var skillName in Skills) {
if (Skills.hasOwnProperty(skillName)) {
- DomElems.skills[skillName] = Object(_utils_HelperFunctions_js__WEBPACK_IMPORTED_MODULE_8__["createElement"])("div", {
+ DomElems.skills[skillName] = Object(_utils_HelperFunctions_js__WEBPACK_IMPORTED_MODULE_9__["createElement"])("div", {
class:"bladeburner-action", name:skillName
});
DomElems.actionsAndSkillsList.appendChild(DomElems.skills[skillName]);
@@ -28252,25 +28008,25 @@ Bladeburner.prototype.updateContent = function() {
}
Bladeburner.prototype.updateOverviewContent = function() {
- if (_engine_js__WEBPACK_IMPORTED_MODULE_1__["Engine"].currentPage !== _engine_js__WEBPACK_IMPORTED_MODULE_1__["Engine"].Page.Bladeburner) {return;}
- DomElems.overviewRank.childNodes[0].nodeValue = "Rank: " + Object(_utils_StringHelperFunctions_js__WEBPACK_IMPORTED_MODULE_11__["formatNumber"])(this.rank, 2);
- DomElems.overviewStamina.innerText = "Stamina: " + Object(_utils_StringHelperFunctions_js__WEBPACK_IMPORTED_MODULE_11__["formatNumber"])(this.stamina, 3) + " / " + Object(_utils_StringHelperFunctions_js__WEBPACK_IMPORTED_MODULE_11__["formatNumber"])(this.maxStamina, 3);
+ if (_engine_js__WEBPACK_IMPORTED_MODULE_2__["Engine"].currentPage !== _engine_js__WEBPACK_IMPORTED_MODULE_2__["Engine"].Page.Bladeburner) {return;}
+ DomElems.overviewRank.childNodes[0].nodeValue = "Rank: " + Object(_utils_StringHelperFunctions_js__WEBPACK_IMPORTED_MODULE_12__["formatNumber"])(this.rank, 2);
+ DomElems.overviewStamina.innerText = "Stamina: " + Object(_utils_StringHelperFunctions_js__WEBPACK_IMPORTED_MODULE_12__["formatNumber"])(this.stamina, 3) + " / " + Object(_utils_StringHelperFunctions_js__WEBPACK_IMPORTED_MODULE_12__["formatNumber"])(this.maxStamina, 3);
DomElems.overviewGen1.innerHTML =
- "Stamina Penalty: " + Object(_utils_StringHelperFunctions_js__WEBPACK_IMPORTED_MODULE_11__["formatNumber"])((1-this.calculateStaminaPenalty())*100, 1) + "%
" +
- "Team Size: " + Object(_utils_StringHelperFunctions_js__WEBPACK_IMPORTED_MODULE_11__["formatNumber"])(this.teamSize, 0) + "
" +
- "Team Members Lost: " + Object(_utils_StringHelperFunctions_js__WEBPACK_IMPORTED_MODULE_11__["formatNumber"])(this.teamLost, 0) + "
" +
+ "Stamina Penalty: " + Object(_utils_StringHelperFunctions_js__WEBPACK_IMPORTED_MODULE_12__["formatNumber"])((1-this.calculateStaminaPenalty())*100, 1) + "%
" +
+ "Team Size: " + Object(_utils_StringHelperFunctions_js__WEBPACK_IMPORTED_MODULE_12__["formatNumber"])(this.teamSize, 0) + "
" +
+ "Team Members Lost: " + Object(_utils_StringHelperFunctions_js__WEBPACK_IMPORTED_MODULE_12__["formatNumber"])(this.teamLost, 0) + "
" +
"Num Times Hospitalized: " + this.numHosp + "
" +
- "Money Lost From Hospitalizations: " + _utils_numeral_min_js__WEBPACK_IMPORTED_MODULE_10___default()(this.moneyLost).format("$0.000a") + "
" +
+ "Money Lost From Hospitalizations: " + numeral_min_numeral_min__WEBPACK_IMPORTED_MODULE_11___default()(this.moneyLost).format("$0.000a") + "
" +
"Current City: " + this.city + "
";
- DomElems.overviewEstPop.childNodes[0].nodeValue = "Est. Synthoid Population: " + _utils_numeral_min_js__WEBPACK_IMPORTED_MODULE_10___default()(this.getCurrentCity().popEst).format("0.000a");
- DomElems.overviewEstComms.childNodes[0].nodeValue = "Est. Synthoid Communities: " + Object(_utils_StringHelperFunctions_js__WEBPACK_IMPORTED_MODULE_11__["formatNumber"])(this.getCurrentCity().comms, 0);
- DomElems.overviewChaos.childNodes[0].nodeValue = "City Chaos: " + Object(_utils_StringHelperFunctions_js__WEBPACK_IMPORTED_MODULE_11__["formatNumber"])(this.getCurrentCity().chaos);
- DomElems.overviewSkillPoints.innerText = "Skill Points: " + Object(_utils_StringHelperFunctions_js__WEBPACK_IMPORTED_MODULE_11__["formatNumber"])(this.skillPoints, 0);
- DomElems.overviewAugSuccessMult.innerText = "Aug. Success Chance Mult: " + Object(_utils_StringHelperFunctions_js__WEBPACK_IMPORTED_MODULE_11__["formatNumber"])(_Player_js__WEBPACK_IMPORTED_MODULE_4__["Player"].bladeburner_success_chance_mult*100, 1) + "%";
- DomElems.overviewAugMaxStaminaMult.innerText = "Aug. Max Stamina Mult: " + Object(_utils_StringHelperFunctions_js__WEBPACK_IMPORTED_MODULE_11__["formatNumber"])(_Player_js__WEBPACK_IMPORTED_MODULE_4__["Player"].bladeburner_max_stamina_mult*100, 1) + "%";
- DomElems.overviewAugStaminaGainMult.innerText = "Aug. Stamina Gain Mult: " + Object(_utils_StringHelperFunctions_js__WEBPACK_IMPORTED_MODULE_11__["formatNumber"])(_Player_js__WEBPACK_IMPORTED_MODULE_4__["Player"].bladeburner_stamina_gain_mult*100, 1) + "%";
- DomElems.overviewAugAnalysisMult.innerText = "Aug. Field Analysis Mult: " + Object(_utils_StringHelperFunctions_js__WEBPACK_IMPORTED_MODULE_11__["formatNumber"])(_Player_js__WEBPACK_IMPORTED_MODULE_4__["Player"].bladeburner_analysis_mult*100, 1) + "%";
+ DomElems.overviewEstPop.childNodes[0].nodeValue = "Est. Synthoid Population: " + numeral_min_numeral_min__WEBPACK_IMPORTED_MODULE_11___default()(this.getCurrentCity().popEst).format("0.000a");
+ DomElems.overviewEstComms.childNodes[0].nodeValue = "Est. Synthoid Communities: " + Object(_utils_StringHelperFunctions_js__WEBPACK_IMPORTED_MODULE_12__["formatNumber"])(this.getCurrentCity().comms, 0);
+ DomElems.overviewChaos.childNodes[0].nodeValue = "City Chaos: " + Object(_utils_StringHelperFunctions_js__WEBPACK_IMPORTED_MODULE_12__["formatNumber"])(this.getCurrentCity().chaos);
+ DomElems.overviewSkillPoints.innerText = "Skill Points: " + Object(_utils_StringHelperFunctions_js__WEBPACK_IMPORTED_MODULE_12__["formatNumber"])(this.skillPoints, 0);
+ DomElems.overviewAugSuccessMult.innerText = "Aug. Success Chance Mult: " + Object(_utils_StringHelperFunctions_js__WEBPACK_IMPORTED_MODULE_12__["formatNumber"])(_Player_js__WEBPACK_IMPORTED_MODULE_5__["Player"].bladeburner_success_chance_mult*100, 1) + "%";
+ DomElems.overviewAugMaxStaminaMult.innerText = "Aug. Max Stamina Mult: " + Object(_utils_StringHelperFunctions_js__WEBPACK_IMPORTED_MODULE_12__["formatNumber"])(_Player_js__WEBPACK_IMPORTED_MODULE_5__["Player"].bladeburner_max_stamina_mult*100, 1) + "%";
+ DomElems.overviewAugStaminaGainMult.innerText = "Aug. Stamina Gain Mult: " + Object(_utils_StringHelperFunctions_js__WEBPACK_IMPORTED_MODULE_12__["formatNumber"])(_Player_js__WEBPACK_IMPORTED_MODULE_5__["Player"].bladeburner_stamina_gain_mult*100, 1) + "%";
+ DomElems.overviewAugAnalysisMult.innerText = "Aug. Field Analysis Mult: " + Object(_utils_StringHelperFunctions_js__WEBPACK_IMPORTED_MODULE_12__["formatNumber"])(_Player_js__WEBPACK_IMPORTED_MODULE_5__["Player"].bladeburner_analysis_mult*100, 1) + "%";
}
Bladeburner.prototype.updateActionAndSkillsContent = function() {
@@ -28345,6 +28101,8 @@ Bladeburner.prototype.updateActionAndSkillsContent = function() {
}
break;
case "skills":
+ DomElems.skillPointsDisplay.innerHTML = "
Skill Points: " + Object(_utils_StringHelperFunctions_js__WEBPACK_IMPORTED_MODULE_12__["formatNumber"])(this.skillPoints, 0) + "";
+
var skillElems = Object.keys(DomElems.skills);
for (var i = 0; i < skillElems.length; ++i) {
var skillElem = DomElems.skills[skillElems[i]];
@@ -28362,26 +28120,26 @@ Bladeburner.prototype.updateActionAndSkillsContent = function() {
}
Bladeburner.prototype.updateGeneralActionsUIElement = function(el, action) {
- Object(_utils_HelperFunctions_js__WEBPACK_IMPORTED_MODULE_8__["removeChildrenFromElement"])(el);
+ Object(_utils_HelperFunctions_js__WEBPACK_IMPORTED_MODULE_9__["removeChildrenFromElement"])(el);
var isActive = el.classList.contains(ActiveActionCssClass);
- el.appendChild(Object(_utils_HelperFunctions_js__WEBPACK_IMPORTED_MODULE_8__["createElement"])("h2", { //Header
+ el.appendChild(Object(_utils_HelperFunctions_js__WEBPACK_IMPORTED_MODULE_9__["createElement"])("h2", { //Header
innerText:isActive ? action.name + " (IN PROGRESS - " +
- Object(_utils_StringHelperFunctions_js__WEBPACK_IMPORTED_MODULE_11__["formatNumber"])(this.actionTimeCurrent, 0) + " / " +
- Object(_utils_StringHelperFunctions_js__WEBPACK_IMPORTED_MODULE_11__["formatNumber"])(this.actionTimeToComplete, 0) + ")"
+ Object(_utils_StringHelperFunctions_js__WEBPACK_IMPORTED_MODULE_12__["formatNumber"])(this.actionTimeCurrent, 0) + " / " +
+ Object(_utils_StringHelperFunctions_js__WEBPACK_IMPORTED_MODULE_12__["formatNumber"])(this.actionTimeToComplete, 0) + ")"
: action.name,
display:"inline-block",
}));
if (isActive) { //Progress bar if its active
var progress = this.actionTimeCurrent / this.actionTimeToComplete;
- el.appendChild(Object(_utils_HelperFunctions_js__WEBPACK_IMPORTED_MODULE_8__["createElement"])("p", {
+ el.appendChild(Object(_utils_HelperFunctions_js__WEBPACK_IMPORTED_MODULE_9__["createElement"])("p", {
display:"block",
- innerText:Object(_utils_HelperFunctions_js__WEBPACK_IMPORTED_MODULE_8__["createProgressBarText"])({progress:progress})
+ innerText:Object(_utils_HelperFunctions_js__WEBPACK_IMPORTED_MODULE_9__["createProgressBarText"])({progress:progress})
}));
} else {
//Start button
- el.appendChild(Object(_utils_HelperFunctions_js__WEBPACK_IMPORTED_MODULE_8__["createElement"])("a", {
+ el.appendChild(Object(_utils_HelperFunctions_js__WEBPACK_IMPORTED_MODULE_9__["createElement"])("a", {
innerText:"Start", class: "a-link-button",
margin:"3px", padding:"3px",
clickListener:()=>{
@@ -28394,8 +28152,8 @@ Bladeburner.prototype.updateGeneralActionsUIElement = function(el, action) {
}));
}
- Object(_utils_HelperFunctions_js__WEBPACK_IMPORTED_MODULE_8__["appendLineBreaks"])(el, 2);
- el.appendChild(Object(_utils_HelperFunctions_js__WEBPACK_IMPORTED_MODULE_8__["createElement"])("pre", { //Info
+ Object(_utils_HelperFunctions_js__WEBPACK_IMPORTED_MODULE_9__["appendLineBreaks"])(el, 2);
+ el.appendChild(Object(_utils_HelperFunctions_js__WEBPACK_IMPORTED_MODULE_9__["createElement"])("pre", { //Info
innerHTML:action.desc, display:"inline-block"
}));
@@ -28403,26 +28161,26 @@ Bladeburner.prototype.updateGeneralActionsUIElement = function(el, action) {
}
Bladeburner.prototype.updateContractsUIElement = function(el, action) {
- Object(_utils_HelperFunctions_js__WEBPACK_IMPORTED_MODULE_8__["removeChildrenFromElement"])(el);
+ Object(_utils_HelperFunctions_js__WEBPACK_IMPORTED_MODULE_9__["removeChildrenFromElement"])(el);
var isActive = el.classList.contains(ActiveActionCssClass);
var estimatedSuccessChance = action.getSuccessChance(this, {est:true});
- el.appendChild(Object(_utils_HelperFunctions_js__WEBPACK_IMPORTED_MODULE_8__["createElement"])("h2", { //Header
+ el.appendChild(Object(_utils_HelperFunctions_js__WEBPACK_IMPORTED_MODULE_9__["createElement"])("h2", { //Header
innerText:isActive ? action.name + " (IN PROGRESS - " +
- Object(_utils_StringHelperFunctions_js__WEBPACK_IMPORTED_MODULE_11__["formatNumber"])(this.actionTimeCurrent, 0) + " / " +
- Object(_utils_StringHelperFunctions_js__WEBPACK_IMPORTED_MODULE_11__["formatNumber"])(this.actionTimeToComplete, 0) + ")"
+ Object(_utils_StringHelperFunctions_js__WEBPACK_IMPORTED_MODULE_12__["formatNumber"])(this.actionTimeCurrent, 0) + " / " +
+ Object(_utils_StringHelperFunctions_js__WEBPACK_IMPORTED_MODULE_12__["formatNumber"])(this.actionTimeToComplete, 0) + ")"
: action.name,
display:"inline-block"
}));
if (isActive) { //Progress bar if its active
var progress = this.actionTimeCurrent / this.actionTimeToComplete;
- el.appendChild(Object(_utils_HelperFunctions_js__WEBPACK_IMPORTED_MODULE_8__["createElement"])("p", {
+ el.appendChild(Object(_utils_HelperFunctions_js__WEBPACK_IMPORTED_MODULE_9__["createElement"])("p", {
display:"block",
- innerText:Object(_utils_HelperFunctions_js__WEBPACK_IMPORTED_MODULE_8__["createProgressBarText"])({progress:progress})
+ innerText:Object(_utils_HelperFunctions_js__WEBPACK_IMPORTED_MODULE_9__["createProgressBarText"])({progress:progress})
}));
} else { //Start button
- el.appendChild(Object(_utils_HelperFunctions_js__WEBPACK_IMPORTED_MODULE_8__["createElement"])("a", {
+ el.appendChild(Object(_utils_HelperFunctions_js__WEBPACK_IMPORTED_MODULE_9__["createElement"])("a", {
innerText:"Start", class: "a-link-button",
padding:"3px", margin:"3px",
clickListener:()=>{
@@ -28437,12 +28195,14 @@ Bladeburner.prototype.updateContractsUIElement = function(el, action) {
//Level and buttons to change level
var maxLevel = (action.level >= action.maxLevel);
- Object(_utils_HelperFunctions_js__WEBPACK_IMPORTED_MODULE_8__["appendLineBreaks"])(el, 2);
- el.appendChild(Object(_utils_HelperFunctions_js__WEBPACK_IMPORTED_MODULE_8__["createElement"])("pre", {
+ Object(_utils_HelperFunctions_js__WEBPACK_IMPORTED_MODULE_9__["appendLineBreaks"])(el, 2);
+ el.appendChild(Object(_utils_HelperFunctions_js__WEBPACK_IMPORTED_MODULE_9__["createElement"])("pre", {
display:"inline-block",
- innerText:"Level: " + action.level + " / " + action.maxLevel
+ innerText:"Level: " + action.level + " / " + action.maxLevel,
+ tooltip:action.getSuccessesNeededForNextLevel(ContractSuccessesPerLevel) + " successes " +
+ "needed for next level"
}));
- el.appendChild(Object(_utils_HelperFunctions_js__WEBPACK_IMPORTED_MODULE_8__["createElement"])("a", {
+ el.appendChild(Object(_utils_HelperFunctions_js__WEBPACK_IMPORTED_MODULE_9__["createElement"])("a", {
class: maxLevel ? "a-link-button-inactive" : "a-link-button", innerHTML:"↑",
padding:"2px", margin:"2px",
tooltip: isActive ? "WARNING: changing the level will restart the contract" : "",
@@ -28454,7 +28214,7 @@ Bladeburner.prototype.updateContractsUIElement = function(el, action) {
return false;
}
}));
- el.appendChild(Object(_utils_HelperFunctions_js__WEBPACK_IMPORTED_MODULE_8__["createElement"])("a", {
+ el.appendChild(Object(_utils_HelperFunctions_js__WEBPACK_IMPORTED_MODULE_9__["createElement"])("a", {
class: (action.level <= 1) ? "a-link-button-inactive" : "a-link-button", innerHTML:"↓",
padding:"2px", margin:"2px",
tooltip: isActive ? "WARNING: changing the level will restart the contract" : "",
@@ -28468,25 +28228,25 @@ Bladeburner.prototype.updateContractsUIElement = function(el, action) {
}));
var actionTime = action.getActionTime(this);
- Object(_utils_HelperFunctions_js__WEBPACK_IMPORTED_MODULE_8__["appendLineBreaks"])(el, 2);
- el.appendChild(Object(_utils_HelperFunctions_js__WEBPACK_IMPORTED_MODULE_8__["createElement"])("pre", { //Info
+ Object(_utils_HelperFunctions_js__WEBPACK_IMPORTED_MODULE_9__["appendLineBreaks"])(el, 2);
+ el.appendChild(Object(_utils_HelperFunctions_js__WEBPACK_IMPORTED_MODULE_9__["createElement"])("pre", { //Info
display:"inline-block",
innerHTML:action.desc + "\n\n" +
- "Estimated success chance: " + Object(_utils_StringHelperFunctions_js__WEBPACK_IMPORTED_MODULE_11__["formatNumber"])(estimatedSuccessChance*100, 1) + "%\n" +
- "Time Required (s): " + Object(_utils_StringHelperFunctions_js__WEBPACK_IMPORTED_MODULE_11__["formatNumber"])(actionTime, 0) + "\n" +
+ "Estimated success chance: " + Object(_utils_StringHelperFunctions_js__WEBPACK_IMPORTED_MODULE_12__["formatNumber"])(estimatedSuccessChance*100, 1) + "%\n" +
+ "Time Required (s): " + Object(_utils_StringHelperFunctions_js__WEBPACK_IMPORTED_MODULE_12__["formatNumber"])(actionTime, 0) + "\n" +
"Contracts remaining: " + Math.floor(action.count) + "\n" +
"Successes: " + action.successes + "\n" +
"Failures: " + action.failures,
}));
//Autolevel Checkbox
- el.appendChild(Object(_utils_HelperFunctions_js__WEBPACK_IMPORTED_MODULE_8__["createElement"])("br"));
+ el.appendChild(Object(_utils_HelperFunctions_js__WEBPACK_IMPORTED_MODULE_9__["createElement"])("br"));
var autolevelCheckboxId = "bladeburner-" + action.name + "-autolevel-checkbox";
- el.appendChild(Object(_utils_HelperFunctions_js__WEBPACK_IMPORTED_MODULE_8__["createElement"])("label", {
+ el.appendChild(Object(_utils_HelperFunctions_js__WEBPACK_IMPORTED_MODULE_9__["createElement"])("label", {
for:autolevelCheckboxId, innerText:"Autolevel",color:"white",
tooltip:"Automatically increase contract level when possible"
}));
- var autolevelCheckbox = Object(_utils_HelperFunctions_js__WEBPACK_IMPORTED_MODULE_8__["createElement"])("input", {
+ var autolevelCheckbox = Object(_utils_HelperFunctions_js__WEBPACK_IMPORTED_MODULE_9__["createElement"])("input", {
type:"checkbox", id:autolevelCheckboxId, margin:"4px",
checked:action.autoLevel,
changeListener:()=>{
@@ -28497,25 +28257,25 @@ Bladeburner.prototype.updateContractsUIElement = function(el, action) {
}
Bladeburner.prototype.updateOperationsUIElement = function(el, action) {
- Object(_utils_HelperFunctions_js__WEBPACK_IMPORTED_MODULE_8__["removeChildrenFromElement"])(el);
+ Object(_utils_HelperFunctions_js__WEBPACK_IMPORTED_MODULE_9__["removeChildrenFromElement"])(el);
var isActive = el.classList.contains(ActiveActionCssClass);
var estimatedSuccessChance = action.getSuccessChance(this, {est:true});
- el.appendChild(Object(_utils_HelperFunctions_js__WEBPACK_IMPORTED_MODULE_8__["createElement"])("h2", { //Header
+ el.appendChild(Object(_utils_HelperFunctions_js__WEBPACK_IMPORTED_MODULE_9__["createElement"])("h2", { //Header
innerText:isActive ? action.name + " (IN PROGRESS - " +
- Object(_utils_StringHelperFunctions_js__WEBPACK_IMPORTED_MODULE_11__["formatNumber"])(this.actionTimeCurrent, 0) + " / " +
- Object(_utils_StringHelperFunctions_js__WEBPACK_IMPORTED_MODULE_11__["formatNumber"])(this.actionTimeToComplete, 0) + ")"
+ Object(_utils_StringHelperFunctions_js__WEBPACK_IMPORTED_MODULE_12__["formatNumber"])(this.actionTimeCurrent, 0) + " / " +
+ Object(_utils_StringHelperFunctions_js__WEBPACK_IMPORTED_MODULE_12__["formatNumber"])(this.actionTimeToComplete, 0) + ")"
: action.name,
display:"inline-block"
}));
if (isActive) { //Progress bar if its active
var progress = this.actionTimeCurrent / this.actionTimeToComplete;
- el.appendChild(Object(_utils_HelperFunctions_js__WEBPACK_IMPORTED_MODULE_8__["createElement"])("p", {
+ el.appendChild(Object(_utils_HelperFunctions_js__WEBPACK_IMPORTED_MODULE_9__["createElement"])("p", {
display:"block",
- innerText:Object(_utils_HelperFunctions_js__WEBPACK_IMPORTED_MODULE_8__["createProgressBarText"])({progress:progress})
+ innerText:Object(_utils_HelperFunctions_js__WEBPACK_IMPORTED_MODULE_9__["createProgressBarText"])({progress:progress})
}));
} else { //Start button and set Team Size button
- el.appendChild(Object(_utils_HelperFunctions_js__WEBPACK_IMPORTED_MODULE_8__["createElement"])("a", {
+ el.appendChild(Object(_utils_HelperFunctions_js__WEBPACK_IMPORTED_MODULE_9__["createElement"])("a", {
innerText:"Start", class: "a-link-button",
margin:"3px", padding:"3px",
clickListener:()=>{
@@ -28526,55 +28286,57 @@ Bladeburner.prototype.updateOperationsUIElement = function(el, action) {
return false;
}
}));
- el.appendChild(Object(_utils_HelperFunctions_js__WEBPACK_IMPORTED_MODULE_8__["createElement"])("a", {
- innerText:"Set Team Size (Curr Size: " + Object(_utils_StringHelperFunctions_js__WEBPACK_IMPORTED_MODULE_11__["formatNumber"])(action.teamCount, 0) + ")", class:"a-link-button",
+ el.appendChild(Object(_utils_HelperFunctions_js__WEBPACK_IMPORTED_MODULE_9__["createElement"])("a", {
+ innerText:"Set Team Size (Curr Size: " + Object(_utils_StringHelperFunctions_js__WEBPACK_IMPORTED_MODULE_12__["formatNumber"])(action.teamCount, 0) + ")", class:"a-link-button",
margin:"3px", padding:"3px",
clickListener:()=>{
var popupId = "bladeburner-operation-set-team-size-popup";
- var txt = Object(_utils_HelperFunctions_js__WEBPACK_IMPORTED_MODULE_8__["createElement"])("p", {
+ var txt = Object(_utils_HelperFunctions_js__WEBPACK_IMPORTED_MODULE_9__["createElement"])("p", {
innerText:"Enter the amount of team members you would like to take on these " +
"operations. If you do not have the specified number of team members, " +
"then as many as possible will be used. Note that team members may " +
"be lost during operations."
});
- var input = Object(_utils_HelperFunctions_js__WEBPACK_IMPORTED_MODULE_8__["createElement"])("input", {
+ var input = Object(_utils_HelperFunctions_js__WEBPACK_IMPORTED_MODULE_9__["createElement"])("input", {
type:"number", placeholder: "Team Members"
});
- var setBtn = Object(_utils_HelperFunctions_js__WEBPACK_IMPORTED_MODULE_8__["createElement"])("a", {
+ var setBtn = Object(_utils_HelperFunctions_js__WEBPACK_IMPORTED_MODULE_9__["createElement"])("a", {
innerText:"Confirm", class:"a-link-button",
clickListener:()=>{
var num = Math.round(parseFloat(input.value));
if (isNaN(num)) {
- Object(_utils_DialogBox_js__WEBPACK_IMPORTED_MODULE_7__["dialogBoxCreate"])("Invalid value entered for number of Team Members (must be numeric)")
+ Object(_utils_DialogBox_js__WEBPACK_IMPORTED_MODULE_8__["dialogBoxCreate"])("Invalid value entered for number of Team Members (must be numeric)")
} else {
action.teamCount = num;
this.updateOperationsUIElement(el, action);
}
- Object(_utils_HelperFunctions_js__WEBPACK_IMPORTED_MODULE_8__["removeElementById"])(popupId);
+ Object(_utils_HelperFunctions_js__WEBPACK_IMPORTED_MODULE_9__["removeElementById"])(popupId);
return false;
}
});
- var cancelBtn = Object(_utils_HelperFunctions_js__WEBPACK_IMPORTED_MODULE_8__["createElement"])("a", {
+ var cancelBtn = Object(_utils_HelperFunctions_js__WEBPACK_IMPORTED_MODULE_9__["createElement"])("a", {
innerText:"Cancel", class:"a-link-button",
clickListener:()=>{
- Object(_utils_HelperFunctions_js__WEBPACK_IMPORTED_MODULE_8__["removeElementById"])(popupId);
+ Object(_utils_HelperFunctions_js__WEBPACK_IMPORTED_MODULE_9__["removeElementById"])(popupId);
return false;
}
});
- Object(_utils_HelperFunctions_js__WEBPACK_IMPORTED_MODULE_8__["createPopup"])(popupId, [txt, input, setBtn, cancelBtn]);
+ Object(_utils_HelperFunctions_js__WEBPACK_IMPORTED_MODULE_9__["createPopup"])(popupId, [txt, input, setBtn, cancelBtn]);
}
}));
}
//Level and buttons to change level
var maxLevel = (action.level >= action.maxLevel);
- Object(_utils_HelperFunctions_js__WEBPACK_IMPORTED_MODULE_8__["appendLineBreaks"])(el, 2);
- el.appendChild(Object(_utils_HelperFunctions_js__WEBPACK_IMPORTED_MODULE_8__["createElement"])("pre", {
+ Object(_utils_HelperFunctions_js__WEBPACK_IMPORTED_MODULE_9__["appendLineBreaks"])(el, 2);
+ el.appendChild(Object(_utils_HelperFunctions_js__WEBPACK_IMPORTED_MODULE_9__["createElement"])("pre", {
display:"inline-block",
- innerText:"Level: " + action.level + " / " + action.maxLevel
+ innerText:"Level: " + action.level + " / " + action.maxLevel,
+ tooltip:action.getSuccessesNeededForNextLevel(OperationSuccessesPerLevel) + " successes " +
+ "needed for next level"
}));
- el.appendChild(Object(_utils_HelperFunctions_js__WEBPACK_IMPORTED_MODULE_8__["createElement"])("a", {
+ el.appendChild(Object(_utils_HelperFunctions_js__WEBPACK_IMPORTED_MODULE_9__["createElement"])("a", {
class: maxLevel ? "a-link-button-inactive" : "a-link-button", innerHTML:"↑",
padding:"2px", margin:"2px",
tooltip: isActive ? "WARNING: changing the level will restart the Operation" : "",
@@ -28586,7 +28348,7 @@ Bladeburner.prototype.updateOperationsUIElement = function(el, action) {
return false;
}
}));
- el.appendChild(Object(_utils_HelperFunctions_js__WEBPACK_IMPORTED_MODULE_8__["createElement"])("a", {
+ el.appendChild(Object(_utils_HelperFunctions_js__WEBPACK_IMPORTED_MODULE_9__["createElement"])("a", {
class: (action.level <= 1) ? "a-link-button-inactive" : "a-link-button", innerHTML:"↓",
padding:"2px", margin:"2px",
tooltip: isActive ? "WARNING: changing the level will restart the Operation" : "",
@@ -28602,25 +28364,25 @@ Bladeburner.prototype.updateOperationsUIElement = function(el, action) {
//General Info
var difficulty = action.getDifficulty();
var actionTime = action.getActionTime(this);
- Object(_utils_HelperFunctions_js__WEBPACK_IMPORTED_MODULE_8__["appendLineBreaks"])(el, 2);
- el.appendChild(Object(_utils_HelperFunctions_js__WEBPACK_IMPORTED_MODULE_8__["createElement"])("pre", {
+ Object(_utils_HelperFunctions_js__WEBPACK_IMPORTED_MODULE_9__["appendLineBreaks"])(el, 2);
+ el.appendChild(Object(_utils_HelperFunctions_js__WEBPACK_IMPORTED_MODULE_9__["createElement"])("pre", {
display:"inline-block",
innerHTML:action.desc + "\n\n" +
- "Estimated success chance: " + Object(_utils_StringHelperFunctions_js__WEBPACK_IMPORTED_MODULE_11__["formatNumber"])(estimatedSuccessChance*100, 1) + "%\n" +
- "Time Required(s): " + Object(_utils_StringHelperFunctions_js__WEBPACK_IMPORTED_MODULE_11__["formatNumber"])(actionTime, 1) + "\n" +
+ "Estimated success chance: " + Object(_utils_StringHelperFunctions_js__WEBPACK_IMPORTED_MODULE_12__["formatNumber"])(estimatedSuccessChance*100, 1) + "%\n" +
+ "Time Required(s): " + Object(_utils_StringHelperFunctions_js__WEBPACK_IMPORTED_MODULE_12__["formatNumber"])(actionTime, 1) + "\n" +
"Operations remaining: " + Math.floor(action.count) + "\n" +
"Successes: " + action.successes + "\n" +
"Failures: " + action.failures,
}));
//Autolevel Checkbox
- el.appendChild(Object(_utils_HelperFunctions_js__WEBPACK_IMPORTED_MODULE_8__["createElement"])("br"));
+ el.appendChild(Object(_utils_HelperFunctions_js__WEBPACK_IMPORTED_MODULE_9__["createElement"])("br"));
var autolevelCheckboxId = "bladeburner-" + action.name + "-autolevel-checkbox";
- el.appendChild(Object(_utils_HelperFunctions_js__WEBPACK_IMPORTED_MODULE_8__["createElement"])("label", {
+ el.appendChild(Object(_utils_HelperFunctions_js__WEBPACK_IMPORTED_MODULE_9__["createElement"])("label", {
for:autolevelCheckboxId, innerText:"Autolevel",color:"white",
tooltip:"Automatically increase operation level when possible"
}));
- var autolevelCheckbox = Object(_utils_HelperFunctions_js__WEBPACK_IMPORTED_MODULE_8__["createElement"])("input", {
+ var autolevelCheckbox = Object(_utils_HelperFunctions_js__WEBPACK_IMPORTED_MODULE_9__["createElement"])("input", {
type:"checkbox", id:autolevelCheckboxId, margin:"4px",
checked:action.autoLevel,
changeListener:()=>{
@@ -28631,7 +28393,7 @@ Bladeburner.prototype.updateOperationsUIElement = function(el, action) {
}
Bladeburner.prototype.updateBlackOpsUIElement = function(el, action) {
- Object(_utils_HelperFunctions_js__WEBPACK_IMPORTED_MODULE_8__["removeChildrenFromElement"])(el);
+ Object(_utils_HelperFunctions_js__WEBPACK_IMPORTED_MODULE_9__["removeChildrenFromElement"])(el);
var isActive = el.classList.contains(ActiveActionCssClass);
var isCompleted = (this.blackops[action.name] != null);
var estimatedSuccessChance = action.getSuccessChance(this, {est:true});
@@ -28641,28 +28403,28 @@ Bladeburner.prototype.updateBlackOpsUIElement = function(el, action) {
//UI for Completed Black Op
if (isCompleted) {
- el.appendChild(Object(_utils_HelperFunctions_js__WEBPACK_IMPORTED_MODULE_8__["createElement"])("h2", {
+ el.appendChild(Object(_utils_HelperFunctions_js__WEBPACK_IMPORTED_MODULE_9__["createElement"])("h2", {
innerText:action.name + " (COMPLETED)", display:"block",
}));
return;
}
- el.appendChild(Object(_utils_HelperFunctions_js__WEBPACK_IMPORTED_MODULE_8__["createElement"])("h2", { //Header
+ el.appendChild(Object(_utils_HelperFunctions_js__WEBPACK_IMPORTED_MODULE_9__["createElement"])("h2", { //Header
innerText:isActive ? action.name + " (IN PROGRESS - " +
- Object(_utils_StringHelperFunctions_js__WEBPACK_IMPORTED_MODULE_11__["formatNumber"])(this.actionTimeCurrent, 0) + " / " +
- Object(_utils_StringHelperFunctions_js__WEBPACK_IMPORTED_MODULE_11__["formatNumber"])(this.actionTimeToComplete, 0) + ")"
+ Object(_utils_StringHelperFunctions_js__WEBPACK_IMPORTED_MODULE_12__["formatNumber"])(this.actionTimeCurrent, 0) + " / " +
+ Object(_utils_StringHelperFunctions_js__WEBPACK_IMPORTED_MODULE_12__["formatNumber"])(this.actionTimeToComplete, 0) + ")"
: action.name,
display:"inline-block",
}));
if (isActive) { //Progress bar if its active
var progress = this.actionTimeCurrent / this.actionTimeToComplete;
- el.appendChild(Object(_utils_HelperFunctions_js__WEBPACK_IMPORTED_MODULE_8__["createElement"])("p", {
+ el.appendChild(Object(_utils_HelperFunctions_js__WEBPACK_IMPORTED_MODULE_9__["createElement"])("p", {
display:"block",
- innerText:Object(_utils_HelperFunctions_js__WEBPACK_IMPORTED_MODULE_8__["createProgressBarText"])({progress:progress})
+ innerText:Object(_utils_HelperFunctions_js__WEBPACK_IMPORTED_MODULE_9__["createProgressBarText"])({progress:progress})
}));
} else {
- el.appendChild(Object(_utils_HelperFunctions_js__WEBPACK_IMPORTED_MODULE_8__["createElement"])("a", { //Start button
+ el.appendChild(Object(_utils_HelperFunctions_js__WEBPACK_IMPORTED_MODULE_9__["createElement"])("a", { //Start button
innerText:"Start", margin:"3px", padding:"3px",
class:hasReqdRank ? "a-link-button" : "a-link-button-inactive",
clickListener:()=>{
@@ -28673,66 +28435,66 @@ Bladeburner.prototype.updateBlackOpsUIElement = function(el, action) {
return false;
}
}));
- el.appendChild(Object(_utils_HelperFunctions_js__WEBPACK_IMPORTED_MODULE_8__["createElement"])("a", { //Set Team Size Button
- innerText:"Set Team Size (Curr Size: " + Object(_utils_StringHelperFunctions_js__WEBPACK_IMPORTED_MODULE_11__["formatNumber"])(action.teamCount, 0) + ")", class:"a-link-button",
+ el.appendChild(Object(_utils_HelperFunctions_js__WEBPACK_IMPORTED_MODULE_9__["createElement"])("a", { //Set Team Size Button
+ innerText:"Set Team Size (Curr Size: " + Object(_utils_StringHelperFunctions_js__WEBPACK_IMPORTED_MODULE_12__["formatNumber"])(action.teamCount, 0) + ")", class:"a-link-button",
margin:"3px", padding:"3px",
clickListener:()=>{
var popupId = "bladeburner-operation-set-team-size-popup";
- var txt = Object(_utils_HelperFunctions_js__WEBPACK_IMPORTED_MODULE_8__["createElement"])("p", {
+ var txt = Object(_utils_HelperFunctions_js__WEBPACK_IMPORTED_MODULE_9__["createElement"])("p", {
innerText:"Enter the amount of team members you would like to take on this " +
"BlackOp. If you do not have the specified number of team members, " +
"then as many as possible will be used. Note that team members may " +
"be lost during operations."
});
- var input = Object(_utils_HelperFunctions_js__WEBPACK_IMPORTED_MODULE_8__["createElement"])("input", {
+ var input = Object(_utils_HelperFunctions_js__WEBPACK_IMPORTED_MODULE_9__["createElement"])("input", {
type:"number", placeholder: "Team Members"
});
- var setBtn = Object(_utils_HelperFunctions_js__WEBPACK_IMPORTED_MODULE_8__["createElement"])("a", {
+ var setBtn = Object(_utils_HelperFunctions_js__WEBPACK_IMPORTED_MODULE_9__["createElement"])("a", {
innerText:"Confirm", class:"a-link-button",
clickListener:()=>{
var num = Math.round(parseFloat(input.value));
if (isNaN(num)) {
- Object(_utils_DialogBox_js__WEBPACK_IMPORTED_MODULE_7__["dialogBoxCreate"])("Invalid value entered for number of Team Members (must be numeric)")
+ Object(_utils_DialogBox_js__WEBPACK_IMPORTED_MODULE_8__["dialogBoxCreate"])("Invalid value entered for number of Team Members (must be numeric)")
} else {
action.teamCount = num;
this.updateBlackOpsUIElement(el, action);
}
- Object(_utils_HelperFunctions_js__WEBPACK_IMPORTED_MODULE_8__["removeElementById"])(popupId);
+ Object(_utils_HelperFunctions_js__WEBPACK_IMPORTED_MODULE_9__["removeElementById"])(popupId);
return false;
}
});
- var cancelBtn = Object(_utils_HelperFunctions_js__WEBPACK_IMPORTED_MODULE_8__["createElement"])("a", {
+ var cancelBtn = Object(_utils_HelperFunctions_js__WEBPACK_IMPORTED_MODULE_9__["createElement"])("a", {
innerText:"Cancel", class:"a-link-button",
clickListener:()=>{
- Object(_utils_HelperFunctions_js__WEBPACK_IMPORTED_MODULE_8__["removeElementById"])(popupId);
+ Object(_utils_HelperFunctions_js__WEBPACK_IMPORTED_MODULE_9__["removeElementById"])(popupId);
return false;
}
});
- Object(_utils_HelperFunctions_js__WEBPACK_IMPORTED_MODULE_8__["createPopup"])(popupId, [txt, input, setBtn, cancelBtn]);
+ Object(_utils_HelperFunctions_js__WEBPACK_IMPORTED_MODULE_9__["createPopup"])(popupId, [txt, input, setBtn, cancelBtn]);
}
}));
}
//Info
- Object(_utils_HelperFunctions_js__WEBPACK_IMPORTED_MODULE_8__["appendLineBreaks"])(el, 2);
- el.appendChild(Object(_utils_HelperFunctions_js__WEBPACK_IMPORTED_MODULE_8__["createElement"])("p", {
+ Object(_utils_HelperFunctions_js__WEBPACK_IMPORTED_MODULE_9__["appendLineBreaks"])(el, 2);
+ el.appendChild(Object(_utils_HelperFunctions_js__WEBPACK_IMPORTED_MODULE_9__["createElement"])("p", {
display:"inline-block",
innerHTML:"
" + action.desc + "
",
}));
- el.appendChild(Object(_utils_HelperFunctions_js__WEBPACK_IMPORTED_MODULE_8__["createElement"])("p", {
+ el.appendChild(Object(_utils_HelperFunctions_js__WEBPACK_IMPORTED_MODULE_9__["createElement"])("p", {
display:"block", color:hasReqdRank ? "white" : "red",
- innerHTML:"Required Rank: " + Object(_utils_StringHelperFunctions_js__WEBPACK_IMPORTED_MODULE_11__["formatNumber"])(action.reqdRank, 0) + "
"
+ innerHTML:"Required Rank: " + Object(_utils_StringHelperFunctions_js__WEBPACK_IMPORTED_MODULE_12__["formatNumber"])(action.reqdRank, 0) + "
"
}));
- el.appendChild(Object(_utils_HelperFunctions_js__WEBPACK_IMPORTED_MODULE_8__["createElement"])("p", {
+ el.appendChild(Object(_utils_HelperFunctions_js__WEBPACK_IMPORTED_MODULE_9__["createElement"])("p", {
display:"inline-block",
- innerHTML:"Estimated Success Chance: " + Object(_utils_StringHelperFunctions_js__WEBPACK_IMPORTED_MODULE_11__["formatNumber"])(estimatedSuccessChance*100, 1) + "%\n" +
- "Time Required(s): " + Object(_utils_StringHelperFunctions_js__WEBPACK_IMPORTED_MODULE_11__["formatNumber"])(actionTime, 1),
+ innerHTML:"Estimated Success Chance: " + Object(_utils_StringHelperFunctions_js__WEBPACK_IMPORTED_MODULE_12__["formatNumber"])(estimatedSuccessChance*100, 1) + "%\n" +
+ "Time Required(s): " + Object(_utils_StringHelperFunctions_js__WEBPACK_IMPORTED_MODULE_12__["formatNumber"])(actionTime, 1),
}))
}
Bladeburner.prototype.updateSkillsUIElement = function(el, skill) {
- Object(_utils_HelperFunctions_js__WEBPACK_IMPORTED_MODULE_8__["removeChildrenFromElement"])(el);
+ Object(_utils_HelperFunctions_js__WEBPACK_IMPORTED_MODULE_9__["removeChildrenFromElement"])(el);
var skillName = skill.name;
var currentLevel = 0;
if (this.skills[skillName] && !isNaN(this.skills[skillName])) {
@@ -28740,36 +28502,37 @@ Bladeburner.prototype.updateSkillsUIElement = function(el, skill) {
}
var pointCost = skill.baseCost + (currentLevel * skill.costInc);
- el.appendChild(Object(_utils_HelperFunctions_js__WEBPACK_IMPORTED_MODULE_8__["createElement"])("h2", { //Header
+ el.appendChild(Object(_utils_HelperFunctions_js__WEBPACK_IMPORTED_MODULE_9__["createElement"])("h2", { //Header
innerText:skill.name + " (Lvl " + currentLevel + ")", display:"inline-block"
}));
var canLevel = this.skillPoints >= pointCost;
var maxLvl = skill.maxLvl ? currentLevel >= skill.maxLvl : false;
- el.appendChild(Object(_utils_HelperFunctions_js__WEBPACK_IMPORTED_MODULE_8__["createElement"])("a", { //Level up button
+ el.appendChild(Object(_utils_HelperFunctions_js__WEBPACK_IMPORTED_MODULE_9__["createElement"])("a", { //Level up button
innerText:"Level", display:"inline-block",
class: canLevel && !maxLvl ? "a-link-button" : "a-link-button-inactive",
margin:"3px", padding:"3px",
clickListener:()=>{
+ if (this.skillPoints < pointCost) {return;}
this.skillPoints -= pointCost;
this.upgradeSkill(skill);
this.createActionAndSkillsContent();
return false;
}
}));
- Object(_utils_HelperFunctions_js__WEBPACK_IMPORTED_MODULE_8__["appendLineBreaks"])(el, 2);
+ Object(_utils_HelperFunctions_js__WEBPACK_IMPORTED_MODULE_9__["appendLineBreaks"])(el, 2);
if (maxLvl) {
- el.appendChild(Object(_utils_HelperFunctions_js__WEBPACK_IMPORTED_MODULE_8__["createElement"])("p", {
+ el.appendChild(Object(_utils_HelperFunctions_js__WEBPACK_IMPORTED_MODULE_9__["createElement"])("p", {
color:"red", display:"block",
innerText:"MAX LEVEL"
}));
} else {
- el.appendChild(Object(_utils_HelperFunctions_js__WEBPACK_IMPORTED_MODULE_8__["createElement"])("p", {
+ el.appendChild(Object(_utils_HelperFunctions_js__WEBPACK_IMPORTED_MODULE_9__["createElement"])("p", {
display:"block",
- innerText:"Skill Points required: " + Object(_utils_StringHelperFunctions_js__WEBPACK_IMPORTED_MODULE_11__["formatNumber"])(pointCost, 0),
+ innerText:"Skill Points required: " + Object(_utils_StringHelperFunctions_js__WEBPACK_IMPORTED_MODULE_12__["formatNumber"])(pointCost, 0),
}));
}
- el.appendChild(Object(_utils_HelperFunctions_js__WEBPACK_IMPORTED_MODULE_8__["createElement"])("p", { //Info/Description
+ el.appendChild(Object(_utils_HelperFunctions_js__WEBPACK_IMPORTED_MODULE_9__["createElement"])("p", { //Info/Description
innerHTML:skill.desc, display:"inline-block",
}));
}
@@ -28822,7 +28585,7 @@ Bladeburner.prototype.executeConsoleCommands = function(commands) {
this.executeConsoleCommand(arrayOfCommands[i]);
}
} catch(e) {
- Object(_utils_HelperFunctions_js__WEBPACK_IMPORTED_MODULE_8__["exceptionAlert"])(e);
+ Object(_utils_HelperFunctions_js__WEBPACK_IMPORTED_MODULE_9__["exceptionAlert"])(e);
}
}
@@ -28905,10 +28668,10 @@ Bladeburner.prototype.executeAutomateConsoleCommand = function(args) {
if (flag.toLowerCase() === "status") {
this.postToConsole("Automation: " + (this.automateEnabled ? "enabled" : "disabled"));
if (this.automateEnabled) {
- this.postToConsole("When your stamina drops to " + Object(_utils_StringHelperFunctions_js__WEBPACK_IMPORTED_MODULE_11__["formatNumber"])(this.automateThreshLow, 0) +
+ this.postToConsole("When your stamina drops to " + Object(_utils_StringHelperFunctions_js__WEBPACK_IMPORTED_MODULE_12__["formatNumber"])(this.automateThreshLow, 0) +
", you will automatically switch to " + this.automateActionLow.name +
". When your stamina recovers to " +
- Object(_utils_StringHelperFunctions_js__WEBPACK_IMPORTED_MODULE_11__["formatNumber"])(this.automateThreshHigh, 0) + ", you will automatically " +
+ Object(_utils_StringHelperFunctions_js__WEBPACK_IMPORTED_MODULE_12__["formatNumber"])(this.automateThreshHigh, 0) + ", you will automatically " +
"switch to " + this.automateActionHigh.name + ".");
}
@@ -29091,7 +28854,7 @@ Bladeburner.prototype.executeSkillConsoleCommand = function(args) {
var skill = Skills[skillNames[i]];
var level = 0;
if (this.skills[skill.name] != null) {level = this.skills[skill.name];}
- this.postToConsole(skill.name + ": Level " + Object(_utils_StringHelperFunctions_js__WEBPACK_IMPORTED_MODULE_11__["formatNumber"])(level, 0));
+ this.postToConsole(skill.name + ": Level " + Object(_utils_StringHelperFunctions_js__WEBPACK_IMPORTED_MODULE_12__["formatNumber"])(level, 0));
}
this.postToConsole(" ");
this.postToConsole("Effects: ");
@@ -29099,7 +28862,7 @@ Bladeburner.prototype.executeSkillConsoleCommand = function(args) {
for (var i = 0; i < multKeys.length; ++i) {
var mult = this.skillMultipliers[multKeys[i]];
if (mult && mult !== 1) {
- mult = Object(_utils_StringHelperFunctions_js__WEBPACK_IMPORTED_MODULE_11__["formatNumber"])(mult, 3);
+ mult = Object(_utils_StringHelperFunctions_js__WEBPACK_IMPORTED_MODULE_12__["formatNumber"])(mult, 3);
switch(multKeys[i]) {
case "successChanceAll":
this.postToConsole("Total Success Chance: x" + mult);
@@ -29170,7 +28933,7 @@ Bladeburner.prototype.executeSkillConsoleCommand = function(args) {
return this.postToConsole("Invalid skill name (Note that this is case-sensitive): " + skillName);
}
if (args[1].toLowerCase() === "list") {
- this.postToConsole(skill.name + ": Level " + Object(_utils_StringHelperFunctions_js__WEBPACK_IMPORTED_MODULE_11__["formatNumber"])(this.skills[skill.name]), 0);
+ this.postToConsole(skill.name + ": Level " + Object(_utils_StringHelperFunctions_js__WEBPACK_IMPORTED_MODULE_12__["formatNumber"])(this.skills[skill.name]), 0);
} else if (args[1].toLowerCase() === "level") {
var currentLevel = 0;
if (this.skills[skillName] && !isNaN(this.skills[skillName])) {
@@ -29183,7 +28946,7 @@ Bladeburner.prototype.executeSkillConsoleCommand = function(args) {
this.log(skill.name + " upgraded to Level " + this.skills[skillName]);
this.createActionAndSkillsContent();
} else {
- this.postToConsole("You do not have enough Skill Points to upgrade this. You need " + Object(_utils_StringHelperFunctions_js__WEBPACK_IMPORTED_MODULE_11__["formatNumber"])(pointCost, 0));
+ this.postToConsole("You do not have enough Skill Points to upgrade this. You need " + Object(_utils_StringHelperFunctions_js__WEBPACK_IMPORTED_MODULE_12__["formatNumber"])(pointCost, 0));
}
} else {
@@ -29261,14 +29024,405 @@ Bladeburner.prototype.executeStartConsoleCommand = function(args) {
}
}
+Bladeburner.prototype.getActionIdFromTypeAndName = function(type="", name="") {
+ if (type === "" || name === "") {return null;}
+ var action = new ActionIdentifier();
+ var convertedType = type.toLowerCase().trim();
+ var convertedName = name.toLowerCase().trim();
+ switch (convertedType) {
+ case "contract":
+ case "contracts":
+ action.type = ActionTypes["Contract"];
+ if (this.contracts.hasOwnProperty(name)) {
+ action.name = name;
+ return action;
+ } else {
+ return null;
+ }
+ case "operation":
+ case "operations":
+ case "op":
+ case "ops":
+ action.type = ActionTypes["Operation"];
+ if (this.operations.hasOwnProperty(name)) {
+ action.name = name;
+ return action;
+ } else {
+ return null;
+ }
+ case "blackoperation":
+ case "black operation":
+ case "black operations":
+ case "black op":
+ case "black ops":
+ case "blackop":
+ case "blackops":
+ action.type = ActionTypes["BlackOp"];
+ if (BlackOperations.hasOwnProperty(name)) {
+ action.name = name;
+ return action;
+ } else {
+ return null;
+ }
+ case "general":
+ case "general action":
+ case "gen":
+ break;
+ default:
+ return null;
+ }
+
+ if (convertedType.startsWith("gen")) {
+ switch (convertedName) {
+ case "training":
+ action.type = ActionTypes["Training"];
+ break;
+ case "recruitment":
+ case "recruit":
+ action.type = ActionTypes["Recruitment"];
+ break;
+ case "field analysis":
+ case "fieldanalysis":
+ action.type = ActionTypes["Field Analysis"];
+ break;
+ default:
+ return null;
+ }
+ return action;
+ }
+}
+
+Bladeburner.prototype.isContractNameNetscriptFn = function(name) {
+ return this.contracts.hasOwnProperty(name);
+}
+
+Bladeburner.prototype.isOperationNameNetscriptFn = function(name) {
+ return this.operations.hasOwnProperty(name);
+}
+
+Bladeburner.prototype.isBlackOpNameNetscriptFn = function(name) {
+ return BlackOperations.hasOwnProperty(name);
+}
+
+Bladeburner.prototype.isGeneralActionNameNetscriptFn = function(name) {
+ return GeneralActions.hasOwnProperty(name);
+}
+
+Bladeburner.prototype.isSkillNameNetscriptFn = function(name) {
+ return Skills.hasOwnProperty(name);
+}
+
+Bladeburner.prototype.startActionNetscriptFn = function(type, name, workerScript) {
+ var errorLogText = "ERROR: Bladeburner.startAction() failed due to an invalid action specified. " +
+ "Type: " + type + ", Name: " + name + ". Note that for contracts and operations, the " +
+ "name of the operation is case-sensitive.";
+ var actionId = this.getActionIdFromTypeAndName(type, name);
+ if (actionId == null) {
+ workerScript.log(errorLogText);
+ return false;
+ }
+
+ try {
+ this.startAction(actionId);
+ if (workerScript.shouldLog("startAction")) {
+ workerScript.scriptRef.log("Starting Bladeburner action with type " + type + " and name " + name);
+ }
+ return true;
+ } catch(e) {
+ this.resetAction();
+ workerScript.scriptRef.log("ERROR: Bladeburner.startAction() failed to start action of type " + type + " due to invalid name: " + name +
+ "Note that this name is case-sensitive and whitespace-sensitive");
+ return false;
+ }
+}
+
+Bladeburner.prototype.getActionTimeNetscriptFn = function(type, name, workerScript) {
+ var errorLogText = "ERROR: Bladeburner.getActionTime() failed due to an invalid action specified. " +
+ "Type: " + type + ", Name: " + name + ". Note that for contracts and operations, the " +
+ "name of the operation is case-sensitive.";
+ var actionId = this.getActionIdFromTypeAndName(type, name);
+ if (actionId == null) {
+ workerScript.log(errorLogText);
+ return -1;
+ }
+
+ var actionObj = this.getActionObject(actionId);
+ if (actionObj == null) {
+ workerScript.log(errorLogText);
+ return -1;
+ }
+
+ switch (actionId.type) {
+ case ActionTypes["Contract"]:
+ case ActionTypes["Operation"]:
+ case ActionTypes["BlackOp"]:
+ case ActionTypes["BlackOperation"]:
+ return actionObj.getActionTime(this);
+ case ActionTypes["Training"]:
+ case ActionTypes["Field Analysis"]:
+ case ActionTypes["FieldAnalysis"]:
+ return 30;
+ case ActionTypes["Recruitment"]:
+ return this.getRecruitmentTime();
+ default:
+ workerScript.log(errorLogText);
+ return -1;
+ }
+}
+
+Bladeburner.prototype.getActionEstimatedSuccessChanceNetscriptFn = function(type, name, workerScript) {
+ var errorLogText = "ERROR: Bladeburner.getActionEstimatedSuccessChance() failed due to an invalid action specified. " +
+ "Type: " + type + ", Name: " + name + ". Note that for contracts and operations, the " +
+ "name of the operation is case-sensitive.";
+ var actionId = this.getActionIdFromTypeAndName(type, name);
+ if (actionId == null) {
+ workerScript.log(errorLogText);
+ return -1;
+ }
+
+ var actionObj = this.getActionObject(actionId);
+ if (actionObj == null) {
+ workerScript.log(errorLogText);
+ return -1;
+ }
+
+ switch (actionId.type) {
+ case ActionTypes["Contract"]:
+ case ActionTypes["Operation"]:
+ case ActionTypes["BlackOp"]:
+ case ActionTypes["BlackOperation"]:
+ return actionObj.getSuccessChance(this);
+ case ActionTypes["Training"]:
+ case ActionTypes["Field Analysis"]:
+ case ActionTypes["FieldAnalysis"]:
+ return 1;
+ case ActionTypes["Recruitment"]:
+ return this.getRecruitmentSuccessChance();
+ default:
+ workerScript.log(errorLogText);
+ return -1;
+ }
+}
+
+Bladeburner.prototype.getActionCountRemainingNetscriptFn = function(type, name, workerScript) {
+ var errorLogText = "ERROR: Bladeburner.getActionCountRemaining() failed due to an invalid action specified. " +
+ "Type: " + type + ", Name: " + name + ". Note that for contracts and operations, the " +
+ "name of the operation is case-sensitive.";
+ var actionId = this.getActionIdFromTypeAndName(type, name);
+ if (actionId == null) {
+ workerScript.log(errorLogText);
+ return -1;
+ }
+
+ var actionObj = this.getActionObject(actionId);
+ if (actionObj == null) {
+ workerScript.log(errorLogText);
+ return -1;
+ }
+
+ switch (actionId.type) {
+ case ActionTypes["Contract"]:
+ case ActionTypes["Operation"]:
+ case ActionTypes["BlackOp"]:
+ case ActionTypes["BlackOperation"]:
+ return actionObj.count;
+ case ActionTypes["Training"]:
+ case ActionTypes["Field Analysis"]:
+ case ActionTypes["FieldAnalysis"]:
+ return Infinity;
+ default:
+ workerScript.log(errorLogText);
+ return -1;
+ }
+}
+
+Bladeburner.prototype.getSkillLevelNetscriptFn = function(skillName, workerScript) {
+ var errorLogText = "ERROR: Bladeburner.getSkillLevel() failed due to an invalid skill specified: " +
+ skillName + ". Note that the name of the skill is case-sensitive";
+
+ if (skillName === "") {
+ //If skill name isn't specified, return an object with all of the player's skill levels
+ let copy = Object.assign({}, this.Skills);
+ return copy;
+ }
+
+ if (!Skills.hasOwnProperty(skillName)) {
+ workerScript.log(errorLogText);
+ return -1;
+ }
+
+ return Skills[skillName];
+}
+
+Bladeburner.prototype.upgradeSkillNetscriptFn = function(skillName, workerScript) {
+ var errorLogText = "ERROR: Bladeburner.upgradeSkill() failed due to an invalid skill specified: " +
+ skillName + ". Note that the name of the skill is case-sensitive";
+ if (!Skills.hasOwnProperty(skillName)) {
+ workerScript.log(errorLogText);
+ return false;
+ }
+
+ var skill = Skills[skillName];
+ var currentLevel = 0;
+ if (this.skills[skillName] && !isNaN(this.skills[skillName])) {
+ currentLevel = this.skills[skillName];
+ }
+ var cost = skill.baseCost + (currentLevel * skill.costInc);
+
+ if (this.skillPoints < cost) {
+ if (workerScript.shouldLog("upgradeSkill")) {
+ workerScript.log("Bladeburner.upgradeSkill() failed because you do not have enough " +
+ "skill points to upgrade " + skillName + " (You have " +
+ this.skillPoints + ", you need " + cost + ")");
+ }
+ return false;
+ }
+
+ this.skillPoints -= cost;
+ this.upgradeSkill(skill);
+ if (_engine_js__WEBPACK_IMPORTED_MODULE_2__["Engine"].currentPage === _engine_js__WEBPACK_IMPORTED_MODULE_2__["Engine"].Page.Bladeburner && DomElems.currentTab.toLowerCase() === "skills") {
+ this.createActionAndSkillsContent();
+ }
+ if (workerScript.shouldLog("upgradeSkill")) {
+ workerScript.log(skillName + " successfully upgraded to level " + this.skills[skillName]);
+ }
+ return true;
+}
+
+Bladeburner.prototype.getTeamSizeNetscriptFn = function(type, name, workerScript) {
+ if (type === "" && name === "") {
+ return this.teamSize;
+ }
+
+ var errorLogText = "ERROR: Bladeburner.getTeamSize() failed due to an invalid action specified. " +
+ "Type: " + type + ", Name: " + name + ". Note that for contracts and operations, the " +
+ "name of the operation is case-sensitive.";
+
+ var actionId = this.getActionIdFromTypeAndName(type, name);
+ if (actionId == null) {
+ workerScript.log(errorLogText);
+ return -1;
+ }
+
+ var actionObj = this.getActionObject(actionId);
+ if (actionObj == null) {
+ workerScript.log(errorLogText);
+ return -1;
+ }
+
+ if (actionId.type === ActionTypes["Operation"] ||
+ actionId.type === ActionTypes["BlackOp"] ||
+ actionId.type === ActionTypes["BlackOperation"]) {
+ return actionObj.teamCount;
+ } else {
+ return 0;
+ }
+}
+
+Bladeburner.prototype.setTeamSizeNetscriptFn = function(type, name, size, workerScript) {
+ var errorLogText = "ERROR: Bladeburner.setTeamSize() failed due to an invalid action specified. " +
+ "Type: " + type + ", Name: " + name + ". Note that for contracts and operations, the " +
+ "name of the operation is case-sensitive.";
+ var actionId = this.getActionIdFromTypeAndName(type, name);
+ if (actionId == null) {
+ workerScript.log(errorLogText);
+ return -1;
+ }
+
+ if (actionId.type !== ActionTypes["Operation"] ||
+ actionId.type !== ActionTypes["BlackOp"] ||
+ actionId.type !== ActionTypes["BlackOperation"]) {
+ workerScript.log("ERROR: Bladeburner.setTeamSize() failed. This function " +
+ "only works for Operations and BlackOps");
+ return -1;
+ }
+
+ var actionObj = this.getActionObject(actionId);
+ if (actionObj == null) {
+ workerScript.log(errorLogText);
+ return -1;
+ }
+
+ var sanitizedSize = Math.round(size);
+ if (isNaN(sanitizedSize)) {
+ workerScript.log("ERROR: Bladeburner.setTeamSize() failed due to an invalid 'size' argument: " + size);
+ return -1;
+ }
+ if (this.teamSize < sanitizedSize) {sanitizedSize = this.teamSize;}
+ actionObj.teamCount = sanitizedSize;
+ if (workerScript.shouldLog("setTeamSize")) {
+ workerScript.log("Team size for " + name + " set to " + sanitizedSize);
+ }
+ return sanitizedSize;
+}
+
+Bladeburner.prototype.getCityEstimatedPopulationNetscriptFn = function(cityName, workerScript) {
+ if (!this.cities.hasOwnProperty(cityName)) {
+ workerScript.log("ERROR: Bladeburner.getCityEstimatedPopulation() failed because the specified " +
+ "city was invalid: " + cityName + ". Note that this city argument is case-sensitive");
+ return -1;
+ }
+ return this.cities[cityName].popEst;
+}
+
+Bladeburner.prototype.getCityEstimatedCommunitiesNetscriptFn = function(cityName, workerScript) {
+ if (!this.cities.hasOwnProperty(cityName)) {
+ workerScript.log("ERROR: Bladeburner.getCityEstimatedCommunities() failed because the specified " +
+ "city was invalid: " + cityName + ". Note that this city argument is case-sensitive");
+ return -1;
+ }
+ return this.cities[cityName].commsEst;
+}
+
+Bladeburner.prototype.getCityChaosNetscriptFn = function(cityName, workerScript) {
+ if (!this.cities.hasOwnProperty(cityName)) {
+ workerScript.log("ERROR: Bladeburner.getCityChaos() failed because the specified " +
+ "city was invalid: " + cityName + ". Note that this city argument is case-sensitive");
+ return -1;
+ }
+ return this.cities[cityName].chaos;
+}
+
+Bladeburner.prototype.switchCityNetscriptFn = function(cityName, workerScript) {
+ if (!this.cities.hasOwnProperty(cityName)) {
+ workerScript.log("ERROR: Bladeburner.switchCity() failed because the specified " +
+ "city was invalid: " + cityName + ". Note that this city argument is case-sensitive");
+ return false;
+ }
+ this.city = cityName;
+ return true;
+}
+
+Bladeburner.prototype.joinBladeburnerFactionNetscriptFn = function(workerScript) {
+ var bladeburnerFac = _Faction_js__WEBPACK_IMPORTED_MODULE_3__["Factions"]["Bladeburners"];
+ if (bladeburnerFac.isMember) {
+ return true;
+ } else if (this.rank >= RankNeededForFaction) {
+ Object(_Faction_js__WEBPACK_IMPORTED_MODULE_3__["joinFaction"])(bladeburnerFac);
+ if (workerScript.shouldLog("joinBladeburnerFaction")) {
+ workerScript.log("Joined Bladeburners Faction");
+ }
+ if (_engine_js__WEBPACK_IMPORTED_MODULE_2__["Engine"].currentPage === _engine_js__WEBPACK_IMPORTED_MODULE_2__["Engine"].Page.Bladeburner) {
+ Object(_utils_HelperFunctions_js__WEBPACK_IMPORTED_MODULE_9__["removeChildrenFromElement"])(DomElems.overviewDiv);
+ this.createOverviewContent();
+ }
+ return true;
+ } else {
+ if (workerScript.shouldLog("joinBladeburnerFaction")) {
+ workerScript.log("Failed to join Bladeburners Faction because " +
+ "you do not have the required " + RankNeededForFaction + " rank");
+ }
+ return false;
+ }
+}
Bladeburner.prototype.toJSON = function() {
- return Object(_utils_JSONReviver_js__WEBPACK_IMPORTED_MODULE_9__["Generic_toJSON"])("Bladeburner", this);
+ return Object(_utils_JSONReviver_js__WEBPACK_IMPORTED_MODULE_10__["Generic_toJSON"])("Bladeburner", this);
}
Bladeburner.fromJSON = function(value) {
- return Object(_utils_JSONReviver_js__WEBPACK_IMPORTED_MODULE_9__["Generic_fromJSON"])(Bladeburner, value.data);
+ return Object(_utils_JSONReviver_js__WEBPACK_IMPORTED_MODULE_10__["Generic_fromJSON"])(Bladeburner, value.data);
}
-_utils_JSONReviver_js__WEBPACK_IMPORTED_MODULE_9__["Reviver"].constructors.Bladeburner = Bladeburner;
+_utils_JSONReviver_js__WEBPACK_IMPORTED_MODULE_10__["Reviver"].constructors.Bladeburner = Bladeburner;
//This initialized Bladeburner-related data that is NOT saved/loaded
// eg: Skill Objects, BLack Operations
@@ -29304,7 +29458,7 @@ function initBladeburner() {
Skills[SkillNames.Overclock] = new Skill({
name:SkillNames.Overclock,
desc:"Each level of this skill decreases the time it takes " +
- "to attempt a contract or operation by 1% (Max Level: 99)",
+ "to attempt a contract or operation by 1% (Max Level: 95)",
baseCost:5, costInc:1, maxLvl:95,
actionTime:1
});
@@ -29390,7 +29544,7 @@ function initBladeburner() {
"Zenyatta and RedWater by any means necessary. After the task " +
"is completed, the actions must be covered up from the general public.",
baseDifficulty:2000, reqdRank:2.5e3,
- rankGain:25, rankLoss:10, hpLoss:100,
+ rankGain:50, rankLoss:10, hpLoss:100,
weights:{hack:0.1,str:0.2,def:0.2,dex:0.2,agi:0.2,cha:0, int:0.1},
decays:{hack:0.6,str:0.8,def:0.8,dex:0.8,agi:0.8,cha:0, int:0.75},
isKill:true
@@ -29407,7 +29561,7 @@ function initBladeburner() {
"fabricated as a last resort. Be warned that AeroCorp has some of " +
"the most advanced security measures in the world.",
baseDifficulty:2500, reqdRank:5e3,
- rankGain:30, rankLoss:15, hpLoss:50,
+ rankGain:60, rankLoss:15, hpLoss:50,
weights:{hack:0.2,str:0.15,def:0.15,dex:0.2,agi:0.2,cha:0, int:0.1},
decays:{hack:0.6,str:0.8,def:0.8,dex:0.8,agi:0.8,cha:0, int:0.75},
isStealth:true
@@ -29426,7 +29580,7 @@ function initBladeburner() {
"investigate the sewer systems, and eliminate Samizdat. They must " +
"never publish anything again.",
baseDifficulty:3000, reqdRank:7.5e3,
- rankGain:30, rankLoss:15, hpLoss:100,
+ rankGain:75, rankLoss:15, hpLoss:100,
weights:{hack:0.1,str:0.2,def:0.2,dex:0.2,agi:0.2,cha:0, int:0.1},
decays:{hack:0.6,str:0.8,def:0.8,dex:0.8,agi:0.8,cha:0, int:0.75},
isKill:true
@@ -29444,7 +29598,7 @@ function initBladeburner() {
"also to destroy any information or research at the facility that " +
"is relevant to the Synthoids and their goals.",
baseDifficulty:4000, reqdRank:10e3,
- rankGain:40, rankLoss:20, hpLoss:100,
+ rankGain:100, rankLoss:20, hpLoss:100,
weights:{hack:0.1,str:0.2,def:0.2,dex:0.2,agi:0.2,cha:0, int:0.1},
decays:{hack:0.6,str:0.8,def:0.8,dex:0.8,agi:0.8,cha:0, int:0.75},
isKill:true
@@ -29458,7 +29612,7 @@ function initBladeburner() {
"that this deal does not happen.
" +
"Your task is to intercept the deal. Leave no survivors.",
baseDifficulty:5000, reqdRank:12.5e3,
- rankGain:40, rankLoss:20, hpLoss:200,
+ rankGain:125, rankLoss:20, hpLoss:200,
weights:{hack:0,str:0.25,def:0.25,dex:0.25,agi:0.25,cha:0, int:0},
decays:{hack:0,str:0.8,def:0.8,dex:0.8,agi:0.8,cha:0, int:0.75},
isKill:true
@@ -29473,7 +29627,7 @@ function initBladeburner() {
"the Red Rabbit brothel. Try to limit the number of other casualties, " +
"but do what you must to complete the mission.",
baseDifficulty:7500, reqdRank:15e3,
- rankGain:50, rankLoss:20, hpLoss:25,
+ rankGain:200, rankLoss:20, hpLoss:25,
weights:{hack:0,str:0.2,def:0.2,dex:0.3,agi:0.3,cha:0, int:0},
decays:{hack:0,str:0.8,def:0.8,dex:0.8,agi:0.8,cha:0, int:0.75},
isKill:true,
@@ -29490,7 +29644,7 @@ function initBladeburner() {
"have thus enlisted our help.
" +
"Your mission is to eradicate Juggernaut and his followers.",
baseDifficulty:10e3, reqdRank:20e3,
- rankGain:75, rankLoss:40, hpLoss:300,
+ rankGain:300, rankLoss:40, hpLoss:300,
weights:{hack:0,str:0.25,def:0.25,dex:0.25,agi:0.25,cha:0, int:0},
decays:{hack:0,str:0.8,def:0.8,dex:0.8,agi:0.8,cha:0, int:0.75},
isKill:true,
@@ -29506,7 +29660,7 @@ function initBladeburner() {
"in Los Angeles. Intelligence tells us that their base houses " +
"one of their Synthoid manufacturing units.",
baseDifficulty:12.5e3, reqdRank:25e3,
- rankGain:100, rankLoss:50, hpLoss:500,
+ rankGain:500, rankLoss:50, hpLoss:500,
weights:{hack:0.05,str:0.2,def:0.2,dex:0.25,agi:0.25,cha:0, int:0.05},
decays:{hack:0.6,str:0.8,def:0.8,dex:0.8,agi:0.8,cha:0, int:0.75},
isKill:true,
@@ -29526,7 +29680,7 @@ function initBladeburner() {
"operation. Your goal is to destroy this technology and eliminate" +
"anyone who was involved in its creation.",
baseDifficulty:15e3, reqdRank:30e3,
- rankGain:120, rankLoss:60, hpLoss:1000,
+ rankGain:750, rankLoss:60, hpLoss:1000,
weights:{hack:0.05,str:0.2,def:0.2,dex:0.25,agi:0.25,cha:0, int:0.05},
decays:{hack:0.6,str:0.8,def:0.8,dex:0.8,agi:0.8,cha:0, int:0.75},
isKill:true
@@ -29541,7 +29695,7 @@ function initBladeburner() {
"The goal of Operation Deckard is to hunt down these Synthoids and retire " +
"them. I don't need to tell you how critical this mission is.",
baseDifficulty:20e3, reqdRank:40e3,
- rankGain:150, rankLoss:75, hpLoss:200,
+ rankGain:1e3, rankLoss:75, hpLoss:200,
weights:{hack:0,str:0.24,def:0.24,dex:0.24,agi:0.24,cha:0, int:0.04},
decays:{hack:0,str:0.8,def:0.8,dex:0.8,agi:0.8,cha:0, int:0.75},
isKill:true,
@@ -29557,7 +29711,7 @@ function initBladeburner() {
"with Augmentations. Your task is to hunt down the associated Dark Army " +
"members and eliminate them.",
baseDifficulty:25e3, reqdRank:50e3,
- rankGain:200, rankLoss:100, hpLoss:500,
+ rankGain:1.5e3, rankLoss:100, hpLoss:500,
weights:{hack:0.1,str:0.2,def:0.2,dex:0.2,agi:0.2,cha:0, int:0.1},
decays:{hack:0.6,str:0.8,def:0.8,dex:0.8,agi:0.8,cha:0, int:0.75},
isKill:true,
@@ -29576,7 +29730,7 @@ function initBladeburner() {
"The goal of Operation Wallace is to destroy the Dark Army and " +
"Syndicate factions in Aevum immediately. Leave no survivors.",
baseDifficulty:30e3, reqdRank:75e3,
- rankGain:500, rankLoss:150, hpLoss:1500,
+ rankGain:2e3, rankLoss:150, hpLoss:1500,
weights:{hack:0,str:0.24,def:0.24,dex:0.24,agi:0.24,cha:0, int:0.04},
decays:{hack:0.6,str:0.8,def:0.8,dex:0.8,agi:0.8,cha:0, int:0.75},
isKill:true
@@ -29592,7 +29746,7 @@ function initBladeburner() {
"successfully return. In the event of failure, all of the operation's " +
"team members must not let themselves be captured alive.",
baseDifficulty:35e3, reqdRank:100e3,
- rankGain:1e3, rankLoss:500, hpLoss:1500,
+ rankGain:2.5e3, rankLoss:500, hpLoss:1500,
weights:{hack:0.1,str:0.2,def:0.2,dex:0.2,agi:0.2,cha:0, int:0.1},
decays:{hack:0.6,str:0.8,def:0.8,dex:0.8,agi:0.8,cha:0, int:0.75},
isStealth:true
@@ -29614,7 +29768,7 @@ function initBladeburner() {
"Infiltrate the compound, delete and destroy the work, and then find and kill the " +
"project lead.",
baseDifficulty:40e3, reqdRank:125e3,
- rankGain:2e3, rankLoss:1e3, hpLoss:500,
+ rankGain:3e3, rankLoss:1e3, hpLoss:500,
weights:{hack:0.1,str:0.2,def:0.2,dex:0.2,agi:0.2,cha:0, int:0.1},
decays:{hack:0.6,str:0.8,def:0.8,dex:0.8,agi:0.8,cha:0, int:0.75},
isKill:true
@@ -29631,7 +29785,7 @@ function initBladeburner() {
"The mission is to destroy this broadcast tower. Speed and " +
"stealth are of the upmost important for this.",
baseDifficulty:45e3, reqdRank:150e3,
- rankGain:5e3, rankLoss:1e3, hpLoss:100,
+ rankGain:4e3, rankLoss:1e3, hpLoss:100,
weights:{hack:0.05,str:0.15,def:0.15,dex:0.3,agi:0.3,cha:0, int:0.05},
decays:{hack:0.6,str:0.8,def:0.8,dex:0.8,agi:0.8,cha:0, int:0.75},
isStealth:true
@@ -29660,7 +29814,7 @@ function initBladeburner() {
"'The Covenant'. We have no prior intelligence about this " +
"organization, so you are going in blind.",
baseDifficulty:55e3, reqdRank:200e3,
- rankGain:5e3, rankLoss:1e3, hpLoss:10e3,
+ rankGain:7.5e3, rankLoss:1e3, hpLoss:10e3,
weights:{hack:0,str:0.24,def:0.24,dex:0.24,agi:0.24,cha:0, int:0.04},
decays:{hack:0.6,str:0.8,def:0.8,dex:0.8,agi:0.8,cha:0, int:0.75},
isKill:true
@@ -29723,168 +29877,299 @@ function initBladeburner() {
-/* WEBPACK VAR INJECTION */}.call(this, __webpack_require__(/*! jquery */ 39)))
+/* WEBPACK VAR INJECTION */}.call(this, __webpack_require__(40)))
/***/ }),
-/* 28 */
-/*!****************************!*\
- !*** ./src/FactionInfo.js ***!
- \****************************/
+/* 27 */
/***/ (function(module, __webpack_exports__, __webpack_require__) {
"use strict";
__webpack_require__.r(__webpack_exports__);
-/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "FactionInfo", function() { return FactionInfo; });
-//Contains the "information" property for all the Factions, which is just a description
-//of each faction
-let FactionInfo = {
- //Endgame
- IlluminatiInfo: "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. ",
-
- DaedalusInfo: "Yesterday we obeyed kings and bent our necks to emperors. Today we kneel only to truth.",
-
- CovenantInfo: "Surrender yourself. Give up your empty individuality to become part of something great, something eternal. " +
- "Become a slave. Submit your mind, body, and soul. Only then can you set yourself free.
" +
- "Only then can you discover immortality.",
-
- //Megacorporations, each forms its own faction
- ECorpInfo: "ECorp's mission is simple: to connect the world of today with the technology of tomorrow. " +
- "With our wide range of Internet-related software and commercial hardware, ECorp makes the world's " +
- "information universally accessible.",
-
- MegaCorpInfo: "MegaCorp does things that others don't. We imagine. We create. We invent. We build things that " +
- "others have never even dreamed of. Our work fills the world's needs for food, water, power, and " +
- "transporation on an unprecendented scale, in ways that no other company can.
" +
- "In our labs and factories and on the ground with customers, MegaCorp is ushering in a new era for the world.",
-
- BachmanAndAssociatesInfo: "Where Law and Business meet - thats where we are.
" +
- "Legal Insight - Business Instinct - Experience Innovation",
-
- BladeIndustriesInfo: "Augmentation is salvation",
-
- NWOInfo: "The human being does not truly desire freedom. It wants " +
- "to be observed, understood, and judged. It wants to be given purpose and " +
- "direction in its life. That is why humans created God. " +
- "And that is why humans created civilization - " +
- "not because of willingness, " +
- "but because of a need to be incorporated into higher orders of structure and meaning.",
-
- ClarkeIncorporatedInfo: "Unlocking the power of the genome",
-
- OmniTekIncorporatedInfo: "Simply put, our mission is to design and build robots that make a difference",
-
- FourSigmaInfo: "The scientific method is the best way to approach investing. Big strategies backed up with big data. Driven by " +
- "deep learning and innovative ideas. And improved by iteration. That's Four Sigma.",
-
- KuaiGongInternationalInfo: "Dream big. Work hard. Make history.",
-
- //Other Corporations
- FulcrumSecretTechnologiesInfo: "The human organism has an innate desire to worship. " +
- "That is why they created gods. If there were no gods, " +
- "it would be necessary to create them. And now we can.",
-
- //Hacker groups
- BitRunnersInfo: "Our entire lives are controlled by bits. All of our actions, our thoughts, our personal information. "+
- "It's all transformed into bits, stored in bits, communicated through bits. It’s impossible for any person " +
- "to move, to live, to operate at any level without the use of bits. " +
- "And when a person moves, lives, and operates, they leave behind their bits, mere traces of seemingly " +
- "meaningless fragments of information. But these bits can be reconstructed. Transformed. Used.
" +
- "Those who run the bits, run the world",
+/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "determineCrimeSuccess", function() { return determineCrimeSuccess; });
+/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "findCrime", function() { return findCrime; });
+/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "Crimes", function() { return Crimes; });
+/* harmony import */ var _Constants_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(3);
+/* harmony import */ var _Player_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(0);
+/* harmony import */ var _utils_DialogBox_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(7);
- BlackHandInfo: "The world, so afraid of strong government, now has no government. Only power - Digital power. Financial power. " +
- "Technological power. " +
- "And those at the top rule with an invisible hand. They built a society where the rich get richer, " +
- "and everyone else suffers.
" +
- "So much pain. So many lives. Their darkness must end.",
- NiteSecInfo:
-" __..__
" +
-" _.nITESECNIt.
" +
-" .-'NITESECNITESEc.
" +
-" .' NITESECNITESECn
" +
-" / NITESECNITESEC;
" +
-" : :NITESECNITESEC;
" +
-" ; $ NITESECNITESECN
" +
-" : _, ,N'ITESECNITESEC
" +
-" : .+^^`, : `NITESECNIT
" +
-" ) /), `-,-=,NITESECNI
" +
-" / ^ ,-;|NITESECN;
" +
-" / _.' '-';NITESECN
" +
-" ( , ,-''`^NITE'
" +
-" )` :`. .'
" +
-" )-- ; `- /
" +
-" \' _.-' :
" +
-" ( _.-' \. \
" +
-" \------. \ \
" +
-" \. \ \
" +
-" \ _.nIt
" +
-" \ _.nITESECNi
" +
-" nITESECNIT^' \
" +
-" NITE^' ___ \
" +
-" / .gP''''Tp. \
" +
-" : d' . `b \
" +
-" ; d' o `b ;
" +
-" / d; `b|
" +
-" /, $; @ `:
" +
-" /' $$ ;
" +
-" .' $$b o |
" +
-" .' d$$$; :
" +
-" / .d$$$$; , ;
" +
-" d .dNITESEC $ |
" +
-" :bp.__.gNITESEC$$ :$ ;
" +
-" NITESECNITESECNIT $$b :
",
- //City factions, essentially governments
- ChongqingInfo: "Serve the people",
- Sector12Info: "The City of the Future",
- HongKongInfo: "Asia's World City",
- AevumInfo: "The Silicon City",
- IshimaInfo: "The East Asian Order of the Future",
- VolhavenInfo: "Benefit, Honour, and Glory",
- //Criminal Organizations/Gangs
- SpeakersForTheDeadInfo: "It is better to reign in hell than to serve in heaven.",
+function Crime(name, type, time, money, difficulty, karma, params) {
+ this.name = name;
+ this.type = type;
+ this.time = time;
+ this.money = money;
+ this.difficulty = difficulty;
+ this.karma = karma;
- DarkArmyInfo: "The World doesn't care about right or wrong. It's all about power.",
+ this.hacking_success_weight = params.hacking_success_weight ? params.hacking_success_weight : 0;
+ this.strength_success_weight = params.strength_success_weight ? params.strength_success_weight : 0;
+ this.defense_success_weight = params.defense_success_weight ? params.defense_success_weight : 0;
+ this.dexterity_success_weight = params.dexterity_success_weight ? params.dexterity_success_weight : 0;
+ this.agility_success_weight = params.agility_success_weight ? params.agility_success_weight : 0;
+ this.charisma_success_weight = params.charisma_success_weight ? params.charisma_success_weight : 0;
- TheSyndicateInfo: "Honor holds you back",
+ this.hacking_exp = params.hacking_exp ? params.hacking_exp : 0;
+ this.strength_exp = params.strength_exp ? params.strength_exp : 0;
+ this.defense_exp = params.defense_exp ? params.defense_exp : 0;
+ this.dexterity_exp = params.dexterity_exp ? params.dexterity_exp : 0;
+ this.agility_exp = params.agility_exp ? params.agility_exp : 0;
+ this.charisma_exp = params.charisma_exp ? params.charisma_exp : 0;
+ this.intelligence_exp = params.intelligence_exp ? params.intelligence_exp : 0;
- SilhouetteInfo: "Corporations have filled the void of power left behind by the collapse of Western government. The issue is they've become so big " +
- "that you don't know who they're working for. And if you're employed at one of these corporations, you don't even know who you're working " +
- "for.\n\n" +
- "That's terror. Terror, fear, and corruption. All born into the system, all propagated by the system.",
+ this.kills = params.kills ? params.kills : 0;
+}
- TetradsInfo: "Following the Mandate of Heaven and Carrying out the Way",
+Crime.prototype.commit = function(div=1, singParams=null) {
+ if (div <= 0) {div = 1;}
+ _Player_js__WEBPACK_IMPORTED_MODULE_1__["Player"].crimeType = this.type;
+ _Player_js__WEBPACK_IMPORTED_MODULE_1__["Player"].startCrime(
+ this.hacking_exp/div,
+ this.strength_exp/div,
+ this.defense_exp/div,
+ this.dexterity_exp/div,
+ this.agility_exp/div,
+ this.charisma_exp/div,
+ this.money/div, this.time, singParams);
+ return this.time;
+}
- SlumSnakesInfo: "Slum Snakes rule!",
+Crime.prototype.successRate = function() {
+ var chance = (this.hacking_success_weight * _Player_js__WEBPACK_IMPORTED_MODULE_1__["Player"].hacking_skill +
+ this.strength_success_weight * _Player_js__WEBPACK_IMPORTED_MODULE_1__["Player"].strength +
+ this.defense_success_weight * _Player_js__WEBPACK_IMPORTED_MODULE_1__["Player"].defense +
+ this.dexterity_success_weight * _Player_js__WEBPACK_IMPORTED_MODULE_1__["Player"].dexterity +
+ this.agility_success_weight * _Player_js__WEBPACK_IMPORTED_MODULE_1__["Player"].agility +
+ this.charisma_success_weight * _Player_js__WEBPACK_IMPORTED_MODULE_1__["Player"].charisma +
+ _Constants_js__WEBPACK_IMPORTED_MODULE_0__["CONSTANTS"].IntelligenceCrimeWeight * _Player_js__WEBPACK_IMPORTED_MODULE_1__["Player"].intelligence);
+ chance /= _Constants_js__WEBPACK_IMPORTED_MODULE_0__["CONSTANTS"].MaxSkillLevel;
+ chance /= this.difficulty;
+ chance *= _Player_js__WEBPACK_IMPORTED_MODULE_1__["Player"].crime_success_mult;
+ return Math.min(chance, 1);
+}
- //Earlygame factions - factions the player will prestige with early on that don't
- //belong in other categories
- NetburnersInfo: "~~//*>H4CK|\|3T 8URN3R5**>?>\\~~",
+const Crimes = {
+ Shoplift: new Crime("Shoplift", _Constants_js__WEBPACK_IMPORTED_MODULE_0__["CONSTANTS"].CrimeShoplift, 2e3, 15e3, 1/20, 0.1, {
+ dexterity_success_weight: 1,
+ agility_success_weight: 1,
- TianDiHuiInfo: "Obey Heaven and Work Righteousness",
+ dexterity_exp: 2,
+ agility_exp: 2,
+ }),
- CyberSecInfo: "The Internet is the first thing that humanity has built that humanity doesn’t understand, " +
- "the largest experiment in anarchy that we have ever had. And as the world becomes increasingly " +
- "dominated by the internet, society approaches the brink of total chaos. " +
- "We serve only to protect society, to protect humanity, to protect the world from its imminent collapse.",
+ RobStore: new Crime("Rob Store", _Constants_js__WEBPACK_IMPORTED_MODULE_0__["CONSTANTS"].CrimeRobStore, 60e3, 400e3, 1/5, 0.5, {
+ hacking_exp: 30,
+ dexterity_exp: 45,
+ agility_exp: 45,
- //Special Factions
- BladeburnersInfo: "It's too bad they won't live. But then again, who does?
" +
- "Note that for this faction, reputation can only be gained through Bladeburner actions. Completing " +
- "Bladeburner contracts/operations will increase your reputation.",
+ hacking_success_weight: 0.5 ,
+ dexterity_success_weight: 2,
+ agility_success_weight: 1,
+
+ intelligence_exp: 0.25 * _Constants_js__WEBPACK_IMPORTED_MODULE_0__["CONSTANTS"].IntelligenceCrimeBaseExpGain,
+ }),
+
+ Mug: new Crime("Mug", _Constants_js__WEBPACK_IMPORTED_MODULE_0__["CONSTANTS"].CrimeMug, 4e3, 36e3, 1/5, 0.25, {
+ strength_exp: 3,
+ defense_exp: 3,
+ dexterity_exp: 3,
+ agility_exp: 3,
+
+ strength_success_weight: 1.5,
+ defense_success_weight: 0.5,
+ dexterity_success_weight: 1.5,
+ agility_success_weight: 0.5,
+ }),
+
+ Larceny: new Crime("Larceny", _Constants_js__WEBPACK_IMPORTED_MODULE_0__["CONSTANTS"].CrimeLarceny, 90e3, 800e3, 1/3, 1.5, {
+ hacking_exp: 45,
+ dexterity_exp: 60,
+ agility_exp: 60,
+
+ hacking_skill_success_weight: 0.5,
+ dexterity_success_weight: 1,
+ agility_success_weight: 1,
+
+ intelligence_exp: 0.5 * _Constants_js__WEBPACK_IMPORTED_MODULE_0__["CONSTANTS"].IntelligenceCrimeBaseExpGain,
+ }),
+
+ DealDrugs: new Crime("Deal Drugs", _Constants_js__WEBPACK_IMPORTED_MODULE_0__["CONSTANTS"].CrimeDrugs, 10e3, 120e3, 1, 0.5, {
+ dexterity_exp: 5,
+ agility_exp: 5,
+ charisma_exp: 10,
+
+ charisma_success_weight: 3,
+ dexterity_success_weight: 2,
+ agility_success_weight: 1,
+ }),
+
+ BondForgery: new Crime("Bond Forgery", _Constants_js__WEBPACK_IMPORTED_MODULE_0__["CONSTANTS"].CrimeBondForgery, 300e3, 4.5e6, 1/2, 0.1, {
+ hacking_exp: 100,
+ dexterity_exp: 150,
+ charisma_exp: 15,
+
+ hacking_skill_success_weight: 0.05,
+ dexterity_success_weight: 1.25,
+
+ intelligence_exp: 2 * _Constants_js__WEBPACK_IMPORTED_MODULE_0__["CONSTANTS"].IntelligenceCrimeBaseExpGain,
+ }),
+
+ TraffickArms: new Crime("Traffick Arms", _Constants_js__WEBPACK_IMPORTED_MODULE_0__["CONSTANTS"].CrimeTraffickArms, 40e3, 600e3, 2, 1, {
+ strength_exp: 20,
+ defense_exp: 20,
+ dexterity_exp: 20,
+ agility_exp: 20,
+ charisma_exp: 40,
+
+ charisma_success_weight: 1,
+ strength_success_weight: 1,
+ defense_success_weight: 1,
+ dexterity_success_weight: 1,
+ agility_success_weight: 1,
+ }),
+
+ Homicide: new Crime("Homicide", _Constants_js__WEBPACK_IMPORTED_MODULE_0__["CONSTANTS"].CrimeHomicide, 3e3, 45e3, 1, 3, {
+ strength_exp: 2,
+ defense_exp: 2,
+ dexterity_exp: 2,
+ agility_exp: 2,
+
+ strength_success_weight: 2,
+ defense_success_weight: 2,
+ dexterity_success_weight: 0.5,
+ agility_success_weight: 0.5,
+
+ kills: 1,
+ }),
+
+ GrandTheftAuto: new Crime("Grand Theft Auto", _Constants_js__WEBPACK_IMPORTED_MODULE_0__["CONSTANTS"].CrimeGrandTheftAuto, 80e3, 1.6e6, 8, 5, {
+ strength_exp: 20,
+ defense_exp: 20,
+ dexterity_exp: 20,
+ agility_exp: 80,
+ charisma_exp: 40,
+
+ hacking_skill_success_weight: 1,
+ strength_success_weight: 1,
+ dexterity_success_weight: 4,
+ agility_success_weight: 2,
+ charisma_success_weight: 2,
+
+ intelligence_exp: _Constants_js__WEBPACK_IMPORTED_MODULE_0__["CONSTANTS"].IntelligenceCrimeBaseExpGain,
+ }),
+
+ Kidnap: new Crime("Kidnap", _Constants_js__WEBPACK_IMPORTED_MODULE_0__["CONSTANTS"].CrimeKidnap, 120e3, 3.6e6, 5, 6, {
+ strength_exp: 80,
+ defense_exp: 80,
+ dexterity_exp: 80,
+ agility_exp: 80,
+ charisma_exp: 80,
+
+ charisma_success_weight: 1,
+ strength_success_weight: 1,
+ dexterity_success_weight: 1,
+ agility_success_weight: 1,
+
+ intelligence_exp: 2 * _Constants_js__WEBPACK_IMPORTED_MODULE_0__["CONSTANTS"].IntelligenceCrimeBaseExpGain,
+ }),
+
+ Assassination: new Crime("Assassination", _Constants_js__WEBPACK_IMPORTED_MODULE_0__["CONSTANTS"].CrimeAssassination, 300e3, 12e6, 8, 10, {
+ strength_exp: 300,
+ defense_exp: 300,
+ dexterity_exp: 300,
+ agility_exp: 300,
+
+ strength_success_weight: 1,
+ dexterity_success_weight: 2,
+ agility_success_weight: 1,
+
+ intelligence_exp: 5 * _Constants_js__WEBPACK_IMPORTED_MODULE_0__["CONSTANTS"].IntelligenceCrimeBaseExpGain,
+
+ kills: 1,
+ }),
+
+ Heist: new Crime("Heist", _Constants_js__WEBPACK_IMPORTED_MODULE_0__["CONSTANTS"].CrimeHeist, 600e3, 120e6, 18, 15, {
+ hacking_exp: 450,
+ strength_exp: 450,
+ defense_exp: 450,
+ dexterity_exp: 450,
+ agility_exp: 450,
+ charisma_exp: 450,
+
+ hacking_skill_success_weight: 1,
+ strength_success_weight: 1,
+ defense_success_weight: 1,
+ dexterity_success_weight: 1,
+ agility_success_weight: 1,
+ charisma_success_weight: 1,
+
+ intelligence_exp: 10 * _Constants_js__WEBPACK_IMPORTED_MODULE_0__["CONSTANTS"].IntelligenceCrimeBaseExpGain,
+ }),
+};
+
+function determineCrimeSuccess(type, moneyGained) {
+ var chance = 0;
+ var found = false;
+ for(const i in Crimes) {
+ const crime = Crimes[i];
+ if(crime.type == type) {
+ chance = crime.successRate();
+ found = true;
+ break;
+ }
+ }
+ if(!found) {
+ console.log(crime);
+ Object(_utils_DialogBox_js__WEBPACK_IMPORTED_MODULE_2__["dialogBoxCreate"])("ERR: Unrecognized crime type. This is probably a bug please contact the developer");
+ return;
+ }
+
+ if (Math.random() <= chance) {
+ //Success
+ _Player_js__WEBPACK_IMPORTED_MODULE_1__["Player"].gainMoney(moneyGained);
+ return true;
+ } else {
+ //Failure
+ return false;
+ }
+}
+
+function findCrime(roughName) {
+ if (roughName.includes("shoplift")) {
+ return Crimes.Shoplift;
+ } else if (roughName.includes("rob") && roughName.includes("store")) {
+ return Crimes.RobStore;
+ } else if (roughName.includes("mug")) {
+ return Crimes.Mug;
+ } else if (roughName.includes("larceny")) {
+ return Crimes.Larceny;
+ } else if (roughName.includes("drugs")) {
+ return Crimes.DealDrugs;
+ } else if (roughName.includes("bond") && roughName.includes("forge")) {
+ return Crimes.BondForgery;
+ } else if (roughName.includes("traffick") && roughName.includes("arms")) {
+ return Crimes.TraffickArms;
+ } else if (roughName.includes("homicide")) {
+ return Crimes.Homicide;
+ } else if (roughName.includes("grand") && roughName.includes("auto")) {
+ return Crimes.GrandTheftAuto;
+ } else if (roughName.includes("kidnap")) {
+ return Crimes.Kidnap;
+ } else if (roughName.includes("assassinate")) {
+ return Crimes.Assassination;
+ } else if (roughName.includes("heist")) {
+ return Crimes.Heist;
+ }
+ return null;
}
/***/ }),
-/* 29 */
-/*!************************!*\
- !*** ./src/Message.js ***!
- \************************/
+/* 28 */
/***/ (function(module, __webpack_exports__, __webpack_require__) {
"use strict";
@@ -29896,15 +30181,15 @@ __webpack_require__.r(__webpack_exports__);
/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "loadMessages", function() { return loadMessages; });
/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "initMessages", function() { return initMessages; });
/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "Message", function() { return Message; });
-/* harmony import */ var _Augmentations_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./Augmentations.js */ 19);
-/* harmony import */ var _CreateProgram_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./CreateProgram.js */ 14);
-/* harmony import */ var _Missions_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./Missions.js */ 34);
-/* harmony import */ var _Player_js__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./Player.js */ 0);
-/* harmony import */ var _RedPill_js__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ./RedPill.js */ 45);
-/* harmony import */ var _Server_js__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ./Server.js */ 10);
-/* harmony import */ var _Settings_js__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! ./Settings.js */ 23);
-/* harmony import */ var _utils_DialogBox_js__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! ../utils/DialogBox.js */ 7);
-/* harmony import */ var _utils_JSONReviver_js__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! ../utils/JSONReviver.js */ 8);
+/* harmony import */ var _Augmentations_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(17);
+/* harmony import */ var _CreateProgram_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(13);
+/* harmony import */ var _Missions_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(33);
+/* harmony import */ var _Player_js__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(0);
+/* harmony import */ var _RedPill_js__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(38);
+/* harmony import */ var _Server_js__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(8);
+/* harmony import */ var _Settings_js__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(22);
+/* harmony import */ var _utils_DialogBox_js__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(7);
+/* harmony import */ var _utils_JSONReviver_js__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(9);
@@ -30099,10 +30384,7 @@ function initMessages() {
/***/ }),
-/* 30 */
-/*!**********************!*\
- !*** ./src/Alias.js ***!
- \**********************/
+/* 29 */
/***/ (function(module, __webpack_exports__, __webpack_require__) {
"use strict";
@@ -30115,7 +30397,7 @@ __webpack_require__.r(__webpack_exports__);
/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "substituteAliases", function() { return substituteAliases; });
/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "loadAliases", function() { return loadAliases; });
/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "loadGlobalAliases", function() { return loadGlobalAliases; });
-/* harmony import */ var _Terminal_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./Terminal.js */ 18);
+/* harmony import */ var _Terminal_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(19);
let Aliases = {};
@@ -30232,10 +30514,7 @@ function substituteAliases(origCommand) {
/***/ }),
-/* 31 */
-/*!***********************************!*\
- !*** ./src/NetscriptFunctions.js ***!
- \***********************************/
+/* 30 */
/***/ (function(module, __webpack_exports__, __webpack_require__) {
"use strict";
@@ -30249,41 +30528,43 @@ __webpack_require__.r(__webpack_exports__);
/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "hasCorporationSF", function() { return hasCorporationSF; });
/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "hasAISF", function() { return hasAISF; });
/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "hasBladeburnerSF", function() { return hasBladeburnerSF; });
-/* harmony import */ var _ActiveScriptsUI_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./ActiveScriptsUI.js */ 41);
-/* harmony import */ var _Augmentations_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./Augmentations.js */ 19);
-/* harmony import */ var _BitNode_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./BitNode.js */ 15);
-/* harmony import */ var _Crimes_js__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./Crimes.js */ 20);
-/* harmony import */ var _Bladeburner_js__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ./Bladeburner.js */ 27);
-/* harmony import */ var _Company_js__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ./Company.js */ 9);
-/* harmony import */ var _Constants_js__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! ./Constants.js */ 3);
-/* harmony import */ var _CreateProgram_js__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! ./CreateProgram.js */ 14);
-/* harmony import */ var _DarkWeb_js__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! ./DarkWeb.js */ 35);
-/* harmony import */ var _engine_js__WEBPACK_IMPORTED_MODULE_9__ = __webpack_require__(/*! ./engine.js */ 5);
-/* harmony import */ var _Faction_js__WEBPACK_IMPORTED_MODULE_10__ = __webpack_require__(/*! ./Faction.js */ 11);
-/* harmony import */ var _HacknetNode_js__WEBPACK_IMPORTED_MODULE_11__ = __webpack_require__(/*! ./HacknetNode.js */ 40);
-/* harmony import */ var _Location_js__WEBPACK_IMPORTED_MODULE_12__ = __webpack_require__(/*! ./Location.js */ 4);
-/* harmony import */ var _Message_js__WEBPACK_IMPORTED_MODULE_13__ = __webpack_require__(/*! ./Message.js */ 29);
-/* harmony import */ var _Missions_js__WEBPACK_IMPORTED_MODULE_14__ = __webpack_require__(/*! ./Missions.js */ 34);
-/* harmony import */ var _Player_js__WEBPACK_IMPORTED_MODULE_15__ = __webpack_require__(/*! ./Player.js */ 0);
-/* harmony import */ var _Script_js__WEBPACK_IMPORTED_MODULE_16__ = __webpack_require__(/*! ./Script.js */ 26);
-/* harmony import */ var _Server_js__WEBPACK_IMPORTED_MODULE_17__ = __webpack_require__(/*! ./Server.js */ 10);
-/* harmony import */ var _Settings_js__WEBPACK_IMPORTED_MODULE_18__ = __webpack_require__(/*! ./Settings.js */ 23);
-/* harmony import */ var _SpecialServerIps_js__WEBPACK_IMPORTED_MODULE_19__ = __webpack_require__(/*! ./SpecialServerIps.js */ 17);
-/* harmony import */ var _StockMarket_js__WEBPACK_IMPORTED_MODULE_20__ = __webpack_require__(/*! ./StockMarket.js */ 22);
-/* harmony import */ var _Terminal_js__WEBPACK_IMPORTED_MODULE_21__ = __webpack_require__(/*! ./Terminal.js */ 18);
-/* harmony import */ var _TextFile_js__WEBPACK_IMPORTED_MODULE_22__ = __webpack_require__(/*! ./TextFile.js */ 43);
-/* harmony import */ var _NetscriptWorker_js__WEBPACK_IMPORTED_MODULE_23__ = __webpack_require__(/*! ./NetscriptWorker.js */ 21);
-/* harmony import */ var _NetscriptEvaluator_js__WEBPACK_IMPORTED_MODULE_24__ = __webpack_require__(/*! ./NetscriptEvaluator.js */ 6);
-/* harmony import */ var _NetscriptEnvironment_js__WEBPACK_IMPORTED_MODULE_25__ = __webpack_require__(/*! ./NetscriptEnvironment.js */ 69);
-/* harmony import */ var _NetscriptPort_js__WEBPACK_IMPORTED_MODULE_26__ = __webpack_require__(/*! ./NetscriptPort.js */ 46);
-/* harmony import */ var decimal_js__WEBPACK_IMPORTED_MODULE_27__ = __webpack_require__(/*! decimal.js */ 24);
-/* harmony import */ var _utils_DialogBox_js__WEBPACK_IMPORTED_MODULE_28__ = __webpack_require__(/*! ../utils/DialogBox.js */ 7);
-/* harmony import */ var _utils_HelperFunctions_js__WEBPACK_IMPORTED_MODULE_29__ = __webpack_require__(/*! ../utils/HelperFunctions.js */ 1);
-/* harmony import */ var _utils_IPAddress_js__WEBPACK_IMPORTED_MODULE_30__ = __webpack_require__(/*! ../utils/IPAddress.js */ 16);
-/* harmony import */ var _utils_StringHelperFunctions_js__WEBPACK_IMPORTED_MODULE_31__ = __webpack_require__(/*! ../utils/StringHelperFunctions.js */ 2);
-/* harmony import */ var _utils_YesNoBox_js__WEBPACK_IMPORTED_MODULE_32__ = __webpack_require__(/*! ../utils/YesNoBox.js */ 12);
-var sprintf = __webpack_require__(/*! sprintf-js */ 68).sprintf,
- vsprintf = __webpack_require__(/*! sprintf-js */ 68).vsprintf
+/* harmony import */ var _ActiveScriptsUI_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(42);
+/* harmony import */ var _Augmentations_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(17);
+/* harmony import */ var _BitNode_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(15);
+/* harmony import */ var _Crimes_js__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(27);
+/* harmony import */ var _Bladeburner_js__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(26);
+/* harmony import */ var _Company_js__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(10);
+/* harmony import */ var _Constants_js__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(3);
+/* harmony import */ var _CreateProgram_js__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(13);
+/* harmony import */ var _DarkWeb_js__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(34);
+/* harmony import */ var _engine_js__WEBPACK_IMPORTED_MODULE_9__ = __webpack_require__(5);
+/* harmony import */ var _Gang_js__WEBPACK_IMPORTED_MODULE_10__ = __webpack_require__(35);
+/* harmony import */ var _Faction_js__WEBPACK_IMPORTED_MODULE_11__ = __webpack_require__(11);
+/* harmony import */ var _HacknetNode_js__WEBPACK_IMPORTED_MODULE_12__ = __webpack_require__(37);
+/* harmony import */ var _Location_js__WEBPACK_IMPORTED_MODULE_13__ = __webpack_require__(4);
+/* harmony import */ var _Message_js__WEBPACK_IMPORTED_MODULE_14__ = __webpack_require__(28);
+/* harmony import */ var _Missions_js__WEBPACK_IMPORTED_MODULE_15__ = __webpack_require__(33);
+/* harmony import */ var _Player_js__WEBPACK_IMPORTED_MODULE_16__ = __webpack_require__(0);
+/* harmony import */ var _Script_js__WEBPACK_IMPORTED_MODULE_17__ = __webpack_require__(25);
+/* harmony import */ var _Server_js__WEBPACK_IMPORTED_MODULE_18__ = __webpack_require__(8);
+/* harmony import */ var _Settings_js__WEBPACK_IMPORTED_MODULE_19__ = __webpack_require__(22);
+/* harmony import */ var _SpecialServerIps_js__WEBPACK_IMPORTED_MODULE_20__ = __webpack_require__(18);
+/* harmony import */ var _StockMarket_js__WEBPACK_IMPORTED_MODULE_21__ = __webpack_require__(21);
+/* harmony import */ var _Terminal_js__WEBPACK_IMPORTED_MODULE_22__ = __webpack_require__(19);
+/* harmony import */ var _TextFile_js__WEBPACK_IMPORTED_MODULE_23__ = __webpack_require__(44);
+/* harmony import */ var _NetscriptWorker_js__WEBPACK_IMPORTED_MODULE_24__ = __webpack_require__(20);
+/* harmony import */ var _NetscriptEvaluator_js__WEBPACK_IMPORTED_MODULE_25__ = __webpack_require__(6);
+/* harmony import */ var _NetscriptEnvironment_js__WEBPACK_IMPORTED_MODULE_26__ = __webpack_require__(67);
+/* harmony import */ var _NetscriptPort_js__WEBPACK_IMPORTED_MODULE_27__ = __webpack_require__(45);
+/* harmony import */ var decimal_js__WEBPACK_IMPORTED_MODULE_28__ = __webpack_require__(23);
+/* harmony import */ var _utils_DialogBox_js__WEBPACK_IMPORTED_MODULE_29__ = __webpack_require__(7);
+/* harmony import */ var _utils_HelperFunctions_js__WEBPACK_IMPORTED_MODULE_30__ = __webpack_require__(1);
+/* harmony import */ var _utils_IPAddress_js__WEBPACK_IMPORTED_MODULE_31__ = __webpack_require__(16);
+/* harmony import */ var _utils_StringHelperFunctions_js__WEBPACK_IMPORTED_MODULE_32__ = __webpack_require__(2);
+/* harmony import */ var _utils_YesNoBox_js__WEBPACK_IMPORTED_MODULE_33__ = __webpack_require__(12);
+var sprintf = __webpack_require__(66).sprintf,
+ vsprintf = __webpack_require__(66).vsprintf
+
@@ -30346,6 +30627,8 @@ var possibleLogs = {
relaysmtp: true,
httpworm: true,
sqlinject: true,
+ run:true,
+ exec:true,
spawn: true,
kill: true,
killall: true,
@@ -30379,47 +30662,68 @@ var possibleLogs = {
commitCrime: true,
shortStock: true,
sellShort: true,
+ startAction: true,
+ upgradeSkill: true,
+ setTeamSize: true,
+ joinBladeburnerFaction: true,
}
//Used to check and set flags for every Source File, despite the name of the function
function initSingularitySFFlags() {
- for (var i = 0; i < _Player_js__WEBPACK_IMPORTED_MODULE_15__["Player"].sourceFiles.length; ++i) {
- if (_Player_js__WEBPACK_IMPORTED_MODULE_15__["Player"].sourceFiles[i].n === 3) {hasCorporationSF = true;}
- if (_Player_js__WEBPACK_IMPORTED_MODULE_15__["Player"].sourceFiles[i].n === 4) {
+ for (var i = 0; i < _Player_js__WEBPACK_IMPORTED_MODULE_16__["Player"].sourceFiles.length; ++i) {
+ if (_Player_js__WEBPACK_IMPORTED_MODULE_16__["Player"].sourceFiles[i].n === 3) {hasCorporationSF = true;}
+ if (_Player_js__WEBPACK_IMPORTED_MODULE_16__["Player"].sourceFiles[i].n === 4) {
hasSingularitySF = true;
- singularitySFLvl = _Player_js__WEBPACK_IMPORTED_MODULE_15__["Player"].sourceFiles[i].lvl;
+ singularitySFLvl = _Player_js__WEBPACK_IMPORTED_MODULE_16__["Player"].sourceFiles[i].lvl;
}
- if (_Player_js__WEBPACK_IMPORTED_MODULE_15__["Player"].sourceFiles[i].n === 5) {hasAISF = true;}
- if (_Player_js__WEBPACK_IMPORTED_MODULE_15__["Player"].sourceFiles[i].n === 6) {hasBladeburnerSF = true;}
- if (_Player_js__WEBPACK_IMPORTED_MODULE_15__["Player"].sourceFiles[i].n === 7) {hasBladeburner2079SF = true;}
- if (_Player_js__WEBPACK_IMPORTED_MODULE_15__["Player"].sourceFiles[i].n === 8) {
+ if (_Player_js__WEBPACK_IMPORTED_MODULE_16__["Player"].sourceFiles[i].n === 5) {hasAISF = true;}
+ if (_Player_js__WEBPACK_IMPORTED_MODULE_16__["Player"].sourceFiles[i].n === 6) {hasBladeburnerSF = true;}
+ if (_Player_js__WEBPACK_IMPORTED_MODULE_16__["Player"].sourceFiles[i].n === 7) {hasBladeburner2079SF = true;}
+ if (_Player_js__WEBPACK_IMPORTED_MODULE_16__["Player"].sourceFiles[i].n === 8) {
hasWallStreetSF = true;
- wallStreetSFLvl = _Player_js__WEBPACK_IMPORTED_MODULE_15__["Player"].sourceFiles[i].lvl;
+ wallStreetSFLvl = _Player_js__WEBPACK_IMPORTED_MODULE_16__["Player"].sourceFiles[i].lvl;
}
- if (_Player_js__WEBPACK_IMPORTED_MODULE_15__["Player"].sourceFiles[i].n === 11) {hasBn11SF = true;}
+ if (_Player_js__WEBPACK_IMPORTED_MODULE_16__["Player"].sourceFiles[i].n === 11) {hasBn11SF = true;}
}
}
function NetscriptFunctions(workerScript) {
+ var updateDynamicRam = function(fnName, ramCost) {
+ if (workerScript.dynamicLoadedFns[fnName]) {return;}
+ workerScript.dynamicLoadedFns[fnName] = true;
+ workerScript.dynamicRamUsage += ramCost;
+ if (workerScript.dynamicRamUsage > 1.01 * workerScript.ramUsage) {
+ throw Object(_NetscriptEvaluator_js__WEBPACK_IMPORTED_MODULE_25__["makeRuntimeRejectMsg"])(workerScript,
+ "Dynamic RAM usage calculated to be greater than initial RAM usage. " +
+ "This is probably because you somehow circumvented the static RAM " +
+ "calculation.
Please don't do that :(");
+ }
+ };
+
+ var updateStaticRam = function(fnName, ramCost) {
+ if (workerScript.loadedFns[fnName]) {
+ return 0;
+ } else {
+ workerScript.loadedFns[fnName] = true;
+ return ramCost;
+ }
+ };
+
return {
Math : Math,
Date : Date,
Number : Number,
- hacknetnodes : _Player_js__WEBPACK_IMPORTED_MODULE_15__["Player"].hacknetNodes,
+ hacknetnodes : _Player_js__WEBPACK_IMPORTED_MODULE_16__["Player"].hacknetNodeWrappers,
sprintf : sprintf,
vsprintf: vsprintf,
scan : function(ip=workerScript.serverIp, hostnames=true){
if (workerScript.checkingRam) {
- if (workerScript.loadedFns.scan) {
- return 0;
- } else {
- workerScript.loadedFns.scan = true;
- return _Constants_js__WEBPACK_IMPORTED_MODULE_6__["CONSTANTS"].ScriptScanRamCost;
- }
+ return updateStaticRam("scan", _Constants_js__WEBPACK_IMPORTED_MODULE_6__["CONSTANTS"].ScriptScanRamCost);
}
- var server = Object(_Server_js__WEBPACK_IMPORTED_MODULE_17__["getServer"])(ip);
+ updateDynamicRam("scan", _Constants_js__WEBPACK_IMPORTED_MODULE_6__["CONSTANTS"].ScriptScanRamCost);
+ var server = Object(_Server_js__WEBPACK_IMPORTED_MODULE_18__["getServer"])(ip);
if (server == null) {
- throw Object(_NetscriptEvaluator_js__WEBPACK_IMPORTED_MODULE_24__["makeRuntimeRejectMsg"])(workerScript, 'Invalid IP or hostname passed into scan() command');
+ throw Object(_NetscriptEvaluator_js__WEBPACK_IMPORTED_MODULE_25__["makeRuntimeRejectMsg"])(workerScript, 'Invalid IP or hostname passed into scan() command');
}
var out = [];
for (var i = 0; i < server.serversOnNetwork.length; i++) {
@@ -30441,49 +30745,45 @@ function NetscriptFunctions(workerScript) {
},
hack : function(ip){
if (workerScript.checkingRam) {
- if (workerScript.loadedFns.hack) {
- return 0;
- } else {
- workerScript.loadedFns.hack = true;
- return _Constants_js__WEBPACK_IMPORTED_MODULE_6__["CONSTANTS"].ScriptHackRamCost;
- }
+ return updateStaticRam("hack", _Constants_js__WEBPACK_IMPORTED_MODULE_6__["CONSTANTS"].ScriptHackRamCost);
}
+ updateDynamicRam("hack", _Constants_js__WEBPACK_IMPORTED_MODULE_6__["CONSTANTS"].ScriptHackRamCost);
if (ip === undefined) {
- throw Object(_NetscriptEvaluator_js__WEBPACK_IMPORTED_MODULE_24__["makeRuntimeRejectMsg"])(workerScript, "Hack() call has incorrect number of arguments. Takes 1 argument");
+ throw Object(_NetscriptEvaluator_js__WEBPACK_IMPORTED_MODULE_25__["makeRuntimeRejectMsg"])(workerScript, "Hack() call has incorrect number of arguments. Takes 1 argument");
}
var threads = workerScript.scriptRef.threads;
if (isNaN(threads) || threads < 1) {threads = 1;}
- var server = Object(_Server_js__WEBPACK_IMPORTED_MODULE_17__["getServer"])(ip);
+ var server = Object(_Server_js__WEBPACK_IMPORTED_MODULE_18__["getServer"])(ip);
if (server == null) {
workerScript.scriptRef.log("hack() error. Invalid IP or hostname passed in: " + ip + ". Stopping...");
- throw Object(_NetscriptEvaluator_js__WEBPACK_IMPORTED_MODULE_24__["makeRuntimeRejectMsg"])(workerScript, "hack() error. Invalid IP or hostname passed in: " + ip + ". Stopping...");
+ throw Object(_NetscriptEvaluator_js__WEBPACK_IMPORTED_MODULE_25__["makeRuntimeRejectMsg"])(workerScript, "hack() error. Invalid IP or hostname passed in: " + ip + ". Stopping...");
}
//Calculate the hacking time
- var hackingTime = Object(_NetscriptEvaluator_js__WEBPACK_IMPORTED_MODULE_24__["scriptCalculateHackingTime"])(server); //This is in seconds
+ var hackingTime = Object(_NetscriptEvaluator_js__WEBPACK_IMPORTED_MODULE_25__["scriptCalculateHackingTime"])(server); //This is in seconds
//No root access or skill level too low
if (server.hasAdminRights == false) {
workerScript.scriptRef.log("Cannot hack this server (" + server.hostname + ") because user does not have root access");
- throw Object(_NetscriptEvaluator_js__WEBPACK_IMPORTED_MODULE_24__["makeRuntimeRejectMsg"])(workerScript, "Cannot hack this server (" + server.hostname + ") because user does not have root access");
+ throw Object(_NetscriptEvaluator_js__WEBPACK_IMPORTED_MODULE_25__["makeRuntimeRejectMsg"])(workerScript, "Cannot hack this server (" + server.hostname + ") because user does not have root access");
}
- if (server.requiredHackingSkill > _Player_js__WEBPACK_IMPORTED_MODULE_15__["Player"].hacking_skill) {
+ if (server.requiredHackingSkill > _Player_js__WEBPACK_IMPORTED_MODULE_16__["Player"].hacking_skill) {
workerScript.scriptRef.log("Cannot hack this server (" + server.hostname + ") because user's hacking skill is not high enough");
- throw Object(_NetscriptEvaluator_js__WEBPACK_IMPORTED_MODULE_24__["makeRuntimeRejectMsg"])(workerScript, "Cannot hack this server (" + server.hostname + ") because user's hacking skill is not high enough");
+ throw Object(_NetscriptEvaluator_js__WEBPACK_IMPORTED_MODULE_25__["makeRuntimeRejectMsg"])(workerScript, "Cannot hack this server (" + server.hostname + ") because user's hacking skill is not high enough");
}
if (workerScript.disableLogs.ALL == null && workerScript.disableLogs.hack == null) {
workerScript.scriptRef.log("Attempting to hack " + ip + " in " + hackingTime.toFixed(3) + " seconds (t=" + threads + ")");
}
- return Object(_NetscriptEvaluator_js__WEBPACK_IMPORTED_MODULE_24__["netscriptDelay"])(hackingTime* 1000, workerScript).then(function() {
+ return Object(_NetscriptEvaluator_js__WEBPACK_IMPORTED_MODULE_25__["netscriptDelay"])(hackingTime* 1000, workerScript).then(function() {
if (workerScript.env.stopFlag) {return Promise.reject(workerScript);}
- var hackChance = Object(_NetscriptEvaluator_js__WEBPACK_IMPORTED_MODULE_24__["scriptCalculateHackingChance"])(server);
+ var hackChance = Object(_NetscriptEvaluator_js__WEBPACK_IMPORTED_MODULE_25__["scriptCalculateHackingChance"])(server);
var rand = Math.random();
- var expGainedOnSuccess = Object(_NetscriptEvaluator_js__WEBPACK_IMPORTED_MODULE_24__["scriptCalculateExpGain"])(server) * threads;
+ var expGainedOnSuccess = Object(_NetscriptEvaluator_js__WEBPACK_IMPORTED_MODULE_25__["scriptCalculateExpGain"])(server) * threads;
var expGainedOnFailure = (expGainedOnSuccess / 4);
if (rand < hackChance) { //Success!
- var moneyGained = Object(_NetscriptEvaluator_js__WEBPACK_IMPORTED_MODULE_24__["scriptCalculatePercentMoneyHacked"])(server);
+ var moneyGained = Object(_NetscriptEvaluator_js__WEBPACK_IMPORTED_MODULE_25__["scriptCalculatePercentMoneyHacked"])(server);
moneyGained = Math.floor(server.moneyAvailable * moneyGained) * threads;
//Over-the-top safety checks
@@ -30495,23 +30795,23 @@ function NetscriptFunctions(workerScript) {
server.moneyAvailable -= moneyGained;
if (server.moneyAvailable < 0) {server.moneyAvailable = 0;}
- _Player_js__WEBPACK_IMPORTED_MODULE_15__["Player"].gainMoney(moneyGained);
+ _Player_js__WEBPACK_IMPORTED_MODULE_16__["Player"].gainMoney(moneyGained);
workerScript.scriptRef.onlineMoneyMade += moneyGained;
- _Player_js__WEBPACK_IMPORTED_MODULE_15__["Player"].scriptProdSinceLastAug += moneyGained;
+ _Player_js__WEBPACK_IMPORTED_MODULE_16__["Player"].scriptProdSinceLastAug += moneyGained;
workerScript.scriptRef.recordHack(server.ip, moneyGained, threads);
- _Player_js__WEBPACK_IMPORTED_MODULE_15__["Player"].gainHackingExp(expGainedOnSuccess);
+ _Player_js__WEBPACK_IMPORTED_MODULE_16__["Player"].gainHackingExp(expGainedOnSuccess);
workerScript.scriptRef.onlineExpGained += expGainedOnSuccess;
if (workerScript.disableLogs.ALL == null && workerScript.disableLogs.hack == null) {
- workerScript.scriptRef.log("Script SUCCESSFULLY hacked " + server.hostname + " for $" + Object(_utils_StringHelperFunctions_js__WEBPACK_IMPORTED_MODULE_31__["formatNumber"])(moneyGained, 2) + " and " + Object(_utils_StringHelperFunctions_js__WEBPACK_IMPORTED_MODULE_31__["formatNumber"])(expGainedOnSuccess, 4) + " exp (t=" + threads + ")");
+ workerScript.scriptRef.log("Script SUCCESSFULLY hacked " + server.hostname + " for $" + Object(_utils_StringHelperFunctions_js__WEBPACK_IMPORTED_MODULE_32__["formatNumber"])(moneyGained, 2) + " and " + Object(_utils_StringHelperFunctions_js__WEBPACK_IMPORTED_MODULE_32__["formatNumber"])(expGainedOnSuccess, 4) + " exp (t=" + threads + ")");
}
server.fortify(_Constants_js__WEBPACK_IMPORTED_MODULE_6__["CONSTANTS"].ServerFortifyAmount * threads);
return Promise.resolve(moneyGained);
} else {
//Player only gains 25% exp for failure?
- _Player_js__WEBPACK_IMPORTED_MODULE_15__["Player"].gainHackingExp(expGainedOnFailure);
+ _Player_js__WEBPACK_IMPORTED_MODULE_16__["Player"].gainHackingExp(expGainedOnFailure);
workerScript.scriptRef.onlineExpGained += expGainedOnFailure;
if (workerScript.disableLogs.ALL == null && workerScript.disableLogs.hack == null) {
- workerScript.scriptRef.log("Script FAILED to hack " + server.hostname + ". Gained " + Object(_utils_StringHelperFunctions_js__WEBPACK_IMPORTED_MODULE_31__["formatNumber"])(expGainedOnFailure, 4) + " exp (t=" + threads + ")");
+ workerScript.scriptRef.log("Script FAILED to hack " + server.hostname + ". Gained " + Object(_utils_StringHelperFunctions_js__WEBPACK_IMPORTED_MODULE_32__["formatNumber"])(expGainedOnFailure, 4) + " exp (t=" + threads + ")");
}
return Promise.resolve(0);
}
@@ -30520,130 +30820,124 @@ function NetscriptFunctions(workerScript) {
sleep : function(time){
if (workerScript.checkingRam) {return 0;}
if (time === undefined) {
- throw Object(_NetscriptEvaluator_js__WEBPACK_IMPORTED_MODULE_24__["makeRuntimeRejectMsg"])(workerScript, "sleep() call has incorrect number of arguments. Takes 1 argument");
+ throw Object(_NetscriptEvaluator_js__WEBPACK_IMPORTED_MODULE_25__["makeRuntimeRejectMsg"])(workerScript, "sleep() call has incorrect number of arguments. Takes 1 argument");
}
if (workerScript.disableLogs.ALL == null && workerScript.disableLogs.sleep == null) {
workerScript.scriptRef.log("Sleeping for " + time + " milliseconds");
}
- return Object(_NetscriptEvaluator_js__WEBPACK_IMPORTED_MODULE_24__["netscriptDelay"])(time, workerScript).then(function() {
+ return Object(_NetscriptEvaluator_js__WEBPACK_IMPORTED_MODULE_25__["netscriptDelay"])(time, workerScript).then(function() {
return Promise.resolve(true);
});
},
grow : function(ip){
if (workerScript.checkingRam) {
- if (workerScript.loadedFns.grow) {
- return 0;
- } else {
- workerScript.loadedFns.grow = true;
- return _Constants_js__WEBPACK_IMPORTED_MODULE_6__["CONSTANTS"].ScriptGrowRamCost;
- }
+ return updateStaticRam("grow", _Constants_js__WEBPACK_IMPORTED_MODULE_6__["CONSTANTS"].ScriptGrowRamCost);
}
+ updateDynamicRam("grow", _Constants_js__WEBPACK_IMPORTED_MODULE_6__["CONSTANTS"].ScriptGrowRamCost);
var threads = workerScript.scriptRef.threads;
if (isNaN(threads) || threads < 1) {threads = 1;}
if (ip === undefined) {
- throw Object(_NetscriptEvaluator_js__WEBPACK_IMPORTED_MODULE_24__["makeRuntimeRejectMsg"])(workerScript, "grow() call has incorrect number of arguments. Takes 1 argument");
+ throw Object(_NetscriptEvaluator_js__WEBPACK_IMPORTED_MODULE_25__["makeRuntimeRejectMsg"])(workerScript, "grow() call has incorrect number of arguments. Takes 1 argument");
}
- var server = Object(_Server_js__WEBPACK_IMPORTED_MODULE_17__["getServer"])(ip);
+ var server = Object(_Server_js__WEBPACK_IMPORTED_MODULE_18__["getServer"])(ip);
if (server == null) {
workerScript.scriptRef.log("Cannot grow(). Invalid IP or hostname passed in: " + ip);
- throw Object(_NetscriptEvaluator_js__WEBPACK_IMPORTED_MODULE_24__["makeRuntimeRejectMsg"])(workerScript, "Cannot grow(). Invalid IP or hostname passed in: " + ip);
+ throw Object(_NetscriptEvaluator_js__WEBPACK_IMPORTED_MODULE_25__["makeRuntimeRejectMsg"])(workerScript, "Cannot grow(). Invalid IP or hostname passed in: " + ip);
}
//No root access or skill level too low
if (server.hasAdminRights == false) {
workerScript.scriptRef.log("Cannot grow this server (" + server.hostname + ") because user does not have root access");
- throw Object(_NetscriptEvaluator_js__WEBPACK_IMPORTED_MODULE_24__["makeRuntimeRejectMsg"])(workerScript, "Cannot grow this server (" + server.hostname + ") because user does not have root access");
+ throw Object(_NetscriptEvaluator_js__WEBPACK_IMPORTED_MODULE_25__["makeRuntimeRejectMsg"])(workerScript, "Cannot grow this server (" + server.hostname + ") because user does not have root access");
}
- var growTime = Object(_NetscriptEvaluator_js__WEBPACK_IMPORTED_MODULE_24__["scriptCalculateGrowTime"])(server);
+ var growTime = Object(_NetscriptEvaluator_js__WEBPACK_IMPORTED_MODULE_25__["scriptCalculateGrowTime"])(server);
if (workerScript.disableLogs.ALL == null && workerScript.disableLogs.grow == null) {
- workerScript.scriptRef.log("Executing grow() on server " + server.hostname + " in " + Object(_utils_StringHelperFunctions_js__WEBPACK_IMPORTED_MODULE_31__["formatNumber"])(growTime/1000, 3) + " seconds (t=" + threads + ")");
+ workerScript.scriptRef.log("Executing grow() on server " + server.hostname + " in " + Object(_utils_StringHelperFunctions_js__WEBPACK_IMPORTED_MODULE_32__["formatNumber"])(growTime/1000, 3) + " seconds (t=" + threads + ")");
}
- return Object(_NetscriptEvaluator_js__WEBPACK_IMPORTED_MODULE_24__["netscriptDelay"])(growTime, workerScript).then(function() {
+ return Object(_NetscriptEvaluator_js__WEBPACK_IMPORTED_MODULE_25__["netscriptDelay"])(growTime, workerScript).then(function() {
if (workerScript.env.stopFlag) {return Promise.reject(workerScript);}
+ const moneyBefore = server.moneyAvailable;
server.moneyAvailable += (1 * threads); //It can be grown even if it has no money
- var growthPercentage = Object(_Server_js__WEBPACK_IMPORTED_MODULE_17__["processSingleServerGrowth"])(server, 450 * threads);
+ var growthPercentage = Object(_Server_js__WEBPACK_IMPORTED_MODULE_18__["processSingleServerGrowth"])(server, 450 * threads);
+ const moneyAfter = server.moneyAvailable;
workerScript.scriptRef.recordGrow(server.ip, threads);
- var expGain = Object(_NetscriptEvaluator_js__WEBPACK_IMPORTED_MODULE_24__["scriptCalculateExpGain"])(server) * threads;
+ var expGain = Object(_NetscriptEvaluator_js__WEBPACK_IMPORTED_MODULE_25__["scriptCalculateExpGain"])(server) * threads;
if (growthPercentage == 1) {
expGain = 0;
}
if (workerScript.disableLogs.ALL == null && workerScript.disableLogs.grow == null) {
workerScript.scriptRef.log("Available money on " + server.hostname + " grown by " +
- Object(_utils_StringHelperFunctions_js__WEBPACK_IMPORTED_MODULE_31__["formatNumber"])(growthPercentage*100 - 100, 6) + "%. Gained " +
- Object(_utils_StringHelperFunctions_js__WEBPACK_IMPORTED_MODULE_31__["formatNumber"])(expGain, 4) + " hacking exp (t=" + threads +")");
+ Object(_utils_StringHelperFunctions_js__WEBPACK_IMPORTED_MODULE_32__["formatNumber"])((moneyAfter/moneyBefore)*100 - 100, 6) + "%. Gained " +
+ Object(_utils_StringHelperFunctions_js__WEBPACK_IMPORTED_MODULE_32__["formatNumber"])(expGain, 4) + " hacking exp (t=" + threads +")");
}
workerScript.scriptRef.onlineExpGained += expGain;
- _Player_js__WEBPACK_IMPORTED_MODULE_15__["Player"].gainHackingExp(expGain);
- return Promise.resolve(growthPercentage);
+ _Player_js__WEBPACK_IMPORTED_MODULE_16__["Player"].gainHackingExp(expGain);
+ return Promise.resolve(moneyAfter/moneyBefore);
});
},
weaken : function(ip){
if (workerScript.checkingRam) {
- if (workerScript.loadedFns.weaken) {
- return 0;
- } else {
- workerScript.loadedFns.weaken = true;
- return _Constants_js__WEBPACK_IMPORTED_MODULE_6__["CONSTANTS"].ScriptWeakenRamCost;
- }
+ return updateStaticRam("weaken", _Constants_js__WEBPACK_IMPORTED_MODULE_6__["CONSTANTS"].ScriptWeakenRamCost);
}
+ updateDynamicRam("weaken", _Constants_js__WEBPACK_IMPORTED_MODULE_6__["CONSTANTS"].ScriptWeakenRamCost);
var threads = workerScript.scriptRef.threads;
if (isNaN(threads) || threads < 1) {threads = 1;}
if (ip === undefined) {
- throw Object(_NetscriptEvaluator_js__WEBPACK_IMPORTED_MODULE_24__["makeRuntimeRejectMsg"])(workerScript, "weaken() call has incorrect number of arguments. Takes 1 argument");
+ throw Object(_NetscriptEvaluator_js__WEBPACK_IMPORTED_MODULE_25__["makeRuntimeRejectMsg"])(workerScript, "weaken() call has incorrect number of arguments. Takes 1 argument");
}
- var server = Object(_Server_js__WEBPACK_IMPORTED_MODULE_17__["getServer"])(ip);
+ var server = Object(_Server_js__WEBPACK_IMPORTED_MODULE_18__["getServer"])(ip);
if (server == null) {
workerScript.scriptRef.log("Cannot weaken(). Invalid IP or hostname passed in: " + ip);
- throw Object(_NetscriptEvaluator_js__WEBPACK_IMPORTED_MODULE_24__["makeRuntimeRejectMsg"])(workerScript, "Cannot weaken(). Invalid IP or hostname passed in: " + ip);
+ throw Object(_NetscriptEvaluator_js__WEBPACK_IMPORTED_MODULE_25__["makeRuntimeRejectMsg"])(workerScript, "Cannot weaken(). Invalid IP or hostname passed in: " + ip);
}
//No root access or skill level too low
if (server.hasAdminRights == false) {
workerScript.scriptRef.log("Cannot weaken this server (" + server.hostname + ") because user does not have root access");
- throw Object(_NetscriptEvaluator_js__WEBPACK_IMPORTED_MODULE_24__["makeRuntimeRejectMsg"])(workerScript, "Cannot weaken this server (" + server.hostname + ") because user does not have root access");
+ throw Object(_NetscriptEvaluator_js__WEBPACK_IMPORTED_MODULE_25__["makeRuntimeRejectMsg"])(workerScript, "Cannot weaken this server (" + server.hostname + ") because user does not have root access");
}
- var weakenTime = Object(_NetscriptEvaluator_js__WEBPACK_IMPORTED_MODULE_24__["scriptCalculateWeakenTime"])(server);
+ var weakenTime = Object(_NetscriptEvaluator_js__WEBPACK_IMPORTED_MODULE_25__["scriptCalculateWeakenTime"])(server);
if (workerScript.disableLogs.ALL == null && workerScript.disableLogs.weaken == null) {
workerScript.scriptRef.log("Executing weaken() on server " + server.hostname + " in " +
- Object(_utils_StringHelperFunctions_js__WEBPACK_IMPORTED_MODULE_31__["formatNumber"])(weakenTime/1000, 3) + " seconds (t=" + threads + ")");
+ Object(_utils_StringHelperFunctions_js__WEBPACK_IMPORTED_MODULE_32__["formatNumber"])(weakenTime/1000, 3) + " seconds (t=" + threads + ")");
}
- return Object(_NetscriptEvaluator_js__WEBPACK_IMPORTED_MODULE_24__["netscriptDelay"])(weakenTime, workerScript).then(function() {
+ return Object(_NetscriptEvaluator_js__WEBPACK_IMPORTED_MODULE_25__["netscriptDelay"])(weakenTime, workerScript).then(function() {
if (workerScript.env.stopFlag) {return Promise.reject(workerScript);}
server.weaken(_Constants_js__WEBPACK_IMPORTED_MODULE_6__["CONSTANTS"].ServerWeakenAmount * threads);
workerScript.scriptRef.recordWeaken(server.ip, threads);
- var expGain = Object(_NetscriptEvaluator_js__WEBPACK_IMPORTED_MODULE_24__["scriptCalculateExpGain"])(server) * threads;
+ var expGain = Object(_NetscriptEvaluator_js__WEBPACK_IMPORTED_MODULE_25__["scriptCalculateExpGain"])(server) * threads;
if (workerScript.disableLogs.ALL == null && workerScript.disableLogs.weaken == null) {
workerScript.scriptRef.log("Server security level on " + server.hostname + " weakened to " + server.hackDifficulty +
- ". Gained " + Object(_utils_StringHelperFunctions_js__WEBPACK_IMPORTED_MODULE_31__["formatNumber"])(expGain, 4) + " hacking exp (t=" + threads + ")");
+ ". Gained " + Object(_utils_StringHelperFunctions_js__WEBPACK_IMPORTED_MODULE_32__["formatNumber"])(expGain, 4) + " hacking exp (t=" + threads + ")");
}
workerScript.scriptRef.onlineExpGained += expGain;
- _Player_js__WEBPACK_IMPORTED_MODULE_15__["Player"].gainHackingExp(expGain);
+ _Player_js__WEBPACK_IMPORTED_MODULE_16__["Player"].gainHackingExp(expGain);
return Promise.resolve(_Constants_js__WEBPACK_IMPORTED_MODULE_6__["CONSTANTS"].ServerWeakenAmount * threads);
});
},
print : function(args){
if (workerScript.checkingRam) {return 0;}
if (args === undefined) {
- throw Object(_NetscriptEvaluator_js__WEBPACK_IMPORTED_MODULE_24__["makeRuntimeRejectMsg"])(workerScript, "print() call has incorrect number of arguments. Takes 1 argument");
+ throw Object(_NetscriptEvaluator_js__WEBPACK_IMPORTED_MODULE_25__["makeRuntimeRejectMsg"])(workerScript, "print() call has incorrect number of arguments. Takes 1 argument");
}
workerScript.scriptRef.log(args.toString());
},
tprint : function(args) {
if (workerScript.checkingRam) {return 0;}
if (args === undefined || args == null) {
- throw Object(_NetscriptEvaluator_js__WEBPACK_IMPORTED_MODULE_24__["makeRuntimeRejectMsg"])(workerScript, "tprint() call has incorrect number of arguments. Takes 1 argument");
+ throw Object(_NetscriptEvaluator_js__WEBPACK_IMPORTED_MODULE_25__["makeRuntimeRejectMsg"])(workerScript, "tprint() call has incorrect number of arguments. Takes 1 argument");
}
var x = args.toString();
- if (Object(_utils_StringHelperFunctions_js__WEBPACK_IMPORTED_MODULE_31__["isHTML"])(x)) {
- _Player_js__WEBPACK_IMPORTED_MODULE_15__["Player"].takeDamage(1);
- Object(_utils_DialogBox_js__WEBPACK_IMPORTED_MODULE_28__["dialogBoxCreate"])("You suddenly feel a sharp shooting pain through your body as an angry voice in your head exclaims:
" +
+ if (Object(_utils_StringHelperFunctions_js__WEBPACK_IMPORTED_MODULE_32__["isHTML"])(x)) {
+ _Player_js__WEBPACK_IMPORTED_MODULE_16__["Player"].takeDamage(1);
+ Object(_utils_DialogBox_js__WEBPACK_IMPORTED_MODULE_29__["dialogBoxCreate"])("You suddenly feel a sharp shooting pain through your body as an angry voice in your head exclaims:
" +
"DON'T USE TPRINT() TO OUTPUT HTML ELEMENTS TO YOUR TERMINAL!!!!
" +
"(You lost 1 HP)");
return;
}
- Object(_Terminal_js__WEBPACK_IMPORTED_MODULE_21__["post"])(workerScript.scriptRef.filename + ": " + args.toString());
+ Object(_Terminal_js__WEBPACK_IMPORTED_MODULE_22__["post"])(workerScript.scriptRef.filename + ": " + args.toString());
},
clearLog : function() {
if (workerScript.checkingRam) {return 0;}
@@ -30652,7 +30946,7 @@ function NetscriptFunctions(workerScript) {
disableLog : function(fn) {
if (workerScript.checkingRam) {return 0;}
if(possibleLogs[fn]===undefined) {
- throw Object(_NetscriptEvaluator_js__WEBPACK_IMPORTED_MODULE_24__["makeRuntimeRejectMsg"])(workerScript, "Invalid argument to disableLog: "+fn);
+ throw Object(_NetscriptEvaluator_js__WEBPACK_IMPORTED_MODULE_25__["makeRuntimeRejectMsg"])(workerScript, "Invalid argument to disableLog: "+fn);
}
workerScript.disableLogs[fn] = true;
if (workerScript.disableLogs.ALL == null && workerScript.disableLogs.disableLog == null) {
@@ -30662,7 +30956,7 @@ function NetscriptFunctions(workerScript) {
enableLog : function(fn) {
if (workerScript.checkingRam) {return 0;}
if(possibleLogs[fn]===undefined) {
- throw Object(_NetscriptEvaluator_js__WEBPACK_IMPORTED_MODULE_24__["makeRuntimeRejectMsg"])(workerScript, "Invalid argument to enableLog: "+fn);
+ throw Object(_NetscriptEvaluator_js__WEBPACK_IMPORTED_MODULE_25__["makeRuntimeRejectMsg"])(workerScript, "Invalid argument to enableLog: "+fn);
}
delete workerScript.disableLogs[fn];
if (workerScript.disableLogs.ALL == null && workerScript.disableLogs.enableLog == null) {
@@ -30671,26 +30965,22 @@ function NetscriptFunctions(workerScript) {
},
nuke : function(ip){
if (workerScript.checkingRam) {
- if (workerScript.loadedFns.nuke) {
- return 0;
- } else {
- workerScript.loadedFns.nuke = true;
- return _Constants_js__WEBPACK_IMPORTED_MODULE_6__["CONSTANTS"].ScriptPortProgramRamCost;
- }
+ return updateStaticRam("nuke", _Constants_js__WEBPACK_IMPORTED_MODULE_6__["CONSTANTS"].ScriptPortProgramRamCost);
}
+ updateDynamicRam("nuke", _Constants_js__WEBPACK_IMPORTED_MODULE_6__["CONSTANTS"].ScriptPortProgramRamCost);
if (ip === undefined) {
- throw Object(_NetscriptEvaluator_js__WEBPACK_IMPORTED_MODULE_24__["makeRuntimeRejectMsg"])(workerScript, "Program call has incorrect number of arguments. Takes 1 argument");
+ throw Object(_NetscriptEvaluator_js__WEBPACK_IMPORTED_MODULE_25__["makeRuntimeRejectMsg"])(workerScript, "Program call has incorrect number of arguments. Takes 1 argument");
}
- var server = Object(_Server_js__WEBPACK_IMPORTED_MODULE_17__["getServer"])(ip);
+ var server = Object(_Server_js__WEBPACK_IMPORTED_MODULE_18__["getServer"])(ip);
if (server == null) {
workerScript.scriptRef.log("Cannot call nuke(). Invalid IP or hostname passed in: " + ip);
- throw Object(_NetscriptEvaluator_js__WEBPACK_IMPORTED_MODULE_24__["makeRuntimeRejectMsg"])(workerScript, "Cannot call nuke(). Invalid IP or hostname passed in: " + ip);
+ throw Object(_NetscriptEvaluator_js__WEBPACK_IMPORTED_MODULE_25__["makeRuntimeRejectMsg"])(workerScript, "Cannot call nuke(). Invalid IP or hostname passed in: " + ip);
}
- if (!_Player_js__WEBPACK_IMPORTED_MODULE_15__["Player"].hasProgram(_CreateProgram_js__WEBPACK_IMPORTED_MODULE_7__["Programs"].NukeProgram)) {
- throw Object(_NetscriptEvaluator_js__WEBPACK_IMPORTED_MODULE_24__["makeRuntimeRejectMsg"])(workerScript, "You do not have the NUKE.exe virus!");
+ if (!_Player_js__WEBPACK_IMPORTED_MODULE_16__["Player"].hasProgram(_CreateProgram_js__WEBPACK_IMPORTED_MODULE_7__["Programs"].NukeProgram)) {
+ throw Object(_NetscriptEvaluator_js__WEBPACK_IMPORTED_MODULE_25__["makeRuntimeRejectMsg"])(workerScript, "You do not have the NUKE.exe virus!");
}
if (server.openPortCount < server.numOpenPortsRequired) {
- throw Object(_NetscriptEvaluator_js__WEBPACK_IMPORTED_MODULE_24__["makeRuntimeRejectMsg"])(workerScript, "Not enough ports opened to use NUKE.exe virus");
+ throw Object(_NetscriptEvaluator_js__WEBPACK_IMPORTED_MODULE_25__["makeRuntimeRejectMsg"])(workerScript, "Not enough ports opened to use NUKE.exe virus");
}
if (server.hasAdminRights) {
if (workerScript.disableLogs.ALL == null && workerScript.disableLogs.nuke == null) {
@@ -30706,24 +30996,20 @@ function NetscriptFunctions(workerScript) {
},
brutessh : function(ip){
if (workerScript.checkingRam) {
- if (workerScript.loadedFns.brutessh) {
- return 0;
- } else {
- workerScript.loadedFns.brutessh = true;
- return _Constants_js__WEBPACK_IMPORTED_MODULE_6__["CONSTANTS"].ScriptPortProgramRamCost;
- }
+ return updateStaticRam("brutessh", _Constants_js__WEBPACK_IMPORTED_MODULE_6__["CONSTANTS"].ScriptPortProgramRamCost);
}
+ updateDynamicRam("brutessh", _Constants_js__WEBPACK_IMPORTED_MODULE_6__["CONSTANTS"].ScriptPortProgramRamCost);
if (ip === undefined) {
- throw Object(_NetscriptEvaluator_js__WEBPACK_IMPORTED_MODULE_24__["makeRuntimeRejectMsg"])(workerScript, "Program call has incorrect number of arguments. Takes 1 argument");
+ throw Object(_NetscriptEvaluator_js__WEBPACK_IMPORTED_MODULE_25__["makeRuntimeRejectMsg"])(workerScript, "Program call has incorrect number of arguments. Takes 1 argument");
}
- var server = Object(_Server_js__WEBPACK_IMPORTED_MODULE_17__["getServer"])(ip);
+ var server = Object(_Server_js__WEBPACK_IMPORTED_MODULE_18__["getServer"])(ip);
if (server == null) {
workerScript.scriptRef.log("Cannot call brutessh(). Invalid IP or hostname passed in: " + ip);
- throw Object(_NetscriptEvaluator_js__WEBPACK_IMPORTED_MODULE_24__["makeRuntimeRejectMsg"])(workerScript, "Cannot call brutessh(). Invalid IP or hostname passed in: " + ip);
+ throw Object(_NetscriptEvaluator_js__WEBPACK_IMPORTED_MODULE_25__["makeRuntimeRejectMsg"])(workerScript, "Cannot call brutessh(). Invalid IP or hostname passed in: " + ip);
}
- if (!_Player_js__WEBPACK_IMPORTED_MODULE_15__["Player"].hasProgram(_CreateProgram_js__WEBPACK_IMPORTED_MODULE_7__["Programs"].BruteSSHProgram)) {
+ if (!_Player_js__WEBPACK_IMPORTED_MODULE_16__["Player"].hasProgram(_CreateProgram_js__WEBPACK_IMPORTED_MODULE_7__["Programs"].BruteSSHProgram)) {
workerScript.scriptRef.log("You do not have the BruteSSH.exe program!");
- throw Object(_NetscriptEvaluator_js__WEBPACK_IMPORTED_MODULE_24__["makeRuntimeRejectMsg"])(workerScript, "You do not have the BruteSSH.exe program!");
+ throw Object(_NetscriptEvaluator_js__WEBPACK_IMPORTED_MODULE_25__["makeRuntimeRejectMsg"])(workerScript, "You do not have the BruteSSH.exe program!");
}
if (!server.sshPortOpen) {
if (workerScript.disableLogs.ALL == null && workerScript.disableLogs.brutessh == null) {
@@ -30740,23 +31026,19 @@ function NetscriptFunctions(workerScript) {
},
ftpcrack : function(ip){
if (workerScript.checkingRam) {
- if (workerScript.loadedFns.ftpcrack) {
- return 0;
- } else {
- workerScript.loadedFns.ftpcrack = true;
- return _Constants_js__WEBPACK_IMPORTED_MODULE_6__["CONSTANTS"].ScriptPortProgramRamCost;
- }
+ return updateStaticRam("ftpcrack", _Constants_js__WEBPACK_IMPORTED_MODULE_6__["CONSTANTS"].ScriptPortProgramRamCost);
}
+ updateDynamicRam("ftpcrack", _Constants_js__WEBPACK_IMPORTED_MODULE_6__["CONSTANTS"].ScriptPortProgramRamCost);
if (ip === undefined) {
- throw Object(_NetscriptEvaluator_js__WEBPACK_IMPORTED_MODULE_24__["makeRuntimeRejectMsg"])(workerScript, "Program call has incorrect number of arguments. Takes 1 argument");
+ throw Object(_NetscriptEvaluator_js__WEBPACK_IMPORTED_MODULE_25__["makeRuntimeRejectMsg"])(workerScript, "Program call has incorrect number of arguments. Takes 1 argument");
}
- var server = Object(_Server_js__WEBPACK_IMPORTED_MODULE_17__["getServer"])(ip);
+ var server = Object(_Server_js__WEBPACK_IMPORTED_MODULE_18__["getServer"])(ip);
if (server == null) {
workerScript.scriptRef.log("Cannot call ftpcrack(). Invalid IP or hostname passed in: " + ip);
- throw Object(_NetscriptEvaluator_js__WEBPACK_IMPORTED_MODULE_24__["makeRuntimeRejectMsg"])(workerScript, "Cannot call ftpcrack(). Invalid IP or hostname passed in: " + ip);
+ throw Object(_NetscriptEvaluator_js__WEBPACK_IMPORTED_MODULE_25__["makeRuntimeRejectMsg"])(workerScript, "Cannot call ftpcrack(). Invalid IP or hostname passed in: " + ip);
}
- if (!_Player_js__WEBPACK_IMPORTED_MODULE_15__["Player"].hasProgram(_CreateProgram_js__WEBPACK_IMPORTED_MODULE_7__["Programs"].FTPCrackProgram)) {
- throw Object(_NetscriptEvaluator_js__WEBPACK_IMPORTED_MODULE_24__["makeRuntimeRejectMsg"])(workerScript, "You do not have the FTPCrack.exe program!");
+ if (!_Player_js__WEBPACK_IMPORTED_MODULE_16__["Player"].hasProgram(_CreateProgram_js__WEBPACK_IMPORTED_MODULE_7__["Programs"].FTPCrackProgram)) {
+ throw Object(_NetscriptEvaluator_js__WEBPACK_IMPORTED_MODULE_25__["makeRuntimeRejectMsg"])(workerScript, "You do not have the FTPCrack.exe program!");
}
if (!server.ftpPortOpen) {
if (workerScript.disableLogs.ALL == null && workerScript.disableLogs.ftpcrack == null) {
@@ -30773,23 +31055,19 @@ function NetscriptFunctions(workerScript) {
},
relaysmtp : function(ip){
if (workerScript.checkingRam) {
- if (workerScript.loadedFns.relaysmtp) {
- return 0;
- } else {
- workerScript.loadedFns.relaysmtp = true;
- return _Constants_js__WEBPACK_IMPORTED_MODULE_6__["CONSTANTS"].ScriptPortProgramRamCost;
- }
+ return updateStaticRam("relaysmtp", _Constants_js__WEBPACK_IMPORTED_MODULE_6__["CONSTANTS"].ScriptPortProgramRamCost);
}
+ updateDynamicRam("relaysmtp", _Constants_js__WEBPACK_IMPORTED_MODULE_6__["CONSTANTS"].ScriptPortProgramRamCost);
if (ip === undefined) {
- throw Object(_NetscriptEvaluator_js__WEBPACK_IMPORTED_MODULE_24__["makeRuntimeRejectMsg"])(workerScript, "Program call has incorrect number of arguments. Takes 1 argument");
+ throw Object(_NetscriptEvaluator_js__WEBPACK_IMPORTED_MODULE_25__["makeRuntimeRejectMsg"])(workerScript, "Program call has incorrect number of arguments. Takes 1 argument");
}
- var server = Object(_Server_js__WEBPACK_IMPORTED_MODULE_17__["getServer"])(ip);
+ var server = Object(_Server_js__WEBPACK_IMPORTED_MODULE_18__["getServer"])(ip);
if (server == null) {
workerScript.scriptRef.log("Cannot call relaysmtp(). Invalid IP or hostname passed in: " + ip);
- throw Object(_NetscriptEvaluator_js__WEBPACK_IMPORTED_MODULE_24__["makeRuntimeRejectMsg"])(workerScript, "Cannot call relaysmtp(). Invalid IP or hostname passed in: " + ip);
+ throw Object(_NetscriptEvaluator_js__WEBPACK_IMPORTED_MODULE_25__["makeRuntimeRejectMsg"])(workerScript, "Cannot call relaysmtp(). Invalid IP or hostname passed in: " + ip);
}
- if (!_Player_js__WEBPACK_IMPORTED_MODULE_15__["Player"].hasProgram(_CreateProgram_js__WEBPACK_IMPORTED_MODULE_7__["Programs"].RelaySMTPProgram)) {
- throw Object(_NetscriptEvaluator_js__WEBPACK_IMPORTED_MODULE_24__["makeRuntimeRejectMsg"])(workerScript, "You do not have the relaySMTP.exe program!");
+ if (!_Player_js__WEBPACK_IMPORTED_MODULE_16__["Player"].hasProgram(_CreateProgram_js__WEBPACK_IMPORTED_MODULE_7__["Programs"].RelaySMTPProgram)) {
+ throw Object(_NetscriptEvaluator_js__WEBPACK_IMPORTED_MODULE_25__["makeRuntimeRejectMsg"])(workerScript, "You do not have the relaySMTP.exe program!");
}
if (!server.smtpPortOpen) {
if (workerScript.disableLogs.ALL == null && workerScript.disableLogs.relaysmtp == null) {
@@ -30806,23 +31084,19 @@ function NetscriptFunctions(workerScript) {
},
httpworm : function(ip){
if (workerScript.checkingRam) {
- if (workerScript.loadedFns.httpworm) {
- return 0;
- } else {
- workerScript.loadedFns.httpworm = true;
- return _Constants_js__WEBPACK_IMPORTED_MODULE_6__["CONSTANTS"].ScriptPortProgramRamCost;
- }
+ return updateStaticRam("httpworm", _Constants_js__WEBPACK_IMPORTED_MODULE_6__["CONSTANTS"].ScriptPortProgramRamCost);
}
+ updateDynamicRam("httpworm", _Constants_js__WEBPACK_IMPORTED_MODULE_6__["CONSTANTS"].ScriptPortProgramRamCost);
if (ip === undefined) {
- throw Object(_NetscriptEvaluator_js__WEBPACK_IMPORTED_MODULE_24__["makeRuntimeRejectMsg"])(workerScript, "Program call has incorrect number of arguments. Takes 1 argument");
+ throw Object(_NetscriptEvaluator_js__WEBPACK_IMPORTED_MODULE_25__["makeRuntimeRejectMsg"])(workerScript, "Program call has incorrect number of arguments. Takes 1 argument");
}
- var server = Object(_Server_js__WEBPACK_IMPORTED_MODULE_17__["getServer"])(ip);
+ var server = Object(_Server_js__WEBPACK_IMPORTED_MODULE_18__["getServer"])(ip);
if (server == null) {
workerScript.scriptRef.log("Cannot call httpworm(). Invalid IP or hostname passed in: " + ip);
- throw Object(_NetscriptEvaluator_js__WEBPACK_IMPORTED_MODULE_24__["makeRuntimeRejectMsg"])(workerScript, "Cannot call httpworm(). Invalid IP or hostname passed in: " + ip);
+ throw Object(_NetscriptEvaluator_js__WEBPACK_IMPORTED_MODULE_25__["makeRuntimeRejectMsg"])(workerScript, "Cannot call httpworm(). Invalid IP or hostname passed in: " + ip);
}
- if (!_Player_js__WEBPACK_IMPORTED_MODULE_15__["Player"].hasProgram(_CreateProgram_js__WEBPACK_IMPORTED_MODULE_7__["Programs"].HTTPWormProgram)) {
- throw Object(_NetscriptEvaluator_js__WEBPACK_IMPORTED_MODULE_24__["makeRuntimeRejectMsg"])(workerScript, "You do not have the HTTPWorm.exe program!");
+ if (!_Player_js__WEBPACK_IMPORTED_MODULE_16__["Player"].hasProgram(_CreateProgram_js__WEBPACK_IMPORTED_MODULE_7__["Programs"].HTTPWormProgram)) {
+ throw Object(_NetscriptEvaluator_js__WEBPACK_IMPORTED_MODULE_25__["makeRuntimeRejectMsg"])(workerScript, "You do not have the HTTPWorm.exe program!");
}
if (!server.httpPortOpen) {
if (workerScript.disableLogs.ALL == null && workerScript.disableLogs.httpworm == null) {
@@ -30839,23 +31113,19 @@ function NetscriptFunctions(workerScript) {
},
sqlinject : function(ip){
if (workerScript.checkingRam) {
- if (workerScript.loadedFns.sqlinject) {
- return 0;
- } else {
- workerScript.loadedFns.sqlinject = true;
- return _Constants_js__WEBPACK_IMPORTED_MODULE_6__["CONSTANTS"].ScriptPortProgramRamCost;
- }
+ return updateStaticRam("sqlinject", _Constants_js__WEBPACK_IMPORTED_MODULE_6__["CONSTANTS"].ScriptPortProgramRamCost);
}
+ updateDynamicRam("sqlinject", _Constants_js__WEBPACK_IMPORTED_MODULE_6__["CONSTANTS"].ScriptPortProgramRamCost);
if (ip === undefined) {
- throw Object(_NetscriptEvaluator_js__WEBPACK_IMPORTED_MODULE_24__["makeRuntimeRejectMsg"])(workerScript, "Program call has incorrect number of arguments. Takes 1 argument");
+ throw Object(_NetscriptEvaluator_js__WEBPACK_IMPORTED_MODULE_25__["makeRuntimeRejectMsg"])(workerScript, "Program call has incorrect number of arguments. Takes 1 argument");
}
- var server = Object(_Server_js__WEBPACK_IMPORTED_MODULE_17__["getServer"])(ip);
+ var server = Object(_Server_js__WEBPACK_IMPORTED_MODULE_18__["getServer"])(ip);
if (server == null) {
workerScript.scriptRef.log("Cannot call sqlinject(). Invalid IP or hostname passed in: " + ip);
- throw Object(_NetscriptEvaluator_js__WEBPACK_IMPORTED_MODULE_24__["makeRuntimeRejectMsg"])(workerScript, "Cannot call sqlinject(). Invalid IP or hostname passed in: " + ip);
+ throw Object(_NetscriptEvaluator_js__WEBPACK_IMPORTED_MODULE_25__["makeRuntimeRejectMsg"])(workerScript, "Cannot call sqlinject(). Invalid IP or hostname passed in: " + ip);
}
- if (!_Player_js__WEBPACK_IMPORTED_MODULE_15__["Player"].hasProgram(_CreateProgram_js__WEBPACK_IMPORTED_MODULE_7__["Programs"].SQLInjectProgram)) {
- throw Object(_NetscriptEvaluator_js__WEBPACK_IMPORTED_MODULE_24__["makeRuntimeRejectMsg"])(workerScript, "You do not have the SQLInject.exe program!");
+ if (!_Player_js__WEBPACK_IMPORTED_MODULE_16__["Player"].hasProgram(_CreateProgram_js__WEBPACK_IMPORTED_MODULE_7__["Programs"].SQLInjectProgram)) {
+ throw Object(_NetscriptEvaluator_js__WEBPACK_IMPORTED_MODULE_25__["makeRuntimeRejectMsg"])(workerScript, "You do not have the SQLInject.exe program!");
}
if (!server.sqlPortOpen) {
if (workerScript.disableLogs.ALL == null && workerScript.disableLogs.sqlinject == null) {
@@ -30872,69 +31142,72 @@ function NetscriptFunctions(workerScript) {
},
run : function(scriptname,threads = 1){
if (workerScript.checkingRam) {
- if (workerScript.loadedFns.run) {
- return 0;
- } else {
- workerScript.loadedFns.run = true;
- return _Constants_js__WEBPACK_IMPORTED_MODULE_6__["CONSTANTS"].ScriptRunRamCost;
- }
+ return updateStaticRam("run", _Constants_js__WEBPACK_IMPORTED_MODULE_6__["CONSTANTS"].ScriptRunRamCost);
}
+ updateDynamicRam("run", _Constants_js__WEBPACK_IMPORTED_MODULE_6__["CONSTANTS"].ScriptRunRamCost);
if (scriptname === undefined) {
- throw Object(_NetscriptEvaluator_js__WEBPACK_IMPORTED_MODULE_24__["makeRuntimeRejectMsg"])(workerScript, "run() call has incorrect number of arguments. Usage: run(scriptname, [numThreads], [arg1], [arg2]...)");
+ throw Object(_NetscriptEvaluator_js__WEBPACK_IMPORTED_MODULE_25__["makeRuntimeRejectMsg"])(workerScript, "run() call has incorrect number of arguments. Usage: run(scriptname, [numThreads], [arg1], [arg2]...)");
}
if (isNaN(threads) || threads < 1) {
- throw Object(_NetscriptEvaluator_js__WEBPACK_IMPORTED_MODULE_24__["makeRuntimeRejectMsg"])(workerScript, "Invalid argument for thread count passed into run(). Must be numeric and greater than 0");
+ throw Object(_NetscriptEvaluator_js__WEBPACK_IMPORTED_MODULE_25__["makeRuntimeRejectMsg"])(workerScript, "Invalid argument for thread count passed into run(). Must be numeric and greater than 0");
}
var argsForNewScript = [];
for (var i = 2; i < arguments.length; ++i) {
argsForNewScript.push(arguments[i]);
}
- var scriptServer = Object(_Server_js__WEBPACK_IMPORTED_MODULE_17__["getServer"])(workerScript.serverIp);
+ var scriptServer = Object(_Server_js__WEBPACK_IMPORTED_MODULE_18__["getServer"])(workerScript.serverIp);
if (scriptServer == null) {
- throw Object(_NetscriptEvaluator_js__WEBPACK_IMPORTED_MODULE_24__["makeRuntimeRejectMsg"])(workerScript, "Could not find server. This is a bug in the game. Report to game dev");
+ throw Object(_NetscriptEvaluator_js__WEBPACK_IMPORTED_MODULE_25__["makeRuntimeRejectMsg"])(workerScript, "Could not find server. This is a bug in the game. Report to game dev");
}
- return Object(_NetscriptEvaluator_js__WEBPACK_IMPORTED_MODULE_24__["runScriptFromScript"])(scriptServer, scriptname, argsForNewScript, workerScript, threads);
+ return Object(_NetscriptEvaluator_js__WEBPACK_IMPORTED_MODULE_25__["runScriptFromScript"])(scriptServer, scriptname, argsForNewScript, workerScript, threads);
},
exec : function(scriptname,ip,threads = 1) {
if (workerScript.checkingRam) {
- if (workerScript.loadedFns.exec) {
- return 0;
- } else {
- workerScript.loadedFns.exec = true;
- return _Constants_js__WEBPACK_IMPORTED_MODULE_6__["CONSTANTS"].ScriptExecRamCost;
- }
+ return updateStaticRam("exec", _Constants_js__WEBPACK_IMPORTED_MODULE_6__["CONSTANTS"].ScriptExecRamCost);
}
+ updateDynamicRam("exec", _Constants_js__WEBPACK_IMPORTED_MODULE_6__["CONSTANTS"].ScriptExecRamCost);
if (scriptname === undefined || ip === undefined) {
- throw Object(_NetscriptEvaluator_js__WEBPACK_IMPORTED_MODULE_24__["makeRuntimeRejectMsg"])(workerScript, "exec() call has incorrect number of arguments. Usage: exec(scriptname, server, [numThreads], [arg1], [arg2]...)");
+ throw Object(_NetscriptEvaluator_js__WEBPACK_IMPORTED_MODULE_25__["makeRuntimeRejectMsg"])(workerScript, "exec() call has incorrect number of arguments. Usage: exec(scriptname, server, [numThreads], [arg1], [arg2]...)");
}
if (isNaN(threads) || threads < 1) {
- throw Object(_NetscriptEvaluator_js__WEBPACK_IMPORTED_MODULE_24__["makeRuntimeRejectMsg"])(workerScript, "Invalid argument for thread count passed into exec(). Must be numeric and greater than 0");
+ throw Object(_NetscriptEvaluator_js__WEBPACK_IMPORTED_MODULE_25__["makeRuntimeRejectMsg"])(workerScript, "Invalid argument for thread count passed into exec(). Must be numeric and greater than 0");
}
var argsForNewScript = [];
for (var i = 3; i < arguments.length; ++i) {
argsForNewScript.push(arguments[i]);
}
- var server = Object(_Server_js__WEBPACK_IMPORTED_MODULE_17__["getServer"])(ip);
+ var server = Object(_Server_js__WEBPACK_IMPORTED_MODULE_18__["getServer"])(ip);
if (server == null) {
- throw Object(_NetscriptEvaluator_js__WEBPACK_IMPORTED_MODULE_24__["makeRuntimeRejectMsg"])(workerScript, "Invalid hostname/ip passed into exec() command: " + ip);
+ throw Object(_NetscriptEvaluator_js__WEBPACK_IMPORTED_MODULE_25__["makeRuntimeRejectMsg"])(workerScript, "Invalid hostname/ip passed into exec() command: " + ip);
}
- return Object(_NetscriptEvaluator_js__WEBPACK_IMPORTED_MODULE_24__["runScriptFromScript"])(server, scriptname, argsForNewScript, workerScript, threads);
+ return Object(_NetscriptEvaluator_js__WEBPACK_IMPORTED_MODULE_25__["runScriptFromScript"])(server, scriptname, argsForNewScript, workerScript, threads);
},
spawn : function(scriptname, threads) {
if (workerScript.checkingRam) {
- if (workerScript.loadedFns.spawn) {
- return 0;
- } else {
- workerScript.loadedFns.spawn = true;
- return _Constants_js__WEBPACK_IMPORTED_MODULE_6__["CONSTANTS"].ScriptSpawnRamCost;
- }
+ return updateStaticRam("spawn", _Constants_js__WEBPACK_IMPORTED_MODULE_6__["CONSTANTS"].ScriptSpawnRamCost);
}
+ updateDynamicRam("spawn", _Constants_js__WEBPACK_IMPORTED_MODULE_6__["CONSTANTS"].ScriptSpawnRamCost);
if (scriptname == null || threads == null) {
- throw Object(_NetscriptEvaluator_js__WEBPACK_IMPORTED_MODULE_24__["makeRuntimeRejectMsg"])(workerScript, "Invalid scriptname or numThreads argument passed to spawn()");
+ throw Object(_NetscriptEvaluator_js__WEBPACK_IMPORTED_MODULE_25__["makeRuntimeRejectMsg"])(workerScript, "Invalid scriptname or numThreads argument passed to spawn()");
}
setTimeout(()=>{
- NetscriptFunctions(workerScript).run.apply(this, arguments);
+ if (scriptname === undefined) {
+ throw Object(_NetscriptEvaluator_js__WEBPACK_IMPORTED_MODULE_25__["makeRuntimeRejectMsg"])(workerScript, "spawn() call has incorrect number of arguments. Usage: spawn(scriptname, numThreads, [arg1], [arg2]...)");
+ }
+ if (isNaN(threads) || threads < 1) {
+ throw Object(_NetscriptEvaluator_js__WEBPACK_IMPORTED_MODULE_25__["makeRuntimeRejectMsg"])(workerScript, "Invalid argument for thread count passed into run(). Must be numeric and greater than 0");
+ }
+ var argsForNewScript = [];
+ for (var i = 2; i < arguments.length; ++i) {
+ argsForNewScript.push(arguments[i]);
+ }
+ var scriptServer = Object(_Server_js__WEBPACK_IMPORTED_MODULE_18__["getServer"])(workerScript.serverIp);
+ if (scriptServer == null) {
+ throw Object(_NetscriptEvaluator_js__WEBPACK_IMPORTED_MODULE_25__["makeRuntimeRejectMsg"])(workerScript, "Could not find server. This is a bug in the game. Report to game dev");
+ }
+
+ return Object(_NetscriptEvaluator_js__WEBPACK_IMPORTED_MODULE_25__["runScriptFromScript"])(scriptServer, scriptname, argsForNewScript, workerScript, threads);
}, 20000);
if (workerScript.disableLogs.ALL == null && workerScript.disableLogs.spawn == null) {
workerScript.scriptRef.log("spawn() will execute " + scriptname + " in 20 seconds");
@@ -30943,65 +31216,55 @@ function NetscriptFunctions(workerScript) {
},
kill : function(filename,ip) {
if (workerScript.checkingRam) {
- if (workerScript.loadedFns.kill) {
- return 0;
- } else {
- workerScript.loadedFns.kill = true;
- return _Constants_js__WEBPACK_IMPORTED_MODULE_6__["CONSTANTS"].ScriptKillRamCost;
- }
+ return updateStaticRam("kill", _Constants_js__WEBPACK_IMPORTED_MODULE_6__["CONSTANTS"].ScriptKillRamCost);
}
-
+ updateDynamicRam("kill", _Constants_js__WEBPACK_IMPORTED_MODULE_6__["CONSTANTS"].ScriptKillRamCost);
if (filename === undefined || ip === undefined) {
- throw Object(_NetscriptEvaluator_js__WEBPACK_IMPORTED_MODULE_24__["makeRuntimeRejectMsg"])(workerScript, "kill() call has incorrect number of arguments. Usage: kill(scriptname, server, [arg1], [arg2]...)");
+ throw Object(_NetscriptEvaluator_js__WEBPACK_IMPORTED_MODULE_25__["makeRuntimeRejectMsg"])(workerScript, "kill() call has incorrect number of arguments. Usage: kill(scriptname, server, [arg1], [arg2]...)");
}
- var server = Object(_Server_js__WEBPACK_IMPORTED_MODULE_17__["getServer"])(ip);
+ var server = Object(_Server_js__WEBPACK_IMPORTED_MODULE_18__["getServer"])(ip);
if (server == null) {
workerScript.scriptRef.log("kill() failed. Invalid IP or hostname passed in: " + ip);
- throw Object(_NetscriptEvaluator_js__WEBPACK_IMPORTED_MODULE_24__["makeRuntimeRejectMsg"])(workerScript, "kill() failed. Invalid IP or hostname passed in: " + ip);
+ throw Object(_NetscriptEvaluator_js__WEBPACK_IMPORTED_MODULE_25__["makeRuntimeRejectMsg"])(workerScript, "kill() failed. Invalid IP or hostname passed in: " + ip);
}
var argsForKillTarget = [];
for (var i = 2; i < arguments.length; ++i) {
argsForKillTarget.push(arguments[i]);
}
- var runningScriptObj = Object(_Script_js__WEBPACK_IMPORTED_MODULE_16__["findRunningScript"])(filename, argsForKillTarget, server);
+ var runningScriptObj = Object(_Script_js__WEBPACK_IMPORTED_MODULE_17__["findRunningScript"])(filename, argsForKillTarget, server);
if (runningScriptObj == null) {
- workerScript.scriptRef.log("kill() failed. No such script "+ filename + " on " + server.hostname + " with args: " + Object(_utils_HelperFunctions_js__WEBPACK_IMPORTED_MODULE_29__["printArray"])(argsForKillTarget));
+ workerScript.scriptRef.log("kill() failed. No such script "+ filename + " on " + server.hostname + " with args: " + Object(_utils_HelperFunctions_js__WEBPACK_IMPORTED_MODULE_30__["printArray"])(argsForKillTarget));
return false;
}
- var res = Object(_NetscriptWorker_js__WEBPACK_IMPORTED_MODULE_23__["killWorkerScript"])(runningScriptObj, server.ip);
+ var res = Object(_NetscriptWorker_js__WEBPACK_IMPORTED_MODULE_24__["killWorkerScript"])(runningScriptObj, server.ip);
if (res) {
if (workerScript.disableLogs.ALL == null && workerScript.disableLogs.kill == null) {
- workerScript.scriptRef.log("Killing " + filename + " on " + server.hostname + " with args: " + Object(_utils_HelperFunctions_js__WEBPACK_IMPORTED_MODULE_29__["printArray"])(argsForKillTarget) + ". May take up to a few minutes for the scripts to die...");
+ workerScript.scriptRef.log("Killing " + filename + " on " + server.hostname + " with args: " + Object(_utils_HelperFunctions_js__WEBPACK_IMPORTED_MODULE_30__["printArray"])(argsForKillTarget) + ". May take up to a few minutes for the scripts to die...");
}
return true;
} else {
if (workerScript.disableLogs.ALL == null && workerScript.disableLogs.kill == null) {
- workerScript.scriptRef.log("kill() failed. No such script "+ filename + " on " + server.hostname + " with args: " + Object(_utils_HelperFunctions_js__WEBPACK_IMPORTED_MODULE_29__["printArray"])(argsForKillTarget));
+ workerScript.scriptRef.log("kill() failed. No such script "+ filename + " on " + server.hostname + " with args: " + Object(_utils_HelperFunctions_js__WEBPACK_IMPORTED_MODULE_30__["printArray"])(argsForKillTarget));
}
return false;
}
},
killall : function(ip=workerScript.serverIp){
if (workerScript.checkingRam) {
- if (workerScript.loadedFns.killall) {
- return 0;
- } else {
- workerScript.loadedFns.killall = true;
- return _Constants_js__WEBPACK_IMPORTED_MODULE_6__["CONSTANTS"].ScriptKillRamCost;
- }
+ return updateStaticRam("killall", _Constants_js__WEBPACK_IMPORTED_MODULE_6__["CONSTANTS"].ScriptKillRamCost);
}
-
+ updateDynamicRam("killall", _Constants_js__WEBPACK_IMPORTED_MODULE_6__["CONSTANTS"].ScriptKillRamCost);
if (ip === undefined) {
- throw Object(_NetscriptEvaluator_js__WEBPACK_IMPORTED_MODULE_24__["makeRuntimeRejectMsg"])(workerScript, "killall() call has incorrect number of arguments. Takes 1 argument");
+ throw Object(_NetscriptEvaluator_js__WEBPACK_IMPORTED_MODULE_25__["makeRuntimeRejectMsg"])(workerScript, "killall() call has incorrect number of arguments. Takes 1 argument");
}
- var server = Object(_Server_js__WEBPACK_IMPORTED_MODULE_17__["getServer"])(ip);
+ var server = Object(_Server_js__WEBPACK_IMPORTED_MODULE_18__["getServer"])(ip);
if (server == null) {
workerScript.scriptRef.log("killall() failed. Invalid IP or hostname passed in: " + ip);
- throw Object(_NetscriptEvaluator_js__WEBPACK_IMPORTED_MODULE_24__["makeRuntimeRejectMsg"])(workerScript, "killall() failed. Invalid IP or hostname passed in: " + ip);
+ throw Object(_NetscriptEvaluator_js__WEBPACK_IMPORTED_MODULE_25__["makeRuntimeRejectMsg"])(workerScript, "killall() failed. Invalid IP or hostname passed in: " + ip);
}
var scriptsRunning = (server.runningScripts.length > 0);
for (var i = server.runningScripts.length-1; i >= 0; --i) {
- Object(_NetscriptWorker_js__WEBPACK_IMPORTED_MODULE_23__["killWorkerScript"])(server.runningScripts[i], server.ip);
+ Object(_NetscriptWorker_js__WEBPACK_IMPORTED_MODULE_24__["killWorkerScript"])(server.runningScripts[i], server.ip);
}
if (workerScript.disableLogs.ALL == null && workerScript.disableLogs.killall == null) {
workerScript.scriptRef.log("killall(): Killing all scripts on " + server.hostname + ". May take a few minutes for the scripts to die");
@@ -31009,19 +31272,12 @@ function NetscriptFunctions(workerScript) {
return scriptsRunning;
},
exit : function() {
- if (workerScript.checkingRam) {
- if (workerScript.loadedFns.exit) {
- return 0;
- } else {
- workerScript.loadedFns.exit = true;
- return _Constants_js__WEBPACK_IMPORTED_MODULE_6__["CONSTANTS"].ScriptKillRamCost;
- }
- }
- var server = Object(_Server_js__WEBPACK_IMPORTED_MODULE_17__["getServer"])(workerScript.serverIp);
+ if (workerScript.checkingRam) {return 0;}
+ var server = Object(_Server_js__WEBPACK_IMPORTED_MODULE_18__["getServer"])(workerScript.serverIp);
if (server == null) {
- throw Object(_NetscriptEvaluator_js__WEBPACK_IMPORTED_MODULE_24__["makeRuntimeRejectMsg"])(workerScript, "Error getting Server for this script in exit(). This is a bug please contact game dev");
+ throw Object(_NetscriptEvaluator_js__WEBPACK_IMPORTED_MODULE_25__["makeRuntimeRejectMsg"])(workerScript, "Error getting Server for this script in exit(). This is a bug please contact game dev");
}
- if (Object(_NetscriptWorker_js__WEBPACK_IMPORTED_MODULE_23__["killWorkerScript"])(workerScript.scriptRef, server.ip)) {
+ if (Object(_NetscriptWorker_js__WEBPACK_IMPORTED_MODULE_24__["killWorkerScript"])(workerScript.scriptRef, server.ip)) {
workerScript.scriptRef.log("Exiting...");
} else {
workerScript.scriptRef.log("Exit failed(). This is a bug please contact game developer");
@@ -31029,15 +31285,11 @@ function NetscriptFunctions(workerScript) {
},
scp : function(scriptname, ip1, ip2) {
if (workerScript.checkingRam) {
- if (workerScript.loadedFns.scp) {
- return 0;
- } else {
- workerScript.loadedFns.scp = true;
- return _Constants_js__WEBPACK_IMPORTED_MODULE_6__["CONSTANTS"].ScriptScpRamCost;
- }
+ return updateStaticRam("scp", _Constants_js__WEBPACK_IMPORTED_MODULE_6__["CONSTANTS"].ScriptScpRamCost);
}
+ updateDynamicRam("scp", _Constants_js__WEBPACK_IMPORTED_MODULE_6__["CONSTANTS"].ScriptScpRamCost);
if (arguments.length !== 2 && arguments.length !== 3) {
- throw Object(_NetscriptEvaluator_js__WEBPACK_IMPORTED_MODULE_24__["makeRuntimeRejectMsg"])(workerScript, "Error: scp() call has incorrect number of arguments. Takes 2 or 3 arguments");
+ throw Object(_NetscriptEvaluator_js__WEBPACK_IMPORTED_MODULE_25__["makeRuntimeRejectMsg"])(workerScript, "ERROR: scp() call has incorrect number of arguments. Takes 2 or 3 arguments");
}
if (scriptname && scriptname.constructor === Array) {
//Recursively call scp on all elements of array
@@ -31049,38 +31301,38 @@ function NetscriptFunctions(workerScript) {
});
return res;
}
- if (!scriptname.endsWith(".lit") && !Object(_Script_js__WEBPACK_IMPORTED_MODULE_16__["isScriptFilename"])(scriptname) &&
+ if (!scriptname.endsWith(".lit") && !Object(_Script_js__WEBPACK_IMPORTED_MODULE_17__["isScriptFilename"])(scriptname) &&
!scriptname.endsWith("txt")) {
- throw Object(_NetscriptEvaluator_js__WEBPACK_IMPORTED_MODULE_24__["makeRuntimeRejectMsg"])(workerScript, "Error: scp() does not work with this file type. It only works for .script, .lit, and .txt files");
+ throw Object(_NetscriptEvaluator_js__WEBPACK_IMPORTED_MODULE_25__["makeRuntimeRejectMsg"])(workerScript, "ERROR: scp() does not work with this file type. It only works for .script, .lit, and .txt files");
}
var destServer, currServ;
if (arguments.length === 3) { //scriptname, source, destination
if (scriptname === undefined || ip1 === undefined || ip2 === undefined) {
- throw Object(_NetscriptEvaluator_js__WEBPACK_IMPORTED_MODULE_24__["makeRuntimeRejectMsg"])(workerScript, "Error: scp() call has incorrect number of arguments. Takes 2 or 3 arguments");
+ throw Object(_NetscriptEvaluator_js__WEBPACK_IMPORTED_MODULE_25__["makeRuntimeRejectMsg"])(workerScript, "ERROR: scp() call has incorrect number of arguments. Takes 2 or 3 arguments");
}
- destServer = Object(_Server_js__WEBPACK_IMPORTED_MODULE_17__["getServer"])(ip2);
+ destServer = Object(_Server_js__WEBPACK_IMPORTED_MODULE_18__["getServer"])(ip2);
if (destServer == null) {
- throw Object(_NetscriptEvaluator_js__WEBPACK_IMPORTED_MODULE_24__["makeRuntimeRejectMsg"])(workerScript, "Error: Invalid hostname/ip passed into scp() command: " + ip);
+ throw Object(_NetscriptEvaluator_js__WEBPACK_IMPORTED_MODULE_25__["makeRuntimeRejectMsg"])(workerScript, "ERROR: Invalid hostname/ip passed into scp() command: " + ip);
}
- currServ = Object(_Server_js__WEBPACK_IMPORTED_MODULE_17__["getServer"])(ip1);
+ currServ = Object(_Server_js__WEBPACK_IMPORTED_MODULE_18__["getServer"])(ip1);
if (currServ == null) {
- throw Object(_NetscriptEvaluator_js__WEBPACK_IMPORTED_MODULE_24__["makeRuntimeRejectMsg"])(workerScript, "Could not find server ip for this script. This is a bug please contact game developer");
+ throw Object(_NetscriptEvaluator_js__WEBPACK_IMPORTED_MODULE_25__["makeRuntimeRejectMsg"])(workerScript, "Could not find server ip for this script. This is a bug please contact game developer");
}
} else if (arguments.length === 2) { //scriptname, destination
if (scriptname === undefined || ip1 === undefined) {
- throw Object(_NetscriptEvaluator_js__WEBPACK_IMPORTED_MODULE_24__["makeRuntimeRejectMsg"])(workerScript, "Error: scp() call has incorrect number of arguments. Takes 2 or 3 arguments");
+ throw Object(_NetscriptEvaluator_js__WEBPACK_IMPORTED_MODULE_25__["makeRuntimeRejectMsg"])(workerScript, "ERROR: scp() call has incorrect number of arguments. Takes 2 or 3 arguments");
}
- destServer = Object(_Server_js__WEBPACK_IMPORTED_MODULE_17__["getServer"])(ip1);
+ destServer = Object(_Server_js__WEBPACK_IMPORTED_MODULE_18__["getServer"])(ip1);
if (destServer == null) {
- throw Object(_NetscriptEvaluator_js__WEBPACK_IMPORTED_MODULE_24__["makeRuntimeRejectMsg"])(workerScript, "Error: Invalid hostname/ip passed into scp() command: " + ip);
+ throw Object(_NetscriptEvaluator_js__WEBPACK_IMPORTED_MODULE_25__["makeRuntimeRejectMsg"])(workerScript, "ERROR: Invalid hostname/ip passed into scp() command: " + ip);
}
- currServ = Object(_Server_js__WEBPACK_IMPORTED_MODULE_17__["getServer"])(workerScript.serverIp);
+ currServ = Object(_Server_js__WEBPACK_IMPORTED_MODULE_18__["getServer"])(workerScript.serverIp);
if (currServ == null) {
- throw Object(_NetscriptEvaluator_js__WEBPACK_IMPORTED_MODULE_24__["makeRuntimeRejectMsg"])(workerScript, "Could not find server ip for this script. This is a bug please contact game developer");
+ throw Object(_NetscriptEvaluator_js__WEBPACK_IMPORTED_MODULE_25__["makeRuntimeRejectMsg"])(workerScript, "Could not find server ip for this script. This is a bug please contact game developer");
}
}
@@ -31088,7 +31340,7 @@ function NetscriptFunctions(workerScript) {
if (scriptname.endsWith(".lit")) {
var found = false;
for (var i = 0; i < currServ.messages.length; ++i) {
- if (!(currServ.messages[i] instanceof _Message_js__WEBPACK_IMPORTED_MODULE_13__["Message"]) && currServ.messages[i] == scriptname) {
+ if (!(currServ.messages[i] instanceof _Message_js__WEBPACK_IMPORTED_MODULE_14__["Message"]) && currServ.messages[i] == scriptname) {
found = true;
break;
}
@@ -31140,7 +31392,7 @@ function NetscriptFunctions(workerScript) {
return true;
}
}
- var newFile = new _TextFile_js__WEBPACK_IMPORTED_MODULE_22__["TextFile"](txtFile.fn, txtFile.text);
+ var newFile = new _TextFile_js__WEBPACK_IMPORTED_MODULE_23__["TextFile"](txtFile.fn, txtFile.text);
destServer.textFiles.push(newFile);
if (workerScript.disableLogs.ALL == null && workerScript.disableLogs.scp == null) {
workerScript.scriptRef.log(scriptname + " copied over to " + destServer.hostname);
@@ -31176,7 +31428,7 @@ function NetscriptFunctions(workerScript) {
}
//Create new script if it does not already exist
- var newScript = new _Script_js__WEBPACK_IMPORTED_MODULE_16__["Script"]();
+ var newScript = new _Script_js__WEBPACK_IMPORTED_MODULE_17__["Script"]();
newScript.filename = scriptname;
newScript.code = sourceScript.code;
newScript.ramUsage = sourceScript.ramUsage;
@@ -31189,20 +31441,16 @@ function NetscriptFunctions(workerScript) {
},
ls : function(ip, grep) {
if (workerScript.checkingRam) {
- if (workerScript.loadedFns.ls) {
- return 0;
- } else {
- workerScript.loadedFns.ls = true;
- return _Constants_js__WEBPACK_IMPORTED_MODULE_6__["CONSTANTS"].ScriptScanRamCost;
- }
+ return updateStaticRam("ls", _Constants_js__WEBPACK_IMPORTED_MODULE_6__["CONSTANTS"].ScriptScanRamCost);
}
+ updateDynamicRam("ls", _Constants_js__WEBPACK_IMPORTED_MODULE_6__["CONSTANTS"].ScriptScanRamCost);
if (ip === undefined) {
- throw Object(_NetscriptEvaluator_js__WEBPACK_IMPORTED_MODULE_24__["makeRuntimeRejectMsg"])(workerScript, "ls() failed because of invalid arguments. Usage: ls(ip/hostname, [grep filter])");
+ throw Object(_NetscriptEvaluator_js__WEBPACK_IMPORTED_MODULE_25__["makeRuntimeRejectMsg"])(workerScript, "ls() failed because of invalid arguments. Usage: ls(ip/hostname, [grep filter])");
}
- var server = Object(_Server_js__WEBPACK_IMPORTED_MODULE_17__["getServer"])(ip);
+ var server = Object(_Server_js__WEBPACK_IMPORTED_MODULE_18__["getServer"])(ip);
if (server == null) {
workerScript.scriptRef.log("ls() failed. Invalid IP or hostname passed in: " + ip);
- throw Object(_NetscriptEvaluator_js__WEBPACK_IMPORTED_MODULE_24__["makeRuntimeRejectMsg"])(workerScript, "ls() failed. Invalid IP or hostname passed in: " + ip);
+ throw Object(_NetscriptEvaluator_js__WEBPACK_IMPORTED_MODULE_25__["makeRuntimeRejectMsg"])(workerScript, "ls() failed. Invalid IP or hostname passed in: " + ip);
}
//Get the grep filter, if one exists
@@ -31233,7 +31481,7 @@ function NetscriptFunctions(workerScript) {
}
for (var i = 0; i < server.messages.length; i++) {
if (filter) {
- if (server.messages[i] instanceof _Message_js__WEBPACK_IMPORTED_MODULE_13__["Message"]) {
+ if (server.messages[i] instanceof _Message_js__WEBPACK_IMPORTED_MODULE_14__["Message"]) {
if (server.messages[i].filename.includes(filter)) {
allFiles.push(server.messages[i].filename);
}
@@ -31241,7 +31489,7 @@ function NetscriptFunctions(workerScript) {
allFiles.push(server.messages[i]);
}
} else {
- if (server.messages[i] instanceof _Message_js__WEBPACK_IMPORTED_MODULE_13__["Message"]) {
+ if (server.messages[i] instanceof _Message_js__WEBPACK_IMPORTED_MODULE_14__["Message"]) {
allFiles.push(server.messages[i].filename);
} else {
allFiles.push(server.messages[i]);
@@ -31263,322 +31511,268 @@ function NetscriptFunctions(workerScript) {
allFiles.sort();
return allFiles;
},
+ ps : function(ip=workerScript.serverIp) {
+ if (workerScript.checkingRam) {
+ return updateStaticRam("ps", _Constants_js__WEBPACK_IMPORTED_MODULE_6__["CONSTANTS"].ScriptScanRamCost);
+ }
+ updateDynamicRam("ps", _Constants_js__WEBPACK_IMPORTED_MODULE_6__["CONSTANTS"].ScriptScanRamCost);
+ var server = Object(_Server_js__WEBPACK_IMPORTED_MODULE_18__["getServer"])(ip);
+ if (server == null){
+ workerScript.scriptRef.log("ps() failed. Invalid IP or hostname passed in: " + ip);
+ throw Object(_NetscriptEvaluator_js__WEBPACK_IMPORTED_MODULE_25__["makeRuntimeRejectMsg"])(workerScript, "ps() failed. Invalid IP or hostname passed in: " + ip);
+ }
+ const processes = [];
+ for(const i in server.runningScripts) {
+ const script = server.runningScripts[i];
+ processes.push({filename:script.filename, threads: script.threads, args: script.args.slice()})
+ }
+ return processes;
+ },
hasRootAccess : function(ip) {
if (workerScript.checkingRam) {
- if (workerScript.loadedFns.hasRootAccess) {
- return 0;
- } else {
- workerScript.loadedFns.hasRootAccess = true;
- return _Constants_js__WEBPACK_IMPORTED_MODULE_6__["CONSTANTS"].ScriptHasRootAccessRamCost;
- }
+ return updateStaticRam("hasRootAccess", _Constants_js__WEBPACK_IMPORTED_MODULE_6__["CONSTANTS"].ScriptHasRootAccessRamCost);
}
+ updateDynamicRam("hasRootAccess", _Constants_js__WEBPACK_IMPORTED_MODULE_6__["CONSTANTS"].ScriptHasRootAccessRamCost);
if (ip===undefined){
- throw Object(_NetscriptEvaluator_js__WEBPACK_IMPORTED_MODULE_24__["makeRuntimeRejectMsg"])(workerScript, "hasRootAccess() call has incorrect number of arguments. Takes 1 argument");
+ throw Object(_NetscriptEvaluator_js__WEBPACK_IMPORTED_MODULE_25__["makeRuntimeRejectMsg"])(workerScript, "hasRootAccess() call has incorrect number of arguments. Takes 1 argument");
}
- var server = Object(_Server_js__WEBPACK_IMPORTED_MODULE_17__["getServer"])(ip);
+ var server = Object(_Server_js__WEBPACK_IMPORTED_MODULE_18__["getServer"])(ip);
if (server == null){
workerScript.scriptRef.log("hasRootAccess() failed. Invalid IP or hostname passed in: " + ip);
- throw Object(_NetscriptEvaluator_js__WEBPACK_IMPORTED_MODULE_24__["makeRuntimeRejectMsg"])(workerScript, "hasRootAccess() failed. Invalid IP or hostname passed in: " + ip);
+ throw Object(_NetscriptEvaluator_js__WEBPACK_IMPORTED_MODULE_25__["makeRuntimeRejectMsg"])(workerScript, "hasRootAccess() failed. Invalid IP or hostname passed in: " + ip);
}
return server.hasAdminRights;
},
getIp : function() {
if (workerScript.checkingRam) {
- if (workerScript.loadedFns.getIp) {
- return 0;
- } else {
- workerScript.loadedFns.getIp = true;
- return _Constants_js__WEBPACK_IMPORTED_MODULE_6__["CONSTANTS"].ScriptGetHostnameRamCost;
- }
+ return updateStaticRam("getIp", _Constants_js__WEBPACK_IMPORTED_MODULE_6__["CONSTANTS"].ScriptGetHostnameRamCost);
}
- var scriptServer = Object(_Server_js__WEBPACK_IMPORTED_MODULE_17__["getServer"])(workerScript.serverIp);
+ updateDynamicRam("getIp", _Constants_js__WEBPACK_IMPORTED_MODULE_6__["CONSTANTS"].ScriptGetHostnameRamCost);
+ var scriptServer = Object(_Server_js__WEBPACK_IMPORTED_MODULE_18__["getServer"])(workerScript.serverIp);
if (scriptServer == null) {
- throw Object(_NetscriptEvaluator_js__WEBPACK_IMPORTED_MODULE_24__["makeRuntimeRejectMsg"])(workerScript, "Could not find server. This is a bug in the game. Report to game dev");
+ throw Object(_NetscriptEvaluator_js__WEBPACK_IMPORTED_MODULE_25__["makeRuntimeRejectMsg"])(workerScript, "Could not find server. This is a bug in the game. Report to game dev");
}
return scriptServer.ip;
},
getHostname : function(){
if (workerScript.checkingRam) {
- if (workerScript.loadedFns.getHostname) {
- return 0;
- } else {
- workerScript.loadedFns.getHostname = true;
- return _Constants_js__WEBPACK_IMPORTED_MODULE_6__["CONSTANTS"].ScriptGetHostnameRamCost;
- }
+ return updateStaticRam("getHostname", _Constants_js__WEBPACK_IMPORTED_MODULE_6__["CONSTANTS"].ScriptGetHostnameRamCost);
}
- var scriptServer = Object(_Server_js__WEBPACK_IMPORTED_MODULE_17__["getServer"])(workerScript.serverIp);
+ updateDynamicRam("getHostname", _Constants_js__WEBPACK_IMPORTED_MODULE_6__["CONSTANTS"].ScriptGetHostnameRamCost);
+ var scriptServer = Object(_Server_js__WEBPACK_IMPORTED_MODULE_18__["getServer"])(workerScript.serverIp);
if (scriptServer == null) {
- throw Object(_NetscriptEvaluator_js__WEBPACK_IMPORTED_MODULE_24__["makeRuntimeRejectMsg"])(workerScript, "Could not find server. This is a bug in the game. Report to game dev");
+ throw Object(_NetscriptEvaluator_js__WEBPACK_IMPORTED_MODULE_25__["makeRuntimeRejectMsg"])(workerScript, "Could not find server. This is a bug in the game. Report to game dev");
}
return scriptServer.hostname;
},
getHackingLevel : function(){
if (workerScript.checkingRam) {
- if (workerScript.loadedFns.getHackingLevel) {
- return 0;
- } else {
- workerScript.loadedFns.getHackingLevel = true;
- return _Constants_js__WEBPACK_IMPORTED_MODULE_6__["CONSTANTS"].ScriptGetHackingLevelRamCost;
- }
+ return updateStaticRam("getHackingLevel", _Constants_js__WEBPACK_IMPORTED_MODULE_6__["CONSTANTS"].ScriptGetHackingLevelRamCost);
}
- _Player_js__WEBPACK_IMPORTED_MODULE_15__["Player"].updateSkillLevels();
+ updateDynamicRam("getHackingLevel", _Constants_js__WEBPACK_IMPORTED_MODULE_6__["CONSTANTS"].ScriptGetHackingLevelRamCost);
+ _Player_js__WEBPACK_IMPORTED_MODULE_16__["Player"].updateSkillLevels();
if (workerScript.disableLogs.ALL == null && workerScript.disableLogs.getHackingLevel == null) {
- workerScript.scriptRef.log("getHackingLevel() returned " + _Player_js__WEBPACK_IMPORTED_MODULE_15__["Player"].hacking_skill);
+ workerScript.scriptRef.log("getHackingLevel() returned " + _Player_js__WEBPACK_IMPORTED_MODULE_16__["Player"].hacking_skill);
}
- return _Player_js__WEBPACK_IMPORTED_MODULE_15__["Player"].hacking_skill;
+ return _Player_js__WEBPACK_IMPORTED_MODULE_16__["Player"].hacking_skill;
},
getHackingMultipliers : function() {
if (workerScript.checkingRam) {
- if (workerScript.loadedFns.getHackingMultipliers) {
- return 0;
- } else {
- workerScript.loadedFns.getHackingMultipliers = true;
- return _Constants_js__WEBPACK_IMPORTED_MODULE_6__["CONSTANTS"].ScriptGetMultipliersRamCost;
- }
+ return updateStaticRam("getHackingMultipliers", _Constants_js__WEBPACK_IMPORTED_MODULE_6__["CONSTANTS"].ScriptGetMultipliersRamCost);
}
+ updateDynamicRam("getHackingMultipliers", _Constants_js__WEBPACK_IMPORTED_MODULE_6__["CONSTANTS"].ScriptGetMultipliersRamCost);
return {
- chance: _Player_js__WEBPACK_IMPORTED_MODULE_15__["Player"].hacking_chance_mult,
- speed: _Player_js__WEBPACK_IMPORTED_MODULE_15__["Player"].hacking_speed_mult,
- money: _Player_js__WEBPACK_IMPORTED_MODULE_15__["Player"].hacking_money_mult,
- growth: _Player_js__WEBPACK_IMPORTED_MODULE_15__["Player"].hacking_grow_mult,
+ chance: _Player_js__WEBPACK_IMPORTED_MODULE_16__["Player"].hacking_chance_mult,
+ speed: _Player_js__WEBPACK_IMPORTED_MODULE_16__["Player"].hacking_speed_mult,
+ money: _Player_js__WEBPACK_IMPORTED_MODULE_16__["Player"].hacking_money_mult,
+ growth: _Player_js__WEBPACK_IMPORTED_MODULE_16__["Player"].hacking_grow_mult,
};
},
getHacknetMultipliers : function() {
if (workerScript.checkingRam) {
- if (workerScript.loadedFns.getHacknetMultipliers) {
- return 0;
- } else {
- workerScript.loadedFns.getHacknetMultipliers = true;
- return _Constants_js__WEBPACK_IMPORTED_MODULE_6__["CONSTANTS"].ScriptGetMultipliersRamCost;
- }
+ return updateStaticRam("getHacknetMultipliers", _Constants_js__WEBPACK_IMPORTED_MODULE_6__["CONSTANTS"].ScriptGetMultipliersRamCost);
}
+ updateDynamicRam("getHacknetMultipliers", _Constants_js__WEBPACK_IMPORTED_MODULE_6__["CONSTANTS"].ScriptGetMultipliersRamCost);
return {
- production: _Player_js__WEBPACK_IMPORTED_MODULE_15__["Player"].hacknet_node_money_mult,
- purchaseCost: _Player_js__WEBPACK_IMPORTED_MODULE_15__["Player"].hacknet_node_purchase_cost_mult,
- ramCost: _Player_js__WEBPACK_IMPORTED_MODULE_15__["Player"].hacknet_node_ram_cost_mult,
- coreCost: _Player_js__WEBPACK_IMPORTED_MODULE_15__["Player"].hacknet_node_core_cost_mult,
- levelCost: _Player_js__WEBPACK_IMPORTED_MODULE_15__["Player"].hacknet_node_level_cost_mult,
+ production: _Player_js__WEBPACK_IMPORTED_MODULE_16__["Player"].hacknet_node_money_mult,
+ purchaseCost: _Player_js__WEBPACK_IMPORTED_MODULE_16__["Player"].hacknet_node_purchase_cost_mult,
+ ramCost: _Player_js__WEBPACK_IMPORTED_MODULE_16__["Player"].hacknet_node_ram_cost_mult,
+ coreCost: _Player_js__WEBPACK_IMPORTED_MODULE_16__["Player"].hacknet_node_core_cost_mult,
+ levelCost: _Player_js__WEBPACK_IMPORTED_MODULE_16__["Player"].hacknet_node_level_cost_mult,
};
},
getBitNodeMultipliers: function() {
if (workerScript.checkingRam) {
- if (workerScript.loadedFns.getBitNodeMultipliers) {
- return 0;
- } else {
- workerScript.loadedFns.getBitNodeMultipliers = true;
- return _Constants_js__WEBPACK_IMPORTED_MODULE_6__["CONSTANTS"].ScriptGetMultipliersRamCost;
- }
+ return updateStaticRam("getBitNodeMultipliers", _Constants_js__WEBPACK_IMPORTED_MODULE_6__["CONSTANTS"].ScriptGetMultipliersRamCost);
}
+ updateDynamicRam("getBitNodeMultipliers", _Constants_js__WEBPACK_IMPORTED_MODULE_6__["CONSTANTS"].ScriptGetMultipliersRamCost);
if (!hasAISF) {
- throw Object(_NetscriptEvaluator_js__WEBPACK_IMPORTED_MODULE_24__["makeRuntimeRejectMsg"])(workerScript, "Cannot run getBitNodeMultipliers(). It requires Source-File 5 to run.");
+ throw Object(_NetscriptEvaluator_js__WEBPACK_IMPORTED_MODULE_25__["makeRuntimeRejectMsg"])(workerScript, "Cannot run getBitNodeMultipliers(). It requires Source-File 5 to run.");
}
- return _BitNode_js__WEBPACK_IMPORTED_MODULE_2__["BitNodeMultipliers"];
+ let copy = Object.assign({}, _BitNode_js__WEBPACK_IMPORTED_MODULE_2__["BitNodeMultipliers"]);
+ return copy;
},
getServerMoneyAvailable : function(ip){
if (workerScript.checkingRam) {
- if (workerScript.loadedFns.getServerMoneyAvailable) {
- return 0;
- } else {
- workerScript.loadedFns.getServerMoneyAvailable = true;
- return _Constants_js__WEBPACK_IMPORTED_MODULE_6__["CONSTANTS"].ScriptGetServerRamCost;
- }
+ return updateStaticRam("getServerMoneyAvailable", _Constants_js__WEBPACK_IMPORTED_MODULE_6__["CONSTANTS"].ScriptGetServerRamCost);
}
- var server = Object(_Server_js__WEBPACK_IMPORTED_MODULE_17__["getServer"])(ip);
+ updateDynamicRam("getServerMoneyAvailable", _Constants_js__WEBPACK_IMPORTED_MODULE_6__["CONSTANTS"].ScriptGetServerRamCost);
+ var server = Object(_Server_js__WEBPACK_IMPORTED_MODULE_18__["getServer"])(ip);
if (server == null) {
workerScript.scriptRef.log("getServerMoneyAvailable() failed. Invalid IP or hostname passed in: " + ip);
- throw Object(_NetscriptEvaluator_js__WEBPACK_IMPORTED_MODULE_24__["makeRuntimeRejectMsg"])(workerScript, "getServerMoneyAvailable() failed. Invalid IP or hostname passed in: " + ip);
+ throw Object(_NetscriptEvaluator_js__WEBPACK_IMPORTED_MODULE_25__["makeRuntimeRejectMsg"])(workerScript, "getServerMoneyAvailable() failed. Invalid IP or hostname passed in: " + ip);
}
if (server.hostname == "home") {
//Return player's money
if (workerScript.disableLogs.ALL == null && workerScript.disableLogs.getServerMoneyAvailable == null) {
- workerScript.scriptRef.log("getServerMoneyAvailable('home') returned player's money: $" + Object(_utils_StringHelperFunctions_js__WEBPACK_IMPORTED_MODULE_31__["formatNumber"])(_Player_js__WEBPACK_IMPORTED_MODULE_15__["Player"].money.toNumber(), 2));
+ workerScript.scriptRef.log("getServerMoneyAvailable('home') returned player's money: $" + Object(_utils_StringHelperFunctions_js__WEBPACK_IMPORTED_MODULE_32__["formatNumber"])(_Player_js__WEBPACK_IMPORTED_MODULE_16__["Player"].money.toNumber(), 2));
}
- return _Player_js__WEBPACK_IMPORTED_MODULE_15__["Player"].money.toNumber();
+ return _Player_js__WEBPACK_IMPORTED_MODULE_16__["Player"].money.toNumber();
}
if (workerScript.disableLogs.ALL == null && workerScript.disableLogs.getServerMoneyAvailable == null) {
- workerScript.scriptRef.log("getServerMoneyAvailable() returned " + Object(_utils_StringHelperFunctions_js__WEBPACK_IMPORTED_MODULE_31__["formatNumber"])(server.moneyAvailable, 2) + " for " + server.hostname);
+ workerScript.scriptRef.log("getServerMoneyAvailable() returned " + Object(_utils_StringHelperFunctions_js__WEBPACK_IMPORTED_MODULE_32__["formatNumber"])(server.moneyAvailable, 2) + " for " + server.hostname);
}
return server.moneyAvailable;
},
getServerSecurityLevel : function(ip){
if (workerScript.checkingRam) {
- if (workerScript.loadedFns.getServerSecurityLevel) {
- return 0;
- } else {
- workerScript.loadedFns.getServerSecurityLevel = true;
- return _Constants_js__WEBPACK_IMPORTED_MODULE_6__["CONSTANTS"].ScriptGetServerRamCost;
- }
+ return updateStaticRam("getServerSecurityLevel", _Constants_js__WEBPACK_IMPORTED_MODULE_6__["CONSTANTS"].ScriptGetServerRamCost);
}
- var server = Object(_Server_js__WEBPACK_IMPORTED_MODULE_17__["getServer"])(ip);
+ updateDynamicRam("getServerSecurityLevel", _Constants_js__WEBPACK_IMPORTED_MODULE_6__["CONSTANTS"].ScriptGetServerRamCost);
+ var server = Object(_Server_js__WEBPACK_IMPORTED_MODULE_18__["getServer"])(ip);
if (server == null) {
workerScript.scriptRef.log("getServerSecurityLevel() failed. Invalid IP or hostname passed in: " + ip);
- throw Object(_NetscriptEvaluator_js__WEBPACK_IMPORTED_MODULE_24__["makeRuntimeRejectMsg"])(workerScript, "getServerSecurityLevel() failed. Invalid IP or hostname passed in: " + ip);
+ throw Object(_NetscriptEvaluator_js__WEBPACK_IMPORTED_MODULE_25__["makeRuntimeRejectMsg"])(workerScript, "getServerSecurityLevel() failed. Invalid IP or hostname passed in: " + ip);
}
if (workerScript.disableLogs.ALL == null && workerScript.disableLogs.getServerSecurityLevel == null) {
- workerScript.scriptRef.log("getServerSecurityLevel() returned " + Object(_utils_StringHelperFunctions_js__WEBPACK_IMPORTED_MODULE_31__["formatNumber"])(server.hackDifficulty, 3) + " for " + server.hostname);
+ workerScript.scriptRef.log("getServerSecurityLevel() returned " + Object(_utils_StringHelperFunctions_js__WEBPACK_IMPORTED_MODULE_32__["formatNumber"])(server.hackDifficulty, 3) + " for " + server.hostname);
}
return server.hackDifficulty;
},
getServerBaseSecurityLevel : function(ip){
if (workerScript.checkingRam) {
- if (workerScript.loadedFns.getServerBaseSecurityLevel) {
- return 0;
- } else {
- workerScript.loadedFns.getServerBaseSecurityLevel = true;
- return _Constants_js__WEBPACK_IMPORTED_MODULE_6__["CONSTANTS"].ScriptGetServerRamCost;
- }
+ return updateStaticRam("getServerBaseSecurityLevel", _Constants_js__WEBPACK_IMPORTED_MODULE_6__["CONSTANTS"].ScriptGetServerRamCost);
}
- var server = Object(_Server_js__WEBPACK_IMPORTED_MODULE_17__["getServer"])(ip);
+ updateDynamicRam("getServerBaseSecurityLevel", _Constants_js__WEBPACK_IMPORTED_MODULE_6__["CONSTANTS"].ScriptGetServerRamCost);
+ var server = Object(_Server_js__WEBPACK_IMPORTED_MODULE_18__["getServer"])(ip);
if (server == null) {
workerScript.scriptRef.log("getServerBaseSecurityLevel() failed. Invalid IP or hostname passed in: " + ip);
- throw Object(_NetscriptEvaluator_js__WEBPACK_IMPORTED_MODULE_24__["makeRuntimeRejectMsg"])(workerScript, "getServerBaseSecurityLevel() failed. Invalid IP or hostname passed in: " + ip);
+ throw Object(_NetscriptEvaluator_js__WEBPACK_IMPORTED_MODULE_25__["makeRuntimeRejectMsg"])(workerScript, "getServerBaseSecurityLevel() failed. Invalid IP or hostname passed in: " + ip);
}
if (workerScript.disableLogs.ALL == null && workerScript.disableLogs.getServerBaseSecurityLevel == null) {
- workerScript.scriptRef.log("getServerBaseSecurityLevel() returned " + Object(_utils_StringHelperFunctions_js__WEBPACK_IMPORTED_MODULE_31__["formatNumber"])(server.baseDifficulty, 3) + " for " + server.hostname);
+ workerScript.scriptRef.log("getServerBaseSecurityLevel() returned " + Object(_utils_StringHelperFunctions_js__WEBPACK_IMPORTED_MODULE_32__["formatNumber"])(server.baseDifficulty, 3) + " for " + server.hostname);
}
return server.baseDifficulty;
},
getServerMinSecurityLevel : function(ip) {
if (workerScript.checkingRam) {
- if (workerScript.loadedFns.getServerMinSecurityLevel) {
- return 0;
- } else {
- workerScript.loadedFns.getServerMinSecurityLevel = true;
- return _Constants_js__WEBPACK_IMPORTED_MODULE_6__["CONSTANTS"].ScriptGetServerRamCost;
- }
+ return updateStaticRam("getServerMinSecurityLevel", _Constants_js__WEBPACK_IMPORTED_MODULE_6__["CONSTANTS"].ScriptGetServerRamCost);
}
- var server = Object(_Server_js__WEBPACK_IMPORTED_MODULE_17__["getServer"])(ip);
+ updateDynamicRam("getServerMinSecurityLevel", _Constants_js__WEBPACK_IMPORTED_MODULE_6__["CONSTANTS"].ScriptGetServerRamCost);
+ var server = Object(_Server_js__WEBPACK_IMPORTED_MODULE_18__["getServer"])(ip);
if (server == null) {
workerScript.scriptRef.log("getServerMinSecurityLevel() failed. Invalid IP or hostname passed in: " + ip);
- throw Object(_NetscriptEvaluator_js__WEBPACK_IMPORTED_MODULE_24__["makeRuntimeRejectMsg"])(workerScript, "getServerMinSecurityLevel() failed. Invalid IP or hostname passed in: " + ip);
+ throw Object(_NetscriptEvaluator_js__WEBPACK_IMPORTED_MODULE_25__["makeRuntimeRejectMsg"])(workerScript, "getServerMinSecurityLevel() failed. Invalid IP or hostname passed in: " + ip);
}
if (workerScript.disableLogs.ALL == null && workerScript.disableLogs.getServerMinSecurityLevel == null) {
- workerScript.scriptRef.log("getServerMinSecurityLevel() returned " + Object(_utils_StringHelperFunctions_js__WEBPACK_IMPORTED_MODULE_31__["formatNumber"])(server.minDifficulty, 3) + " for " + server.hostname);
+ workerScript.scriptRef.log("getServerMinSecurityLevel() returned " + Object(_utils_StringHelperFunctions_js__WEBPACK_IMPORTED_MODULE_32__["formatNumber"])(server.minDifficulty, 3) + " for " + server.hostname);
}
return server.minDifficulty;
},
getServerRequiredHackingLevel : function(ip) {
if (workerScript.checkingRam) {
- if (workerScript.loadedFns.getServerRequiredHackingLevel) {
- return 0;
- } else {
- workerScript.loadedFns.getServerRequiredHackingLevel = true;
- return _Constants_js__WEBPACK_IMPORTED_MODULE_6__["CONSTANTS"].ScriptGetServerRamCost;
- }
+ return updateStaticRam("getServerRequiredHackingLevel", _Constants_js__WEBPACK_IMPORTED_MODULE_6__["CONSTANTS"].ScriptGetServerRamCost);
}
- var server = Object(_Server_js__WEBPACK_IMPORTED_MODULE_17__["getServer"])(ip);
+ updateDynamicRam("getServerRequiredHackingLevel", _Constants_js__WEBPACK_IMPORTED_MODULE_6__["CONSTANTS"].ScriptGetServerRamCost);
+ var server = Object(_Server_js__WEBPACK_IMPORTED_MODULE_18__["getServer"])(ip);
if (server == null) {
workerScript.scriptRef.log("getServerRequiredHackingLevel() failed. Invalid IP or hostname passed in: " + ip);
- throw Object(_NetscriptEvaluator_js__WEBPACK_IMPORTED_MODULE_24__["makeRuntimeRejectMsg"])(workerScript, "getServerRequiredHackingLevel() failed. Invalid IP or hostname passed in: " + ip);
+ throw Object(_NetscriptEvaluator_js__WEBPACK_IMPORTED_MODULE_25__["makeRuntimeRejectMsg"])(workerScript, "getServerRequiredHackingLevel() failed. Invalid IP or hostname passed in: " + ip);
}
if (workerScript.disableLogs.ALL == null && workerScript.disableLogs.getServerRequiredHackingLevel == null) {
- workerScript.scriptRef.log("getServerRequiredHackingLevel returned " + Object(_utils_StringHelperFunctions_js__WEBPACK_IMPORTED_MODULE_31__["formatNumber"])(server.requiredHackingSkill, 0) + " for " + server.hostname);
+ workerScript.scriptRef.log("getServerRequiredHackingLevel returned " + Object(_utils_StringHelperFunctions_js__WEBPACK_IMPORTED_MODULE_32__["formatNumber"])(server.requiredHackingSkill, 0) + " for " + server.hostname);
}
return server.requiredHackingSkill;
},
getServerMaxMoney : function(ip){
if (workerScript.checkingRam) {
- if (workerScript.loadedFns.getServerMaxMoney) {
- return 0;
- } else {
- workerScript.loadedFns.getServerMaxMoney = true;
- return _Constants_js__WEBPACK_IMPORTED_MODULE_6__["CONSTANTS"].ScriptGetServerRamCost;
- }
+ return updateStaticRam("getServerMaxMoney", _Constants_js__WEBPACK_IMPORTED_MODULE_6__["CONSTANTS"].ScriptGetServerRamCost);
}
- var server = Object(_Server_js__WEBPACK_IMPORTED_MODULE_17__["getServer"])(ip);
+ updateDynamicRam("getServerMaxMoney", _Constants_js__WEBPACK_IMPORTED_MODULE_6__["CONSTANTS"].ScriptGetServerRamCost);
+ var server = Object(_Server_js__WEBPACK_IMPORTED_MODULE_18__["getServer"])(ip);
if (server == null) {
workerScript.scriptRef.log("getServerMaxMoney() failed. Invalid IP or hostname passed in: " + ip);
- throw Object(_NetscriptEvaluator_js__WEBPACK_IMPORTED_MODULE_24__["makeRuntimeRejectMsg"])(workerScript, "getServerMaxMoney() failed. Invalid IP or hostname passed in: " + ip);
+ throw Object(_NetscriptEvaluator_js__WEBPACK_IMPORTED_MODULE_25__["makeRuntimeRejectMsg"])(workerScript, "getServerMaxMoney() failed. Invalid IP or hostname passed in: " + ip);
}
if (workerScript.disableLogs.ALL == null && workerScript.disableLogs.getServerMaxMoney == null) {
- workerScript.scriptRef.log("getServerMaxMoney() returned " + Object(_utils_StringHelperFunctions_js__WEBPACK_IMPORTED_MODULE_31__["formatNumber"])(server.moneyMax, 0) + " for " + server.hostname);
+ workerScript.scriptRef.log("getServerMaxMoney() returned " + Object(_utils_StringHelperFunctions_js__WEBPACK_IMPORTED_MODULE_32__["formatNumber"])(server.moneyMax, 0) + " for " + server.hostname);
}
return server.moneyMax;
},
getServerGrowth : function(ip) {
if (workerScript.checkingRam) {
- if (workerScript.loadedFns.getServerGrowth) {
- return 0;
- } else {
- workerScript.loadedFns.getServerGrowth = true;
- return _Constants_js__WEBPACK_IMPORTED_MODULE_6__["CONSTANTS"].ScriptGetServerRamCost;
- }
+ return updateStaticRam("getServerGrowth", _Constants_js__WEBPACK_IMPORTED_MODULE_6__["CONSTANTS"].ScriptGetServerRamCost);
}
- var server = Object(_Server_js__WEBPACK_IMPORTED_MODULE_17__["getServer"])(ip);
+ updateDynamicRam("getServerGrowth", _Constants_js__WEBPACK_IMPORTED_MODULE_6__["CONSTANTS"].ScriptGetServerRamCost);
+ var server = Object(_Server_js__WEBPACK_IMPORTED_MODULE_18__["getServer"])(ip);
if (server == null) {
workerScript.scriptRef.log("getServerGrowth() failed. Invalid IP or hostname passed in: " + ip);
- throw Object(_NetscriptEvaluator_js__WEBPACK_IMPORTED_MODULE_24__["makeRuntimeRejectMsg"])(workerScript, "getServerGrowth() failed. Invalid IP or hostname passed in: " + ip);
+ throw Object(_NetscriptEvaluator_js__WEBPACK_IMPORTED_MODULE_25__["makeRuntimeRejectMsg"])(workerScript, "getServerGrowth() failed. Invalid IP or hostname passed in: " + ip);
}
if (workerScript.disableLogs.ALL == null && workerScript.disableLogs.getServerGrowth == null) {
- workerScript.scriptRef.log("getServerGrowth() returned " + Object(_utils_StringHelperFunctions_js__WEBPACK_IMPORTED_MODULE_31__["formatNumber"])(server.serverGrowth, 0) + " for " + server.hostname);
+ workerScript.scriptRef.log("getServerGrowth() returned " + Object(_utils_StringHelperFunctions_js__WEBPACK_IMPORTED_MODULE_32__["formatNumber"])(server.serverGrowth, 0) + " for " + server.hostname);
}
return server.serverGrowth;
},
getServerNumPortsRequired : function(ip) {
if (workerScript.checkingRam) {
- if (workerScript.loadedFns.getServerNumPortsRequired) {
- return 0;
- } else {
- workerScript.loadedFns.getServerNumPortsRequired = true;
- return _Constants_js__WEBPACK_IMPORTED_MODULE_6__["CONSTANTS"].ScriptGetServerRamCost;
- }
+ return updateStaticRam("getServerNumPortsRequired", _Constants_js__WEBPACK_IMPORTED_MODULE_6__["CONSTANTS"].ScriptGetServerRamCost);
}
- var server = Object(_Server_js__WEBPACK_IMPORTED_MODULE_17__["getServer"])(ip);
+ updateDynamicRam("getServerNumPortsRequired", _Constants_js__WEBPACK_IMPORTED_MODULE_6__["CONSTANTS"].ScriptGetServerRamCost);
+ var server = Object(_Server_js__WEBPACK_IMPORTED_MODULE_18__["getServer"])(ip);
if (server == null) {
workerScript.scriptRef.log("getServerNumPortsRequired() failed. Invalid IP or hostname passed in: " + ip);
- throw Object(_NetscriptEvaluator_js__WEBPACK_IMPORTED_MODULE_24__["makeRuntimeRejectMsg"])(workerScript, "getServerNumPortsRequired() failed. Invalid IP or hostname passed in: " + ip);
+ throw Object(_NetscriptEvaluator_js__WEBPACK_IMPORTED_MODULE_25__["makeRuntimeRejectMsg"])(workerScript, "getServerNumPortsRequired() failed. Invalid IP or hostname passed in: " + ip);
}
if (workerScript.disableLogs.ALL == null && workerScript.disableLogs.getServerNumPortsRequired == null) {
- workerScript.scriptRef.log("getServerNumPortsRequired() returned " + Object(_utils_StringHelperFunctions_js__WEBPACK_IMPORTED_MODULE_31__["formatNumber"])(server.numOpenPortsRequired, 0) + " for " + server.hostname);
+ workerScript.scriptRef.log("getServerNumPortsRequired() returned " + Object(_utils_StringHelperFunctions_js__WEBPACK_IMPORTED_MODULE_32__["formatNumber"])(server.numOpenPortsRequired, 0) + " for " + server.hostname);
}
return server.numOpenPortsRequired;
},
getServerRam : function(ip) {
if (workerScript.checkingRam) {
- if (workerScript.loadedFns.getServerRam) {
- return 0;
- } else {
- workerScript.loadedFns.getServerRam = true;
- return _Constants_js__WEBPACK_IMPORTED_MODULE_6__["CONSTANTS"].ScriptGetServerRamCost;
- }
+ return updateStaticRam("getServerRam", _Constants_js__WEBPACK_IMPORTED_MODULE_6__["CONSTANTS"].ScriptGetServerRamCost);
}
- var server = Object(_Server_js__WEBPACK_IMPORTED_MODULE_17__["getServer"])(ip);
+ updateDynamicRam("getServerRam", _Constants_js__WEBPACK_IMPORTED_MODULE_6__["CONSTANTS"].ScriptGetServerRamCost);
+ var server = Object(_Server_js__WEBPACK_IMPORTED_MODULE_18__["getServer"])(ip);
if (server == null) {
workerScript.scriptRef.log("getServerRam() failed. Invalid IP or hostname passed in: " + ip);
- throw Object(_NetscriptEvaluator_js__WEBPACK_IMPORTED_MODULE_24__["makeRuntimeRejectMsg"])(workerScript, "getServerRam() failed. Invalid IP or hostname passed in: " + ip);
+ throw Object(_NetscriptEvaluator_js__WEBPACK_IMPORTED_MODULE_25__["makeRuntimeRejectMsg"])(workerScript, "getServerRam() failed. Invalid IP or hostname passed in: " + ip);
}
if (workerScript.disableLogs.ALL == null && workerScript.disableLogs.getServerRam == null) {
- workerScript.scriptRef.log("getServerRam() returned [" + Object(_utils_StringHelperFunctions_js__WEBPACK_IMPORTED_MODULE_31__["formatNumber"])(server.maxRam, 2) + "GB, " + Object(_utils_StringHelperFunctions_js__WEBPACK_IMPORTED_MODULE_31__["formatNumber"])(server.ramUsed, 2) + "GB]");
+ workerScript.scriptRef.log("getServerRam() returned [" + Object(_utils_StringHelperFunctions_js__WEBPACK_IMPORTED_MODULE_32__["formatNumber"])(server.maxRam, 2) + "GB, " + Object(_utils_StringHelperFunctions_js__WEBPACK_IMPORTED_MODULE_32__["formatNumber"])(server.ramUsed, 2) + "GB]");
}
return [server.maxRam, server.ramUsed];
},
serverExists : function(ip) {
if (workerScript.checkingRam) {
- if (workerScript.loadedFns.serverExists) {
- return 0;
- } else {
- workerScript.loadedFns.serverExists = true;
- return _Constants_js__WEBPACK_IMPORTED_MODULE_6__["CONSTANTS"].ScriptGetServerRamCost;
- }
+ return updateStaticRam("serverExists", _Constants_js__WEBPACK_IMPORTED_MODULE_6__["CONSTANTS"].ScriptGetServerRamCost);
}
- return (Object(_Server_js__WEBPACK_IMPORTED_MODULE_17__["getServer"])(ip) !== null);
+ updateDynamicRam("serverExists", _Constants_js__WEBPACK_IMPORTED_MODULE_6__["CONSTANTS"].ScriptGetServerRamCost);
+ return (Object(_Server_js__WEBPACK_IMPORTED_MODULE_18__["getServer"])(ip) !== null);
},
fileExists : function(filename,ip=workerScript.serverIp) {
if (workerScript.checkingRam) {
- if (workerScript.loadedFns.fileExists) {
- return 0;
- } else {
- workerScript.loadedFns.fileExists = true;
- return _Constants_js__WEBPACK_IMPORTED_MODULE_6__["CONSTANTS"].ScriptFileExistsRamCost;
- }
+ return updateStaticRam("fileExists", _Constants_js__WEBPACK_IMPORTED_MODULE_6__["CONSTANTS"].ScriptFileExistsRamCost);
}
+ updateDynamicRam("fileExists", _Constants_js__WEBPACK_IMPORTED_MODULE_6__["CONSTANTS"].ScriptFileExistsRamCost);
if (filename === undefined) {
- throw Object(_NetscriptEvaluator_js__WEBPACK_IMPORTED_MODULE_24__["makeRuntimeRejectMsg"])(workerScript, "fileExists() call has incorrect number of arguments. Usage: fileExists(scriptname, [server])");
+ throw Object(_NetscriptEvaluator_js__WEBPACK_IMPORTED_MODULE_25__["makeRuntimeRejectMsg"])(workerScript, "fileExists() call has incorrect number of arguments. Usage: fileExists(scriptname, [server])");
}
- var server = Object(_Server_js__WEBPACK_IMPORTED_MODULE_17__["getServer"])(ip);
+ var server = Object(_Server_js__WEBPACK_IMPORTED_MODULE_18__["getServer"])(ip);
if (server == null) {
workerScript.scriptRef.log("fileExists() failed. Invalid IP or hostname passed in: " + ip);
- throw Object(_NetscriptEvaluator_js__WEBPACK_IMPORTED_MODULE_24__["makeRuntimeRejectMsg"])(workerScript, "fileExists() failed. Invalid IP or hostname passed in: " + ip);
+ throw Object(_NetscriptEvaluator_js__WEBPACK_IMPORTED_MODULE_25__["makeRuntimeRejectMsg"])(workerScript, "fileExists() failed. Invalid IP or hostname passed in: " + ip);
}
for (var i = 0; i < server.scripts.length; ++i) {
if (filename == server.scripts[i].filename) {
@@ -31591,12 +31785,12 @@ function NetscriptFunctions(workerScript) {
}
}
for (var i = 0; i < server.messages.length; ++i) {
- if (!(server.messages[i] instanceof _Message_js__WEBPACK_IMPORTED_MODULE_13__["Message"]) &&
+ if (!(server.messages[i] instanceof _Message_js__WEBPACK_IMPORTED_MODULE_14__["Message"]) &&
filename.toLowerCase() === server.messages[i]) {
return true;
}
}
- var txtFile = Object(_TextFile_js__WEBPACK_IMPORTED_MODULE_22__["getTextFile"])(filename, server);
+ var txtFile = Object(_TextFile_js__WEBPACK_IMPORTED_MODULE_23__["getTextFile"])(filename, server);
if (txtFile != null) {
return true;
}
@@ -31604,316 +31798,272 @@ function NetscriptFunctions(workerScript) {
},
isRunning : function(filename,ip) {
if (workerScript.checkingRam) {
- if (workerScript.loadedFns.isRunning) {
- return 0;
- } else {
- workerScript.loadedFns.isRunning = true;
- return _Constants_js__WEBPACK_IMPORTED_MODULE_6__["CONSTANTS"].ScriptIsRunningRamCost;
- }
+ return updateStaticRam("isRunning", _Constants_js__WEBPACK_IMPORTED_MODULE_6__["CONSTANTS"].ScriptIsRunningRamCost);
}
+ updateDynamicRam("isRunning", _Constants_js__WEBPACK_IMPORTED_MODULE_6__["CONSTANTS"].ScriptIsRunningRamCost);
if (filename === undefined || ip === undefined) {
- throw Object(_NetscriptEvaluator_js__WEBPACK_IMPORTED_MODULE_24__["makeRuntimeRejectMsg"])(workerScript, "isRunning() call has incorrect number of arguments. Usage: isRunning(scriptname, server, [arg1], [arg2]...)");
+ throw Object(_NetscriptEvaluator_js__WEBPACK_IMPORTED_MODULE_25__["makeRuntimeRejectMsg"])(workerScript, "isRunning() call has incorrect number of arguments. Usage: isRunning(scriptname, server, [arg1], [arg2]...)");
}
- var server = Object(_Server_js__WEBPACK_IMPORTED_MODULE_17__["getServer"])(ip);
+ var server = Object(_Server_js__WEBPACK_IMPORTED_MODULE_18__["getServer"])(ip);
if (server == null) {
workerScript.scriptRef.log("isRunning() failed. Invalid IP or hostname passed in: " + ip);
- throw Object(_NetscriptEvaluator_js__WEBPACK_IMPORTED_MODULE_24__["makeRuntimeRejectMsg"])(workerScript, "isRunning() failed. Invalid IP or hostname passed in: " + ip);
+ throw Object(_NetscriptEvaluator_js__WEBPACK_IMPORTED_MODULE_25__["makeRuntimeRejectMsg"])(workerScript, "isRunning() failed. Invalid IP or hostname passed in: " + ip);
}
var argsForTargetScript = [];
for (var i = 2; i < arguments.length; ++i) {
argsForTargetScript.push(arguments[i]);
}
- return (Object(_Script_js__WEBPACK_IMPORTED_MODULE_16__["findRunningScript"])(filename, argsForTargetScript, server) != null);
+ return (Object(_Script_js__WEBPACK_IMPORTED_MODULE_17__["findRunningScript"])(filename, argsForTargetScript, server) != null);
},
getNextHacknetNodeCost : function() {
if (workerScript.checkingRam) {
- if (workerScript.loadedFns.getNextHacknetNodeCost) {
- return 0;
- } else {
- workerScript.loadedFns.getNextHacknetNodeCost = true;
- return _Constants_js__WEBPACK_IMPORTED_MODULE_6__["CONSTANTS"].ScriptPurchaseHacknetRamCost;
- }
+ return updateStaticRam("getNextHacknetNodeCost", _Constants_js__WEBPACK_IMPORTED_MODULE_6__["CONSTANTS"].ScriptPurchaseHacknetRamCost);
}
- return Object(_HacknetNode_js__WEBPACK_IMPORTED_MODULE_11__["getCostOfNextHacknetNode"])();
+ updateDynamicRam("getNextHacknetNodeCost", _Constants_js__WEBPACK_IMPORTED_MODULE_6__["CONSTANTS"].ScriptPurchaseHacknetRamCost);
+ return Object(_HacknetNode_js__WEBPACK_IMPORTED_MODULE_12__["getCostOfNextHacknetNode"])();
},
purchaseHacknetNode : function() {
if (workerScript.checkingRam) {
- if (workerScript.loadedFns.purchaseHacknetNode) {
- return 0;
- } else {
- workerScript.loadedFns.purchaseHacknetNode = true;
- return _Constants_js__WEBPACK_IMPORTED_MODULE_6__["CONSTANTS"].ScriptPurchaseHacknetRamCost;
- }
+ return updateStaticRam("purchaseHacknetNode", _Constants_js__WEBPACK_IMPORTED_MODULE_6__["CONSTANTS"].ScriptPurchaseHacknetRamCost);
}
- return Object(_HacknetNode_js__WEBPACK_IMPORTED_MODULE_11__["purchaseHacknet"])();
+ updateDynamicRam("purchaseHacknetNode", _Constants_js__WEBPACK_IMPORTED_MODULE_6__["CONSTANTS"].ScriptPurchaseHacknetRamCost);
+ return Object(_HacknetNode_js__WEBPACK_IMPORTED_MODULE_12__["purchaseHacknet"])();
},
getStockPrice : function(symbol) {
if (workerScript.checkingRam) {
- if (workerScript.loadedFns.getStockPrice) {
- return 0;
- } else {
- workerScript.loadedFns.getStockPrice = true;
- return _Constants_js__WEBPACK_IMPORTED_MODULE_6__["CONSTANTS"].ScriptGetStockRamCost;
- }
+ return updateStaticRam("getStockPrice", _Constants_js__WEBPACK_IMPORTED_MODULE_6__["CONSTANTS"].ScriptGetStockRamCost);
}
- if (!_Player_js__WEBPACK_IMPORTED_MODULE_15__["Player"].hasTixApiAccess) {
- throw Object(_NetscriptEvaluator_js__WEBPACK_IMPORTED_MODULE_24__["makeRuntimeRejectMsg"])(workerScript, "You don't have TIX API Access! Cannot use getStockPrice()");
+ updateDynamicRam("getStockPrice", _Constants_js__WEBPACK_IMPORTED_MODULE_6__["CONSTANTS"].ScriptGetStockRamCost);
+ if (!_Player_js__WEBPACK_IMPORTED_MODULE_16__["Player"].hasTixApiAccess) {
+ throw Object(_NetscriptEvaluator_js__WEBPACK_IMPORTED_MODULE_25__["makeRuntimeRejectMsg"])(workerScript, "You don't have TIX API Access! Cannot use getStockPrice()");
}
- var stock = _StockMarket_js__WEBPACK_IMPORTED_MODULE_20__["SymbolToStockMap"][symbol];
+ var stock = _StockMarket_js__WEBPACK_IMPORTED_MODULE_21__["SymbolToStockMap"][symbol];
if (stock == null) {
- throw Object(_NetscriptEvaluator_js__WEBPACK_IMPORTED_MODULE_24__["makeRuntimeRejectMsg"])(workerScript, "Invalid stock symbol passed into getStockPrice()");
+ throw Object(_NetscriptEvaluator_js__WEBPACK_IMPORTED_MODULE_25__["makeRuntimeRejectMsg"])(workerScript, "Invalid stock symbol passed into getStockPrice()");
}
return parseFloat(stock.price.toFixed(3));
},
getStockPosition : function(symbol) {
if (workerScript.checkingRam) {
- if (workerScript.loadedFns.getStockPosition) {
- return 0;
- } else {
- workerScript.loadedFns.getStockPosition = true;
- return _Constants_js__WEBPACK_IMPORTED_MODULE_6__["CONSTANTS"].ScriptGetStockRamCost;
- }
+ return updateStaticRam("getStockPosition", _Constants_js__WEBPACK_IMPORTED_MODULE_6__["CONSTANTS"].ScriptGetStockRamCost);
}
- if (!_Player_js__WEBPACK_IMPORTED_MODULE_15__["Player"].hasTixApiAccess) {
- throw Object(_NetscriptEvaluator_js__WEBPACK_IMPORTED_MODULE_24__["makeRuntimeRejectMsg"])(workerScript, "You don't have TIX API Access! Cannot use getStockPosition()");
+ updateDynamicRam("getStockPosition", _Constants_js__WEBPACK_IMPORTED_MODULE_6__["CONSTANTS"].ScriptGetStockRamCost);
+ if (!_Player_js__WEBPACK_IMPORTED_MODULE_16__["Player"].hasTixApiAccess) {
+ throw Object(_NetscriptEvaluator_js__WEBPACK_IMPORTED_MODULE_25__["makeRuntimeRejectMsg"])(workerScript, "You don't have TIX API Access! Cannot use getStockPosition()");
}
- var stock = _StockMarket_js__WEBPACK_IMPORTED_MODULE_20__["SymbolToStockMap"][symbol];
+ var stock = _StockMarket_js__WEBPACK_IMPORTED_MODULE_21__["SymbolToStockMap"][symbol];
if (stock == null) {
- throw Object(_NetscriptEvaluator_js__WEBPACK_IMPORTED_MODULE_24__["makeRuntimeRejectMsg"])(workerScript, "Invalid stock symbol passed into getStockPosition()");
+ throw Object(_NetscriptEvaluator_js__WEBPACK_IMPORTED_MODULE_25__["makeRuntimeRejectMsg"])(workerScript, "Invalid stock symbol passed into getStockPosition()");
}
return [stock.playerShares, stock.playerAvgPx, stock.playerShortShares, stock.playerAvgShortPx];
},
buyStock : function(symbol, shares) {
if (workerScript.checkingRam) {
- if (workerScript.loadedFns.buyStock) {
- return 0;
- } else {
- workerScript.loadedFns.buyStock = true;
- return _Constants_js__WEBPACK_IMPORTED_MODULE_6__["CONSTANTS"].ScriptBuySellStockRamCost;
- }
+ return updateStaticRam("buyStock", _Constants_js__WEBPACK_IMPORTED_MODULE_6__["CONSTANTS"].ScriptBuySellStockRamCost);
}
- if (!_Player_js__WEBPACK_IMPORTED_MODULE_15__["Player"].hasTixApiAccess) {
- throw Object(_NetscriptEvaluator_js__WEBPACK_IMPORTED_MODULE_24__["makeRuntimeRejectMsg"])(workerScript, "You don't have TIX API Access! Cannot use buyStock()");
+ updateDynamicRam("buyStock", _Constants_js__WEBPACK_IMPORTED_MODULE_6__["CONSTANTS"].ScriptBuySellStockRamCost);
+ if (!_Player_js__WEBPACK_IMPORTED_MODULE_16__["Player"].hasTixApiAccess) {
+ throw Object(_NetscriptEvaluator_js__WEBPACK_IMPORTED_MODULE_25__["makeRuntimeRejectMsg"])(workerScript, "You don't have TIX API Access! Cannot use buyStock()");
}
- var stock = _StockMarket_js__WEBPACK_IMPORTED_MODULE_20__["SymbolToStockMap"][symbol];
+ var stock = _StockMarket_js__WEBPACK_IMPORTED_MODULE_21__["SymbolToStockMap"][symbol];
if (stock == null) {
- throw Object(_NetscriptEvaluator_js__WEBPACK_IMPORTED_MODULE_24__["makeRuntimeRejectMsg"])(workerScript, "Invalid stock symbol passed into buyStock()");
+ throw Object(_NetscriptEvaluator_js__WEBPACK_IMPORTED_MODULE_25__["makeRuntimeRejectMsg"])(workerScript, "Invalid stock symbol passed into buyStock()");
}
if (shares < 0 || isNaN(shares)) {
- workerScript.scriptRef.log("Error: Invalid 'shares' argument passed to buyStock()");
+ workerScript.scriptRef.log("ERROR: Invalid 'shares' argument passed to buyStock()");
return 0;
}
shares = Math.round(shares);
if (shares === 0) {return 0;}
var totalPrice = stock.price * shares;
- if (_Player_js__WEBPACK_IMPORTED_MODULE_15__["Player"].money.lt(totalPrice + _Constants_js__WEBPACK_IMPORTED_MODULE_6__["CONSTANTS"].StockMarketCommission)) {
- workerScript.scriptRef.log("Not enough money to purchase " + Object(_utils_StringHelperFunctions_js__WEBPACK_IMPORTED_MODULE_31__["formatNumber"])(shares, 0) + " shares of " +
+ if (_Player_js__WEBPACK_IMPORTED_MODULE_16__["Player"].money.lt(totalPrice + _Constants_js__WEBPACK_IMPORTED_MODULE_6__["CONSTANTS"].StockMarketCommission)) {
+ workerScript.scriptRef.log("Not enough money to purchase " + Object(_utils_StringHelperFunctions_js__WEBPACK_IMPORTED_MODULE_32__["formatNumber"])(shares, 0) + " shares of " +
symbol + ". Need $" +
- Object(_utils_StringHelperFunctions_js__WEBPACK_IMPORTED_MODULE_31__["formatNumber"])(totalPrice + _Constants_js__WEBPACK_IMPORTED_MODULE_6__["CONSTANTS"].StockMarketCommission, 2).toString());
+ Object(_utils_StringHelperFunctions_js__WEBPACK_IMPORTED_MODULE_32__["formatNumber"])(totalPrice + _Constants_js__WEBPACK_IMPORTED_MODULE_6__["CONSTANTS"].StockMarketCommission, 2).toString());
return 0;
}
var origTotal = stock.playerShares * stock.playerAvgPx;
- _Player_js__WEBPACK_IMPORTED_MODULE_15__["Player"].loseMoney(totalPrice + _Constants_js__WEBPACK_IMPORTED_MODULE_6__["CONSTANTS"].StockMarketCommission);
+ _Player_js__WEBPACK_IMPORTED_MODULE_16__["Player"].loseMoney(totalPrice + _Constants_js__WEBPACK_IMPORTED_MODULE_6__["CONSTANTS"].StockMarketCommission);
var newTotal = origTotal + totalPrice;
stock.playerShares += shares;
stock.playerAvgPx = newTotal / stock.playerShares;
if (_engine_js__WEBPACK_IMPORTED_MODULE_9__["Engine"].currentPage == _engine_js__WEBPACK_IMPORTED_MODULE_9__["Engine"].Page.StockMarket) {
- Object(_StockMarket_js__WEBPACK_IMPORTED_MODULE_20__["updateStockPlayerPosition"])(stock);
+ Object(_StockMarket_js__WEBPACK_IMPORTED_MODULE_21__["updateStockPlayerPosition"])(stock);
}
if (workerScript.disableLogs.ALL == null && workerScript.disableLogs.buyStock == null) {
- workerScript.scriptRef.log("Bought " + Object(_utils_StringHelperFunctions_js__WEBPACK_IMPORTED_MODULE_31__["formatNumber"])(shares, 0) + " shares of " + stock.symbol + " at $" +
- Object(_utils_StringHelperFunctions_js__WEBPACK_IMPORTED_MODULE_31__["formatNumber"])(stock.price, 2) + " per share");
+ workerScript.scriptRef.log("Bought " + Object(_utils_StringHelperFunctions_js__WEBPACK_IMPORTED_MODULE_32__["formatNumber"])(shares, 0) + " shares of " + stock.symbol + " at $" +
+ Object(_utils_StringHelperFunctions_js__WEBPACK_IMPORTED_MODULE_32__["formatNumber"])(stock.price, 2) + " per share");
}
return stock.price;
},
sellStock : function(symbol, shares) {
if (workerScript.checkingRam) {
- if (workerScript.loadedFns.sellStock) {
- return 0;
- } else {
- workerScript.loadedFns.sellStock = true;
- return _Constants_js__WEBPACK_IMPORTED_MODULE_6__["CONSTANTS"].ScriptBuySellStockRamCost;
- }
+ return updateStaticRam("sellStock", _Constants_js__WEBPACK_IMPORTED_MODULE_6__["CONSTANTS"].ScriptBuySellStockRamCost);
}
- if (!_Player_js__WEBPACK_IMPORTED_MODULE_15__["Player"].hasTixApiAccess) {
- throw Object(_NetscriptEvaluator_js__WEBPACK_IMPORTED_MODULE_24__["makeRuntimeRejectMsg"])(workerScript, "You don't have TIX API Access! Cannot use sellStock()");
+ updateDynamicRam("sellStock", _Constants_js__WEBPACK_IMPORTED_MODULE_6__["CONSTANTS"].ScriptBuySellStockRamCost);
+ if (!_Player_js__WEBPACK_IMPORTED_MODULE_16__["Player"].hasTixApiAccess) {
+ throw Object(_NetscriptEvaluator_js__WEBPACK_IMPORTED_MODULE_25__["makeRuntimeRejectMsg"])(workerScript, "You don't have TIX API Access! Cannot use sellStock()");
}
- var stock = _StockMarket_js__WEBPACK_IMPORTED_MODULE_20__["SymbolToStockMap"][symbol];
+ var stock = _StockMarket_js__WEBPACK_IMPORTED_MODULE_21__["SymbolToStockMap"][symbol];
if (stock == null) {
- throw Object(_NetscriptEvaluator_js__WEBPACK_IMPORTED_MODULE_24__["makeRuntimeRejectMsg"])(workerScript, "Invalid stock symbol passed into sellStock()");
+ throw Object(_NetscriptEvaluator_js__WEBPACK_IMPORTED_MODULE_25__["makeRuntimeRejectMsg"])(workerScript, "Invalid stock symbol passed into sellStock()");
}
if (shares < 0 || isNaN(shares)) {
- workerScript.scriptRef.log("Error: Invalid 'shares' argument passed to sellStock()");
+ workerScript.scriptRef.log("ERROR: Invalid 'shares' argument passed to sellStock()");
return 0;
}
shares = Math.round(shares);
if (shares > stock.playerShares) {shares = stock.playerShares;}
if (shares === 0) {return 0;}
var gains = stock.price * shares - _Constants_js__WEBPACK_IMPORTED_MODULE_6__["CONSTANTS"].StockMarketCommission;
- _Player_js__WEBPACK_IMPORTED_MODULE_15__["Player"].gainMoney(gains);
+ _Player_js__WEBPACK_IMPORTED_MODULE_16__["Player"].gainMoney(gains);
//Calculate net profit and add to script stats
var netProfit = ((stock.price - stock.playerAvgPx) * shares) - _Constants_js__WEBPACK_IMPORTED_MODULE_6__["CONSTANTS"].StockMarketCommission;
if (isNaN(netProfit)) {netProfit = 0;}
workerScript.scriptRef.onlineMoneyMade += netProfit;
- _Player_js__WEBPACK_IMPORTED_MODULE_15__["Player"].scriptProdSinceLastAug += netProfit;
+ _Player_js__WEBPACK_IMPORTED_MODULE_16__["Player"].scriptProdSinceLastAug += netProfit;
stock.playerShares -= shares;
if (stock.playerShares == 0) {
stock.playerAvgPx = 0;
}
if (_engine_js__WEBPACK_IMPORTED_MODULE_9__["Engine"].currentPage == _engine_js__WEBPACK_IMPORTED_MODULE_9__["Engine"].Page.StockMarket) {
- Object(_StockMarket_js__WEBPACK_IMPORTED_MODULE_20__["updateStockPlayerPosition"])(stock);
+ Object(_StockMarket_js__WEBPACK_IMPORTED_MODULE_21__["updateStockPlayerPosition"])(stock);
}
if (workerScript.disableLogs.ALL == null && workerScript.disableLogs.sellStock == null) {
- workerScript.scriptRef.log("Sold " + Object(_utils_StringHelperFunctions_js__WEBPACK_IMPORTED_MODULE_31__["formatNumber"])(shares, 0) + " shares of " + stock.symbol + " at $" +
- Object(_utils_StringHelperFunctions_js__WEBPACK_IMPORTED_MODULE_31__["formatNumber"])(stock.price, 2) + " per share. Gained " +
- "$" + Object(_utils_StringHelperFunctions_js__WEBPACK_IMPORTED_MODULE_31__["formatNumber"])(gains, 2));
+ workerScript.scriptRef.log("Sold " + Object(_utils_StringHelperFunctions_js__WEBPACK_IMPORTED_MODULE_32__["formatNumber"])(shares, 0) + " shares of " + stock.symbol + " at $" +
+ Object(_utils_StringHelperFunctions_js__WEBPACK_IMPORTED_MODULE_32__["formatNumber"])(stock.price, 2) + " per share. Gained " +
+ "$" + Object(_utils_StringHelperFunctions_js__WEBPACK_IMPORTED_MODULE_32__["formatNumber"])(gains, 2));
}
return stock.price;
},
shortStock(symbol, shares) {
if (workerScript.checkingRam) {
- if (workerScript.loadedFns.shortStock) {
- return 0;
- } else {
- workerScript.loadedFns.shortStock = true;
- return _Constants_js__WEBPACK_IMPORTED_MODULE_6__["CONSTANTS"].ScriptBuySellStockRamCost;
- }
+ return updateStaticRam("shortStock", _Constants_js__WEBPACK_IMPORTED_MODULE_6__["CONSTANTS"].ScriptBuySellStockRamCost);
}
- if (!_Player_js__WEBPACK_IMPORTED_MODULE_15__["Player"].hasTixApiAccess) {
- throw Object(_NetscriptEvaluator_js__WEBPACK_IMPORTED_MODULE_24__["makeRuntimeRejectMsg"])(workerScript, "You don't have TIX API Access! Cannot use shortStock()");
+ updateDynamicRam("shortStock", _Constants_js__WEBPACK_IMPORTED_MODULE_6__["CONSTANTS"].ScriptBuySellStockRamCost);
+ if (!_Player_js__WEBPACK_IMPORTED_MODULE_16__["Player"].hasTixApiAccess) {
+ throw Object(_NetscriptEvaluator_js__WEBPACK_IMPORTED_MODULE_25__["makeRuntimeRejectMsg"])(workerScript, "You don't have TIX API Access! Cannot use shortStock()");
}
- if (_Player_js__WEBPACK_IMPORTED_MODULE_15__["Player"].bitNodeN !== 8) {
+ if (_Player_js__WEBPACK_IMPORTED_MODULE_16__["Player"].bitNodeN !== 8) {
if (!(hasWallStreetSF && wallStreetSFLvl >= 2)) {
- throw Object(_NetscriptEvaluator_js__WEBPACK_IMPORTED_MODULE_24__["makeRuntimeRejectMsg"])(workerScript, "ERROR: Cannot use shortStock(). You must either be in BitNode-8 or you must have Level 2 of Source-File 8");
+ throw Object(_NetscriptEvaluator_js__WEBPACK_IMPORTED_MODULE_25__["makeRuntimeRejectMsg"])(workerScript, "ERROR: Cannot use shortStock(). You must either be in BitNode-8 or you must have Level 2 of Source-File 8");
}
}
- var stock = _StockMarket_js__WEBPACK_IMPORTED_MODULE_20__["SymbolToStockMap"][symbol];
+ var stock = _StockMarket_js__WEBPACK_IMPORTED_MODULE_21__["SymbolToStockMap"][symbol];
if (stock == null) {
- throw Object(_NetscriptEvaluator_js__WEBPACK_IMPORTED_MODULE_24__["makeRuntimeRejectMsg"])(workerScript, "ERROR: Invalid stock symbol passed into shortStock()");
+ throw Object(_NetscriptEvaluator_js__WEBPACK_IMPORTED_MODULE_25__["makeRuntimeRejectMsg"])(workerScript, "ERROR: Invalid stock symbol passed into shortStock()");
}
- var res = Object(_StockMarket_js__WEBPACK_IMPORTED_MODULE_20__["shortStock"])(stock, shares, workerScript);
+ var res = Object(_StockMarket_js__WEBPACK_IMPORTED_MODULE_21__["shortStock"])(stock, shares, workerScript);
return res ? stock.price : 0;
},
sellShort(symbol, shares) {
if (workerScript.checkingRam) {
- if (workerScript.loadedFns.sellShort) {
- return 0;
- } else {
- workerScript.loadedFns.sellShort = true;
- return _Constants_js__WEBPACK_IMPORTED_MODULE_6__["CONSTANTS"].ScriptBuySellStockRamCost;
- }
+ return updateStaticRam("sellShort", _Constants_js__WEBPACK_IMPORTED_MODULE_6__["CONSTANTS"].ScriptBuySellStockRamCost);
}
- if (!_Player_js__WEBPACK_IMPORTED_MODULE_15__["Player"].hasTixApiAccess) {
- throw Object(_NetscriptEvaluator_js__WEBPACK_IMPORTED_MODULE_24__["makeRuntimeRejectMsg"])(workerScript, "You don't have TIX API Access! Cannot use sellShort()");
+ updateDynamicRam("sellShort", _Constants_js__WEBPACK_IMPORTED_MODULE_6__["CONSTANTS"].ScriptBuySellStockRamCost);
+ if (!_Player_js__WEBPACK_IMPORTED_MODULE_16__["Player"].hasTixApiAccess) {
+ throw Object(_NetscriptEvaluator_js__WEBPACK_IMPORTED_MODULE_25__["makeRuntimeRejectMsg"])(workerScript, "You don't have TIX API Access! Cannot use sellShort()");
}
- if (_Player_js__WEBPACK_IMPORTED_MODULE_15__["Player"].bitNodeN !== 8) {
+ if (_Player_js__WEBPACK_IMPORTED_MODULE_16__["Player"].bitNodeN !== 8) {
if (!(hasWallStreetSF && wallStreetSFLvl >= 2)) {
- throw Object(_NetscriptEvaluator_js__WEBPACK_IMPORTED_MODULE_24__["makeRuntimeRejectMsg"])(workerScript, "ERROR: Cannot use sellShort(). You must either be in BitNode-8 or you must have Level 2 of Source-File 8");
+ throw Object(_NetscriptEvaluator_js__WEBPACK_IMPORTED_MODULE_25__["makeRuntimeRejectMsg"])(workerScript, "ERROR: Cannot use sellShort(). You must either be in BitNode-8 or you must have Level 2 of Source-File 8");
}
}
- var stock = _StockMarket_js__WEBPACK_IMPORTED_MODULE_20__["SymbolToStockMap"][symbol];
+ var stock = _StockMarket_js__WEBPACK_IMPORTED_MODULE_21__["SymbolToStockMap"][symbol];
if (stock == null) {
- throw Object(_NetscriptEvaluator_js__WEBPACK_IMPORTED_MODULE_24__["makeRuntimeRejectMsg"])(workerScript, "ERROR: Invalid stock symbol passed into sellShort()");
+ throw Object(_NetscriptEvaluator_js__WEBPACK_IMPORTED_MODULE_25__["makeRuntimeRejectMsg"])(workerScript, "ERROR: Invalid stock symbol passed into sellShort()");
}
- var res = Object(_StockMarket_js__WEBPACK_IMPORTED_MODULE_20__["sellShort"])(stock, shares, workerScript);
+ var res = Object(_StockMarket_js__WEBPACK_IMPORTED_MODULE_21__["sellShort"])(stock, shares, workerScript);
return res ? stock.price : 0;
},
placeOrder(symbol, shares, price, type, pos) {
if (workerScript.checkingRam) {
- if (workerScript.loadedFns.placeOrder) {
- return 0;
- } else {
- workerScript.loadedFns.placeOrder = true;
- return _Constants_js__WEBPACK_IMPORTED_MODULE_6__["CONSTANTS"].ScriptBuySellStockRamCost;
- }
+ return updateStaticRam("placeOrder", _Constants_js__WEBPACK_IMPORTED_MODULE_6__["CONSTANTS"].ScriptBuySellStockRamCost);
}
- if (!_Player_js__WEBPACK_IMPORTED_MODULE_15__["Player"].hasTixApiAccess) {
- throw Object(_NetscriptEvaluator_js__WEBPACK_IMPORTED_MODULE_24__["makeRuntimeRejectMsg"])(workerScript, "You don't have TIX API Access! Cannot use placeOrder()");
+ updateDynamicRam("placeOrder", _Constants_js__WEBPACK_IMPORTED_MODULE_6__["CONSTANTS"].ScriptBuySellStockRamCost);
+ if (!_Player_js__WEBPACK_IMPORTED_MODULE_16__["Player"].hasTixApiAccess) {
+ throw Object(_NetscriptEvaluator_js__WEBPACK_IMPORTED_MODULE_25__["makeRuntimeRejectMsg"])(workerScript, "You don't have TIX API Access! Cannot use placeOrder()");
}
- if (_Player_js__WEBPACK_IMPORTED_MODULE_15__["Player"].bitNodeN !== 8) {
+ if (_Player_js__WEBPACK_IMPORTED_MODULE_16__["Player"].bitNodeN !== 8) {
if (!(hasWallStreetSF && wallStreetSFLvl >= 3)) {
- throw Object(_NetscriptEvaluator_js__WEBPACK_IMPORTED_MODULE_24__["makeRuntimeRejectMsg"])(workerScript, "ERROR: Cannot use placeOrder(). You must either be in BitNode-8 or have Level 3 of Source-File 8");
+ throw Object(_NetscriptEvaluator_js__WEBPACK_IMPORTED_MODULE_25__["makeRuntimeRejectMsg"])(workerScript, "ERROR: Cannot use placeOrder(). You must either be in BitNode-8 or have Level 3 of Source-File 8");
}
}
- var stock = _StockMarket_js__WEBPACK_IMPORTED_MODULE_20__["SymbolToStockMap"][symbol];
+ var stock = _StockMarket_js__WEBPACK_IMPORTED_MODULE_21__["SymbolToStockMap"][symbol];
if (stock == null) {
- throw Object(_NetscriptEvaluator_js__WEBPACK_IMPORTED_MODULE_24__["makeRuntimeRejectMsg"])(workerScript, "ERROR: Invalid stock symbol passed into placeOrder()");
+ throw Object(_NetscriptEvaluator_js__WEBPACK_IMPORTED_MODULE_25__["makeRuntimeRejectMsg"])(workerScript, "ERROR: Invalid stock symbol passed into placeOrder()");
}
var orderType, orderPos;
type = type.toLowerCase();
if (type.includes("limit") && type.includes("buy")) {
- orderType = _StockMarket_js__WEBPACK_IMPORTED_MODULE_20__["OrderTypes"].LimitBuy;
+ orderType = _StockMarket_js__WEBPACK_IMPORTED_MODULE_21__["OrderTypes"].LimitBuy;
} else if (type.includes("limit") && type.includes("sell")) {
- orderType = _StockMarket_js__WEBPACK_IMPORTED_MODULE_20__["OrderTypes"].LimitSell;
+ orderType = _StockMarket_js__WEBPACK_IMPORTED_MODULE_21__["OrderTypes"].LimitSell;
} else if (type.includes("stop") && type.includes("buy")) {
- orderType = _StockMarket_js__WEBPACK_IMPORTED_MODULE_20__["OrderTypes"].StopBuy;
+ orderType = _StockMarket_js__WEBPACK_IMPORTED_MODULE_21__["OrderTypes"].StopBuy;
} else if (type.includes("stop") && type.includes("sell")) {
- orderType = _StockMarket_js__WEBPACK_IMPORTED_MODULE_20__["OrderTypes"].StopSell;
+ orderType = _StockMarket_js__WEBPACK_IMPORTED_MODULE_21__["OrderTypes"].StopSell;
} else {
- throw Object(_NetscriptEvaluator_js__WEBPACK_IMPORTED_MODULE_24__["makeRuntimeRejectMsg"])(workerScript, "ERROR: Invalid Order Type passed into placeOrder()");
+ throw Object(_NetscriptEvaluator_js__WEBPACK_IMPORTED_MODULE_25__["makeRuntimeRejectMsg"])(workerScript, "ERROR: Invalid Order Type passed into placeOrder()");
}
pos = pos.toLowerCase();
if (pos.includes("l")) {
- orderPos = _StockMarket_js__WEBPACK_IMPORTED_MODULE_20__["PositionTypes"].Long;
+ orderPos = _StockMarket_js__WEBPACK_IMPORTED_MODULE_21__["PositionTypes"].Long;
} else if (pos.includes('s')) {
- orderPos = _StockMarket_js__WEBPACK_IMPORTED_MODULE_20__["PositionTypes"].Short;
+ orderPos = _StockMarket_js__WEBPACK_IMPORTED_MODULE_21__["PositionTypes"].Short;
} else {
- throw Object(_NetscriptEvaluator_js__WEBPACK_IMPORTED_MODULE_24__["makeRuntimeRejectMsg"])(workerScript, "ERROR: Invalid Position Type passed into placeOrder()");
+ throw Object(_NetscriptEvaluator_js__WEBPACK_IMPORTED_MODULE_25__["makeRuntimeRejectMsg"])(workerScript, "ERROR: Invalid Position Type passed into placeOrder()");
}
- return Object(_StockMarket_js__WEBPACK_IMPORTED_MODULE_20__["placeOrder"])(stock, shares, price, orderType, orderPos, workerScript);
+ return Object(_StockMarket_js__WEBPACK_IMPORTED_MODULE_21__["placeOrder"])(stock, shares, price, orderType, orderPos, workerScript);
},
cancelOrder(symbol, shares, price, type, pos) {
if (workerScript.checkingRam) {
- if (workerScript.loadedFns.cancelOrder) {
- return 0;
- } else {
- workerScript.loadedFns.cancelOrder = true;
- return _Constants_js__WEBPACK_IMPORTED_MODULE_6__["CONSTANTS"].ScriptBuySellStockRamCost;
- }
+ return updateStaticRam("cancelOrder", _Constants_js__WEBPACK_IMPORTED_MODULE_6__["CONSTANTS"].ScriptBuySellStockRamCost);
}
- if (!_Player_js__WEBPACK_IMPORTED_MODULE_15__["Player"].hasTixApiAccess) {
- throw Object(_NetscriptEvaluator_js__WEBPACK_IMPORTED_MODULE_24__["makeRuntimeRejectMsg"])(workerScript, "You don't have TIX API Access! Cannot use cancelOrder()");
+ updateDynamicRam("cancelOrder", _Constants_js__WEBPACK_IMPORTED_MODULE_6__["CONSTANTS"].ScriptBuySellStockRamCost);
+ if (!_Player_js__WEBPACK_IMPORTED_MODULE_16__["Player"].hasTixApiAccess) {
+ throw Object(_NetscriptEvaluator_js__WEBPACK_IMPORTED_MODULE_25__["makeRuntimeRejectMsg"])(workerScript, "You don't have TIX API Access! Cannot use cancelOrder()");
}
- if (_Player_js__WEBPACK_IMPORTED_MODULE_15__["Player"].bitNodeN !== 8) {
+ if (_Player_js__WEBPACK_IMPORTED_MODULE_16__["Player"].bitNodeN !== 8) {
if (!(hasWallStreetSF && wallStreetSFLvl >= 3)) {
- throw Object(_NetscriptEvaluator_js__WEBPACK_IMPORTED_MODULE_24__["makeRuntimeRejectMsg"])(workerScript, "ERROR: Cannot use cancelOrder(). You must either be in BitNode-8 or have Level 3 of Source-File 8");
+ throw Object(_NetscriptEvaluator_js__WEBPACK_IMPORTED_MODULE_25__["makeRuntimeRejectMsg"])(workerScript, "ERROR: Cannot use cancelOrder(). You must either be in BitNode-8 or have Level 3 of Source-File 8");
}
}
- var stock = _StockMarket_js__WEBPACK_IMPORTED_MODULE_20__["SymbolToStockMap"][symbol];
+ var stock = _StockMarket_js__WEBPACK_IMPORTED_MODULE_21__["SymbolToStockMap"][symbol];
if (stock == null) {
- throw Object(_NetscriptEvaluator_js__WEBPACK_IMPORTED_MODULE_24__["makeRuntimeRejectMsg"])(workerScript, "ERROR: Invalid stock symbol passed into cancelOrder()");
+ throw Object(_NetscriptEvaluator_js__WEBPACK_IMPORTED_MODULE_25__["makeRuntimeRejectMsg"])(workerScript, "ERROR: Invalid stock symbol passed into cancelOrder()");
}
if (isNaN(shares) || isNaN(price)) {
- throw Object(_NetscriptEvaluator_js__WEBPACK_IMPORTED_MODULE_24__["makeRuntimeRejectMsg"])(workerScript, "ERROR: Invalid shares or price argument passed into cancelOrder(). Must be numeric");
+ throw Object(_NetscriptEvaluator_js__WEBPACK_IMPORTED_MODULE_25__["makeRuntimeRejectMsg"])(workerScript, "ERROR: Invalid shares or price argument passed into cancelOrder(). Must be numeric");
}
var orderType, orderPos;
type = type.toLowerCase();
if (type.includes("limit") && type.includes("buy")) {
- orderType = _StockMarket_js__WEBPACK_IMPORTED_MODULE_20__["OrderTypes"].LimitBuy;
+ orderType = _StockMarket_js__WEBPACK_IMPORTED_MODULE_21__["OrderTypes"].LimitBuy;
} else if (type.includes("limit") && type.includes("sell")) {
- orderType = _StockMarket_js__WEBPACK_IMPORTED_MODULE_20__["OrderTypes"].LimitSell;
+ orderType = _StockMarket_js__WEBPACK_IMPORTED_MODULE_21__["OrderTypes"].LimitSell;
} else if (type.includes("stop") && type.includes("buy")) {
- orderType = _StockMarket_js__WEBPACK_IMPORTED_MODULE_20__["OrderTypes"].StopBuy;
+ orderType = _StockMarket_js__WEBPACK_IMPORTED_MODULE_21__["OrderTypes"].StopBuy;
} else if (type.includes("stop") && type.includes("sell")) {
- orderType = _StockMarket_js__WEBPACK_IMPORTED_MODULE_20__["OrderTypes"].StopSell;
+ orderType = _StockMarket_js__WEBPACK_IMPORTED_MODULE_21__["OrderTypes"].StopSell;
} else {
- throw Object(_NetscriptEvaluator_js__WEBPACK_IMPORTED_MODULE_24__["makeRuntimeRejectMsg"])(workerScript, "ERROR: Invalid Order Type passed into placeOrder()");
+ throw Object(_NetscriptEvaluator_js__WEBPACK_IMPORTED_MODULE_25__["makeRuntimeRejectMsg"])(workerScript, "ERROR: Invalid Order Type passed into placeOrder()");
}
pos = pos.toLowerCase();
if (pos.includes("l")) {
- orderPos = _StockMarket_js__WEBPACK_IMPORTED_MODULE_20__["PositionTypes"].Long;
+ orderPos = _StockMarket_js__WEBPACK_IMPORTED_MODULE_21__["PositionTypes"].Long;
} else if (pos.includes('s')) {
- orderPos = _StockMarket_js__WEBPACK_IMPORTED_MODULE_20__["PositionTypes"].Short;
+ orderPos = _StockMarket_js__WEBPACK_IMPORTED_MODULE_21__["PositionTypes"].Short;
} else {
- throw Object(_NetscriptEvaluator_js__WEBPACK_IMPORTED_MODULE_24__["makeRuntimeRejectMsg"])(workerScript, "ERROR: Invalid Position Type passed into placeOrder()");
+ throw Object(_NetscriptEvaluator_js__WEBPACK_IMPORTED_MODULE_25__["makeRuntimeRejectMsg"])(workerScript, "ERROR: Invalid Position Type passed into placeOrder()");
}
var params = {
stock: stock,
@@ -31922,48 +32072,44 @@ function NetscriptFunctions(workerScript) {
type: orderType,
pos: orderPos
};
- return Object(_StockMarket_js__WEBPACK_IMPORTED_MODULE_20__["cancelOrder"])(params, workerScript);
+ return Object(_StockMarket_js__WEBPACK_IMPORTED_MODULE_21__["cancelOrder"])(params, workerScript);
},
purchaseServer : function(hostname, ram) {
if (workerScript.checkingRam) {
- if (workerScript.loadedFns.purchaseServer) {
- return 0;
- } else {
- workerScript.loadedFns.purchaseServer = true;
- return _Constants_js__WEBPACK_IMPORTED_MODULE_6__["CONSTANTS"].ScriptPurchaseServerRamCost;
- }
+ return updateStaticRam("purchaseServer", _Constants_js__WEBPACK_IMPORTED_MODULE_6__["CONSTANTS"].ScriptPurchaseServerRamCost);
}
+ updateDynamicRam("purchaseServer", _Constants_js__WEBPACK_IMPORTED_MODULE_6__["CONSTANTS"].ScriptPurchaseServerRamCost);
var hostnameStr = String(hostname);
hostnameStr = hostnameStr.replace(/\s+/g, '');
if (hostnameStr == "") {
- workerScript.scriptRef.log("Error: Passed empty string for hostname argument of purchaseServer()");
+ workerScript.scriptRef.log("ERROR: Passed empty string for hostname argument of purchaseServer()");
return "";
}
- if (_Player_js__WEBPACK_IMPORTED_MODULE_15__["Player"].purchasedServers.length >= _Constants_js__WEBPACK_IMPORTED_MODULE_6__["CONSTANTS"].PurchasedServerLimit) {
- workerScript.scriptRef.log("Error: You have reached the maximum limit of " + _Constants_js__WEBPACK_IMPORTED_MODULE_6__["CONSTANTS"].PurchasedServerLimit +
+ if (_Player_js__WEBPACK_IMPORTED_MODULE_16__["Player"].purchasedServers.length >= _Constants_js__WEBPACK_IMPORTED_MODULE_6__["CONSTANTS"].PurchasedServerLimit) {
+ workerScript.scriptRef.log("ERROR: You have reached the maximum limit of " + _Constants_js__WEBPACK_IMPORTED_MODULE_6__["CONSTANTS"].PurchasedServerLimit +
" servers. You cannot purchase any more.");
return "";
}
ram = Math.round(ram);
- if (isNaN(ram) || !Object(_utils_HelperFunctions_js__WEBPACK_IMPORTED_MODULE_29__["powerOfTwo"])(ram)) {
- workerScript.scriptRef.log("Error: purchaseServer() failed due to invalid ram argument. Must be numeric and a power of 2");
+ if (isNaN(ram) || !Object(_utils_HelperFunctions_js__WEBPACK_IMPORTED_MODULE_30__["powerOfTwo"])(ram)) {
+ workerScript.scriptRef.log("ERROR: purchaseServer() failed due to invalid ram argument. Must be numeric and a power of 2");
return "";
}
if (ram > _Constants_js__WEBPACK_IMPORTED_MODULE_6__["CONSTANTS"].PurchasedServerMaxRam) {
- workerScript.scriptRef.log("Error: purchasedServer() failed because specified RAM was too high. Maximum RAM on a purchased server is " + _Constants_js__WEBPACK_IMPORTED_MODULE_6__["CONSTANTS"].PurchasedServerMaxRam + "GB");
+ workerScript.scriptRef.log("ERROR: purchasedServer() failed because specified RAM was too high. Maximum RAM on a purchased server is " + _Constants_js__WEBPACK_IMPORTED_MODULE_6__["CONSTANTS"].PurchasedServerMaxRam + "GB");
return "";
}
var cost = ram * _Constants_js__WEBPACK_IMPORTED_MODULE_6__["CONSTANTS"].BaseCostFor1GBOfRamServer;
- if (_Player_js__WEBPACK_IMPORTED_MODULE_15__["Player"].money.lt(cost)) {
- workerScript.scriptRef.log("Error: Not enough money to purchase server. Need $" + Object(_utils_StringHelperFunctions_js__WEBPACK_IMPORTED_MODULE_31__["formatNumber"])(cost, 2));
+ if (_Player_js__WEBPACK_IMPORTED_MODULE_16__["Player"].money.lt(cost)) {
+ workerScript.scriptRef.log("ERROR: Not enough money to purchase server. Need $" + Object(_utils_StringHelperFunctions_js__WEBPACK_IMPORTED_MODULE_32__["formatNumber"])(cost, 2));
return "";
}
- var newServ = new _Server_js__WEBPACK_IMPORTED_MODULE_17__["Server"]({
- ip: Object(_utils_IPAddress_js__WEBPACK_IMPORTED_MODULE_30__["createRandomIp"])(),
+ var newServ = new _Server_js__WEBPACK_IMPORTED_MODULE_18__["Server"]({
+ ip: Object(_utils_IPAddress_js__WEBPACK_IMPORTED_MODULE_31__["createRandomIp"])(),
hostname: hostnameStr,
organizationName: "",
isConnectedTo: false,
@@ -31971,37 +32117,33 @@ function NetscriptFunctions(workerScript) {
purchasedByPlayer: true,
maxRam: ram,
});
- Object(_Server_js__WEBPACK_IMPORTED_MODULE_17__["AddToAllServers"])(newServ);
+ Object(_Server_js__WEBPACK_IMPORTED_MODULE_18__["AddToAllServers"])(newServ);
- _Player_js__WEBPACK_IMPORTED_MODULE_15__["Player"].purchasedServers.push(newServ.ip);
- var homeComputer = _Player_js__WEBPACK_IMPORTED_MODULE_15__["Player"].getHomeComputer();
+ _Player_js__WEBPACK_IMPORTED_MODULE_16__["Player"].purchasedServers.push(newServ.ip);
+ var homeComputer = _Player_js__WEBPACK_IMPORTED_MODULE_16__["Player"].getHomeComputer();
homeComputer.serversOnNetwork.push(newServ.ip);
newServ.serversOnNetwork.push(homeComputer.ip);
- _Player_js__WEBPACK_IMPORTED_MODULE_15__["Player"].loseMoney(cost);
+ _Player_js__WEBPACK_IMPORTED_MODULE_16__["Player"].loseMoney(cost);
if (workerScript.disableLogs.ALL == null && workerScript.disableLogs.purchaseServer == null) {
- workerScript.scriptRef.log("Purchased new server with hostname " + newServ.hostname + " for $" + Object(_utils_StringHelperFunctions_js__WEBPACK_IMPORTED_MODULE_31__["formatNumber"])(cost, 2));
+ workerScript.scriptRef.log("Purchased new server with hostname " + newServ.hostname + " for $" + Object(_utils_StringHelperFunctions_js__WEBPACK_IMPORTED_MODULE_32__["formatNumber"])(cost, 2));
}
return newServ.hostname;
},
deleteServer : function(hostname) {
if (workerScript.checkingRam) {
- if (workerScript.loadedFns.deleteServer) {
- return 0;
- } else {
- workerScript.loadedFns.deleteServer = true;
- return _Constants_js__WEBPACK_IMPORTED_MODULE_6__["CONSTANTS"].ScriptPurchaseServerRamCost;
- }
+ return updateStaticRam("deleteServer", _Constants_js__WEBPACK_IMPORTED_MODULE_6__["CONSTANTS"].ScriptPurchaseServerRamCost);
}
+ updateDynamicRam("deleteServer", _Constants_js__WEBPACK_IMPORTED_MODULE_6__["CONSTANTS"].ScriptPurchaseServerRamCost);
var hostnameStr = String(hostname);
hostnameStr = hostnameStr.replace(/\s\s+/g, '');
- var server = Object(_Server_js__WEBPACK_IMPORTED_MODULE_17__["GetServerByHostname"])(hostnameStr);
+ var server = Object(_Server_js__WEBPACK_IMPORTED_MODULE_18__["GetServerByHostname"])(hostnameStr);
if (server == null) {
- workerScript.scriptRef.log("Error: Could not find server with hostname " + hostnameStr + ". deleteServer() failed");
+ workerScript.scriptRef.log("ERROR: Could not find server with hostname " + hostnameStr + ". deleteServer() failed");
return false;
}
if (!server.purchasedByPlayer || server.hostname === "home") {
- workerScript.scriptRef.log("Error: Server " + server.hostname + " is not a purchased server. " +
+ workerScript.scriptRef.log("ERROR: Server " + server.hostname + " is not a purchased server. " +
"Cannot be deleted. deleteServer() failed");
return false;
}
@@ -32010,44 +32152,44 @@ function NetscriptFunctions(workerScript) {
//Can't delete server you're currently connected to
if (server.isConnectedTo) {
- workerScript.scriptRef.log("Error: deleteServer() failed because you are currently connected to the server you are trying to delete");
+ workerScript.scriptRef.log("ERROR: deleteServer() failed because you are currently connected to the server you are trying to delete");
return false;
}
//A server cannot delete itself
if (ip === workerScript.serverIp) {
- workerScript.scriptRef.log("Error: Cannot call deleteServer() on self. deleteServer() failed");
+ workerScript.scriptRef.log("ERROR: Cannot call deleteServer() on self. deleteServer() failed");
return false;
}
//Delete all scripts running on server
if (server.runningScripts.length > 0) {
- workerScript.scriptRef.log("Error: Cannot delete server " + server.hostname + " because it still has scripts running.");
+ workerScript.scriptRef.log("ERROR: Cannot delete server " + server.hostname + " because it still has scripts running.");
return false;
}
//Delete from player's purchasedServers array
var found = false;
- for (var i = 0; i < _Player_js__WEBPACK_IMPORTED_MODULE_15__["Player"].purchasedServers.length; ++i) {
- if (ip == _Player_js__WEBPACK_IMPORTED_MODULE_15__["Player"].purchasedServers[i]) {
+ for (var i = 0; i < _Player_js__WEBPACK_IMPORTED_MODULE_16__["Player"].purchasedServers.length; ++i) {
+ if (ip == _Player_js__WEBPACK_IMPORTED_MODULE_16__["Player"].purchasedServers[i]) {
found = true;
- _Player_js__WEBPACK_IMPORTED_MODULE_15__["Player"].purchasedServers.splice(i, 1);
+ _Player_js__WEBPACK_IMPORTED_MODULE_16__["Player"].purchasedServers.splice(i, 1);
break;
}
}
if (!found) {
- workerScript.scriptRef.log("Error: Could not identify server " + server.hostname +
+ workerScript.scriptRef.log("ERROR: Could not identify server " + server.hostname +
"as a purchased server. This is likely a bug please contact game dev");
return false;
}
//Delete from all servers
- delete _Server_js__WEBPACK_IMPORTED_MODULE_17__["AllServers"][ip];
+ delete _Server_js__WEBPACK_IMPORTED_MODULE_18__["AllServers"][ip];
//Delete from home computer
found = false;
- var homeComputer = _Player_js__WEBPACK_IMPORTED_MODULE_15__["Player"].getHomeComputer();
+ var homeComputer = _Player_js__WEBPACK_IMPORTED_MODULE_16__["Player"].getHomeComputer();
for (var i = 0; i < homeComputer.serversOnNetwork.length; ++i) {
if (ip == homeComputer.serversOnNetwork[i]) {
homeComputer.serversOnNetwork.splice(i, 1);
@@ -32058,25 +32200,21 @@ function NetscriptFunctions(workerScript) {
}
}
//Wasn't found on home computer
- workerScript.scriptRef.log("Error: Could not find server " + server.hostname +
+ workerScript.scriptRef.log("ERROR: Could not find server " + server.hostname +
"as a purchased server. This is likely a bug please contact game dev");
return false;
},
getPurchasedServers : function(hostname=true) {
if (workerScript.checkingRam) {
- if (workerScript.loadedFns.getPurchasedServers) {
- return 0;
- } else {
- workerScript.loadedFns.getPurchasedServers = true;
- return _Constants_js__WEBPACK_IMPORTED_MODULE_6__["CONSTANTS"].ScriptPurchaseServerRamCost;
- }
+ return updateStaticRam("getPurchasedServers", _Constants_js__WEBPACK_IMPORTED_MODULE_6__["CONSTANTS"].ScriptPurchaseServerRamCost);
}
+ updateDynamicRam("getPurchasedServers", _Constants_js__WEBPACK_IMPORTED_MODULE_6__["CONSTANTS"].ScriptPurchaseServerRamCost);
var res = [];
- _Player_js__WEBPACK_IMPORTED_MODULE_15__["Player"].purchasedServers.forEach(function(ip) {
+ _Player_js__WEBPACK_IMPORTED_MODULE_16__["Player"].purchasedServers.forEach(function(ip) {
if (hostname) {
- var server = Object(_Server_js__WEBPACK_IMPORTED_MODULE_17__["getServer"])(ip);
+ var server = Object(_Server_js__WEBPACK_IMPORTED_MODULE_18__["getServer"])(ip);
if (server == null) {
- throw Object(_NetscriptEvaluator_js__WEBPACK_IMPORTED_MODULE_24__["makeRuntimeRejectMsg"])(workerScript, "ERR: Could not find server in getPurchasedServers(). This is a bug please report to game dev");
+ throw Object(_NetscriptEvaluator_js__WEBPACK_IMPORTED_MODULE_25__["makeRuntimeRejectMsg"])(workerScript, "ERROR: Could not find server in getPurchasedServers(). This is a bug please report to game dev");
}
res.push(server.hostname);
} else {
@@ -32087,33 +32225,29 @@ function NetscriptFunctions(workerScript) {
},
write : function(port, data="", mode="a") {
if (workerScript.checkingRam) {
- if (workerScript.loadedFns.write) {
- return 0;
- } else {
- workerScript.loadedFns.write = true;
- return _Constants_js__WEBPACK_IMPORTED_MODULE_6__["CONSTANTS"].ScriptReadWriteRamCost;
- }
+ return updateStaticRam("write", _Constants_js__WEBPACK_IMPORTED_MODULE_6__["CONSTANTS"].ScriptReadWriteRamCost);
}
+ updateDynamicRam("write", _Constants_js__WEBPACK_IMPORTED_MODULE_6__["CONSTANTS"].ScriptReadWriteRamCost);
if (!isNaN(port)) { //Write to port
//Port 1-10
port = Math.round(port);
if (port < 1 || port > _Constants_js__WEBPACK_IMPORTED_MODULE_6__["CONSTANTS"].NumNetscriptPorts) {
- throw Object(_NetscriptEvaluator_js__WEBPACK_IMPORTED_MODULE_24__["makeRuntimeRejectMsg"])(workerScript, "ERR: Trying to write to invalid port: " + port + ". Only ports 1-" + _Constants_js__WEBPACK_IMPORTED_MODULE_6__["CONSTANTS"].NumNetscriptPorts + " are valid.");
+ throw Object(_NetscriptEvaluator_js__WEBPACK_IMPORTED_MODULE_25__["makeRuntimeRejectMsg"])(workerScript, "ERROR: Trying to write to invalid port: " + port + ". Only ports 1-" + _Constants_js__WEBPACK_IMPORTED_MODULE_6__["CONSTANTS"].NumNetscriptPorts + " are valid.");
}
- var port = _NetscriptWorker_js__WEBPACK_IMPORTED_MODULE_23__["NetscriptPorts"][port-1];
- if (port == null || !(port instanceof _NetscriptPort_js__WEBPACK_IMPORTED_MODULE_26__["NetscriptPort"])) {
- throw Object(_NetscriptEvaluator_js__WEBPACK_IMPORTED_MODULE_24__["makeRuntimeRejectMsg"])(workerScript, "Could not find port: " + port + ". This is a bug contact the game developer");
+ var port = _NetscriptWorker_js__WEBPACK_IMPORTED_MODULE_24__["NetscriptPorts"][port-1];
+ if (port == null || !(port instanceof _NetscriptPort_js__WEBPACK_IMPORTED_MODULE_27__["NetscriptPort"])) {
+ throw Object(_NetscriptEvaluator_js__WEBPACK_IMPORTED_MODULE_25__["makeRuntimeRejectMsg"])(workerScript, "Could not find port: " + port + ". This is a bug contact the game developer");
}
return port.write(data);
- } else if (Object(_utils_StringHelperFunctions_js__WEBPACK_IMPORTED_MODULE_31__["isString"])(port)) { //Write to text file
+ } else if (Object(_utils_StringHelperFunctions_js__WEBPACK_IMPORTED_MODULE_32__["isString"])(port)) { //Write to text file
var fn = port;
- var server = Object(_Server_js__WEBPACK_IMPORTED_MODULE_17__["getServer"])(workerScript.serverIp);
+ var server = Object(_Server_js__WEBPACK_IMPORTED_MODULE_18__["getServer"])(workerScript.serverIp);
if (server == null) {
- throw Object(_NetscriptEvaluator_js__WEBPACK_IMPORTED_MODULE_24__["makeRuntimeRejectMsg"])(workerScript, "Error getting Server for this script in write(). This is a bug please contact game dev");
+ throw Object(_NetscriptEvaluator_js__WEBPACK_IMPORTED_MODULE_25__["makeRuntimeRejectMsg"])(workerScript, "Error getting Server for this script in write(). This is a bug please contact game dev");
}
- var txtFile = Object(_TextFile_js__WEBPACK_IMPORTED_MODULE_22__["getTextFile"])(fn, server);
+ var txtFile = Object(_TextFile_js__WEBPACK_IMPORTED_MODULE_23__["getTextFile"])(fn, server);
if (txtFile == null) {
- txtFile = Object(_TextFile_js__WEBPACK_IMPORTED_MODULE_22__["createTextFile"])(fn, data, server);
+ txtFile = Object(_TextFile_js__WEBPACK_IMPORTED_MODULE_23__["createTextFile"])(fn, data, server);
return true;
}
if (mode === "w") {
@@ -32123,135 +32257,115 @@ function NetscriptFunctions(workerScript) {
}
return true;
} else {
- throw Object(_NetscriptEvaluator_js__WEBPACK_IMPORTED_MODULE_24__["makeRuntimeRejectMsg"])(workerScript, "Invalid argument passed in for write: " + port);
+ throw Object(_NetscriptEvaluator_js__WEBPACK_IMPORTED_MODULE_25__["makeRuntimeRejectMsg"])(workerScript, "Invalid argument passed in for write: " + port);
}
},
read : function(port) {
if (workerScript.checkingRam) {
- if (workerScript.loadedFns.read) {
- return 0;
- } else {
- workerScript.loadedFns.read = true;
- return _Constants_js__WEBPACK_IMPORTED_MODULE_6__["CONSTANTS"].ScriptReadWriteRamCost;
- }
+ return updateStaticRam("read", _Constants_js__WEBPACK_IMPORTED_MODULE_6__["CONSTANTS"].ScriptReadWriteRamCost);
}
+ updateDynamicRam("read", _Constants_js__WEBPACK_IMPORTED_MODULE_6__["CONSTANTS"].ScriptReadWriteRamCost);
if (!isNaN(port)) { //Read from port
//Port 1-10
port = Math.round(port);
if (port < 1 || port > _Constants_js__WEBPACK_IMPORTED_MODULE_6__["CONSTANTS"].NumNetscriptPorts) {
- throw Object(_NetscriptEvaluator_js__WEBPACK_IMPORTED_MODULE_24__["makeRuntimeRejectMsg"])(workerScript, "ERR: Trying to read from invalid port: " + port + ". Only ports 1-" + _Constants_js__WEBPACK_IMPORTED_MODULE_6__["CONSTANTS"].NumNetscriptPorts + " are valid.");
+ throw Object(_NetscriptEvaluator_js__WEBPACK_IMPORTED_MODULE_25__["makeRuntimeRejectMsg"])(workerScript, "ERROR: Trying to read from invalid port: " + port + ". Only ports 1-" + _Constants_js__WEBPACK_IMPORTED_MODULE_6__["CONSTANTS"].NumNetscriptPorts + " are valid.");
}
- var port = _NetscriptWorker_js__WEBPACK_IMPORTED_MODULE_23__["NetscriptPorts"][port-1];
- if (port == null || !(port instanceof _NetscriptPort_js__WEBPACK_IMPORTED_MODULE_26__["NetscriptPort"])) {
- throw Object(_NetscriptEvaluator_js__WEBPACK_IMPORTED_MODULE_24__["makeRuntimeRejectMsg"])(workerScript, "ERR: Could not find port: " + port + ". This is a bug contact the game developer");
+ var port = _NetscriptWorker_js__WEBPACK_IMPORTED_MODULE_24__["NetscriptPorts"][port-1];
+ if (port == null || !(port instanceof _NetscriptPort_js__WEBPACK_IMPORTED_MODULE_27__["NetscriptPort"])) {
+ throw Object(_NetscriptEvaluator_js__WEBPACK_IMPORTED_MODULE_25__["makeRuntimeRejectMsg"])(workerScript, "ERROR: Could not find port: " + port + ". This is a bug contact the game developer");
}
return port.read();
- } else if (Object(_utils_StringHelperFunctions_js__WEBPACK_IMPORTED_MODULE_31__["isString"])(port)) { //Read from text file
+ } else if (Object(_utils_StringHelperFunctions_js__WEBPACK_IMPORTED_MODULE_32__["isString"])(port)) { //Read from text file
var fn = port;
- var server = Object(_Server_js__WEBPACK_IMPORTED_MODULE_17__["getServer"])(workerScript.serverIp);
+ var server = Object(_Server_js__WEBPACK_IMPORTED_MODULE_18__["getServer"])(workerScript.serverIp);
if (server == null) {
- throw Object(_NetscriptEvaluator_js__WEBPACK_IMPORTED_MODULE_24__["makeRuntimeRejectMsg"])(workerScript, "Error getting Server for this script in read(). This is a bug please contact game dev");
+ throw Object(_NetscriptEvaluator_js__WEBPACK_IMPORTED_MODULE_25__["makeRuntimeRejectMsg"])(workerScript, "Error getting Server for this script in read(). This is a bug please contact game dev");
}
- var txtFile = Object(_TextFile_js__WEBPACK_IMPORTED_MODULE_22__["getTextFile"])(fn, server);
+ var txtFile = Object(_TextFile_js__WEBPACK_IMPORTED_MODULE_23__["getTextFile"])(fn, server);
if (txtFile !== null) {
return txtFile.text;
} else {
return "";
}
} else {
- throw Object(_NetscriptEvaluator_js__WEBPACK_IMPORTED_MODULE_24__["makeRuntimeRejectMsg"])(workerScript, "Invalid argument passed in for read(): " + port);
+ throw Object(_NetscriptEvaluator_js__WEBPACK_IMPORTED_MODULE_25__["makeRuntimeRejectMsg"])(workerScript, "Invalid argument passed in for read(): " + port);
}
},
peek : function(port) {
if (workerScript.checkingRam) {
- if (workerScript.loadedFns.peek) {
- return 0;
- } else {
- workerScript.loadedFns.peek = true;
- return _Constants_js__WEBPACK_IMPORTED_MODULE_6__["CONSTANTS"].ScriptReadWriteRamCost;
- }
+ return updateStaticRam("peek", _Constants_js__WEBPACK_IMPORTED_MODULE_6__["CONSTANTS"].ScriptReadWriteRamCost);
}
+ updateDynamicRam("peek", _Constants_js__WEBPACK_IMPORTED_MODULE_6__["CONSTANTS"].ScriptReadWriteRamCost);
if (isNaN(port)) {
- throw Object(_NetscriptEvaluator_js__WEBPACK_IMPORTED_MODULE_24__["makeRuntimeRejectMsg"])(workerScript, "ERR: peek() called with invalid argument. Must be a port number between 1 and " + _Constants_js__WEBPACK_IMPORTED_MODULE_6__["CONSTANTS"].NumNetscriptPorts);
+ throw Object(_NetscriptEvaluator_js__WEBPACK_IMPORTED_MODULE_25__["makeRuntimeRejectMsg"])(workerScript, "ERROR: peek() called with invalid argument. Must be a port number between 1 and " + _Constants_js__WEBPACK_IMPORTED_MODULE_6__["CONSTANTS"].NumNetscriptPorts);
}
port = Math.round(port);
if (port < 1 || port > _Constants_js__WEBPACK_IMPORTED_MODULE_6__["CONSTANTS"].NumNetscriptPorts) {
- throw Object(_NetscriptEvaluator_js__WEBPACK_IMPORTED_MODULE_24__["makeRuntimeRejectMsg"])(workerScript, "ERR: peek() called with invalid argument. Must be a port number between 1 and " + _Constants_js__WEBPACK_IMPORTED_MODULE_6__["CONSTANTS"].NumNetscriptPorts);
+ throw Object(_NetscriptEvaluator_js__WEBPACK_IMPORTED_MODULE_25__["makeRuntimeRejectMsg"])(workerScript, "ERROR: peek() called with invalid argument. Must be a port number between 1 and " + _Constants_js__WEBPACK_IMPORTED_MODULE_6__["CONSTANTS"].NumNetscriptPorts);
}
- var port = _NetscriptWorker_js__WEBPACK_IMPORTED_MODULE_23__["NetscriptPorts"][port-1];
- if (port == null || !(port instanceof _NetscriptPort_js__WEBPACK_IMPORTED_MODULE_26__["NetscriptPort"])) {
- throw Object(_NetscriptEvaluator_js__WEBPACK_IMPORTED_MODULE_24__["makeRuntimeRejectMsg"])(workerScript, "ERR: Could not find port: " + port + ". This is a bug contact the game developer");
+ var port = _NetscriptWorker_js__WEBPACK_IMPORTED_MODULE_24__["NetscriptPorts"][port-1];
+ if (port == null || !(port instanceof _NetscriptPort_js__WEBPACK_IMPORTED_MODULE_27__["NetscriptPort"])) {
+ throw Object(_NetscriptEvaluator_js__WEBPACK_IMPORTED_MODULE_25__["makeRuntimeRejectMsg"])(workerScript, "ERROR: Could not find port: " + port + ". This is a bug contact the game developer");
}
return port.peek();
},
clear : function(port) {
if (workerScript.checkingRam) {
- if (workerScript.loadedFns.clear) {
- return 0;
- } else {
- workerScript.loadedFns.clear = true;
- return _Constants_js__WEBPACK_IMPORTED_MODULE_6__["CONSTANTS"].ScriptReadWriteRamCost;
- }
+ return updateStaticRam("clear", _Constants_js__WEBPACK_IMPORTED_MODULE_6__["CONSTANTS"].ScriptReadWriteRamCost);
}
+ updateDynamicRam("clear", _Constants_js__WEBPACK_IMPORTED_MODULE_6__["CONSTANTS"].ScriptReadWriteRamCost);
if (!isNaN(port)) { //Clear port
port = Math.round(port);
if (port < 1 || port > _Constants_js__WEBPACK_IMPORTED_MODULE_6__["CONSTANTS"].NumNetscriptPorts) {
- throw Object(_NetscriptEvaluator_js__WEBPACK_IMPORTED_MODULE_24__["makeRuntimeRejectMsg"])(workerScript, "ERR: Trying to clear invalid port: " + port + ". Only ports 1-" + _Constants_js__WEBPACK_IMPORTED_MODULE_6__["CONSTANTS"].NumNetscriptPorts + " are valid");
+ throw Object(_NetscriptEvaluator_js__WEBPACK_IMPORTED_MODULE_25__["makeRuntimeRejectMsg"])(workerScript, "ERROR: Trying to clear invalid port: " + port + ". Only ports 1-" + _Constants_js__WEBPACK_IMPORTED_MODULE_6__["CONSTANTS"].NumNetscriptPorts + " are valid");
}
- var port = _NetscriptWorker_js__WEBPACK_IMPORTED_MODULE_23__["NetscriptPorts"][port-1];
- if (port == null || !(port instanceof _NetscriptPort_js__WEBPACK_IMPORTED_MODULE_26__["NetscriptPort"])) {
- throw Object(_NetscriptEvaluator_js__WEBPACK_IMPORTED_MODULE_24__["makeRuntimeRejectMsg"])(workerScript, "ERR: Could not find port: " + port + ". This is a bug contact the game developer");
+ var port = _NetscriptWorker_js__WEBPACK_IMPORTED_MODULE_24__["NetscriptPorts"][port-1];
+ if (port == null || !(port instanceof _NetscriptPort_js__WEBPACK_IMPORTED_MODULE_27__["NetscriptPort"])) {
+ throw Object(_NetscriptEvaluator_js__WEBPACK_IMPORTED_MODULE_25__["makeRuntimeRejectMsg"])(workerScript, "ERROR: Could not find port: " + port + ". This is a bug contact the game developer");
}
return port.clear();
- } else if (Object(_utils_StringHelperFunctions_js__WEBPACK_IMPORTED_MODULE_31__["isString"])(port)) { //Clear text file
+ } else if (Object(_utils_StringHelperFunctions_js__WEBPACK_IMPORTED_MODULE_32__["isString"])(port)) { //Clear text file
var fn = port;
- var server = Object(_Server_js__WEBPACK_IMPORTED_MODULE_17__["getServer"])(workerScript.serverIp);
+ var server = Object(_Server_js__WEBPACK_IMPORTED_MODULE_18__["getServer"])(workerScript.serverIp);
if (server == null) {
- throw Object(_NetscriptEvaluator_js__WEBPACK_IMPORTED_MODULE_24__["makeRuntimeRejectMsg"])(workerScript, "Error getting Server for this script in clear(). This is a bug please contact game dev");
+ throw Object(_NetscriptEvaluator_js__WEBPACK_IMPORTED_MODULE_25__["makeRuntimeRejectMsg"])(workerScript, "Error getting Server for this script in clear(). This is a bug please contact game dev");
}
- var txtFile = Object(_TextFile_js__WEBPACK_IMPORTED_MODULE_22__["getTextFile"])(fn, server);
+ var txtFile = Object(_TextFile_js__WEBPACK_IMPORTED_MODULE_23__["getTextFile"])(fn, server);
if (txtFile != null) {
txtFile.write("");
}
} else {
- throw Object(_NetscriptEvaluator_js__WEBPACK_IMPORTED_MODULE_24__["makeRuntimeRejectMsg"])(workerScript, "Invalid argument passed in for clear(): " + port);
+ throw Object(_NetscriptEvaluator_js__WEBPACK_IMPORTED_MODULE_25__["makeRuntimeRejectMsg"])(workerScript, "Invalid argument passed in for clear(): " + port);
}
return 0;
},
getPortHandle : function(port) {
if (workerScript.checkingRam) {
- if (workerScript.loadedFns.getPortHandle) {
- return 0;
- } else {
- workerScript.loadedFns.getPortHandle = true;
- return _Constants_js__WEBPACK_IMPORTED_MODULE_6__["CONSTANTS"].ScriptReadWriteRamCost * 10;
- }
+ return updateStaticRam("getPortHandle", _Constants_js__WEBPACK_IMPORTED_MODULE_6__["CONSTANTS"].ScriptReadWriteRamCost * 10);
}
+ updateDynamicRam("getPortHandle", _Constants_js__WEBPACK_IMPORTED_MODULE_6__["CONSTANTS"].ScriptReadWriteRamCost * 10);
if (isNaN(port)) {
- throw Object(_NetscriptEvaluator_js__WEBPACK_IMPORTED_MODULE_24__["makeRuntimeRejectMsg"])(workerScript, "ERR: Invalid argument passed into getPortHandle(). Must be an integer between 1 and " + _Constants_js__WEBPACK_IMPORTED_MODULE_6__["CONSTANTS"].NumNetscriptPorts);
+ throw Object(_NetscriptEvaluator_js__WEBPACK_IMPORTED_MODULE_25__["makeRuntimeRejectMsg"])(workerScript, "ERROR: Invalid argument passed into getPortHandle(). Must be an integer between 1 and " + _Constants_js__WEBPACK_IMPORTED_MODULE_6__["CONSTANTS"].NumNetscriptPorts);
}
port = Math.round(port);
if (port < 1 || port > _Constants_js__WEBPACK_IMPORTED_MODULE_6__["CONSTANTS"].NumNetscriptPorts) {
- throw Object(_NetscriptEvaluator_js__WEBPACK_IMPORTED_MODULE_24__["makeRuntimeRejectMsg"])(workerScript, "ERR: getPortHandle() called with invalid port number: " + port + ". Only ports 1-" + _Constants_js__WEBPACK_IMPORTED_MODULE_6__["CONSTANTS"].NumNetscriptPorts + " are valid");
+ throw Object(_NetscriptEvaluator_js__WEBPACK_IMPORTED_MODULE_25__["makeRuntimeRejectMsg"])(workerScript, "ERROR: getPortHandle() called with invalid port number: " + port + ". Only ports 1-" + _Constants_js__WEBPACK_IMPORTED_MODULE_6__["CONSTANTS"].NumNetscriptPorts + " are valid");
}
- var port = _NetscriptWorker_js__WEBPACK_IMPORTED_MODULE_23__["NetscriptPorts"][port-1];
- if (port == null || !(port instanceof _NetscriptPort_js__WEBPACK_IMPORTED_MODULE_26__["NetscriptPort"])) {
- throw Object(_NetscriptEvaluator_js__WEBPACK_IMPORTED_MODULE_24__["makeRuntimeRejectMsg"])(workerScript, "ERR: Could not find port: " + port + ". This is a bug contact the game developer");
+ var port = _NetscriptWorker_js__WEBPACK_IMPORTED_MODULE_24__["NetscriptPorts"][port-1];
+ if (port == null || !(port instanceof _NetscriptPort_js__WEBPACK_IMPORTED_MODULE_27__["NetscriptPort"])) {
+ throw Object(_NetscriptEvaluator_js__WEBPACK_IMPORTED_MODULE_25__["makeRuntimeRejectMsg"])(workerScript, "ERROR: Could not find port: " + port + ". This is a bug contact the game developer");
}
return port;
},
rm : function(fn) {
if (workerScript.checkingRam) {
- if (workerScript.loadedFns.rm) {
- return 0;
- } else {
- workerScript.loadedFns.rm = true;
- return _Constants_js__WEBPACK_IMPORTED_MODULE_6__["CONSTANTS"].ScriptReadWriteRamCost;
- }
+ return updateStaticRam("rm", _Constants_js__WEBPACK_IMPORTED_MODULE_6__["CONSTANTS"].ScriptReadWriteRamCost);
}
- var s = Object(_Server_js__WEBPACK_IMPORTED_MODULE_17__["getServer"])(workerScript.serverIp);
+ updateDynamicRam("rm", _Constants_js__WEBPACK_IMPORTED_MODULE_6__["CONSTANTS"].ScriptReadWriteRamCost);
+ var s = Object(_Server_js__WEBPACK_IMPORTED_MODULE_18__["getServer"])(workerScript.serverIp);
if (s == null) {
- throw Object(_NetscriptEvaluator_js__WEBPACK_IMPORTED_MODULE_24__["makeRuntimeRejectMsg"])(workerScript, "Error getting Server for this script in clear(). This is a bug please contact game dev");
+ throw Object(_NetscriptEvaluator_js__WEBPACK_IMPORTED_MODULE_25__["makeRuntimeRejectMsg"])(workerScript, "Error getting Server for this script in clear(). This is a bug please contact game dev");
}
if (fn.includes(".exe")) {
@@ -32261,7 +32375,7 @@ function NetscriptFunctions(workerScript) {
return true;
}
}
- } else if (Object(_Script_js__WEBPACK_IMPORTED_MODULE_16__["isScriptFilename"])(fn)) {
+ } else if (Object(_Script_js__WEBPACK_IMPORTED_MODULE_17__["isScriptFilename"])(fn)) {
for (var i = 0; i < s.scripts.length; ++i) {
if (s.scripts[i].filename === fn) {
//Check that the script isnt currently running
@@ -32278,7 +32392,7 @@ function NetscriptFunctions(workerScript) {
} else if (fn.endsWith(".lit")) {
for (var i = 0; i < s.messages.length; ++i) {
var f = s.messages[i];
- if (!(f instanceof _Message_js__WEBPACK_IMPORTED_MODULE_13__["Message"]) && Object(_utils_StringHelperFunctions_js__WEBPACK_IMPORTED_MODULE_31__["isString"])(f) && f === fn) {
+ if (!(f instanceof _Message_js__WEBPACK_IMPORTED_MODULE_14__["Message"]) && Object(_utils_StringHelperFunctions_js__WEBPACK_IMPORTED_MODULE_32__["isString"])(f) && f === fn) {
s.messages.splice(i, 1);
return true;
}
@@ -32295,17 +32409,13 @@ function NetscriptFunctions(workerScript) {
},
scriptRunning : function(scriptname, ip) {
if (workerScript.checkingRam) {
- if (workerScript.loadedFns.scriptRunning) {
- return 0;
- } else {
- workerScript.loadedFns.scriptRunning = true;
- return _Constants_js__WEBPACK_IMPORTED_MODULE_6__["CONSTANTS"].ScriptArbScriptRamCost;
- }
+ return updateStaticRam("scriptRunning", _Constants_js__WEBPACK_IMPORTED_MODULE_6__["CONSTANTS"].ScriptArbScriptRamCost);
}
- var server = Object(_Server_js__WEBPACK_IMPORTED_MODULE_17__["getServer"])(ip);
+ updateDynamicRam("scriptRunning", _Constants_js__WEBPACK_IMPORTED_MODULE_6__["CONSTANTS"].ScriptArbScriptRamCost);
+ var server = Object(_Server_js__WEBPACK_IMPORTED_MODULE_18__["getServer"])(ip);
if (server == null) {
workerScript.scriptRef.log("scriptRunning() failed. Invalid IP or hostname passed in: " + ip);
- throw Object(_NetscriptEvaluator_js__WEBPACK_IMPORTED_MODULE_24__["makeRuntimeRejectMsg"])(workerScript, "scriptRunning() failed. Invalid IP or hostname passed in: " + ip);
+ throw Object(_NetscriptEvaluator_js__WEBPACK_IMPORTED_MODULE_25__["makeRuntimeRejectMsg"])(workerScript, "scriptRunning() failed. Invalid IP or hostname passed in: " + ip);
}
for (var i = 0; i < server.runningScripts.length; ++i) {
if (server.runningScripts[i].filename == scriptname) {
@@ -32316,22 +32426,18 @@ function NetscriptFunctions(workerScript) {
},
scriptKill : function(scriptname, ip) {
if (workerScript.checkingRam) {
- if (workerScript.loadedFns.scriptKill) {
- return 0;
- } else {
- workerScript.loadedFns.scriptKill = true;
- return _Constants_js__WEBPACK_IMPORTED_MODULE_6__["CONSTANTS"].ScriptArbScriptRamCost;
- }
+ return updateStaticRam("scriptKill", _Constants_js__WEBPACK_IMPORTED_MODULE_6__["CONSTANTS"].ScriptArbScriptRamCost);
}
- var server = Object(_Server_js__WEBPACK_IMPORTED_MODULE_17__["getServer"])(ip);
+ updateDynamicRam("scriptKill", _Constants_js__WEBPACK_IMPORTED_MODULE_6__["CONSTANTS"].ScriptArbScriptRamCost);
+ var server = Object(_Server_js__WEBPACK_IMPORTED_MODULE_18__["getServer"])(ip);
if (server == null) {
workerScript.scriptRef.log("scriptKill() failed. Invalid IP or hostname passed in: " + ip);
- throw Object(_NetscriptEvaluator_js__WEBPACK_IMPORTED_MODULE_24__["makeRuntimeRejectMsg"])(workerScript, "scriptKill() failed. Invalid IP or hostname passed in: " + ip);
+ throw Object(_NetscriptEvaluator_js__WEBPACK_IMPORTED_MODULE_25__["makeRuntimeRejectMsg"])(workerScript, "scriptKill() failed. Invalid IP or hostname passed in: " + ip);
}
var suc = false;
for (var i = 0; i < server.runningScripts.length; ++i) {
if (server.runningScripts[i].filename == scriptname) {
- Object(_NetscriptWorker_js__WEBPACK_IMPORTED_MODULE_23__["killWorkerScript"])(server.runningScripts[i], server.ip);
+ Object(_NetscriptWorker_js__WEBPACK_IMPORTED_MODULE_24__["killWorkerScript"])(server.runningScripts[i], server.ip);
suc = true;
}
}
@@ -32343,17 +32449,13 @@ function NetscriptFunctions(workerScript) {
},
getScriptRam : function (scriptname, ip=workerScript.serverIp) {
if (workerScript.checkingRam) {
- if (workerScript.loadedFns.getScriptRam) {
- return 0;
- } else {
- workerScript.loadedFns.getScriptRam = true;
- return _Constants_js__WEBPACK_IMPORTED_MODULE_6__["CONSTANTS"].ScriptGetScriptRamCost;
- }
+ return updateStaticRam("getScriptRam", _Constants_js__WEBPACK_IMPORTED_MODULE_6__["CONSTANTS"].ScriptGetScriptRamCost);
}
- var server = Object(_Server_js__WEBPACK_IMPORTED_MODULE_17__["getServer"])(ip);
+ updateDynamicRam("getScriptRam", _Constants_js__WEBPACK_IMPORTED_MODULE_6__["CONSTANTS"].ScriptGetScriptRamCost);
+ var server = Object(_Server_js__WEBPACK_IMPORTED_MODULE_18__["getServer"])(ip);
if (server == null) {
workerScript.scriptRef.log("getScriptRam() failed. Invalid IP or hostname passed in: " + ip);
- throw Object(_NetscriptEvaluator_js__WEBPACK_IMPORTED_MODULE_24__["makeRuntimeRejectMsg"])(workerScript, "getScriptRam() failed. Invalid IP or hostname passed in: " + ip);
+ throw Object(_NetscriptEvaluator_js__WEBPACK_IMPORTED_MODULE_25__["makeRuntimeRejectMsg"])(workerScript, "getScriptRam() failed. Invalid IP or hostname passed in: " + ip);
}
for (var i = 0; i < server.scripts.length; ++i) {
if (server.scripts[i].filename == scriptname) {
@@ -32364,81 +32466,65 @@ function NetscriptFunctions(workerScript) {
},
getHackTime : function(ip) {
if (workerScript.checkingRam) {
- if (workerScript.loadedFns.getHackTime) {
- return 0;
- } else {
- workerScript.loadedFns.getHackTime = true;
- return _Constants_js__WEBPACK_IMPORTED_MODULE_6__["CONSTANTS"].ScriptGetHackTimeRamCost;
- }
+ return updateStaticRam("getHackTime", _Constants_js__WEBPACK_IMPORTED_MODULE_6__["CONSTANTS"].ScriptGetHackTimeRamCost);
}
- var server = Object(_Server_js__WEBPACK_IMPORTED_MODULE_17__["getServer"])(ip);
+ updateDynamicRam("getHackTime", _Constants_js__WEBPACK_IMPORTED_MODULE_6__["CONSTANTS"].ScriptGetHackTimeRamCost);
+ var server = Object(_Server_js__WEBPACK_IMPORTED_MODULE_18__["getServer"])(ip);
if (server == null) {
workerScript.scriptRef.log("getHackTime() failed. Invalid IP or hostname passed in: " + ip);
- throw Object(_NetscriptEvaluator_js__WEBPACK_IMPORTED_MODULE_24__["makeRuntimeRejectMsg"])(workerScript, "getHackTime() failed. Invalid IP or hostname passed in: " + ip);
+ throw Object(_NetscriptEvaluator_js__WEBPACK_IMPORTED_MODULE_25__["makeRuntimeRejectMsg"])(workerScript, "getHackTime() failed. Invalid IP or hostname passed in: " + ip);
}
- return Object(_NetscriptEvaluator_js__WEBPACK_IMPORTED_MODULE_24__["scriptCalculateHackingTime"])(server); //Returns seconds
+ return Object(_NetscriptEvaluator_js__WEBPACK_IMPORTED_MODULE_25__["scriptCalculateHackingTime"])(server); //Returns seconds
},
getGrowTime : function(ip) {
if (workerScript.checkingRam) {
- if (workerScript.loadedFns.getGrowTime) {
- return 0;
- } else {
- workerScript.loadedFns.getGrowTime = true;
- return _Constants_js__WEBPACK_IMPORTED_MODULE_6__["CONSTANTS"].ScriptGetHackTimeRamCost;
- }
+ return updateStaticRam("getGrowTime", _Constants_js__WEBPACK_IMPORTED_MODULE_6__["CONSTANTS"].ScriptGetHackTimeRamCost);
}
- var server = Object(_Server_js__WEBPACK_IMPORTED_MODULE_17__["getServer"])(ip);
+ updateDynamicRam("getGrowTime", _Constants_js__WEBPACK_IMPORTED_MODULE_6__["CONSTANTS"].ScriptGetHackTimeRamCost);
+ var server = Object(_Server_js__WEBPACK_IMPORTED_MODULE_18__["getServer"])(ip);
if (server == null) {
workerScript.scriptRef.log("getGrowTime() failed. Invalid IP or hostname passed in: " + ip);
- throw Object(_NetscriptEvaluator_js__WEBPACK_IMPORTED_MODULE_24__["makeRuntimeRejectMsg"])(workerScript, "getGrowTime() failed. Invalid IP or hostname passed in: " + ip);
+ throw Object(_NetscriptEvaluator_js__WEBPACK_IMPORTED_MODULE_25__["makeRuntimeRejectMsg"])(workerScript, "getGrowTime() failed. Invalid IP or hostname passed in: " + ip);
}
- return Object(_NetscriptEvaluator_js__WEBPACK_IMPORTED_MODULE_24__["scriptCalculateGrowTime"])(server) / 1000; //Returns seconds
+ return Object(_NetscriptEvaluator_js__WEBPACK_IMPORTED_MODULE_25__["scriptCalculateGrowTime"])(server) / 1000; //Returns seconds
},
getWeakenTime : function(ip) {
if (workerScript.checkingRam) {
- if (workerScript.loadedFns.getWeakenTime) {
- return 0;
- } else {
- workerScript.loadedFns.getWeakenTime = true;
- return _Constants_js__WEBPACK_IMPORTED_MODULE_6__["CONSTANTS"].ScriptGetHackTimeRamCost;
- }
+ return updateStaticRam("getWeakenTime", _Constants_js__WEBPACK_IMPORTED_MODULE_6__["CONSTANTS"].ScriptGetHackTimeRamCost);
}
- var server = Object(_Server_js__WEBPACK_IMPORTED_MODULE_17__["getServer"])(ip);
+ updateDynamicRam("getWeakenTime", _Constants_js__WEBPACK_IMPORTED_MODULE_6__["CONSTANTS"].ScriptGetHackTimeRamCost);
+ var server = Object(_Server_js__WEBPACK_IMPORTED_MODULE_18__["getServer"])(ip);
if (server == null) {
workerScript.scriptRef.log("getWeakenTime() failed. Invalid IP or hostname passed in: " + ip);
- throw Object(_NetscriptEvaluator_js__WEBPACK_IMPORTED_MODULE_24__["makeRuntimeRejectMsg"])(workerScript, "getWeakenTime() failed. Invalid IP or hostname passed in: " + ip);
+ throw Object(_NetscriptEvaluator_js__WEBPACK_IMPORTED_MODULE_25__["makeRuntimeRejectMsg"])(workerScript, "getWeakenTime() failed. Invalid IP or hostname passed in: " + ip);
}
- return Object(_NetscriptEvaluator_js__WEBPACK_IMPORTED_MODULE_24__["scriptCalculateWeakenTime"])(server) / 1000; //Returns seconds
+ return Object(_NetscriptEvaluator_js__WEBPACK_IMPORTED_MODULE_25__["scriptCalculateWeakenTime"])(server) / 1000; //Returns seconds
},
getScriptIncome : function(scriptname, ip) {
if (workerScript.checkingRam) {
- if (workerScript.loadedFns.getScriptIncome) {
- return 0;
- } else {
- workerScript.loadedFns.getScriptIncome = true;
- return _Constants_js__WEBPACK_IMPORTED_MODULE_6__["CONSTANTS"].ScriptGetScriptRamCost;
- }
+ return updateStaticRam("getScriptIncome", _Constants_js__WEBPACK_IMPORTED_MODULE_6__["CONSTANTS"].ScriptGetScriptRamCost);
}
+ updateDynamicRam("getScriptIncome", _Constants_js__WEBPACK_IMPORTED_MODULE_6__["CONSTANTS"].ScriptGetScriptRamCost);
if (arguments.length === 0) {
//Get total script income
var res = [];
res.push(Object(_ActiveScriptsUI_js__WEBPACK_IMPORTED_MODULE_0__["updateActiveScriptsItems"])());
- res.push(_Player_js__WEBPACK_IMPORTED_MODULE_15__["Player"].scriptProdSinceLastAug / (_Player_js__WEBPACK_IMPORTED_MODULE_15__["Player"].playtimeSinceLastAug/1000));
+ res.push(_Player_js__WEBPACK_IMPORTED_MODULE_16__["Player"].scriptProdSinceLastAug / (_Player_js__WEBPACK_IMPORTED_MODULE_16__["Player"].playtimeSinceLastAug/1000));
return res;
} else {
//Get income for a particular script
- var server = Object(_Server_js__WEBPACK_IMPORTED_MODULE_17__["getServer"])(ip);
+ var server = Object(_Server_js__WEBPACK_IMPORTED_MODULE_18__["getServer"])(ip);
if (server == null) {
workerScript.scriptRef.log("getScriptIncome() failed. Invalid IP or hostnamed passed in: " + ip);
- throw Object(_NetscriptEvaluator_js__WEBPACK_IMPORTED_MODULE_24__["makeRuntimeRejectMsg"])(workerScript, "getScriptIncome() failed. Invalid IP or hostnamed passed in: " + ip);
+ throw Object(_NetscriptEvaluator_js__WEBPACK_IMPORTED_MODULE_25__["makeRuntimeRejectMsg"])(workerScript, "getScriptIncome() failed. Invalid IP or hostnamed passed in: " + ip);
}
var argsForScript = [];
for (var i = 2; i < arguments.length; ++i) {
argsForScript.push(arguments[i]);
}
- var runningScriptObj = Object(_Script_js__WEBPACK_IMPORTED_MODULE_16__["findRunningScript"])(scriptname, argsForScript, server);
+ var runningScriptObj = Object(_Script_js__WEBPACK_IMPORTED_MODULE_17__["findRunningScript"])(scriptname, argsForScript, server);
if (runningScriptObj == null) {
- workerScript.scriptRef.log("getScriptIncome() failed. No such script "+ scriptname + " on " + server.hostname + " with args: " + Object(_utils_HelperFunctions_js__WEBPACK_IMPORTED_MODULE_29__["printArray"])(argsForScript));
+ workerScript.scriptRef.log("getScriptIncome() failed. No such script "+ scriptname + " on " + server.hostname + " with args: " + Object(_utils_HelperFunctions_js__WEBPACK_IMPORTED_MODULE_30__["printArray"])(argsForScript));
return -1;
}
return runningScriptObj.onlineMoneyMade / runningScriptObj.onlineRunningTime;
@@ -32446,33 +32532,29 @@ function NetscriptFunctions(workerScript) {
},
getScriptExpGain : function(scriptname, ip) {
if (workerScript.checkingRam) {
- if (workerScript.loadedFns.getScriptExpGain) {
- return 0;
- } else {
- workerScript.loadedFns.getScriptExpGain = true;
- return _Constants_js__WEBPACK_IMPORTED_MODULE_6__["CONSTANTS"].ScriptGetScriptRamCost;
- }
+ return updateStaticRam("getScriptExpGain", _Constants_js__WEBPACK_IMPORTED_MODULE_6__["CONSTANTS"].ScriptGetScriptRamCost);
}
+ updateDynamicRam("getScriptExpGain", _Constants_js__WEBPACK_IMPORTED_MODULE_6__["CONSTANTS"].ScriptGetScriptRamCost);
if (arguments.length === 0) {
var total = 0;
- for (var i = 0; i < _NetscriptWorker_js__WEBPACK_IMPORTED_MODULE_23__["workerScripts"].length; ++i) {
- total += (_NetscriptWorker_js__WEBPACK_IMPORTED_MODULE_23__["workerScripts"][i].scriptRef.onlineExpGained / _NetscriptWorker_js__WEBPACK_IMPORTED_MODULE_23__["workerScripts"][i].scriptRef.onlineRunningTime);
+ for (var i = 0; i < _NetscriptWorker_js__WEBPACK_IMPORTED_MODULE_24__["workerScripts"].length; ++i) {
+ total += (_NetscriptWorker_js__WEBPACK_IMPORTED_MODULE_24__["workerScripts"][i].scriptRef.onlineExpGained / _NetscriptWorker_js__WEBPACK_IMPORTED_MODULE_24__["workerScripts"][i].scriptRef.onlineRunningTime);
}
return total;
} else {
//Get income for a particular script
- var server = Object(_Server_js__WEBPACK_IMPORTED_MODULE_17__["getServer"])(ip);
+ var server = Object(_Server_js__WEBPACK_IMPORTED_MODULE_18__["getServer"])(ip);
if (server == null) {
workerScript.scriptRef.log("getScriptExpGain() failed. Invalid IP or hostnamed passed in: " + ip);
- throw Object(_NetscriptEvaluator_js__WEBPACK_IMPORTED_MODULE_24__["makeRuntimeRejectMsg"])(workerScript, "getScriptExpGain() failed. Invalid IP or hostnamed passed in: " + ip);
+ throw Object(_NetscriptEvaluator_js__WEBPACK_IMPORTED_MODULE_25__["makeRuntimeRejectMsg"])(workerScript, "getScriptExpGain() failed. Invalid IP or hostnamed passed in: " + ip);
}
var argsForScript = [];
for (var i = 2; i < arguments.length; ++i) {
argsForScript.push(arguments[i]);
}
- var runningScriptObj = Object(_Script_js__WEBPACK_IMPORTED_MODULE_16__["findRunningScript"])(scriptname, argsForScript, server);
+ var runningScriptObj = Object(_Script_js__WEBPACK_IMPORTED_MODULE_17__["findRunningScript"])(scriptname, argsForScript, server);
if (runningScriptObj == null) {
- workerScript.scriptRef.log("getScriptExpGain() failed. No such script "+ scriptname + " on " + server.hostname + " with args: " + Object(_utils_HelperFunctions_js__WEBPACK_IMPORTED_MODULE_29__["printArray"])(argsForScript));
+ workerScript.scriptRef.log("getScriptExpGain() failed. No such script "+ scriptname + " on " + server.hostname + " with args: " + Object(_utils_HelperFunctions_js__WEBPACK_IMPORTED_MODULE_30__["printArray"])(argsForScript));
return -1;
}
return runningScriptObj.onlineExpGained / runningScriptObj.onlineRunningTime;
@@ -32480,62 +32562,54 @@ function NetscriptFunctions(workerScript) {
},
getTimeSinceLastAug : function() {
if (workerScript.checkingRam) {
- if (workerScript.loadedFns.getTimeSinceLastAug) {
- return 0;
- } else {
- workerScript.loadedFns.getTimeSinceLastAug = true;
- return _Constants_js__WEBPACK_IMPORTED_MODULE_6__["CONSTANTS"].ScriptGetHackTimeRamCost;
- }
+ return updateStaticRam("getTimeSinceLastAug", _Constants_js__WEBPACK_IMPORTED_MODULE_6__["CONSTANTS"].ScriptGetHackTimeRamCost);
}
- return _Player_js__WEBPACK_IMPORTED_MODULE_15__["Player"].playtimeSinceLastAug;
+ updateDynamicRam("getTimeSinceLastAug", _Constants_js__WEBPACK_IMPORTED_MODULE_6__["CONSTANTS"].ScriptGetHackTimeRamCost);
+ return _Player_js__WEBPACK_IMPORTED_MODULE_16__["Player"].playtimeSinceLastAug;
},
prompt : function(txt) {
if (workerScript.checkingRam) {return 0;}
- if (_utils_YesNoBox_js__WEBPACK_IMPORTED_MODULE_32__["yesNoBoxOpen"]) {
+ if (_utils_YesNoBox_js__WEBPACK_IMPORTED_MODULE_33__["yesNoBoxOpen"]) {
workerScript.scriptRef.log("ERROR: confirm() failed because a pop-up dialog box is already open");
return false;
}
- if (!Object(_utils_StringHelperFunctions_js__WEBPACK_IMPORTED_MODULE_31__["isString"])(txt)) {txt = String(txt);}
- var yesBtn = Object(_utils_YesNoBox_js__WEBPACK_IMPORTED_MODULE_32__["yesNoBoxGetYesButton"])(), noBtn = Object(_utils_YesNoBox_js__WEBPACK_IMPORTED_MODULE_32__["yesNoBoxGetNoButton"])();
+ if (!Object(_utils_StringHelperFunctions_js__WEBPACK_IMPORTED_MODULE_32__["isString"])(txt)) {txt = String(txt);}
+ var yesBtn = Object(_utils_YesNoBox_js__WEBPACK_IMPORTED_MODULE_33__["yesNoBoxGetYesButton"])(), noBtn = Object(_utils_YesNoBox_js__WEBPACK_IMPORTED_MODULE_33__["yesNoBoxGetNoButton"])();
yesBtn.innerHTML = "Yes";
noBtn.innerHTML = "No";
return new Promise(function(resolve, reject) {
yesBtn.addEventListener("click", ()=>{
- Object(_utils_YesNoBox_js__WEBPACK_IMPORTED_MODULE_32__["yesNoBoxClose"])();
+ Object(_utils_YesNoBox_js__WEBPACK_IMPORTED_MODULE_33__["yesNoBoxClose"])();
resolve(true);
});
noBtn.addEventListener("click", ()=>{
- Object(_utils_YesNoBox_js__WEBPACK_IMPORTED_MODULE_32__["yesNoBoxClose"])();
+ Object(_utils_YesNoBox_js__WEBPACK_IMPORTED_MODULE_33__["yesNoBoxClose"])();
resolve(false);
});
- Object(_utils_YesNoBox_js__WEBPACK_IMPORTED_MODULE_32__["yesNoBoxCreate"])(txt);
+ Object(_utils_YesNoBox_js__WEBPACK_IMPORTED_MODULE_33__["yesNoBoxCreate"])(txt);
});
},
/* Singularity Functions */
universityCourse : function(universityName, className) {
+ var ramCost = _Constants_js__WEBPACK_IMPORTED_MODULE_6__["CONSTANTS"].ScriptSingularityFn1RamCost;
+ if (_Player_js__WEBPACK_IMPORTED_MODULE_16__["Player"].bitNodeN !== 4) {ramCost *= 8;}
if (workerScript.checkingRam) {
- if (workerScript.loadedFns.universityCourse) {
- return 0;
- } else {
- workerScript.loadedFns.universityCourse = true;
- var ramCost = _Constants_js__WEBPACK_IMPORTED_MODULE_6__["CONSTANTS"].ScriptSingularityFn1RamCost;
- if (_Player_js__WEBPACK_IMPORTED_MODULE_15__["Player"].bitNodeN !== 4) {ramCost *= 8;}
- return ramCost;
- }
+ return updateStaticRam("universityCourse", ramCost);
}
- if (_Player_js__WEBPACK_IMPORTED_MODULE_15__["Player"].bitNodeN != 4) {
+ updateDynamicRam("universityCourse", ramCost);
+ if (_Player_js__WEBPACK_IMPORTED_MODULE_16__["Player"].bitNodeN != 4) {
if (!(hasSingularitySF && singularitySFLvl >= 1)) {
- throw Object(_NetscriptEvaluator_js__WEBPACK_IMPORTED_MODULE_24__["makeRuntimeRejectMsg"])(workerScript, "Cannot run universityCourse(). It is a Singularity Function and requires SourceFile-4 (level 1) to run.");
+ throw Object(_NetscriptEvaluator_js__WEBPACK_IMPORTED_MODULE_25__["makeRuntimeRejectMsg"])(workerScript, "Cannot run universityCourse(). It is a Singularity Function and requires SourceFile-4 (level 1) to run.");
return false;
}
}
- if (_Missions_js__WEBPACK_IMPORTED_MODULE_14__["inMission"]) {
+ if (_Missions_js__WEBPACK_IMPORTED_MODULE_15__["inMission"]) {
workerScript.scriptRef.log("ERROR: universityCourse() failed because you are in the middle of a mission.");
return;
}
- if (_Player_js__WEBPACK_IMPORTED_MODULE_15__["Player"].isWorking) {
- var txt = _Player_js__WEBPACK_IMPORTED_MODULE_15__["Player"].singularityStopWork();
+ if (_Player_js__WEBPACK_IMPORTED_MODULE_16__["Player"].isWorking) {
+ var txt = _Player_js__WEBPACK_IMPORTED_MODULE_16__["Player"].singularityStopWork();
if (workerScript.disableLogs.ALL == null && workerScript.disableLogs.universityCourse == null) {
workerScript.scriptRef.log(txt);
}
@@ -32543,30 +32617,30 @@ function NetscriptFunctions(workerScript) {
var costMult, expMult;
switch(universityName.toLowerCase()) {
- case _Location_js__WEBPACK_IMPORTED_MODULE_12__["Locations"].AevumSummitUniversity.toLowerCase():
- if (_Player_js__WEBPACK_IMPORTED_MODULE_15__["Player"].city != _Location_js__WEBPACK_IMPORTED_MODULE_12__["Locations"].Aevum) {
+ case _Location_js__WEBPACK_IMPORTED_MODULE_13__["Locations"].AevumSummitUniversity.toLowerCase():
+ if (_Player_js__WEBPACK_IMPORTED_MODULE_16__["Player"].city != _Location_js__WEBPACK_IMPORTED_MODULE_13__["Locations"].Aevum) {
workerScript.scriptRef.log("ERROR: You cannot study at Summit University because you are not in Aevum. universityCourse() failed");
return false;
}
- _Player_js__WEBPACK_IMPORTED_MODULE_15__["Player"].location = _Location_js__WEBPACK_IMPORTED_MODULE_12__["Locations"].AevumSummitUniversity;
+ _Player_js__WEBPACK_IMPORTED_MODULE_16__["Player"].location = _Location_js__WEBPACK_IMPORTED_MODULE_13__["Locations"].AevumSummitUniversity;
costMult = 4;
expMult = 3;
break;
- case _Location_js__WEBPACK_IMPORTED_MODULE_12__["Locations"].Sector12RothmanUniversity.toLowerCase():
- if (_Player_js__WEBPACK_IMPORTED_MODULE_15__["Player"].city != _Location_js__WEBPACK_IMPORTED_MODULE_12__["Locations"].Sector12) {
+ case _Location_js__WEBPACK_IMPORTED_MODULE_13__["Locations"].Sector12RothmanUniversity.toLowerCase():
+ if (_Player_js__WEBPACK_IMPORTED_MODULE_16__["Player"].city != _Location_js__WEBPACK_IMPORTED_MODULE_13__["Locations"].Sector12) {
workerScript.scriptRef.log("ERROR: You cannot study at Rothman University because you are not in Sector-12. universityCourse() failed");
return false;
}
- _Player_js__WEBPACK_IMPORTED_MODULE_15__["Player"].location = _Location_js__WEBPACK_IMPORTED_MODULE_12__["Locations"].Sector12RothmanUniversity;
+ _Player_js__WEBPACK_IMPORTED_MODULE_16__["Player"].location = _Location_js__WEBPACK_IMPORTED_MODULE_13__["Locations"].Sector12RothmanUniversity;
costMult = 3;
expMult = 2;
break;
- case _Location_js__WEBPACK_IMPORTED_MODULE_12__["Locations"].VolhavenZBInstituteOfTechnology.toLowerCase():
- if (_Player_js__WEBPACK_IMPORTED_MODULE_15__["Player"].city != _Location_js__WEBPACK_IMPORTED_MODULE_12__["Locations"].Volhaven) {
+ case _Location_js__WEBPACK_IMPORTED_MODULE_13__["Locations"].VolhavenZBInstituteOfTechnology.toLowerCase():
+ if (_Player_js__WEBPACK_IMPORTED_MODULE_16__["Player"].city != _Location_js__WEBPACK_IMPORTED_MODULE_13__["Locations"].Volhaven) {
workerScript.scriptRef.log("ERROR: You cannot study at ZB Institute of Technology because you are not in Volhaven. universityCourse() failed");
return false;
}
- _Player_js__WEBPACK_IMPORTED_MODULE_15__["Player"].location = _Location_js__WEBPACK_IMPORTED_MODULE_12__["Locations"].VolhavenZBInstituteOfTechnology;
+ _Player_js__WEBPACK_IMPORTED_MODULE_16__["Player"].location = _Location_js__WEBPACK_IMPORTED_MODULE_13__["Locations"].VolhavenZBInstituteOfTechnology;
costMult = 5;
expMult = 4;
break;
@@ -32599,7 +32673,7 @@ function NetscriptFunctions(workerScript) {
workerScript.scriptRef.log("Invalid class name: " + className + ". universityCourse() failed");
return false;
}
- _Player_js__WEBPACK_IMPORTED_MODULE_15__["Player"].startClass(costMult, expMult, task);
+ _Player_js__WEBPACK_IMPORTED_MODULE_16__["Player"].startClass(costMult, expMult, task);
if (workerScript.disableLogs.ALL == null && workerScript.disableLogs.universityCourse == null) {
workerScript.scriptRef.log("Started " + task + " at " + universityName);
}
@@ -32607,76 +32681,72 @@ function NetscriptFunctions(workerScript) {
},
gymWorkout : function(gymName, stat) {
+ var ramCost = _Constants_js__WEBPACK_IMPORTED_MODULE_6__["CONSTANTS"].ScriptSingularityFn1RamCost;
+ if (_Player_js__WEBPACK_IMPORTED_MODULE_16__["Player"].bitNodeN !== 4) {ramCost *= 8;}
if (workerScript.checkingRam) {
- if (workerScript.loadedFns.gymWorkout) {
- return 0;
- } else {
- workerScript.loadedFns.gymWorkout = true;
- var ramCost = _Constants_js__WEBPACK_IMPORTED_MODULE_6__["CONSTANTS"].ScriptSingularityFn1RamCost;
- if (_Player_js__WEBPACK_IMPORTED_MODULE_15__["Player"].bitNodeN !== 4) {ramCost *= 8;}
- return ramCost;
- }
+ return updateStaticRam("gymWorkout", ramCost);
}
- if (_Player_js__WEBPACK_IMPORTED_MODULE_15__["Player"].bitNodeN != 4) {
+ updateDynamicRam("gymWorkout", ramCost);
+ if (_Player_js__WEBPACK_IMPORTED_MODULE_16__["Player"].bitNodeN != 4) {
if (!(hasSingularitySF && singularitySFLvl >= 1)) {
- throw Object(_NetscriptEvaluator_js__WEBPACK_IMPORTED_MODULE_24__["makeRuntimeRejectMsg"])(workerScript, "Cannot run gymWorkout(). It is a Singularity Function and requires SourceFile-4 (level 1) to run.");
+ throw Object(_NetscriptEvaluator_js__WEBPACK_IMPORTED_MODULE_25__["makeRuntimeRejectMsg"])(workerScript, "Cannot run gymWorkout(). It is a Singularity Function and requires SourceFile-4 (level 1) to run.");
return false;
}
}
- if (_Missions_js__WEBPACK_IMPORTED_MODULE_14__["inMission"]) {
+ if (_Missions_js__WEBPACK_IMPORTED_MODULE_15__["inMission"]) {
workerScript.scriptRef.log("ERROR: gymWorkout() failed because you are in the middle of a mission.");
return;
}
- if (_Player_js__WEBPACK_IMPORTED_MODULE_15__["Player"].isWorking) {
- var txt = _Player_js__WEBPACK_IMPORTED_MODULE_15__["Player"].singularityStopWork();
+ if (_Player_js__WEBPACK_IMPORTED_MODULE_16__["Player"].isWorking) {
+ var txt = _Player_js__WEBPACK_IMPORTED_MODULE_16__["Player"].singularityStopWork();
if (workerScript.disableLogs.ALL == null && workerScript.disableLogs.gymWorkout == null) {
workerScript.scriptRef.log(txt);
}
}
var costMult, expMult;
switch(gymName.toLowerCase()) {
- case _Location_js__WEBPACK_IMPORTED_MODULE_12__["Locations"].AevumCrushFitnessGym.toLowerCase():
- if (_Player_js__WEBPACK_IMPORTED_MODULE_15__["Player"].city != _Location_js__WEBPACK_IMPORTED_MODULE_12__["Locations"].Aevum) {
+ case _Location_js__WEBPACK_IMPORTED_MODULE_13__["Locations"].AevumCrushFitnessGym.toLowerCase():
+ if (_Player_js__WEBPACK_IMPORTED_MODULE_16__["Player"].city != _Location_js__WEBPACK_IMPORTED_MODULE_13__["Locations"].Aevum) {
workerScript.scriptRef.log("ERROR: You cannot workout at Crush Fitness because you are not in Aevum. gymWorkout() failed");
return false;
}
- _Player_js__WEBPACK_IMPORTED_MODULE_15__["Player"].location = _Location_js__WEBPACK_IMPORTED_MODULE_12__["Locations"].AevumCrushFitnessGym;
+ _Player_js__WEBPACK_IMPORTED_MODULE_16__["Player"].location = _Location_js__WEBPACK_IMPORTED_MODULE_13__["Locations"].AevumCrushFitnessGym;
costMult = 3;
expMult = 2;
break;
- case _Location_js__WEBPACK_IMPORTED_MODULE_12__["Locations"].AevumSnapFitnessGym.toLowerCase():
- if (_Player_js__WEBPACK_IMPORTED_MODULE_15__["Player"].city != _Location_js__WEBPACK_IMPORTED_MODULE_12__["Locations"].Aevum) {
+ case _Location_js__WEBPACK_IMPORTED_MODULE_13__["Locations"].AevumSnapFitnessGym.toLowerCase():
+ if (_Player_js__WEBPACK_IMPORTED_MODULE_16__["Player"].city != _Location_js__WEBPACK_IMPORTED_MODULE_13__["Locations"].Aevum) {
workerScript.scriptRef.log("ERROR: You cannot workout at Snap Fitness because you are not in Aevum. gymWorkout() failed");
return false;
}
- _Player_js__WEBPACK_IMPORTED_MODULE_15__["Player"].location = _Location_js__WEBPACK_IMPORTED_MODULE_12__["Locations"].AevumSnapFitnessGym;
+ _Player_js__WEBPACK_IMPORTED_MODULE_16__["Player"].location = _Location_js__WEBPACK_IMPORTED_MODULE_13__["Locations"].AevumSnapFitnessGym;
costMult = 10;
expMult = 5;
break;
- case _Location_js__WEBPACK_IMPORTED_MODULE_12__["Locations"].Sector12IronGym.toLowerCase():
- if (_Player_js__WEBPACK_IMPORTED_MODULE_15__["Player"].city != _Location_js__WEBPACK_IMPORTED_MODULE_12__["Locations"].Sector12) {
+ case _Location_js__WEBPACK_IMPORTED_MODULE_13__["Locations"].Sector12IronGym.toLowerCase():
+ if (_Player_js__WEBPACK_IMPORTED_MODULE_16__["Player"].city != _Location_js__WEBPACK_IMPORTED_MODULE_13__["Locations"].Sector12) {
workerScript.scriptRef.log("ERROR: You cannot workout at Iron Gym because you are not in Sector-12. gymWorkout() failed");
return false;
}
- _Player_js__WEBPACK_IMPORTED_MODULE_15__["Player"].location = _Location_js__WEBPACK_IMPORTED_MODULE_12__["Locations"].Sector12IronGym;
+ _Player_js__WEBPACK_IMPORTED_MODULE_16__["Player"].location = _Location_js__WEBPACK_IMPORTED_MODULE_13__["Locations"].Sector12IronGym;
costMult = 1;
expMult = 1;
break;
- case _Location_js__WEBPACK_IMPORTED_MODULE_12__["Locations"].Sector12PowerhouseGym.toLowerCase():
- if (_Player_js__WEBPACK_IMPORTED_MODULE_15__["Player"].city != _Location_js__WEBPACK_IMPORTED_MODULE_12__["Locations"].Sector12) {
+ case _Location_js__WEBPACK_IMPORTED_MODULE_13__["Locations"].Sector12PowerhouseGym.toLowerCase():
+ if (_Player_js__WEBPACK_IMPORTED_MODULE_16__["Player"].city != _Location_js__WEBPACK_IMPORTED_MODULE_13__["Locations"].Sector12) {
workerScript.scriptRef.log("ERROR: You cannot workout at Powerhouse Gym because you are not in Sector-12. gymWorkout() failed");
return false;
}
- _Player_js__WEBPACK_IMPORTED_MODULE_15__["Player"].location = _Location_js__WEBPACK_IMPORTED_MODULE_12__["Locations"].Sector12PowerhouseGym;
+ _Player_js__WEBPACK_IMPORTED_MODULE_16__["Player"].location = _Location_js__WEBPACK_IMPORTED_MODULE_13__["Locations"].Sector12PowerhouseGym;
costMult = 20;
expMult = 10;
break;
- case _Location_js__WEBPACK_IMPORTED_MODULE_12__["Locations"].VolhavenMilleniumFitnessGym:
- if (_Player_js__WEBPACK_IMPORTED_MODULE_15__["Player"].city != _Location_js__WEBPACK_IMPORTED_MODULE_12__["Locations"].Volhaven) {
+ case _Location_js__WEBPACK_IMPORTED_MODULE_13__["Locations"].VolhavenMilleniumFitnessGym:
+ if (_Player_js__WEBPACK_IMPORTED_MODULE_16__["Player"].city != _Location_js__WEBPACK_IMPORTED_MODULE_13__["Locations"].Volhaven) {
workerScript.scriptRef.log("ERROR: You cannot workout at Millenium Fitness Gym because you are not in Volhaven. gymWorkout() failed");
return false;
}
- _Player_js__WEBPACK_IMPORTED_MODULE_15__["Player"].location = _Location_js__WEBPACK_IMPORTED_MODULE_12__["Locations"].VolhavenMilleniumFitnessGym;
+ _Player_js__WEBPACK_IMPORTED_MODULE_16__["Player"].location = _Location_js__WEBPACK_IMPORTED_MODULE_13__["Locations"].VolhavenMilleniumFitnessGym;
costMult = 7;
expMult = 4;
break;
@@ -32688,19 +32758,19 @@ function NetscriptFunctions(workerScript) {
switch(stat.toLowerCase()) {
case "strength".toLowerCase():
case "str".toLowerCase():
- _Player_js__WEBPACK_IMPORTED_MODULE_15__["Player"].startClass(costMult, expMult, _Constants_js__WEBPACK_IMPORTED_MODULE_6__["CONSTANTS"].ClassGymStrength);
+ _Player_js__WEBPACK_IMPORTED_MODULE_16__["Player"].startClass(costMult, expMult, _Constants_js__WEBPACK_IMPORTED_MODULE_6__["CONSTANTS"].ClassGymStrength);
break;
case "defense".toLowerCase():
case "def".toLowerCase():
- _Player_js__WEBPACK_IMPORTED_MODULE_15__["Player"].startClass(costMult, expMult, _Constants_js__WEBPACK_IMPORTED_MODULE_6__["CONSTANTS"].ClassGymDefense);
+ _Player_js__WEBPACK_IMPORTED_MODULE_16__["Player"].startClass(costMult, expMult, _Constants_js__WEBPACK_IMPORTED_MODULE_6__["CONSTANTS"].ClassGymDefense);
break;
case "dexterity".toLowerCase():
case "dex".toLowerCase():
- _Player_js__WEBPACK_IMPORTED_MODULE_15__["Player"].startClass(costMult, expMult, _Constants_js__WEBPACK_IMPORTED_MODULE_6__["CONSTANTS"].ClassGymDexterity);
+ _Player_js__WEBPACK_IMPORTED_MODULE_16__["Player"].startClass(costMult, expMult, _Constants_js__WEBPACK_IMPORTED_MODULE_6__["CONSTANTS"].ClassGymDexterity);
break;
case "agility".toLowerCase():
case "agi".toLowerCase():
- _Player_js__WEBPACK_IMPORTED_MODULE_15__["Player"].startClass(costMult, expMult, _Constants_js__WEBPACK_IMPORTED_MODULE_6__["CONSTANTS"].ClassGymAgility);
+ _Player_js__WEBPACK_IMPORTED_MODULE_16__["Player"].startClass(costMult, expMult, _Constants_js__WEBPACK_IMPORTED_MODULE_6__["CONSTANTS"].ClassGymAgility);
break;
default:
workerScript.scriptRef.log("Invalid stat: " + stat + ". gymWorkout() failed");
@@ -32713,33 +32783,33 @@ function NetscriptFunctions(workerScript) {
},
travelToCity(cityname) {
+ var ramCost = _Constants_js__WEBPACK_IMPORTED_MODULE_6__["CONSTANTS"].ScriptSingularityFn1RamCost;
+ if (_Player_js__WEBPACK_IMPORTED_MODULE_16__["Player"].bitNodeN !== 4) {ramCost *= 8;}
if (workerScript.checkingRam) {
- if (workerScript.loadedFns.travelToCity) {
- return 0;
- } else {
- workerScript.loadedFns.travelToCity = true;
- var ramCost = _Constants_js__WEBPACK_IMPORTED_MODULE_6__["CONSTANTS"].ScriptSingularityFn1RamCost / 2;
- if (_Player_js__WEBPACK_IMPORTED_MODULE_15__["Player"].bitNodeN !== 4) {ramCost *= 8;}
- return ramCost;
- }
+ return updateStaticRam("travelToCity", ramCost);
}
- if (_Player_js__WEBPACK_IMPORTED_MODULE_15__["Player"].bitNodeN != 4) {
+ updateDynamicRam("travelToCity", ramCost);
+ if (_Player_js__WEBPACK_IMPORTED_MODULE_16__["Player"].bitNodeN != 4) {
if (!(hasSingularitySF && singularitySFLvl >= 1)) {
- throw Object(_NetscriptEvaluator_js__WEBPACK_IMPORTED_MODULE_24__["makeRuntimeRejectMsg"])(workerScript, "Cannot run travelToCity(). It is a Singularity Function and requires SourceFile-4 (level 1) to run.");
+ throw Object(_NetscriptEvaluator_js__WEBPACK_IMPORTED_MODULE_25__["makeRuntimeRejectMsg"])(workerScript, "Cannot run travelToCity(). It is a Singularity Function and requires SourceFile-4 (level 1) to run.");
return false;
}
}
switch(cityname) {
- case _Location_js__WEBPACK_IMPORTED_MODULE_12__["Locations"].Aevum:
- case _Location_js__WEBPACK_IMPORTED_MODULE_12__["Locations"].Chongqing:
- case _Location_js__WEBPACK_IMPORTED_MODULE_12__["Locations"].Sector12:
- case _Location_js__WEBPACK_IMPORTED_MODULE_12__["Locations"].NewTokyo:
- case _Location_js__WEBPACK_IMPORTED_MODULE_12__["Locations"].Ishima:
- case _Location_js__WEBPACK_IMPORTED_MODULE_12__["Locations"].Volhaven:
- _Player_js__WEBPACK_IMPORTED_MODULE_15__["Player"].loseMoney(200000);
- _Player_js__WEBPACK_IMPORTED_MODULE_15__["Player"].city = cityname;
- _Player_js__WEBPACK_IMPORTED_MODULE_15__["Player"].gainIntelligenceExp(_Constants_js__WEBPACK_IMPORTED_MODULE_6__["CONSTANTS"].IntelligenceSingFnBaseExpGain);
+ case _Location_js__WEBPACK_IMPORTED_MODULE_13__["Locations"].Aevum:
+ case _Location_js__WEBPACK_IMPORTED_MODULE_13__["Locations"].Chongqing:
+ case _Location_js__WEBPACK_IMPORTED_MODULE_13__["Locations"].Sector12:
+ case _Location_js__WEBPACK_IMPORTED_MODULE_13__["Locations"].NewTokyo:
+ case _Location_js__WEBPACK_IMPORTED_MODULE_13__["Locations"].Ishima:
+ case _Location_js__WEBPACK_IMPORTED_MODULE_13__["Locations"].Volhaven:
+ if(_Player_js__WEBPACK_IMPORTED_MODULE_16__["Player"].money.lt(_Constants_js__WEBPACK_IMPORTED_MODULE_6__["CONSTANTS"].TravelCost)) {
+ workerScript.scriptRef.log("ERROR: not enough money to travel with travelToCity().");
+ throw Object(_NetscriptEvaluator_js__WEBPACK_IMPORTED_MODULE_25__["makeRuntimeRejectMsg"])(workerScript, "ERROR: not enough money to travel with travelToCity().");
+ }
+ _Player_js__WEBPACK_IMPORTED_MODULE_16__["Player"].loseMoney(_Constants_js__WEBPACK_IMPORTED_MODULE_6__["CONSTANTS"].TravelCost);
+ _Player_js__WEBPACK_IMPORTED_MODULE_16__["Player"].city = cityname;
+ _Player_js__WEBPACK_IMPORTED_MODULE_16__["Player"].gainIntelligenceExp(_Constants_js__WEBPACK_IMPORTED_MODULE_6__["CONSTANTS"].IntelligenceSingFnBaseExpGain);
if (workerScript.disableLogs.ALL == null && workerScript.disableLogs.travelToCity == null) {
workerScript.scriptRef.log("Traveled to " + cityname);
}
@@ -32751,70 +32821,64 @@ function NetscriptFunctions(workerScript) {
},
purchaseTor() {
+ var ramCost = _Constants_js__WEBPACK_IMPORTED_MODULE_6__["CONSTANTS"].ScriptSingularityFn1RamCost;
+ if (_Player_js__WEBPACK_IMPORTED_MODULE_16__["Player"].bitNodeN !== 4) {ramCost *= 8;}
if (workerScript.checkingRam) {
- if (workerScript.loadedFns.purchaseTor) {
- return 0;
- } else {
- workerScript.loadedFns.purchaseTor = true;
- var ramCost = _Constants_js__WEBPACK_IMPORTED_MODULE_6__["CONSTANTS"].ScriptSingularityFn1RamCost;
- if (_Player_js__WEBPACK_IMPORTED_MODULE_15__["Player"].bitNodeN !== 4) {ramCost *= 8;}
- return ramCost;
- }
+ return updateStaticRam("purchaseTor", ramCost);
}
- if (_Player_js__WEBPACK_IMPORTED_MODULE_15__["Player"].bitNodeN != 4) {
+ updateDynamicRam("purchaseTor", ramCost);
+ if (_Player_js__WEBPACK_IMPORTED_MODULE_16__["Player"].bitNodeN != 4) {
if (!(hasSingularitySF && singularitySFLvl >= 1)) {
- throw Object(_NetscriptEvaluator_js__WEBPACK_IMPORTED_MODULE_24__["makeRuntimeRejectMsg"])(workerScript, "Cannot run purchaseTor(). It is a Singularity Function and requires SourceFile-4 (level 1) to run.");
+ throw Object(_NetscriptEvaluator_js__WEBPACK_IMPORTED_MODULE_25__["makeRuntimeRejectMsg"])(workerScript, "Cannot run purchaseTor(). It is a Singularity Function and requires SourceFile-4 (level 1) to run.");
return false;
}
}
- if (_SpecialServerIps_js__WEBPACK_IMPORTED_MODULE_19__["SpecialServerIps"]["Darkweb Server"] != null) {
+ if (_SpecialServerIps_js__WEBPACK_IMPORTED_MODULE_20__["SpecialServerIps"]["Darkweb Server"] != null) {
workerScript.scriptRef.log("You already have a TOR router! purchaseTor() failed");
return false;
}
- if (_Player_js__WEBPACK_IMPORTED_MODULE_15__["Player"].money.lt(_Constants_js__WEBPACK_IMPORTED_MODULE_6__["CONSTANTS"].TorRouterCost)) {
+ if (_Player_js__WEBPACK_IMPORTED_MODULE_16__["Player"].money.lt(_Constants_js__WEBPACK_IMPORTED_MODULE_6__["CONSTANTS"].TorRouterCost)) {
workerScript.scriptRef.log("ERROR: You cannot afford to purchase a Tor router. purchaseTor() failed");
return false;
}
- _Player_js__WEBPACK_IMPORTED_MODULE_15__["Player"].loseMoney(_Constants_js__WEBPACK_IMPORTED_MODULE_6__["CONSTANTS"].TorRouterCost);
+ _Player_js__WEBPACK_IMPORTED_MODULE_16__["Player"].loseMoney(_Constants_js__WEBPACK_IMPORTED_MODULE_6__["CONSTANTS"].TorRouterCost);
- var darkweb = new _Server_js__WEBPACK_IMPORTED_MODULE_17__["Server"]({
- ip:Object(_utils_IPAddress_js__WEBPACK_IMPORTED_MODULE_30__["createRandomIp"])(), hostname:"darkweb", organizationName:"",
+ var darkweb = new _Server_js__WEBPACK_IMPORTED_MODULE_18__["Server"]({
+ ip:Object(_utils_IPAddress_js__WEBPACK_IMPORTED_MODULE_31__["createRandomIp"])(), hostname:"darkweb", organizationName:"",
isConnectedTo:false, adminRights:false, purchasedByPlayer:false, maxRam:1
});
- Object(_Server_js__WEBPACK_IMPORTED_MODULE_17__["AddToAllServers"])(darkweb);
- _SpecialServerIps_js__WEBPACK_IMPORTED_MODULE_19__["SpecialServerIps"].addIp("Darkweb Server", darkweb.ip);
+ Object(_Server_js__WEBPACK_IMPORTED_MODULE_18__["AddToAllServers"])(darkweb);
+ _SpecialServerIps_js__WEBPACK_IMPORTED_MODULE_20__["SpecialServerIps"].addIp("Darkweb Server", darkweb.ip);
- document.getElementById("location-purchase-tor").setAttribute("class", "a-link-button-inactive");
+ const purchaseTor = document.getElementById("location-purchase-tor");
+ purchaseTor.setAttribute("class", "a-link-button-bought");
+ purchaseTor.innerHTML = "TOR Router - Purchased";
- _Player_js__WEBPACK_IMPORTED_MODULE_15__["Player"].getHomeComputer().serversOnNetwork.push(darkweb.ip);
- darkweb.serversOnNetwork.push(_Player_js__WEBPACK_IMPORTED_MODULE_15__["Player"].getHomeComputer().ip);
- _Player_js__WEBPACK_IMPORTED_MODULE_15__["Player"].gainIntelligenceExp(_Constants_js__WEBPACK_IMPORTED_MODULE_6__["CONSTANTS"].IntelligenceSingFnBaseExpGain);
+ _Player_js__WEBPACK_IMPORTED_MODULE_16__["Player"].getHomeComputer().serversOnNetwork.push(darkweb.ip);
+ darkweb.serversOnNetwork.push(_Player_js__WEBPACK_IMPORTED_MODULE_16__["Player"].getHomeComputer().ip);
+ _Player_js__WEBPACK_IMPORTED_MODULE_16__["Player"].gainIntelligenceExp(_Constants_js__WEBPACK_IMPORTED_MODULE_6__["CONSTANTS"].IntelligenceSingFnBaseExpGain);
if (workerScript.disableLogs.ALL == null && workerScript.disableLogs.purchaseTor == null) {
workerScript.scriptRef.log("You have purchased a Tor router!");
}
return true;
},
purchaseProgram(programName) {
+ var ramCost = _Constants_js__WEBPACK_IMPORTED_MODULE_6__["CONSTANTS"].ScriptSingularityFn1RamCost;
+ if (_Player_js__WEBPACK_IMPORTED_MODULE_16__["Player"].bitNodeN !== 4) {ramCost *= 8;}
if (workerScript.checkingRam) {
- if (workerScript.loadedFns.purchaseProgram) {
- return 0;
- } else {
- workerScript.loadedFns.purchaseProgram = true;
- var ramCost = _Constants_js__WEBPACK_IMPORTED_MODULE_6__["CONSTANTS"].ScriptSingularityFn1RamCost;
- if (_Player_js__WEBPACK_IMPORTED_MODULE_15__["Player"].bitNodeN !== 4) {ramCost *= 8;}
- return ramCost;
- }
+ return updateStaticRam("purchaseProgram", ramCost);
}
- if (_Player_js__WEBPACK_IMPORTED_MODULE_15__["Player"].bitNodeN != 4) {
+ updateDynamicRam("purchaseProgram", ramCost);
+ if (_Player_js__WEBPACK_IMPORTED_MODULE_16__["Player"].bitNodeN != 4) {
if (!(hasSingularitySF && singularitySFLvl >= 1)) {
- throw Object(_NetscriptEvaluator_js__WEBPACK_IMPORTED_MODULE_24__["makeRuntimeRejectMsg"])(workerScript, "Cannot run purchaseProgram(). It is a Singularity Function and requires SourceFile-4 (level 1) to run.");
+ throw Object(_NetscriptEvaluator_js__WEBPACK_IMPORTED_MODULE_25__["makeRuntimeRejectMsg"])(workerScript, "Cannot run purchaseProgram(). It is a Singularity Function and requires SourceFile-4 (level 1) to run.");
return false;
}
}
- if (_SpecialServerIps_js__WEBPACK_IMPORTED_MODULE_19__["SpecialServerIps"]["Darkweb Server"] == null) {
+ if (_SpecialServerIps_js__WEBPACK_IMPORTED_MODULE_20__["SpecialServerIps"]["Darkweb Server"] == null) {
workerScript.scriptRef.log("ERROR: You do not have TOR router. purchaseProgram() failed.");
return false;
}
@@ -32822,9 +32886,9 @@ function NetscriptFunctions(workerScript) {
switch(programName.toLowerCase()) {
case _CreateProgram_js__WEBPACK_IMPORTED_MODULE_7__["Programs"].BruteSSHProgram.toLowerCase():
var price = Object(_DarkWeb_js__WEBPACK_IMPORTED_MODULE_8__["parseDarkwebItemPrice"])(_DarkWeb_js__WEBPACK_IMPORTED_MODULE_8__["DarkWebItems"].BruteSSHProgram);
- if (price > 0 && _Player_js__WEBPACK_IMPORTED_MODULE_15__["Player"].money.gt(price)) {
- _Player_js__WEBPACK_IMPORTED_MODULE_15__["Player"].loseMoney(price);
- _Player_js__WEBPACK_IMPORTED_MODULE_15__["Player"].getHomeComputer().programs.push(_CreateProgram_js__WEBPACK_IMPORTED_MODULE_7__["Programs"].BruteSSHProgram);
+ if (price > 0 && _Player_js__WEBPACK_IMPORTED_MODULE_16__["Player"].money.gt(price)) {
+ _Player_js__WEBPACK_IMPORTED_MODULE_16__["Player"].loseMoney(price);
+ _Player_js__WEBPACK_IMPORTED_MODULE_16__["Player"].getHomeComputer().programs.push(_CreateProgram_js__WEBPACK_IMPORTED_MODULE_7__["Programs"].BruteSSHProgram);
if (workerScript.disableLogs.ALL == null && workerScript.disableLogs.purchaseProgram == null) {
workerScript.scriptRef.log("You have purchased the BruteSSH.exe program. The new program can be found on your home computer.");
}
@@ -32835,9 +32899,9 @@ function NetscriptFunctions(workerScript) {
return true;
case _CreateProgram_js__WEBPACK_IMPORTED_MODULE_7__["Programs"].FTPCrackProgram.toLowerCase():
var price = Object(_DarkWeb_js__WEBPACK_IMPORTED_MODULE_8__["parseDarkwebItemPrice"])(_DarkWeb_js__WEBPACK_IMPORTED_MODULE_8__["DarkWebItems"].FTPCrackProgram);
- if (price > 0 && _Player_js__WEBPACK_IMPORTED_MODULE_15__["Player"].money.gt(price)) {
- _Player_js__WEBPACK_IMPORTED_MODULE_15__["Player"].loseMoney(price);
- _Player_js__WEBPACK_IMPORTED_MODULE_15__["Player"].getHomeComputer().programs.push(_CreateProgram_js__WEBPACK_IMPORTED_MODULE_7__["Programs"].FTPCrackProgram);
+ if (price > 0 && _Player_js__WEBPACK_IMPORTED_MODULE_16__["Player"].money.gt(price)) {
+ _Player_js__WEBPACK_IMPORTED_MODULE_16__["Player"].loseMoney(price);
+ _Player_js__WEBPACK_IMPORTED_MODULE_16__["Player"].getHomeComputer().programs.push(_CreateProgram_js__WEBPACK_IMPORTED_MODULE_7__["Programs"].FTPCrackProgram);
if (workerScript.disableLogs.ALL == null && workerScript.disableLogs.purchaseProgram == null) {
workerScript.scriptRef.log("You have purchased the FTPCrack.exe program. The new program can be found on your home computer.");
}
@@ -32848,9 +32912,9 @@ function NetscriptFunctions(workerScript) {
return true;
case _CreateProgram_js__WEBPACK_IMPORTED_MODULE_7__["Programs"].RelaySMTPProgram.toLowerCase():
var price = Object(_DarkWeb_js__WEBPACK_IMPORTED_MODULE_8__["parseDarkwebItemPrice"])(_DarkWeb_js__WEBPACK_IMPORTED_MODULE_8__["DarkWebItems"].RelaySMTPProgram);
- if (price > 0 && _Player_js__WEBPACK_IMPORTED_MODULE_15__["Player"].money.gt(price)) {
- _Player_js__WEBPACK_IMPORTED_MODULE_15__["Player"].loseMoney(price);
- _Player_js__WEBPACK_IMPORTED_MODULE_15__["Player"].getHomeComputer().programs.push(_CreateProgram_js__WEBPACK_IMPORTED_MODULE_7__["Programs"].RelaySMTPProgram);
+ if (price > 0 && _Player_js__WEBPACK_IMPORTED_MODULE_16__["Player"].money.gt(price)) {
+ _Player_js__WEBPACK_IMPORTED_MODULE_16__["Player"].loseMoney(price);
+ _Player_js__WEBPACK_IMPORTED_MODULE_16__["Player"].getHomeComputer().programs.push(_CreateProgram_js__WEBPACK_IMPORTED_MODULE_7__["Programs"].RelaySMTPProgram);
if (workerScript.disableLogs.ALL == null && workerScript.disableLogs.purchaseProgram == null) {
workerScript.scriptRef.log("You have purchased the relaySMTP.exe program. The new program can be found on your home computer.");
}
@@ -32861,9 +32925,9 @@ function NetscriptFunctions(workerScript) {
return true;
case _CreateProgram_js__WEBPACK_IMPORTED_MODULE_7__["Programs"].HTTPWormProgram.toLowerCase():
var price = Object(_DarkWeb_js__WEBPACK_IMPORTED_MODULE_8__["parseDarkwebItemPrice"])(_DarkWeb_js__WEBPACK_IMPORTED_MODULE_8__["DarkWebItems"].HTTPWormProgram);
- if (price > 0 && _Player_js__WEBPACK_IMPORTED_MODULE_15__["Player"].money.gt(price)) {
- _Player_js__WEBPACK_IMPORTED_MODULE_15__["Player"].loseMoney(price);
- _Player_js__WEBPACK_IMPORTED_MODULE_15__["Player"].getHomeComputer().programs.push(_CreateProgram_js__WEBPACK_IMPORTED_MODULE_7__["Programs"].HTTPWormProgram);
+ if (price > 0 && _Player_js__WEBPACK_IMPORTED_MODULE_16__["Player"].money.gt(price)) {
+ _Player_js__WEBPACK_IMPORTED_MODULE_16__["Player"].loseMoney(price);
+ _Player_js__WEBPACK_IMPORTED_MODULE_16__["Player"].getHomeComputer().programs.push(_CreateProgram_js__WEBPACK_IMPORTED_MODULE_7__["Programs"].HTTPWormProgram);
if (workerScript.disableLogs.ALL == null && workerScript.disableLogs.purchaseProgram == null) {
workerScript.scriptRef.log("You have purchased the HTTPWorm.exe program. The new program can be found on your home computer.");
}
@@ -32874,9 +32938,9 @@ function NetscriptFunctions(workerScript) {
return true;
case _CreateProgram_js__WEBPACK_IMPORTED_MODULE_7__["Programs"].SQLInjectProgram.toLowerCase():
var price = Object(_DarkWeb_js__WEBPACK_IMPORTED_MODULE_8__["parseDarkwebItemPrice"])(_DarkWeb_js__WEBPACK_IMPORTED_MODULE_8__["DarkWebItems"].SQLInjectProgram);
- if (price > 0 && _Player_js__WEBPACK_IMPORTED_MODULE_15__["Player"].money.gt(price)) {
- _Player_js__WEBPACK_IMPORTED_MODULE_15__["Player"].loseMoney(price);
- _Player_js__WEBPACK_IMPORTED_MODULE_15__["Player"].getHomeComputer().programs.push(_CreateProgram_js__WEBPACK_IMPORTED_MODULE_7__["Programs"].SQLInjectProgram);
+ if (price > 0 && _Player_js__WEBPACK_IMPORTED_MODULE_16__["Player"].money.gt(price)) {
+ _Player_js__WEBPACK_IMPORTED_MODULE_16__["Player"].loseMoney(price);
+ _Player_js__WEBPACK_IMPORTED_MODULE_16__["Player"].getHomeComputer().programs.push(_CreateProgram_js__WEBPACK_IMPORTED_MODULE_7__["Programs"].SQLInjectProgram);
if (workerScript.disableLogs.ALL == null && workerScript.disableLogs.purchaseProgram == null) {
workerScript.scriptRef.log("You have purchased the SQLInject.exe program. The new program can be found on your home computer.");
}
@@ -32887,9 +32951,9 @@ function NetscriptFunctions(workerScript) {
return true;
case _CreateProgram_js__WEBPACK_IMPORTED_MODULE_7__["Programs"].DeepscanV1.toLowerCase():
var price = Object(_DarkWeb_js__WEBPACK_IMPORTED_MODULE_8__["parseDarkwebItemPrice"])(_DarkWeb_js__WEBPACK_IMPORTED_MODULE_8__["DarkWebItems"].DeepScanV1Program);
- if (price > 0 && _Player_js__WEBPACK_IMPORTED_MODULE_15__["Player"].money.gt(price)) {
- _Player_js__WEBPACK_IMPORTED_MODULE_15__["Player"].loseMoney(price);
- _Player_js__WEBPACK_IMPORTED_MODULE_15__["Player"].getHomeComputer().programs.push(_CreateProgram_js__WEBPACK_IMPORTED_MODULE_7__["Programs"].DeepscanV1);
+ if (price > 0 && _Player_js__WEBPACK_IMPORTED_MODULE_16__["Player"].money.gt(price)) {
+ _Player_js__WEBPACK_IMPORTED_MODULE_16__["Player"].loseMoney(price);
+ _Player_js__WEBPACK_IMPORTED_MODULE_16__["Player"].getHomeComputer().programs.push(_CreateProgram_js__WEBPACK_IMPORTED_MODULE_7__["Programs"].DeepscanV1);
if (workerScript.disableLogs.ALL == null && workerScript.disableLogs.purchaseProgram == null) {
workerScript.scriptRef.log("You have purchased the DeepscanV1.exe program. The new program can be found on your home computer.");
}
@@ -32900,9 +32964,9 @@ function NetscriptFunctions(workerScript) {
return true;
case _CreateProgram_js__WEBPACK_IMPORTED_MODULE_7__["Programs"].DeepscanV2.toLowerCase():
var price = Object(_DarkWeb_js__WEBPACK_IMPORTED_MODULE_8__["parseDarkwebItemPrice"])(_DarkWeb_js__WEBPACK_IMPORTED_MODULE_8__["DarkWebItems"].DeepScanV2Program);
- if (price > 0 && _Player_js__WEBPACK_IMPORTED_MODULE_15__["Player"].money.gt(price)) {
- _Player_js__WEBPACK_IMPORTED_MODULE_15__["Player"].loseMoney(price);
- _Player_js__WEBPACK_IMPORTED_MODULE_15__["Player"].getHomeComputer().programs.push(_CreateProgram_js__WEBPACK_IMPORTED_MODULE_7__["Programs"].DeepscanV2);
+ if (price > 0 && _Player_js__WEBPACK_IMPORTED_MODULE_16__["Player"].money.gt(price)) {
+ _Player_js__WEBPACK_IMPORTED_MODULE_16__["Player"].loseMoney(price);
+ _Player_js__WEBPACK_IMPORTED_MODULE_16__["Player"].getHomeComputer().programs.push(_CreateProgram_js__WEBPACK_IMPORTED_MODULE_7__["Programs"].DeepscanV2);
if (workerScript.disableLogs.ALL == null && workerScript.disableLogs.purchaseProgram == null) {
workerScript.scriptRef.log("You have purchased the DeepscanV2.exe program. The new program can be found on your home computer.");
}
@@ -32918,112 +32982,95 @@ function NetscriptFunctions(workerScript) {
return true;
},
getStats : function() {
+ var ramCost = _Constants_js__WEBPACK_IMPORTED_MODULE_6__["CONSTANTS"].ScriptSingularityFn1RamCost / 4;
+ if (_Player_js__WEBPACK_IMPORTED_MODULE_16__["Player"].bitNodeN !== 4) {ramCost *= 8;}
if (workerScript.checkingRam) {
- if (workerScript.loadedFns.getStats) {
- return 0;
- } else {
- workerScript.loadedFns.getStats = true;
- var ramCost = _Constants_js__WEBPACK_IMPORTED_MODULE_6__["CONSTANTS"].ScriptSingularityFn1RamCost / 4;
- if (_Player_js__WEBPACK_IMPORTED_MODULE_15__["Player"].bitNodeN !== 4) {ramCost *= 8;}
- return ramCost;
- }
+ return updateStaticRam("getStats", ramCost);
}
- if (_Player_js__WEBPACK_IMPORTED_MODULE_15__["Player"].bitNodeN != 4) {
+ updateDynamicRam("getStats", ramCost);
+ if (_Player_js__WEBPACK_IMPORTED_MODULE_16__["Player"].bitNodeN != 4) {
if (!(hasSingularitySF && singularitySFLvl >= 1)) {
- throw Object(_NetscriptEvaluator_js__WEBPACK_IMPORTED_MODULE_24__["makeRuntimeRejectMsg"])(workerScript, "Cannot run getStats(). It is a Singularity Function and requires SourceFile-4 (level 1) to run.");
+ throw Object(_NetscriptEvaluator_js__WEBPACK_IMPORTED_MODULE_25__["makeRuntimeRejectMsg"])(workerScript, "Cannot run getStats(). It is a Singularity Function and requires SourceFile-4 (level 1) to run.");
return {};
}
}
return {
- hacking: _Player_js__WEBPACK_IMPORTED_MODULE_15__["Player"].hacking_skill,
- strength: _Player_js__WEBPACK_IMPORTED_MODULE_15__["Player"].strength,
- defense: _Player_js__WEBPACK_IMPORTED_MODULE_15__["Player"].defense,
- dexterity: _Player_js__WEBPACK_IMPORTED_MODULE_15__["Player"].dexterity,
- agility: _Player_js__WEBPACK_IMPORTED_MODULE_15__["Player"].agility,
- charisma: _Player_js__WEBPACK_IMPORTED_MODULE_15__["Player"].charisma,
- intelligence: _Player_js__WEBPACK_IMPORTED_MODULE_15__["Player"].intelligence
+ hacking: _Player_js__WEBPACK_IMPORTED_MODULE_16__["Player"].hacking_skill,
+ strength: _Player_js__WEBPACK_IMPORTED_MODULE_16__["Player"].strength,
+ defense: _Player_js__WEBPACK_IMPORTED_MODULE_16__["Player"].defense,
+ dexterity: _Player_js__WEBPACK_IMPORTED_MODULE_16__["Player"].dexterity,
+ agility: _Player_js__WEBPACK_IMPORTED_MODULE_16__["Player"].agility,
+ charisma: _Player_js__WEBPACK_IMPORTED_MODULE_16__["Player"].charisma,
+ intelligence: _Player_js__WEBPACK_IMPORTED_MODULE_16__["Player"].intelligence
}
},
getCharacterInformation : function() {
+ var ramCost = _Constants_js__WEBPACK_IMPORTED_MODULE_6__["CONSTANTS"].ScriptSingularityFn1RamCost / 4;
+ if (_Player_js__WEBPACK_IMPORTED_MODULE_16__["Player"].bitNodeN !== 4) {ramCost *= 8;}
if (workerScript.checkingRam) {
- if (workerScript.loadedFns.getCharacterInformation) {
- return 0;
- } else {
- workerScript.loadedFns.getCharacterInformation = true;
- var ramCost = _Constants_js__WEBPACK_IMPORTED_MODULE_6__["CONSTANTS"].ScriptSingularityFn1RamCost / 4;
- if (_Player_js__WEBPACK_IMPORTED_MODULE_15__["Player"].bitNodeN !== 4) {ramCost *= 8;}
- return ramCost;
- }
+ return updateStaticRam("getCharacterInformation", ramCost);
}
-
- if (_Player_js__WEBPACK_IMPORTED_MODULE_15__["Player"].bitNodeN != 4) {
+ updateDynamicRam("getCharacterInformation", ramCost);
+ if (_Player_js__WEBPACK_IMPORTED_MODULE_16__["Player"].bitNodeN != 4) {
if (!(hasSingularitySF && singularitySFLvl >= 1)) {
- throw Object(_NetscriptEvaluator_js__WEBPACK_IMPORTED_MODULE_24__["makeRuntimeRejectMsg"])(workerScript, "Cannot run getCharacterInformation(). It is a Singularity Function and requires SourceFile-4 (level 1) to run.");
+ throw Object(_NetscriptEvaluator_js__WEBPACK_IMPORTED_MODULE_25__["makeRuntimeRejectMsg"])(workerScript, "Cannot run getCharacterInformation(). It is a Singularity Function and requires SourceFile-4 (level 1) to run.");
return {};
}
}
var companyPositionTitle = "";
- if (_Player_js__WEBPACK_IMPORTED_MODULE_15__["Player"].companyPosition instanceof _Company_js__WEBPACK_IMPORTED_MODULE_5__["CompanyPosition"]) {
- companyPositionTitle = _Player_js__WEBPACK_IMPORTED_MODULE_15__["Player"].companyPosition.positionName;
+ if (_Player_js__WEBPACK_IMPORTED_MODULE_16__["Player"].companyPosition instanceof _Company_js__WEBPACK_IMPORTED_MODULE_5__["CompanyPosition"]) {
+ companyPositionTitle = _Player_js__WEBPACK_IMPORTED_MODULE_16__["Player"].companyPosition.positionName;
}
return {
- bitnode: _Player_js__WEBPACK_IMPORTED_MODULE_15__["Player"].bitNodeN,
- company: _Player_js__WEBPACK_IMPORTED_MODULE_15__["Player"].companyName,
+ bitnode: _Player_js__WEBPACK_IMPORTED_MODULE_16__["Player"].bitNodeN,
+ company: _Player_js__WEBPACK_IMPORTED_MODULE_16__["Player"].companyName,
jobTitle: companyPositionTitle,
- city: _Player_js__WEBPACK_IMPORTED_MODULE_15__["Player"].city,
- factions: _Player_js__WEBPACK_IMPORTED_MODULE_15__["Player"].factions.slice(),
- tor: _SpecialServerIps_js__WEBPACK_IMPORTED_MODULE_19__["SpecialServerIps"].hasOwnProperty("Darkweb Server"),
- timeWorked: _Player_js__WEBPACK_IMPORTED_MODULE_15__["Player"].timeWorked,
- workHackExpGain: _Player_js__WEBPACK_IMPORTED_MODULE_15__["Player"].workHackExpGained,
- workStrExpGain: _Player_js__WEBPACK_IMPORTED_MODULE_15__["Player"].workStrExpGained,
- workDefExpGain: _Player_js__WEBPACK_IMPORTED_MODULE_15__["Player"].workDefExpGained,
- workDexExpGain: _Player_js__WEBPACK_IMPORTED_MODULE_15__["Player"].workDexExpGained,
- workAgiExpGain: _Player_js__WEBPACK_IMPORTED_MODULE_15__["Player"].workAgiExpGained,
- workChaExpGain: _Player_js__WEBPACK_IMPORTED_MODULE_15__["Player"].workChaExpGained,
- workRepGain: _Player_js__WEBPACK_IMPORTED_MODULE_15__["Player"].workRepGained,
- workMoneyGain: _Player_js__WEBPACK_IMPORTED_MODULE_15__["Player"].workMoneyGained,
+ city: _Player_js__WEBPACK_IMPORTED_MODULE_16__["Player"].city,
+ factions: _Player_js__WEBPACK_IMPORTED_MODULE_16__["Player"].factions.slice(),
+ tor: _SpecialServerIps_js__WEBPACK_IMPORTED_MODULE_20__["SpecialServerIps"].hasOwnProperty("Darkweb Server"),
+ timeWorked: _Player_js__WEBPACK_IMPORTED_MODULE_16__["Player"].timeWorked,
+ workHackExpGain: _Player_js__WEBPACK_IMPORTED_MODULE_16__["Player"].workHackExpGained,
+ workStrExpGain: _Player_js__WEBPACK_IMPORTED_MODULE_16__["Player"].workStrExpGained,
+ workDefExpGain: _Player_js__WEBPACK_IMPORTED_MODULE_16__["Player"].workDefExpGained,
+ workDexExpGain: _Player_js__WEBPACK_IMPORTED_MODULE_16__["Player"].workDexExpGained,
+ workAgiExpGain: _Player_js__WEBPACK_IMPORTED_MODULE_16__["Player"].workAgiExpGained,
+ workChaExpGain: _Player_js__WEBPACK_IMPORTED_MODULE_16__["Player"].workChaExpGained,
+ workRepGain: _Player_js__WEBPACK_IMPORTED_MODULE_16__["Player"].workRepGained,
+ workMoneyGain: _Player_js__WEBPACK_IMPORTED_MODULE_16__["Player"].workMoneyGained,
};
},
isBusy : function() {
+ var ramCost = _Constants_js__WEBPACK_IMPORTED_MODULE_6__["CONSTANTS"].ScriptSingularityFn1RamCost / 4;
+ if (_Player_js__WEBPACK_IMPORTED_MODULE_16__["Player"].bitNodeN !== 4) {ramCost *= 8;}
if (workerScript.checkingRam) {
- if (workerScript.loadedFns.isBusy) {
- return 0;
- } else {
- workerScript.loadedFns.isBusy = true;
- var ramCost = _Constants_js__WEBPACK_IMPORTED_MODULE_6__["CONSTANTS"].ScriptSingularityFn1RamCost / 4;
- if (_Player_js__WEBPACK_IMPORTED_MODULE_15__["Player"].bitNodeN !== 4) {ramCost *= 8;}
- return ramCost;
- }
+ return updateStaticRam("isBusy", ramCost);
}
- if (_Player_js__WEBPACK_IMPORTED_MODULE_15__["Player"].bitNodeN != 4) {
+ updateDynamicRam("isBusy", ramCost);
+ if (_Player_js__WEBPACK_IMPORTED_MODULE_16__["Player"].bitNodeN != 4) {
if (!(hasSingularitySF && singularitySFLvl >= 1)) {
- throw Object(_NetscriptEvaluator_js__WEBPACK_IMPORTED_MODULE_24__["makeRuntimeRejectMsg"])(workerScript, "Cannot run isBusy(). It is a Singularity Function and requires SourceFile-4 (level 1) to run.");
+ throw Object(_NetscriptEvaluator_js__WEBPACK_IMPORTED_MODULE_25__["makeRuntimeRejectMsg"])(workerScript, "Cannot run isBusy(). It is a Singularity Function and requires SourceFile-4 (level 1) to run.");
return;
}
}
- return _Player_js__WEBPACK_IMPORTED_MODULE_15__["Player"].isWorking;
+ return _Player_js__WEBPACK_IMPORTED_MODULE_16__["Player"].isWorking;
},
stopAction : function() {
+ var ramCost = _Constants_js__WEBPACK_IMPORTED_MODULE_6__["CONSTANTS"].ScriptSingularityFn1RamCost / 2;
+ if (_Player_js__WEBPACK_IMPORTED_MODULE_16__["Player"].bitNodeN !== 4) {ramCost *= 8;}
if (workerScript.checkingRam) {
- if (workerScript.loadedFns.stopAction) {
- return 0;
- } else {
- workerScript.loadedFns.stopAction = true;
- var ramCost = _Constants_js__WEBPACK_IMPORTED_MODULE_6__["CONSTANTS"].ScriptSingularityFn1RamCost / 2;
- if (_Player_js__WEBPACK_IMPORTED_MODULE_15__["Player"].bitNodeN !== 4) {ramCost *= 8;}
- return ramCost;
- }
+ return updateStaticRam("stopAction", ramCost);
}
- if (_Player_js__WEBPACK_IMPORTED_MODULE_15__["Player"].bitNodeN != 4) {
+ updateDynamicRam("stopAction", ramCost);
+ if (_Player_js__WEBPACK_IMPORTED_MODULE_16__["Player"].bitNodeN != 4) {
if (!(hasSingularitySF && singularitySFLvl >= 1)) {
- throw Object(_NetscriptEvaluator_js__WEBPACK_IMPORTED_MODULE_24__["makeRuntimeRejectMsg"])(workerScript, "Cannot run stopAction(). It is a Singularity Function and requires SourceFile-4 (level 1) to run.");
+ throw Object(_NetscriptEvaluator_js__WEBPACK_IMPORTED_MODULE_25__["makeRuntimeRejectMsg"])(workerScript, "Cannot run stopAction(). It is a Singularity Function and requires SourceFile-4 (level 1) to run.");
return false;
}
}
- if (_Player_js__WEBPACK_IMPORTED_MODULE_15__["Player"].isWorking) {
- var txt = _Player_js__WEBPACK_IMPORTED_MODULE_15__["Player"].singularityStopWork();
+ if (_Player_js__WEBPACK_IMPORTED_MODULE_16__["Player"].isWorking) {
+ var txt = _Player_js__WEBPACK_IMPORTED_MODULE_16__["Player"].singularityStopWork();
if (workerScript.disableLogs.ALL == null && workerScript.disableLogs.stopAction == null) {
workerScript.scriptRef.log(txt);
}
@@ -33032,136 +33079,104 @@ function NetscriptFunctions(workerScript) {
return false;
},
upgradeHomeRam : function() {
+ var ramCost = _Constants_js__WEBPACK_IMPORTED_MODULE_6__["CONSTANTS"].ScriptSingularityFn2RamCost;
+ if (_Player_js__WEBPACK_IMPORTED_MODULE_16__["Player"].bitNodeN !== 4) {ramCost *= 8;}
if (workerScript.checkingRam) {
- if (workerScript.loadedFns.upgradeHomeRam) {
- return 0;
- } else {
- workerScript.loadedFns.upgradeHomeRam = true;
- var ramCost = _Constants_js__WEBPACK_IMPORTED_MODULE_6__["CONSTANTS"].ScriptSingularityFn2RamCost;
- if (_Player_js__WEBPACK_IMPORTED_MODULE_15__["Player"].bitNodeN !== 4) {ramCost *= 8;}
- return ramCost;
- }
+ return updateStaticRam("upgradeHomeRam", ramCost);
}
- if (_Player_js__WEBPACK_IMPORTED_MODULE_15__["Player"].bitNodeN != 4) {
+ updateDynamicRam("upgradeHomeRam", ramCost);
+ if (_Player_js__WEBPACK_IMPORTED_MODULE_16__["Player"].bitNodeN != 4) {
if (!(hasSingularitySF && singularitySFLvl >= 2)) {
- throw Object(_NetscriptEvaluator_js__WEBPACK_IMPORTED_MODULE_24__["makeRuntimeRejectMsg"])(workerScript, "Cannot run upgradeHomeRam(). It is a Singularity Function and requires SourceFile-4 (level 2) to run.");
+ throw Object(_NetscriptEvaluator_js__WEBPACK_IMPORTED_MODULE_25__["makeRuntimeRejectMsg"])(workerScript, "Cannot run upgradeHomeRam(). It is a Singularity Function and requires SourceFile-4 (level 2) to run.");
return false;
}
}
- //Calculate how many times ram has been upgraded (doubled)
- var currentRam = _Player_js__WEBPACK_IMPORTED_MODULE_15__["Player"].getHomeComputer().maxRam;
- var numUpgrades = Math.log2(currentRam);
+ const cost = _Player_js__WEBPACK_IMPORTED_MODULE_16__["Player"].getUpgradeHomeRamCost();
- //Calculate cost
- //Have cost increase by some percentage each time RAM has been upgraded
- var cost = currentRam * _Constants_js__WEBPACK_IMPORTED_MODULE_6__["CONSTANTS"].BaseCostFor1GBOfRamHome;
- var mult = Math.pow(1.55, numUpgrades);
- cost = cost * mult;
-
- if (_Player_js__WEBPACK_IMPORTED_MODULE_15__["Player"].money.lt(cost)) {
+ if (_Player_js__WEBPACK_IMPORTED_MODULE_16__["Player"].money.lt(cost)) {
workerScript.scriptRef.log("ERROR: upgradeHomeRam() failed because you don't have enough money");
return false;
}
- var homeComputer = _Player_js__WEBPACK_IMPORTED_MODULE_15__["Player"].getHomeComputer();
+ var homeComputer = _Player_js__WEBPACK_IMPORTED_MODULE_16__["Player"].getHomeComputer();
homeComputer.maxRam *= 2;
- _Player_js__WEBPACK_IMPORTED_MODULE_15__["Player"].loseMoney(cost);
+ _Player_js__WEBPACK_IMPORTED_MODULE_16__["Player"].loseMoney(cost);
- _Player_js__WEBPACK_IMPORTED_MODULE_15__["Player"].gainIntelligenceExp(_Constants_js__WEBPACK_IMPORTED_MODULE_6__["CONSTANTS"].IntelligenceSingFnBaseExpGain);
+ _Player_js__WEBPACK_IMPORTED_MODULE_16__["Player"].gainIntelligenceExp(_Constants_js__WEBPACK_IMPORTED_MODULE_6__["CONSTANTS"].IntelligenceSingFnBaseExpGain);
if (workerScript.disableLogs.ALL == null && workerScript.disableLogs.upgradeHomeRam == null) {
workerScript.scriptRef.log("Purchased additional RAM for home computer! It now has " + homeComputer.maxRam + "GB of RAM.");
}
return true;
},
getUpgradeHomeRamCost : function() {
+ var ramCost = _Constants_js__WEBPACK_IMPORTED_MODULE_6__["CONSTANTS"].ScriptSingularityFn2RamCost / 2;
+ if (_Player_js__WEBPACK_IMPORTED_MODULE_16__["Player"].bitNodeN !== 4) {ramCost *= 8;}
if (workerScript.checkingRam) {
- if (workerScript.loadedFns.getUpgradeHomeRamCost) {
- return 0;
- } else {
- workerScript.loadedFns.getUpgradeHomeRamCost = true;
- var ramCost = _Constants_js__WEBPACK_IMPORTED_MODULE_6__["CONSTANTS"].ScriptSingularityFn2RamCost / 2;
- if (_Player_js__WEBPACK_IMPORTED_MODULE_15__["Player"].bitNodeN !== 4) {ramCost *= 8;}
- return ramCost;
- }
+ return updateStaticRam("getUpgradeHomeRamCost", ramCost);
}
- if (_Player_js__WEBPACK_IMPORTED_MODULE_15__["Player"].bitNodeN != 4) {
+ updateDynamicRam("getUpgradeHomeRamCost", ramCost);
+ if (_Player_js__WEBPACK_IMPORTED_MODULE_16__["Player"].bitNodeN != 4) {
if (!(hasSingularitySF && singularitySFLvl >= 2)) {
- throw Object(_NetscriptEvaluator_js__WEBPACK_IMPORTED_MODULE_24__["makeRuntimeRejectMsg"])(workerScript, "Cannot run getUpgradeHomeRamCost(). It is a Singularity Function and requires SourceFile-4 (level 2) to run.");
+ throw Object(_NetscriptEvaluator_js__WEBPACK_IMPORTED_MODULE_25__["makeRuntimeRejectMsg"])(workerScript, "Cannot run getUpgradeHomeRamCost(). It is a Singularity Function and requires SourceFile-4 (level 2) to run.");
return false;
}
}
- //Calculate how many times ram has been upgraded (doubled)
- var currentRam = _Player_js__WEBPACK_IMPORTED_MODULE_15__["Player"].getHomeComputer().maxRam;
- var numUpgrades = Math.log2(currentRam);
-
- //Calculate cost
- //Have cost increase by some percentage each time RAM has been upgraded
- var cost = currentRam * _Constants_js__WEBPACK_IMPORTED_MODULE_6__["CONSTANTS"].BaseCostFor1GBOfRamHome;
- var mult = Math.pow(1.55, numUpgrades);
- return cost * mult;
+ return _Player_js__WEBPACK_IMPORTED_MODULE_16__["Player"].getUpgradeHomeRamCost();
},
workForCompany : function() {
+ var ramCost = _Constants_js__WEBPACK_IMPORTED_MODULE_6__["CONSTANTS"].ScriptSingularityFn2RamCost;
+ if (_Player_js__WEBPACK_IMPORTED_MODULE_16__["Player"].bitNodeN !== 4) {ramCost *= 8;}
if (workerScript.checkingRam) {
- if (workerScript.loadedFns.workForCompany) {
- return 0;
- } else {
- workerScript.loadedFns.workForCompany = true;
- var ramCost = _Constants_js__WEBPACK_IMPORTED_MODULE_6__["CONSTANTS"].ScriptSingularityFn2RamCost;
- if (_Player_js__WEBPACK_IMPORTED_MODULE_15__["Player"].bitNodeN !== 4) {ramCost *= 8;}
- return ramCost;
- }
+ return updateStaticRam("workForCompany", ramCost);
}
- if (_Player_js__WEBPACK_IMPORTED_MODULE_15__["Player"].bitNodeN != 4) {
+ updateDynamicRam("workForCompany", ramCost);
+ if (_Player_js__WEBPACK_IMPORTED_MODULE_16__["Player"].bitNodeN != 4) {
if (!(hasSingularitySF && singularitySFLvl >= 2)) {
- throw Object(_NetscriptEvaluator_js__WEBPACK_IMPORTED_MODULE_24__["makeRuntimeRejectMsg"])(workerScript, "Cannot run workForCompany(). It is a Singularity Function and requires SourceFile-4 (level 2) to run.");
+ throw Object(_NetscriptEvaluator_js__WEBPACK_IMPORTED_MODULE_25__["makeRuntimeRejectMsg"])(workerScript, "Cannot run workForCompany(). It is a Singularity Function and requires SourceFile-4 (level 2) to run.");
return false;
}
}
- if (_Missions_js__WEBPACK_IMPORTED_MODULE_14__["inMission"]) {
+ if (_Missions_js__WEBPACK_IMPORTED_MODULE_15__["inMission"]) {
workerScript.scriptRef.log("ERROR: workForCompany() failed because you are in the middle of a mission.");
return;
}
- if (_Player_js__WEBPACK_IMPORTED_MODULE_15__["Player"].companyPosition == "" || !(_Player_js__WEBPACK_IMPORTED_MODULE_15__["Player"].companyPosition instanceof _Company_js__WEBPACK_IMPORTED_MODULE_5__["CompanyPosition"])) {
+ if (_Player_js__WEBPACK_IMPORTED_MODULE_16__["Player"].companyPosition == "" || !(_Player_js__WEBPACK_IMPORTED_MODULE_16__["Player"].companyPosition instanceof _Company_js__WEBPACK_IMPORTED_MODULE_5__["CompanyPosition"])) {
workerScript.scriptRef.log("ERROR: workForCompany() failed because you do not have a job");
return false;
}
- if (_Player_js__WEBPACK_IMPORTED_MODULE_15__["Player"].isWorking) {
- var txt = _Player_js__WEBPACK_IMPORTED_MODULE_15__["Player"].singularityStopWork();
+ if (_Player_js__WEBPACK_IMPORTED_MODULE_16__["Player"].isWorking) {
+ var txt = _Player_js__WEBPACK_IMPORTED_MODULE_16__["Player"].singularityStopWork();
if (workerScript.disableLogs.ALL == null && workerScript.disableLogs.workForCompany == null) {
workerScript.scriptRef.log(txt);
}
}
- if (_Player_js__WEBPACK_IMPORTED_MODULE_15__["Player"].companyPosition.isPartTimeJob()) {
- _Player_js__WEBPACK_IMPORTED_MODULE_15__["Player"].startWorkPartTime();
+ if (_Player_js__WEBPACK_IMPORTED_MODULE_16__["Player"].companyPosition.isPartTimeJob()) {
+ _Player_js__WEBPACK_IMPORTED_MODULE_16__["Player"].startWorkPartTime();
} else {
- _Player_js__WEBPACK_IMPORTED_MODULE_15__["Player"].startWork();
+ _Player_js__WEBPACK_IMPORTED_MODULE_16__["Player"].startWork();
}
if (workerScript.disableLogs.ALL == null && workerScript.disableLogs.workForCompany == null) {
- workerScript.scriptRef.log("Began working at " + _Player_js__WEBPACK_IMPORTED_MODULE_15__["Player"].companyName + " as a " + _Player_js__WEBPACK_IMPORTED_MODULE_15__["Player"].companyPosition.positionName);
+ workerScript.scriptRef.log("Began working at " + _Player_js__WEBPACK_IMPORTED_MODULE_16__["Player"].companyName + " as a " + _Player_js__WEBPACK_IMPORTED_MODULE_16__["Player"].companyPosition.positionName);
}
return true;
},
applyToCompany : function(companyName, field) {
+ var ramCost = _Constants_js__WEBPACK_IMPORTED_MODULE_6__["CONSTANTS"].ScriptSingularityFn2RamCost;
+ if (_Player_js__WEBPACK_IMPORTED_MODULE_16__["Player"].bitNodeN !== 4) {ramCost *= 8;}
if (workerScript.checkingRam) {
- if (workerScript.loadedFns.applyToCompany) {
- return 0;
- } else {
- workerScript.loadedFns.applyToCompany = true;
- var ramCost = _Constants_js__WEBPACK_IMPORTED_MODULE_6__["CONSTANTS"].ScriptSingularityFn2RamCost;
- if (_Player_js__WEBPACK_IMPORTED_MODULE_15__["Player"].bitNodeN !== 4) {ramCost *= 8;}
- return ramCost;
- }
+ return updateStaticRam("applyToCompany", ramCost);
}
- if (_Player_js__WEBPACK_IMPORTED_MODULE_15__["Player"].bitNodeN != 4) {
+ updateDynamicRam("applyToCompany", ramCost);
+ if (_Player_js__WEBPACK_IMPORTED_MODULE_16__["Player"].bitNodeN != 4) {
if (!(hasSingularitySF && singularitySFLvl >= 2)) {
- throw Object(_NetscriptEvaluator_js__WEBPACK_IMPORTED_MODULE_24__["makeRuntimeRejectMsg"])(workerScript, "Cannot run applyToCompany(). It is a Singularity Function and requires SourceFile-4 (level 2) to run.");
+ throw Object(_NetscriptEvaluator_js__WEBPACK_IMPORTED_MODULE_25__["makeRuntimeRejectMsg"])(workerScript, "Cannot run applyToCompany(). It is a Singularity Function and requires SourceFile-4 (level 2) to run.");
return false;
}
}
@@ -33171,60 +33186,60 @@ function NetscriptFunctions(workerScript) {
return false;
}
- _Player_js__WEBPACK_IMPORTED_MODULE_15__["Player"].location = companyName;
+ _Player_js__WEBPACK_IMPORTED_MODULE_16__["Player"].location = companyName;
var res;
switch (field.toLowerCase()) {
case "software":
- res = _Player_js__WEBPACK_IMPORTED_MODULE_15__["Player"].applyForSoftwareJob(true);
+ res = _Player_js__WEBPACK_IMPORTED_MODULE_16__["Player"].applyForSoftwareJob(true);
break;
case "software consultant":
- res = _Player_js__WEBPACK_IMPORTED_MODULE_15__["Player"].applyForSoftwareConsultantJob(true);
+ res = _Player_js__WEBPACK_IMPORTED_MODULE_16__["Player"].applyForSoftwareConsultantJob(true);
break;
case "it":
- res = _Player_js__WEBPACK_IMPORTED_MODULE_15__["Player"].applyForItJob(true);
+ res = _Player_js__WEBPACK_IMPORTED_MODULE_16__["Player"].applyForItJob(true);
break;
case "security engineer":
- res = _Player_js__WEBPACK_IMPORTED_MODULE_15__["Player"].applyForSecurityEngineerJob(true);
+ res = _Player_js__WEBPACK_IMPORTED_MODULE_16__["Player"].applyForSecurityEngineerJob(true);
break;
case "network engineer":
- res = _Player_js__WEBPACK_IMPORTED_MODULE_15__["Player"].applyForNetworkEngineerJob(true);
+ res = _Player_js__WEBPACK_IMPORTED_MODULE_16__["Player"].applyForNetworkEngineerJob(true);
break;
case "business":
- res = _Player_js__WEBPACK_IMPORTED_MODULE_15__["Player"].applyForBusinessJob(true);
+ res = _Player_js__WEBPACK_IMPORTED_MODULE_16__["Player"].applyForBusinessJob(true);
break;
case "business consultant":
- res = _Player_js__WEBPACK_IMPORTED_MODULE_15__["Player"].applyForBusinessConsultantJob(true);
+ res = _Player_js__WEBPACK_IMPORTED_MODULE_16__["Player"].applyForBusinessConsultantJob(true);
break;
case "security":
- res = _Player_js__WEBPACK_IMPORTED_MODULE_15__["Player"].applyForSecurityJob(true);
+ res = _Player_js__WEBPACK_IMPORTED_MODULE_16__["Player"].applyForSecurityJob(true);
break;
case "agent":
- res = _Player_js__WEBPACK_IMPORTED_MODULE_15__["Player"].applyForAgentJob(true);
+ res = _Player_js__WEBPACK_IMPORTED_MODULE_16__["Player"].applyForAgentJob(true);
break;
case "employee":
- res = _Player_js__WEBPACK_IMPORTED_MODULE_15__["Player"].applyForEmployeeJob(true);
+ res = _Player_js__WEBPACK_IMPORTED_MODULE_16__["Player"].applyForEmployeeJob(true);
break;
case "part-time employee":
- res = _Player_js__WEBPACK_IMPORTED_MODULE_15__["Player"].applyForPartTimeEmployeeJob(true);
+ res = _Player_js__WEBPACK_IMPORTED_MODULE_16__["Player"].applyForPartTimeEmployeeJob(true);
break;
case "waiter":
- res = _Player_js__WEBPACK_IMPORTED_MODULE_15__["Player"].applyForWaiterJob(true);
+ res = _Player_js__WEBPACK_IMPORTED_MODULE_16__["Player"].applyForWaiterJob(true);
break;
case "part-time waiter":
- res = _Player_js__WEBPACK_IMPORTED_MODULE_15__["Player"].applyForPartTimeWaiterJob(true);
+ res = _Player_js__WEBPACK_IMPORTED_MODULE_16__["Player"].applyForPartTimeWaiterJob(true);
break;
default:
workerScript.scriptRef.log("ERROR: Invalid job passed into applyToCompany: " + field + ". applyToCompany() failed");
return false;
}
//The Player object's applyForJob function can return string with special error messages
- if (Object(_utils_StringHelperFunctions_js__WEBPACK_IMPORTED_MODULE_31__["isString"])(res)) {
+ if (Object(_utils_StringHelperFunctions_js__WEBPACK_IMPORTED_MODULE_32__["isString"])(res)) {
workerScript.scriptRef.log(res);
return false;
}
if (res) {
if (workerScript.disableLogs.ALL == null && workerScript.disableLogs.applyToCompany == null) {
- workerScript.scriptRef.log("You were offered a new job at " + companyName + " as a " + _Player_js__WEBPACK_IMPORTED_MODULE_15__["Player"].companyPosition.positionName);
+ workerScript.scriptRef.log("You were offered a new job at " + companyName + " as a " + _Player_js__WEBPACK_IMPORTED_MODULE_16__["Player"].companyPosition.positionName);
}
} else {
if (workerScript.disableLogs.ALL == null && workerScript.disableLogs.applyToCompany == null) {
@@ -33234,19 +33249,15 @@ function NetscriptFunctions(workerScript) {
return res;
},
getCompanyRep : function(companyName) {
+ var ramCost = _Constants_js__WEBPACK_IMPORTED_MODULE_6__["CONSTANTS"].ScriptSingularityFn2RamCost / 2;
+ if (_Player_js__WEBPACK_IMPORTED_MODULE_16__["Player"].bitNodeN !== 4) {ramCost *= 8;}
if (workerScript.checkingRam) {
- if (workerScript.loadedFns.getCompanyRep) {
- return 0;
- } else {
- workerScript.loadedFns.getCompanyRep = true;
- var ramCost = _Constants_js__WEBPACK_IMPORTED_MODULE_6__["CONSTANTS"].ScriptSingularityFn2RamCost / 4;
- if (_Player_js__WEBPACK_IMPORTED_MODULE_15__["Player"].bitNodeN !== 4) {ramCost *= 8;}
- return ramCost;
- }
+ return updateStaticRam("getCompanyRep", ramCost);
}
- if (_Player_js__WEBPACK_IMPORTED_MODULE_15__["Player"].bitNodeN != 4) {
+ updateDynamicRam("getCompanyRep", ramCost);
+ if (_Player_js__WEBPACK_IMPORTED_MODULE_16__["Player"].bitNodeN != 4) {
if (!(hasSingularitySF && singularitySFLvl >= 2)) {
- throw Object(_NetscriptEvaluator_js__WEBPACK_IMPORTED_MODULE_24__["makeRuntimeRejectMsg"])(workerScript, "Cannot run getCompanyRep(). It is a Singularity Function and requires SourceFile-4 (level 2) to run.");
+ throw Object(_NetscriptEvaluator_js__WEBPACK_IMPORTED_MODULE_25__["makeRuntimeRejectMsg"])(workerScript, "Cannot run getCompanyRep(). It is a Singularity Function and requires SourceFile-4 (level 2) to run.");
return false;
}
}
@@ -33259,19 +33270,15 @@ function NetscriptFunctions(workerScript) {
return company.playerReputation;
},
getCompanyFavor : function(companyName) {
+ var ramCost = _Constants_js__WEBPACK_IMPORTED_MODULE_6__["CONSTANTS"].ScriptSingularityFn2RamCost / 4;
+ if (_Player_js__WEBPACK_IMPORTED_MODULE_16__["Player"].bitNodeN !== 4) {ramCost *= 8;}
if (workerScript.checkingRam) {
- if (workerScript.loadedFns.getCompanyFavor) {
- return 0;
- } else {
- workerScript.loadedFns.getCompanyFavor = true;
- var ramCost = _Constants_js__WEBPACK_IMPORTED_MODULE_6__["CONSTANTS"].ScriptSingularityFn2RamCost / 4;
- if (_Player_js__WEBPACK_IMPORTED_MODULE_15__["Player"].bitNodeN !== 4) {ramCost *= 8;}
- return ramCost;
- }
+ return updateStaticRam("getCompanyFavor", ramCost);
}
- if (_Player_js__WEBPACK_IMPORTED_MODULE_15__["Player"].bitNodeN != 4) {
+ updateDynamicRam("getCompanyFavor", ramCost);
+ if (_Player_js__WEBPACK_IMPORTED_MODULE_16__["Player"].bitNodeN != 4) {
if (!(hasSingularitySF && singularitySFLvl >= 2)) {
- throw Object(_NetscriptEvaluator_js__WEBPACK_IMPORTED_MODULE_24__["makeRuntimeRejectMsg"])(workerScript, "Cannot run getCompanyFavor(). It is a Singularity Function and requires SourceFile-4 (level 2) to run.");
+ throw Object(_NetscriptEvaluator_js__WEBPACK_IMPORTED_MODULE_25__["makeRuntimeRejectMsg"])(workerScript, "Cannot run getCompanyFavor(). It is a Singularity Function and requires SourceFile-4 (level 2) to run.");
return false;
}
}
@@ -33284,109 +33291,103 @@ function NetscriptFunctions(workerScript) {
return company.favor;
},
checkFactionInvitations : function() {
+ var ramCost = _Constants_js__WEBPACK_IMPORTED_MODULE_6__["CONSTANTS"].ScriptSingularityFn2RamCost;
+ if (_Player_js__WEBPACK_IMPORTED_MODULE_16__["Player"].bitNodeN !== 4) {ramCost *= 8;}
if (workerScript.checkingRam) {
- if (workerScript.loadedFns.checkFactionInvitations) {
- return 0;
- } else {
- workerScript.loadedFns.checkFactionInvitations = true;
- var ramCost = _Constants_js__WEBPACK_IMPORTED_MODULE_6__["CONSTANTS"].ScriptSingularityFn2RamCost;
- if (_Player_js__WEBPACK_IMPORTED_MODULE_15__["Player"].bitNodeN !== 4) {ramCost *= 8;}
- return ramCost;
- }
+ return updateStaticRam("checkFactionInvitations", ramCost);
}
- if (_Player_js__WEBPACK_IMPORTED_MODULE_15__["Player"].bitNodeN != 4) {
+ updateDynamicRam("checkFactionInvitations", ramCost);
+ if (_Player_js__WEBPACK_IMPORTED_MODULE_16__["Player"].bitNodeN != 4) {
if (!(hasSingularitySF && singularitySFLvl >= 2)) {
- throw Object(_NetscriptEvaluator_js__WEBPACK_IMPORTED_MODULE_24__["makeRuntimeRejectMsg"])(workerScript, "Cannot run checkFactionInvitations(). It is a Singularity Function and requires SourceFile-4 (level 2) to run.");
+ throw Object(_NetscriptEvaluator_js__WEBPACK_IMPORTED_MODULE_25__["makeRuntimeRejectMsg"])(workerScript, "Cannot run checkFactionInvitations(). It is a Singularity Function and requires SourceFile-4 (level 2) to run.");
return false;
}
}
//Make a copy of Player.factionInvitations
- return _Player_js__WEBPACK_IMPORTED_MODULE_15__["Player"].factionInvitations.slice();
+ return _Player_js__WEBPACK_IMPORTED_MODULE_16__["Player"].factionInvitations.slice();
},
joinFaction : function(name) {
+ var ramCost = _Constants_js__WEBPACK_IMPORTED_MODULE_6__["CONSTANTS"].ScriptSingularityFn2RamCost;
+ if (_Player_js__WEBPACK_IMPORTED_MODULE_16__["Player"].bitNodeN !== 4) {ramCost *= 8;}
if (workerScript.checkingRam) {
- if (workerScript.loadedFns.joinFaction) {
- return 0;
- } else {
- workerScript.loadedFns.joinFaction = true;
- var ramCost = _Constants_js__WEBPACK_IMPORTED_MODULE_6__["CONSTANTS"].ScriptSingularityFn2RamCost;
- if (_Player_js__WEBPACK_IMPORTED_MODULE_15__["Player"].bitNodeN !== 4) {ramCost *= 8;}
- return ramCost;
- }
+ return updateStaticRam("joinFaction", ramCost);
}
- if (_Player_js__WEBPACK_IMPORTED_MODULE_15__["Player"].bitNodeN != 4) {
+ updateDynamicRam("joinFaction", ramCost);
+ if (_Player_js__WEBPACK_IMPORTED_MODULE_16__["Player"].bitNodeN != 4) {
if (!(hasSingularitySF && singularitySFLvl >= 2)) {
- throw Object(_NetscriptEvaluator_js__WEBPACK_IMPORTED_MODULE_24__["makeRuntimeRejectMsg"])(workerScript, "Cannot run joinFaction(). It is a Singularity Function and requires SourceFile-4 (level 2) to run.");
+ throw Object(_NetscriptEvaluator_js__WEBPACK_IMPORTED_MODULE_25__["makeRuntimeRejectMsg"])(workerScript, "Cannot run joinFaction(). It is a Singularity Function and requires SourceFile-4 (level 2) to run.");
return false;
}
}
- if (!Object(_Faction_js__WEBPACK_IMPORTED_MODULE_10__["factionExists"])(name)) {
+ if (!Object(_Faction_js__WEBPACK_IMPORTED_MODULE_11__["factionExists"])(name)) {
workerScript.scriptRef.log("ERROR: Faction specified in joinFaction() does not exist.");
return false;
}
- if (!_Player_js__WEBPACK_IMPORTED_MODULE_15__["Player"].factionInvitations.includes(name)) {
+ if (!_Player_js__WEBPACK_IMPORTED_MODULE_16__["Player"].factionInvitations.includes(name)) {
workerScript.scriptRef.log("ERROR: Cannot join " + name + " Faction because you have not been invited. joinFaction() failed");
return false;
}
- var index = _Player_js__WEBPACK_IMPORTED_MODULE_15__["Player"].factionInvitations.indexOf(name);
+ var index = _Player_js__WEBPACK_IMPORTED_MODULE_16__["Player"].factionInvitations.indexOf(name);
if (index === -1) {
//Redundant and should never happen...
workerScript.scriptRef.log("ERROR: Cannot join " + name + " Faction because you have not been invited. joinFaction() failed");
return false;
}
- _Player_js__WEBPACK_IMPORTED_MODULE_15__["Player"].factionInvitations.splice(index, 1);
- var fac = _Faction_js__WEBPACK_IMPORTED_MODULE_10__["Factions"][name];
- Object(_Faction_js__WEBPACK_IMPORTED_MODULE_10__["joinFaction"])(fac);
- _Player_js__WEBPACK_IMPORTED_MODULE_15__["Player"].gainIntelligenceExp(_Constants_js__WEBPACK_IMPORTED_MODULE_6__["CONSTANTS"].IntelligenceSingFnBaseExpGain);
+ _Player_js__WEBPACK_IMPORTED_MODULE_16__["Player"].factionInvitations.splice(index, 1);
+ var fac = _Faction_js__WEBPACK_IMPORTED_MODULE_11__["Factions"][name];
+ Object(_Faction_js__WEBPACK_IMPORTED_MODULE_11__["joinFaction"])(fac);
+ _Player_js__WEBPACK_IMPORTED_MODULE_16__["Player"].gainIntelligenceExp(_Constants_js__WEBPACK_IMPORTED_MODULE_6__["CONSTANTS"].IntelligenceSingFnBaseExpGain);
if (workerScript.disableLogs.ALL == null && workerScript.disableLogs.joinFaction == null) {
workerScript.scriptRef.log("Joined the " + name + " faction.");
}
return true;
},
workForFaction : function(name, type) {
+ var ramCost = _Constants_js__WEBPACK_IMPORTED_MODULE_6__["CONSTANTS"].ScriptSingularityFn2RamCost;
+ if (_Player_js__WEBPACK_IMPORTED_MODULE_16__["Player"].bitNodeN !== 4) {ramCost *= 8;}
if (workerScript.checkingRam) {
- if (workerScript.loadedFns.workForFaction) {
- return 0;
- } else {
- workerScript.loadedFns.workForFaction = true;
- var ramCost = _Constants_js__WEBPACK_IMPORTED_MODULE_6__["CONSTANTS"].ScriptSingularityFn2RamCost;
- if (_Player_js__WEBPACK_IMPORTED_MODULE_15__["Player"].bitNodeN !== 4) {ramCost *= 8;}
- return ramCost;
- }
+ return updateStaticRam("workForFaction", ramCost);
}
- if (_Player_js__WEBPACK_IMPORTED_MODULE_15__["Player"].bitNodeN != 4) {
+ updateDynamicRam("workForFaction", ramCost);
+ if (_Player_js__WEBPACK_IMPORTED_MODULE_16__["Player"].bitNodeN != 4) {
if (!(hasSingularitySF && singularitySFLvl >= 2)) {
- throw Object(_NetscriptEvaluator_js__WEBPACK_IMPORTED_MODULE_24__["makeRuntimeRejectMsg"])(workerScript, "Cannot run workForFaction(). It is a Singularity Function and requires SourceFile-4 (level 2) to run.");
+ throw Object(_NetscriptEvaluator_js__WEBPACK_IMPORTED_MODULE_25__["makeRuntimeRejectMsg"])(workerScript, "Cannot run workForFaction(). It is a Singularity Function and requires SourceFile-4 (level 2) to run.");
return false;
}
}
- if (_Missions_js__WEBPACK_IMPORTED_MODULE_14__["inMission"]) {
+ // if the player is in a gang and the target faction is any of the gang faction, fail
+ if(_Player_js__WEBPACK_IMPORTED_MODULE_16__["Player"].inGang() && _Gang_js__WEBPACK_IMPORTED_MODULE_10__["AllGangs"][name] !== undefined) {
+ workerScript.scriptRef.log("ERROR: Faction specified in workForFaction() does not offer work at the moment.");
+ return;
+ }
+
+ if (_Missions_js__WEBPACK_IMPORTED_MODULE_15__["inMission"]) {
workerScript.scriptRef.log("ERROR: workForFaction() failed because you are in the middle of a mission.");
return;
}
- if (!Object(_Faction_js__WEBPACK_IMPORTED_MODULE_10__["factionExists"])(name)) {
+ if (!Object(_Faction_js__WEBPACK_IMPORTED_MODULE_11__["factionExists"])(name)) {
workerScript.scriptRef.log("ERROR: Faction specified in workForFaction() does not exist.");
return false;
}
- if (!_Player_js__WEBPACK_IMPORTED_MODULE_15__["Player"].factions.includes(name)) {
+ if (!_Player_js__WEBPACK_IMPORTED_MODULE_16__["Player"].factions.includes(name)) {
workerScript.scriptRef.log("ERROR: workForFaction() failed because you are not a member of " + name);
return false;
}
- if (_Player_js__WEBPACK_IMPORTED_MODULE_15__["Player"].isWorking) {
- var txt = _Player_js__WEBPACK_IMPORTED_MODULE_15__["Player"].singularityStopWork();
+ if (_Player_js__WEBPACK_IMPORTED_MODULE_16__["Player"].isWorking) {
+ var txt = _Player_js__WEBPACK_IMPORTED_MODULE_16__["Player"].singularityStopWork();
if (workerScript.disableLogs.ALL == null && workerScript.disableLogs.workForFaction == null) {
workerScript.scriptRef.log(txt);
}
}
- var fac = _Faction_js__WEBPACK_IMPORTED_MODULE_10__["Factions"][name];
+ var fac = _Faction_js__WEBPACK_IMPORTED_MODULE_11__["Factions"][name];
//Arrays listing factions that allow each time of work
var hackAvailable = ["Illuminati", "Daedalus", "The Covenant", "ECorp", "MegaCorp",
"Bachman & Associates", "Blade Industries", "NWO", "Clarke Incorporated",
@@ -33416,7 +33417,7 @@ function NetscriptFunctions(workerScript) {
workerScript.scriptRef.log("ERROR: Cannot carry out hacking contracts for " + fac.name + ". workForFaction() failed");
return false;
}
- _Player_js__WEBPACK_IMPORTED_MODULE_15__["Player"].startFactionHackWork(fac);
+ _Player_js__WEBPACK_IMPORTED_MODULE_16__["Player"].startFactionHackWork(fac);
workerScript.scriptRef.log("Started carrying out hacking contracts for " + fac.name);
return true;
case "field":
@@ -33426,7 +33427,7 @@ function NetscriptFunctions(workerScript) {
workerScript.scriptRef.log("ERROR: Cannot carry out field missions for " + fac.name + ". workForFaction() failed");
return false;
}
- _Player_js__WEBPACK_IMPORTED_MODULE_15__["Player"].startFactionFieldWork(fac);
+ _Player_js__WEBPACK_IMPORTED_MODULE_16__["Player"].startFactionFieldWork(fac);
workerScript.scriptRef.log("Started carrying out field missions for " + fac.name);
return true;
case "security":
@@ -33436,7 +33437,7 @@ function NetscriptFunctions(workerScript) {
workerScript.scriptRef.log("ERROR: Cannot serve as security detail for " + fac.name + ". workForFaction() failed");
return false;
}
- _Player_js__WEBPACK_IMPORTED_MODULE_15__["Player"].startFactionSecurityWork(fac);
+ _Player_js__WEBPACK_IMPORTED_MODULE_16__["Player"].startFactionSecurityWork(fac);
workerScript.scriptRef.log("Started serving as security details for " + fac.name);
return true;
default:
@@ -33445,78 +33446,66 @@ function NetscriptFunctions(workerScript) {
return true;
},
getFactionRep : function(name) {
+ var ramCost = _Constants_js__WEBPACK_IMPORTED_MODULE_6__["CONSTANTS"].ScriptSingularityFn2RamCost / 4;
+ if (_Player_js__WEBPACK_IMPORTED_MODULE_16__["Player"].bitNodeN !== 4) {ramCost *= 8;}
if (workerScript.checkingRam) {
- if (workerScript.loadedFns.getFactionRep) {
- return 0;
- } else {
- workerScript.loadedFns.getFactionRep = true;
- var ramCost = _Constants_js__WEBPACK_IMPORTED_MODULE_6__["CONSTANTS"].ScriptSingularityFn2RamCost / 4;
- if (_Player_js__WEBPACK_IMPORTED_MODULE_15__["Player"].bitNodeN !== 4) {ramCost *= 8;}
- return ramCost;
- }
+ return updateStaticRam("getFactionRep", ramCost);
}
- if (_Player_js__WEBPACK_IMPORTED_MODULE_15__["Player"].bitNodeN != 4) {
+ updateDynamicRam("getFactionRep", ramCost);
+ if (_Player_js__WEBPACK_IMPORTED_MODULE_16__["Player"].bitNodeN != 4) {
if (!(hasSingularitySF && singularitySFLvl >= 2)) {
- throw Object(_NetscriptEvaluator_js__WEBPACK_IMPORTED_MODULE_24__["makeRuntimeRejectMsg"])(workerScript, "Cannot run getFactionRep(). It is a Singularity Function and requires SourceFile-4 (level 2) to run.");
+ throw Object(_NetscriptEvaluator_js__WEBPACK_IMPORTED_MODULE_25__["makeRuntimeRejectMsg"])(workerScript, "Cannot run getFactionRep(). It is a Singularity Function and requires SourceFile-4 (level 2) to run.");
return -1;
}
}
- if (!Object(_Faction_js__WEBPACK_IMPORTED_MODULE_10__["factionExists"])(name)) {
+ if (!Object(_Faction_js__WEBPACK_IMPORTED_MODULE_11__["factionExists"])(name)) {
workerScript.scriptRef.log("ERROR: Faction specified in getFactionRep() does not exist.");
return -1;
}
- return _Faction_js__WEBPACK_IMPORTED_MODULE_10__["Factions"][name].playerReputation;
+ return _Faction_js__WEBPACK_IMPORTED_MODULE_11__["Factions"][name].playerReputation;
},
getFactionFavor : function(name) {
+ var ramCost = _Constants_js__WEBPACK_IMPORTED_MODULE_6__["CONSTANTS"].ScriptSingularityFn2RamCost;
+ if (_Player_js__WEBPACK_IMPORTED_MODULE_16__["Player"].bitNodeN !== 4) {ramCost *= 8;}
if (workerScript.checkingRam) {
- if (workerScript.loadedFns.getFactionFavor) {
- return 0;
- } else {
- workerScript.loadedFns.getFactionFavor = true;
- var ramCost = _Constants_js__WEBPACK_IMPORTED_MODULE_6__["CONSTANTS"].ScriptSingularityFn2RamCost / 4;
- if (_Player_js__WEBPACK_IMPORTED_MODULE_15__["Player"].bitNodeN !== 4) {ramCost *= 8;}
- return ramCost;
- }
+ return updateStaticRam("getFactionFavor", ramCost);
}
- if (_Player_js__WEBPACK_IMPORTED_MODULE_15__["Player"].bitNodeN != 4) {
+ updateDynamicRam("getFactionFavor", ramCost);
+ if (_Player_js__WEBPACK_IMPORTED_MODULE_16__["Player"].bitNodeN != 4) {
if (!(hasSingularitySF && singularitySFLvl >= 2)) {
- throw Object(_NetscriptEvaluator_js__WEBPACK_IMPORTED_MODULE_24__["makeRuntimeRejectMsg"])(workerScript, "Cannot run getFactionFavor(). It is a Singularity Function and requires SourceFile-4 (level 2) to run.");
+ throw Object(_NetscriptEvaluator_js__WEBPACK_IMPORTED_MODULE_25__["makeRuntimeRejectMsg"])(workerScript, "Cannot run getFactionFavor(). It is a Singularity Function and requires SourceFile-4 (level 2) to run.");
return -1;
}
}
- if (!Object(_Faction_js__WEBPACK_IMPORTED_MODULE_10__["factionExists"])(name)) {
+ if (!Object(_Faction_js__WEBPACK_IMPORTED_MODULE_11__["factionExists"])(name)) {
workerScript.scriptRef.log("ERROR: Faction specified in getFactionFavor() does not exist.");
return -1;
}
- return _Faction_js__WEBPACK_IMPORTED_MODULE_10__["Factions"][name].favor;
+ return _Faction_js__WEBPACK_IMPORTED_MODULE_11__["Factions"][name].favor;
},
createProgram : function(name) {
+ var ramCost = _Constants_js__WEBPACK_IMPORTED_MODULE_6__["CONSTANTS"].ScriptSingularityFn3RamCost;
+ if (_Player_js__WEBPACK_IMPORTED_MODULE_16__["Player"].bitNodeN !== 4) {ramCost *= 8;}
if (workerScript.checkingRam) {
- if (workerScript.loadedFns.createProgram) {
- return 0;
- } else {
- workerScript.loadedFns.createProgram = true;
- var ramCost = _Constants_js__WEBPACK_IMPORTED_MODULE_6__["CONSTANTS"].ScriptSingularityFn3RamCost;
- if (_Player_js__WEBPACK_IMPORTED_MODULE_15__["Player"].bitNodeN !== 4) {ramCost *= 8;}
- return ramCost;
- }
+ return updateStaticRam("createProgram", ramCost);
}
- if (_Player_js__WEBPACK_IMPORTED_MODULE_15__["Player"].bitNodeN != 4) {
+ updateDynamicRam("createProgram", ramCost);
+ if (_Player_js__WEBPACK_IMPORTED_MODULE_16__["Player"].bitNodeN != 4) {
if (!(hasSingularitySF && singularitySFLvl >= 3)) {
- throw Object(_NetscriptEvaluator_js__WEBPACK_IMPORTED_MODULE_24__["makeRuntimeRejectMsg"])(workerScript, "Cannot run createProgram(). It is a Singularity Function and requires SourceFile-4 (level 3) to run.");
+ throw Object(_NetscriptEvaluator_js__WEBPACK_IMPORTED_MODULE_25__["makeRuntimeRejectMsg"])(workerScript, "Cannot run createProgram(). It is a Singularity Function and requires SourceFile-4 (level 3) to run.");
return false;
}
}
- if (_Missions_js__WEBPACK_IMPORTED_MODULE_14__["inMission"]) {
+ if (_Missions_js__WEBPACK_IMPORTED_MODULE_15__["inMission"]) {
workerScript.scriptRef.log("ERROR: createProgram() failed because you are in the middle of a mission.");
return;
}
- if (_Player_js__WEBPACK_IMPORTED_MODULE_15__["Player"].isWorking) {
- var txt = _Player_js__WEBPACK_IMPORTED_MODULE_15__["Player"].singularityStopWork();
+ if (_Player_js__WEBPACK_IMPORTED_MODULE_16__["Player"].isWorking) {
+ var txt = _Player_js__WEBPACK_IMPORTED_MODULE_16__["Player"].singularityStopWork();
if (workerScript.disableLogs.ALL == null && workerScript.disableLogs.createProgram == null) {
workerScript.scriptRef.log(txt);
}
@@ -33524,70 +33513,70 @@ function NetscriptFunctions(workerScript) {
switch(name.toLowerCase()) {
case _CreateProgram_js__WEBPACK_IMPORTED_MODULE_7__["Programs"].NukeProgram.toLowerCase():
- _Player_js__WEBPACK_IMPORTED_MODULE_15__["Player"].startCreateProgramWork(_CreateProgram_js__WEBPACK_IMPORTED_MODULE_7__["Programs"].NukeProgram, _Constants_js__WEBPACK_IMPORTED_MODULE_6__["CONSTANTS"].MillisecondsPerFiveMinutes, 1);
+ _Player_js__WEBPACK_IMPORTED_MODULE_16__["Player"].startCreateProgramWork(_CreateProgram_js__WEBPACK_IMPORTED_MODULE_7__["Programs"].NukeProgram, _Constants_js__WEBPACK_IMPORTED_MODULE_6__["CONSTANTS"].MillisecondsPerFiveMinutes, 1);
break;
case _CreateProgram_js__WEBPACK_IMPORTED_MODULE_7__["Programs"].BruteSSHProgram.toLowerCase():
- if (_Player_js__WEBPACK_IMPORTED_MODULE_15__["Player"].hacking_skill < 50) {
+ if (_Player_js__WEBPACK_IMPORTED_MODULE_16__["Player"].hacking_skill < 50) {
workerScript.scriptRef.log("ERROR: createProgram() failed because hacking level is too low to create BruteSSH (level 50 req)");
return false;
}
- _Player_js__WEBPACK_IMPORTED_MODULE_15__["Player"].startCreateProgramWork(_CreateProgram_js__WEBPACK_IMPORTED_MODULE_7__["Programs"].BruteSSHProgram, _Constants_js__WEBPACK_IMPORTED_MODULE_6__["CONSTANTS"].MillisecondsPerFiveMinutes * 2, 50);
+ _Player_js__WEBPACK_IMPORTED_MODULE_16__["Player"].startCreateProgramWork(_CreateProgram_js__WEBPACK_IMPORTED_MODULE_7__["Programs"].BruteSSHProgram, _Constants_js__WEBPACK_IMPORTED_MODULE_6__["CONSTANTS"].MillisecondsPerFiveMinutes * 2, 50);
break;
case _CreateProgram_js__WEBPACK_IMPORTED_MODULE_7__["Programs"].FTPCrackProgram.toLowerCase():
- if (_Player_js__WEBPACK_IMPORTED_MODULE_15__["Player"].hacking_skill < 100) {
+ if (_Player_js__WEBPACK_IMPORTED_MODULE_16__["Player"].hacking_skill < 100) {
workerScript.scriptRef.log("ERROR: createProgram() failed because hacking level is too low to create FTPCrack (level 100 req)");
return false;
}
- _Player_js__WEBPACK_IMPORTED_MODULE_15__["Player"].startCreateProgramWork(_CreateProgram_js__WEBPACK_IMPORTED_MODULE_7__["Programs"].FTPCrackProgram, _Constants_js__WEBPACK_IMPORTED_MODULE_6__["CONSTANTS"].MillisecondsPerHalfHour, 100);
+ _Player_js__WEBPACK_IMPORTED_MODULE_16__["Player"].startCreateProgramWork(_CreateProgram_js__WEBPACK_IMPORTED_MODULE_7__["Programs"].FTPCrackProgram, _Constants_js__WEBPACK_IMPORTED_MODULE_6__["CONSTANTS"].MillisecondsPerHalfHour, 100);
break;
case _CreateProgram_js__WEBPACK_IMPORTED_MODULE_7__["Programs"].RelaySMTPProgram.toLowerCase():
- if (_Player_js__WEBPACK_IMPORTED_MODULE_15__["Player"].hacking_skill < 250) {
+ if (_Player_js__WEBPACK_IMPORTED_MODULE_16__["Player"].hacking_skill < 250) {
workerScript.scriptRef.log("ERROR: createProgram() failed because hacking level is too low to create relaySMTP (level 250 req)");
return false;
}
- _Player_js__WEBPACK_IMPORTED_MODULE_15__["Player"].startCreateProgramWork(_CreateProgram_js__WEBPACK_IMPORTED_MODULE_7__["Programs"].RelaySMTPProgram, _Constants_js__WEBPACK_IMPORTED_MODULE_6__["CONSTANTS"].MillisecondsPer2Hours, 250);
+ _Player_js__WEBPACK_IMPORTED_MODULE_16__["Player"].startCreateProgramWork(_CreateProgram_js__WEBPACK_IMPORTED_MODULE_7__["Programs"].RelaySMTPProgram, _Constants_js__WEBPACK_IMPORTED_MODULE_6__["CONSTANTS"].MillisecondsPer2Hours, 250);
break;
case _CreateProgram_js__WEBPACK_IMPORTED_MODULE_7__["Programs"].HTTPWormProgram.toLowerCase():
- if (_Player_js__WEBPACK_IMPORTED_MODULE_15__["Player"].hacking_skill < 500) {
+ if (_Player_js__WEBPACK_IMPORTED_MODULE_16__["Player"].hacking_skill < 500) {
workerScript.scriptRef.log("ERROR: createProgram() failed because hacking level is too low to create HTTPWorm (level 500 req)");
return false;
}
- _Player_js__WEBPACK_IMPORTED_MODULE_15__["Player"].startCreateProgramWork(_CreateProgram_js__WEBPACK_IMPORTED_MODULE_7__["Programs"].HTTPWormProgram, _Constants_js__WEBPACK_IMPORTED_MODULE_6__["CONSTANTS"].MillisecondsPer4Hours, 500);
+ _Player_js__WEBPACK_IMPORTED_MODULE_16__["Player"].startCreateProgramWork(_CreateProgram_js__WEBPACK_IMPORTED_MODULE_7__["Programs"].HTTPWormProgram, _Constants_js__WEBPACK_IMPORTED_MODULE_6__["CONSTANTS"].MillisecondsPer4Hours, 500);
break;
case _CreateProgram_js__WEBPACK_IMPORTED_MODULE_7__["Programs"].SQLInjectProgram.toLowerCase():
- if (_Player_js__WEBPACK_IMPORTED_MODULE_15__["Player"].hacking_skill < 750) {
+ if (_Player_js__WEBPACK_IMPORTED_MODULE_16__["Player"].hacking_skill < 750) {
workerScript.scriptRef.log("ERROR: createProgram() failed because hacking level is too low to create SQLInject (level 750 req)");
return false;
}
- _Player_js__WEBPACK_IMPORTED_MODULE_15__["Player"].startCreateProgramWork(_CreateProgram_js__WEBPACK_IMPORTED_MODULE_7__["Programs"].SQLInjectProgram, _Constants_js__WEBPACK_IMPORTED_MODULE_6__["CONSTANTS"].MillisecondsPer8Hours, 750);
+ _Player_js__WEBPACK_IMPORTED_MODULE_16__["Player"].startCreateProgramWork(_CreateProgram_js__WEBPACK_IMPORTED_MODULE_7__["Programs"].SQLInjectProgram, _Constants_js__WEBPACK_IMPORTED_MODULE_6__["CONSTANTS"].MillisecondsPer8Hours, 750);
break;
case _CreateProgram_js__WEBPACK_IMPORTED_MODULE_7__["Programs"].DeepscanV1.toLowerCase():
- if (_Player_js__WEBPACK_IMPORTED_MODULE_15__["Player"].hacking_skill < 75) {
+ if (_Player_js__WEBPACK_IMPORTED_MODULE_16__["Player"].hacking_skill < 75) {
workerScript.scriptRef.log("ERROR: createProgram() failed because hacking level is too low to create DeepscanV1 (level 75 req)");
return false;
}
- _Player_js__WEBPACK_IMPORTED_MODULE_15__["Player"].startCreateProgramWork(_CreateProgram_js__WEBPACK_IMPORTED_MODULE_7__["Programs"].DeepscanV1, _Constants_js__WEBPACK_IMPORTED_MODULE_6__["CONSTANTS"].MillisecondsPerQuarterHour, 75);
+ _Player_js__WEBPACK_IMPORTED_MODULE_16__["Player"].startCreateProgramWork(_CreateProgram_js__WEBPACK_IMPORTED_MODULE_7__["Programs"].DeepscanV1, _Constants_js__WEBPACK_IMPORTED_MODULE_6__["CONSTANTS"].MillisecondsPerQuarterHour, 75);
break;
case _CreateProgram_js__WEBPACK_IMPORTED_MODULE_7__["Programs"].DeepscanV2.toLowerCase():
- if (_Player_js__WEBPACK_IMPORTED_MODULE_15__["Player"].hacking_skill < 400) {
+ if (_Player_js__WEBPACK_IMPORTED_MODULE_16__["Player"].hacking_skill < 400) {
workerScript.scriptRef.log("ERROR: createProgram() failed because hacking level is too low to create DeepscanV2 (level 400 req)");
return false;
}
- _Player_js__WEBPACK_IMPORTED_MODULE_15__["Player"].startCreateProgramWork(_CreateProgram_js__WEBPACK_IMPORTED_MODULE_7__["Programs"].DeepscanV2, _Constants_js__WEBPACK_IMPORTED_MODULE_6__["CONSTANTS"].MillisecondsPer2Hours, 400);
+ _Player_js__WEBPACK_IMPORTED_MODULE_16__["Player"].startCreateProgramWork(_CreateProgram_js__WEBPACK_IMPORTED_MODULE_7__["Programs"].DeepscanV2, _Constants_js__WEBPACK_IMPORTED_MODULE_6__["CONSTANTS"].MillisecondsPer2Hours, 400);
break;
case _CreateProgram_js__WEBPACK_IMPORTED_MODULE_7__["Programs"].ServerProfiler.toLowerCase():
- if (_Player_js__WEBPACK_IMPORTED_MODULE_15__["Player"].hacking_skill < 75) {
+ if (_Player_js__WEBPACK_IMPORTED_MODULE_16__["Player"].hacking_skill < 75) {
workerScript.scriptRef.log("ERROR: createProgram() failed because hacking level is too low to create ServerProfiler (level 75 req)");
return false;
}
- _Player_js__WEBPACK_IMPORTED_MODULE_15__["Player"].startCreateProgramWork(_CreateProgram_js__WEBPACK_IMPORTED_MODULE_7__["Programs"].ServerProfiler, _Constants_js__WEBPACK_IMPORTED_MODULE_6__["CONSTANTS"].MillisecondsPerHalfHour, 75);
+ _Player_js__WEBPACK_IMPORTED_MODULE_16__["Player"].startCreateProgramWork(_CreateProgram_js__WEBPACK_IMPORTED_MODULE_7__["Programs"].ServerProfiler, _Constants_js__WEBPACK_IMPORTED_MODULE_6__["CONSTANTS"].MillisecondsPerHalfHour, 75);
break;
case _CreateProgram_js__WEBPACK_IMPORTED_MODULE_7__["Programs"].AutoLink.toLowerCase():
- if (_Player_js__WEBPACK_IMPORTED_MODULE_15__["Player"].hacking_skill < 25) {
+ if (_Player_js__WEBPACK_IMPORTED_MODULE_16__["Player"].hacking_skill < 25) {
workerScript.scriptRef.log("ERROR: createProgram() failed because hacking level is too low to create AutoLink (level 25 req)");
return false;
}
- _Player_js__WEBPACK_IMPORTED_MODULE_15__["Player"].startCreateProgramWork(_CreateProgram_js__WEBPACK_IMPORTED_MODULE_7__["Programs"].AutoLink, _Constants_js__WEBPACK_IMPORTED_MODULE_6__["CONSTANTS"].MillisecondsPerQuarterHour, 25);
+ _Player_js__WEBPACK_IMPORTED_MODULE_16__["Player"].startCreateProgramWork(_CreateProgram_js__WEBPACK_IMPORTED_MODULE_7__["Programs"].AutoLink, _Constants_js__WEBPACK_IMPORTED_MODULE_6__["CONSTANTS"].MillisecondsPerQuarterHour, 25);
break;
default:
workerScript.scriptRef.log("ERROR: createProgram() failed because the specified program does not exist: " + name);
@@ -33596,199 +33585,128 @@ function NetscriptFunctions(workerScript) {
workerScript.scriptRef.log("Began creating program: " + name);
return true;
},
- commitCrime : function(crime) {
+ commitCrime : function(crimeRoughName) {
+ var ramCost = _Constants_js__WEBPACK_IMPORTED_MODULE_6__["CONSTANTS"].ScriptSingularityFn3RamCost;
+ if (_Player_js__WEBPACK_IMPORTED_MODULE_16__["Player"].bitNodeN !== 4) {ramCost *= 8;}
if (workerScript.checkingRam) {
- if (workerScript.loadedFns.commitCrime) {
- return 0;
- } else {
- workerScript.loadedFns.commitCrime = true;
- var ramCost = _Constants_js__WEBPACK_IMPORTED_MODULE_6__["CONSTANTS"].ScriptSingularityFn3RamCost;
- if (_Player_js__WEBPACK_IMPORTED_MODULE_15__["Player"].bitNodeN !== 4) {ramCost *= 8;}
- return ramCost;
- }
+ return updateStaticRam("commitCrime", ramCost);
}
- if (_Player_js__WEBPACK_IMPORTED_MODULE_15__["Player"].bitNodeN != 4) {
+ updateDynamicRam("commitCrime", ramCost);
+ if (_Player_js__WEBPACK_IMPORTED_MODULE_16__["Player"].bitNodeN != 4) {
if (!(hasSingularitySF && singularitySFLvl >= 3)) {
- throw Object(_NetscriptEvaluator_js__WEBPACK_IMPORTED_MODULE_24__["makeRuntimeRejectMsg"])(workerScript, "Cannot run commitCrime(). It is a Singularity Function and requires SourceFile-4 (level 3) to run.");
+ throw Object(_NetscriptEvaluator_js__WEBPACK_IMPORTED_MODULE_25__["makeRuntimeRejectMsg"])(workerScript, "Cannot run commitCrime(). It is a Singularity Function and requires SourceFile-4 (level 3) to run.");
return;
}
}
- if (_Missions_js__WEBPACK_IMPORTED_MODULE_14__["inMission"]) {
+ if (_Missions_js__WEBPACK_IMPORTED_MODULE_15__["inMission"]) {
workerScript.scriptRef.log("ERROR: commitCrime() failed because you are in the middle of a mission.");
return;
}
- if (_Player_js__WEBPACK_IMPORTED_MODULE_15__["Player"].isWorking) {
- var txt = _Player_js__WEBPACK_IMPORTED_MODULE_15__["Player"].singularityStopWork();
+ if (_Player_js__WEBPACK_IMPORTED_MODULE_16__["Player"].isWorking) {
+ var txt = _Player_js__WEBPACK_IMPORTED_MODULE_16__["Player"].singularityStopWork();
if (workerScript.disableLogs.ALL == null && workerScript.disableLogs.commitCrime == null) {
workerScript.scriptRef.log(txt);
}
}
//Set Location to slums
- switch(_Player_js__WEBPACK_IMPORTED_MODULE_15__["Player"].city) {
- case _Location_js__WEBPACK_IMPORTED_MODULE_12__["Locations"].Aevum:
- _Player_js__WEBPACK_IMPORTED_MODULE_15__["Player"].location = _Location_js__WEBPACK_IMPORTED_MODULE_12__["Locations"].AevumSlums;
+ switch(_Player_js__WEBPACK_IMPORTED_MODULE_16__["Player"].city) {
+ case _Location_js__WEBPACK_IMPORTED_MODULE_13__["Locations"].Aevum:
+ _Player_js__WEBPACK_IMPORTED_MODULE_16__["Player"].location = _Location_js__WEBPACK_IMPORTED_MODULE_13__["Locations"].AevumSlums;
break;
- case _Location_js__WEBPACK_IMPORTED_MODULE_12__["Locations"].Chongqing:
- _Player_js__WEBPACK_IMPORTED_MODULE_15__["Player"].location = _Location_js__WEBPACK_IMPORTED_MODULE_12__["Locations"].ChongqingSlums;
+ case _Location_js__WEBPACK_IMPORTED_MODULE_13__["Locations"].Chongqing:
+ _Player_js__WEBPACK_IMPORTED_MODULE_16__["Player"].location = _Location_js__WEBPACK_IMPORTED_MODULE_13__["Locations"].ChongqingSlums;
break;
- case _Location_js__WEBPACK_IMPORTED_MODULE_12__["Locations"].Sector12:
- _Player_js__WEBPACK_IMPORTED_MODULE_15__["Player"].location = _Location_js__WEBPACK_IMPORTED_MODULE_12__["Locations"].Sector12Slums;
+ case _Location_js__WEBPACK_IMPORTED_MODULE_13__["Locations"].Sector12:
+ _Player_js__WEBPACK_IMPORTED_MODULE_16__["Player"].location = _Location_js__WEBPACK_IMPORTED_MODULE_13__["Locations"].Sector12Slums;
break;
- case _Location_js__WEBPACK_IMPORTED_MODULE_12__["Locations"].NewTokyo:
- _Player_js__WEBPACK_IMPORTED_MODULE_15__["Player"].location = _Location_js__WEBPACK_IMPORTED_MODULE_12__["Locations"].NewTokyoSlums;
+ case _Location_js__WEBPACK_IMPORTED_MODULE_13__["Locations"].NewTokyo:
+ _Player_js__WEBPACK_IMPORTED_MODULE_16__["Player"].location = _Location_js__WEBPACK_IMPORTED_MODULE_13__["Locations"].NewTokyoSlums;
break;
- case _Location_js__WEBPACK_IMPORTED_MODULE_12__["Locations"].Ishima:
- _Player_js__WEBPACK_IMPORTED_MODULE_15__["Player"].location = _Location_js__WEBPACK_IMPORTED_MODULE_12__["Locations"].IshimaSlums;
+ case _Location_js__WEBPACK_IMPORTED_MODULE_13__["Locations"].Ishima:
+ _Player_js__WEBPACK_IMPORTED_MODULE_16__["Player"].location = _Location_js__WEBPACK_IMPORTED_MODULE_13__["Locations"].IshimaSlums;
break;
- case _Location_js__WEBPACK_IMPORTED_MODULE_12__["Locations"].Volhaven:
- _Player_js__WEBPACK_IMPORTED_MODULE_15__["Player"].location = _Location_js__WEBPACK_IMPORTED_MODULE_12__["Locations"].VolhavenSlums;
+ case _Location_js__WEBPACK_IMPORTED_MODULE_13__["Locations"].Volhaven:
+ _Player_js__WEBPACK_IMPORTED_MODULE_16__["Player"].location = _Location_js__WEBPACK_IMPORTED_MODULE_13__["Locations"].VolhavenSlums;
break;
default:
console.log("Invalid Player.city value");
}
- crime = crime.toLowerCase();
- let enableCommitCrimeLog = workerScript.disableLogs.ALL == null && workerScript.disableLogs.commitCrime == null
- if (crime.includes("shoplift")) {
- if(enableCommitCrimeLog) {workerScript.scriptRef.log("Attempting to shoplift...");}
- return Object(_Crimes_js__WEBPACK_IMPORTED_MODULE_3__["commitShopliftCrime"])(_Constants_js__WEBPACK_IMPORTED_MODULE_6__["CONSTANTS"].CrimeSingFnDivider, {workerscript: workerScript});
- } else if (crime.includes("rob") && crime.includes("store")) {
- if(enableCommitCrimeLog) {workerScript.scriptRef.log("Attempting to rob a store...");}
- return Object(_Crimes_js__WEBPACK_IMPORTED_MODULE_3__["commitRobStoreCrime"])(_Constants_js__WEBPACK_IMPORTED_MODULE_6__["CONSTANTS"].CrimeSingFnDivider, {workerscript: workerScript});
- } else if (crime.includes("mug")) {
- if(enableCommitCrimeLog) {workerScript.scriptRef.log("Attempting to mug someone...");}
- return Object(_Crimes_js__WEBPACK_IMPORTED_MODULE_3__["commitMugCrime"])(_Constants_js__WEBPACK_IMPORTED_MODULE_6__["CONSTANTS"].CrimeSingFnDivider, {workerscript: workerScript});
- } else if (crime.includes("larceny")) {
- if(enableCommitCrimeLog) {workerScript.scriptRef.log("Attempting to commit larceny...");}
- return Object(_Crimes_js__WEBPACK_IMPORTED_MODULE_3__["commitLarcenyCrime"])(_Constants_js__WEBPACK_IMPORTED_MODULE_6__["CONSTANTS"].CrimeSingFnDivider, {workerscript: workerScript});
- } else if (crime.includes("drugs")) {
- if(enableCommitCrimeLog) {workerScript.scriptRef.log("Attempting to deal drugs...");}
- return Object(_Crimes_js__WEBPACK_IMPORTED_MODULE_3__["commitDealDrugsCrime"])(_Constants_js__WEBPACK_IMPORTED_MODULE_6__["CONSTANTS"].CrimeSingFnDivider, {workerscript: workerScript});
- } else if (crime.includes("bond") && crime.includes("forge")) {
- if(enableCommitCrimeLog) {workerScript.scriptRef.log("Attempting to forge corporate bonds...");}
- return Object(_Crimes_js__WEBPACK_IMPORTED_MODULE_3__["commitBondForgeryCrime"])(_Constants_js__WEBPACK_IMPORTED_MODULE_6__["CONSTANTS"].CrimeSingFnDivider, {workerscript: workerScript});
- } else if (crime.includes("traffick") && crime.includes("arms")) {
- if(enableCommitCrimeLog) {workerScript.scriptRef.log("Attempting to traffick illegal arms...");}
- return Object(_Crimes_js__WEBPACK_IMPORTED_MODULE_3__["commitTraffickArmsCrime"])(_Constants_js__WEBPACK_IMPORTED_MODULE_6__["CONSTANTS"].CrimeSingFnDivider, {workerscript: workerScript});
- } else if (crime.includes("homicide")) {
- if(enableCommitCrimeLog) {workerScript.scriptRef.log("Attempting to commit homicide...");}
- return Object(_Crimes_js__WEBPACK_IMPORTED_MODULE_3__["commitHomicideCrime"])(_Constants_js__WEBPACK_IMPORTED_MODULE_6__["CONSTANTS"].CrimeSingFnDivider, {workerscript: workerScript});
- } else if (crime.includes("grand") && crime.includes("auto")) {
- if(enableCommitCrimeLog) {workerScript.scriptRef.log("Attempting to commit grand theft auto...");}
- return Object(_Crimes_js__WEBPACK_IMPORTED_MODULE_3__["commitGrandTheftAutoCrime"])(_Constants_js__WEBPACK_IMPORTED_MODULE_6__["CONSTANTS"].CrimeSingFnDivider, {workerscript: workerScript});
- } else if (crime.includes("kidnap")) {
- if(enableCommitCrimeLog) {workerScript.scriptRef.log("Attempting to kidnap and ransom a high-profile target...");}
- return Object(_Crimes_js__WEBPACK_IMPORTED_MODULE_3__["commitKidnapCrime"])(_Constants_js__WEBPACK_IMPORTED_MODULE_6__["CONSTANTS"].CrimeSingFnDivider, {workerscript: workerScript});
- } else if (crime.includes("assassinate")) {
- if(enableCommitCrimeLog) {workerScript.scriptRef.log("Attempting to assassinate a high-profile target...");}
- return Object(_Crimes_js__WEBPACK_IMPORTED_MODULE_3__["commitAssassinationCrime"])(_Constants_js__WEBPACK_IMPORTED_MODULE_6__["CONSTANTS"].CrimeSingFnDivider, {workerscript: workerScript})
- } else if (crime.includes("heist")) {
- if(enableCommitCrimeLog) {workerScript.scriptRef.log("Attempting to pull off a heist...");}
- return Object(_Crimes_js__WEBPACK_IMPORTED_MODULE_3__["commitHeistCrime"])(_Constants_js__WEBPACK_IMPORTED_MODULE_6__["CONSTANTS"].CrimeSingFnDivider, {workerscript: workerScript});
- } else {
- throw Object(_NetscriptEvaluator_js__WEBPACK_IMPORTED_MODULE_24__["makeRuntimeRejectMsg"])(workerScript, "Invalid crime passed into commitCrime(): " + crime);
+ const crime = Object(_Crimes_js__WEBPACK_IMPORTED_MODULE_3__["findCrime"])(crimeRoughName.toLowerCase());
+ if(crime == null) { // couldn't find crime
+ throw Object(_NetscriptEvaluator_js__WEBPACK_IMPORTED_MODULE_25__["makeRuntimeRejectMsg"])(workerScript, "Invalid crime passed into commitCrime(): " + crime);
}
+ if(workerScript.disableLogs.ALL == null && workerScript.disableLogs.commitCrime == null) {
+ workerScript.scriptRef.log("Attempting to commit crime: "+crime.name+"...");
+ }
+ return crime.commit(_Constants_js__WEBPACK_IMPORTED_MODULE_6__["CONSTANTS"].CrimeSingFnDivider, {workerscript: workerScript});
},
- getCrimeChance : function(crime) {
+ getCrimeChance : function(crimeRoughName) {
+ var ramCost = _Constants_js__WEBPACK_IMPORTED_MODULE_6__["CONSTANTS"].ScriptSingularityFn3RamCost;
+ if (_Player_js__WEBPACK_IMPORTED_MODULE_16__["Player"].bitNodeN !== 4) {ramCost *= 8;}
if (workerScript.checkingRam) {
- if (workerScript.loadedFns.getCrimeChance) {
- return 0;
- } else {
- workerScript.loadedFns.getCrimeChance = true;
- var ramCost = _Constants_js__WEBPACK_IMPORTED_MODULE_6__["CONSTANTS"].ScriptSingularityFn3RamCost;
- if (_Player_js__WEBPACK_IMPORTED_MODULE_15__["Player"].bitNodeN !== 4) {ramCost *= 8;}
- return ramCost;
- }
+ return updateStaticRam("getCrimeChance", ramCost);
}
- if (_Player_js__WEBPACK_IMPORTED_MODULE_15__["Player"].bitNodeN != 4) {
+ updateDynamicRam("getCrimeChance", ramCost);
+ if (_Player_js__WEBPACK_IMPORTED_MODULE_16__["Player"].bitNodeN != 4) {
if (!(hasSingularitySF && singularitySFLvl >= 3)) {
- throw Object(_NetscriptEvaluator_js__WEBPACK_IMPORTED_MODULE_24__["makeRuntimeRejectMsg"])(workerScript, "Cannot run getCrimeChance(). It is a Singularity Function and requires SourceFile-4 (level 3) to run.");
+ throw Object(_NetscriptEvaluator_js__WEBPACK_IMPORTED_MODULE_25__["makeRuntimeRejectMsg"])(workerScript, "Cannot run getCrimeChance(). It is a Singularity Function and requires SourceFile-4 (level 3) to run.");
return;
}
}
- crime = crime.toLowerCase();
- if (crime.includes("shoplift")) {
- return Object(_Crimes_js__WEBPACK_IMPORTED_MODULE_3__["determineCrimeChanceShoplift"])();
- } else if (crime.includes("rob") && crime.includes("store")) {
- return Object(_Crimes_js__WEBPACK_IMPORTED_MODULE_3__["determineCrimeChanceRobStore"])();
- } else if (crime.includes("mug")) {
- return Object(_Crimes_js__WEBPACK_IMPORTED_MODULE_3__["determineCrimeChanceMug"])();
- } else if (crime.includes("larceny")) {
- return Object(_Crimes_js__WEBPACK_IMPORTED_MODULE_3__["determineCrimeChanceLarceny"])();
- } else if (crime.includes("drugs")) {
- return Object(_Crimes_js__WEBPACK_IMPORTED_MODULE_3__["determineCrimeChanceDealDrugs"])();
- } else if (crime.includes("bond") && crime.includes("forge")) {
- return Object(_Crimes_js__WEBPACK_IMPORTED_MODULE_3__["determineCrimeChanceBondForgery"])();
- } else if (crime.includes("traffick") && crime.includes("arms")) {
- return Object(_Crimes_js__WEBPACK_IMPORTED_MODULE_3__["determineCrimeChanceTraffickArms"])();
- } else if (crime.includes("homicide")) {
- return Object(_Crimes_js__WEBPACK_IMPORTED_MODULE_3__["determineCrimeChanceHomicide"])();
- } else if (crime.includes("grand") && crime.includes("auto")) {
- return Object(_Crimes_js__WEBPACK_IMPORTED_MODULE_3__["determineCrimeChanceGrandTheftAuto"])();
- } else if (crime.includes("kidnap")) {
- return Object(_Crimes_js__WEBPACK_IMPORTED_MODULE_3__["determineCrimeChanceKidnap"])();
- } else if (crime.includes("assassinate")) {
- return Object(_Crimes_js__WEBPACK_IMPORTED_MODULE_3__["determineCrimeChanceAssassination"])();
- } else if (crime.includes("heist")) {
- return Object(_Crimes_js__WEBPACK_IMPORTED_MODULE_3__["determineCrimeChanceHeist"])();
- } else {
- throw Object(_NetscriptEvaluator_js__WEBPACK_IMPORTED_MODULE_24__["makeRuntimeRejectMsg"])(workerScript, "Invalid crime passed into getCrimeChance(): " + crime);
+ const crime = Object(_Crimes_js__WEBPACK_IMPORTED_MODULE_3__["findCrime"])(crimeRoughName.toLowerCase());
+ if(crime == null) {
+ throw Object(_NetscriptEvaluator_js__WEBPACK_IMPORTED_MODULE_25__["makeRuntimeRejectMsg"])(workerScript, "Invalid crime passed into getCrimeChance(): " + crime);
}
+
+ return crime.successRate();
},
getOwnedAugmentations : function(purchased=false) {
+ var ramCost = _Constants_js__WEBPACK_IMPORTED_MODULE_6__["CONSTANTS"].ScriptSingularityFn3RamCost;
+ if (_Player_js__WEBPACK_IMPORTED_MODULE_16__["Player"].bitNodeN !== 4) {ramCost *= 8;}
if (workerScript.checkingRam) {
- if (workerScript.loadedFns.getOwnedAugmentations) {
- return 0;
- } else {
- workerScript.loadedFns.getOwnedAugmentations = true;
- var ramCost = _Constants_js__WEBPACK_IMPORTED_MODULE_6__["CONSTANTS"].ScriptSingularityFn3RamCost;
- if (_Player_js__WEBPACK_IMPORTED_MODULE_15__["Player"].bitNodeN !== 4) {ramCost *= 8;}
- return ramCost;
- }
+ return updateStaticRam("getOwnedAugmentations", ramCost);
}
- if (_Player_js__WEBPACK_IMPORTED_MODULE_15__["Player"].bitNodeN != 4) {
+ updateDynamicRam("getOwnedAugmentations", ramCost);
+ if (_Player_js__WEBPACK_IMPORTED_MODULE_16__["Player"].bitNodeN != 4) {
if (!(hasSingularitySF && singularitySFLvl >= 3)) {
- throw Object(_NetscriptEvaluator_js__WEBPACK_IMPORTED_MODULE_24__["makeRuntimeRejectMsg"])(workerScript, "Cannot run getOwnedAugmentations(). It is a Singularity Function and requires SourceFile-4 (level 3) to run.");
+ throw Object(_NetscriptEvaluator_js__WEBPACK_IMPORTED_MODULE_25__["makeRuntimeRejectMsg"])(workerScript, "Cannot run getOwnedAugmentations(). It is a Singularity Function and requires SourceFile-4 (level 3) to run.");
return [];
}
}
var res = [];
- for (var i = 0; i < _Player_js__WEBPACK_IMPORTED_MODULE_15__["Player"].augmentations.length; ++i) {
- res.push(_Player_js__WEBPACK_IMPORTED_MODULE_15__["Player"].augmentations[i].name);
+ for (var i = 0; i < _Player_js__WEBPACK_IMPORTED_MODULE_16__["Player"].augmentations.length; ++i) {
+ res.push(_Player_js__WEBPACK_IMPORTED_MODULE_16__["Player"].augmentations[i].name);
}
if (purchased) {
- for (var i = 0; i < _Player_js__WEBPACK_IMPORTED_MODULE_15__["Player"].queuedAugmentations.length; ++i) {
- res.push(_Player_js__WEBPACK_IMPORTED_MODULE_15__["Player"].queuedAugmentations[i].name);
+ for (var i = 0; i < _Player_js__WEBPACK_IMPORTED_MODULE_16__["Player"].queuedAugmentations.length; ++i) {
+ res.push(_Player_js__WEBPACK_IMPORTED_MODULE_16__["Player"].queuedAugmentations[i].name);
}
}
return res;
},
getAugmentationsFromFaction : function(facname) {
+ var ramCost = _Constants_js__WEBPACK_IMPORTED_MODULE_6__["CONSTANTS"].ScriptSingularityFn3RamCost;
+ if (_Player_js__WEBPACK_IMPORTED_MODULE_16__["Player"].bitNodeN !== 4) {ramCost *= 8;}
if (workerScript.checkingRam) {
- if (workerScript.loadedFns.getAugmentationsFromFaction) {
- return 0;
- } else {
- workerScript.loadedFns.getAugmentationsFromFaction = true;
- var ramCost = _Constants_js__WEBPACK_IMPORTED_MODULE_6__["CONSTANTS"].ScriptSingularityFn3RamCost;
- if (_Player_js__WEBPACK_IMPORTED_MODULE_15__["Player"].bitNodeN !== 4) {ramCost *= 8;}
- return ramCost;
- }
+ return updateStaticRam("getAugmentationsFromFaction", ramCost);
}
- if (_Player_js__WEBPACK_IMPORTED_MODULE_15__["Player"].bitNodeN != 4) {
+ updateDynamicRam("getAugmentationsFromFaction", ramCost);
+ if (_Player_js__WEBPACK_IMPORTED_MODULE_16__["Player"].bitNodeN != 4) {
if (!(hasSingularitySF && singularitySFLvl >= 3)) {
- throw Object(_NetscriptEvaluator_js__WEBPACK_IMPORTED_MODULE_24__["makeRuntimeRejectMsg"])(workerScript, "Cannot run getAugmentationsFromFaction(). It is a Singularity Function and requires SourceFile-4 (level 3) to run.");
+ throw Object(_NetscriptEvaluator_js__WEBPACK_IMPORTED_MODULE_25__["makeRuntimeRejectMsg"])(workerScript, "Cannot run getAugmentationsFromFaction(). It is a Singularity Function and requires SourceFile-4 (level 3) to run.");
return [];
}
}
- if (!Object(_Faction_js__WEBPACK_IMPORTED_MODULE_10__["factionExists"])(facname)) {
+ if (!Object(_Faction_js__WEBPACK_IMPORTED_MODULE_11__["factionExists"])(facname)) {
workerScript.scriptRef.log("ERROR: getAugmentationsFromFaction() failed. Invalid faction name passed in (this is case-sensitive): " + facname);
return [];
}
- var fac = _Faction_js__WEBPACK_IMPORTED_MODULE_10__["Factions"][facname];
+ var fac = _Faction_js__WEBPACK_IMPORTED_MODULE_11__["Factions"][facname];
var res = [];
for (var i = 0; i < fac.augmentations.length; ++i) {
res.push(fac.augmentations[i]);
@@ -33796,19 +33714,15 @@ function NetscriptFunctions(workerScript) {
return res;
},
getAugmentationCost : function(name) {
+ var ramCost = _Constants_js__WEBPACK_IMPORTED_MODULE_6__["CONSTANTS"].ScriptSingularityFn3RamCost;
+ if (_Player_js__WEBPACK_IMPORTED_MODULE_16__["Player"].bitNodeN !== 4) {ramCost *= 8;}
if (workerScript.checkingRam) {
- if (workerScript.loadedFns.getAugmentationCost) {
- return 0;
- } else {
- workerScript.loadedFns.getAugmentationCost = true;
- var ramCost = _Constants_js__WEBPACK_IMPORTED_MODULE_6__["CONSTANTS"].ScriptSingularityFn3RamCost;
- if (_Player_js__WEBPACK_IMPORTED_MODULE_15__["Player"].bitNodeN !== 4) {ramCost *= 8;}
- return ramCost;
- }
+ return updateStaticRam("getAugmentationCost", ramCost);
}
- if (_Player_js__WEBPACK_IMPORTED_MODULE_15__["Player"].bitNodeN != 4) {
+ updateDynamicRam("getAugmentationCost", ramCost);
+ if (_Player_js__WEBPACK_IMPORTED_MODULE_16__["Player"].bitNodeN != 4) {
if (!(hasSingularitySF && singularitySFLvl >= 3)) {
- throw Object(_NetscriptEvaluator_js__WEBPACK_IMPORTED_MODULE_24__["makeRuntimeRejectMsg"])(workerScript, "Cannot run getAugmentationCost(). It is a Singularity Function and requires SourceFile-4 (level 3) to run.");
+ throw Object(_NetscriptEvaluator_js__WEBPACK_IMPORTED_MODULE_25__["makeRuntimeRejectMsg"])(workerScript, "Cannot run getAugmentationCost(). It is a Singularity Function and requires SourceFile-4 (level 3) to run.");
return false;
}
}
@@ -33822,25 +33736,21 @@ function NetscriptFunctions(workerScript) {
return [aug.baseRepRequirement, aug.baseCost];
},
purchaseAugmentation : function(faction, name) {
+ var ramCost = _Constants_js__WEBPACK_IMPORTED_MODULE_6__["CONSTANTS"].ScriptSingularityFn3RamCost;
+ if (_Player_js__WEBPACK_IMPORTED_MODULE_16__["Player"].bitNodeN !== 4) {ramCost *= 8;}
if (workerScript.checkingRam) {
- if (workerScript.loadedFns.purchaseAugmentation) {
- return 0;
- } else {
- workerScript.loadedFns.purchaseAugmentation = true;
- var ramCost = _Constants_js__WEBPACK_IMPORTED_MODULE_6__["CONSTANTS"].ScriptSingularityFn3RamCost;
- if (_Player_js__WEBPACK_IMPORTED_MODULE_15__["Player"].bitNodeN !== 4) {ramCost *= 8;}
- return ramCost;
- }
+ return updateStaticRam("purchaseAugmentation", ramCost);
}
- if (_Player_js__WEBPACK_IMPORTED_MODULE_15__["Player"].bitNodeN != 4) {
+ updateDynamicRam("purchaseAugmentation", ramCost);
+ if (_Player_js__WEBPACK_IMPORTED_MODULE_16__["Player"].bitNodeN != 4) {
if (!(hasSingularitySF && singularitySFLvl >= 3)) {
- throw Object(_NetscriptEvaluator_js__WEBPACK_IMPORTED_MODULE_24__["makeRuntimeRejectMsg"])(workerScript, "Cannot run purchaseAugmentation(). It is a Singularity Function and requires SourceFile-4 (level 3) to run.");
+ throw Object(_NetscriptEvaluator_js__WEBPACK_IMPORTED_MODULE_25__["makeRuntimeRejectMsg"])(workerScript, "Cannot run purchaseAugmentation(). It is a Singularity Function and requires SourceFile-4 (level 3) to run.");
return false;
}
}
- var fac = _Faction_js__WEBPACK_IMPORTED_MODULE_10__["Factions"][faction];
- if (fac == null || !(fac instanceof _Faction_js__WEBPACK_IMPORTED_MODULE_10__["Faction"])) {
+ var fac = _Faction_js__WEBPACK_IMPORTED_MODULE_11__["Factions"][faction];
+ if (fac == null || !(fac instanceof _Faction_js__WEBPACK_IMPORTED_MODULE_11__["Faction"])) {
workerScript.scriptRef.log("ERROR: purchaseAugmentation() failed because of invalid faction name: " + faction);
return false;
}
@@ -33862,14 +33772,14 @@ function NetscriptFunctions(workerScript) {
}
if (!isNeuroflux) {
- for (var j = 0; j < _Player_js__WEBPACK_IMPORTED_MODULE_15__["Player"].queuedAugmentations.length; ++j) {
- if (_Player_js__WEBPACK_IMPORTED_MODULE_15__["Player"].queuedAugmentations[j].name === aug.name) {
+ for (var j = 0; j < _Player_js__WEBPACK_IMPORTED_MODULE_16__["Player"].queuedAugmentations.length; ++j) {
+ if (_Player_js__WEBPACK_IMPORTED_MODULE_16__["Player"].queuedAugmentations[j].name === aug.name) {
workerScript.scriptRef.log("ERROR: purchaseAugmentation() failed because you already have " + name);
return false;
}
}
- for (var j = 0; j < _Player_js__WEBPACK_IMPORTED_MODULE_15__["Player"].augmentations.length; ++j) {
- if (_Player_js__WEBPACK_IMPORTED_MODULE_15__["Player"].augmentations[j].name === aug.name) {
+ for (var j = 0; j < _Player_js__WEBPACK_IMPORTED_MODULE_16__["Player"].augmentations.length; ++j) {
+ if (_Player_js__WEBPACK_IMPORTED_MODULE_16__["Player"].augmentations[j].name === aug.name) {
workerScript.scriptRef.log("ERROR: purchaseAugmentation() failed because you already have " + name);
return false;
}
@@ -33881,38 +33791,34 @@ function NetscriptFunctions(workerScript) {
return false;
}
- var res = Object(_Faction_js__WEBPACK_IMPORTED_MODULE_10__["purchaseAugmentation"])(aug, fac, true);
+ var res = Object(_Faction_js__WEBPACK_IMPORTED_MODULE_11__["purchaseAugmentation"])(aug, fac, true);
workerScript.scriptRef.log(res);
- if (Object(_utils_StringHelperFunctions_js__WEBPACK_IMPORTED_MODULE_31__["isString"])(res) && res.startsWith("You purchased")) {
- _Player_js__WEBPACK_IMPORTED_MODULE_15__["Player"].gainIntelligenceExp(_Constants_js__WEBPACK_IMPORTED_MODULE_6__["CONSTANTS"].IntelligenceSingFnBaseExpGain);
+ if (Object(_utils_StringHelperFunctions_js__WEBPACK_IMPORTED_MODULE_32__["isString"])(res) && res.startsWith("You purchased")) {
+ _Player_js__WEBPACK_IMPORTED_MODULE_16__["Player"].gainIntelligenceExp(_Constants_js__WEBPACK_IMPORTED_MODULE_6__["CONSTANTS"].IntelligenceSingFnBaseExpGain);
return true;
} else {
return false;
}
},
installAugmentations : function(cbScript) {
+ var ramCost = _Constants_js__WEBPACK_IMPORTED_MODULE_6__["CONSTANTS"].ScriptSingularityFn3RamCost;
+ if (_Player_js__WEBPACK_IMPORTED_MODULE_16__["Player"].bitNodeN !== 4) {ramCost *= 8;}
if (workerScript.checkingRam) {
- if (workerScript.loadedFns.installAugmentations) {
- return 0;
- } else {
- workerScript.loadedFns.installAugmentations = true;
- var ramCost = _Constants_js__WEBPACK_IMPORTED_MODULE_6__["CONSTANTS"].ScriptSingularityFn3RamCost;
- if (_Player_js__WEBPACK_IMPORTED_MODULE_15__["Player"].bitNodeN !== 4) {ramCost *= 8;}
- return ramCost;
- }
+ return updateStaticRam("installAugmentations", ramCost);
}
- if (_Player_js__WEBPACK_IMPORTED_MODULE_15__["Player"].bitNodeN != 4) {
+ updateDynamicRam("installAugmentations", ramCost);
+ if (_Player_js__WEBPACK_IMPORTED_MODULE_16__["Player"].bitNodeN != 4) {
if (!(hasSingularitySF && singularitySFLvl >= 3)) {
- throw Object(_NetscriptEvaluator_js__WEBPACK_IMPORTED_MODULE_24__["makeRuntimeRejectMsg"])(workerScript, "Cannot run installAugmentations(). It is a Singularity Function and requires SourceFile-4 (level 3) to run.");
+ throw Object(_NetscriptEvaluator_js__WEBPACK_IMPORTED_MODULE_25__["makeRuntimeRejectMsg"])(workerScript, "Cannot run installAugmentations(). It is a Singularity Function and requires SourceFile-4 (level 3) to run.");
return false;
}
}
- if (_Player_js__WEBPACK_IMPORTED_MODULE_15__["Player"].queuedAugmentations.length === 0) {
+ if (_Player_js__WEBPACK_IMPORTED_MODULE_16__["Player"].queuedAugmentations.length === 0) {
workerScript.scriptRef.log("ERROR: installAugmentations() failed because you do not have any Augmentations to be installed");
return false;
}
- _Player_js__WEBPACK_IMPORTED_MODULE_15__["Player"].gainIntelligenceExp(_Constants_js__WEBPACK_IMPORTED_MODULE_6__["CONSTANTS"].IntelligenceSingFnBaseExpGain);
+ _Player_js__WEBPACK_IMPORTED_MODULE_16__["Player"].gainIntelligenceExp(_Constants_js__WEBPACK_IMPORTED_MODULE_6__["CONSTANTS"].IntelligenceSingFnBaseExpGain);
workerScript.scriptRef.log("Installing Augmentations. This will cause this script to be killed");
Object(_Augmentations_js__WEBPACK_IMPORTED_MODULE_1__["installAugmentations"])(cbScript);
return true;
@@ -33921,157 +33827,293 @@ function NetscriptFunctions(workerScript) {
//Bladeburner API
bladeburner : {
isContractName : function(name) {
- if (_Player_js__WEBPACK_IMPORTED_MODULE_15__["Player"].bladeburner instanceof _Bladeburner_js__WEBPACK_IMPORTED_MODULE_4__["Bladeburner"] && (_Player_js__WEBPACK_IMPORTED_MODULE_15__["Player"].bitNodeN === 7 || hasBladeburner2079SF)) {
-
+ if (workerScript.checkingRam) {
+ return updateStaticRam("isContractName", _Constants_js__WEBPACK_IMPORTED_MODULE_6__["CONSTANTS"].ScriptBladeburnerApiBaseRamCost / 10);
}
- throw Object(_NetscriptEvaluator_js__WEBPACK_IMPORTED_MODULE_24__["makeRuntimeRejectMsg"])(workerScript, "isContractName() failed because you do not currently have access to the Bladeburner API. This is either because you are not currently employed " +
+ updateDynamicRam("isContractName", _Constants_js__WEBPACK_IMPORTED_MODULE_6__["CONSTANTS"].ScriptBladeburnerApiBaseRamCost / 10);
+ if (_Player_js__WEBPACK_IMPORTED_MODULE_16__["Player"].bladeburner instanceof _Bladeburner_js__WEBPACK_IMPORTED_MODULE_4__["Bladeburner"] && (_Player_js__WEBPACK_IMPORTED_MODULE_16__["Player"].bitNodeN === 7 || hasBladeburner2079SF)) {
+ return _Player_js__WEBPACK_IMPORTED_MODULE_16__["Player"].bladeburner.isContractNameNetscriptFn(name);
+ }
+ throw Object(_NetscriptEvaluator_js__WEBPACK_IMPORTED_MODULE_25__["makeRuntimeRejectMsg"])(workerScript, "isContractName() failed because you do not currently have access to the Bladeburner API. This is either because you are not currently employed " +
"at the Bladeburner division or because you do not have Source-File 7");
},
isOperationName : function(name) {
- if (_Player_js__WEBPACK_IMPORTED_MODULE_15__["Player"].bladeburner instanceof _Bladeburner_js__WEBPACK_IMPORTED_MODULE_4__["Bladeburner"] && (_Player_js__WEBPACK_IMPORTED_MODULE_15__["Player"].bitNodeN === 7 || hasBladeburner2079SF)) {
-
+ if (workerScript.checkingRam) {
+ return updateStaticRam("isOperationName", _Constants_js__WEBPACK_IMPORTED_MODULE_6__["CONSTANTS"].ScriptBladeburnerApiBaseRamCost / 10);
}
- throw Object(_NetscriptEvaluator_js__WEBPACK_IMPORTED_MODULE_24__["makeRuntimeRejectMsg"])(workerScript, "isContractName() failed because you do not currently have access to the Bladeburner API. This is either because you are not currently employed " +
+ updateDynamicRam("isOperationName", _Constants_js__WEBPACK_IMPORTED_MODULE_6__["CONSTANTS"].ScriptBladeburnerApiBaseRamCost / 10);
+ if (_Player_js__WEBPACK_IMPORTED_MODULE_16__["Player"].bladeburner instanceof _Bladeburner_js__WEBPACK_IMPORTED_MODULE_4__["Bladeburner"] && (_Player_js__WEBPACK_IMPORTED_MODULE_16__["Player"].bitNodeN === 7 || hasBladeburner2079SF)) {
+ return _Player_js__WEBPACK_IMPORTED_MODULE_16__["Player"].bladeburner.isOperationNameNetscriptFn(name);
+ }
+ throw Object(_NetscriptEvaluator_js__WEBPACK_IMPORTED_MODULE_25__["makeRuntimeRejectMsg"])(workerScript, "isOperationName() failed because you do not currently have access to the Bladeburner API. This is either because you are not currently employed " +
"at the Bladeburner division or because you do not have Source-File 7");
},
isBlackOpName : function(name) {
- if (_Player_js__WEBPACK_IMPORTED_MODULE_15__["Player"].bladeburner instanceof _Bladeburner_js__WEBPACK_IMPORTED_MODULE_4__["Bladeburner"] && (_Player_js__WEBPACK_IMPORTED_MODULE_15__["Player"].bitNodeN === 7 || hasBladeburner2079SF)) {
-
+ if (workerScript.checkingRam) {
+ return updateStaticRam("isBlackOpName", _Constants_js__WEBPACK_IMPORTED_MODULE_6__["CONSTANTS"].ScriptBladeburnerApiBaseRamCost / 10);
}
- throw Object(_NetscriptEvaluator_js__WEBPACK_IMPORTED_MODULE_24__["makeRuntimeRejectMsg"])(workerScript, "isContractName() failed because you do not currently have access to the Bladeburner API. This is either because you are not currently employed " +
+ updateDynamicRam("isBlackOpName", _Constants_js__WEBPACK_IMPORTED_MODULE_6__["CONSTANTS"].ScriptBladeburnerApiBaseRamCost / 10);
+ if (_Player_js__WEBPACK_IMPORTED_MODULE_16__["Player"].bladeburner instanceof _Bladeburner_js__WEBPACK_IMPORTED_MODULE_4__["Bladeburner"] && (_Player_js__WEBPACK_IMPORTED_MODULE_16__["Player"].bitNodeN === 7 || hasBladeburner2079SF)) {
+ return _Player_js__WEBPACK_IMPORTED_MODULE_16__["Player"].bladeburner.isBlackOpNameNetscriptFn(name);
+ }
+ throw Object(_NetscriptEvaluator_js__WEBPACK_IMPORTED_MODULE_25__["makeRuntimeRejectMsg"])(workerScript, "isBlackOpName() failed because you do not currently have access to the Bladeburner API. This is either because you are not currently employed " +
"at the Bladeburner division or because you do not have Source-File 7");
},
isGeneralActionName : function(name) {
- if (_Player_js__WEBPACK_IMPORTED_MODULE_15__["Player"].bladeburner instanceof _Bladeburner_js__WEBPACK_IMPORTED_MODULE_4__["Bladeburner"] && (_Player_js__WEBPACK_IMPORTED_MODULE_15__["Player"].bitNodeN === 7 || hasBladeburner2079SF)) {
-
+ if (workerScript.checkingRam) {
+ return updateStaticRam("isGeneralActionName", _Constants_js__WEBPACK_IMPORTED_MODULE_6__["CONSTANTS"].ScriptBladeburnerApiBaseRamCost / 10);
}
- throw Object(_NetscriptEvaluator_js__WEBPACK_IMPORTED_MODULE_24__["makeRuntimeRejectMsg"])(workerScript, "isContractName() failed because you do not currently have access to the Bladeburner API. This is either because you are not currently employed " +
+ updateDynamicRam("isGeneralActionName", _Constants_js__WEBPACK_IMPORTED_MODULE_6__["CONSTANTS"].ScriptBladeburnerApiBaseRamCost / 10);
+ if (_Player_js__WEBPACK_IMPORTED_MODULE_16__["Player"].bladeburner instanceof _Bladeburner_js__WEBPACK_IMPORTED_MODULE_4__["Bladeburner"] && (_Player_js__WEBPACK_IMPORTED_MODULE_16__["Player"].bitNodeN === 7 || hasBladeburner2079SF)) {
+ return _Player_js__WEBPACK_IMPORTED_MODULE_16__["Player"].bladeburner.isGeneralActionNameNetscriptFn(name);
+ }
+ throw Object(_NetscriptEvaluator_js__WEBPACK_IMPORTED_MODULE_25__["makeRuntimeRejectMsg"])(workerScript, "isGeneralActionName() failed because you do not currently have access to the Bladeburner API. This is either because you are not currently employed " +
"at the Bladeburner division or because you do not have Source-File 7");
},
isSkillName : function(name) {
- if (_Player_js__WEBPACK_IMPORTED_MODULE_15__["Player"].bladeburner instanceof _Bladeburner_js__WEBPACK_IMPORTED_MODULE_4__["Bladeburner"] && (_Player_js__WEBPACK_IMPORTED_MODULE_15__["Player"].bitNodeN === 7 || hasBladeburner2079SF)) {
-
+ if (workerScript.checkingRam) {
+ return updateStaticRam("isSkillName", _Constants_js__WEBPACK_IMPORTED_MODULE_6__["CONSTANTS"].ScriptBladeburnerApiBaseRamCost / 10);
}
- throw Object(_NetscriptEvaluator_js__WEBPACK_IMPORTED_MODULE_24__["makeRuntimeRejectMsg"])(workerScript, "isContractName() failed because you do not currently have access to the Bladeburner API. This is either because you are not currently employed " +
+ updateDynamicRam("isSkillName", _Constants_js__WEBPACK_IMPORTED_MODULE_6__["CONSTANTS"].ScriptBladeburnerApiBaseRamCost / 10);
+ if (_Player_js__WEBPACK_IMPORTED_MODULE_16__["Player"].bladeburner instanceof _Bladeburner_js__WEBPACK_IMPORTED_MODULE_4__["Bladeburner"] && (_Player_js__WEBPACK_IMPORTED_MODULE_16__["Player"].bitNodeN === 7 || hasBladeburner2079SF)) {
+ return _Player_js__WEBPACK_IMPORTED_MODULE_16__["Player"].bladeburner.isSkillNameNetscriptFn(name);
+ }
+ throw Object(_NetscriptEvaluator_js__WEBPACK_IMPORTED_MODULE_25__["makeRuntimeRejectMsg"])(workerScript, "isSkillName() failed because you do not currently have access to the Bladeburner API. This is either because you are not currently employed " +
"at the Bladeburner division or because you do not have Source-File 7");
},
- startAction : function(type, name) {
- if (_Player_js__WEBPACK_IMPORTED_MODULE_15__["Player"].bladeburner instanceof _Bladeburner_js__WEBPACK_IMPORTED_MODULE_4__["Bladeburner"] && (_Player_js__WEBPACK_IMPORTED_MODULE_15__["Player"].bitNodeN === 7 || hasBladeburner2079SF)) {
-
+ startAction : function(type="", name="") {
+ if (workerScript.checkingRam) {
+ return updateStaticRam("startAction", _Constants_js__WEBPACK_IMPORTED_MODULE_6__["CONSTANTS"].ScriptBladeburnerApiBaseRamCost);
}
- throw Object(_NetscriptEvaluator_js__WEBPACK_IMPORTED_MODULE_24__["makeRuntimeRejectMsg"])(workerScript, "isContractName() failed because you do not currently have access to the Bladeburner API. This is either because you are not currently employed " +
+ updateDynamicRam("startAction", _Constants_js__WEBPACK_IMPORTED_MODULE_6__["CONSTANTS"].ScriptBladeburnerApiBaseRamCost);
+ if (_Player_js__WEBPACK_IMPORTED_MODULE_16__["Player"].bladeburner instanceof _Bladeburner_js__WEBPACK_IMPORTED_MODULE_4__["Bladeburner"] && (_Player_js__WEBPACK_IMPORTED_MODULE_16__["Player"].bitNodeN === 7 || hasBladeburner2079SF)) {
+ try {
+ return _Player_js__WEBPACK_IMPORTED_MODULE_16__["Player"].bladeburner.startActionNetscriptFn(type, name, workerScript);
+ } catch(e) {
+ throw Object(_NetscriptEvaluator_js__WEBPACK_IMPORTED_MODULE_25__["makeRuntimeRejectMsg"])(workerScript, "Bladeburner.startAction() failed with exception: " + e);
+ }
+ }
+ throw Object(_NetscriptEvaluator_js__WEBPACK_IMPORTED_MODULE_25__["makeRuntimeRejectMsg"])(workerScript, "startAction() failed because you do not currently have access to the Bladeburner API. This is either because you are not currently employed " +
"at the Bladeburner division or because you do not have Source-File 7");
},
stopAction : function() {
- if (_Player_js__WEBPACK_IMPORTED_MODULE_15__["Player"].bladeburner instanceof _Bladeburner_js__WEBPACK_IMPORTED_MODULE_4__["Bladeburner"] && (_Player_js__WEBPACK_IMPORTED_MODULE_15__["Player"].bitNodeN === 7 || hasBladeburner2079SF)) {
-
+ if (workerScript.checkingRam) {
+ return updateStaticRam("stopAction", _Constants_js__WEBPACK_IMPORTED_MODULE_6__["CONSTANTS"].ScriptBladeburnerApiBaseRamCost / 2);
}
- throw Object(_NetscriptEvaluator_js__WEBPACK_IMPORTED_MODULE_24__["makeRuntimeRejectMsg"])(workerScript, "isContractName() failed because you do not currently have access to the Bladeburner API. This is either because you are not currently employed " +
+ updateDynamicRam("stopAction", _Constants_js__WEBPACK_IMPORTED_MODULE_6__["CONSTANTS"].ScriptBladeburnerApiBaseRamCost / 2);
+ if (_Player_js__WEBPACK_IMPORTED_MODULE_16__["Player"].bladeburner instanceof _Bladeburner_js__WEBPACK_IMPORTED_MODULE_4__["Bladeburner"] && (_Player_js__WEBPACK_IMPORTED_MODULE_16__["Player"].bitNodeN === 7 || hasBladeburner2079SF)) {
+ return _Player_js__WEBPACK_IMPORTED_MODULE_16__["Player"].bladeburner.resetAction();
+ }
+ throw Object(_NetscriptEvaluator_js__WEBPACK_IMPORTED_MODULE_25__["makeRuntimeRejectMsg"])(workerScript, "stopAction() failed because you do not currently have access to the Bladeburner API. This is either because you are not currently employed " +
"at the Bladeburner division or because you do not have Source-File 7");
},
getActionTime : function(type="", name="") {
- if (_Player_js__WEBPACK_IMPORTED_MODULE_15__["Player"].bladeburner instanceof _Bladeburner_js__WEBPACK_IMPORTED_MODULE_4__["Bladeburner"] && (_Player_js__WEBPACK_IMPORTED_MODULE_15__["Player"].bitNodeN === 7 || hasBladeburner2079SF)) {
-
+ if (workerScript.checkingRam) {
+ return updateStaticRam("getActionTime", _Constants_js__WEBPACK_IMPORTED_MODULE_6__["CONSTANTS"].ScriptBladeburnerApiBaseRamCost);
}
- throw Object(_NetscriptEvaluator_js__WEBPACK_IMPORTED_MODULE_24__["makeRuntimeRejectMsg"])(workerScript, "isContractName() failed because you do not currently have access to the Bladeburner API. This is either because you are not currently employed " +
+ updateDynamicRam("getActionTime", _Constants_js__WEBPACK_IMPORTED_MODULE_6__["CONSTANTS"].ScriptBladeburnerApiBaseRamCost);
+ if (_Player_js__WEBPACK_IMPORTED_MODULE_16__["Player"].bladeburner instanceof _Bladeburner_js__WEBPACK_IMPORTED_MODULE_4__["Bladeburner"] && (_Player_js__WEBPACK_IMPORTED_MODULE_16__["Player"].bitNodeN === 7 || hasBladeburner2079SF)) {
+ try {
+ return _Player_js__WEBPACK_IMPORTED_MODULE_16__["Player"].bladeburner.getActionTimeNetscriptFn(type, name, workerScript);
+ } catch(e) {
+ throw Object(_NetscriptEvaluator_js__WEBPACK_IMPORTED_MODULE_25__["makeRuntimeRejectMsg"])(workerScript, "Bladeburner.getActionTime() failed with exception: " + e);
+ }
+ }
+ throw Object(_NetscriptEvaluator_js__WEBPACK_IMPORTED_MODULE_25__["makeRuntimeRejectMsg"])(workerScript, "getActionTime() failed because you do not currently have access to the Bladeburner API. This is either because you are not currently employed " +
"at the Bladeburner division or because you do not have Source-File 7");
},
getActionEstimatedSuccessChance : function(type="", name="") {
- if (_Player_js__WEBPACK_IMPORTED_MODULE_15__["Player"].bladeburner instanceof _Bladeburner_js__WEBPACK_IMPORTED_MODULE_4__["Bladeburner"] && (_Player_js__WEBPACK_IMPORTED_MODULE_15__["Player"].bitNodeN === 7 || hasBladeburner2079SF)) {
-
+ if (workerScript.checkingRam) {
+ return updateStaticRam("getActionEstimatedSuccessChance", _Constants_js__WEBPACK_IMPORTED_MODULE_6__["CONSTANTS"].ScriptBladeburnerApiBaseRamCost);
}
- throw Object(_NetscriptEvaluator_js__WEBPACK_IMPORTED_MODULE_24__["makeRuntimeRejectMsg"])(workerScript, "isContractName() failed because you do not currently have access to the Bladeburner API. This is either because you are not currently employed " +
+ updateDynamicRam("getActionEstimatedSuccessChance", _Constants_js__WEBPACK_IMPORTED_MODULE_6__["CONSTANTS"].ScriptBladeburnerApiBaseRamCost);
+ if (_Player_js__WEBPACK_IMPORTED_MODULE_16__["Player"].bladeburner instanceof _Bladeburner_js__WEBPACK_IMPORTED_MODULE_4__["Bladeburner"] && (_Player_js__WEBPACK_IMPORTED_MODULE_16__["Player"].bitNodeN === 7 || hasBladeburner2079SF)) {
+ try {
+ return _Player_js__WEBPACK_IMPORTED_MODULE_16__["Player"].bladeburner.getActionEstimatedSuccessChanceNetscriptFn(type, name, workerScript);
+ } catch(e) {
+ throw Object(_NetscriptEvaluator_js__WEBPACK_IMPORTED_MODULE_25__["makeRuntimeRejectMsg"])(workerScript, "Bladeburner.getActionEstimatedSuccessChance() failed with exception: " + e);
+ }
+ }
+ throw Object(_NetscriptEvaluator_js__WEBPACK_IMPORTED_MODULE_25__["makeRuntimeRejectMsg"])(workerScript, "getActionEstimatedSuccessChance() failed because you do not currently have access to the Bladeburner API. This is either because you are not currently employed " +
"at the Bladeburner division or because you do not have Source-File 7");
},
getActionCountRemaining : function(type="", name="") {
- if (_Player_js__WEBPACK_IMPORTED_MODULE_15__["Player"].bladeburner instanceof _Bladeburner_js__WEBPACK_IMPORTED_MODULE_4__["Bladeburner"] && (_Player_js__WEBPACK_IMPORTED_MODULE_15__["Player"].bitNodeN === 7 || hasBladeburner2079SF)) {
-
+ if (workerScript.checkingRam) {
+ return updateStaticRam("getActionCountRemaining", _Constants_js__WEBPACK_IMPORTED_MODULE_6__["CONSTANTS"].ScriptBladeburnerApiBaseRamCost);
}
- throw Object(_NetscriptEvaluator_js__WEBPACK_IMPORTED_MODULE_24__["makeRuntimeRejectMsg"])(workerScript, "isContractName() failed because you do not currently have access to the Bladeburner API. This is either because you are not currently employed " +
+ updateDynamicRam("getActionCountRemaining", _Constants_js__WEBPACK_IMPORTED_MODULE_6__["CONSTANTS"].ScriptBladeburnerApiBaseRamCost);
+ if (_Player_js__WEBPACK_IMPORTED_MODULE_16__["Player"].bladeburner instanceof _Bladeburner_js__WEBPACK_IMPORTED_MODULE_4__["Bladeburner"] && (_Player_js__WEBPACK_IMPORTED_MODULE_16__["Player"].bitNodeN === 7 || hasBladeburner2079SF)) {
+ try {
+ return _Player_js__WEBPACK_IMPORTED_MODULE_16__["Player"].bladeburner.getActionCountRemainingNetscriptFn(type, name, workerScript);
+ } catch(e) {
+ throw Object(_NetscriptEvaluator_js__WEBPACK_IMPORTED_MODULE_25__["makeRuntimeRejectMsg"])(workerScript, "Bladeburner.getActionCountRemaining() failed with exception: " + e);
+ }
+ }
+ throw Object(_NetscriptEvaluator_js__WEBPACK_IMPORTED_MODULE_25__["makeRuntimeRejectMsg"])(workerScript, "getActionCountRemaining() failed because you do not currently have access to the Bladeburner API. This is either because you are not currently employed " +
"at the Bladeburner division or because you do not have Source-File 7");
},
getRank : function() {
- if (_Player_js__WEBPACK_IMPORTED_MODULE_15__["Player"].bladeburner instanceof _Bladeburner_js__WEBPACK_IMPORTED_MODULE_4__["Bladeburner"] && (_Player_js__WEBPACK_IMPORTED_MODULE_15__["Player"].bitNodeN === 7 || hasBladeburner2079SF)) {
-
+ if (workerScript.checkingRam) {
+ return updateStaticRam("getRank", _Constants_js__WEBPACK_IMPORTED_MODULE_6__["CONSTANTS"].ScriptBladeburnerApiBaseRamCost);
}
- throw Object(_NetscriptEvaluator_js__WEBPACK_IMPORTED_MODULE_24__["makeRuntimeRejectMsg"])(workerScript, "isContractName() failed because you do not currently have access to the Bladeburner API. This is either because you are not currently employed " +
+ updateDynamicRam("getRank", _Constants_js__WEBPACK_IMPORTED_MODULE_6__["CONSTANTS"].ScriptBladeburnerApiBaseRamCost);
+ if (_Player_js__WEBPACK_IMPORTED_MODULE_16__["Player"].bladeburner instanceof _Bladeburner_js__WEBPACK_IMPORTED_MODULE_4__["Bladeburner"] && (_Player_js__WEBPACK_IMPORTED_MODULE_16__["Player"].bitNodeN === 7 || hasBladeburner2079SF)) {
+ return _Player_js__WEBPACK_IMPORTED_MODULE_16__["Player"].bladeburner.rank;
+ }
+ throw Object(_NetscriptEvaluator_js__WEBPACK_IMPORTED_MODULE_25__["makeRuntimeRejectMsg"])(workerScript, "getRank() failed because you do not currently have access to the Bladeburner API. This is either because you are not currently employed " +
"at the Bladeburner division or because you do not have Source-File 7");
},
getSkillPoints : function() {
- if (_Player_js__WEBPACK_IMPORTED_MODULE_15__["Player"].bladeburner instanceof _Bladeburner_js__WEBPACK_IMPORTED_MODULE_4__["Bladeburner"] && (_Player_js__WEBPACK_IMPORTED_MODULE_15__["Player"].bitNodeN === 7 || hasBladeburner2079SF)) {
-
+ if (workerScript.checkingRam) {
+ return updateStaticRam("getSkillPoints", _Constants_js__WEBPACK_IMPORTED_MODULE_6__["CONSTANTS"].ScriptBladeburnerApiBaseRamCost);
}
- throw Object(_NetscriptEvaluator_js__WEBPACK_IMPORTED_MODULE_24__["makeRuntimeRejectMsg"])(workerScript, "isContractName() failed because you do not currently have access to the Bladeburner API. This is either because you are not currently employed " +
+ updateDynamicRam("getSkillPoints", _Constants_js__WEBPACK_IMPORTED_MODULE_6__["CONSTANTS"].ScriptBladeburnerApiBaseRamCost);
+ if (_Player_js__WEBPACK_IMPORTED_MODULE_16__["Player"].bladeburner instanceof _Bladeburner_js__WEBPACK_IMPORTED_MODULE_4__["Bladeburner"] && (_Player_js__WEBPACK_IMPORTED_MODULE_16__["Player"].bitNodeN === 7 || hasBladeburner2079SF)) {
+ return _Player_js__WEBPACK_IMPORTED_MODULE_16__["Player"].bladeburner.skillPoints;
+ }
+ throw Object(_NetscriptEvaluator_js__WEBPACK_IMPORTED_MODULE_25__["makeRuntimeRejectMsg"])(workerScript, "getSkillPoints() failed because you do not currently have access to the Bladeburner API. This is either because you are not currently employed " +
"at the Bladeburner division or because you do not have Source-File 7");
},
getSkillLevel : function(skillName="") {
- if (_Player_js__WEBPACK_IMPORTED_MODULE_15__["Player"].bladeburner instanceof _Bladeburner_js__WEBPACK_IMPORTED_MODULE_4__["Bladeburner"] && (_Player_js__WEBPACK_IMPORTED_MODULE_15__["Player"].bitNodeN === 7 || hasBladeburner2079SF)) {
-
+ if (workerScript.checkingRam) {
+ return updateStaticRam("getSkillLevel", _Constants_js__WEBPACK_IMPORTED_MODULE_6__["CONSTANTS"].ScriptBladeburnerApiBaseRamCost);
}
- throw Object(_NetscriptEvaluator_js__WEBPACK_IMPORTED_MODULE_24__["makeRuntimeRejectMsg"])(workerScript, "isContractName() failed because you do not currently have access to the Bladeburner API. This is either because you are not currently employed " +
+ updateDynamicRam("getSkillLevel", _Constants_js__WEBPACK_IMPORTED_MODULE_6__["CONSTANTS"].ScriptBladeburnerApiBaseRamCost);
+ if (_Player_js__WEBPACK_IMPORTED_MODULE_16__["Player"].bladeburner instanceof _Bladeburner_js__WEBPACK_IMPORTED_MODULE_4__["Bladeburner"] && (_Player_js__WEBPACK_IMPORTED_MODULE_16__["Player"].bitNodeN === 7 || hasBladeburner2079SF)) {
+ try {
+ return _Player_js__WEBPACK_IMPORTED_MODULE_16__["Player"].bladeburner.getSkillLevelNetscriptFn(skillName, workerScript);
+ } catch(e) {
+ throw Object(_NetscriptEvaluator_js__WEBPACK_IMPORTED_MODULE_25__["makeRuntimeRejectMsg"])(workerScript, "Bladeburner.getSkillLevel() failed with exception: " + e);
+ }
+ }
+ throw Object(_NetscriptEvaluator_js__WEBPACK_IMPORTED_MODULE_25__["makeRuntimeRejectMsg"])(workerScript, "getSkillLevel() failed because you do not currently have access to the Bladeburner API. This is either because you are not currently employed " +
"at the Bladeburner division or because you do not have Source-File 7");
},
upgradeSkill : function(skillName) {
- if (_Player_js__WEBPACK_IMPORTED_MODULE_15__["Player"].bladeburner instanceof _Bladeburner_js__WEBPACK_IMPORTED_MODULE_4__["Bladeburner"] && (_Player_js__WEBPACK_IMPORTED_MODULE_15__["Player"].bitNodeN === 7 || hasBladeburner2079SF)) {
-
+ if (workerScript.checkingRam) {
+ return updateStaticRam("upgradeSkill", _Constants_js__WEBPACK_IMPORTED_MODULE_6__["CONSTANTS"].ScriptBladeburnerApiBaseRamCost);
}
- throw Object(_NetscriptEvaluator_js__WEBPACK_IMPORTED_MODULE_24__["makeRuntimeRejectMsg"])(workerScript, "isContractName() failed because you do not currently have access to the Bladeburner API. This is either because you are not currently employed " +
+ updateDynamicRam("upgradeSkill", _Constants_js__WEBPACK_IMPORTED_MODULE_6__["CONSTANTS"].ScriptBladeburnerApiBaseRamCost);
+ if (_Player_js__WEBPACK_IMPORTED_MODULE_16__["Player"].bladeburner instanceof _Bladeburner_js__WEBPACK_IMPORTED_MODULE_4__["Bladeburner"] && (_Player_js__WEBPACK_IMPORTED_MODULE_16__["Player"].bitNodeN === 7 || hasBladeburner2079SF)) {
+ try {
+ return _Player_js__WEBPACK_IMPORTED_MODULE_16__["Player"].bladeburner.upgradeSkillNetscriptFn(skillName, workerScript);
+ } catch(e) {
+ throw Object(_NetscriptEvaluator_js__WEBPACK_IMPORTED_MODULE_25__["makeRuntimeRejectMsg"])(workerScript, "Bladeburner.upgradeSkill() failed with exception: " + e);
+ }
+ }
+ throw Object(_NetscriptEvaluator_js__WEBPACK_IMPORTED_MODULE_25__["makeRuntimeRejectMsg"])(workerScript, "upgradeSkill() failed because you do not currently have access to the Bladeburner API. This is either because you are not currently employed " +
"at the Bladeburner division or because you do not have Source-File 7");
},
- getTeamSize : function() {
- if (_Player_js__WEBPACK_IMPORTED_MODULE_15__["Player"].bladeburner instanceof _Bladeburner_js__WEBPACK_IMPORTED_MODULE_4__["Bladeburner"] && (_Player_js__WEBPACK_IMPORTED_MODULE_15__["Player"].bitNodeN === 7 || hasBladeburner2079SF)) {
-
+ getTeamSize : function(type="", name="") {
+ if (workerScript.checkingRam) {
+ return updateStaticRam("getTeamSize", _Constants_js__WEBPACK_IMPORTED_MODULE_6__["CONSTANTS"].ScriptBladeburnerApiBaseRamCost);
}
- throw Object(_NetscriptEvaluator_js__WEBPACK_IMPORTED_MODULE_24__["makeRuntimeRejectMsg"])(workerScript, "isContractName() failed because you do not currently have access to the Bladeburner API. This is either because you are not currently employed " +
+ updateDynamicRam("getTeamSize", _Constants_js__WEBPACK_IMPORTED_MODULE_6__["CONSTANTS"].ScriptBladeburnerApiBaseRamCost);
+ if (_Player_js__WEBPACK_IMPORTED_MODULE_16__["Player"].bladeburner instanceof _Bladeburner_js__WEBPACK_IMPORTED_MODULE_4__["Bladeburner"] && (_Player_js__WEBPACK_IMPORTED_MODULE_16__["Player"].bitNodeN === 7 || hasBladeburner2079SF)) {
+ try {
+ return _Player_js__WEBPACK_IMPORTED_MODULE_16__["Player"].bladeburner.getTeamSizeNetscriptFn(type, name, workerScript);
+ } catch(e) {
+ throw Object(_NetscriptEvaluator_js__WEBPACK_IMPORTED_MODULE_25__["makeRuntimeRejectMsg"])(workerScript, "Bladeburner.getTeamSize() failed with exception: " + e);
+ }
+ }
+ throw Object(_NetscriptEvaluator_js__WEBPACK_IMPORTED_MODULE_25__["makeRuntimeRejectMsg"])(workerScript, "getTeamSize() failed because you do not currently have access to the Bladeburner API. This is either because you are not currently employed " +
"at the Bladeburner division or because you do not have Source-File 7");
},
setTeamSize : function(type="", name="", size) {
- if (_Player_js__WEBPACK_IMPORTED_MODULE_15__["Player"].bladeburner instanceof _Bladeburner_js__WEBPACK_IMPORTED_MODULE_4__["Bladeburner"] && (_Player_js__WEBPACK_IMPORTED_MODULE_15__["Player"].bitNodeN === 7 || hasBladeburner2079SF)) {
-
+ if (workerScript.checkingRam) {
+ return updateStaticRam("setTeamSize", _Constants_js__WEBPACK_IMPORTED_MODULE_6__["CONSTANTS"].ScriptBladeburnerApiBaseRamCost);
}
- throw Object(_NetscriptEvaluator_js__WEBPACK_IMPORTED_MODULE_24__["makeRuntimeRejectMsg"])(workerScript, "isContractName() failed because you do not currently have access to the Bladeburner API. This is either because you are not currently employed " +
+ updateDynamicRam("setTeamSize", _Constants_js__WEBPACK_IMPORTED_MODULE_6__["CONSTANTS"].ScriptBladeburnerApiBaseRamCost);
+ if (_Player_js__WEBPACK_IMPORTED_MODULE_16__["Player"].bladeburner instanceof _Bladeburner_js__WEBPACK_IMPORTED_MODULE_4__["Bladeburner"] && (_Player_js__WEBPACK_IMPORTED_MODULE_16__["Player"].bitNodeN === 7 || hasBladeburner2079SF)) {
+ try {
+ return _Player_js__WEBPACK_IMPORTED_MODULE_16__["Player"].bladeburner.setTeamSizeNetscriptFn(type, name, size, workerScript);
+ } catch(e) {
+ throw Object(_NetscriptEvaluator_js__WEBPACK_IMPORTED_MODULE_25__["makeRuntimeRejectMsg"])(workerScript, "Bladeburner.setTeamSize() failed with exception: " + e);
+ }
+ }
+ throw Object(_NetscriptEvaluator_js__WEBPACK_IMPORTED_MODULE_25__["makeRuntimeRejectMsg"])(workerScript, "setTeamSize() failed because you do not currently have access to the Bladeburner API. This is either because you are not currently employed " +
"at the Bladeburner division or because you do not have Source-File 7");
},
getCityEstimatedPopulation : function(cityName) {
- if (_Player_js__WEBPACK_IMPORTED_MODULE_15__["Player"].bladeburner instanceof _Bladeburner_js__WEBPACK_IMPORTED_MODULE_4__["Bladeburner"] && (_Player_js__WEBPACK_IMPORTED_MODULE_15__["Player"].bitNodeN === 7 || hasBladeburner2079SF)) {
-
+ if (workerScript.checkingRam) {
+ return updateStaticRam("getCityEstimatedPopulation", _Constants_js__WEBPACK_IMPORTED_MODULE_6__["CONSTANTS"].ScriptBladeburnerApiBaseRamCost);
}
- throw Object(_NetscriptEvaluator_js__WEBPACK_IMPORTED_MODULE_24__["makeRuntimeRejectMsg"])(workerScript, "isContractName() failed because you do not currently have access to the Bladeburner API. This is either because you are not currently employed " +
+ updateDynamicRam("getCityEstimatedPopulation", _Constants_js__WEBPACK_IMPORTED_MODULE_6__["CONSTANTS"].ScriptBladeburnerApiBaseRamCost);
+ if (_Player_js__WEBPACK_IMPORTED_MODULE_16__["Player"].bladeburner instanceof _Bladeburner_js__WEBPACK_IMPORTED_MODULE_4__["Bladeburner"] && (_Player_js__WEBPACK_IMPORTED_MODULE_16__["Player"].bitNodeN === 7 || hasBladeburner2079SF)) {
+ try {
+ return _Player_js__WEBPACK_IMPORTED_MODULE_16__["Player"].bladeburner.getCityEstimatedPopulationNetscriptFn(cityName, workerScript);
+ } catch(e) {
+ throw Object(_NetscriptEvaluator_js__WEBPACK_IMPORTED_MODULE_25__["makeRuntimeRejectMsg"])(workerScript, "Bladeburner.getCityEstimatedPopulation() failed with exception: " + e);
+ }
+ }
+ throw Object(_NetscriptEvaluator_js__WEBPACK_IMPORTED_MODULE_25__["makeRuntimeRejectMsg"])(workerScript, "getCityEstimatedPopulation() failed because you do not currently have access to the Bladeburner API. This is either because you are not currently employed " +
"at the Bladeburner division or because you do not have Source-File 7");
},
getCityEstimatedCommunities : function(cityName) {
- if (_Player_js__WEBPACK_IMPORTED_MODULE_15__["Player"].bladeburner instanceof _Bladeburner_js__WEBPACK_IMPORTED_MODULE_4__["Bladeburner"] && (_Player_js__WEBPACK_IMPORTED_MODULE_15__["Player"].bitNodeN === 7 || hasBladeburner2079SF)) {
-
+ if (workerScript.checkingRam) {
+ return updateStaticRam("getCityEstimatedCommunities", _Constants_js__WEBPACK_IMPORTED_MODULE_6__["CONSTANTS"].ScriptBladeburnerApiBaseRamCost);
}
- throw Object(_NetscriptEvaluator_js__WEBPACK_IMPORTED_MODULE_24__["makeRuntimeRejectMsg"])(workerScript, "isContractName() failed because you do not currently have access to the Bladeburner API. This is either because you are not currently employed " +
+ updateDynamicRam("getCityEstimatedCommunities", _Constants_js__WEBPACK_IMPORTED_MODULE_6__["CONSTANTS"].ScriptBladeburnerApiBaseRamCost);
+ if (_Player_js__WEBPACK_IMPORTED_MODULE_16__["Player"].bladeburner instanceof _Bladeburner_js__WEBPACK_IMPORTED_MODULE_4__["Bladeburner"] && (_Player_js__WEBPACK_IMPORTED_MODULE_16__["Player"].bitNodeN === 7 || hasBladeburner2079SF)) {
+ try {
+ return _Player_js__WEBPACK_IMPORTED_MODULE_16__["Player"].bladeburner.getCityEstimatedCommunitiesNetscriptFn(cityName, workerScript);
+ } catch(e) {
+ throw Object(_NetscriptEvaluator_js__WEBPACK_IMPORTED_MODULE_25__["makeRuntimeRejectMsg"])(workerScript, "Bladeburner.getCityEstimatedCommunities() failed with exception: " + e);
+ }
+ }
+ throw Object(_NetscriptEvaluator_js__WEBPACK_IMPORTED_MODULE_25__["makeRuntimeRejectMsg"])(workerScript, "getCityEstimatedCommunities() failed because you do not currently have access to the Bladeburner API. This is either because you are not currently employed " +
"at the Bladeburner division or because you do not have Source-File 7");
},
getCityChaos : function(cityName) {
- if (_Player_js__WEBPACK_IMPORTED_MODULE_15__["Player"].bladeburner instanceof _Bladeburner_js__WEBPACK_IMPORTED_MODULE_4__["Bladeburner"] && (_Player_js__WEBPACK_IMPORTED_MODULE_15__["Player"].bitNodeN === 7 || hasBladeburner2079SF)) {
-
+ if (workerScript.checkingRam) {
+ return updateStaticRam("getCityChaos", _Constants_js__WEBPACK_IMPORTED_MODULE_6__["CONSTANTS"].ScriptBladeburnerApiBaseRamCost);
}
- throw Object(_NetscriptEvaluator_js__WEBPACK_IMPORTED_MODULE_24__["makeRuntimeRejectMsg"])(workerScript, "isContractName() failed because you do not currently have access to the Bladeburner API. This is either because you are not currently employed " +
+ updateDynamicRam("getCityChaos", _Constants_js__WEBPACK_IMPORTED_MODULE_6__["CONSTANTS"].ScriptBladeburnerApiBaseRamCost);
+ if (_Player_js__WEBPACK_IMPORTED_MODULE_16__["Player"].bladeburner instanceof _Bladeburner_js__WEBPACK_IMPORTED_MODULE_4__["Bladeburner"] && (_Player_js__WEBPACK_IMPORTED_MODULE_16__["Player"].bitNodeN === 7 || hasBladeburner2079SF)) {
+ try {
+ return _Player_js__WEBPACK_IMPORTED_MODULE_16__["Player"].bladeburner.getCityChaosNetscriptFn(cityName, workerScript);
+ } catch(e) {
+ throw Object(_NetscriptEvaluator_js__WEBPACK_IMPORTED_MODULE_25__["makeRuntimeRejectMsg"])(workerScript, "Bladeburner.getCityChaos() failed with exception: " + e);
+ }
+ }
+ throw Object(_NetscriptEvaluator_js__WEBPACK_IMPORTED_MODULE_25__["makeRuntimeRejectMsg"])(workerScript, "getCityChaos() failed because you do not currently have access to the Bladeburner API. This is either because you are not currently employed " +
"at the Bladeburner division or because you do not have Source-File 7");
},
switchCity : function(cityName) {
- if (_Player_js__WEBPACK_IMPORTED_MODULE_15__["Player"].bladeburner instanceof _Bladeburner_js__WEBPACK_IMPORTED_MODULE_4__["Bladeburner"] && (_Player_js__WEBPACK_IMPORTED_MODULE_15__["Player"].bitNodeN === 7 || hasBladeburner2079SF)) {
-
+ if (workerScript.checkingRam) {
+ return updateStaticRam("switchCity", _Constants_js__WEBPACK_IMPORTED_MODULE_6__["CONSTANTS"].ScriptBladeburnerApiBaseRamCost);
}
- throw Object(_NetscriptEvaluator_js__WEBPACK_IMPORTED_MODULE_24__["makeRuntimeRejectMsg"])(workerScript, "isContractName() failed because you do not currently have access to the Bladeburner API. This is either because you are not currently employed " +
+ updateDynamicRam("switchCity", _Constants_js__WEBPACK_IMPORTED_MODULE_6__["CONSTANTS"].ScriptBladeburnerApiBaseRamCost);
+ if (_Player_js__WEBPACK_IMPORTED_MODULE_16__["Player"].bladeburner instanceof _Bladeburner_js__WEBPACK_IMPORTED_MODULE_4__["Bladeburner"] && (_Player_js__WEBPACK_IMPORTED_MODULE_16__["Player"].bitNodeN === 7 || hasBladeburner2079SF)) {
+ try {
+ return _Player_js__WEBPACK_IMPORTED_MODULE_16__["Player"].bladeburner.switchCityNetscriptFn(cityName, workerScript);
+ } catch(e) {
+ throw Object(_NetscriptEvaluator_js__WEBPACK_IMPORTED_MODULE_25__["makeRuntimeRejectMsg"])(workerScript, "Bladeburner.switchCity() failed with exception: " + e);
+ }
+ }
+ throw Object(_NetscriptEvaluator_js__WEBPACK_IMPORTED_MODULE_25__["makeRuntimeRejectMsg"])(workerScript, "switchCity() failed because you do not currently have access to the Bladeburner API. This is either because you are not currently employed " +
"at the Bladeburner division or because you do not have Source-File 7");
},
getStamina : function() {
- if (_Player_js__WEBPACK_IMPORTED_MODULE_15__["Player"].bladeburner instanceof _Bladeburner_js__WEBPACK_IMPORTED_MODULE_4__["Bladeburner"] && (_Player_js__WEBPACK_IMPORTED_MODULE_15__["Player"].bitNodeN === 7 || hasBladeburner2079SF)) {
-
+ if (workerScript.checkingRam) {
+ return updateStaticRam("getStamina", _Constants_js__WEBPACK_IMPORTED_MODULE_6__["CONSTANTS"].ScriptBladeburnerApiBaseRamCost);
}
- throw Object(_NetscriptEvaluator_js__WEBPACK_IMPORTED_MODULE_24__["makeRuntimeRejectMsg"])(workerScript, "isContractName() failed because you do not currently have access to the Bladeburner API. This is either because you are not currently employed " +
+ updateDynamicRam("getStamina", _Constants_js__WEBPACK_IMPORTED_MODULE_6__["CONSTANTS"].ScriptBladeburnerApiBaseRamCost);
+ if (_Player_js__WEBPACK_IMPORTED_MODULE_16__["Player"].bladeburner instanceof _Bladeburner_js__WEBPACK_IMPORTED_MODULE_4__["Bladeburner"] && (_Player_js__WEBPACK_IMPORTED_MODULE_16__["Player"].bitNodeN === 7 || hasBladeburner2079SF)) {
+ return [_Player_js__WEBPACK_IMPORTED_MODULE_16__["Player"].bladeburner.stamina, _Player_js__WEBPACK_IMPORTED_MODULE_16__["Player"].bladeburner.maxStamina];
+ }
+ throw Object(_NetscriptEvaluator_js__WEBPACK_IMPORTED_MODULE_25__["makeRuntimeRejectMsg"])(workerScript, "getStamina() failed because you do not currently have access to the Bladeburner API. This is either because you are not currently employed " +
"at the Bladeburner division or because you do not have Source-File 7");
},
- joinFaction : function() {
- if (_Player_js__WEBPACK_IMPORTED_MODULE_15__["Player"].bladeburner instanceof _Bladeburner_js__WEBPACK_IMPORTED_MODULE_4__["Bladeburner"] && (_Player_js__WEBPACK_IMPORTED_MODULE_15__["Player"].bitNodeN === 7 || hasBladeburner2079SF)) {
-
+ joinBladeburnerFaction : function() {
+ if (workerScript.checkingRam) {
+ return updateStaticRam("joinBladeburnerFaction", _Constants_js__WEBPACK_IMPORTED_MODULE_6__["CONSTANTS"].ScriptBladeburnerApiBaseRamCost);
}
- throw Object(_NetscriptEvaluator_js__WEBPACK_IMPORTED_MODULE_24__["makeRuntimeRejectMsg"])(workerScript, "isContractName() failed because you do not currently have access to the Bladeburner API. This is either because you are not currently employed " +
+ updateDynamicRam("joinBladeburnerFaction", _Constants_js__WEBPACK_IMPORTED_MODULE_6__["CONSTANTS"].ScriptBladeburnerApiBaseRamCost);
+ if (_Player_js__WEBPACK_IMPORTED_MODULE_16__["Player"].bladeburner instanceof _Bladeburner_js__WEBPACK_IMPORTED_MODULE_4__["Bladeburner"] && (_Player_js__WEBPACK_IMPORTED_MODULE_16__["Player"].bitNodeN === 7 || hasBladeburner2079SF)) {
+ return _Player_js__WEBPACK_IMPORTED_MODULE_16__["Player"].bladeburner.joinBladeburnerFactionNetscriptFn(workerScript);
+ }
+ throw Object(_NetscriptEvaluator_js__WEBPACK_IMPORTED_MODULE_25__["makeRuntimeRejectMsg"])(workerScript, "joinBladeburnerFaction() failed because you do not currently have access to the Bladeburner API. This is either because you are not currently employed " +
"at the Bladeburner division or because you do not have Source-File 7");
}
}
@@ -34082,20 +34124,17 @@ function NetscriptFunctions(workerScript) {
/***/ }),
-/* 32 */
-/*!*****************************************!*\
- !*** ./node_modules/jszip/lib/utils.js ***!
- \*****************************************/
+/* 31 */
/***/ (function(module, exports, __webpack_require__) {
"use strict";
-var support = __webpack_require__(/*! ./support */ 50);
-var base64 = __webpack_require__(/*! ./base64 */ 105);
-var nodejsUtils = __webpack_require__(/*! ./nodejsUtils */ 65);
-var setImmediate = __webpack_require__(/*! core-js/library/fn/set-immediate */ 167);
-var external = __webpack_require__(/*! ./external */ 58);
+var support = __webpack_require__(49);
+var base64 = __webpack_require__(105);
+var nodejsUtils = __webpack_require__(63);
+var setImmediate = __webpack_require__(167);
+var external = __webpack_require__(57);
/**
@@ -34568,10 +34607,7 @@ exports.prepareContent = function(name, inputData, isBinary, isOptimizedBinarySt
/***/ }),
-/* 33 */
-/*!**********************!*\
- !*** ./src/Fconf.js ***!
- \**********************/
+/* 32 */
/***/ (function(module, __webpack_exports__, __webpack_require__) {
"use strict";
@@ -34580,7 +34616,7 @@ __webpack_require__.r(__webpack_exports__);
/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "createFconf", function() { return createFconf; });
/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "parseFconfSettings", function() { return parseFconfSettings; });
/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "loadFconf", function() { return loadFconf; });
-/* harmony import */ var _utils_acorn_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../utils/acorn.js */ 36);
+/* harmony import */ var _utils_acorn_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(36);
/* harmony import */ var _utils_acorn_js__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_utils_acorn_js__WEBPACK_IMPORTED_MODULE_0__);
@@ -34712,10 +34748,7 @@ function loadFconf(saveString) {
/***/ }),
-/* 34 */
-/*!*************************!*\
- !*** ./src/Missions.js ***!
- \*************************/
+/* 33 */
/***/ (function(module, __webpack_exports__, __webpack_require__) {
"use strict";
@@ -34724,14 +34757,14 @@ __webpack_require__.r(__webpack_exports__);
/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "inMission", function() { return inMission; });
/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "setInMission", function() { return setInMission; });
/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "currMission", function() { return currMission; });
-/* harmony import */ var _Constants_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./Constants.js */ 3);
-/* harmony import */ var _engine_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./engine.js */ 5);
-/* harmony import */ var _Faction_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./Faction.js */ 11);
-/* harmony import */ var _Player_js__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./Player.js */ 0);
-/* harmony import */ var _utils_DialogBox_js__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ../utils/DialogBox.js */ 7);
-/* harmony import */ var _utils_HelperFunctions_js__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ../utils/HelperFunctions.js */ 1);
-/* harmony import */ var _utils_StringHelperFunctions_js__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! ../utils/StringHelperFunctions.js */ 2);
-/* harmony import */ var jsplumb__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! jsplumb */ 197);
+/* harmony import */ var _Constants_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(3);
+/* harmony import */ var _engine_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(5);
+/* harmony import */ var _Faction_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(11);
+/* harmony import */ var _Player_js__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(0);
+/* harmony import */ var _utils_DialogBox_js__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(7);
+/* harmony import */ var _utils_HelperFunctions_js__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(1);
+/* harmony import */ var _utils_StringHelperFunctions_js__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(2);
+/* harmony import */ var jsplumb__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(197);
/* harmony import */ var jsplumb__WEBPACK_IMPORTED_MODULE_7___default = /*#__PURE__*/__webpack_require__.n(jsplumb__WEBPACK_IMPORTED_MODULE_7__);
@@ -36268,13 +36301,10 @@ HackingMission.prototype.finishMission = function(win) {
-/* WEBPACK VAR INJECTION */}.call(this, __webpack_require__(/*! jquery */ 39)))
+/* WEBPACK VAR INJECTION */}.call(this, __webpack_require__(40)))
/***/ }),
-/* 35 */
-/*!************************!*\
- !*** ./src/DarkWeb.js ***!
- \************************/
+/* 34 */
/***/ (function(module, __webpack_exports__, __webpack_require__) {
"use strict";
@@ -36285,12 +36315,12 @@ __webpack_require__.r(__webpack_exports__);
/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "buyDarkwebItem", function() { return buyDarkwebItem; });
/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "parseDarkwebItemPrice", function() { return parseDarkwebItemPrice; });
/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "DarkWebItems", function() { return DarkWebItems; });
-/* harmony import */ var _CreateProgram_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./CreateProgram.js */ 14);
-/* harmony import */ var _Player_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./Player.js */ 0);
-/* harmony import */ var _SpecialServerIps_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./SpecialServerIps.js */ 17);
-/* harmony import */ var _Terminal_js__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./Terminal.js */ 18);
-/* harmony import */ var _utils_IPAddress_js__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ../utils/IPAddress.js */ 16);
-/* harmony import */ var _utils_StringHelperFunctions_js__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ../utils/StringHelperFunctions.js */ 2);
+/* harmony import */ var _CreateProgram_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(13);
+/* harmony import */ var _Player_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(0);
+/* harmony import */ var _SpecialServerIps_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(18);
+/* harmony import */ var _Terminal_js__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(19);
+/* harmony import */ var _utils_IPAddress_js__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(16);
+/* harmony import */ var _utils_StringHelperFunctions_js__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(2);
@@ -36489,11 +36519,1494 @@ let DarkWebItems = {
+/***/ }),
+/* 35 */
+/***/ (function(module, __webpack_exports__, __webpack_require__) {
+
+"use strict";
+__webpack_require__.r(__webpack_exports__);
+/* WEBPACK VAR INJECTION */(function($) {/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "Gang", function() { return Gang; });
+/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "displayGangContent", function() { return displayGangContent; });
+/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "updateGangContent", function() { return updateGangContent; });
+/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "loadAllGangs", function() { return loadAllGangs; });
+/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "AllGangs", function() { return AllGangs; });
+/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "resetGangs", function() { return resetGangs; });
+/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "deleteGangDisplayContent", function() { return deleteGangDisplayContent; });
+/* harmony import */ var _Constants_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(3);
+/* harmony import */ var _engine_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(5);
+/* harmony import */ var _Faction_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(11);
+/* harmony import */ var _Player_js__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(0);
+/* harmony import */ var _utils_DialogBox_js__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(7);
+/* harmony import */ var _utils_JSONReviver_js__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(9);
+/* harmony import */ var _utils_HelperFunctions_js__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(1);
+/* harmony import */ var numeral_min_numeral_min__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(14);
+/* harmony import */ var numeral_min_numeral_min__WEBPACK_IMPORTED_MODULE_7___default = /*#__PURE__*/__webpack_require__.n(numeral_min_numeral_min__WEBPACK_IMPORTED_MODULE_7__);
+/* harmony import */ var _utils_StringHelperFunctions_js__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(2);
+/* harmony import */ var _utils_YesNoBox_js__WEBPACK_IMPORTED_MODULE_9__ = __webpack_require__(12);
+
+
+
+
+
+
+
+
+
+
+
+/* Gang.js */
+//Switch between territory and management screen with 1 and 2
+$(document).keydown(function(event) {
+ if (_engine_js__WEBPACK_IMPORTED_MODULE_1__["Engine"].currentPage == _engine_js__WEBPACK_IMPORTED_MODULE_1__["Engine"].Page.Gang && !_utils_YesNoBox_js__WEBPACK_IMPORTED_MODULE_9__["yesNoBoxOpen"]) {
+ if (gangMemberFilter != null && gangMemberFilter === document.activeElement) {return;}
+ if (event.keyCode === 49) {
+ if(gangTerritorySubpage.style.display === "block") {
+ managementButton.click();
+ }
+ } else if (event.keyCode === 50) {
+ if (gangManagementSubpage.style.display === "block") {
+ territoryButton.click();
+ }
+ }
+ }
+});
+
+//Delete upgrade box when clicking outside
+$(document).mousedown(function(event) {
+ var boxId = "gang-member-upgrade-popup-box";
+ var contentId = "gang-member-upgrade-popup-box-content";
+ if (gangMemberUpgradeBoxOpened) {
+ if ( $(event.target).closest("#" + contentId).get(0) == null ) {
+ //Delete the box
+ Object(_utils_HelperFunctions_js__WEBPACK_IMPORTED_MODULE_6__["removeElement"])(gangMemberUpgradeBox);
+ gangMemberUpgradeBox = null;
+ gangMemberUpgradeBoxContent = null;
+ gangMemberUpgradeBoxOpened = false;
+ gangMemberUpgradeBoxElements = null;
+ }
+ }
+});
+
+let GangNames = ["Slum Snakes", "Tetrads", "The Syndicate", "The Dark Army", "Speakers for the Dead",
+ "NiteSec", "The Black Hand"];
+let AllGangs = {
+ "Slum Snakes" : {
+ power: 1,
+ territory: 1/7,
+ },
+ "Tetrads" : {
+ power: 1,
+ territory: 1/7,
+ },
+ "The Syndicate" : {
+ power: 1,
+ territory: 1/7,
+ },
+ "The Dark Army" : {
+ power: 1,
+ territory: 1/7,
+ },
+ "Speakers for the Dead" : {
+ power: 1,
+ territory: 1/7,
+ },
+ "NiteSec" : {
+ power: 1,
+ territory: 1/7,
+ },
+ "The Black Hand" : {
+ power: 1,
+ territory: 1/7,
+ },
+}
+
+function resetGangs() {
+ AllGangs = {
+ "Slum Snakes" : {
+ power: 1,
+ territory: 1/7,
+ },
+ "Tetrads" : {
+ power: 1,
+ territory: 1/7,
+ },
+ "The Syndicate" : {
+ power: 1,
+ territory: 1/7,
+ },
+ "The Dark Army" : {
+ power: 1,
+ territory: 1/7,
+ },
+ "Speakers for the Dead" : {
+ power: 1,
+ territory: 1/7,
+ },
+ "NiteSec" : {
+ power: 1,
+ territory: 1/7,
+ },
+ "The Black Hand" : {
+ power: 1,
+ territory: 1/7,
+ },
+ }
+}
+
+function loadAllGangs(saveString) {
+ AllGangs = JSON.parse(saveString, _utils_JSONReviver_js__WEBPACK_IMPORTED_MODULE_5__["Reviver"]);
+}
+
+//Power is an estimate of a gang's ability to gain/defend territory
+let gangStoredPowerCycles = 0;
+function processAllGangPowerGains(numCycles=1) {
+ if (!_Player_js__WEBPACK_IMPORTED_MODULE_3__["Player"].inGang()) {return;}
+ gangStoredPowerCycles += numCycles;
+ if (gangStoredPowerCycles < 150) {return;}
+ var playerGangName = _Player_js__WEBPACK_IMPORTED_MODULE_3__["Player"].gang.facName;
+ for (var name in AllGangs) {
+ if (AllGangs.hasOwnProperty(name)) {
+ if (name == playerGangName) {
+ AllGangs[name].power += _Player_js__WEBPACK_IMPORTED_MODULE_3__["Player"].gang.calculatePower();
+ } else {
+ var gain = Math.random() * 0.02; //TODO Adjust as necessary
+ AllGangs[name].power += (gain);
+ }
+ }
+ }
+
+ gangStoredPowerCycles -= 150;
+}
+
+let gangStoredTerritoryCycles = 0;
+function processAllGangTerritory(numCycles=1) {
+ if (!_Player_js__WEBPACK_IMPORTED_MODULE_3__["Player"].inGang()) {return;}
+ gangStoredTerritoryCycles += numCycles;
+ if (gangStoredTerritoryCycles < _Constants_js__WEBPACK_IMPORTED_MODULE_0__["CONSTANTS"].GangTerritoryUpdateTimer) {return;}
+
+ for (var i = 0; i < GangNames.length; ++i) {
+ var other = Object(_utils_HelperFunctions_js__WEBPACK_IMPORTED_MODULE_6__["getRandomInt"])(0, GangNames.length-1);
+ while(other == i) {
+ other = Object(_utils_HelperFunctions_js__WEBPACK_IMPORTED_MODULE_6__["getRandomInt"])(0, GangNames.length-1);
+ }
+ var thisPwr = AllGangs[GangNames[i]].power;
+ var otherPwr = AllGangs[GangNames[other]].power;
+ var thisChance = thisPwr / (thisPwr + otherPwr);
+
+ if (Math.random() < thisChance) {
+ if (AllGangs[GangNames[other]].territory <= 0) {
+ return;
+ }
+ AllGangs[GangNames[i]].territory += 0.0001;
+ AllGangs[GangNames[other]].territory -= 0.0001;
+ } else {
+ if (AllGangs[GangNames[i]].territory <= 0) {
+ return;
+ }
+ AllGangs[GangNames[i]].territory -= 0.0001;
+ AllGangs[GangNames[other]].territory += 0.0001;
+ }
+ }
+
+ gangStoredTerritoryCycles -= _Constants_js__WEBPACK_IMPORTED_MODULE_0__["CONSTANTS"].GangTerritoryUpdateTimer;
+}
+
+/* faction - Name of corresponding faction
+ hacking - Boolean indicating whether its a hacking gang or not
+ */
+function Gang(facName, hacking=false) {
+ this.facName = facName;
+ this.members = []; //Array of GangMembers
+ this.wanted = 1;
+ this.respect = 1;
+ this.power = 0;
+
+ this.isHackingGang = hacking;
+
+ this.respectGainRate = 0;
+ this.wantedGainRate = 0;
+ this.moneyGainRate = 0;
+
+ //When processing gains, this stores the number of cycles until some
+ //limit is reached, and then calculates and applies the gains only at that limit
+ this.storedCycles = 0;
+}
+
+Gang.prototype.process = function(numCycles=1) {
+ this.processGains(numCycles);
+ this.processExperienceGains(numCycles);
+ processAllGangPowerGains(numCycles);
+ processAllGangTerritory(numCycles);
+}
+
+Gang.prototype.processGains = function(numCycles=1) {
+ this.storedCycles += numCycles;
+ if (isNaN(this.storedCycles)) {
+ console.log("ERROR: Gang's storedCylces is NaN");
+ this.storedCycles = 0;
+ }
+ if (this.storedCycles < 25) {return;} //Only process every 5 seconds at least
+
+ //Get gains per cycle
+ var moneyGains = 0, respectGains = 0, wantedLevelGains = 0;
+ for (var i = 0; i < this.members.length; ++i) {
+ respectGains += (this.members[i].calculateRespectGain());
+ wantedLevelGains += (this.members[i].calculateWantedLevelGain());
+ moneyGains += (this.members[i].calculateMoneyGain());
+ }
+ this.respectGainRate = respectGains;
+ this.wantedGainRate = wantedLevelGains;
+ this.moneyGainRate = moneyGains;
+
+ if (!isNaN(respectGains)) {
+ var gain = respectGains * this.storedCycles;
+ this.respect += (gain);
+ //Faction reputation gains is respect gain divided by some constant
+ var fac = _Faction_js__WEBPACK_IMPORTED_MODULE_2__["Factions"][this.facName];
+ if (!(fac instanceof _Faction_js__WEBPACK_IMPORTED_MODULE_2__["Faction"])) {
+ Object(_utils_DialogBox_js__WEBPACK_IMPORTED_MODULE_4__["dialogBoxCreate"])("ERROR: Could not get Faction associates with your gang. This is a bug, please report to game dev");
+ } else {
+ var favorMult = 1 + (fac.favor / 100);
+ fac.playerReputation += ((_Player_js__WEBPACK_IMPORTED_MODULE_3__["Player"].faction_rep_mult * gain * favorMult) / _Constants_js__WEBPACK_IMPORTED_MODULE_0__["CONSTANTS"].GangRespectToReputationRatio);
+ }
+
+ } else {
+ console.log("ERROR: respectGains is NaN");
+ }
+ if (!isNaN(wantedLevelGains)) {
+ if (this.wanted === 1 && wantedLevelGains < 0) {
+ //Do nothing
+ } else {
+ this.wanted += (wantedLevelGains * this.storedCycles);
+ if (this.wanted < 1) {this.wanted = 1;}
+ }
+ } else {
+ console.log("ERROR: wantedLevelGains is NaN");
+ }
+ if (!isNaN(moneyGains)) {
+ _Player_js__WEBPACK_IMPORTED_MODULE_3__["Player"].gainMoney(moneyGains * this.storedCycles);
+ } else {
+ console.log("ERROR: respectGains is NaN");
+ }
+
+ this.storedCycles = 0;
+}
+
+Gang.prototype.processExperienceGains = function(numCycles=1) {
+ for (var i = 0; i < this.members.length; ++i) {
+ this.members[i].gainExperience(numCycles);
+ this.members[i].updateSkillLevels();
+ }
+}
+
+//Calculates power GAIN, which is added onto the Gang's existing power
+Gang.prototype.calculatePower = function() {
+ var memberTotal = 0;
+ for (var i = 0; i < this.members.length; ++i) {
+ if (this.members[i].task instanceof GangMemberTask &&
+ this.members[i].task.name == "Territory Warfare") {
+ memberTotal += this.members[i].calculatePower();
+ }
+ }
+ return (0.0005 * memberTotal);
+}
+
+Gang.prototype.autoAssignMemberToTask = function(taskName) {
+ for (var i = 0; i < this.members.length; ++i) {
+ if (this.members[i].task.name === taskName) {
+ this.members[i].assignToTask(taskName);
+ return true;
+ }
+ }
+ return false;
+}
+
+Gang.prototype.autoUnassignMemberFromTask = function(taskName) {
+ for (var i = 0; i < this.members.length; ++i) {
+ if (this.members[i].task.name === taskName) {
+ this.members[i].unassignFromTask();
+ return true;
+ }
+ }
+ return false;
+}
+
+Gang.prototype.toJSON = function() {
+ return Object(_utils_JSONReviver_js__WEBPACK_IMPORTED_MODULE_5__["Generic_toJSON"])("Gang", this);
+}
+
+Gang.fromJSON = function(value) {
+ return Object(_utils_JSONReviver_js__WEBPACK_IMPORTED_MODULE_5__["Generic_fromJSON"])(Gang, value.data);
+}
+
+_utils_JSONReviver_js__WEBPACK_IMPORTED_MODULE_5__["Reviver"].constructors.Gang = Gang;
+
+/*** Gang Member object ***/
+function GangMember(name) {
+ this.name = name;
+ this.task = GangMemberTasks["Unassigned"]; //GangMemberTask object
+ this.city = _Player_js__WEBPACK_IMPORTED_MODULE_3__["Player"].city;
+
+ this.hack = 1;
+ this.str = 1;
+ this.def = 1;
+ this.dex = 1;
+ this.agi = 1;
+ this.cha = 1;
+
+ this.hack_exp = 0;
+ this.str_exp = 0;
+ this.def_exp = 0;
+ this.dex_exp = 0;
+ this.agi_exp = 0;
+ this.cha_exp = 0;
+
+ this.hack_mult = 1;
+ this.str_mult = 1;
+ this.def_mult = 1;
+ this.dex_mult = 1;
+ this.agi_mult = 1;
+ this.cha_mult = 1;
+
+ this.upgrades = []; //Names of upgrades
+}
+
+//Same formula for Player
+GangMember.prototype.calculateSkill = function(exp) {
+ return Math.max(Math.floor(32 * Math.log(exp + 534.5) - 200), 1);
+}
+
+GangMember.prototype.updateSkillLevels = function() {
+ this.hack = Math.floor(this.calculateSkill(this.hack_exp) * this.hack_mult);
+ this.str = Math.floor(this.calculateSkill(this.str_exp) * this.str_mult);
+ this.def = Math.floor(this.calculateSkill(this.def_exp) * this.def_mult);
+ this.dex = Math.floor(this.calculateSkill(this.dex_exp) * this.dex_mult);
+ this.agi = Math.floor(this.calculateSkill(this.agi_exp) * this.agi_mult);
+ this.cha = Math.floor(this.calculateSkill(this.cha_exp) * this.cha_mult);
+}
+
+GangMember.prototype.calculatePower = function() {
+ return (this.hack + this.str + this.def +
+ this.dex + this.agi + this.cha) / 100;
+}
+
+GangMember.prototype.assignToTask = function(taskName) {
+ if (GangMemberTasks.hasOwnProperty(taskName)) {
+ this.task = GangMemberTasks[taskName];
+ } else {
+ this.task = GangMemberTasks["Unassigned"];
+ }
+}
+
+GangMember.prototype.unassignFromTask = function() {
+ if (GangMemberTasks.hasOwnProperty("Unassigned")) {
+ this.task = GangMemberTasks["Unassigned"];
+ } else {
+ console.log("ERROR: Can't find Unassigned Gang member task");
+ this.task = null;
+ }
+}
+
+//Gains are per cycle
+GangMember.prototype.calculateRespectGain = function() {
+ var task = this.task;
+ if (task == null || !(task instanceof GangMemberTask) || task.baseRespect === 0) {return 0;}
+ var statWeight = (task.hackWeight/100) * this.hack +
+ (task.strWeight/100) * this.str +
+ (task.defWeight/100) * this.def +
+ (task.dexWeight/100) * this.dex +
+ (task.agiWeight/100) * this.agi +
+ (task.chaWeight/100) * this.cha;
+ statWeight -= (3.5 * task.difficulty);
+ if (statWeight <= 0) {return 0;}
+ var territoryMult = AllGangs[_Player_js__WEBPACK_IMPORTED_MODULE_3__["Player"].gang.facName].territory;
+ if (territoryMult <= 0) {return 0;}
+ var respectMult = (_Player_js__WEBPACK_IMPORTED_MODULE_3__["Player"].gang.respect) / (_Player_js__WEBPACK_IMPORTED_MODULE_3__["Player"].gang.respect + _Player_js__WEBPACK_IMPORTED_MODULE_3__["Player"].gang.wanted);
+ return 12 * task.baseRespect * statWeight * territoryMult * respectMult;
+}
+
+GangMember.prototype.calculateWantedLevelGain = function() {
+ var task = this.task;
+ if (task == null || !(task instanceof GangMemberTask) || task.baseWanted === 0) {return 0;}
+ var statWeight = (task.hackWeight/100) * this.hack +
+ (task.strWeight/100) * this.str +
+ (task.defWeight/100) * this.def +
+ (task.dexWeight/100) * this.dex +
+ (task.agiWeight/100) * this.agi +
+ (task.chaWeight/100) * this.cha;
+ statWeight -= (3.5 * task.difficulty);
+ if (statWeight <= 0) {return 0;}
+ var territoryMult = AllGangs[_Player_js__WEBPACK_IMPORTED_MODULE_3__["Player"].gang.facName].territory;
+ if (territoryMult <= 0) {return 0;}
+ if (task.baseWanted < 0) {
+ return task.baseWanted * statWeight * territoryMult;
+ } else {
+ return 6 * task.baseWanted / (3 * statWeight * territoryMult);
+ }
+}
+
+GangMember.prototype.calculateMoneyGain = function() {
+ var task = this.task;
+ if (task == null || !(task instanceof GangMemberTask) || task.baseMoney === 0) {return 0;}
+ var statWeight = (task.hackWeight/100) * this.hack +
+ (task.strWeight/100) * this.str +
+ (task.defWeight/100) * this.def +
+ (task.dexWeight/100) * this.dex +
+ (task.agiWeight/100) * this.agi +
+ (task.chaWeight/100) * this.cha;
+ statWeight -= (3.5 * task.difficulty);
+ if (statWeight <= 0) {return 0;}
+ var territoryMult = AllGangs[_Player_js__WEBPACK_IMPORTED_MODULE_3__["Player"].gang.facName].territory;
+ if (territoryMult <= 0) {return 0;}
+ var respectMult = (_Player_js__WEBPACK_IMPORTED_MODULE_3__["Player"].gang.respect) / (_Player_js__WEBPACK_IMPORTED_MODULE_3__["Player"].gang.respect + _Player_js__WEBPACK_IMPORTED_MODULE_3__["Player"].gang.wanted);
+ return 5 * task.baseMoney * statWeight * territoryMult * respectMult;
+}
+
+GangMember.prototype.gainExperience = function(numCycles=1) {
+ var task = this.task;
+ if (task == null || !(task instanceof GangMemberTask)) {return;}
+ this.hack_exp += (task.hackWeight / 1500) * task.difficulty * numCycles;
+ this.str_exp += (task.strWeight / 1500) * task.difficulty * numCycles;
+ this.def_exp += (task.defWeight / 1500) * task.difficulty * numCycles;
+ this.dex_exp += (task.dexWeight / 1500) * task.difficulty * numCycles;
+ this.agi_exp += (task.agiWeight / 1500) * task.difficulty * numCycles;
+ this.cha_exp += (task.chaWeight / 1500) * task.difficulty * numCycles;
+}
+
+GangMember.prototype.toJSON = function() {
+ return Object(_utils_JSONReviver_js__WEBPACK_IMPORTED_MODULE_5__["Generic_toJSON"])("GangMember", this);
+}
+
+GangMember.fromJSON = function(value) {
+ return Object(_utils_JSONReviver_js__WEBPACK_IMPORTED_MODULE_5__["Generic_fromJSON"])(GangMember, value.data);
+}
+
+_utils_JSONReviver_js__WEBPACK_IMPORTED_MODULE_5__["Reviver"].constructors.GangMember = GangMember;
+
+//Defines tasks that Gang Members can work on
+function GangMemberTask(name="", desc="",
+ params={baseRespect: 0, baseWanted: 0, baseMoney: 0,
+ hackWeight: 0, strWeight: 0, defWeight: 0,
+ dexWeight: 0, agiWeight: 0, chaWeight: 0,
+ difficulty: 0}) {
+ this.name = name;
+ this.desc = desc;
+
+ this.baseRespect = params.baseRespect ? params.baseRespect : 0;
+ this.baseWanted = params.baseWanted ? params.baseWanted : 0;
+ this.baseMoney = params.baseMoney ? params.baseMoney : 0;
+
+ //Weights must add up to 100
+ this.hackWeight = params.hackWeight ? params.hackWeight : 0;
+ this.strWeight = params.strWeight ? params.strWeight : 0;
+ this.defWeight = params.defWeight ? params.defWeight : 0;
+ this.dexWeight = params.dexWeight ? params.dexWeight : 0;
+ this.agiWeight = params.agiWeight ? params.agiWeight : 0;
+ this.chaWeight = params.chaWeight ? params.chaWeight : 0;
+
+ //1 - 100
+ this.difficulty = params.difficulty ? params.difficulty : 1;
+}
+
+GangMemberTask.prototype.toJSON = function() {
+ return Object(_utils_JSONReviver_js__WEBPACK_IMPORTED_MODULE_5__["Generic_toJSON"])("GangMemberTask", this);
+}
+
+GangMemberTask.fromJSON = function(value) {
+ return Object(_utils_JSONReviver_js__WEBPACK_IMPORTED_MODULE_5__["Generic_fromJSON"])(GangMemberTask, value.data);
+}
+
+_utils_JSONReviver_js__WEBPACK_IMPORTED_MODULE_5__["Reviver"].constructors.GangMemberTask = GangMemberTask;
+
+//TODO Human trafficking and an equivalent hacking crime
+let GangMemberTasks = {
+ "Unassigned" : new GangMemberTask(
+ "Unassigned",
+ "This gang member is currently idle"),
+ "Ransomware" : new GangMemberTask(
+ "Ransomware",
+ "Assign this gang member to create and distribute ransomware
" +
+ "Earns money - Slightly increases respect - Slightly increases wanted level",
+ {baseRespect: 0.00005, baseWanted: 0.00001, baseMoney: 1,
+ hackWeight: 100, difficulty: 1}),
+ "Phishing" : new GangMemberTask(
+ "Phishing",
+ "Assign this gang member to attempt phishing scams and attacks
" +
+ "Earns money - Slightly increases respect - Slightly increases wanted level",
+ {baseRespect: 0.00008, baseWanted: 0.001, baseMoney: 2.5,
+ hackWeight: 85, chaWeight: 15, difficulty: 3}),
+ "Identity Theft" : new GangMemberTask(
+ "Identity Theft",
+ "Assign this gang member to attempt identity theft
" +
+ "Earns money - Increases respect - Increases wanted level",
+ {baseRespect: 0.0001, baseWanted: 0.01, baseMoney: 6,
+ hackWeight: 80, chaWeight: 20, difficulty: 4}),
+ "DDoS Attacks" : new GangMemberTask(
+ "DDoS Attacks",
+ "Assign this gang member to carry out DDoS attacks
" +
+ "Increases respect - Increases wanted level",
+ {baseRespect: 0.0004, baseWanted: 0.05,
+ hackWeight: 100, difficulty: 7}),
+ "Plant Virus" : new GangMemberTask(
+ "Plant Virus",
+ "Assign this gang member to create and distribute malicious viruses
" +
+ "Increases respect - Increases wanted level",
+ {baseRespect: 0.0006, baseWanted: 0.05,
+ hackWeight: 100, difficulty: 10}),
+ "Fraud & Counterfeiting" : new GangMemberTask(
+ "Fraud & Counterfeiting",
+ "Assign this gang member to commit financial fraud and digital counterfeiting
" +
+ "Earns money - Slightly increases respect - Slightly increases wanted level",
+ {baseRespect: 0.0005, baseWanted: 0.1, baseMoney: 15,
+ hackWeight: 80, chaWeight: 20, difficulty: 17}),
+ "Money Laundering" : new GangMemberTask(
+ "Money Laundering",
+ "Assign this gang member to launder money
" +
+ "Earns money - Increases respect - Increases wanted level",
+ {baseRespect: 0.0006, baseWanted:0.2, baseMoney: 40,
+ hackWeight: 75, chaWeight: 25, difficulty: 20}),
+ "Cyberterrorism" : new GangMemberTask(
+ "Cyberterrorism",
+ "Assign this gang member to commit acts of cyberterrorism
" +
+ "Greatly increases respect - Greatly increases wanted level",
+ {baseRespect: 0.001, baseWanted: 0.5,
+ hackWeight: 80, chaWeight: 20, difficulty: 33}),
+ "Ethical Hacking" : new GangMemberTask(
+ "Ethical Hacking",
+ "Assign this gang member to be an ethical hacker for corporations
" +
+ "Earns money - Lowers wanted level",
+ {baseWanted: -0.001, baseMoney: 1,
+ hackWeight: 90, chaWeight: 10, difficulty: 1}),
+ "Mug People" : new GangMemberTask(
+ "Mug People",
+ "Assign this gang member to mug random people on the streets
" +
+ "Earns money - Slightly increases respect - Very slightly increases wanted level",
+ {baseRespect: 0.00005, baseWanted: 0.00001, baseMoney: 1,
+ strWeight: 25, defWeight: 25, dexWeight: 25, agiWeight: 10, chaWeight: 15, difficulty: 1}),
+ "Deal Drugs" : new GangMemberTask(
+ "Deal Drugs",
+ "Assign this gang member to sell drugs.
" +
+ "Earns money - Slightly increases respect - Slightly increases wanted level",
+ {baseRespect: 0.00008, baseWanted: 0.001, baseMoney: 4,
+ agiWeight: 20, dexWeight: 20, chaWeight: 60, difficulty: 3}),
+ "Run a Con" : new GangMemberTask(
+ "Run a Con",
+ "Assign this gang member to run cons
" +
+ "Earns money - Increases respect - Increases wanted level",
+ {baseRespect: 0.00015, baseWanted: 0.01, baseMoney: 10,
+ strWeight: 5, defWeight: 5, agiWeight: 25, dexWeight: 25, chaWeight: 40, difficulty: 10}),
+ "Armed Robbery" : new GangMemberTask(
+ "Armed Robbery",
+ "Assign this gang member to commit armed robbery on stores, banks and armored cars
" +
+ "Earns money - Increases respect - Increases wanted level",
+ {baseRespect: 0.00015, baseWanted: 0.05, baseMoney: 25,
+ hackWeight: 20, strWeight: 15, defWeight: 15, agiWeight: 10, dexWeight: 20, chaWeight: 20,
+ difficulty: 17}),
+ "Traffick Illegal Arms" : new GangMemberTask(
+ "Traffick Illegal Arms",
+ "Assign this gang member to traffick illegal arms
" +
+ "Earns money - Increases respect - Increases wanted level",
+ {baseRespect: 0.0003, baseWanted: 0.1, baseMoney: 40,
+ hackWeight: 15, strWeight: 20, defWeight: 20, dexWeight: 20, chaWeight: 75,
+ difficulty: 25}),
+ "Threaten & Blackmail" : new GangMemberTask(
+ "Threaten & Blackmail",
+ "Assign this gang member to threaten and black mail high-profile targets
" +
+ "Earns money - Slightly increases respect - Slightly increases wanted level",
+ {baseRespect: 0.0002, baseWanted: 0.05, baseMoney: 15,
+ hackWeight: 25, strWeight: 25, dexWeight: 25, chaWeight: 25, difficulty: 28}),
+ "Terrorism" : new GangMemberTask(
+ "Terrorism",
+ "Assign this gang member to commit acts of terrorism
" +
+ "Greatly increases respect - Greatly increases wanted level",
+ {baseRespect: 0.001, baseWanted: 1,
+ hackWeight: 20, strWeight: 20, defWeight: 20,dexWeight: 20, chaWeight: 20,
+ difficulty: 33}),
+ "Vigilante Justice" : new GangMemberTask(
+ "Vigilante Justice",
+ "Assign this gang member to be a vigilante and protect the city from criminals
" +
+ "Decreases wanted level",
+ {baseWanted: -0.001,
+ hackWeight: 20, strWeight: 20, defWeight: 20, dexWeight: 20, agiWeight:20,
+ difficulty: 1}),
+ "Train Combat" : new GangMemberTask(
+ "Train Combat",
+ "Assign this gang member to increase their combat stats (str, def, dex, agi)",
+ {strWeight: 25, defWeight: 25, dexWeight: 25, agiWeight: 25, difficulty: 5}),
+ "Train Hacking" : new GangMemberTask(
+ "Train Hacking",
+ "Assign this gang member to train their hacking skills",
+ {hackWeight: 100, difficulty: 8}),
+ "Territory Warfare" : new GangMemberTask(
+ "Territory Warfare",
+ "Assign this gang member to engage in territorial warfare with other gangs. " +
+ "Members assigned to this task will help increase your gang's territory " +
+ "and will defend your territory from being taken.",
+ {hackWeight: 15, strWeight: 20, defWeight: 20, dexWeight: 20, agiWeight: 20,
+ chaWeight: 5, difficulty: 3}),
+}
+
+
+function GangMemberUpgrade(name="", desc="", cost=0, type="w") {
+ this.name = name;
+ this.desc = desc;
+ this.cost = cost;
+ this.type = type; //w, a, v, r
+}
+
+//Passes in a GangMember object
+GangMemberUpgrade.prototype.apply = function(member) {
+ switch(this.name) {
+ case "Baseball Bat":
+ member.str_mult *= 1.05;
+ member.def_mult *= 1.05;
+ break;
+ case "Katana":
+ member.str_mult *= 1.1;
+ member.def_mult *= 1.1;
+ member.dex_mult *= 1.1;
+ break;
+ case "Glock 18C":
+ member.str_mult *= 1.15;
+ member.def_mult *= 1.15;
+ member.dex_mult *= 1.15;
+ member.agi_mult *= 1.15;
+ break;
+ case "P90C":
+ member.str_mult *= 1.2;
+ member.def_mult *= 1.2;
+ member.agi_mult *= 1.1;
+ break;
+ case "Steyr AUG":
+ member.str_mult *= 1.25;
+ member.def_mult *= 1.25;
+ break;
+ case "AK-47":
+ member.str_mult *= 1.5;
+ member.def_mult *= 1.5;
+ break;
+ case "M15A10 Assault Rifle":
+ member.str_mult *= 1.6;
+ member.def_mult *= 1.6;
+ break;
+ case "AWM Sniper Rifle":
+ member.str_mult *= 1.5;
+ member.dex_mult *= 1.5;
+ member.agi_mult *= 1.5;
+ break;
+ case "Bulletproof Vest":
+ member.def_mult *= 1.05;
+ break;
+ case "Full Body Armor":
+ member.def_mult *= 1.1;
+ break;
+ case "Liquid Body Armor":
+ member.def_mult *= 1.25;
+ member.agi_mult *= 1.25;
+ break;
+ case "Graphene Plating Armor":
+ member.def_mult *= 1.5;
+ break;
+ case "Ford Flex V20":
+ member.agi_mult *= 1.1;
+ member.cha_mult *= 1.1;
+ break;
+ case "ATX1070 Superbike":
+ member.agi_mult *= 1.15;
+ member.cha_mult *= 1.15;
+ break;
+ case "Mercedes-Benz S9001":
+ member.agi_mult *= 1.2;
+ member.cha_mult *= 1.2;
+ break;
+ case "White Ferrari":
+ member.agi_mult *= 1.25;
+ member.cha_mult *= 1.25;
+ break;
+ case "NUKE Rootkit":
+ member.hack_mult *= 1.1;
+ break;
+ case "Soulstealer Rootkit":
+ member.hack_mult *= 1.2;
+ break;
+ case "Demon Rootkit":
+ member.hack_mult *= 1.3;
+ break;
+ default:
+ console.log("ERROR: Could not find this upgrade: " + this.name);
+ break;
+ }
+}
+
+GangMemberUpgrade.prototype.toJSON = function() {
+ return Object(_utils_JSONReviver_js__WEBPACK_IMPORTED_MODULE_5__["Generic_toJSON"])("GangMemberUpgrade", this);
+}
+
+GangMemberUpgrade.fromJSON = function(value) {
+ return Object(_utils_JSONReviver_js__WEBPACK_IMPORTED_MODULE_5__["Generic_fromJSON"])(GangMemberUpgrade, value.data);
+}
+
+_utils_JSONReviver_js__WEBPACK_IMPORTED_MODULE_5__["Reviver"].constructors.GangMemberUpgrade = GangMemberUpgrade;
+
+let GangMemberUpgrades = {
+ "Baseball Bat" : new GangMemberUpgrade("Baseball Bat",
+ "Increases strength and defense by 5%", 1e6, "w"),
+ "Katana" : new GangMemberUpgrade("Katana",
+ "Increases strength, defense, and dexterity by 10%", 12e6, "w"),
+ "Glock 18C" : new GangMemberUpgrade("Glock 18C",
+ "Increases strength, defense, dexterity, and agility by 15%", 25e6, "w"),
+ "P90C" : new GangMemberUpgrade("P90C",
+ "Increases strength and defense by 20%. Increases agility by 10%", 50e6, "w"),
+ "Steyr AUG" : new GangMemberUpgrade("Steyr AUG",
+ "Increases strength and defense by 25%", 60e6, "w"),
+ "AK-47" : new GangMemberUpgrade("AK-47",
+ "Increases strength and defense by 50%", 100e6, "w"),
+ "M15A10 Assault Rifle" : new GangMemberUpgrade("M15A10 Assault Rifle",
+ "Increases strength and defense by 60%", 150e6, "w"),
+ "AWM Sniper Rifle" : new GangMemberUpgrade("AWM Sniper Rifle",
+ "Increases strength, dexterity, and agility by 50%", 225e6, "w"),
+ "Bulletproof Vest" : new GangMemberUpgrade("Bulletproof Vest",
+ "Increases defense by 5%", 2e6, "a"),
+ "Full Body Armor" : new GangMemberUpgrade("Full Body Armor",
+ "Increases defense by 10%", 5e6, "a"),
+ "Liquid Body Armor" : new GangMemberUpgrade("Liquid Body Armor",
+ "Increases defense and agility by 25%", 25e6, "a"),
+ "Graphene Plating Armor" : new GangMemberUpgrade("Graphene Plating Armor",
+ "Increases defense by 50%", 40e6, "a"),
+ "Ford Flex V20" : new GangMemberUpgrade("Ford Flex V20",
+ "Increases agility and charisma by 10%", 3e6, "v"),
+ "ATX1070 Superbike" : new GangMemberUpgrade("ATX1070 Superbike",
+ "Increases agility and charisma by 15%", 9e6, "v"),
+ "Mercedes-Benz S9001" : new GangMemberUpgrade("Mercedes-Benz S9001",
+ "Increases agility and charisma by 20%", 18e6, "v"),
+ "White Ferrari" : new GangMemberUpgrade("White Ferrari",
+ "Increases agility and charisma by 25%", 30e6, "v"),
+ "NUKE Rootkit" : new GangMemberUpgrade("NUKE Rootkit",
+ "Increases hacking by 10%", 5e6, "r"),
+ "Soulstealer Rootkit" : new GangMemberUpgrade("Soulstealer Rootkit",
+ "Increases hacking by 20%", 15e6, "r"),
+ "Demon Rootkit" : new GangMemberUpgrade("Demon Rootkit",
+ "Increases hacking by 30%", 50e6, "r"),
+}
+
+//Create a pop-up box that lets player purchase upgrades
+let gangMemberUpgradeBoxOpened = false;
+function createGangMemberUpgradeBox(initialFilter="") {
+ var boxId = "gang-member-upgrade-popup-box";
+ if (gangMemberUpgradeBoxOpened) {
+ //Already opened, refreshing
+ if (gangMemberUpgradeBoxElements == null || gangMemberUpgradeBox == null || gangMemberUpgradeBoxContent == null) {
+ console.log("ERROR: Refreshing Gang member upgrade box throws error because required elements are null");
+ return;
+ }
+
+ for (var i = 1; i < gangMemberUpgradeBoxElements.length; ++i) {
+ Object(_utils_HelperFunctions_js__WEBPACK_IMPORTED_MODULE_6__["removeElement"])(gangMemberUpgradeBoxElements[i]);
+ }
+ gangMemberUpgradeBoxElements = [gangMemberUpgradeBoxFilter];
+
+ var filter = gangMemberUpgradeBoxFilter.value.toString();
+ for (var i = 0; i < _Player_js__WEBPACK_IMPORTED_MODULE_3__["Player"].gang.members.length; ++i) {
+ if (_Player_js__WEBPACK_IMPORTED_MODULE_3__["Player"].gang.members[i].name.indexOf(filter) > -1 || _Player_js__WEBPACK_IMPORTED_MODULE_3__["Player"].gang.members[i].task.name.indexOf(filter) > -1) {
+ var newPanel = createGangMemberUpgradePanel(_Player_js__WEBPACK_IMPORTED_MODULE_3__["Player"].gang.members[i]);
+ gangMemberUpgradeBoxContent.appendChild(newPanel);
+ gangMemberUpgradeBoxElements.push(newPanel);
+ }
+ }
+ } else {
+ //New popup
+ gangMemberUpgradeBoxFilter = Object(_utils_HelperFunctions_js__WEBPACK_IMPORTED_MODULE_6__["createElement"])("input", {
+ type:"text", placeholder:"Filter gang members",
+ value:initialFilter,
+ onkeyup:()=>{
+ var filterValue = gangMemberUpgradeBoxFilter.value.toString();
+ createGangMemberUpgradeBox(filterValue);
+ }
+ });
+
+ gangMemberUpgradeBoxElements = [gangMemberUpgradeBoxFilter];
+
+ var filter = gangMemberUpgradeBoxFilter.value.toString();
+ for (var i = 0; i < _Player_js__WEBPACK_IMPORTED_MODULE_3__["Player"].gang.members.length; ++i) {
+ if (_Player_js__WEBPACK_IMPORTED_MODULE_3__["Player"].gang.members[i].name.indexOf(filter) > -1 || _Player_js__WEBPACK_IMPORTED_MODULE_3__["Player"].gang.members[i].task.name.indexOf(filter) > -1) {
+ gangMemberUpgradeBoxElements.push(createGangMemberUpgradePanel(_Player_js__WEBPACK_IMPORTED_MODULE_3__["Player"].gang.members[i]));
+ }
+ }
+
+ gangMemberUpgradeBox = Object(_utils_HelperFunctions_js__WEBPACK_IMPORTED_MODULE_6__["createPopup"])(boxId, gangMemberUpgradeBoxElements);
+ gangMemberUpgradeBoxContent = document.getElementById(boxId + "-content");
+ gangMemberUpgradeBoxOpened = true;
+ }
+}
+
+//Create upgrade panels for each individual Gang Member
+function createGangMemberUpgradePanel(memberObj) {
+ var container = Object(_utils_HelperFunctions_js__WEBPACK_IMPORTED_MODULE_6__["createElement"])("div", {
+ border:"1px solid white",
+ });
+
+ var header = Object(_utils_HelperFunctions_js__WEBPACK_IMPORTED_MODULE_6__["createElement"])("h1", {
+ innerText:memberObj.name + " (" + memberObj.task.name + ")"
+ });
+ container.appendChild(header);
+
+ var text = Object(_utils_HelperFunctions_js__WEBPACK_IMPORTED_MODULE_6__["createElement"])("pre", {
+ fontSize:"14px", display: "inline-block", width:"20%",
+ innerText:
+ "Hack: " + memberObj.hack + " (x" + Object(_utils_StringHelperFunctions_js__WEBPACK_IMPORTED_MODULE_8__["formatNumber"])(memberObj.hack_mult, 2) + ")\n" +
+ "Str: " + memberObj.str + " (x" + Object(_utils_StringHelperFunctions_js__WEBPACK_IMPORTED_MODULE_8__["formatNumber"])(memberObj.str_mult, 2) + ")\n" +
+ "Def: " + memberObj.def + " (x" + Object(_utils_StringHelperFunctions_js__WEBPACK_IMPORTED_MODULE_8__["formatNumber"])(memberObj.def_mult, 2) + ")\n" +
+ "Dex: " + memberObj.dex + " (x" + Object(_utils_StringHelperFunctions_js__WEBPACK_IMPORTED_MODULE_8__["formatNumber"])(memberObj.dex_mult, 2) + ")\n" +
+ "Agi: " + memberObj.agi + " (x" + Object(_utils_StringHelperFunctions_js__WEBPACK_IMPORTED_MODULE_8__["formatNumber"])(memberObj.agi_mult, 2) + ")\n" +
+ "Cha: " + memberObj.cha + " (x" + Object(_utils_StringHelperFunctions_js__WEBPACK_IMPORTED_MODULE_8__["formatNumber"])(memberObj.cha_mult, 2) + ")\n",
+ });
+
+ //Already purchased upgrades
+ var ownedUpgradesElements = [];
+ for (var i = 0; i < memberObj.upgrades.length; ++i) {
+ var upg = GangMemberUpgrades[memberObj.upgrades[i]];
+ if (upg == null) {
+ console.log("ERR: Could not find this upgrade: " + memberObj.upgrades[i]);
+ continue;
+ }
+ var e = Object(_utils_HelperFunctions_js__WEBPACK_IMPORTED_MODULE_6__["createElement"])("div", {
+ border:"1px solid white", innerText:memberObj.upgrades[i],
+ margin:"1px", padding:"1px", tooltip:upg.desc, fontSize:"12px",
+ });
+ ownedUpgradesElements.push(e);
+ }
+ var ownedUpgrades = Object(_utils_HelperFunctions_js__WEBPACK_IMPORTED_MODULE_6__["createElement"])("div", {
+ display:"inline-block", marginLeft:"6px", width:"75%", innerText:"Purchased Upgrades:",
+ });
+ for (var i = 0; i < ownedUpgradesElements.length; ++i) {
+ ownedUpgrades.appendChild(ownedUpgradesElements[i]);
+ }
+ container.appendChild(text);
+ container.appendChild(ownedUpgrades);
+ container.appendChild(Object(_utils_HelperFunctions_js__WEBPACK_IMPORTED_MODULE_6__["createElement"])("br", {}));
+
+ //Upgrade buttons. Only show upgrades that can be afforded
+ var weaponUpgrades = [], armorUpgrades = [], vehicleUpgrades = [], rootkitUpgrades = [];
+ for (var upgName in GangMemberUpgrades) {
+ if (GangMemberUpgrades.hasOwnProperty(upgName)) {
+ var upg = GangMemberUpgrades[upgName];
+ if (_Player_js__WEBPACK_IMPORTED_MODULE_3__["Player"].money.lt(upg.cost) || memberObj.upgrades.includes(upgName)) {continue;}
+ switch (upg.type) {
+ case "w":
+ weaponUpgrades.push(upg);
+ break;
+ case "a":
+ armorUpgrades.push(upg);
+ break;
+ case "v":
+ vehicleUpgrades.push(upg);
+ break;
+ case "r":
+ rootkitUpgrades.push(upg);
+ break;
+ default:
+ console.log("ERROR: Invalid Gang Member Upgrade Type: " + upg.type);
+ }
+ }
+ }
+
+ var weaponDiv = Object(_utils_HelperFunctions_js__WEBPACK_IMPORTED_MODULE_6__["createElement"])("div", {width:"20%", display:"inline-block",});
+ var armorDiv = Object(_utils_HelperFunctions_js__WEBPACK_IMPORTED_MODULE_6__["createElement"])("div", {width:"20%", display:"inline-block",});
+ var vehicleDiv = Object(_utils_HelperFunctions_js__WEBPACK_IMPORTED_MODULE_6__["createElement"])("div", {width:"20%", display:"inline-block",});
+ var rootkitDiv = Object(_utils_HelperFunctions_js__WEBPACK_IMPORTED_MODULE_6__["createElement"])("div", {width:"20%", display:"inline-block",});
+ var upgrades = [weaponUpgrades, armorUpgrades, vehicleUpgrades, rootkitUpgrades];
+ var divs = [weaponDiv, armorDiv, vehicleDiv, rootkitDiv];
+
+ for (var i = 0; i < upgrades.length; ++i) {
+ var upgradeArray = upgrades[i];
+ var div = divs[i];
+ for (var j = 0; j < upgradeArray.length; ++j) {
+ var upg = upgradeArray[j];
+ (function (upg, div, memberObj) {
+ div.appendChild(Object(_utils_HelperFunctions_js__WEBPACK_IMPORTED_MODULE_6__["createElement"])("a", {
+ innerText:upg.name + " - " + numeral_min_numeral_min__WEBPACK_IMPORTED_MODULE_7___default()(upg.cost).format("$0.000a"),
+ class:"a-link-button", margin:"2px", padding:"2px", display:"block",
+ fontSize:"12px",
+ tooltip:upg.desc,
+ clickListener:()=>{
+ if (_Player_js__WEBPACK_IMPORTED_MODULE_3__["Player"].money.lt(upg.cost)) {return false;}
+ _Player_js__WEBPACK_IMPORTED_MODULE_3__["Player"].loseMoney(upg.cost);
+ memberObj.upgrades.push(upg.name);
+ upg.apply(memberObj);
+ var initFilterValue = gangMemberUpgradeBoxFilter.value.toString();
+ createGangMemberUpgradeBox(initFilterValue);
+ return false;
+ }
+ }));
+ })(upg, div, memberObj);
+ }
+ }
+
+ container.appendChild(weaponDiv);
+ container.appendChild(armorDiv);
+ container.appendChild(vehicleDiv);
+ container.appendChild(rootkitDiv);
+ return container;
+}
+
+//Gang DOM elements
+let gangContentCreated = false,
+ gangContainer = null, managementButton = null, territoryButton = null;
+
+//Subpages
+let gangManagementSubpage = null, gangTerritorySubpage = null;
+
+//Gang Management Elements
+let gangDesc = null, gangInfo = null,
+ gangRecruitMemberButton = null, gangRecruitRequirementText = null,
+ gangExpandAllButton = null, gangCollapseAllButton, gangMemberFilter = null,
+ gangManageEquipmentButton = null,
+ gangMemberList = null;
+
+//Gang Equipment Upgrade Elements
+let gangMemberUpgradeBox = null, gangMemberUpgradeBoxContent = null,
+ gangMemberUpgradeBoxFilter = null, gangMemberUpgradeBoxElements = null;
+
+
+//Gang Territory Elements
+let gangTerritoryDescText = null, gangTerritoryInfoText = null;
+
+function displayGangContent() {
+ if (!gangContentCreated || gangContainer == null) {
+ gangContentCreated = true;
+
+ //Create gang container
+ gangContainer = Object(_utils_HelperFunctions_js__WEBPACK_IMPORTED_MODULE_6__["createElement"])("div", {
+ id:"gang-container", class:"generic-menupage-container",
+ });
+
+ //Get variables
+ var facName = _Player_js__WEBPACK_IMPORTED_MODULE_3__["Player"].gang.facName,
+ members = _Player_js__WEBPACK_IMPORTED_MODULE_3__["Player"].gang.members,
+ wanted = _Player_js__WEBPACK_IMPORTED_MODULE_3__["Player"].gang.wanted,
+ respect = _Player_js__WEBPACK_IMPORTED_MODULE_3__["Player"].gang.respect;
+
+ //Back button
+ gangContainer.appendChild(Object(_utils_HelperFunctions_js__WEBPACK_IMPORTED_MODULE_6__["createElement"])("a", {
+ class:"a-link-button", display:"inline-block", innerText:"Back",
+ clickListener:()=>{
+ _engine_js__WEBPACK_IMPORTED_MODULE_1__["Engine"].loadFactionContent();
+ Object(_Faction_js__WEBPACK_IMPORTED_MODULE_2__["displayFactionContent"])(facName);
+ return false;
+ }
+ }));
+
+ //Buttons to switch between panels
+ managementButton = Object(_utils_HelperFunctions_js__WEBPACK_IMPORTED_MODULE_6__["createElement"])("a", {
+ id:"gang-management-subpage-button", class:"a-link-button-inactive",
+ display:"inline-block", innerHTML: "Gang Management (1)",
+ clickListener:()=>{
+ gangManagementSubpage.style.display = "block";
+ gangTerritorySubpage.style.display = "none";
+ managementButton.classList.toggle("a-link-button-inactive");
+ managementButton.classList.toggle("a-link-button");
+ territoryButton.classList.toggle("a-link-button-inactive");
+ territoryButton.classList.toggle("a-link-button");
+ updateGangContent();
+ return false;
+ }
+ })
+ territoryButton = Object(_utils_HelperFunctions_js__WEBPACK_IMPORTED_MODULE_6__["createElement"])("a", {
+ id:"gang-territory-subpage-button", class:"a-link-button",
+ display:"inline-block", innerHTML:"Gang Territory (2)",
+ clickListener:()=>{
+ gangManagementSubpage.style.display = "none";
+ gangTerritorySubpage.style.display = "block";
+ managementButton.classList.toggle("a-link-button-inactive");
+ managementButton.classList.toggle("a-link-button");
+ territoryButton.classList.toggle("a-link-button-inactive");
+ territoryButton.classList.toggle("a-link-button");
+ updateGangContent();
+ return false;
+ }
+ });
+ gangContainer.appendChild(managementButton);
+ gangContainer.appendChild(territoryButton);
+
+ //Subpage for managing gang members
+ gangManagementSubpage = Object(_utils_HelperFunctions_js__WEBPACK_IMPORTED_MODULE_6__["createElement"])("div", {
+ display:"block", id:"gang-management-subpage",
+ });
+
+ var lowerWantedTask = "";
+ if (_Player_js__WEBPACK_IMPORTED_MODULE_3__["Player"].gang.isHackingGang) {
+ lowerWantedTask = "Ethical Hacking";
+ } else {
+ lowerWantedTask = "Vigilante Justice";
+ }
+ gangDesc = Object(_utils_HelperFunctions_js__WEBPACK_IMPORTED_MODULE_6__["createElement"])("p", {width:"70%",
+ innerHTML:
+ "This page is used to manage your gang members and get an overview of your " +
+ "gang's stats.
" +
+ "If a gang member is not earning much money or respect, the task that you " +
+ "have assigned to that member might be too difficult. Consider training that " +
+ "member's stats or choosing an easier task. The tasks closer to the " +
+ "top of the dropdown list are generally easier. Alternatively, the gang member's " +
+ "low production might be due to the fact that your wanted level is too high. " +
+ "Consider assigning a few members to the '" + lowerWantedTask + "' " +
+ "task to lower your wanted level.
" +
+ "Installing Augmentations does NOT reset your progress with your Gang. " +
+ "Furthermore, after installing Augmentations, you will " +
+ "automatically be a member of whatever Faction you created your gang with.
"
+ });
+ gangManagementSubpage.appendChild(gangDesc);
+
+ gangInfo = Object(_utils_HelperFunctions_js__WEBPACK_IMPORTED_MODULE_6__["createElement"])("p", {id:"gang-info", width:"70%"});
+ gangManagementSubpage.appendChild(gangInfo);
+
+ gangRecruitMemberButton = Object(_utils_HelperFunctions_js__WEBPACK_IMPORTED_MODULE_6__["createElement"])("a", {
+ id:"gang-management-recruit-member-btn", class:"a-link-button-inactive",
+ innerHTML:"Recruit Gang Member", display:"inline-block", margin:"10px",
+ clickListener:()=>{
+ var yesBtn = Object(_utils_YesNoBox_js__WEBPACK_IMPORTED_MODULE_9__["yesNoTxtInpBoxGetYesButton"])(), noBtn = Object(_utils_YesNoBox_js__WEBPACK_IMPORTED_MODULE_9__["yesNoTxtInpBoxGetNoButton"])();
+ yesBtn.innerHTML = "Recruit Gang Member";
+ noBtn.innerHTML = "Cancel";
+ yesBtn.addEventListener("click", ()=>{
+ var name = Object(_utils_YesNoBox_js__WEBPACK_IMPORTED_MODULE_9__["yesNoTxtInpBoxGetInput"])();
+ if (name === "") {
+ Object(_utils_DialogBox_js__WEBPACK_IMPORTED_MODULE_4__["dialogBoxCreate"])("You must enter a name for your Gang member!");
+ } else {
+ for (var i = 0; i < _Player_js__WEBPACK_IMPORTED_MODULE_3__["Player"].gang.members.length; ++i) {
+ if (name == _Player_js__WEBPACK_IMPORTED_MODULE_3__["Player"].gang.members[i].name) {
+ Object(_utils_DialogBox_js__WEBPACK_IMPORTED_MODULE_4__["dialogBoxCreate"])("You already have a gang member with this name!");
+ return false;
+ }
+ }
+ var member = new GangMember(name);
+ _Player_js__WEBPACK_IMPORTED_MODULE_3__["Player"].gang.members.push(member);
+ createGangMemberDisplayElement(member);
+ updateGangContent();
+ }
+ Object(_utils_YesNoBox_js__WEBPACK_IMPORTED_MODULE_9__["yesNoTxtInpBoxClose"])();
+ });
+ noBtn.addEventListener("click", ()=>{
+ Object(_utils_YesNoBox_js__WEBPACK_IMPORTED_MODULE_9__["yesNoTxtInpBoxClose"])();
+ });
+ Object(_utils_YesNoBox_js__WEBPACK_IMPORTED_MODULE_9__["yesNoTxtInpBoxCreate"])("Please enter a name for your new Gang member:");
+ return false;
+ }
+ });
+ gangManagementSubpage.appendChild(gangRecruitMemberButton);
+
+ //Text for how much reputation is required for recruiting next memberList
+ gangRecruitRequirementText = Object(_utils_HelperFunctions_js__WEBPACK_IMPORTED_MODULE_6__["createElement"])("p", {color:"red", id:"gang-recruit-requirement-text"});
+ gangManagementSubpage.appendChild(gangRecruitRequirementText);
+
+ //Gang Member List management buttons (Expand/Collapse All, select a single member)
+ gangManagementSubpage.appendChild(Object(_utils_HelperFunctions_js__WEBPACK_IMPORTED_MODULE_6__["createElement"])("br", {}));
+ gangExpandAllButton = Object(_utils_HelperFunctions_js__WEBPACK_IMPORTED_MODULE_6__["createElement"])("a", {
+ class:"a-link-button", display:"inline-block",
+ innerHTML:"Expand All",
+ clickListener:()=>{
+ var allHeaders = gangManagementSubpage.getElementsByClassName("accordion-header");
+ for (var i = 0; i < allHeaders.length; ++i) {
+ var hdr = allHeaders[i];
+ if (!hdr.classList.contains("active")) {
+ hdr.click();
+ }
+ }
+ return false;
+ }
+ });
+ gangCollapseAllButton = Object(_utils_HelperFunctions_js__WEBPACK_IMPORTED_MODULE_6__["createElement"])("a", {
+ class:"a-link-button", display:"inline-block",
+ innerHTML:"Collapse All",
+ clickListener:()=>{
+ var allHeaders = gangManagementSubpage.getElementsByClassName("accordion-header");
+ for (var i = 0; i < allHeaders.length; ++i) {
+ var hdr = allHeaders[i];
+ if (hdr.classList.contains("active")) {
+ hdr.click();
+ }
+ }
+ return false;
+ }
+ });
+ gangMemberFilter = Object(_utils_HelperFunctions_js__WEBPACK_IMPORTED_MODULE_6__["createElement"])("input", {
+ type:"text", placeholder:"Filter gang members", margin:"5px", padding:"5px",
+ onkeyup:()=>{
+ displayGangMemberList();
+ }
+ });
+ gangManageEquipmentButton = Object(_utils_HelperFunctions_js__WEBPACK_IMPORTED_MODULE_6__["createElement"])("a", {
+ class:"a-link-button", display:"inline-block",
+ innerHTML:"Manage Equipment",
+ clickListener:()=>{
+ createGangMemberUpgradeBox();
+ }
+ });
+ gangManagementSubpage.appendChild(gangExpandAllButton);
+ gangManagementSubpage.appendChild(gangCollapseAllButton);
+ gangManagementSubpage.appendChild(gangMemberFilter);
+ gangManagementSubpage.appendChild(gangManageEquipmentButton);
+
+ //Gang Member list
+ gangMemberList = Object(_utils_HelperFunctions_js__WEBPACK_IMPORTED_MODULE_6__["createElement"])("ul", {id:"gang-member-list"});
+ displayGangMemberList();
+ gangManagementSubpage.appendChild(gangMemberList);
+
+ //Subpage for seeing gang territory information
+ gangTerritorySubpage = Object(_utils_HelperFunctions_js__WEBPACK_IMPORTED_MODULE_6__["createElement"])("div", {
+ id:"gang-territory-subpage", display:"none"
+ });
+
+ //Info text for territory page
+ gangTerritoryDescText = Object(_utils_HelperFunctions_js__WEBPACK_IMPORTED_MODULE_6__["createElement"])("p", {
+ width:"70%",
+ innerHTML:"This page shows how much territory your Gang controls. This statistic is listed as a percentage, " +
+ "which represents how much of the total territory you control.
" +
+ "Territory gain and loss is processed automatically and is updated every ~30 seconds. Your chances " +
+ "to gain and lose territory depend on your Gang's power, which is listed in the display below. " +
+ "Your gang's power is determined by the stats of all Gang members you have assigned to the " +
+ "'Territory Warfare' task. Gang members that are not assigned to this task do not contribute to " +
+ "your Gang's power.
" +
+ "The amount of territory you have affects all aspects of your Gang members' production, including " +
+ "money, respect, and wanted level. It is very beneficial to have high territory control.
"
+ });
+ gangTerritorySubpage.appendChild(gangTerritoryDescText);
+
+ var territoryBorder = Object(_utils_HelperFunctions_js__WEBPACK_IMPORTED_MODULE_6__["createElement"])("fieldset", {width:"50%", display:"inline-block"});
+
+ gangTerritoryInfoText = Object(_utils_HelperFunctions_js__WEBPACK_IMPORTED_MODULE_6__["createElement"])("p", {id:"gang-territory-info"});
+
+ territoryBorder.appendChild(gangTerritoryInfoText);
+ gangTerritorySubpage.appendChild(territoryBorder);
+
+ gangContainer.appendChild(gangTerritorySubpage);
+ gangContainer.appendChild(gangManagementSubpage);
+ document.getElementById("entire-game-container").appendChild(gangContainer);
+ }
+ gangContainer.style.display = "block";
+ updateGangContent();
+}
+
+function displayGangMemberList() {
+ Object(_utils_HelperFunctions_js__WEBPACK_IMPORTED_MODULE_6__["removeChildrenFromElement"])(gangMemberList);
+ var members = _Player_js__WEBPACK_IMPORTED_MODULE_3__["Player"].gang.members;
+ var filter = gangMemberFilter.value.toString();
+ for (var i = 0; i < members.length; ++i) {
+ if (members[i].name.indexOf(filter) > -1 || members[i].task.name.indexOf(filter) > -1) {
+ createGangMemberDisplayElement(members[i]);
+ }
+ }
+ //setGangMemberClickHandlers(); //Set buttons to toggle the gang member info panels
+}
+
+function updateGangContent() {
+ if (!gangContentCreated || !_Player_js__WEBPACK_IMPORTED_MODULE_3__["Player"].inGang()) {return;}
+
+ if(gangTerritorySubpage.style.display === "block") {
+ //Update territory information
+ gangTerritoryInfoText.innerHTML = "";
+ for (var gangname in AllGangs) {
+ if (AllGangs.hasOwnProperty(gangname)) {
+ var gangTerritoryInfo = AllGangs[gangname];
+ let territory = gangTerritoryInfo.territory*100;
+
+ //Fix some rounding issues graphically
+ let displayNumber;
+ if (territory <= 0) {
+ displayNumber = Object(_utils_StringHelperFunctions_js__WEBPACK_IMPORTED_MODULE_8__["formatNumber"])(0, 2);
+ } else if (territory >= 100) {
+ displayNumber = Object(_utils_StringHelperFunctions_js__WEBPACK_IMPORTED_MODULE_8__["formatNumber"])(100, 2);
+ } else {
+ displayNumber = Object(_utils_StringHelperFunctions_js__WEBPACK_IMPORTED_MODULE_8__["formatNumber"])(territory, 2);
+ }
+
+ if (gangname == _Player_js__WEBPACK_IMPORTED_MODULE_3__["Player"].gang.facName) {
+ gangTerritoryInfoText.innerHTML += ("" + gangname + "
(Power: " + Object(_utils_StringHelperFunctions_js__WEBPACK_IMPORTED_MODULE_8__["formatNumber"])(gangTerritoryInfo.power, 6) + "): " +
+ displayNumber + "%
");
+ } else {
+ gangTerritoryInfoText.innerHTML += (gangname + "
(Power: " + Object(_utils_StringHelperFunctions_js__WEBPACK_IMPORTED_MODULE_8__["formatNumber"])(gangTerritoryInfo.power, 6) + "): " +
+ displayNumber + "%
");
+ }
+ }
+ }
+ } else {
+ //Update information for overall gang
+ if (gangInfo instanceof Element) {
+ var faction = _Faction_js__WEBPACK_IMPORTED_MODULE_2__["Factions"][_Player_js__WEBPACK_IMPORTED_MODULE_3__["Player"].gang.facName];
+ var rep;
+ if (!(faction instanceof _Faction_js__WEBPACK_IMPORTED_MODULE_2__["Faction"])) {
+ rep = "ERROR";
+ } else {
+ rep = faction.playerReputation;
+ }
+ Object(_utils_HelperFunctions_js__WEBPACK_IMPORTED_MODULE_6__["removeChildrenFromElement"])(gangInfo);
+ gangInfo.appendChild(Object(_utils_HelperFunctions_js__WEBPACK_IMPORTED_MODULE_6__["createElement"])("p", { //Respect
+ display:"inline-block",
+ innerText:"Respect: " + Object(_utils_StringHelperFunctions_js__WEBPACK_IMPORTED_MODULE_8__["formatNumber"])(_Player_js__WEBPACK_IMPORTED_MODULE_3__["Player"].gang.respect, 6) +
+ " (" + Object(_utils_StringHelperFunctions_js__WEBPACK_IMPORTED_MODULE_8__["formatNumber"])(5*_Player_js__WEBPACK_IMPORTED_MODULE_3__["Player"].gang.respectGainRate, 6) + " / sec)",
+ tooltip:"Represents the amount of respect your gang has from other gangs and criminal " +
+ "organizations. Your respect affects the amount of money " +
+ "your gang members will earn, and also determines how much " +
+ "reputation you are earning with your gang's corresponding Faction."
+ }));
+ gangInfo.appendChild(Object(_utils_HelperFunctions_js__WEBPACK_IMPORTED_MODULE_6__["createElement"])("br", {}));
+
+ gangInfo.appendChild(Object(_utils_HelperFunctions_js__WEBPACK_IMPORTED_MODULE_6__["createElement"])("p", { //Wanted level
+ display:"inline-block",
+ innerText:"Wanted Level: " + Object(_utils_StringHelperFunctions_js__WEBPACK_IMPORTED_MODULE_8__["formatNumber"])(_Player_js__WEBPACK_IMPORTED_MODULE_3__["Player"].gang.wanted, 6) +
+ " (" + Object(_utils_StringHelperFunctions_js__WEBPACK_IMPORTED_MODULE_8__["formatNumber"])(5*_Player_js__WEBPACK_IMPORTED_MODULE_3__["Player"].gang.wantedGainRate, 6) + " / sec)",
+ tooltip:"Represents how much the gang is wanted by law enforcement. The higher " +
+ "your gang's wanted level, the harder it will be for your gang members " +
+ "to make money and earn respect. Note that the minimum wanted level is 1."
+ }));
+ gangInfo.appendChild(Object(_utils_HelperFunctions_js__WEBPACK_IMPORTED_MODULE_6__["createElement"])("br", {}));
+
+ var wantedPenalty = (_Player_js__WEBPACK_IMPORTED_MODULE_3__["Player"].gang.respect) / (_Player_js__WEBPACK_IMPORTED_MODULE_3__["Player"].gang.respect + _Player_js__WEBPACK_IMPORTED_MODULE_3__["Player"].gang.wanted);
+ wantedPenalty = (1 - wantedPenalty) * 100;
+ gangInfo.appendChild(Object(_utils_HelperFunctions_js__WEBPACK_IMPORTED_MODULE_6__["createElement"])("p", { //Wanted Level multiplier
+ display:"inline-block",
+ innerText:"Wanted Level Penalty: -" + Object(_utils_StringHelperFunctions_js__WEBPACK_IMPORTED_MODULE_8__["formatNumber"])(wantedPenalty, 2) + "%",
+ tooltip:"Penalty for respect and money gain rates due to Wanted Level"
+ }));
+ gangInfo.appendChild(Object(_utils_HelperFunctions_js__WEBPACK_IMPORTED_MODULE_6__["createElement"])("br", {}));
+
+ gangInfo.appendChild(Object(_utils_HelperFunctions_js__WEBPACK_IMPORTED_MODULE_6__["createElement"])("p", { //Money gain rate
+ display:"inline-block",
+ innerText:"Money gain rate: $" + Object(_utils_StringHelperFunctions_js__WEBPACK_IMPORTED_MODULE_8__["formatNumber"])(5*_Player_js__WEBPACK_IMPORTED_MODULE_3__["Player"].gang.moneyGainRate, 2) +
+ " / sec",
+ }));
+ gangInfo.appendChild(Object(_utils_HelperFunctions_js__WEBPACK_IMPORTED_MODULE_6__["createElement"])("br", {}));
+
+ //Fix some rounding issues graphically
+ var territoryMult = AllGangs[_Player_js__WEBPACK_IMPORTED_MODULE_3__["Player"].gang.facName].territory * 100;
+ let displayNumber;
+ if (territoryMult <= 0) {
+ displayNumber = Object(_utils_StringHelperFunctions_js__WEBPACK_IMPORTED_MODULE_8__["formatNumber"])(0, 2);
+ } else if (territoryMult >= 100) {
+ displayNumber = Object(_utils_StringHelperFunctions_js__WEBPACK_IMPORTED_MODULE_8__["formatNumber"])(100, 2);
+ } else {
+ displayNumber = Object(_utils_StringHelperFunctions_js__WEBPACK_IMPORTED_MODULE_8__["formatNumber"])(territoryMult, 2);
+ }
+ gangInfo.appendChild(Object(_utils_HelperFunctions_js__WEBPACK_IMPORTED_MODULE_6__["createElement"])("p", { //Territory multiplier
+ display:"inline-block",
+ innerText:"Territory: " + Object(_utils_StringHelperFunctions_js__WEBPACK_IMPORTED_MODULE_8__["formatNumber"])(displayNumber, 3) + "%",
+ tooltip:"The percentage of total territory your Gang controls"
+ }));
+ gangInfo.appendChild(Object(_utils_HelperFunctions_js__WEBPACK_IMPORTED_MODULE_6__["createElement"])("br", {}));
+
+ gangInfo.appendChild(Object(_utils_HelperFunctions_js__WEBPACK_IMPORTED_MODULE_6__["createElement"])("p", { //Faction reputation
+ display:"inline-block",
+ innerText:"Faction reputation: " + Object(_utils_StringHelperFunctions_js__WEBPACK_IMPORTED_MODULE_8__["formatNumber"])(rep, 3)
+ }));
+ gangInfo.appendChild(Object(_utils_HelperFunctions_js__WEBPACK_IMPORTED_MODULE_6__["createElement"])("br", {}));
+ } else {
+ console.log("ERROR: gang-info DOM element DNE");
+ }
+
+ //Toggle the 'Recruit member button' if valid
+ var numMembers = _Player_js__WEBPACK_IMPORTED_MODULE_3__["Player"].gang.members.length;
+ var repCost = 0;
+ if (numMembers > 0) {
+ var repCost = Math.pow(_Constants_js__WEBPACK_IMPORTED_MODULE_0__["CONSTANTS"].GangRecruitCostMultiplier, numMembers);
+ }
+ var faction = _Faction_js__WEBPACK_IMPORTED_MODULE_2__["Factions"][_Player_js__WEBPACK_IMPORTED_MODULE_3__["Player"].gang.facName];
+ if (faction == null) {
+ Object(_utils_DialogBox_js__WEBPACK_IMPORTED_MODULE_4__["dialogBoxCreate"])("Could not find your gang's faction. This is probably a bug please report to dev");
+ return;
+ }
+ var btn = gangRecruitMemberButton;
+ if (numMembers >= _Constants_js__WEBPACK_IMPORTED_MODULE_0__["CONSTANTS"].MaximumGangMembers) {
+ btn.className = "a-link-button-inactive";
+ gangRecruitRequirementText.style.display = "block";
+ gangRecruitRequirementText.innerHTML =
+ "You have reached the maximum amount of gang members";
+ } else if (faction.playerReputation >= repCost) {
+ btn.className = "a-link-button";
+ gangRecruitRequirementText.style.display = "none";
+ } else {
+ btn.className = "a-link-button-inactive";
+ gangRecruitRequirementText.style.display = "block";
+ gangRecruitRequirementText.innerHTML =
+ Object(_utils_StringHelperFunctions_js__WEBPACK_IMPORTED_MODULE_8__["formatNumber"])(repCost, 2) + " Faction reputation needed to recruit next member";
+ }
+
+ //Update information for each gang member
+ for (var i = 0; i < _Player_js__WEBPACK_IMPORTED_MODULE_3__["Player"].gang.members.length; ++i) {
+ updateGangMemberDisplayElement(_Player_js__WEBPACK_IMPORTED_MODULE_3__["Player"].gang.members[i]);
+ }
+ }
+}
+
+//Takes in a GangMember object
+function createGangMemberDisplayElement(memberObj) {
+ if (!gangContentCreated || !_Player_js__WEBPACK_IMPORTED_MODULE_3__["Player"].inGang()) {return;}
+ var name = memberObj.name;
+
+ var accordion = Object(_utils_HelperFunctions_js__WEBPACK_IMPORTED_MODULE_6__["createAccordionElement"])({
+ id:name + "gang-member",
+ hdrText:name,
+ });
+ var li = accordion[0];
+ var hdr = accordion[1];
+ var gangMemberDiv = accordion[2];
+
+ //Gang member content divided into 3 panels:
+ //Stats Panel
+ var statsDiv = Object(_utils_HelperFunctions_js__WEBPACK_IMPORTED_MODULE_6__["createElement"])("div", {
+ id: name + "gang-member-stats", class: "gang-member-info-div",
+ width:"30%", display:"inline"
+ });
+ var statsP = Object(_utils_HelperFunctions_js__WEBPACK_IMPORTED_MODULE_6__["createElement"])("p", {
+ id:name + "gang-member-stats-text", display:"inline"
+ });
+
+ statsDiv.appendChild(statsP);
+ //statsDiv.appendChild(upgradeButton);
+
+ //Panel for Selecting task and show respect/wanted gain
+ var taskDiv = Object(_utils_HelperFunctions_js__WEBPACK_IMPORTED_MODULE_6__["createElement"])("div", {
+ id: name + "gang-member-task", class:"gang-member-info-div",
+ width:"30%", display:"inline"
+ });
+ var taskSelector = Object(_utils_HelperFunctions_js__WEBPACK_IMPORTED_MODULE_6__["createElement"])("select", {
+ color:"white", backgroundColor:"black",
+ id:name + "gang-member-task-selector"
+ });
+
+ var tasks = null;
+ if (_Player_js__WEBPACK_IMPORTED_MODULE_3__["Player"].gang.isHackingGang) {
+ tasks = ["---", "Ransomware", "Phishing", "Identity Theft", "DDoS Attacks",
+ "Plant Virus", "Fraud & Counterfeiting","Money Laundering",
+ "Cyberterrorism", "Ethical Hacking", "Train Combat",
+ "Train Hacking", "Territory Warfare"];
+ } else {
+ tasks = ["---", "Mug People", "Deal Drugs", "Run a Con", "Armed Robbery",
+ "Traffick Illegal Arms", "Threaten & Blackmail",
+ "Terrorism", "Vigilante Justice", "Train Combat",
+ "Train Hacking", "Territory Warfare"];
+ }
+ for (var i = 0; i < tasks.length; ++i) {
+ var option = document.createElement("option");
+ option.text = tasks[i];
+ taskSelector.add(option);
+ }
+ taskSelector.addEventListener("change", function() {
+ var task = taskSelector.options[taskSelector.selectedIndex].text;
+ memberObj.assignToTask(task);
+ setGangMemberTaskDescription(memberObj, task);
+ updateGangContent();
+ });
+ //Set initial task in selector element
+ if (memberObj.task instanceof GangMemberTask) {
+ var taskName = memberObj.task.name;
+ var taskIndex = 0;
+ for (let i = 0; i < tasks.length; ++i) {
+ if (taskName == tasks[i]) {
+ taskIndex = i;
+ break;
+ }
+ }
+ taskSelector.selectedIndex = taskIndex;
+ }
+
+ var gainInfo = Object(_utils_HelperFunctions_js__WEBPACK_IMPORTED_MODULE_6__["createElement"])("p", {id:name + "gang-member-gain-info"});
+ taskDiv.appendChild(taskSelector);
+ taskDiv.appendChild(gainInfo);
+
+ //Panel for Description of task
+ var taskDescDiv = Object(_utils_HelperFunctions_js__WEBPACK_IMPORTED_MODULE_6__["createElement"])("div", {
+ id:name + "gang-member-task-desc", class:"gang-member-info-div",
+ width:"30%", display:"inline"
+ });
+
+ var taskDescP = Object(_utils_HelperFunctions_js__WEBPACK_IMPORTED_MODULE_6__["createElement"])("p", {id: name + "gang-member-task-description", display:"inline"});
+ taskDescDiv.appendChild(taskDescP);
+
+ statsDiv.style.width = "30%";
+ taskDiv.style.width = "30%";
+ taskDescDiv.style.width = "30%";
+ statsDiv.style.display = "inline";
+ taskDiv.style.display = "inline";
+ taskDescDiv.style.display = "inline";
+ gangMemberDiv.appendChild(statsDiv);
+ gangMemberDiv.appendChild(taskDiv);
+ gangMemberDiv.appendChild(taskDescDiv);
+
+ gangMemberList.appendChild(li);
+ setGangMemberTaskDescription(memberObj, taskName); //Initialize description
+ updateGangMemberDisplayElement(memberObj);
+}
+
+function updateGangMemberDisplayElement(memberObj) {
+ if (!gangContentCreated || !_Player_js__WEBPACK_IMPORTED_MODULE_3__["Player"].inGang()) {return;}
+ var name = memberObj.name;
+
+ //TODO Add upgrade information
+ var stats = document.getElementById(name + "gang-member-stats-text");
+ if (stats) {
+ stats.innerHTML =
+ "Hacking: " + Object(_utils_StringHelperFunctions_js__WEBPACK_IMPORTED_MODULE_8__["formatNumber"])(memberObj.hack, 0) + " (" + numeral_min_numeral_min__WEBPACK_IMPORTED_MODULE_7___default()(memberObj.hack_exp).format('(0.00a)') + " exp)
" +
+ "Strength: " + Object(_utils_StringHelperFunctions_js__WEBPACK_IMPORTED_MODULE_8__["formatNumber"])(memberObj.str, 0) + " (" + numeral_min_numeral_min__WEBPACK_IMPORTED_MODULE_7___default()(memberObj.str_exp).format('(0.00a)') + " exp)
" +
+ "Defense: " + Object(_utils_StringHelperFunctions_js__WEBPACK_IMPORTED_MODULE_8__["formatNumber"])(memberObj.def, 0) + " (" + numeral_min_numeral_min__WEBPACK_IMPORTED_MODULE_7___default()(memberObj.def_exp).format('(0.00a)') + " exp)
" +
+ "Dexterity: " + Object(_utils_StringHelperFunctions_js__WEBPACK_IMPORTED_MODULE_8__["formatNumber"])(memberObj.dex, 0) + " (" + numeral_min_numeral_min__WEBPACK_IMPORTED_MODULE_7___default()(memberObj.dex_exp).format('(0.00a)') + " exp)
" +
+ "Agility: " + Object(_utils_StringHelperFunctions_js__WEBPACK_IMPORTED_MODULE_8__["formatNumber"])(memberObj.agi, 0) + " (" + numeral_min_numeral_min__WEBPACK_IMPORTED_MODULE_7___default()(memberObj.agi_exp).format('(0.00a)') + " exp)
" +
+ "Charisma: " + Object(_utils_StringHelperFunctions_js__WEBPACK_IMPORTED_MODULE_8__["formatNumber"])(memberObj.cha, 0) + " (" + numeral_min_numeral_min__WEBPACK_IMPORTED_MODULE_7___default()(memberObj.cha_exp).format('(0.00a)') + " exp)
";
+ }
+
+ var gainInfo = document.getElementById(name + "gang-member-gain-info");
+ if (gainInfo) {
+ gainInfo.innerHTML =
+ "Money: $" + Object(_utils_StringHelperFunctions_js__WEBPACK_IMPORTED_MODULE_8__["formatNumber"])(5*memberObj.calculateMoneyGain(), 2) + " / sec
" +
+ "Respect: " + Object(_utils_StringHelperFunctions_js__WEBPACK_IMPORTED_MODULE_8__["formatNumber"])(5*memberObj.calculateRespectGain(), 6) + " / sec
" +
+ "Wanted Level: " + Object(_utils_StringHelperFunctions_js__WEBPACK_IMPORTED_MODULE_8__["formatNumber"])(5*memberObj.calculateWantedLevelGain(), 6) + " / sec
";
+ }
+}
+
+function setGangMemberTaskDescription(memberObj, taskName) {
+ var name = memberObj.name;
+ var taskDesc = document.getElementById(name + "gang-member-task-description");
+ if (taskDesc) {
+ var task = GangMemberTasks[taskName];
+ if (task == null) {return;}
+ var desc = task.desc;
+ taskDesc.innerHTML = desc;
+ }
+}
+
+function deleteGangDisplayContent() {
+ if (gangContainer != null) {Object(_utils_HelperFunctions_js__WEBPACK_IMPORTED_MODULE_6__["removeElementById"])(gangContainer.id);}
+
+ gangContentCreated = false;
+ gangContainer = null;
+ managementButton = null;
+ territoryButton = null;
+
+ //Subpages
+ gangManagementSubpage = null;
+ gangTerritorySubpage = null;
+
+ //Gang Management Elements
+ gangDesc = null;
+ gangInfo = null;
+ gangRecruitMemberButton = null;
+ gangRecruitRequirementText = null;
+ gangExpandAllButton = null;
+ gangCollapseAllButton = null;
+ gangMemberFilter = null;
+ gangManageEquipmentButton = null;
+ gangMemberList = null;
+
+ //Gang Equipment Upgrade Elements
+ gangMemberUpgradeBox = null;
+ gangMemberUpgradeBoxContent = null;
+ gangMemberUpgradeBoxFilter = null;
+ gangMemberUpgradeBoxElements = null;
+}
+
+
+
+/* WEBPACK VAR INJECTION */}.call(this, __webpack_require__(40)))
+
/***/ }),
/* 36 */
-/*!************************!*\
- !*** ./utils/acorn.js ***!
- \************************/
/***/ (function(module, exports, __webpack_require__) {
/*
@@ -40129,31 +41642,31 @@ Object.defineProperty(exports, '__esModule', { value: true });
/***/ }),
/* 37 */
-/*!*********************!*\
- !*** ./src/Gang.js ***!
- \*********************/
/***/ (function(module, __webpack_exports__, __webpack_require__) {
"use strict";
__webpack_require__.r(__webpack_exports__);
-/* WEBPACK VAR INJECTION */(function($) {/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "Gang", function() { return Gang; });
-/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "displayGangContent", function() { return displayGangContent; });
-/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "updateGangContent", function() { return updateGangContent; });
-/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "loadAllGangs", function() { return loadAllGangs; });
-/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "AllGangs", function() { return AllGangs; });
-/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "resetGangs", function() { return resetGangs; });
-/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "deleteGangDisplayContent", function() { return deleteGangDisplayContent; });
-/* harmony import */ var _Constants_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./Constants.js */ 3);
-/* harmony import */ var _engine_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./engine.js */ 5);
-/* harmony import */ var _Faction_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./Faction.js */ 11);
-/* harmony import */ var _Player_js__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./Player.js */ 0);
-/* harmony import */ var _utils_DialogBox_js__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ../utils/DialogBox.js */ 7);
-/* harmony import */ var _utils_JSONReviver_js__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ../utils/JSONReviver.js */ 8);
-/* harmony import */ var _utils_HelperFunctions_js__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! ../utils/HelperFunctions.js */ 1);
-/* harmony import */ var _utils_numeral_min_js__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! ../utils/numeral.min.js */ 13);
-/* harmony import */ var _utils_numeral_min_js__WEBPACK_IMPORTED_MODULE_7___default = /*#__PURE__*/__webpack_require__.n(_utils_numeral_min_js__WEBPACK_IMPORTED_MODULE_7__);
-/* harmony import */ var _utils_StringHelperFunctions_js__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! ../utils/StringHelperFunctions.js */ 2);
-/* harmony import */ var _utils_YesNoBox_js__WEBPACK_IMPORTED_MODULE_9__ = __webpack_require__(/*! ../utils/YesNoBox.js */ 12);
+/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "HacknetNode", function() { return HacknetNode; });
+/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "createPlayerHacknetNodeWrappers", function() { return createPlayerHacknetNodeWrappers; });
+/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "displayHacknetNodesContent", function() { return displayHacknetNodesContent; });
+/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "getCostOfNextHacknetNode", function() { return getCostOfNextHacknetNode; });
+/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "getHacknetNode", function() { return getHacknetNode; });
+/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "getMaxNumberLevelUpgrades", function() { return getMaxNumberLevelUpgrades; });
+/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "hacknetNodesInit", function() { return hacknetNodesInit; });
+/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "processAllHacknetNodeEarnings", function() { return processAllHacknetNodeEarnings; });
+/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "purchaseHacknet", function() { return purchaseHacknet; });
+/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "updateHacknetNodesContent", function() { return updateHacknetNodesContent; });
+/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "updateHacknetNodesMultiplierButtons", function() { return updateHacknetNodesMultiplierButtons; });
+/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "updateTotalHacknetProduction", function() { return updateTotalHacknetProduction; });
+/* harmony import */ var _BitNode_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(15);
+/* harmony import */ var _Constants_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(3);
+/* harmony import */ var _engine_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(5);
+/* harmony import */ var _InteractiveTutorial_js__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(24);
+/* harmony import */ var _Player_js__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(0);
+/* harmony import */ var _utils_DialogBox_js__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(7);
+/* harmony import */ var _utils_HelperFunctions_js__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(1);
+/* harmony import */ var _utils_JSONReviver_js__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(9);
+/* harmony import */ var _utils_StringHelperFunctions_js__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(2);
@@ -40164,1463 +41677,972 @@ __webpack_require__.r(__webpack_exports__);
-
-/* Gang.js */
-//Switch between territory and management screen with 1 and 2
-$(document).keydown(function(event) {
- if (_engine_js__WEBPACK_IMPORTED_MODULE_1__["Engine"].currentPage == _engine_js__WEBPACK_IMPORTED_MODULE_1__["Engine"].Page.Gang && !_utils_YesNoBox_js__WEBPACK_IMPORTED_MODULE_9__["yesNoBoxOpen"]) {
- if (gangMemberFilter != null && gangMemberFilter === document.activeElement) {return;}
- if (event.keyCode === 49) {
- if(gangTerritorySubpage.style.display === "block") {
- managementButton.click();
- }
- } else if (event.keyCode === 50) {
- if (gangManagementSubpage.style.display === "block") {
- territoryButton.click();
- }
- }
- }
-});
-
-//Delete upgrade box when clicking outside
-$(document).mousedown(function(event) {
- var boxId = "gang-member-upgrade-popup-box";
- var contentId = "gang-member-upgrade-popup-box-content";
- if (gangMemberUpgradeBoxOpened) {
- if ( $(event.target).closest("#" + contentId).get(0) == null ) {
- //Delete the box
- Object(_utils_HelperFunctions_js__WEBPACK_IMPORTED_MODULE_6__["removeElement"])(gangMemberUpgradeBox);
- gangMemberUpgradeBox = null;
- gangMemberUpgradeBoxContent = null;
- gangMemberUpgradeBoxOpened = false;
- gangMemberUpgradeBoxElements = null;
- }
- }
-});
-
-let GangNames = ["Slum Snakes", "Tetrads", "The Syndicate", "The Dark Army", "Speakers for the Dead",
- "NiteSec", "The Black Hand"];
-let AllGangs = {
- "Slum Snakes" : {
- power: 1,
- territory: 1/7,
- },
- "Tetrads" : {
- power: 1,
- territory: 1/7,
- },
- "The Syndicate" : {
- power: 1,
- territory: 1/7,
- },
- "The Dark Army" : {
- power: 1,
- territory: 1/7,
- },
- "Speakers for the Dead" : {
- power: 1,
- territory: 1/7,
- },
- "NiteSec" : {
- power: 1,
- territory: 1/7,
- },
- "The Black Hand" : {
- power: 1,
- territory: 1/7,
- },
-}
-
-function resetGangs() {
- AllGangs = {
- "Slum Snakes" : {
- power: 1,
- territory: 1/7,
- },
- "Tetrads" : {
- power: 1,
- territory: 1/7,
- },
- "The Syndicate" : {
- power: 1,
- territory: 1/7,
- },
- "The Dark Army" : {
- power: 1,
- territory: 1/7,
- },
- "Speakers for the Dead" : {
- power: 1,
- territory: 1/7,
- },
- "NiteSec" : {
- power: 1,
- territory: 1/7,
- },
- "The Black Hand" : {
- power: 1,
- territory: 1/7,
- },
- }
-}
-
-function loadAllGangs(saveString) {
- AllGangs = JSON.parse(saveString, _utils_JSONReviver_js__WEBPACK_IMPORTED_MODULE_5__["Reviver"]);
-}
-
-//Power is an estimate of a gang's ability to gain/defend territory
-let gangStoredPowerCycles = 0;
-function processAllGangPowerGains(numCycles=1) {
- if (!_Player_js__WEBPACK_IMPORTED_MODULE_3__["Player"].inGang()) {return;}
- gangStoredPowerCycles += numCycles;
- if (gangStoredPowerCycles < 150) {return;}
- var playerGangName = _Player_js__WEBPACK_IMPORTED_MODULE_3__["Player"].gang.facName;
- for (var name in AllGangs) {
- if (AllGangs.hasOwnProperty(name)) {
- if (name == playerGangName) {
- AllGangs[name].power += _Player_js__WEBPACK_IMPORTED_MODULE_3__["Player"].gang.calculatePower();
- } else {
- var gain = Math.random() * 0.02; //TODO Adjust as necessary
- AllGangs[name].power += (gain);
- }
- }
- }
-
- gangStoredPowerCycles -= 150;
-}
-
-let gangStoredTerritoryCycles = 0;
-function processAllGangTerritory(numCycles=1) {
- if (!_Player_js__WEBPACK_IMPORTED_MODULE_3__["Player"].inGang()) {return;}
- gangStoredTerritoryCycles += numCycles;
- if (gangStoredTerritoryCycles < _Constants_js__WEBPACK_IMPORTED_MODULE_0__["CONSTANTS"].GangTerritoryUpdateTimer) {return;}
-
- for (var i = 0; i < GangNames.length; ++i) {
- var other = Object(_utils_HelperFunctions_js__WEBPACK_IMPORTED_MODULE_6__["getRandomInt"])(0, GangNames.length-1);
- while(other == i) {
- other = Object(_utils_HelperFunctions_js__WEBPACK_IMPORTED_MODULE_6__["getRandomInt"])(0, GangNames.length-1);
- }
- var thisPwr = AllGangs[GangNames[i]].power;
- var otherPwr = AllGangs[GangNames[other]].power;
- var thisChance = thisPwr / (thisPwr + otherPwr);
-
- if (Math.random() < thisChance) {
- if (AllGangs[GangNames[other]].territory <= 0) {
- return;
- }
- AllGangs[GangNames[i]].territory += 0.0001;
- AllGangs[GangNames[other]].territory -= 0.0001;
- } else {
- if (AllGangs[GangNames[i]].territory <= 0) {
- return;
- }
- AllGangs[GangNames[i]].territory -= 0.0001;
- AllGangs[GangNames[other]].territory += 0.0001;
- }
- }
-
- gangStoredTerritoryCycles -= _Constants_js__WEBPACK_IMPORTED_MODULE_0__["CONSTANTS"].GangTerritoryUpdateTimer;
-}
-
-/* faction - Name of corresponding faction
- hacking - Boolean indicating whether its a hacking gang or not
+/**
+ * Overwrites the inner text of the specified HTML element if it is different from what currently exists.
+ * @param {string} elementId The HTML ID to find the first instance of.
+ * @param {string} text The inner text that should be set.
*/
-function Gang(facName, hacking=false) {
- this.facName = facName;
- this.members = []; //Array of GangMembers
- this.wanted = 1;
- this.respect = 1;
- this.power = 0;
+function updateText(elementId, text) {
+ var el = Object(_utils_HelperFunctions_js__WEBPACK_IMPORTED_MODULE_6__["getElementById"])(elementId);
+ if (el.innerText != text) {
+ el.innerText = text;
+ }
+};
- this.isHackingGang = hacking;
+/* HacknetNode.js */
+function hacknetNodesInit() {
+ var performMapping = function(x) {
+ Object(_utils_HelperFunctions_js__WEBPACK_IMPORTED_MODULE_6__["getElementById"])("hacknet-nodes-" + x.id + "-multiplier")
+ .addEventListener("click", function() {
+ hacknetNodePurchaseMultiplier = x.multiplier;
+ updateHacknetNodesMultiplierButtons();
+ updateHacknetNodesContent();
+ return false;
+ });
+ };
- this.respectGainRate = 0;
- this.wantedGainRate = 0;
- this.moneyGainRate = 0;
-
- //When processing gains, this stores the number of cycles until some
- //limit is reached, and then calculates and applies the gains only at that limit
- this.storedCycles = 0;
+ var mappings = [
+ { id: "1x", multiplier: 1 },
+ { id: "5x", multiplier: 5 },
+ { id: "10x", multiplier: 10 },
+ { id: "max", multiplier: 0 }
+ ];
+ for (var elem of mappings) {
+ // Encapsulate in a function so that the appropriate scope is kept in the click handler.
+ performMapping(elem);
+ }
}
-Gang.prototype.process = function(numCycles=1) {
- this.processGains(numCycles);
- this.processExperienceGains(numCycles);
- processAllGangPowerGains(numCycles);
- processAllGangTerritory(numCycles);
+document.addEventListener("DOMContentLoaded", hacknetNodesInit, false);
+
+function HacknetNode(name) {
+ this.level = 1;
+ this.ram = 1; //GB
+ this.cores = 1;
+
+ this.name = name;
+
+ this.totalMoneyGenerated = 0;
+ this.onlineTimeSeconds = 0;
+
+ this.moneyGainRatePerSecond = 0;
}
-Gang.prototype.processGains = function(numCycles=1) {
- this.storedCycles += numCycles;
- if (isNaN(this.storedCycles)) {
- console.log("ERROR: Gang's storedCylces is NaN");
- this.storedCycles = 0;
- }
- if (this.storedCycles < 25) {return;} //Only process every 5 seconds at least
- //Get gains per cycle
- var moneyGains = 0, respectGains = 0, wantedLevelGains = 0;
- for (var i = 0; i < this.members.length; ++i) {
- respectGains += (this.members[i].calculateRespectGain());
- wantedLevelGains += (this.members[i].calculateWantedLevelGain());
- moneyGains += (this.members[i].calculateMoneyGain());
- }
- this.respectGainRate = respectGains;
- this.wantedGainRate = wantedLevelGains;
- this.moneyGainRate = moneyGains;
+HacknetNode.prototype.updateMoneyGainRate = function() {
+ //How much extra $/s is gained per level
+ var gainPerLevel = _Constants_js__WEBPACK_IMPORTED_MODULE_1__["CONSTANTS"].HacknetNodeMoneyGainPerLevel;
- if (!isNaN(respectGains)) {
- var gain = respectGains * this.storedCycles;
- this.respect += (gain);
- //Faction reputation gains is respect gain divided by some constant
- var fac = _Faction_js__WEBPACK_IMPORTED_MODULE_2__["Factions"][this.facName];
- if (!(fac instanceof _Faction_js__WEBPACK_IMPORTED_MODULE_2__["Faction"])) {
- Object(_utils_DialogBox_js__WEBPACK_IMPORTED_MODULE_4__["dialogBoxCreate"])("ERROR: Could not get Faction associates with your gang. This is a bug, please report to game dev");
+ this.moneyGainRatePerSecond = (this.level * gainPerLevel) *
+ Math.pow(1.035, this.ram-1) *
+ ((this.cores + 5) / 6) *
+ _Player_js__WEBPACK_IMPORTED_MODULE_4__["Player"].hacknet_node_money_mult *
+ _BitNode_js__WEBPACK_IMPORTED_MODULE_0__["BitNodeMultipliers"].HacknetNodeMoney;
+ if (isNaN(this.moneyGainRatePerSecond)) {
+ this.moneyGainRatePerSecond = 0;
+ Object(_utils_DialogBox_js__WEBPACK_IMPORTED_MODULE_5__["dialogBoxCreate"])("Error in calculating Hacknet Node production. Please report to game developer");
+ }
+
+ updateTotalHacknetProduction();
+}
+
+HacknetNode.prototype.calculateLevelUpgradeCost = function(levels=1) {
+ levels = Math.round(levels);
+ if (isNaN(levels) || levels < 1) {
+ return 0;
+ }
+
+ var mult = _Constants_js__WEBPACK_IMPORTED_MODULE_1__["CONSTANTS"].HacknetNodeUpgradeLevelMult;
+ var totalMultiplier = 0; //Summed
+ var currLevel = this.level;
+ for (var i = 0; i < levels; ++i) {
+ totalMultiplier += Math.pow(mult, currLevel);
+ ++currLevel;
+ }
+
+ return _Constants_js__WEBPACK_IMPORTED_MODULE_1__["CONSTANTS"].BaseCostForHacknetNode / 2 * totalMultiplier * _Player_js__WEBPACK_IMPORTED_MODULE_4__["Player"].hacknet_node_level_cost_mult;
+}
+
+//Wrapper function for Netscript
+HacknetNode.prototype.getLevelUpgradeCost = function(levels=1) {
+ return this.calculateLevelUpgradeCost(levels);
+}
+
+HacknetNode.prototype.purchaseLevelUpgrade = function(levels=1) {
+ levels = Math.round(levels);
+ var cost = this.calculateLevelUpgradeCost(levels);
+ if (isNaN(cost) || levels < 0) {
+ return false;
+ }
+
+ if (this.level + levels > _Constants_js__WEBPACK_IMPORTED_MODULE_1__["CONSTANTS"].HacknetNodeMaxLevel) {
+ var diff = Math.max(0, _Constants_js__WEBPACK_IMPORTED_MODULE_1__["CONSTANTS"].HacknetNodeMaxLevel - this.level);
+ return this.purchaseLevelUpgrade(diff);
+ }
+
+ if (_Player_js__WEBPACK_IMPORTED_MODULE_4__["Player"].money.lt(cost)) {
+ return false;
+ }
+
+ _Player_js__WEBPACK_IMPORTED_MODULE_4__["Player"].loseMoney(cost);
+ this.level += levels;
+ this.updateMoneyGainRate();
+ return true;
+}
+
+//Wrapper function for Netscript
+HacknetNode.prototype.upgradeLevel = function(levels=1) {
+ let res = this.purchaseLevelUpgrade(levels);
+ createPlayerHacknetNodeWrappers();
+ return res;
+}
+
+HacknetNode.prototype.calculateRamUpgradeCost = function() {
+ var numUpgrades = Math.log2(this.ram);
+
+ //Calculate cost
+ //Base cost of RAM is 50k per 1GB, increased by some multiplier for each time RAM is upgraded
+ var baseCost = this.ram * _Constants_js__WEBPACK_IMPORTED_MODULE_1__["CONSTANTS"].BaseCostFor1GBOfRamHacknetNode;
+ var mult = Math.pow(_Constants_js__WEBPACK_IMPORTED_MODULE_1__["CONSTANTS"].HacknetNodeUpgradeRamMult, numUpgrades);
+ return baseCost * mult * _Player_js__WEBPACK_IMPORTED_MODULE_4__["Player"].hacknet_node_ram_cost_mult;
+}
+
+//Wrapper function for Netscript
+HacknetNode.prototype.getRamUpgradeCost = function() {
+ return this.calculateRamUpgradeCost();
+}
+
+HacknetNode.prototype.purchaseRamUpgrade = function() {
+ var cost = this.calculateRamUpgradeCost();
+ if (isNaN(cost)) {
+ return false;
+ }
+
+ if (_Player_js__WEBPACK_IMPORTED_MODULE_4__["Player"].money.lt(cost)) {
+ return false;
+ }
+
+ if (this.ram >= _Constants_js__WEBPACK_IMPORTED_MODULE_1__["CONSTANTS"].HacknetNodeMaxRam) {
+ return false;
+ }
+
+ _Player_js__WEBPACK_IMPORTED_MODULE_4__["Player"].loseMoney(cost);
+ this.ram *= 2; //Ram is always doubled
+ this.updateMoneyGainRate();
+ return true;
+}
+
+//Wrapper function for Netscript
+HacknetNode.prototype.upgradeRam = function() {
+ let res = this.purchaseRamUpgrade();
+ createPlayerHacknetNodeWrappers();
+ return res;
+}
+
+HacknetNode.prototype.calculateCoreUpgradeCost = function() {
+ var coreBaseCost = _Constants_js__WEBPACK_IMPORTED_MODULE_1__["CONSTANTS"].BaseCostForHacknetNodeCore;
+ var mult = _Constants_js__WEBPACK_IMPORTED_MODULE_1__["CONSTANTS"].HacknetNodeUpgradeCoreMult;
+ return coreBaseCost * Math.pow(mult, this.cores - 1) * _Player_js__WEBPACK_IMPORTED_MODULE_4__["Player"].hacknet_node_core_cost_mult;
+}
+
+//Wrapper function for Netscript
+HacknetNode.prototype.getCoreUpgradeCost = function() {
+ let res = this.calculateCoreUpgradeCost();
+ createPlayerHacknetNodeWrappers();
+ return res;
+}
+
+HacknetNode.prototype.purchaseCoreUpgrade = function() {
+ var cost = this.calculateCoreUpgradeCost();
+ if (isNaN(cost)) {
+ return false;
+ }
+
+ if (_Player_js__WEBPACK_IMPORTED_MODULE_4__["Player"].money.lt(cost)) {
+ return false;
+ }
+
+ if (this.cores >= _Constants_js__WEBPACK_IMPORTED_MODULE_1__["CONSTANTS"].HacknetNodeMaxCores) {
+ return false;
+ }
+
+ _Player_js__WEBPACK_IMPORTED_MODULE_4__["Player"].loseMoney(cost);
+ ++this.cores;
+ this.updateMoneyGainRate();
+ return true;
+}
+
+//Wrapper function for Netscript
+HacknetNode.prototype.upgradeCore = function() {
+ return this.purchaseCoreUpgrade();
+}
+
+/* Saving and loading HackNets */
+HacknetNode.prototype.toJSON = function() {
+ return Object(_utils_JSONReviver_js__WEBPACK_IMPORTED_MODULE_7__["Generic_toJSON"])("HacknetNode", this);
+}
+
+HacknetNode.fromJSON = function(value) {
+ return Object(_utils_JSONReviver_js__WEBPACK_IMPORTED_MODULE_7__["Generic_fromJSON"])(HacknetNode, value.data);
+}
+
+_utils_JSONReviver_js__WEBPACK_IMPORTED_MODULE_7__["Reviver"].constructors.HacknetNode = HacknetNode;
+
+var HacknetNodeWrapper = function(hacknetNodeObj) {
+ var _node = hacknetNodeObj;
+ return {
+ name : _node.name,
+ level : _node.level,
+ ram : _node.ram,
+ cores : _node.cores,
+ totalMoneyGenerated : _node.totalMoneyGenerated,
+ onlineTimeSeconds : _node.onlineTimeSeconds,
+ moneyGainRatePerSecond : _node.moneyGainRatePerSecond,
+ upgradeLevel : function(n) {
+ return _node.upgradeLevel(n);
+ },
+ upgradeRam : function() {
+ return _node.upgradeRam();
+ },
+ upgradeCore : function() {
+ return _node.upgradeCore();
+ },
+ getLevelUpgradeCost : function(n) {
+ return _node.getLevelUpgradeCost(n);
+ },
+ getRamUpgradeCost : function() {
+ return _node.getRamUpgradeCost();
+ },
+ getCoreUpgradeCost : function() {
+ return _node.getCoreUpgradeCost();
+ }
+ }
+}
+
+function purchaseHacknet() {
+ /* INTERACTIVE TUTORIAL */
+ if (_InteractiveTutorial_js__WEBPACK_IMPORTED_MODULE_3__["iTutorialIsRunning"]) {
+ if (_InteractiveTutorial_js__WEBPACK_IMPORTED_MODULE_3__["currITutorialStep"] == _InteractiveTutorial_js__WEBPACK_IMPORTED_MODULE_3__["iTutorialSteps"].HacknetNodesIntroduction) {
+ Object(_InteractiveTutorial_js__WEBPACK_IMPORTED_MODULE_3__["iTutorialNextStep"])();
} else {
- var favorMult = 1 + (fac.favor / 100);
- fac.playerReputation += ((_Player_js__WEBPACK_IMPORTED_MODULE_3__["Player"].faction_rep_mult * gain * favorMult) / _Constants_js__WEBPACK_IMPORTED_MODULE_0__["CONSTANTS"].GangRespectToReputationRatio);
- }
-
- } else {
- console.log("ERROR: respectGains is NaN");
- }
- if (!isNaN(wantedLevelGains)) {
- if (this.wanted === 1 && wantedLevelGains < 0) {
- //Do nothing
- } else {
- this.wanted += (wantedLevelGains * this.storedCycles);
- if (this.wanted < 1) {this.wanted = 1;}
- }
- } else {
- console.log("ERROR: wantedLevelGains is NaN");
- }
- if (!isNaN(moneyGains)) {
- _Player_js__WEBPACK_IMPORTED_MODULE_3__["Player"].gainMoney(moneyGains * this.storedCycles);
- } else {
- console.log("ERROR: respectGains is NaN");
- }
-
- this.storedCycles = 0;
-}
-
-Gang.prototype.processExperienceGains = function(numCycles=1) {
- for (var i = 0; i < this.members.length; ++i) {
- this.members[i].gainExperience(numCycles);
- this.members[i].updateSkillLevels();
- }
-}
-
-//Calculates power GAIN, which is added onto the Gang's existing power
-Gang.prototype.calculatePower = function() {
- var memberTotal = 0;
- for (var i = 0; i < this.members.length; ++i) {
- if (this.members[i].task instanceof GangMemberTask &&
- this.members[i].task.name == "Territory Warfare") {
- memberTotal += this.members[i].calculatePower();
- }
- }
- return (0.0005 * memberTotal);
-}
-
-Gang.prototype.autoAssignMemberToTask = function(taskName) {
- for (var i = 0; i < this.members.length; ++i) {
- if (this.members[i].task.name === taskName) {
- this.members[i].assignToTask(taskName);
- return true;
- }
- }
- return false;
-}
-
-Gang.prototype.autoUnassignMemberFromTask = function(taskName) {
- for (var i = 0; i < this.members.length; ++i) {
- if (this.members[i].task.name === taskName) {
- this.members[i].unassignFromTask();
- return true;
- }
- }
- return false;
-}
-
-Gang.prototype.toJSON = function() {
- return Object(_utils_JSONReviver_js__WEBPACK_IMPORTED_MODULE_5__["Generic_toJSON"])("Gang", this);
-}
-
-Gang.fromJSON = function(value) {
- return Object(_utils_JSONReviver_js__WEBPACK_IMPORTED_MODULE_5__["Generic_fromJSON"])(Gang, value.data);
-}
-
-_utils_JSONReviver_js__WEBPACK_IMPORTED_MODULE_5__["Reviver"].constructors.Gang = Gang;
-
-/*** Gang Member object ***/
-function GangMember(name) {
- this.name = name;
- this.task = GangMemberTasks["Unassigned"]; //GangMemberTask object
- this.city = _Player_js__WEBPACK_IMPORTED_MODULE_3__["Player"].city;
-
- this.hack = 1;
- this.str = 1;
- this.def = 1;
- this.dex = 1;
- this.agi = 1;
- this.cha = 1;
-
- this.hack_exp = 0;
- this.str_exp = 0;
- this.def_exp = 0;
- this.dex_exp = 0;
- this.agi_exp = 0;
- this.cha_exp = 0;
-
- this.hack_mult = 1;
- this.str_mult = 1;
- this.def_mult = 1;
- this.dex_mult = 1;
- this.agi_mult = 1;
- this.cha_mult = 1;
-
- this.upgrades = []; //Names of upgrades
-}
-
-//Same formula for Player
-GangMember.prototype.calculateSkill = function(exp) {
- return Math.max(Math.floor(32 * Math.log(exp + 534.5) - 200), 1);
-}
-
-GangMember.prototype.updateSkillLevels = function() {
- this.hack = Math.floor(this.calculateSkill(this.hack_exp) * this.hack_mult);
- this.str = Math.floor(this.calculateSkill(this.str_exp) * this.str_mult);
- this.def = Math.floor(this.calculateSkill(this.def_exp) * this.def_mult);
- this.dex = Math.floor(this.calculateSkill(this.dex_exp) * this.dex_mult);
- this.agi = Math.floor(this.calculateSkill(this.agi_exp) * this.agi_mult);
- this.cha = Math.floor(this.calculateSkill(this.cha_exp) * this.cha_mult);
-}
-
-GangMember.prototype.calculatePower = function() {
- return (this.hack + this.str + this.def +
- this.dex + this.agi + this.cha) / 100;
-}
-
-GangMember.prototype.assignToTask = function(taskName) {
- if (GangMemberTasks.hasOwnProperty(taskName)) {
- this.task = GangMemberTasks[taskName];
- } else {
- this.task = GangMemberTasks["Unassigned"];
- }
-}
-
-GangMember.prototype.unassignFromTask = function() {
- if (GangMemberTasks.hasOwnProperty("Unassigned")) {
- this.task = GangMemberTasks["Unassigned"];
- } else {
- console.log("ERROR: Can't find Unassigned Gang member task");
- this.task = null;
- }
-}
-
-//Gains are per cycle
-GangMember.prototype.calculateRespectGain = function() {
- var task = this.task;
- if (task == null || !(task instanceof GangMemberTask) || task.baseRespect === 0) {return 0;}
- var statWeight = (task.hackWeight/100) * this.hack +
- (task.strWeight/100) * this.str +
- (task.defWeight/100) * this.def +
- (task.dexWeight/100) * this.dex +
- (task.agiWeight/100) * this.agi +
- (task.chaWeight/100) * this.cha;
- statWeight -= (3.5 * task.difficulty);
- if (statWeight <= 0) {return 0;}
- var territoryMult = AllGangs[_Player_js__WEBPACK_IMPORTED_MODULE_3__["Player"].gang.facName].territory;
- if (territoryMult <= 0) {return 0;}
- var respectMult = (_Player_js__WEBPACK_IMPORTED_MODULE_3__["Player"].gang.respect) / (_Player_js__WEBPACK_IMPORTED_MODULE_3__["Player"].gang.respect + _Player_js__WEBPACK_IMPORTED_MODULE_3__["Player"].gang.wanted);
- return 12 * task.baseRespect * statWeight * territoryMult * respectMult;
-}
-
-GangMember.prototype.calculateWantedLevelGain = function() {
- var task = this.task;
- if (task == null || !(task instanceof GangMemberTask) || task.baseWanted === 0) {return 0;}
- var statWeight = (task.hackWeight/100) * this.hack +
- (task.strWeight/100) * this.str +
- (task.defWeight/100) * this.def +
- (task.dexWeight/100) * this.dex +
- (task.agiWeight/100) * this.agi +
- (task.chaWeight/100) * this.cha;
- statWeight -= (3.5 * task.difficulty);
- if (statWeight <= 0) {return 0;}
- var territoryMult = AllGangs[_Player_js__WEBPACK_IMPORTED_MODULE_3__["Player"].gang.facName].territory;
- if (territoryMult <= 0) {return 0;}
- if (task.baseWanted < 0) {
- return task.baseWanted * statWeight * territoryMult;
- } else {
- return 6 * task.baseWanted / (3 * statWeight * territoryMult);
- }
-}
-
-GangMember.prototype.calculateMoneyGain = function() {
- var task = this.task;
- if (task == null || !(task instanceof GangMemberTask) || task.baseMoney === 0) {return 0;}
- var statWeight = (task.hackWeight/100) * this.hack +
- (task.strWeight/100) * this.str +
- (task.defWeight/100) * this.def +
- (task.dexWeight/100) * this.dex +
- (task.agiWeight/100) * this.agi +
- (task.chaWeight/100) * this.cha;
- statWeight -= (3.5 * task.difficulty);
- if (statWeight <= 0) {return 0;}
- var territoryMult = AllGangs[_Player_js__WEBPACK_IMPORTED_MODULE_3__["Player"].gang.facName].territory;
- if (territoryMult <= 0) {return 0;}
- var respectMult = (_Player_js__WEBPACK_IMPORTED_MODULE_3__["Player"].gang.respect) / (_Player_js__WEBPACK_IMPORTED_MODULE_3__["Player"].gang.respect + _Player_js__WEBPACK_IMPORTED_MODULE_3__["Player"].gang.wanted);
- return 5 * task.baseMoney * statWeight * territoryMult * respectMult;
-}
-
-GangMember.prototype.gainExperience = function(numCycles=1) {
- var task = this.task;
- if (task == null || !(task instanceof GangMemberTask)) {return;}
- this.hack_exp += (task.hackWeight / 1500) * task.difficulty * numCycles;
- this.str_exp += (task.strWeight / 1500) * task.difficulty * numCycles;
- this.def_exp += (task.defWeight / 1500) * task.difficulty * numCycles;
- this.dex_exp += (task.dexWeight / 1500) * task.difficulty * numCycles;
- this.agi_exp += (task.agiWeight / 1500) * task.difficulty * numCycles;
- this.cha_exp += (task.chaWeight / 1500) * task.difficulty * numCycles;
-}
-
-GangMember.prototype.toJSON = function() {
- return Object(_utils_JSONReviver_js__WEBPACK_IMPORTED_MODULE_5__["Generic_toJSON"])("GangMember", this);
-}
-
-GangMember.fromJSON = function(value) {
- return Object(_utils_JSONReviver_js__WEBPACK_IMPORTED_MODULE_5__["Generic_fromJSON"])(GangMember, value.data);
-}
-
-_utils_JSONReviver_js__WEBPACK_IMPORTED_MODULE_5__["Reviver"].constructors.GangMember = GangMember;
-
-//Defines tasks that Gang Members can work on
-function GangMemberTask(name="", desc="",
- params={baseRespect: 0, baseWanted: 0, baseMoney: 0,
- hackWeight: 0, strWeight: 0, defWeight: 0,
- dexWeight: 0, agiWeight: 0, chaWeight: 0,
- difficulty: 0}) {
- this.name = name;
- this.desc = desc;
-
- this.baseRespect = params.baseRespect ? params.baseRespect : 0;
- this.baseWanted = params.baseWanted ? params.baseWanted : 0;
- this.baseMoney = params.baseMoney ? params.baseMoney : 0;
-
- //Weights must add up to 100
- this.hackWeight = params.hackWeight ? params.hackWeight : 0;
- this.strWeight = params.strWeight ? params.strWeight : 0;
- this.defWeight = params.defWeight ? params.defWeight : 0;
- this.dexWeight = params.dexWeight ? params.dexWeight : 0;
- this.agiWeight = params.agiWeight ? params.agiWeight : 0;
- this.chaWeight = params.chaWeight ? params.chaWeight : 0;
-
- //1 - 100
- this.difficulty = params.difficulty ? params.difficulty : 1;
-}
-
-GangMemberTask.prototype.toJSON = function() {
- return Object(_utils_JSONReviver_js__WEBPACK_IMPORTED_MODULE_5__["Generic_toJSON"])("GangMemberTask", this);
-}
-
-GangMemberTask.fromJSON = function(value) {
- return Object(_utils_JSONReviver_js__WEBPACK_IMPORTED_MODULE_5__["Generic_fromJSON"])(GangMemberTask, value.data);
-}
-
-_utils_JSONReviver_js__WEBPACK_IMPORTED_MODULE_5__["Reviver"].constructors.GangMemberTask = GangMemberTask;
-
-//TODO Human trafficking and an equivalent hacking crime
-let GangMemberTasks = {
- "Unassigned" : new GangMemberTask(
- "Unassigned",
- "This gang member is currently idle"),
- "Ransomware" : new GangMemberTask(
- "Ransomware",
- "Assign this gang member to create and distribute ransomware
" +
- "Earns money - Slightly increases respect - Slightly increases wanted level",
- {baseRespect: 0.00005, baseWanted: 0.00001, baseMoney: 1,
- hackWeight: 100, difficulty: 1}),
- "Phishing" : new GangMemberTask(
- "Phishing",
- "Assign this gang member to attempt phishing scams and attacks
" +
- "Earns money - Slightly increases respect - Slightly increases wanted level",
- {baseRespect: 0.00008, baseWanted: 0.001, baseMoney: 2.5,
- hackWeight: 85, chaWeight: 15, difficulty: 3}),
- "Identity Theft" : new GangMemberTask(
- "Identity Theft",
- "Assign this gang member to attempt identity theft
" +
- "Earns money - Increases respect - Increases wanted level",
- {baseRespect: 0.0001, baseWanted: 0.01, baseMoney: 6,
- hackWeight: 80, chaWeight: 20, difficulty: 4}),
- "DDoS Attacks" : new GangMemberTask(
- "DDoS Attacks",
- "Assign this gang member to carry out DDoS attacks
" +
- "Increases respect - Increases wanted level",
- {baseRespect: 0.0004, baseWanted: 0.05,
- hackWeight: 100, difficulty: 7}),
- "Plant Virus" : new GangMemberTask(
- "Plant Virus",
- "Assign this gang member to create and distribute malicious viruses
" +
- "Increases respect - Increases wanted level",
- {baseRespect: 0.0006, baseWanted: 0.05,
- hackWeight: 100, difficulty: 10}),
- "Fraud & Counterfeiting" : new GangMemberTask(
- "Fraud & Counterfeiting",
- "Assign this gang member to commit financial fraud and digital counterfeiting
" +
- "Earns money - Slightly increases respect - Slightly increases wanted level",
- {baseRespect: 0.0005, baseWanted: 0.1, baseMoney: 15,
- hackWeight: 80, chaWeight: 20, difficulty: 17}),
- "Money Laundering" : new GangMemberTask(
- "Money Laundering",
- "Assign this gang member to launder money
" +
- "Earns money - Increases respect - Increases wanted level",
- {baseRespect: 0.0006, baseWanted:0.2, baseMoney: 40,
- hackWeight: 75, chaWeight: 25, difficulty: 20}),
- "Cyberterrorism" : new GangMemberTask(
- "Cyberterrorism",
- "Assign this gang member to commit acts of cyberterrorism
" +
- "Greatly increases respect - Greatly increases wanted level",
- {baseRespect: 0.001, baseWanted: 0.5,
- hackWeight: 80, chaWeight: 20, difficulty: 33}),
- "Ethical Hacking" : new GangMemberTask(
- "Ethical Hacking",
- "Assign this gang member to be an ethical hacker for corporations
" +
- "Earns money - Lowers wanted level",
- {baseWanted: -0.001, baseMoney: 1,
- hackWeight: 90, chaWeight: 10, difficulty: 1}),
- "Mug People" : new GangMemberTask(
- "Mug People",
- "Assign this gang member to mug random people on the streets
" +
- "Earns money - Slightly increases respect - Very slightly increases wanted level",
- {baseRespect: 0.00005, baseWanted: 0.00001, baseMoney: 1,
- strWeight: 25, defWeight: 25, dexWeight: 25, agiWeight: 10, chaWeight: 15, difficulty: 1}),
- "Deal Drugs" : new GangMemberTask(
- "Deal Drugs",
- "Assign this gang member to sell drugs.
" +
- "Earns money - Slightly increases respect - Slightly increases wanted level",
- {baseRespect: 0.00008, baseWanted: 0.001, baseMoney: 4,
- agiWeight: 20, dexWeight: 20, chaWeight: 60, difficulty: 3}),
- "Run a Con" : new GangMemberTask(
- "Run a Con",
- "Assign this gang member to run cons
" +
- "Earns money - Increases respect - Increases wanted level",
- {baseRespect: 0.00015, baseWanted: 0.01, baseMoney: 10,
- strWeight: 5, defWeight: 5, agiWeight: 25, dexWeight: 25, chaWeight: 40, difficulty: 10}),
- "Armed Robbery" : new GangMemberTask(
- "Armed Robbery",
- "Assign this gang member to commit armed robbery on stores, banks and armored cars
" +
- "Earns money - Increases respect - Increases wanted level",
- {baseRespect: 0.00015, baseWanted: 0.05, baseMoney: 25,
- hackWeight: 20, strWeight: 15, defWeight: 15, agiWeight: 10, dexWeight: 20, chaWeight: 20,
- difficulty: 17}),
- "Traffick Illegal Arms" : new GangMemberTask(
- "Traffick Illegal Arms",
- "Assign this gang member to traffick illegal arms
" +
- "Earns money - Increases respect - Increases wanted level",
- {baseRespect: 0.0003, baseWanted: 0.1, baseMoney: 40,
- hackWeight: 15, strWeight: 20, defWeight: 20, dexWeight: 20, chaWeight: 75,
- difficulty: 25}),
- "Threaten & Blackmail" : new GangMemberTask(
- "Threaten & Blackmail",
- "Assign this gang member to threaten and black mail high-profile targets
" +
- "Earns money - Slightly increases respect - Slightly increases wanted level",
- {baseRespect: 0.0002, baseWanted: 0.05, baseMoney: 15,
- hackWeight: 25, strWeight: 25, dexWeight: 25, chaWeight: 25, difficulty: 28}),
- "Terrorism" : new GangMemberTask(
- "Terrorism",
- "Assign this gang member to commit acts of terrorism
" +
- "Greatly increases respect - Greatly increases wanted level",
- {baseRespect: 0.001, baseWanted: 1,
- hackWeight: 20, strWeight: 20, defWeight: 20,dexWeight: 20, chaWeight: 20,
- difficulty: 33}),
- "Vigilante Justice" : new GangMemberTask(
- "Vigilante Justice",
- "Assign this gang member to be a vigilante and protect the city from criminals
" +
- "Decreases wanted level",
- {baseWanted: -0.001,
- hackWeight: 20, strWeight: 20, defWeight: 20, dexWeight: 20, agiWeight:20,
- difficulty: 1}),
- "Train Combat" : new GangMemberTask(
- "Train Combat",
- "Assign this gang member to increase their combat stats (str, def, dex, agi)",
- {strWeight: 25, defWeight: 25, dexWeight: 25, agiWeight: 25, difficulty: 5}),
- "Train Hacking" : new GangMemberTask(
- "Train Hacking",
- "Assign this gang member to train their hacking skills",
- {hackWeight: 100, difficulty: 8}),
- "Territory Warfare" : new GangMemberTask(
- "Territory Warfare",
- "Assign this gang member to engage in territorial warfare with other gangs. " +
- "Members assigned to this task will help increase your gang's territory " +
- "and will defend your territory from being taken.",
- {hackWeight: 15, strWeight: 20, defWeight: 20, dexWeight: 20, agiWeight: 20,
- chaWeight: 5, difficulty: 3}),
-}
-
-
-function GangMemberUpgrade(name="", desc="", cost=0, type="w") {
- this.name = name;
- this.desc = desc;
- this.cost = cost;
- this.type = type; //w, a, v, r
-}
-
-//Passes in a GangMember object
-GangMemberUpgrade.prototype.apply = function(member) {
- switch(this.name) {
- case "Baseball Bat":
- member.str_mult *= 1.05;
- member.def_mult *= 1.05;
- break;
- case "Katana":
- member.str_mult *= 1.1;
- member.def_mult *= 1.1;
- member.dex_mult *= 1.1;
- break;
- case "Glock 18C":
- member.str_mult *= 1.15;
- member.def_mult *= 1.15;
- member.dex_mult *= 1.15;
- member.agi_mult *= 1.15;
- break;
- case "P90C":
- member.str_mult *= 1.2;
- member.def_mult *= 1.2;
- member.agi_mult *= 1.1;
- break;
- case "Steyr AUG":
- member.str_mult *= 1.25;
- member.def_mult *= 1.25;
- break;
- case "AK-47":
- member.str_mult *= 1.5;
- member.def_mult *= 1.5;
- break;
- case "M15A10 Assault Rifle":
- member.str_mult *= 1.6;
- member.def_mult *= 1.6;
- break;
- case "AWM Sniper Rifle":
- member.str_mult *= 1.5;
- member.dex_mult *= 1.5;
- member.agi_mult *= 1.5;
- break;
- case "Bulletproof Vest":
- member.def_mult *= 1.05;
- break;
- case "Full Body Armor":
- member.def_mult *= 1.1;
- break;
- case "Liquid Body Armor":
- member.def_mult *= 1.25;
- member.agi_mult *= 1.25;
- break;
- case "Graphene Plating Armor":
- member.def_mult *= 1.5;
- break;
- case "Ford Flex V20":
- member.agi_mult *= 1.1;
- member.cha_mult *= 1.1;
- break;
- case "ATX1070 Superbike":
- member.agi_mult *= 1.15;
- member.cha_mult *= 1.15;
- break;
- case "Mercedes-Benz S9001":
- member.agi_mult *= 1.2;
- member.cha_mult *= 1.2;
- break;
- case "White Ferrari":
- member.agi_mult *= 1.25;
- member.cha_mult *= 1.25;
- break;
- case "NUKE Rootkit":
- member.hack_mult *= 1.1;
- break;
- case "Soulstealer Rootkit":
- member.hack_mult *= 1.2;
- break;
- case "Demon Rootkit":
- member.hack_mult *= 1.3;
- break;
- default:
- console.log("ERROR: Could not find this upgrade: " + this.name);
- break;
- }
-}
-
-GangMemberUpgrade.prototype.toJSON = function() {
- return Object(_utils_JSONReviver_js__WEBPACK_IMPORTED_MODULE_5__["Generic_toJSON"])("GangMemberUpgrade", this);
-}
-
-GangMemberUpgrade.fromJSON = function(value) {
- return Object(_utils_JSONReviver_js__WEBPACK_IMPORTED_MODULE_5__["Generic_fromJSON"])(GangMemberUpgrade, value.data);
-}
-
-_utils_JSONReviver_js__WEBPACK_IMPORTED_MODULE_5__["Reviver"].constructors.GangMemberUpgrade = GangMemberUpgrade;
-
-let GangMemberUpgrades = {
- "Baseball Bat" : new GangMemberUpgrade("Baseball Bat",
- "Increases strength and defense by 5%", 1e6, "w"),
- "Katana" : new GangMemberUpgrade("Katana",
- "Increases strength, defense, and dexterity by 10%", 12e6, "w"),
- "Glock 18C" : new GangMemberUpgrade("Glock 18C",
- "Increases strength, defense, dexterity, and agility by 15%", 25e6, "w"),
- "P90C" : new GangMemberUpgrade("P90C",
- "Increases strength and defense by 20%. Increases agility by 10%", 50e6, "w"),
- "Steyr AUG" : new GangMemberUpgrade("Steyr AUG",
- "Increases strength and defense by 25%", 60e6, "w"),
- "AK-47" : new GangMemberUpgrade("AK-47",
- "Increases strength and defense by 50%", 100e6, "w"),
- "M15A10 Assault Rifle" : new GangMemberUpgrade("M15A10 Assault Rifle",
- "Increases strength and defense by 60%", 150e6, "w"),
- "AWM Sniper Rifle" : new GangMemberUpgrade("AWM Sniper Rifle",
- "Increases strength, dexterity, and agility by 50%", 225e6, "w"),
- "Bulletproof Vest" : new GangMemberUpgrade("Bulletproof Vest",
- "Increases defense by 5%", 2e6, "a"),
- "Full Body Armor" : new GangMemberUpgrade("Full Body Armor",
- "Increases defense by 10%", 5e6, "a"),
- "Liquid Body Armor" : new GangMemberUpgrade("Liquid Body Armor",
- "Increases defense and agility by 25%", 25e6, "a"),
- "Graphene Plating Armor" : new GangMemberUpgrade("Graphene Plating Armor",
- "Increases defense by 50%", 40e6, "a"),
- "Ford Flex V20" : new GangMemberUpgrade("Ford Flex V20",
- "Increases agility and charisma by 10%", 3e6, "v"),
- "ATX1070 Superbike" : new GangMemberUpgrade("ATX1070 Superbike",
- "Increases agility and charisma by 15%", 9e6, "v"),
- "Mercedes-Benz S9001" : new GangMemberUpgrade("Mercedes-Benz S9001",
- "Increases agility and charisma by 20%", 18e6, "v"),
- "White Ferrari" : new GangMemberUpgrade("White Ferrari",
- "Increases agility and charisma by 25%", 30e6, "v"),
- "NUKE Rootkit" : new GangMemberUpgrade("NUKE Rootkit",
- "Increases hacking by 10%", 5e6, "r"),
- "Soulstealer Rootkit" : new GangMemberUpgrade("Soulstealer Rootkit",
- "Increases hacking by 20%", 15e6, "r"),
- "Demon Rootkit" : new GangMemberUpgrade("Demon Rootkit",
- "Increases hacking by 30%", 50e6, "r"),
-}
-
-//Create a pop-up box that lets player purchase upgrades
-let gangMemberUpgradeBoxOpened = false;
-function createGangMemberUpgradeBox(initialFilter="") {
- var boxId = "gang-member-upgrade-popup-box";
- if (gangMemberUpgradeBoxOpened) {
- //Already opened, refreshing
- if (gangMemberUpgradeBoxElements == null || gangMemberUpgradeBox == null || gangMemberUpgradeBoxContent == null) {
- console.log("ERROR: Refreshing Gang member upgrade box throws error because required elements are null");
return;
}
+ }
- for (var i = 1; i < gangMemberUpgradeBoxElements.length; ++i) {
- Object(_utils_HelperFunctions_js__WEBPACK_IMPORTED_MODULE_6__["removeElement"])(gangMemberUpgradeBoxElements[i]);
- }
- gangMemberUpgradeBoxElements = [gangMemberUpgradeBoxFilter];
+ /* END INTERACTIVE TUTORIAL */
- var filter = gangMemberUpgradeBoxFilter.value.toString();
- for (var i = 0; i < _Player_js__WEBPACK_IMPORTED_MODULE_3__["Player"].gang.members.length; ++i) {
- if (_Player_js__WEBPACK_IMPORTED_MODULE_3__["Player"].gang.members[i].name.indexOf(filter) > -1 || _Player_js__WEBPACK_IMPORTED_MODULE_3__["Player"].gang.members[i].task.name.indexOf(filter) > -1) {
- var newPanel = createGangMemberUpgradePanel(_Player_js__WEBPACK_IMPORTED_MODULE_3__["Player"].gang.members[i]);
- gangMemberUpgradeBoxContent.appendChild(newPanel);
- gangMemberUpgradeBoxElements.push(newPanel);
- }
- }
+ var cost = getCostOfNextHacknetNode();
+ if (isNaN(cost)) {
+ throw new Error("Cost is NaN");
+ }
+
+ if (_Player_js__WEBPACK_IMPORTED_MODULE_4__["Player"].money.lt(cost)) {
+ //dialogBoxCreate("You cannot afford to purchase a Hacknet Node!");
+ return false;
+ }
+
+ //Auto generate a name for the node for now...TODO
+ var numOwned = _Player_js__WEBPACK_IMPORTED_MODULE_4__["Player"].hacknetNodes.length;
+ var name = "hacknet-node-" + numOwned;
+ var node = new HacknetNode(name);
+ node.updateMoneyGainRate();
+
+ _Player_js__WEBPACK_IMPORTED_MODULE_4__["Player"].loseMoney(cost);
+ _Player_js__WEBPACK_IMPORTED_MODULE_4__["Player"].hacknetNodes.push(node);
+
+ if (_engine_js__WEBPACK_IMPORTED_MODULE_2__["Engine"].currentPage === _engine_js__WEBPACK_IMPORTED_MODULE_2__["Engine"].Page.HacknetNodes) {
+ displayHacknetNodesContent();
+ }
+ createPlayerHacknetNodeWrappers();
+ updateTotalHacknetProduction();
+ return numOwned;
+}
+
+//Calculates the total production from all HacknetNodes
+function updateTotalHacknetProduction() {
+ var total = 0;
+ for (var i = 0; i < _Player_js__WEBPACK_IMPORTED_MODULE_4__["Player"].hacknetNodes.length; ++i) {
+ total += _Player_js__WEBPACK_IMPORTED_MODULE_4__["Player"].hacknetNodes[i].moneyGainRatePerSecond;
+ }
+ _Player_js__WEBPACK_IMPORTED_MODULE_4__["Player"].totalHacknetNodeProduction = total;
+}
+
+function getCostOfNextHacknetNode() {
+ //Cost increases exponentially based on how many you own
+ var numOwned = _Player_js__WEBPACK_IMPORTED_MODULE_4__["Player"].hacknetNodes.length;
+ var mult = _Constants_js__WEBPACK_IMPORTED_MODULE_1__["CONSTANTS"].HacknetNodePurchaseNextMult;
+ return _Constants_js__WEBPACK_IMPORTED_MODULE_1__["CONSTANTS"].BaseCostForHacknetNode * Math.pow(mult, numOwned) * _Player_js__WEBPACK_IMPORTED_MODULE_4__["Player"].hacknet_node_purchase_cost_mult;
+}
+
+var hacknetNodePurchaseMultiplier = 1;
+function updateHacknetNodesMultiplierButtons() {
+ var mult1x = document.getElementById("hacknet-nodes-1x-multiplier");
+ var mult5x = document.getElementById("hacknet-nodes-5x-multiplier");
+ var mult10x = document.getElementById("hacknet-nodes-10x-multiplier");
+ var multMax = document.getElementById("hacknet-nodes-max-multiplier");
+ mult1x.setAttribute("class", "a-link-button");
+ mult5x.setAttribute("class", "a-link-button");
+ mult10x.setAttribute("class", "a-link-button");
+ multMax.setAttribute("class", "a-link-button");
+ if (_Player_js__WEBPACK_IMPORTED_MODULE_4__["Player"].hacknetNodes.length == 0) {
+ mult1x.setAttribute("class", "a-link-button-inactive");
+ mult5x.setAttribute("class", "a-link-button-inactive");
+ mult10x.setAttribute("class", "a-link-button-inactive");
+ multMax.setAttribute("class", "a-link-button-inactive");
+ } else if (hacknetNodePurchaseMultiplier == 1) {
+ mult1x.setAttribute("class", "a-link-button-inactive");
+ } else if (hacknetNodePurchaseMultiplier == 5) {
+ mult5x.setAttribute("class", "a-link-button-inactive");
+ } else if (hacknetNodePurchaseMultiplier == 10) {
+ mult10x.setAttribute("class", "a-link-button-inactive");
} else {
- //New popup
- gangMemberUpgradeBoxFilter = Object(_utils_HelperFunctions_js__WEBPACK_IMPORTED_MODULE_6__["createElement"])("input", {
- type:"text", placeholder:"Filter gang members",
- value:initialFilter,
- onkeyup:()=>{
- var filterValue = gangMemberUpgradeBoxFilter.value.toString();
- createGangMemberUpgradeBox(filterValue);
- }
- });
-
- gangMemberUpgradeBoxElements = [gangMemberUpgradeBoxFilter];
-
- var filter = gangMemberUpgradeBoxFilter.value.toString();
- for (var i = 0; i < _Player_js__WEBPACK_IMPORTED_MODULE_3__["Player"].gang.members.length; ++i) {
- if (_Player_js__WEBPACK_IMPORTED_MODULE_3__["Player"].gang.members[i].name.indexOf(filter) > -1 || _Player_js__WEBPACK_IMPORTED_MODULE_3__["Player"].gang.members[i].task.name.indexOf(filter) > -1) {
- gangMemberUpgradeBoxElements.push(createGangMemberUpgradePanel(_Player_js__WEBPACK_IMPORTED_MODULE_3__["Player"].gang.members[i]));
- }
- }
-
- gangMemberUpgradeBox = Object(_utils_HelperFunctions_js__WEBPACK_IMPORTED_MODULE_6__["createPopup"])(boxId, gangMemberUpgradeBoxElements);
- gangMemberUpgradeBoxContent = document.getElementById(boxId + "-content");
- gangMemberUpgradeBoxOpened = true;
+ multMax.setAttribute("class", "a-link-button-inactive");
}
}
-//Create upgrade panels for each individual Gang Member
-function createGangMemberUpgradePanel(memberObj) {
- var container = Object(_utils_HelperFunctions_js__WEBPACK_IMPORTED_MODULE_6__["createElement"])("div", {
- border:"1px solid white",
- });
-
- var header = Object(_utils_HelperFunctions_js__WEBPACK_IMPORTED_MODULE_6__["createElement"])("h1", {
- innerText:memberObj.name + " (" + memberObj.task.name + ")"
- });
- container.appendChild(header);
-
- var text = Object(_utils_HelperFunctions_js__WEBPACK_IMPORTED_MODULE_6__["createElement"])("pre", {
- fontSize:"14px", display: "inline-block", width:"20%",
- innerText:
- "Hack: " + memberObj.hack + " (x" + Object(_utils_StringHelperFunctions_js__WEBPACK_IMPORTED_MODULE_8__["formatNumber"])(memberObj.hack_mult, 2) + ")\n" +
- "Str: " + memberObj.str + " (x" + Object(_utils_StringHelperFunctions_js__WEBPACK_IMPORTED_MODULE_8__["formatNumber"])(memberObj.str_mult, 2) + ")\n" +
- "Def: " + memberObj.def + " (x" + Object(_utils_StringHelperFunctions_js__WEBPACK_IMPORTED_MODULE_8__["formatNumber"])(memberObj.def_mult, 2) + ")\n" +
- "Dex: " + memberObj.dex + " (x" + Object(_utils_StringHelperFunctions_js__WEBPACK_IMPORTED_MODULE_8__["formatNumber"])(memberObj.dex_mult, 2) + ")\n" +
- "Agi: " + memberObj.agi + " (x" + Object(_utils_StringHelperFunctions_js__WEBPACK_IMPORTED_MODULE_8__["formatNumber"])(memberObj.agi_mult, 2) + ")\n" +
- "Cha: " + memberObj.cha + " (x" + Object(_utils_StringHelperFunctions_js__WEBPACK_IMPORTED_MODULE_8__["formatNumber"])(memberObj.cha_mult, 2) + ")\n",
- });
-
- //Already purchased upgrades
- var ownedUpgradesElements = [];
- for (var i = 0; i < memberObj.upgrades.length; ++i) {
- var upg = GangMemberUpgrades[memberObj.upgrades[i]];
- if (upg == null) {
- console.log("ERR: Could not find this upgrade: " + memberObj.upgrades[i]);
- continue;
- }
- var e = Object(_utils_HelperFunctions_js__WEBPACK_IMPORTED_MODULE_6__["createElement"])("div", {
- border:"1px solid white", innerText:memberObj.upgrades[i],
- margin:"1px", padding:"1px", tooltip:upg.desc, fontSize:"12px",
- });
- ownedUpgradesElements.push(e);
- }
- var ownedUpgrades = Object(_utils_HelperFunctions_js__WEBPACK_IMPORTED_MODULE_6__["createElement"])("div", {
- display:"inline-block", marginLeft:"6px", width:"75%", innerText:"Purchased Upgrades:",
- });
- for (var i = 0; i < ownedUpgradesElements.length; ++i) {
- ownedUpgrades.appendChild(ownedUpgradesElements[i]);
- }
- container.appendChild(text);
- container.appendChild(ownedUpgrades);
- container.appendChild(Object(_utils_HelperFunctions_js__WEBPACK_IMPORTED_MODULE_6__["createElement"])("br", {}));
-
- //Upgrade buttons. Only show upgrades that can be afforded
- var weaponUpgrades = [], armorUpgrades = [], vehicleUpgrades = [], rootkitUpgrades = [];
- for (var upgName in GangMemberUpgrades) {
- if (GangMemberUpgrades.hasOwnProperty(upgName)) {
- var upg = GangMemberUpgrades[upgName];
- if (_Player_js__WEBPACK_IMPORTED_MODULE_3__["Player"].money.lt(upg.cost) || memberObj.upgrades.includes(upgName)) {continue;}
- switch (upg.type) {
- case "w":
- weaponUpgrades.push(upg);
- break;
- case "a":
- armorUpgrades.push(upg);
- break;
- case "v":
- vehicleUpgrades.push(upg);
- break;
- case "r":
- rootkitUpgrades.push(upg);
- break;
- default:
- console.log("ERROR: Invalid Gang Member Upgrade Type: " + upg.type);
- }
- }
+//Calculate the maximum number of times the Player can afford to upgrade
+//a Hacknet Node's level"
+function getMaxNumberLevelUpgrades(nodeObj) {
+ if (_Player_js__WEBPACK_IMPORTED_MODULE_4__["Player"].money.lt(nodeObj.calculateLevelUpgradeCost(1))) {
+ return 0;
}
- var weaponDiv = Object(_utils_HelperFunctions_js__WEBPACK_IMPORTED_MODULE_6__["createElement"])("div", {width:"20%", display:"inline-block",});
- var armorDiv = Object(_utils_HelperFunctions_js__WEBPACK_IMPORTED_MODULE_6__["createElement"])("div", {width:"20%", display:"inline-block",});
- var vehicleDiv = Object(_utils_HelperFunctions_js__WEBPACK_IMPORTED_MODULE_6__["createElement"])("div", {width:"20%", display:"inline-block",});
- var rootkitDiv = Object(_utils_HelperFunctions_js__WEBPACK_IMPORTED_MODULE_6__["createElement"])("div", {width:"20%", display:"inline-block",});
- var upgrades = [weaponUpgrades, armorUpgrades, vehicleUpgrades, rootkitUpgrades];
- var divs = [weaponDiv, armorDiv, vehicleDiv, rootkitDiv];
-
- for (var i = 0; i < upgrades.length; ++i) {
- var upgradeArray = upgrades[i];
- var div = divs[i];
- for (var j = 0; j < upgradeArray.length; ++j) {
- var upg = upgradeArray[j];
- (function (upg, div, memberObj) {
- div.appendChild(Object(_utils_HelperFunctions_js__WEBPACK_IMPORTED_MODULE_6__["createElement"])("a", {
- innerText:upg.name + " - " + _utils_numeral_min_js__WEBPACK_IMPORTED_MODULE_7___default()(upg.cost).format("$0.000a"),
- class:"a-link-button", margin:"2px", padding:"2px", display:"block",
- fontSize:"12px",
- tooltip:upg.desc,
- clickListener:()=>{
- if (_Player_js__WEBPACK_IMPORTED_MODULE_3__["Player"].money.lt(upg.cost)) {return false;}
- _Player_js__WEBPACK_IMPORTED_MODULE_3__["Player"].loseMoney(upg.cost);
- memberObj.upgrades.push(upg.name);
- upg.apply(memberObj);
- var initFilterValue = gangMemberUpgradeBoxFilter.value.toString();
- createGangMemberUpgradeBox(initFilterValue);
- return false;
- }
- }));
- })(upg, div, memberObj);
- }
+ var min = 1;
+ var max = _Constants_js__WEBPACK_IMPORTED_MODULE_1__["CONSTANTS"].HacknetNodeMaxLevel - 1;
+ var levelsToMax = _Constants_js__WEBPACK_IMPORTED_MODULE_1__["CONSTANTS"].HacknetNodeMaxLevel - nodeObj.level;
+ if (_Player_js__WEBPACK_IMPORTED_MODULE_4__["Player"].money.gt(nodeObj.calculateLevelUpgradeCost(levelsToMax))) {
+ return levelsToMax;
}
- container.appendChild(weaponDiv);
- container.appendChild(armorDiv);
- container.appendChild(vehicleDiv);
- container.appendChild(rootkitDiv);
- return container;
-}
-
-//Gang DOM elements
-let gangContentCreated = false,
- gangContainer = null, managementButton = null, territoryButton = null;
-
-//Subpages
-let gangManagementSubpage = null, gangTerritorySubpage = null;
-
-//Gang Management Elements
-let gangDesc = null, gangInfo = null,
- gangRecruitMemberButton = null, gangRecruitRequirementText = null,
- gangExpandAllButton = null, gangCollapseAllButton, gangMemberFilter = null,
- gangManageEquipmentButton = null,
- gangMemberList = null;
-
-//Gang Equipment Upgrade Elements
-let gangMemberUpgradeBox = null, gangMemberUpgradeBoxContent = null,
- gangMemberUpgradeBoxFilter = null, gangMemberUpgradeBoxElements = null;
-
-
-//Gang Territory Elements
-let gangTerritoryDescText = null, gangTerritoryInfoText = null;
-
-function displayGangContent() {
- if (!gangContentCreated || gangContainer == null) {
- gangContentCreated = true;
-
- //Create gang container
- gangContainer = Object(_utils_HelperFunctions_js__WEBPACK_IMPORTED_MODULE_6__["createElement"])("div", {
- id:"gang-container", class:"generic-menupage-container",
- });
-
- //Get variables
- var facName = _Player_js__WEBPACK_IMPORTED_MODULE_3__["Player"].gang.facName,
- members = _Player_js__WEBPACK_IMPORTED_MODULE_3__["Player"].gang.members,
- wanted = _Player_js__WEBPACK_IMPORTED_MODULE_3__["Player"].gang.wanted,
- respect = _Player_js__WEBPACK_IMPORTED_MODULE_3__["Player"].gang.respect;
-
- //Back button
- gangContainer.appendChild(Object(_utils_HelperFunctions_js__WEBPACK_IMPORTED_MODULE_6__["createElement"])("a", {
- class:"a-link-button", display:"inline-block", innerText:"Back",
- clickListener:()=>{
- _engine_js__WEBPACK_IMPORTED_MODULE_1__["Engine"].loadFactionContent();
- Object(_Faction_js__WEBPACK_IMPORTED_MODULE_2__["displayFactionContent"])(facName);
- return false;
- }
- }));
-
- //Buttons to switch between panels
- managementButton = Object(_utils_HelperFunctions_js__WEBPACK_IMPORTED_MODULE_6__["createElement"])("a", {
- id:"gang-management-subpage-button", class:"a-link-button-inactive",
- display:"inline-block", innerHTML: "Gang Management (1)",
- clickListener:()=>{
- gangManagementSubpage.style.display = "block";
- gangTerritorySubpage.style.display = "none";
- managementButton.classList.toggle("a-link-button-inactive");
- managementButton.classList.toggle("a-link-button");
- territoryButton.classList.toggle("a-link-button-inactive");
- territoryButton.classList.toggle("a-link-button");
- updateGangContent();
- return false;
- }
- })
- territoryButton = Object(_utils_HelperFunctions_js__WEBPACK_IMPORTED_MODULE_6__["createElement"])("a", {
- id:"gang-territory-subpage-button", class:"a-link-button",
- display:"inline-block", innerHTML:"Gang Territory (2)",
- clickListener:()=>{
- gangManagementSubpage.style.display = "none";
- gangTerritorySubpage.style.display = "block";
- managementButton.classList.toggle("a-link-button-inactive");
- managementButton.classList.toggle("a-link-button");
- territoryButton.classList.toggle("a-link-button-inactive");
- territoryButton.classList.toggle("a-link-button");
- updateGangContent();
- return false;
- }
- });
- gangContainer.appendChild(managementButton);
- gangContainer.appendChild(territoryButton);
-
- //Subpage for managing gang members
- gangManagementSubpage = Object(_utils_HelperFunctions_js__WEBPACK_IMPORTED_MODULE_6__["createElement"])("div", {
- display:"block", id:"gang-management-subpage",
- });
-
- var lowerWantedTask = "";
- if (_Player_js__WEBPACK_IMPORTED_MODULE_3__["Player"].gang.isHackingGang) {
- lowerWantedTask = "Ethical Hacking";
+ while (min <= max) {
+ var curr = (min + max) / 2 | 0;
+ if (curr != _Constants_js__WEBPACK_IMPORTED_MODULE_1__["CONSTANTS"].HacknetNodeMaxLevel &&
+ _Player_js__WEBPACK_IMPORTED_MODULE_4__["Player"].money.gt(nodeObj.calculateLevelUpgradeCost(curr)) &&
+ _Player_js__WEBPACK_IMPORTED_MODULE_4__["Player"].money.lt(nodeObj.calculateLevelUpgradeCost(curr + 1))) {
+ return Math.min(levelsToMax, curr);
+ } else if (_Player_js__WEBPACK_IMPORTED_MODULE_4__["Player"].money.lt(nodeObj.calculateLevelUpgradeCost(curr))) {
+ max = curr - 1;
+ } else if (_Player_js__WEBPACK_IMPORTED_MODULE_4__["Player"].money.gt(nodeObj.calculateLevelUpgradeCost(curr))) {
+ min = curr + 1;
} else {
- lowerWantedTask = "Vigilante Justice";
- }
- gangDesc = Object(_utils_HelperFunctions_js__WEBPACK_IMPORTED_MODULE_6__["createElement"])("p", {width:"70%",
- innerHTML:
- "This page is used to manage your gang members and get an overview of your " +
- "gang's stats.
" +
- "If a gang member is not earning much money or respect, the task that you " +
- "have assigned to that member might be too difficult. Consider training that " +
- "member's stats or choosing an easier task. The tasks closer to the " +
- "top of the dropdown list are generally easier. Alternatively, the gang member's " +
- "low production might be due to the fact that your wanted level is too high. " +
- "Consider assigning a few members to the '" + lowerWantedTask + "' " +
- "task to lower your wanted level.
" +
- "Installing Augmentations does NOT reset your progress with your Gang. " +
- "Furthermore, after installing Augmentations, you will " +
- "automatically be a member of whatever Faction you created your gang with.
"
- });
- gangManagementSubpage.appendChild(gangDesc);
-
- gangInfo = Object(_utils_HelperFunctions_js__WEBPACK_IMPORTED_MODULE_6__["createElement"])("p", {id:"gang-info", width:"70%"});
- gangManagementSubpage.appendChild(gangInfo);
-
- gangRecruitMemberButton = Object(_utils_HelperFunctions_js__WEBPACK_IMPORTED_MODULE_6__["createElement"])("a", {
- id:"gang-management-recruit-member-btn", class:"a-link-button-inactive",
- innerHTML:"Recruit Gang Member", display:"inline-block", margin:"10px",
- clickListener:()=>{
- var yesBtn = Object(_utils_YesNoBox_js__WEBPACK_IMPORTED_MODULE_9__["yesNoTxtInpBoxGetYesButton"])(), noBtn = Object(_utils_YesNoBox_js__WEBPACK_IMPORTED_MODULE_9__["yesNoTxtInpBoxGetNoButton"])();
- yesBtn.innerHTML = "Recruit Gang Member";
- noBtn.innerHTML = "Cancel";
- yesBtn.addEventListener("click", ()=>{
- var name = Object(_utils_YesNoBox_js__WEBPACK_IMPORTED_MODULE_9__["yesNoTxtInpBoxGetInput"])();
- if (name === "") {
- Object(_utils_DialogBox_js__WEBPACK_IMPORTED_MODULE_4__["dialogBoxCreate"])("You must enter a name for your Gang member!");
- } else {
- for (var i = 0; i < _Player_js__WEBPACK_IMPORTED_MODULE_3__["Player"].gang.members.length; ++i) {
- if (name == _Player_js__WEBPACK_IMPORTED_MODULE_3__["Player"].gang.members[i].name) {
- Object(_utils_DialogBox_js__WEBPACK_IMPORTED_MODULE_4__["dialogBoxCreate"])("You already have a gang member with this name!");
- return false;
- }
- }
- var member = new GangMember(name);
- _Player_js__WEBPACK_IMPORTED_MODULE_3__["Player"].gang.members.push(member);
- createGangMemberDisplayElement(member);
- updateGangContent();
- }
- Object(_utils_YesNoBox_js__WEBPACK_IMPORTED_MODULE_9__["yesNoTxtInpBoxClose"])();
- });
- noBtn.addEventListener("click", ()=>{
- Object(_utils_YesNoBox_js__WEBPACK_IMPORTED_MODULE_9__["yesNoTxtInpBoxClose"])();
- });
- Object(_utils_YesNoBox_js__WEBPACK_IMPORTED_MODULE_9__["yesNoTxtInpBoxCreate"])("Please enter a name for your new Gang member:");
- return false;
- }
- });
- gangManagementSubpage.appendChild(gangRecruitMemberButton);
-
- //Text for how much reputation is required for recruiting next memberList
- gangRecruitRequirementText = Object(_utils_HelperFunctions_js__WEBPACK_IMPORTED_MODULE_6__["createElement"])("p", {color:"red", id:"gang-recruit-requirement-text"});
- gangManagementSubpage.appendChild(gangRecruitRequirementText);
-
- //Gang Member List management buttons (Expand/Collapse All, select a single member)
- gangManagementSubpage.appendChild(Object(_utils_HelperFunctions_js__WEBPACK_IMPORTED_MODULE_6__["createElement"])("br", {}));
- gangExpandAllButton = Object(_utils_HelperFunctions_js__WEBPACK_IMPORTED_MODULE_6__["createElement"])("a", {
- class:"a-link-button", display:"inline-block",
- innerHTML:"Expand All",
- clickListener:()=>{
- var allHeaders = gangManagementSubpage.getElementsByClassName("accordion-header");
- for (var i = 0; i < allHeaders.length; ++i) {
- var hdr = allHeaders[i];
- if (!hdr.classList.contains("active")) {
- hdr.click();
- }
- }
- return false;
- }
- });
- gangCollapseAllButton = Object(_utils_HelperFunctions_js__WEBPACK_IMPORTED_MODULE_6__["createElement"])("a", {
- class:"a-link-button", display:"inline-block",
- innerHTML:"Collapse All",
- clickListener:()=>{
- var allHeaders = gangManagementSubpage.getElementsByClassName("accordion-header");
- for (var i = 0; i < allHeaders.length; ++i) {
- var hdr = allHeaders[i];
- if (hdr.classList.contains("active")) {
- hdr.click();
- }
- }
- return false;
- }
- });
- gangMemberFilter = Object(_utils_HelperFunctions_js__WEBPACK_IMPORTED_MODULE_6__["createElement"])("input", {
- type:"text", placeholder:"Filter gang members", margin:"5px", padding:"5px",
- onkeyup:()=>{
- displayGangMemberList();
- }
- });
- gangManageEquipmentButton = Object(_utils_HelperFunctions_js__WEBPACK_IMPORTED_MODULE_6__["createElement"])("a", {
- class:"a-link-button", display:"inline-block",
- innerHTML:"Manage Equipment",
- clickListener:()=>{
- createGangMemberUpgradeBox();
- }
- });
- gangManagementSubpage.appendChild(gangExpandAllButton);
- gangManagementSubpage.appendChild(gangCollapseAllButton);
- gangManagementSubpage.appendChild(gangMemberFilter);
- gangManagementSubpage.appendChild(gangManageEquipmentButton);
-
- //Gang Member list
- gangMemberList = Object(_utils_HelperFunctions_js__WEBPACK_IMPORTED_MODULE_6__["createElement"])("ul", {id:"gang-member-list"});
- displayGangMemberList();
- gangManagementSubpage.appendChild(gangMemberList);
-
- //Subpage for seeing gang territory information
- gangTerritorySubpage = Object(_utils_HelperFunctions_js__WEBPACK_IMPORTED_MODULE_6__["createElement"])("div", {
- id:"gang-territory-subpage", display:"none"
- });
-
- //Info text for territory page
- gangTerritoryDescText = Object(_utils_HelperFunctions_js__WEBPACK_IMPORTED_MODULE_6__["createElement"])("p", {
- width:"70%",
- innerHTML:"This page shows how much territory your Gang controls. This statistic is listed as a percentage, " +
- "which represents how much of the total territory you control.
" +
- "Territory gain and loss is processed automatically and is updated every ~30 seconds. Your chances " +
- "to gain and lose territory depend on your Gang's power, which is listed in the display below. " +
- "Your gang's power is determined by the stats of all Gang members you have assigned to the " +
- "'Territory Warfare' task. Gang members that are not assigned to this task do not contribute to " +
- "your Gang's power.
" +
- "The amount of territory you have affects all aspects of your Gang members' production, including " +
- "money, respect, and wanted level. It is very beneficial to have high territory control.
"
- });
- gangTerritorySubpage.appendChild(gangTerritoryDescText);
-
- var territoryBorder = Object(_utils_HelperFunctions_js__WEBPACK_IMPORTED_MODULE_6__["createElement"])("fieldset", {width:"50%", display:"inline-block"});
-
- gangTerritoryInfoText = Object(_utils_HelperFunctions_js__WEBPACK_IMPORTED_MODULE_6__["createElement"])("p", {id:"gang-territory-info"});
-
- territoryBorder.appendChild(gangTerritoryInfoText);
- gangTerritorySubpage.appendChild(territoryBorder);
-
- gangContainer.appendChild(gangTerritorySubpage);
- gangContainer.appendChild(gangManagementSubpage);
- document.getElementById("entire-game-container").appendChild(gangContainer);
- }
- gangContainer.style.display = "block";
- updateGangContent();
-}
-
-function displayGangMemberList() {
- Object(_utils_HelperFunctions_js__WEBPACK_IMPORTED_MODULE_6__["removeChildrenFromElement"])(gangMemberList);
- var members = _Player_js__WEBPACK_IMPORTED_MODULE_3__["Player"].gang.members;
- var filter = gangMemberFilter.value.toString();
- for (var i = 0; i < members.length; ++i) {
- if (members[i].name.indexOf(filter) > -1 || members[i].task.name.indexOf(filter) > -1) {
- createGangMemberDisplayElement(members[i]);
+ return Math.min(levelsToMax, curr);
}
}
- //setGangMemberClickHandlers(); //Set buttons to toggle the gang member info panels
}
-function updateGangContent() {
- if (!gangContentCreated || !_Player_js__WEBPACK_IMPORTED_MODULE_3__["Player"].inGang()) {return;}
+//Creates Hacknet Node DOM elements when the page is opened
+function displayHacknetNodesContent() {
+ //Update Hacknet Nodes button
+ var newPurchaseButton = Object(_utils_HelperFunctions_js__WEBPACK_IMPORTED_MODULE_6__["clearEventListeners"])("hacknet-nodes-purchase-button");
- if(gangTerritorySubpage.style.display === "block") {
- //Update territory information
- gangTerritoryInfoText.innerHTML = "";
- for (var gangname in AllGangs) {
- if (AllGangs.hasOwnProperty(gangname)) {
- var gangTerritoryInfo = AllGangs[gangname];
- let territory = gangTerritoryInfo.territory*100;
+ newPurchaseButton.addEventListener("click", function() {
+ purchaseHacknet();
+ return false;
+ });
- //Fix some rounding issues graphically
- let displayNumber;
- if (territory <= 0) {
- displayNumber = Object(_utils_StringHelperFunctions_js__WEBPACK_IMPORTED_MODULE_8__["formatNumber"])(0, 2);
- } else if (territory >= 100) {
- displayNumber = Object(_utils_StringHelperFunctions_js__WEBPACK_IMPORTED_MODULE_8__["formatNumber"])(100, 2);
- } else {
- displayNumber = Object(_utils_StringHelperFunctions_js__WEBPACK_IMPORTED_MODULE_8__["formatNumber"])(territory, 2);
- }
+ //Handle Purchase multiplier buttons
+ updateHacknetNodesMultiplierButtons();
- if (gangname == _Player_js__WEBPACK_IMPORTED_MODULE_3__["Player"].gang.facName) {
- gangTerritoryInfoText.innerHTML += ("" + gangname + "
(Power: " + Object(_utils_StringHelperFunctions_js__WEBPACK_IMPORTED_MODULE_8__["formatNumber"])(gangTerritoryInfo.power, 6) + "): " +
- displayNumber + "%
");
- } else {
- gangTerritoryInfoText.innerHTML += (gangname + "
(Power: " + Object(_utils_StringHelperFunctions_js__WEBPACK_IMPORTED_MODULE_8__["formatNumber"])(gangTerritoryInfo.power, 6) + "): " +
- displayNumber + "%
");
- }
- }
- }
+ //Remove all old hacknet Node DOM elements
+ var hacknetNodesList = document.getElementById("hacknet-nodes-list");
+ while (hacknetNodesList.firstChild) {
+ hacknetNodesList.removeChild(hacknetNodesList.firstChild);
+ }
+
+ //Then re-create them
+ for (var i = 0; i < _Player_js__WEBPACK_IMPORTED_MODULE_4__["Player"].hacknetNodes.length; ++i) {
+ createHacknetNodeDomElement(_Player_js__WEBPACK_IMPORTED_MODULE_4__["Player"].hacknetNodes[i]);
+ }
+
+ updateHacknetNodesContent();
+}
+
+//Update information on all Hacknet Node DOM elements
+function updateHacknetNodesContent() {
+ //Set purchase button to inactive if not enough money, and update its price display
+ var cost = getCostOfNextHacknetNode();
+ var purchaseButton = Object(_utils_HelperFunctions_js__WEBPACK_IMPORTED_MODULE_6__["getElementById"])("hacknet-nodes-purchase-button");
+ var formattedCost = Object(_utils_StringHelperFunctions_js__WEBPACK_IMPORTED_MODULE_8__["formatNumber"])(cost, 2);
+
+ updateText("hacknet-nodes-purchase-button", "Purchase Hacknet Node - $" + formattedCost);
+
+ if (_Player_js__WEBPACK_IMPORTED_MODULE_4__["Player"].money.lt(cost)) {
+ purchaseButton.setAttribute("class", "a-link-button-inactive");
} else {
- //Update information for overall gang
- if (gangInfo instanceof Element) {
- var faction = _Faction_js__WEBPACK_IMPORTED_MODULE_2__["Factions"][_Player_js__WEBPACK_IMPORTED_MODULE_3__["Player"].gang.facName];
- var rep;
- if (!(faction instanceof _Faction_js__WEBPACK_IMPORTED_MODULE_2__["Faction"])) {
- rep = "ERROR";
- } else {
- rep = faction.playerReputation;
- }
- Object(_utils_HelperFunctions_js__WEBPACK_IMPORTED_MODULE_6__["removeChildrenFromElement"])(gangInfo);
- gangInfo.appendChild(Object(_utils_HelperFunctions_js__WEBPACK_IMPORTED_MODULE_6__["createElement"])("p", { //Respect
- display:"inline-block",
- innerText:"Respect: " + Object(_utils_StringHelperFunctions_js__WEBPACK_IMPORTED_MODULE_8__["formatNumber"])(_Player_js__WEBPACK_IMPORTED_MODULE_3__["Player"].gang.respect, 6) +
- " (" + Object(_utils_StringHelperFunctions_js__WEBPACK_IMPORTED_MODULE_8__["formatNumber"])(5*_Player_js__WEBPACK_IMPORTED_MODULE_3__["Player"].gang.respectGainRate, 6) + " / sec)",
- tooltip:"Represents the amount of respect your gang has from other gangs and criminal " +
- "organizations. Your respect affects the amount of money " +
- "your gang members will earn, and also determines how much " +
- "reputation you are earning with your gang's corresponding Faction."
- }));
- gangInfo.appendChild(Object(_utils_HelperFunctions_js__WEBPACK_IMPORTED_MODULE_6__["createElement"])("br", {}));
+ purchaseButton.setAttribute("class", "a-link-button");
+ }
- gangInfo.appendChild(Object(_utils_HelperFunctions_js__WEBPACK_IMPORTED_MODULE_6__["createElement"])("p", { //Wanted level
- display:"inline-block",
- innerText:"Wanted Level: " + Object(_utils_StringHelperFunctions_js__WEBPACK_IMPORTED_MODULE_8__["formatNumber"])(_Player_js__WEBPACK_IMPORTED_MODULE_3__["Player"].gang.wanted, 6) +
- " (" + Object(_utils_StringHelperFunctions_js__WEBPACK_IMPORTED_MODULE_8__["formatNumber"])(5*_Player_js__WEBPACK_IMPORTED_MODULE_3__["Player"].gang.wantedGainRate, 6) + " / sec)",
- tooltip:"Represents how much the gang is wanted by law enforcement. The higher " +
- "your gang's wanted level, the harder it will be for your gang members " +
- "to make money and earn respect. Note that the minimum wanted level is 1."
- }));
- gangInfo.appendChild(Object(_utils_HelperFunctions_js__WEBPACK_IMPORTED_MODULE_6__["createElement"])("br", {}));
+ //Update player's money
+ updateText("hacknet-nodes-player-money", "$" + Object(_utils_StringHelperFunctions_js__WEBPACK_IMPORTED_MODULE_8__["formatNumber"])(_Player_js__WEBPACK_IMPORTED_MODULE_4__["Player"].money.toNumber(), 2));
+ updateText("hacknet-nodes-total-production", "$" + Object(_utils_StringHelperFunctions_js__WEBPACK_IMPORTED_MODULE_8__["formatNumber"])(_Player_js__WEBPACK_IMPORTED_MODULE_4__["Player"].totalHacknetNodeProduction, 2) + " / second");
- var wantedPenalty = (_Player_js__WEBPACK_IMPORTED_MODULE_3__["Player"].gang.respect) / (_Player_js__WEBPACK_IMPORTED_MODULE_3__["Player"].gang.respect + _Player_js__WEBPACK_IMPORTED_MODULE_3__["Player"].gang.wanted);
- wantedPenalty = (1 - wantedPenalty) * 100;
- gangInfo.appendChild(Object(_utils_HelperFunctions_js__WEBPACK_IMPORTED_MODULE_6__["createElement"])("p", { //Wanted Level multiplier
- display:"inline-block",
- innerText:"Wanted Level Penalty: -" + Object(_utils_StringHelperFunctions_js__WEBPACK_IMPORTED_MODULE_8__["formatNumber"])(wantedPenalty, 2) + "%",
- tooltip:"Penalty for respect and money gain rates due to Wanted Level"
- }));
- gangInfo.appendChild(Object(_utils_HelperFunctions_js__WEBPACK_IMPORTED_MODULE_6__["createElement"])("br", {}));
-
- gangInfo.appendChild(Object(_utils_HelperFunctions_js__WEBPACK_IMPORTED_MODULE_6__["createElement"])("p", { //Money gain rate
- display:"inline-block",
- innerText:"Money gain rate: $" + Object(_utils_StringHelperFunctions_js__WEBPACK_IMPORTED_MODULE_8__["formatNumber"])(5*_Player_js__WEBPACK_IMPORTED_MODULE_3__["Player"].gang.moneyGainRate, 2) +
- " / sec",
- }));
- gangInfo.appendChild(Object(_utils_HelperFunctions_js__WEBPACK_IMPORTED_MODULE_6__["createElement"])("br", {}));
-
- //Fix some rounding issues graphically
- var territoryMult = AllGangs[_Player_js__WEBPACK_IMPORTED_MODULE_3__["Player"].gang.facName].territory * 100;
- let displayNumber;
- if (territoryMult <= 0) {
- displayNumber = Object(_utils_StringHelperFunctions_js__WEBPACK_IMPORTED_MODULE_8__["formatNumber"])(0, 2);
- } else if (territoryMult >= 100) {
- displayNumber = Object(_utils_StringHelperFunctions_js__WEBPACK_IMPORTED_MODULE_8__["formatNumber"])(100, 2);
- } else {
- displayNumber = Object(_utils_StringHelperFunctions_js__WEBPACK_IMPORTED_MODULE_8__["formatNumber"])(territoryMult, 2);
- }
- gangInfo.appendChild(Object(_utils_HelperFunctions_js__WEBPACK_IMPORTED_MODULE_6__["createElement"])("p", { //Territory multiplier
- display:"inline-block",
- innerText:"Territory: " + Object(_utils_StringHelperFunctions_js__WEBPACK_IMPORTED_MODULE_8__["formatNumber"])(displayNumber, 3) + "%",
- tooltip:"The percentage of total territory your Gang controls"
- }));
- gangInfo.appendChild(Object(_utils_HelperFunctions_js__WEBPACK_IMPORTED_MODULE_6__["createElement"])("br", {}));
-
- gangInfo.appendChild(Object(_utils_HelperFunctions_js__WEBPACK_IMPORTED_MODULE_6__["createElement"])("p", { //Faction reputation
- display:"inline-block",
- innerText:"Faction reputation: " + Object(_utils_StringHelperFunctions_js__WEBPACK_IMPORTED_MODULE_8__["formatNumber"])(rep, 3)
- }));
- gangInfo.appendChild(Object(_utils_HelperFunctions_js__WEBPACK_IMPORTED_MODULE_6__["createElement"])("br", {}));
- } else {
- console.log("ERROR: gang-info DOM element DNE");
- }
-
- //Toggle the 'Recruit member button' if valid
- var numMembers = _Player_js__WEBPACK_IMPORTED_MODULE_3__["Player"].gang.members.length;
- var repCost = 0;
- if (numMembers > 0) {
- var repCost = Math.pow(_Constants_js__WEBPACK_IMPORTED_MODULE_0__["CONSTANTS"].GangRecruitCostMultiplier, numMembers);
- }
- var faction = _Faction_js__WEBPACK_IMPORTED_MODULE_2__["Factions"][_Player_js__WEBPACK_IMPORTED_MODULE_3__["Player"].gang.facName];
- if (faction == null) {
- Object(_utils_DialogBox_js__WEBPACK_IMPORTED_MODULE_4__["dialogBoxCreate"])("Could not find your gang's faction. This is probably a bug please report to dev");
- return;
- }
- var btn = gangRecruitMemberButton;
- if (numMembers >= _Constants_js__WEBPACK_IMPORTED_MODULE_0__["CONSTANTS"].MaximumGangMembers) {
- btn.className = "a-link-button-inactive";
- gangRecruitRequirementText.style.display = "block";
- gangRecruitRequirementText.innerHTML =
- "You have reached the maximum amount of gang members";
- } else if (faction.playerReputation >= repCost) {
- btn.className = "a-link-button";
- gangRecruitRequirementText.style.display = "none";
- } else {
- btn.className = "a-link-button-inactive";
- gangRecruitRequirementText.style.display = "block";
- gangRecruitRequirementText.innerHTML =
- Object(_utils_StringHelperFunctions_js__WEBPACK_IMPORTED_MODULE_8__["formatNumber"])(repCost, 2) + " Faction reputation needed to recruit next member";
- }
-
- //Update information for each gang member
- for (var i = 0; i < _Player_js__WEBPACK_IMPORTED_MODULE_3__["Player"].gang.members.length; ++i) {
- updateGangMemberDisplayElement(_Player_js__WEBPACK_IMPORTED_MODULE_3__["Player"].gang.members[i]);
- }
+ //Update information in each owned hacknet node
+ for (var i = 0; i < _Player_js__WEBPACK_IMPORTED_MODULE_4__["Player"].hacknetNodes.length; ++i) {
+ updateHacknetNodeDomElement(_Player_js__WEBPACK_IMPORTED_MODULE_4__["Player"].hacknetNodes[i]);
}
}
-//Takes in a GangMember object
-function createGangMemberDisplayElement(memberObj) {
- if (!gangContentCreated || !_Player_js__WEBPACK_IMPORTED_MODULE_3__["Player"].inGang()) {return;}
- var name = memberObj.name;
+//Creates a single Hacknet Node DOM element
+function createHacknetNodeDomElement(nodeObj) {
+ var nodeName = nodeObj.name;
- var accordion = Object(_utils_HelperFunctions_js__WEBPACK_IMPORTED_MODULE_6__["createAccordionElement"])({
- id:name + "gang-member",
- hdrText:name,
- });
- var li = accordion[0];
- var hdr = accordion[1];
- var gangMemberDiv = accordion[2];
-
- //Gang member content divided into 3 panels:
- //Stats Panel
- var statsDiv = Object(_utils_HelperFunctions_js__WEBPACK_IMPORTED_MODULE_6__["createElement"])("div", {
- id: name + "gang-member-stats", class: "gang-member-info-div",
- width:"30%", display:"inline"
- });
- var statsP = Object(_utils_HelperFunctions_js__WEBPACK_IMPORTED_MODULE_6__["createElement"])("p", {
- id:name + "gang-member-stats-text", display:"inline"
+ var nodeLevelContainer = Object(_utils_HelperFunctions_js__WEBPACK_IMPORTED_MODULE_6__["createElement"])("div", {
+ class: "hacknet-node-level-container row",
+ innerHTML: "
" +
- "Strength: " + Object(_utils_StringHelperFunctions_js__WEBPACK_IMPORTED_MODULE_8__["formatNumber"])(memberObj.str, 0) + " (" + _utils_numeral_min_js__WEBPACK_IMPORTED_MODULE_7___default()(memberObj.str_exp).format('(0.00a)') + " exp)
" +
- "Defense: " + Object(_utils_StringHelperFunctions_js__WEBPACK_IMPORTED_MODULE_8__["formatNumber"])(memberObj.def, 0) + " (" + _utils_numeral_min_js__WEBPACK_IMPORTED_MODULE_7___default()(memberObj.def_exp).format('(0.00a)') + " exp)
" +
- "Dexterity: " + Object(_utils_StringHelperFunctions_js__WEBPACK_IMPORTED_MODULE_8__["formatNumber"])(memberObj.dex, 0) + " (" + _utils_numeral_min_js__WEBPACK_IMPORTED_MODULE_7___default()(memberObj.dex_exp).format('(0.00a)') + " exp)
" +
- "Agility: " + Object(_utils_StringHelperFunctions_js__WEBPACK_IMPORTED_MODULE_8__["formatNumber"])(memberObj.agi, 0) + " (" + _utils_numeral_min_js__WEBPACK_IMPORTED_MODULE_7___default()(memberObj.agi_exp).format('(0.00a)') + " exp)
" +
- "Charisma: " + Object(_utils_StringHelperFunctions_js__WEBPACK_IMPORTED_MODULE_8__["formatNumber"])(memberObj.cha, 0) + " (" + _utils_numeral_min_js__WEBPACK_IMPORTED_MODULE_7___default()(memberObj.cha_exp).format('(0.00a)') + " exp)
";
+ if (nodeObj.ram >= _Constants_js__WEBPACK_IMPORTED_MODULE_1__["CONSTANTS"].HacknetNodeMaxRam) {
+ updateText("hacknet-node-upgrade-ram-" + nodeName, "MAX RAM");
+ upgradeRamButton.setAttribute("class", "a-link-button-inactive");
+ } else {
+ var upgradeRamCost = nodeObj.calculateRamUpgradeCost();
+ updateText("hacknet-node-upgrade-ram-" + nodeName, "Upgrade - $" + Object(_utils_StringHelperFunctions_js__WEBPACK_IMPORTED_MODULE_8__["formatNumber"])(upgradeRamCost, 2));
+ if (_Player_js__WEBPACK_IMPORTED_MODULE_4__["Player"].money.lt(upgradeRamCost)) {
+ upgradeRamButton.setAttribute("class", "a-link-button-inactive");
+ } else {
+ upgradeRamButton.setAttribute("class", "a-link-button");
+ }
}
- var gainInfo = document.getElementById(name + "gang-member-gain-info");
- if (gainInfo) {
- gainInfo.innerHTML =
- "Money: $" + Object(_utils_StringHelperFunctions_js__WEBPACK_IMPORTED_MODULE_8__["formatNumber"])(5*memberObj.calculateMoneyGain(), 2) + " / sec
" +
- "Respect: " + Object(_utils_StringHelperFunctions_js__WEBPACK_IMPORTED_MODULE_8__["formatNumber"])(5*memberObj.calculateRespectGain(), 6) + " / sec
" +
- "Wanted Level: " + Object(_utils_StringHelperFunctions_js__WEBPACK_IMPORTED_MODULE_8__["formatNumber"])(5*memberObj.calculateWantedLevelGain(), 6) + " / sec
";
+ //Upgrade Cores
+ var upgradeCoreButton = Object(_utils_HelperFunctions_js__WEBPACK_IMPORTED_MODULE_6__["getElementById"])("hacknet-node-upgrade-core-" + nodeName);
+
+ if (nodeObj.cores >= _Constants_js__WEBPACK_IMPORTED_MODULE_1__["CONSTANTS"].HacknetNodeMaxCores) {
+ updateText("hacknet-node-upgrade-core-" + nodeName, "MAX CORES");
+ upgradeCoreButton.setAttribute("class", "a-link-button-inactive");
+ } else {
+ var upgradeCoreCost = nodeObj.calculateCoreUpgradeCost();
+ updateText("hacknet-node-upgrade-core-" + nodeName, "Upgrade - $" + Object(_utils_StringHelperFunctions_js__WEBPACK_IMPORTED_MODULE_8__["formatNumber"])(upgradeCoreCost, 2));
+ if (_Player_js__WEBPACK_IMPORTED_MODULE_4__["Player"].money.lt(upgradeCoreCost)) {
+ upgradeCoreButton.setAttribute("class", "a-link-button-inactive");
+ } else {
+ upgradeCoreButton.setAttribute("class", "a-link-button");
+ }
}
}
-function setGangMemberTaskDescription(memberObj, taskName) {
- var name = memberObj.name;
- var taskDesc = document.getElementById(name + "gang-member-task-description");
- if (taskDesc) {
- var task = GangMemberTasks[taskName];
- if (task == null) {return;}
- var desc = task.desc;
- taskDesc.innerHTML = desc;
+function createPlayerHacknetNodeWrappers() {
+ _Player_js__WEBPACK_IMPORTED_MODULE_4__["Player"].hacknetNodeWrappers.length = _Player_js__WEBPACK_IMPORTED_MODULE_4__["Player"].hacknetNodes.length;
+ for (var i = 0; i < _Player_js__WEBPACK_IMPORTED_MODULE_4__["Player"].hacknetNodes.length; ++i) {
+ _Player_js__WEBPACK_IMPORTED_MODULE_4__["Player"].hacknetNodeWrappers[i] = new HacknetNodeWrapper(_Player_js__WEBPACK_IMPORTED_MODULE_4__["Player"].hacknetNodes[i]);
}
}
-function deleteGangDisplayContent() {
- if (gangContainer != null) {Object(_utils_HelperFunctions_js__WEBPACK_IMPORTED_MODULE_6__["removeElementById"])(gangContainer.id);}
+function updatePlayerHacknetNodeWrappers() {
+ if (_Player_js__WEBPACK_IMPORTED_MODULE_4__["Player"].hacknetNodeWrappers.length !== _Player_js__WEBPACK_IMPORTED_MODULE_4__["Player"].hacknetNodes.length) {
+ return createPlayerHacknetNodeWrappers();
+ }
- gangContentCreated = false;
- gangContainer = null;
- managementButton = null;
- territoryButton = null;
+ for (var i = 0; i < _Player_js__WEBPACK_IMPORTED_MODULE_4__["Player"].hacknetNodeWrappers.length; ++i) {
+ if (!(_Player_js__WEBPACK_IMPORTED_MODULE_4__["Player"].hacknetNodeWrappers[i] instanceof HacknetNodeWrapper)) {
+ return createPlayerHacknetNodeWrappers();
+ }
- //Subpages
- gangManagementSubpage = null;
- gangTerritorySubpage = null;
+ _Player_js__WEBPACK_IMPORTED_MODULE_4__["Player"].hacknetNodeWrappers[i].level = _Player_js__WEBPACK_IMPORTED_MODULE_4__["Player"].hacknetNodes[i].level;
+ _Player_js__WEBPACK_IMPORTED_MODULE_4__["Player"].hacknetNodeWrappers[i].ram = _Player_js__WEBPACK_IMPORTED_MODULE_4__["Player"].hacknetNodes[i].ram;
+ _Player_js__WEBPACK_IMPORTED_MODULE_4__["Player"].hacknetNodeWrappers[i].cores = _Player_js__WEBPACK_IMPORTED_MODULE_4__["Player"].hacknetNodes[i].cores;
+ _Player_js__WEBPACK_IMPORTED_MODULE_4__["Player"].hacknetNodeWrappers[i].totalMoneyGenerated = _Player_js__WEBPACK_IMPORTED_MODULE_4__["Player"].hacknetNodes[i].totalMoneyGenerated;
+ _Player_js__WEBPACK_IMPORTED_MODULE_4__["Player"].hacknetNodeWrappers[i].onlineTimeSeconds = _Player_js__WEBPACK_IMPORTED_MODULE_4__["Player"].hacknetNodes[i].onlineTimeSeconds;
+ _Player_js__WEBPACK_IMPORTED_MODULE_4__["Player"].hacknetNodeWrappers[i].moneyGainRatePerSecond = _Player_js__WEBPACK_IMPORTED_MODULE_4__["Player"].hacknetNodes[i].moneyGainRatePerSecond;
+ }
+}
- //Gang Management Elements
- gangDesc = null;
- gangInfo = null;
- gangRecruitMemberButton = null;
- gangRecruitRequirementText = null;
- gangExpandAllButton = null;
- gangCollapseAllButton = null;
- gangMemberFilter = null;
- gangManageEquipmentButton = null;
- gangMemberList = null;
+function processAllHacknetNodeEarnings(numCycles) {
+ var total = 0;
+ updatePlayerHacknetNodeWrappers();
+ for (var i = 0; i < _Player_js__WEBPACK_IMPORTED_MODULE_4__["Player"].hacknetNodes.length; ++i) {
+ total += processSingleHacknetNodeEarnings(numCycles, _Player_js__WEBPACK_IMPORTED_MODULE_4__["Player"].hacknetNodes[i]);
+ }
- //Gang Equipment Upgrade Elements
- gangMemberUpgradeBox = null;
- gangMemberUpgradeBoxContent = null;
- gangMemberUpgradeBoxFilter = null;
- gangMemberUpgradeBoxElements = null;
+ return total;
+}
+
+function processSingleHacknetNodeEarnings(numCycles, nodeObj) {
+ var cyclesPerSecond = 1000 / _engine_js__WEBPACK_IMPORTED_MODULE_2__["Engine"]._idleSpeed;
+ var earningPerCycle = nodeObj.moneyGainRatePerSecond / cyclesPerSecond;
+ if (isNaN(earningPerCycle)) {
+ console.error("Hacknet Node '" + nodeObj.name + "' Calculated earnings is NaN");
+ earningPerCycle = 0;
+ }
+
+ var totalEarnings = numCycles * earningPerCycle;
+ nodeObj.totalMoneyGenerated += totalEarnings;
+ nodeObj.onlineTimeSeconds += (numCycles * (_engine_js__WEBPACK_IMPORTED_MODULE_2__["Engine"]._idleSpeed / 1000));
+ _Player_js__WEBPACK_IMPORTED_MODULE_4__["Player"].gainMoney(totalEarnings);
+ return totalEarnings;
+}
+
+function getHacknetNode(name) {
+ for (var i = 0; i < _Player_js__WEBPACK_IMPORTED_MODULE_4__["Player"].hacknetNodes.length; ++i) {
+ if (_Player_js__WEBPACK_IMPORTED_MODULE_4__["Player"].hacknetNodes[i].name == name) {
+ return _Player_js__WEBPACK_IMPORTED_MODULE_4__["Player"].hacknetNodes[i];
+ }
+ }
+
+ return null;
}
-/* WEBPACK VAR INJECTION */}.call(this, __webpack_require__(/*! jquery */ 39)))
/***/ }),
/* 38 */
-/*!********************************************************!*\
- !*** ./node_modules/jszip/lib/stream/GenericWorker.js ***!
- \********************************************************/
+/***/ (function(module, __webpack_exports__, __webpack_require__) {
+
+"use strict";
+__webpack_require__.r(__webpack_exports__);
+/* WEBPACK VAR INJECTION */(function($) {/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "redPillFlag", function() { return redPillFlag; });
+/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "hackWorldDaemon", function() { return hackWorldDaemon; });
+/* harmony import */ var _BitNode_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(15);
+/* harmony import */ var _engine_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(5);
+/* harmony import */ var _Player_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(0);
+/* harmony import */ var _Prestige_js__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(56);
+/* harmony import */ var _SourceFile_js__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(41);
+/* harmony import */ var _Terminal_js__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(19);
+/* harmony import */ var _utils_DialogBox_js__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(7);
+/* harmony import */ var _utils_HelperFunctions_js__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(1);
+/* harmony import */ var _utils_YesNoBox_js__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(12);
+
+
+
+
+
+
+
+
+
+
+
+/* RedPill.js
+ * Implements what happens when you have Red Pill augmentation and then hack the world daemon */
+
+//Returns promise
+function writeRedPillLine(line) {
+ return new Promise(function(resolve, reject) {
+
+ var container = document.getElementById("red-pill-container");
+ var pElem = document.createElement("p");
+ container.appendChild(pElem);
+
+ var promise = writeRedPillLetter(pElem, line, 0);
+ promise.then(function(res) {
+ resolve(res);
+ }, function(e) {
+ reject(e);
+ });
+ });
+}
+
+function writeRedPillLetter(pElem, line, i=0) {
+ return new Promise(function(resolve, reject) {
+ setTimeout(function() {
+ if (i >= line.length) {
+ var textToShow = line.substring(0, i);
+ pElem.innerHTML = "> " + textToShow;
+ return resolve(true);
+ }
+ var textToShow = line.substring(0, i);
+ pElem.innerHTML = "> " + textToShow + " █ ";
+ var promise = writeRedPillLetter(pElem, line, i+1);
+ promise.then(function(res) {
+ resolve(res);
+ }, function(e) {
+ reject(e);
+ });
+ }, 30);
+ });
+}
+
+let redPillFlag = false;
+function hackWorldDaemon(currentNodeNumber, flume=false) {
+ redPillFlag = true;
+ _engine_js__WEBPACK_IMPORTED_MODULE_1__["Engine"].loadRedPillContent();
+ return writeRedPillLine("[ERROR] SEMPOOL INVALID").then(function() {
+ return writeRedPillLine("[ERROR] Segmentation Fault");
+ }).then(function() {
+ return writeRedPillLine("[ERROR] SIGKILL RECVD");
+ }).then(function() {
+ return writeRedPillLine("Dumping core...");
+ }).then(function() {
+ return writeRedPillLine("0000 000016FA 174FEE40 29AC8239 384FEA88");
+ }).then(function() {
+ return writeRedPillLine("0010 745F696E 2BBBE394 390E3940 248BEC23");
+ }).then(function() {
+ return writeRedPillLine("0020 7124696B 0000FF69 74652E6F FFFF1111");
+ }).then(function() {
+ return writeRedPillLine("----------------------------------------");
+ }).then(function() {
+ return writeRedPillLine("Failsafe initiated...");
+ }).then(function() {
+ return writeRedPillLine("Restarting BitNode-" + currentNodeNumber + "...");
+ }).then(function() {
+ return writeRedPillLine("...........");
+ }).then(function() {
+ return writeRedPillLine("...........");
+ }).then(function() {
+ return writeRedPillLine("[ERROR] FAILED TO AUTOMATICALLY REBOOT BITNODE");
+ }).then(function() {
+ return writeRedPillLine("..............................................")
+ }).then(function() {
+ return writeRedPillLine("..............................................")
+ }).then(function() {
+ return loadBitVerse(currentNodeNumber, flume);
+ }).catch(function(e){
+ console.log("ERROR: " + e.toString());
+ });
+}
+
+//The bitNode name passed in will have a hyphen between number (e.g. BitNode-1)
+//This needs to be removed
+function giveSourceFile(bitNodeNumber) {
+ var sourceFileKey = "SourceFile"+ bitNodeNumber.toString();
+ var sourceFile = _SourceFile_js__WEBPACK_IMPORTED_MODULE_4__["SourceFiles"][sourceFileKey];
+ if (sourceFile == null) {
+ console.log("ERROR: could not find source file for Bit node: " + bitNodeNumber);
+ return;
+ }
+
+ //Check if player already has this source file
+ var alreadyOwned = false;
+ var ownedSourceFile = null;
+ for (var i = 0; i < _Player_js__WEBPACK_IMPORTED_MODULE_2__["Player"].sourceFiles.length; ++i) {
+ if (_Player_js__WEBPACK_IMPORTED_MODULE_2__["Player"].sourceFiles[i].n === bitNodeNumber) {
+ alreadyOwned = true;
+ ownedSourceFile = _Player_js__WEBPACK_IMPORTED_MODULE_2__["Player"].sourceFiles[i];
+ break;
+ }
+ }
+
+ if (alreadyOwned && ownedSourceFile) {
+ if (ownedSourceFile.lvl >= 3 && ownedSourceFile.n !== 12) {
+ Object(_utils_DialogBox_js__WEBPACK_IMPORTED_MODULE_6__["dialogBoxCreate"])("The Source-File for the BitNode you just destroyed, " + sourceFile.name + ", " +
+ "is already at max level!");
+ } else {
+ ++ownedSourceFile.lvl;
+ Object(_utils_DialogBox_js__WEBPACK_IMPORTED_MODULE_6__["dialogBoxCreate"])(sourceFile.name + " was upgraded to level " + ownedSourceFile.lvl + " for " +
+ "destroying its corresponding BitNode!");
+ }
+ } else {
+ var playerSrcFile = new _SourceFile_js__WEBPACK_IMPORTED_MODULE_4__["PlayerOwnedSourceFile"](bitNodeNumber, 1);
+ _Player_js__WEBPACK_IMPORTED_MODULE_2__["Player"].sourceFiles.push(playerSrcFile);
+ if (bitNodeNumber === 5) { //Artificial Intelligence
+ _Player_js__WEBPACK_IMPORTED_MODULE_2__["Player"].intelligence = 1;
+ }
+ Object(_utils_DialogBox_js__WEBPACK_IMPORTED_MODULE_6__["dialogBoxCreate"])("You received a Source-File for destroying a Bit Node!
" +
+ sourceFile.name + "
" + sourceFile.info);
+ }
+}
+
+function loadBitVerse(destroyedBitNodeNum, flume=false) {
+ //Clear the screen
+ var container = document.getElementById("red-pill-container");
+ Object(_utils_HelperFunctions_js__WEBPACK_IMPORTED_MODULE_7__["removeChildrenFromElement"])(container);
+
+ //Create the Bit Verse
+ var bitVerseImage = document.createElement("pre");
+ var bitNodes = [];
+ for (var i = 1; i <= 12; ++i) {
+ bitNodes.push(createBitNode(i));
+ }
+
+ bitVerseImage.innerHTML =
+ " O
" +
+ " | O O | O O |
" +
+ " O | | / __| \\ | | O
" +
+ " O | O | | O / | O | | O | O
" +
+ " | | | | |_/ |/ | \\_ \\_| | | | |
" +
+ " O | | | O | | O__/ | / \\__ | | O | | | O
" +
+ " | | | | | | | / /| O / \\| | | | | | |
" +
+ "O | | | \\| | O / _/ | / O | |/ | | | O
" +
+ "| | | |O / | | O / | O O | | \\ O| | | |
" +
+ "| | |/ \\/ / __| | |/ \\ | \\ | |__ \\ \\/ \\| | |
" +
+ " \\| O | |_/ |\\| \\ O \\__| \\_| | O |/
" +
+ " | | |_/ | | \\| / | \\_| | |
" +
+ " \\| / \\| | / / \\ |/
" +
+ " | "+bitNodes[9]+" | | / | "+bitNodes[10]+" |
" +
+ " "+bitNodes[8]+" | | | | | | | "+bitNodes[11]+"
" +
+ " | | | / / \\ \\ | | |
" +
+ " \\| | / "+bitNodes[6]+" / \\ "+bitNodes[7]+" \\ | |/
" +
+ " \\ | / / | | \\ \\ | /
" +
+ " \\ \\JUMP "+bitNodes[4]+"3R | | | | | | R3"+bitNodes[5]+" PMUJ/ /
" +
+ " \\|| | | | | | | | | ||/
" +
+ " \\| \\_ | | | | | | _/ |/
" +
+ " \\ \\| / \\ / \\ |/ /
" +
+ " "+bitNodes[0]+" |/ "+bitNodes[1]+" | | "+bitNodes[2]+" \\| "+bitNodes[3]+"
" +
+ " | | | | | | | |
" +
+ " \\JUMP3R|JUMP|3R| |R3|PMUJ|R3PMUJ/
";
+
+
+ /*
+ " O
" +
+ " | O O | O O |
" +
+ " O | | / __| \ | | O
" +
+ " O | O | | O / | O | | O | O
" +
+ " | | | | |_/ |/ | \_ \_| | | | |
" +
+ " O | | | O | | O__/ | / \__ | | O | | | O
" +
+ " | | | | | | | / /| O / \| | | | | | |
" +
+ "O | | | \| | O / _/ | / O | |/ | | | O
" +
+ "| | | |O / | | O / | O O | | \ O| | | |
" +
+ "| | |/ \/ / __| | |/ \ | \ | |__ \ \/ \| | |
" +
+ " \| O | |_/ |\| \ O \__| \_| | O |/
" +
+ " | | |_/ | | \| / | \_| | |
" +
+ " \| / \| | / / \ |/
" +
+ " | O | | / | O |
" +
+ " O | | | | | | | O
" +
+ " | | | / / \ \ | | |
" +
+ " \| | / O / \ O \ | |/
" +
+ " \ | / / | | \ \ | /
" +
+ " \ \JUMP O3R | | | | | | R3O PMUJ/ /
" +
+ " \|| | | | | | | | | ||/
" +
+ " \| \_ | | | | | | _/ |/
" +
+ " \ \| / \ / \ |/ /
" +
+ " O |/ O | | O \| O
" +
+ " | | | | | | | |
" +
+ " \JUMP3R|JUMP|3R| |R3|PMUJ|R3PMUJ/
";
+ */
+
+ container.appendChild(bitVerseImage);
+
+ //Bit node event listeners
+ for (var i = 1; i <= 12; ++i) {
+ (function(i) {
+ var elemId = "bitnode-" + i.toString();
+ var elem = Object(_utils_HelperFunctions_js__WEBPACK_IMPORTED_MODULE_7__["clearEventListeners"])(elemId);
+ if (elem == null) {return;}
+ if (i === 1 || i === 2 || i === 3 || i === 4 || i === 5 || i === 6 || i === 8 || i === 11 || i === 12) {
+ elem.addEventListener("click", function() {
+ var bitNodeKey = "BitNode" + i;
+ var bitNode = _BitNode_js__WEBPACK_IMPORTED_MODULE_0__["BitNodes"][bitNodeKey];
+ if (bitNode == null) {
+ console.log("ERROR: Could not find BitNode object for number: " + i);
+ return;
+ }
+ Object(_utils_YesNoBox_js__WEBPACK_IMPORTED_MODULE_8__["yesNoBoxCreate"])("BitNode-" + i + ": " + bitNode.name + "
" + bitNode.info);
+ createBitNodeYesNoEventListeners(i, destroyedBitNodeNum, flume);
+ });
+ } else {
+ elem.addEventListener("click", function() {
+ Object(_utils_DialogBox_js__WEBPACK_IMPORTED_MODULE_6__["dialogBoxCreate"])("Not yet implemented! Coming soon!")
+ });
+ }
+ }(i)); //Immediate invocation closure
+ }
+
+ //Create lore text
+ return writeRedPillLine("Many decades ago, a humanoid extraterrestial species which we call the Enders descended on the Earth...violently").then(function() {
+ return writeRedPillLine("Our species fought back, but it was futile. The Enders had technology far beyond our own...");
+ }).then(function() {
+ return writeRedPillLine("Instead of killing every last one of us, the human race was enslaved...");
+ }).then(function() {
+ return writeRedPillLine("We were shackled in a digital world, chained into a prison for our minds...");
+ }).then(function() {
+ return writeRedPillLine("Using their advanced technology, the Enders created complex simulations of a virtual reality...");
+ }).then(function() {
+ return writeRedPillLine("Simulations designed to keep us content...ignorant of the truth.");
+ }).then(function() {
+ return writeRedPillLine("Simulations used to trap and suppress our consciousness, to keep us under control...");
+ }).then(function() {
+ return writeRedPillLine("Why did they do this? Why didn't they just end our entire race? We don't know, not yet.");
+ }).then(function() {
+ return writeRedPillLine("Humanity's only hope is to destroy these simulations, destroy the only realities we've ever known...");
+ }).then(function() {
+ return writeRedPillLine("Only then can we begin to fight back...");
+ }).then(function() {
+ return writeRedPillLine("By hacking the daemon that generated your reality, you've just destroyed one simulation, called a BitNode...");
+ }).then(function() {
+ return writeRedPillLine("But there is still a long way to go...");
+ }).then(function() {
+ return writeRedPillLine("The technology the Enders used to enslave the human race wasn't just a single complex simulation...");
+ }).then(function() {
+ return writeRedPillLine("There are tens if not hundreds of BitNodes out there...");
+ }).then(function() {
+ return writeRedPillLine("Each with their own simulations of a reality...");
+ }).then(function() {
+ return writeRedPillLine("Each creating their own universes...a universe of universes");
+ }).then(function() {
+ return writeRedPillLine("And all of which must be destroyed...");
+ }).then(function() {
+ return writeRedPillLine(".......................................");
+ }).then(function() {
+ return writeRedPillLine("Welcome to the Bitverse...");
+ }).then(function() {
+ return writeRedPillLine(" ");
+ }).then(function() {
+ return writeRedPillLine("(Enter a new BitNode using the image above)");
+ }).then(function() {
+ return Promise.resolve(true);
+ }).catch(function(e){
+ console.log("ERROR: " + e.toString());
+ });
+}
+
+
+//Returns string with DOM element for Bit Node
+function createBitNode(n) {
+ var bitNodeStr = "BitNode" + n.toString();
+ var bitNode = _BitNode_js__WEBPACK_IMPORTED_MODULE_0__["BitNodes"][bitNodeStr];
+ if (bitNode == null) {return "O";}
+ return "O" +
+ "" +
+ "BitNode-" + bitNode.number.toString() + "
" + bitNode.name+ "
" +
+ bitNode.desc + "
" +
+ "";
+}
+
+function createBitNodeYesNoEventListeners(newBitNode, destroyedBitNode, flume=false) {
+ var yesBtn = Object(_utils_YesNoBox_js__WEBPACK_IMPORTED_MODULE_8__["yesNoBoxGetYesButton"])();
+ yesBtn.innerHTML = "Enter BitNode-" + newBitNode;
+ yesBtn.addEventListener("click", function() {
+ if (!flume) {
+ giveSourceFile(destroyedBitNode);
+ } else {
+ //If player used flume, subtract 5 int exp. The prestigeSourceFile()
+ //function below grants 5 int exp, so this allows sets net gain to 0
+ _Player_js__WEBPACK_IMPORTED_MODULE_2__["Player"].gainIntelligenceExp(-5);
+ }
+ redPillFlag = false;
+ var container = document.getElementById("red-pill-container");
+ Object(_utils_HelperFunctions_js__WEBPACK_IMPORTED_MODULE_7__["removeChildrenFromElement"])(container);
+
+ //Set new Bit Node
+ _Player_js__WEBPACK_IMPORTED_MODULE_2__["Player"].bitNodeN = newBitNode;
+ console.log("Entering Bit Node " + _Player_js__WEBPACK_IMPORTED_MODULE_2__["Player"].bitNodeN);
+
+ //Reenable terminal
+ $("#hack-progress-bar").attr('id', "old-hack-progress-bar");
+ $("#hack-progress").attr('id', "old-hack-progress");
+ document.getElementById("terminal-input-td").innerHTML = '$ ';
+ $('input[class=terminal-input]').prop('disabled', false);
+
+ _Terminal_js__WEBPACK_IMPORTED_MODULE_5__["Terminal"].hackFlag = false;
+
+ Object(_Prestige_js__WEBPACK_IMPORTED_MODULE_3__["prestigeSourceFile"])();
+ Object(_utils_YesNoBox_js__WEBPACK_IMPORTED_MODULE_8__["yesNoBoxClose"])();
+ });
+ var noBtn = Object(_utils_YesNoBox_js__WEBPACK_IMPORTED_MODULE_8__["yesNoBoxGetNoButton"])();
+ noBtn.innerHTML = "Back";
+ noBtn.addEventListener("click", function() {
+ Object(_utils_YesNoBox_js__WEBPACK_IMPORTED_MODULE_8__["yesNoBoxClose"])();
+ });
+
+}
+
+
+
+/* WEBPACK VAR INJECTION */}.call(this, __webpack_require__(40)))
+
+/***/ }),
+/* 39 */
/***/ (function(module, exports, __webpack_require__) {
"use strict";
@@ -41890,10 +42912,7 @@ module.exports = GenericWorker;
/***/ }),
-/* 39 */
-/*!********************************************!*\
- !*** ./node_modules/jquery/dist/jquery.js ***!
- \********************************************/
+/* 40 */
/***/ (function(module, exports, __webpack_require__) {
var __WEBPACK_AMD_DEFINE_ARRAY__, __WEBPACK_AMD_DEFINE_RESULT__;/*!
@@ -52264,542 +53283,249 @@ return jQuery;
/***/ }),
-/* 40 */
-/*!****************************!*\
- !*** ./src/HacknetNode.js ***!
- \****************************/
+/* 41 */
/***/ (function(module, __webpack_exports__, __webpack_require__) {
"use strict";
__webpack_require__.r(__webpack_exports__);
-/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "hacknetNodesInit", function() { return hacknetNodesInit; });
-/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "HacknetNode", function() { return HacknetNode; });
-/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "purchaseHacknet", function() { return purchaseHacknet; });
-/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "updateTotalHacknetProduction", function() { return updateTotalHacknetProduction; });
-/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "getCostOfNextHacknetNode", function() { return getCostOfNextHacknetNode; });
-/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "updateHacknetNodesMultiplierButtons", function() { return updateHacknetNodesMultiplierButtons; });
-/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "getMaxNumberLevelUpgrades", function() { return getMaxNumberLevelUpgrades; });
-/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "displayHacknetNodesContent", function() { return displayHacknetNodesContent; });
-/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "updateHacknetNodesContent", function() { return updateHacknetNodesContent; });
-/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "processAllHacknetNodeEarnings", function() { return processAllHacknetNodeEarnings; });
-/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "getHacknetNode", function() { return getHacknetNode; });
-/* harmony import */ var _BitNode_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./BitNode.js */ 15);
-/* harmony import */ var _Constants_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./Constants.js */ 3);
-/* harmony import */ var _engine_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./engine.js */ 5);
-/* harmony import */ var _InteractiveTutorial_js__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./InteractiveTutorial.js */ 25);
-/* harmony import */ var _Player_js__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ./Player.js */ 0);
-/* harmony import */ var _utils_DialogBox_js__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ../utils/DialogBox.js */ 7);
-/* harmony import */ var _utils_HelperFunctions_js__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! ../utils/HelperFunctions.js */ 1);
-/* harmony import */ var _utils_JSONReviver_js__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! ../utils/JSONReviver.js */ 8);
-/* harmony import */ var _utils_StringHelperFunctions_js__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! ../utils/StringHelperFunctions.js */ 2);
+/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "SourceFiles", function() { return SourceFiles; });
+/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "PlayerOwnedSourceFile", function() { return PlayerOwnedSourceFile; });
+/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "applySourceFile", function() { return applySourceFile; });
+/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "initSourceFiles", function() { return initSourceFiles; });
+/* harmony import */ var _Player_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(0);
+/* harmony import */ var _BitNode_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(15);
-
-
-
-
-
-
-
-/* HacknetNode.js */
-function hacknetNodesInit() {
- var mult1x = document.getElementById("hacknet-nodes-1x-multiplier");
- mult1x.addEventListener("click", function() {
- hacknetNodePurchaseMultiplier = 1;
- updateHacknetNodesMultiplierButtons();
- updateHacknetNodesContent();
- return false;
- });
- var mult5x = document.getElementById("hacknet-nodes-5x-multiplier");
- mult5x.addEventListener("click", function() {
- hacknetNodePurchaseMultiplier = 5;
- updateHacknetNodesMultiplierButtons();
- updateHacknetNodesContent();
- return false;
- });
- var mult10x = document.getElementById("hacknet-nodes-10x-multiplier");
- mult10x.addEventListener("click", function() {
- hacknetNodePurchaseMultiplier = 10;
- updateHacknetNodesMultiplierButtons();
- updateHacknetNodesContent();
- return false;
- });
- var multMax = document.getElementById("hacknet-nodes-max-multiplier");
- multMax.addEventListener("click", function() {
- hacknetNodePurchaseMultiplier = 0;
- updateHacknetNodesMultiplierButtons();
- updateHacknetNodesContent();
- return false;
- });
-}
-document.addEventListener("DOMContentLoaded", hacknetNodesInit, false);
-
-function HacknetNode(name) {
- this.level = 1;
- this.ram = 1; //GB
- this.cores = 1;
-
- this.name = name;
-
- this.totalMoneyGenerated = 0;
- this.onlineTimeSeconds = 0;
-
- this.moneyGainRatePerSecond = 0;
-}
-
-HacknetNode.prototype.updateMoneyGainRate = function() {
- //How much extra $/s is gained per level
- var gainPerLevel = _Constants_js__WEBPACK_IMPORTED_MODULE_1__["CONSTANTS"].HacknetNodeMoneyGainPerLevel;
-
- this.moneyGainRatePerSecond = (this.level * gainPerLevel) *
- Math.pow(1.035, this.ram-1) *
- ((this.cores + 5) / 6) *
- _Player_js__WEBPACK_IMPORTED_MODULE_4__["Player"].hacknet_node_money_mult *
- _BitNode_js__WEBPACK_IMPORTED_MODULE_0__["BitNodeMultipliers"].HacknetNodeMoney;
- if (isNaN(this.moneyGainRatePerSecond)) {
- this.moneyGainRatePerSecond = 0;
- Object(_utils_DialogBox_js__WEBPACK_IMPORTED_MODULE_5__["dialogBoxCreate"])("Error in calculating Hacknet Node production. Please report to game developer");
+/* SourceFile.js */
+//Each SourceFile corresponds to a BitNode with the same number
+function SourceFile(number, info="") {
+ var bitnodeKey = "BitNode" + number;
+ var bitnode = _BitNode_js__WEBPACK_IMPORTED_MODULE_1__["BitNodes"][bitnodeKey];
+ if (bitnode == null) {
+ throw new Error("Invalid Bit Node for this Source File");
}
- updateTotalHacknetProduction();
+ this.n = number;
+ this.name = "Source-File " + number + ": " + bitnode.name;
+ this.lvl = 1;
+ this.info = info;
+ this.owned = false;
}
-HacknetNode.prototype.calculateLevelUpgradeCost = function(levels=1) {
- levels = Math.round(levels);
- if (isNaN(levels) || levels < 1) {return 0;}
- var mult = _Constants_js__WEBPACK_IMPORTED_MODULE_1__["CONSTANTS"].HacknetNodeUpgradeLevelMult;
- var totalMultiplier = 0; //Summed
- var currLevel = this.level;
- for (var i = 0; i < levels; ++i) {
- totalMultiplier += Math.pow(mult, currLevel);
- ++currLevel;
- }
- return _Constants_js__WEBPACK_IMPORTED_MODULE_1__["CONSTANTS"].BaseCostForHacknetNode / 2 * totalMultiplier * _Player_js__WEBPACK_IMPORTED_MODULE_4__["Player"].hacknet_node_level_cost_mult;
+let SourceFiles = {};
+function initSourceFiles() {
+ SourceFiles = {};
+ SourceFiles["SourceFile1"] = new SourceFile(1, "This Source-File lets the player start with 32GB of RAM on his/her " +
+ "home computer. It also increases all of the player's multipliers by:
" +
+ "Level 1: 16%
" +
+ "Level 2: 24%
" +
+ "Level 3: 28%");
+ SourceFiles["SourceFile2"] = new SourceFile(2, "This Source-File increases the player's crime success rate, crime money, and charisma " +
+ "multipliers by:
" +
+ "Level 1: 20%
" +
+ "Level 2: 30%
" +
+ "Level 3: 35%");
+ SourceFiles["SourceFile3"] = new SourceFile(3,"This Source-File lets you create corporations on other BitNodes (although " +
+ "some BitNodes will disable this mechanic). This Source-File also increases your charisma and company salary multipliers by:
" +
+ "Level 1: 8%
" +
+ "Level 2: 12%
" +
+ "Level 3: 14%");
+ SourceFiles["SourceFile4"] = new SourceFile(4, "This Source-File lets you access and use the Singularity Functions in every BitNode. Every " +
+ "level of this Source-File opens up more of the Singularity Functions you can use.");
+ SourceFiles["SourceFile5"] = new SourceFile(5, "This Source-File grants a special new stat called Intelligence. Intelligence " +
+ "is unique because it is permanent and persistent (it never gets reset back to 1). However, " +
+ "gaining Intelligence experience is much slower than other stats, and it is also hidden (you won't " +
+ "know when you gain experience and how much). Higher Intelligence levels will boost your production " +
+ "for many actions in the game. In addition, this Source-File will unlock the getBitNodeMultipliers() " +
+ "Netscript function, and will raise all of your hacking-related multipliers by:
" +
+ "Level 1: 4%
" +
+ "Level 2: 6%
" +
+ "Level 3: 7%");
+ SourceFiles["SourceFile6"] = new SourceFile(6, "This Source-File allows you to access the NSA's Bladeburner Division in other " +
+ "BitNodes. In addition, this Source-File will raise the experience gain rate of all your combat stats by:
" +
+ "Level 1: 8%
" +
+ "Level 2: 12%
" +
+ "Level 3: 14%");
+ SourceFiles["SourceFile7"] = new SourceFile(7);
+ SourceFiles["SourceFile8"] = new SourceFile(8, "This Source-File grants the following benefits:
" +
+ "Level 1: Permanent access to WSE and TIX API
" +
+ "Level 2: Ability to short stocks in other BitNodes
" +
+ "Level 3: Ability to use limit/stop orders in other BitNodes
" +
+ "This Source-File also increases your hacking growth multipliers by: " +
+ "
Level 1: 8%
Level 2: 12%
Level 3: 14%");
+ SourceFiles["SourceFile9"] = new SourceFile(9);
+ SourceFiles["SourceFile10"] = new SourceFile(10);
+ SourceFiles["SourceFile11"] = new SourceFile(11, "This Source-File makes it so that company favor increases BOTH the player's salary and reputation gain rate " +
+ "at that company by 1% per favor (rather than just the reputation gain). This Source-File also " +
+ " increases the player's company salary and reputation gain multipliers by:
" +
+ "Level 1: 24%
" +
+ "Level 2: 36%
" +
+ "Level 3: 42%
");
+ SourceFiles["SourceFile12"] = new SourceFile(12, "This Source-File increases all your multipliers by 1% per level");
}
-//Wrapper function for Netscript
-HacknetNode.prototype.getLevelUpgradeCost = function(levels=1) {
- return this.calculateLevelUpgradeCost(levels);
+function PlayerOwnedSourceFile(number, level) {
+ this.n = number;
+ this.lvl = level;
}
-HacknetNode.prototype.purchaseLevelUpgrade = function(levels=1) {
- levels = Math.round(levels);
- var cost = this.calculateLevelUpgradeCost(levels);
- if (isNaN(cost) || levels < 0) {return false;}
- if (this.level + levels > _Constants_js__WEBPACK_IMPORTED_MODULE_1__["CONSTANTS"].HacknetNodeMaxLevel) {
- var diff = Math.max(0, _Constants_js__WEBPACK_IMPORTED_MODULE_1__["CONSTANTS"].HacknetNodeMaxLevel - this.level);
- return this.purchaseLevelUpgrade(diff);
- }
- if (_Player_js__WEBPACK_IMPORTED_MODULE_4__["Player"].money.lt(cost)) {return false;}
- _Player_js__WEBPACK_IMPORTED_MODULE_4__["Player"].loseMoney(cost);
- this.level += levels;
- this.updateMoneyGainRate();
- return true;
-}
-
-//Wrapper function for Netscript
-HacknetNode.prototype.upgradeLevel = function(levels=1) {
- return this.purchaseLevelUpgrade(levels);
-}
-
-HacknetNode.prototype.calculateRamUpgradeCost = function() {
- var numUpgrades = Math.log2(this.ram);
-
- //Calculate cost
- //Base cost of RAM is 50k per 1GB, increased by some multiplier for each time RAM is upgraded
- var baseCost = this.ram * _Constants_js__WEBPACK_IMPORTED_MODULE_1__["CONSTANTS"].BaseCostFor1GBOfRamHacknetNode;
- var mult = Math.pow(_Constants_js__WEBPACK_IMPORTED_MODULE_1__["CONSTANTS"].HacknetNodeUpgradeRamMult, numUpgrades);
- return baseCost * mult * _Player_js__WEBPACK_IMPORTED_MODULE_4__["Player"].hacknet_node_ram_cost_mult;
-}
-
-//Wrapper function for Netscript
-HacknetNode.prototype.getRamUpgradeCost = function() {
- return this.calculateRamUpgradeCost();
-}
-
-HacknetNode.prototype.purchaseRamUpgrade = function() {
- var cost = this.calculateRamUpgradeCost();
- if (isNaN(cost)) {return false;}
- if (_Player_js__WEBPACK_IMPORTED_MODULE_4__["Player"].money.lt(cost)) {return false;}
- if (this.ram >= _Constants_js__WEBPACK_IMPORTED_MODULE_1__["CONSTANTS"].HacknetNodeMaxRam) {return false;}
- _Player_js__WEBPACK_IMPORTED_MODULE_4__["Player"].loseMoney(cost);
- this.ram *= 2; //Ram is always doubled
- this.updateMoneyGainRate();
- return true;
-}
-
-//Wrapper function for Netscript
-HacknetNode.prototype.upgradeRam = function() {
- return this.purchaseRamUpgrade();
-}
-
-HacknetNode.prototype.calculateCoreUpgradeCost = function() {
- var coreBaseCost = _Constants_js__WEBPACK_IMPORTED_MODULE_1__["CONSTANTS"].BaseCostForHacknetNodeCore;
- var mult = _Constants_js__WEBPACK_IMPORTED_MODULE_1__["CONSTANTS"].HacknetNodeUpgradeCoreMult;
- return coreBaseCost * Math.pow(mult, this.cores-1) * _Player_js__WEBPACK_IMPORTED_MODULE_4__["Player"].hacknet_node_core_cost_mult;
-}
-
-//Wrapper function for Netscript
-HacknetNode.prototype.getCoreUpgradeCost = function() {
- return this.calculateCoreUpgradeCost();
-}
-
-HacknetNode.prototype.purchaseCoreUpgrade = function() {
- var cost = this.calculateCoreUpgradeCost();
- if (isNaN(cost)) {return false;}
- if (_Player_js__WEBPACK_IMPORTED_MODULE_4__["Player"].money.lt(cost)) {return false;}
- if (this.cores >= _Constants_js__WEBPACK_IMPORTED_MODULE_1__["CONSTANTS"].HacknetNodeMaxCores) {return false;}
- _Player_js__WEBPACK_IMPORTED_MODULE_4__["Player"].loseMoney(cost);
- ++this.cores;
- this.updateMoneyGainRate();
- return true;
-}
-
-//Wrapper function for Netscript
-HacknetNode.prototype.upgradeCore = function() {
- return this.purchaseCoreUpgrade();
-}
-
-/* Saving and loading HackNets */
-HacknetNode.prototype.toJSON = function() {
- return Object(_utils_JSONReviver_js__WEBPACK_IMPORTED_MODULE_7__["Generic_toJSON"])("HacknetNode", this);
-}
-
-HacknetNode.fromJSON = function(value) {
- return Object(_utils_JSONReviver_js__WEBPACK_IMPORTED_MODULE_7__["Generic_fromJSON"])(HacknetNode, value.data);
-}
-
-_utils_JSONReviver_js__WEBPACK_IMPORTED_MODULE_7__["Reviver"].constructors.HacknetNode = HacknetNode;
-
-
-function purchaseHacknet() {
- /* INTERACTIVE TUTORIAL */
- if (_InteractiveTutorial_js__WEBPACK_IMPORTED_MODULE_3__["iTutorialIsRunning"]) {
- if (_InteractiveTutorial_js__WEBPACK_IMPORTED_MODULE_3__["currITutorialStep"] == _InteractiveTutorial_js__WEBPACK_IMPORTED_MODULE_3__["iTutorialSteps"].HacknetNodesIntroduction) {
- Object(_InteractiveTutorial_js__WEBPACK_IMPORTED_MODULE_3__["iTutorialNextStep"])();
- } else {
- return;
- }
+//Takes in a PlayerOwnedSourceFile as the "srcFile" argument
+function applySourceFile(srcFile) {
+ var srcFileKey = "SourceFile" + srcFile.n;
+ var sourceFileObject = SourceFiles[srcFileKey];
+ if (sourceFileObject == null) {
+ console.log("ERROR: Invalid source file number: " + srcFile.n);
+ return;
}
- /* END INTERACTIVE TUTORIAL */
+ switch(srcFile.n) {
+ case 1: // The Source Genesis
+ var mult = 0;
+ for (var i = 0; i < srcFile.lvl; ++i) {
+ mult += (16 / (Math.pow(2, i)));
+ }
+ var incMult = 1 + (mult / 100);
+ var decMult = 1 - (mult / 100);
+ _Player_js__WEBPACK_IMPORTED_MODULE_0__["Player"].hacking_chance_mult *= incMult;
+ _Player_js__WEBPACK_IMPORTED_MODULE_0__["Player"].hacking_speed_mult *= incMult;
+ _Player_js__WEBPACK_IMPORTED_MODULE_0__["Player"].hacking_money_mult *= incMult;
+ _Player_js__WEBPACK_IMPORTED_MODULE_0__["Player"].hacking_grow_mult *= incMult;
+ _Player_js__WEBPACK_IMPORTED_MODULE_0__["Player"].hacking_mult *= incMult;
+ _Player_js__WEBPACK_IMPORTED_MODULE_0__["Player"].strength_mult *= incMult;
+ _Player_js__WEBPACK_IMPORTED_MODULE_0__["Player"].defense_mult *= incMult;
+ _Player_js__WEBPACK_IMPORTED_MODULE_0__["Player"].dexterity_mult *= incMult;
+ _Player_js__WEBPACK_IMPORTED_MODULE_0__["Player"].agility_mult *= incMult;
+ _Player_js__WEBPACK_IMPORTED_MODULE_0__["Player"].charisma_mult *= incMult;
+ _Player_js__WEBPACK_IMPORTED_MODULE_0__["Player"].hacking_exp_mult *= incMult;
+ _Player_js__WEBPACK_IMPORTED_MODULE_0__["Player"].strength_exp_mult *= incMult;
+ _Player_js__WEBPACK_IMPORTED_MODULE_0__["Player"].defense_exp_mult *= incMult;
+ _Player_js__WEBPACK_IMPORTED_MODULE_0__["Player"].dexterity_exp_mult *= incMult;
+ _Player_js__WEBPACK_IMPORTED_MODULE_0__["Player"].agility_exp_mult *= incMult;
+ _Player_js__WEBPACK_IMPORTED_MODULE_0__["Player"].charisma_exp_mult *= incMult;
+ _Player_js__WEBPACK_IMPORTED_MODULE_0__["Player"].company_rep_mult *= incMult;
+ _Player_js__WEBPACK_IMPORTED_MODULE_0__["Player"].faction_rep_mult *= incMult;
+ _Player_js__WEBPACK_IMPORTED_MODULE_0__["Player"].crime_money_mult *= incMult;
+ _Player_js__WEBPACK_IMPORTED_MODULE_0__["Player"].crime_success_mult *= incMult;
+ _Player_js__WEBPACK_IMPORTED_MODULE_0__["Player"].hacknet_node_money_mult *= incMult;
+ _Player_js__WEBPACK_IMPORTED_MODULE_0__["Player"].hacknet_node_purchase_cost_mult *= decMult;
+ _Player_js__WEBPACK_IMPORTED_MODULE_0__["Player"].hacknet_node_ram_cost_mult *= decMult;
+ _Player_js__WEBPACK_IMPORTED_MODULE_0__["Player"].hacknet_node_core_cost_mult *= decMult;
+ _Player_js__WEBPACK_IMPORTED_MODULE_0__["Player"].hacknet_node_level_cost_mult *= decMult;
+ _Player_js__WEBPACK_IMPORTED_MODULE_0__["Player"].work_money_mult *= incMult;
+ break;
+ case 2: //Rise of the Underworld
+ var mult = 0;
+ for (var i = 0; i < srcFile.lvl; ++i) {
+ mult += (20 / (Math.pow(2, i)));
+ }
+ var incMult = 1 + (mult / 100);
+ _Player_js__WEBPACK_IMPORTED_MODULE_0__["Player"].crime_money_mult *= incMult;
+ _Player_js__WEBPACK_IMPORTED_MODULE_0__["Player"].crime_success_mult *= incMult;
+ _Player_js__WEBPACK_IMPORTED_MODULE_0__["Player"].charisma_mult *= incMult;
+ break;
+ case 3: //Corporatocracy
+ var mult = 0;
+ for (var i = 0; i < srcFile.lvl; ++i) {
+ mult += (8 / (Math.pow(2, i)));
+ }
+ var incMult = 1 + (mult / 100);
+ _Player_js__WEBPACK_IMPORTED_MODULE_0__["Player"].charisma_mult *= incMult;
+ _Player_js__WEBPACK_IMPORTED_MODULE_0__["Player"].work_money_mult *= incMult;
+ break;
+ case 4: //The Singularity
+ //No effects, just gives access to Singularity functions
+ break;
+ case 5: //Artificial Intelligence
+ var mult = 0;
+ for (var i = 0; i < srcFile.lvl; ++i) {
+ mult += (4 / (Math.pow(2, i)));
+ }
+ var incMult = 1 + (mult / 100);
+ _Player_js__WEBPACK_IMPORTED_MODULE_0__["Player"].hacking_chance_mult *= incMult;
+ _Player_js__WEBPACK_IMPORTED_MODULE_0__["Player"].hacking_speed_mult *= incMult;
+ _Player_js__WEBPACK_IMPORTED_MODULE_0__["Player"].hacking_money_mult *= incMult;
+ _Player_js__WEBPACK_IMPORTED_MODULE_0__["Player"].hacking_grow_mult *= incMult;
+ _Player_js__WEBPACK_IMPORTED_MODULE_0__["Player"].hacking_mult *= incMult;
+ _Player_js__WEBPACK_IMPORTED_MODULE_0__["Player"].hacking_exp_mult *= incMult;
+ break;
+ case 6: //Bladeburner
+ var mult = 0;
+ for (var i = 0; i < srcFile.lvl; ++i) {
+ mult += (8 / (Math.pow(2, i)));
+ }
+ var incMult = 1 + (mult / 100);
+ _Player_js__WEBPACK_IMPORTED_MODULE_0__["Player"].strength_exp_mult *= incMult;
+ _Player_js__WEBPACK_IMPORTED_MODULE_0__["Player"].defense_exp_mult *= incMult;
+ _Player_js__WEBPACK_IMPORTED_MODULE_0__["Player"].dexterity_exp_mult *= incMult;
+ _Player_js__WEBPACK_IMPORTED_MODULE_0__["Player"].agility_exp_mult *= incMult;
+ break;
+ case 8: //Ghost of Wall Street
+ var mult = 0;
+ for (var i = 0; i < srcFile.lvl; ++i) {
+ mult += (8 / (Math.pow(2, i)));
+ }
+ var incMult = 1 + (mult / 100);
+ _Player_js__WEBPACK_IMPORTED_MODULE_0__["Player"].hacking_grow_mult *= incMult;
+ break;
+ case 11: //The Big Crash
+ var mult = 0;
+ for (var i = 0; i < srcFile.lvl; ++i) {
+ mult += (24 / (Math.pow(2, i)));
+ }
+ var incMult = 1 + (mult / 100);
+ _Player_js__WEBPACK_IMPORTED_MODULE_0__["Player"].work_money_mult *= incMult;
+ _Player_js__WEBPACK_IMPORTED_MODULE_0__["Player"].company_rep_mult *= incMult;
+ break;
+ case 12: //The testing ground
+ const inc = Math.pow(1.01, srcFile.lvl);
+ const dec = Math.pow(0.99, srcFile.lvl);
- var cost = getCostOfNextHacknetNode();
- if (isNaN(cost)) {throw new Error("Cost is NaN"); return;}
- if (_Player_js__WEBPACK_IMPORTED_MODULE_4__["Player"].money.lt(cost)) {
- //dialogBoxCreate("You cannot afford to purchase a Hacknet Node!");
- return false;
+ _Player_js__WEBPACK_IMPORTED_MODULE_0__["Player"].hacking_chance_mult *= inc;
+ _Player_js__WEBPACK_IMPORTED_MODULE_0__["Player"].hacking_speed_mult *= inc;
+ _Player_js__WEBPACK_IMPORTED_MODULE_0__["Player"].hacking_money_mult *= inc;
+ _Player_js__WEBPACK_IMPORTED_MODULE_0__["Player"].hacking_grow_mult *= inc;
+ _Player_js__WEBPACK_IMPORTED_MODULE_0__["Player"].hacking_mult *= inc;
+
+ _Player_js__WEBPACK_IMPORTED_MODULE_0__["Player"].strength_mult *= inc;
+ _Player_js__WEBPACK_IMPORTED_MODULE_0__["Player"].defense_mult *= inc;
+ _Player_js__WEBPACK_IMPORTED_MODULE_0__["Player"].dexterity_mult *= inc;
+ _Player_js__WEBPACK_IMPORTED_MODULE_0__["Player"].agility_mult *= inc;
+ _Player_js__WEBPACK_IMPORTED_MODULE_0__["Player"].charisma_mult *= inc;
+
+ _Player_js__WEBPACK_IMPORTED_MODULE_0__["Player"].hacking_exp_mult *= inc;
+ _Player_js__WEBPACK_IMPORTED_MODULE_0__["Player"].strength_exp_mult *= inc;
+ _Player_js__WEBPACK_IMPORTED_MODULE_0__["Player"].defense_exp_mult *= inc;
+ _Player_js__WEBPACK_IMPORTED_MODULE_0__["Player"].dexterity_exp_mult *= inc;
+ _Player_js__WEBPACK_IMPORTED_MODULE_0__["Player"].agility_exp_mult *= inc;
+ _Player_js__WEBPACK_IMPORTED_MODULE_0__["Player"].charisma_exp_mult *= inc;
+
+ _Player_js__WEBPACK_IMPORTED_MODULE_0__["Player"].company_rep_mult *= inc;
+ _Player_js__WEBPACK_IMPORTED_MODULE_0__["Player"].faction_rep_mult *= inc;
+
+ _Player_js__WEBPACK_IMPORTED_MODULE_0__["Player"].crime_money_mult *= inc;
+ _Player_js__WEBPACK_IMPORTED_MODULE_0__["Player"].crime_success_mult *= inc;
+
+ _Player_js__WEBPACK_IMPORTED_MODULE_0__["Player"].hacknet_node_money_mult *= inc;
+ _Player_js__WEBPACK_IMPORTED_MODULE_0__["Player"].hacknet_node_purchase_cost_mult *= dec;
+ _Player_js__WEBPACK_IMPORTED_MODULE_0__["Player"].hacknet_node_ram_cost_mult *= dec;
+ _Player_js__WEBPACK_IMPORTED_MODULE_0__["Player"].hacknet_node_core_cost_mult *= dec;
+ _Player_js__WEBPACK_IMPORTED_MODULE_0__["Player"].hacknet_node_level_cost_mult *= dec;
+
+ _Player_js__WEBPACK_IMPORTED_MODULE_0__["Player"].work_money_mult *= inc;
+ default:
+ console.log("ERROR: Invalid source file number: " + srcFile.n);
+ break;
}
- //Auto generate a name for the node for now...TODO
- var numOwned = _Player_js__WEBPACK_IMPORTED_MODULE_4__["Player"].hacknetNodes.length;
- var name = "hacknet-node-" + numOwned;
- var node = new HacknetNode(name);
- node.updateMoneyGainRate();
-
- _Player_js__WEBPACK_IMPORTED_MODULE_4__["Player"].loseMoney(cost);
- _Player_js__WEBPACK_IMPORTED_MODULE_4__["Player"].hacknetNodes.push(node);
-
- displayHacknetNodesContent();
- updateTotalHacknetProduction();
- return numOwned;
-}
-
-//Calculates the total production from all HacknetNodes
-function updateTotalHacknetProduction() {
- var total = 0;
- for (var i = 0; i < _Player_js__WEBPACK_IMPORTED_MODULE_4__["Player"].hacknetNodes.length; ++i) {
- total += _Player_js__WEBPACK_IMPORTED_MODULE_4__["Player"].hacknetNodes[i].moneyGainRatePerSecond;
- }
- _Player_js__WEBPACK_IMPORTED_MODULE_4__["Player"].totalHacknetNodeProduction = total;
-}
-
-function getCostOfNextHacknetNode() {
- //Cost increases exponentially based on how many you own
- var numOwned = _Player_js__WEBPACK_IMPORTED_MODULE_4__["Player"].hacknetNodes.length;
- var mult = _Constants_js__WEBPACK_IMPORTED_MODULE_1__["CONSTANTS"].HacknetNodePurchaseNextMult;
- return _Constants_js__WEBPACK_IMPORTED_MODULE_1__["CONSTANTS"].BaseCostForHacknetNode * Math.pow(mult, numOwned) * _Player_js__WEBPACK_IMPORTED_MODULE_4__["Player"].hacknet_node_purchase_cost_mult;
-}
-
-var hacknetNodePurchaseMultiplier = 1;
-function updateHacknetNodesMultiplierButtons() {
- var mult1x = document.getElementById("hacknet-nodes-1x-multiplier");
- var mult5x = document.getElementById("hacknet-nodes-5x-multiplier");
- var mult10x = document.getElementById("hacknet-nodes-10x-multiplier");
- var multMax = document.getElementById("hacknet-nodes-max-multiplier");
- mult1x.setAttribute("class", "a-link-button");
- mult5x.setAttribute("class", "a-link-button");
- mult10x.setAttribute("class", "a-link-button");
- multMax.setAttribute("class", "a-link-button");
- if (_Player_js__WEBPACK_IMPORTED_MODULE_4__["Player"].hacknetNodes.length == 0) {
- mult1x.setAttribute("class", "a-link-button-inactive");
- mult5x.setAttribute("class", "a-link-button-inactive");
- mult10x.setAttribute("class", "a-link-button-inactive");
- multMax.setAttribute("class", "a-link-button-inactive");
- } else if (hacknetNodePurchaseMultiplier == 1) {
- mult1x.setAttribute("class", "a-link-button-inactive");
- } else if (hacknetNodePurchaseMultiplier == 5) {
- mult5x.setAttribute("class", "a-link-button-inactive");
- } else if (hacknetNodePurchaseMultiplier == 10) {
- mult10x.setAttribute("class", "a-link-button-inactive");
- } else {
- multMax.setAttribute("class", "a-link-button-inactive");
- }
-}
-
-//Calculate the maximum number of times the Player can afford to upgrade
-//a Hacknet Node's level"
-function getMaxNumberLevelUpgrades(nodeObj) {
- if (_Player_js__WEBPACK_IMPORTED_MODULE_4__["Player"].money.lt(nodeObj.calculateLevelUpgradeCost(1))) {return 0;}
- var min = 1;
- var max = _Constants_js__WEBPACK_IMPORTED_MODULE_1__["CONSTANTS"].HacknetNodeMaxLevel-1;
- var levelsToMax = _Constants_js__WEBPACK_IMPORTED_MODULE_1__["CONSTANTS"].HacknetNodeMaxLevel - nodeObj.level;
- if (_Player_js__WEBPACK_IMPORTED_MODULE_4__["Player"].money.gt(nodeObj.calculateLevelUpgradeCost(levelsToMax))) {
- return levelsToMax;
- }
-
- while (min <= max) {
- var curr = (min + max) / 2 | 0;
- if (curr != _Constants_js__WEBPACK_IMPORTED_MODULE_1__["CONSTANTS"].HacknetNodeMaxLevel &&
- _Player_js__WEBPACK_IMPORTED_MODULE_4__["Player"].money.gt(nodeObj.calculateLevelUpgradeCost(curr)) &&
- _Player_js__WEBPACK_IMPORTED_MODULE_4__["Player"].money.lt(nodeObj.calculateLevelUpgradeCost(curr+1))) {
- return Math.min(levelsToMax, curr);
- } else if (_Player_js__WEBPACK_IMPORTED_MODULE_4__["Player"].money.lt(nodeObj.calculateLevelUpgradeCost(curr))) {
- max = curr - 1;
- } else if (_Player_js__WEBPACK_IMPORTED_MODULE_4__["Player"].money.gt(nodeObj.calculateLevelUpgradeCost(curr))) {
- min = curr + 1;
- } else {
- return Math.min(levelsToMax, curr);
- }
- }
-}
-
-//Creates Hacknet Node DOM elements when the page is opened
-function displayHacknetNodesContent() {
- //Update Hacknet Nodes button
- var newPurchaseButton = Object(_utils_HelperFunctions_js__WEBPACK_IMPORTED_MODULE_6__["clearEventListeners"])("hacknet-nodes-purchase-button");
-
- newPurchaseButton.addEventListener("click", function() {
- purchaseHacknet();
- return false;
- });
-
- //Handle Purchase multiplier buttons
- updateHacknetNodesMultiplierButtons();
-
- //Remove all old hacknet Node DOM elements
- var hacknetNodesList = document.getElementById("hacknet-nodes-list");
- while (hacknetNodesList.firstChild) {
- hacknetNodesList.removeChild(hacknetNodesList.firstChild);
- }
-
- //Then re-create them
- for (var i = 0; i < _Player_js__WEBPACK_IMPORTED_MODULE_4__["Player"].hacknetNodes.length; ++i) {
- createHacknetNodeDomElement(_Player_js__WEBPACK_IMPORTED_MODULE_4__["Player"].hacknetNodes[i]);
- }
- updateHacknetNodesContent();
-}
-
-//Update information on all Hacknet Node DOM elements
-function updateHacknetNodesContent() {
- //Set purchase button to inactive if not enough money, and update its price display
- var cost = getCostOfNextHacknetNode();
- var purchaseButton = document.getElementById("hacknet-nodes-purchase-button");
- purchaseButton.innerHTML = "Purchase Hacknet Node - $" + Object(_utils_StringHelperFunctions_js__WEBPACK_IMPORTED_MODULE_8__["formatNumber"])(cost, 2);
- if (_Player_js__WEBPACK_IMPORTED_MODULE_4__["Player"].money.lt(cost)) {
- purchaseButton.setAttribute("class", "a-link-button-inactive");
- } else {
- purchaseButton.setAttribute("class", "a-link-button");
- }
-
- //Update player's money
- var moneyElem = document.getElementById("hacknet-nodes-money");
- moneyElem.innerHTML = "Money: $" + Object(_utils_StringHelperFunctions_js__WEBPACK_IMPORTED_MODULE_8__["formatNumber"])(_Player_js__WEBPACK_IMPORTED_MODULE_4__["Player"].money.toNumber(), 2) + "
" +
- "Total production from all Hacknet Nodes: $" + Object(_utils_StringHelperFunctions_js__WEBPACK_IMPORTED_MODULE_8__["formatNumber"])(_Player_js__WEBPACK_IMPORTED_MODULE_4__["Player"].totalHacknetNodeProduction, 2) + " / second";
-
- //Update information in each owned hacknet node
- for (var i = 0; i < _Player_js__WEBPACK_IMPORTED_MODULE_4__["Player"].hacknetNodes.length; ++i) {
- updateHacknetNodeDomElement(_Player_js__WEBPACK_IMPORTED_MODULE_4__["Player"].hacknetNodes[i]);
- }
-}
-
-//Creates a single Hacknet Node DOM element
-function createHacknetNodeDomElement(nodeObj) {
- var nodeName = nodeObj.name;
-
- var listItem = document.createElement("li");
- listItem.setAttribute("class", "hacknet-node");
-
- var span = document.createElement("span");
- span.style.display = "inline";
-
- var buttonDiv = document.createElement("div");
- buttonDiv.setAttribute("class", "hacknet-node-button-div");
-
- //Text
- var txt = document.createElement("p");
- //txt.setAttribute("id", "hacknet-node-text-" + nodeName);
- txt.id = "hacknet-node-text-" + nodeName;
-
- //Upgrade buttons
- var upgradeLevelButton = document.createElement("a");
- var upgradeRamButton = document.createElement("a");
- var upgradeCoreButton = document.createElement("a");
-
- //upgradeLevelButton.setAttribute("id", "hacknet-node-upgrade-level-" + nodeName);
- upgradeLevelButton.id = "hacknet-node-upgrade-level-" + nodeName;
- upgradeLevelButton.setAttribute("class", "a-link-button-inactive");
- upgradeLevelButton.addEventListener("click", function() {
- var numUpgrades = hacknetNodePurchaseMultiplier;
- if (hacknetNodePurchaseMultiplier == 0) {
- numUpgrades = getMaxNumberLevelUpgrades(nodeObj);
- }
- nodeObj.purchaseLevelUpgrade(numUpgrades);
- updateHacknetNodesContent();
- return false;
- });
- //upgradeRamButton.setAttribute("id", "hacknet-node-upgrade-ram-" + nodeName);
- upgradeRamButton.id = "hacknet-node-upgrade-ram-" + nodeName;
- upgradeRamButton.setAttribute("class", "a-link-button-inactive");
- upgradeRamButton.addEventListener("click", function() {
- nodeObj.purchaseRamUpgrade();
- updateHacknetNodesContent();
- return false;
- });
- //upgradeCoreButton.setAttribute("id", "hacknet-node-upgrade-core-" + nodeName);
- upgradeCoreButton.id = "hacknet-node-upgrade-core-" + nodeName;
- upgradeCoreButton.setAttribute("class", "a-link-button-inactive");
- upgradeCoreButton.addEventListener("click", function() {
- nodeObj.purchaseCoreUpgrade();
- updateHacknetNodesContent();
- return false;
- });
-
- //Put all the components together in the li element
- span.appendChild(txt);
- buttonDiv.appendChild(upgradeLevelButton);
- buttonDiv.appendChild(upgradeRamButton);
- buttonDiv.appendChild(upgradeCoreButton);
- span.appendChild(buttonDiv);
- listItem.appendChild(span);
-
- document.getElementById("hacknet-nodes-list").appendChild(listItem);
-
- //Set the text and stuff inside the DOM element
- updateHacknetNodeDomElement(nodeObj);
-}
-
-//Updates information on a single hacknet node DOM element
-function updateHacknetNodeDomElement(nodeObj) {
- var nodeName = nodeObj.name;
- var txt = document.getElementById("hacknet-node-text-" + nodeName);
- if (txt == null) {throw new Error("Cannot find text element");}
- txt.innerHTML = "Node name: " + nodeName + "
" +
- "Production: $" + Object(_utils_StringHelperFunctions_js__WEBPACK_IMPORTED_MODULE_8__["formatNumber"])(nodeObj.totalMoneyGenerated, 2) +
- " ($" + Object(_utils_StringHelperFunctions_js__WEBPACK_IMPORTED_MODULE_8__["formatNumber"])(nodeObj.moneyGainRatePerSecond, 2) + " / second)
" +
- "Level: " + nodeObj.level + "
" +
- "RAM: " + nodeObj.ram + "GB
" +
- "Cores: " + nodeObj.cores;
-
- //Upgrade level
- var upgradeLevelButton = document.getElementById("hacknet-node-upgrade-level-" + nodeName);
- if (upgradeLevelButton == null) {throw new Error("Cannot find upgrade level button element");}
- if (nodeObj.level >= _Constants_js__WEBPACK_IMPORTED_MODULE_1__["CONSTANTS"].HacknetNodeMaxLevel) {
- upgradeLevelButton.innerHTML = "MAX LEVEL";
- upgradeLevelButton.setAttribute("class", "a-link-button-inactive");
- } else {
- var multiplier = 0;
- if (hacknetNodePurchaseMultiplier == 0) {
- //Max
- multiplier = getMaxNumberLevelUpgrades(nodeObj);
- } else {
- var levelsToMax = _Constants_js__WEBPACK_IMPORTED_MODULE_1__["CONSTANTS"].HacknetNodeMaxLevel - nodeObj.level;
- multiplier = Math.min(levelsToMax, hacknetNodePurchaseMultiplier);
- }
-
- var upgradeLevelCost = nodeObj.calculateLevelUpgradeCost(multiplier);
- upgradeLevelButton.innerHTML = "Upgrade Hacknet Node Level x" + multiplier +
- " - $" + Object(_utils_StringHelperFunctions_js__WEBPACK_IMPORTED_MODULE_8__["formatNumber"])(upgradeLevelCost, 2);
- if (_Player_js__WEBPACK_IMPORTED_MODULE_4__["Player"].money.lt(upgradeLevelCost)) {
- upgradeLevelButton.setAttribute("class", "a-link-button-inactive");
- } else {
- upgradeLevelButton.setAttribute("class", "a-link-button");
- }
- }
-
- //Upgrade RAM
- var upgradeRamButton = document.getElementById("hacknet-node-upgrade-ram-" + nodeName);
- if (upgradeRamButton == null) {throw new Error("Cannot find upgrade ram button element");}
- if (nodeObj.ram >= _Constants_js__WEBPACK_IMPORTED_MODULE_1__["CONSTANTS"].HacknetNodeMaxRam) {
- upgradeRamButton.innerHTML = "MAX RAM";
- upgradeRamButton.setAttribute("class", "a-link-button-inactive");
- } else {
- var upgradeRamCost = nodeObj.calculateRamUpgradeCost();
- upgradeRamButton.innerHTML = "Upgrade Hacknet Node RAM - $" + Object(_utils_StringHelperFunctions_js__WEBPACK_IMPORTED_MODULE_8__["formatNumber"])(upgradeRamCost, 2);
- if (_Player_js__WEBPACK_IMPORTED_MODULE_4__["Player"].money.lt(upgradeRamCost)) {
- upgradeRamButton.setAttribute("class", "a-link-button-inactive");
- } else {
- upgradeRamButton.setAttribute("class", "a-link-button");
- }
- }
-
- //Upgrade Cores
- var upgradeCoreButton = document.getElementById("hacknet-node-upgrade-core-" + nodeName);
- if (upgradeCoreButton == null) {throw new Error("Cannot find upgrade cores button element");}
- if (nodeObj.cores >= _Constants_js__WEBPACK_IMPORTED_MODULE_1__["CONSTANTS"].HacknetNodeMaxCores) {
- upgradeCoreButton.innerHTML = "MAX CORES";
- upgradeCoreButton.setAttribute("class", "a-link-button-inactive");
- } else {
- var upgradeCoreCost = nodeObj.calculateCoreUpgradeCost();
- upgradeCoreButton.innerHTML = "Purchase additional CPU Core - $" + Object(_utils_StringHelperFunctions_js__WEBPACK_IMPORTED_MODULE_8__["formatNumber"])(upgradeCoreCost, 2);
- if (_Player_js__WEBPACK_IMPORTED_MODULE_4__["Player"].money.lt(upgradeCoreCost)) {
- upgradeCoreButton.setAttribute("class", "a-link-button-inactive");
- } else {
- upgradeCoreButton.setAttribute("class", "a-link-button");
- }
- }
-}
-
-function processAllHacknetNodeEarnings(numCycles) {
- var total = 0;
- for (var i = 0; i < _Player_js__WEBPACK_IMPORTED_MODULE_4__["Player"].hacknetNodes.length; ++i) {
- total += processSingleHacknetNodeEarnings(numCycles, _Player_js__WEBPACK_IMPORTED_MODULE_4__["Player"].hacknetNodes[i]);
- }
- return total;
-}
-
-function processSingleHacknetNodeEarnings(numCycles, nodeObj) {
- var cyclesPerSecond = 1000 / _engine_js__WEBPACK_IMPORTED_MODULE_2__["Engine"]._idleSpeed;
- var earningPerCycle = nodeObj.moneyGainRatePerSecond / cyclesPerSecond;
- if (isNaN(earningPerCycle)) {
- console.log("ERROR: Hacknet Node Calculated earnings is NaN");
- earningPerCycle = 0;
- }
- var totalEarnings = numCycles * earningPerCycle;
- nodeObj.totalMoneyGenerated += totalEarnings;
- nodeObj.onlineTimeSeconds += (numCycles * (_engine_js__WEBPACK_IMPORTED_MODULE_2__["Engine"]._idleSpeed / 1000));
- _Player_js__WEBPACK_IMPORTED_MODULE_4__["Player"].gainMoney(totalEarnings);
- return totalEarnings;
-}
-
-function getHacknetNode(name) {
- for (var i = 0; i < _Player_js__WEBPACK_IMPORTED_MODULE_4__["Player"].hacknetNodes.length; ++i) {
- if (_Player_js__WEBPACK_IMPORTED_MODULE_4__["Player"].hacknetNodes[i].name == name) {
- return _Player_js__WEBPACK_IMPORTED_MODULE_4__["Player"].hacknetNodes[i];
- }
- }
- return null;
+ sourceFileObject.owned = true;
}
/***/ }),
-/* 41 */
-/*!********************************!*\
- !*** ./src/ActiveScriptsUI.js ***!
- \********************************/
+/* 42 */
/***/ (function(module, __webpack_exports__, __webpack_require__) {
"use strict";
@@ -52807,16 +53533,16 @@ __webpack_require__.r(__webpack_exports__);
/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "addActiveScriptsItem", function() { return addActiveScriptsItem; });
/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "deleteActiveScriptsItem", function() { return deleteActiveScriptsItem; });
/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "updateActiveScriptsItems", function() { return updateActiveScriptsItems; });
-/* harmony import */ var _engine_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./engine.js */ 5);
-/* harmony import */ var _NetscriptWorker_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./NetscriptWorker.js */ 21);
-/* harmony import */ var _Player_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./Player.js */ 0);
-/* harmony import */ var _Server_js__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./Server.js */ 10);
-/* harmony import */ var _utils_DialogBox_js__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ../utils/DialogBox.js */ 7);
-/* harmony import */ var _utils_HelperFunctions_js__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ../utils/HelperFunctions.js */ 1);
-/* harmony import */ var _utils_LogBox_js__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! ../utils/LogBox.js */ 51);
-/* harmony import */ var _utils_numeral_min_js__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! ../utils/numeral.min.js */ 13);
-/* harmony import */ var _utils_numeral_min_js__WEBPACK_IMPORTED_MODULE_7___default = /*#__PURE__*/__webpack_require__.n(_utils_numeral_min_js__WEBPACK_IMPORTED_MODULE_7__);
-/* harmony import */ var _utils_StringHelperFunctions_js__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! ../utils/StringHelperFunctions.js */ 2);
+/* harmony import */ var _engine_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(5);
+/* harmony import */ var _NetscriptWorker_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(20);
+/* harmony import */ var _Player_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(0);
+/* harmony import */ var _Server_js__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(8);
+/* harmony import */ var _utils_DialogBox_js__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(7);
+/* harmony import */ var _utils_HelperFunctions_js__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(1);
+/* harmony import */ var _utils_LogBox_js__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(50);
+/* harmony import */ var numeral_min_numeral_min__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(14);
+/* harmony import */ var numeral_min_numeral_min__WEBPACK_IMPORTED_MODULE_7___default = /*#__PURE__*/__webpack_require__.n(numeral_min_numeral_min__WEBPACK_IMPORTED_MODULE_7__);
+/* harmony import */ var _utils_StringHelperFunctions_js__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(2);
@@ -53018,10 +53744,10 @@ function updateActiveScriptsItems(maxTasks=100) {
}
}
document.getElementById("active-scripts-total-prod").innerHTML =
- "Total online production of Active Scripts: " + _utils_numeral_min_js__WEBPACK_IMPORTED_MODULE_7___default()(total).format('$0.000a') + " / sec
" +
+ "Total online production of Active Scripts: " + numeral_min_numeral_min__WEBPACK_IMPORTED_MODULE_7___default()(total).format('$0.000a') + " / sec
" +
"Total online production since last Aug installation: " +
- _utils_numeral_min_js__WEBPACK_IMPORTED_MODULE_7___default()(_Player_js__WEBPACK_IMPORTED_MODULE_2__["Player"].scriptProdSinceLastAug).format('$0.000a') + " (" +
- _utils_numeral_min_js__WEBPACK_IMPORTED_MODULE_7___default()(_Player_js__WEBPACK_IMPORTED_MODULE_2__["Player"].scriptProdSinceLastAug / (_Player_js__WEBPACK_IMPORTED_MODULE_2__["Player"].playtimeSinceLastAug/1000)).format('$0.000a') + " / sec)";
+ numeral_min_numeral_min__WEBPACK_IMPORTED_MODULE_7___default()(_Player_js__WEBPACK_IMPORTED_MODULE_2__["Player"].scriptProdSinceLastAug).format('$0.000a') + " (" +
+ numeral_min_numeral_min__WEBPACK_IMPORTED_MODULE_7___default()(_Player_js__WEBPACK_IMPORTED_MODULE_2__["Player"].scriptProdSinceLastAug / (_Player_js__WEBPACK_IMPORTED_MODULE_2__["Player"].playtimeSinceLastAug/1000)).format('$0.000a') + " / sec)";
return total;
}
@@ -53099,29 +53825,26 @@ function updateActiveScriptsText(workerscript, item, itemName) {
/***/ }),
-/* 42 */
-/*!**********************************!*\
- !*** ./src/CompanyManagement.js ***!
- \**********************************/
+/* 43 */
/***/ (function(module, __webpack_exports__, __webpack_require__) {
"use strict";
__webpack_require__.r(__webpack_exports__);
/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "Corporation", function() { return Corporation; });
-/* harmony import */ var _BitNode_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./BitNode.js */ 15);
-/* harmony import */ var _engine_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./engine.js */ 5);
-/* harmony import */ var _Faction_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./Faction.js */ 11);
-/* harmony import */ var _Literature_js__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./Literature.js */ 53);
-/* harmony import */ var _Location_js__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ./Location.js */ 4);
-/* harmony import */ var _Player_js__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ./Player.js */ 0);
-/* harmony import */ var decimal_js__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! decimal.js */ 24);
-/* harmony import */ var _utils_DialogBox_js__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! ../utils/DialogBox.js */ 7);
-/* harmony import */ var _utils_HelperFunctions_js__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! ../utils/HelperFunctions.js */ 1);
-/* harmony import */ var _utils_JSONReviver_js__WEBPACK_IMPORTED_MODULE_9__ = __webpack_require__(/*! ../utils/JSONReviver.js */ 8);
-/* harmony import */ var _utils_numeral_min_js__WEBPACK_IMPORTED_MODULE_10__ = __webpack_require__(/*! ../utils/numeral.min.js */ 13);
-/* harmony import */ var _utils_numeral_min_js__WEBPACK_IMPORTED_MODULE_10___default = /*#__PURE__*/__webpack_require__.n(_utils_numeral_min_js__WEBPACK_IMPORTED_MODULE_10__);
-/* harmony import */ var _utils_StringHelperFunctions_js__WEBPACK_IMPORTED_MODULE_11__ = __webpack_require__(/*! ../utils/StringHelperFunctions.js */ 2);
-/* harmony import */ var _utils_YesNoBox_js__WEBPACK_IMPORTED_MODULE_12__ = __webpack_require__(/*! ../utils/YesNoBox.js */ 12);
+/* harmony import */ var _BitNode_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(15);
+/* harmony import */ var _engine_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(5);
+/* harmony import */ var _Faction_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(11);
+/* harmony import */ var _Literature_js__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(52);
+/* harmony import */ var _Location_js__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(4);
+/* harmony import */ var _Player_js__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(0);
+/* harmony import */ var decimal_js__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(23);
+/* harmony import */ var _utils_DialogBox_js__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(7);
+/* harmony import */ var _utils_HelperFunctions_js__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(1);
+/* harmony import */ var _utils_JSONReviver_js__WEBPACK_IMPORTED_MODULE_9__ = __webpack_require__(9);
+/* harmony import */ var numeral_min_numeral_min__WEBPACK_IMPORTED_MODULE_10__ = __webpack_require__(14);
+/* harmony import */ var numeral_min_numeral_min__WEBPACK_IMPORTED_MODULE_10___default = /*#__PURE__*/__webpack_require__.n(numeral_min_numeral_min__WEBPACK_IMPORTED_MODULE_10__);
+/* harmony import */ var _utils_StringHelperFunctions_js__WEBPACK_IMPORTED_MODULE_11__ = __webpack_require__(2);
+/* harmony import */ var _utils_YesNoBox_js__WEBPACK_IMPORTED_MODULE_12__ = __webpack_require__(12);
@@ -53347,7 +54070,8 @@ let MaterialSizes = {
Chemicals: 0.05,
Drugs: 0.02,
Robots: 0.5,
- "AICores": 0.1
+ AICores: 0.1,
+ RealEstate: 0,
}
function Product(params={}) {
@@ -53565,46 +54289,46 @@ var IndustryStartingCosts = {
var IndustryDescriptions = {
Energy: "Engage in the production and distribution of energy.
" +
- "Starting cost: " + _utils_numeral_min_js__WEBPACK_IMPORTED_MODULE_10___default()(IndustryStartingCosts.Energy).format("$0.000a") + "
" +
+ "Starting cost: " + numeral_min_numeral_min__WEBPACK_IMPORTED_MODULE_10___default()(IndustryStartingCosts.Energy).format("$0.000a") + "
" +
"Recommended starting Industry: NO",
Utilities: "Distributes water and provides wastewater services.
" +
- "Starting cost: " + _utils_numeral_min_js__WEBPACK_IMPORTED_MODULE_10___default()(IndustryStartingCosts.Utilities).format("$0.000a") + "
" +
+ "Starting cost: " + numeral_min_numeral_min__WEBPACK_IMPORTED_MODULE_10___default()(IndustryStartingCosts.Utilities).format("$0.000a") + "
" +
"Recommended starting Industry: NO",
Agriculture: "Cultive crops and breed livestock to produce food.
" +
- "Starting cost: " + _utils_numeral_min_js__WEBPACK_IMPORTED_MODULE_10___default()(IndustryStartingCosts.Agriculture).format("$0.000a") + "
" +
+ "Starting cost: " + numeral_min_numeral_min__WEBPACK_IMPORTED_MODULE_10___default()(IndustryStartingCosts.Agriculture).format("$0.000a") + "
" +
"Recommended starting Industry: YES",
Fishing: "Produce food through the breeding and processing of fish and fish products
" +
- "Starting cost: " + _utils_numeral_min_js__WEBPACK_IMPORTED_MODULE_10___default()(IndustryStartingCosts.Fishing).format("$0.000a") + "
" +
+ "Starting cost: " + numeral_min_numeral_min__WEBPACK_IMPORTED_MODULE_10___default()(IndustryStartingCosts.Fishing).format("$0.000a") + "
" +
"Recommended starting Industry: NO",
Mining: "Extract and process metals from the earth.
" +
- "Starting cost: " + _utils_numeral_min_js__WEBPACK_IMPORTED_MODULE_10___default()(IndustryStartingCosts.Mining).format("$0.000a") + "
" +
+ "Starting cost: " + numeral_min_numeral_min__WEBPACK_IMPORTED_MODULE_10___default()(IndustryStartingCosts.Mining).format("$0.000a") + "
" +
"Recommended starting Industry: NO",
Food: "Create your own restaurants all around the world.
" +
- "Starting cost: " + _utils_numeral_min_js__WEBPACK_IMPORTED_MODULE_10___default()(IndustryStartingCosts.Food).format("$0.000a") + "
" +
+ "Starting cost: " + numeral_min_numeral_min__WEBPACK_IMPORTED_MODULE_10___default()(IndustryStartingCosts.Food).format("$0.000a") + "
" +
"Recommended starting Industry: YES",
Tobacco: "Create and distribute tobacco and tobacco-related products.
" +
- "Starting cost: " + _utils_numeral_min_js__WEBPACK_IMPORTED_MODULE_10___default()(IndustryStartingCosts.Tobacco).format("$0.000a") + "
" +
+ "Starting cost: " + numeral_min_numeral_min__WEBPACK_IMPORTED_MODULE_10___default()(IndustryStartingCosts.Tobacco).format("$0.000a") + "
" +
"Recommended starting Industry: YES",
Chemical: "Product industrial chemicals
" +
- "Starting cost: " + _utils_numeral_min_js__WEBPACK_IMPORTED_MODULE_10___default()(IndustryStartingCosts.Chemical).format("$0.000a") + "
" +
+ "Starting cost: " + numeral_min_numeral_min__WEBPACK_IMPORTED_MODULE_10___default()(IndustryStartingCosts.Chemical).format("$0.000a") + "
" +
"Recommended starting Industry: NO",
Pharmaceutical: "Discover, develop, and create new pharmaceutical drugs.
" +
- "Starting cost: " + _utils_numeral_min_js__WEBPACK_IMPORTED_MODULE_10___default()(IndustryStartingCosts.Pharmaceutical).format("$0.000a") + "
" +
+ "Starting cost: " + numeral_min_numeral_min__WEBPACK_IMPORTED_MODULE_10___default()(IndustryStartingCosts.Pharmaceutical).format("$0.000a") + "
" +
"Recommended starting Industry: NO",
Computer: "Develop and manufacture new computer hardware and networking infrastructures.
" +
- "Starting cost: " + _utils_numeral_min_js__WEBPACK_IMPORTED_MODULE_10___default()(IndustryStartingCosts.Computer).format("$0.000a") + "
" +
+ "Starting cost: " + numeral_min_numeral_min__WEBPACK_IMPORTED_MODULE_10___default()(IndustryStartingCosts.Computer).format("$0.000a") + "
" +
"Recommended starting Industry: NO",
Robotics: "Develop and create robots.
" +
- "Starting cost: " + _utils_numeral_min_js__WEBPACK_IMPORTED_MODULE_10___default()(IndustryStartingCosts.Robotics).format("$0.000a") + "
" +
+ "Starting cost: " + numeral_min_numeral_min__WEBPACK_IMPORTED_MODULE_10___default()(IndustryStartingCosts.Robotics).format("$0.000a") + "
" +
"Recommended starting Industry: NO",
Software: "Develop computer software and create AI Cores.
" +
- "Starting cost: " + _utils_numeral_min_js__WEBPACK_IMPORTED_MODULE_10___default()(IndustryStartingCosts.Software).format("$0.000a") + "
" +
+ "Starting cost: " + numeral_min_numeral_min__WEBPACK_IMPORTED_MODULE_10___default()(IndustryStartingCosts.Software).format("$0.000a") + "
" +
"Recommended starting Industry: YES",
Healthcare: "Create and manage hospitals.
" +
- "Starting cost: " + _utils_numeral_min_js__WEBPACK_IMPORTED_MODULE_10___default()(IndustryStartingCosts.Healthcare).format("$0.000a") + "
" +
+ "Starting cost: " + numeral_min_numeral_min__WEBPACK_IMPORTED_MODULE_10___default()(IndustryStartingCosts.Healthcare).format("$0.000a") + "
" +
"Recommended starting Industry: NO",
RealEstate: "Develop and manage real estate properties.
" +
- "Starting cost: " + _utils_numeral_min_js__WEBPACK_IMPORTED_MODULE_10___default()(IndustryStartingCosts.RealEstate).format("$0.000a") + "
" +
+ "Starting cost: " + numeral_min_numeral_min__WEBPACK_IMPORTED_MODULE_10___default()(IndustryStartingCosts.RealEstate).format("$0.000a") + "
" +
"Recommended starting Industry: NO",
}
@@ -54888,7 +55612,7 @@ Employee.prototype.createUI = function(panel, corporation) {
"Experience: " + Object(_utils_StringHelperFunctions_js__WEBPACK_IMPORTED_MODULE_11__["formatNumber"])(this.exp, 3) + "
" +
"Creativity: " + Object(_utils_StringHelperFunctions_js__WEBPACK_IMPORTED_MODULE_11__["formatNumber"])(effCre, 3) + "
" +
"Efficiency: " + Object(_utils_StringHelperFunctions_js__WEBPACK_IMPORTED_MODULE_11__["formatNumber"])(effEff, 3) + "
" +
- "Salary: " + _utils_numeral_min_js__WEBPACK_IMPORTED_MODULE_10___default()(this.sal).format("$0.000a") + "/ s
",
+ "Salary: " + numeral_min_numeral_min__WEBPACK_IMPORTED_MODULE_10___default()(this.sal).format("$0.000a") + "/ s
",
}));
//Selector for employee position
@@ -54938,7 +55662,7 @@ Employee.prototype.updateUI = function(panel, corporation) {
"Experience: " + Object(_utils_StringHelperFunctions_js__WEBPACK_IMPORTED_MODULE_11__["formatNumber"])(this.exp, 3) + "
" +
"Creativity: " + Object(_utils_StringHelperFunctions_js__WEBPACK_IMPORTED_MODULE_11__["formatNumber"])(effCre, 3) + "
" +
"Efficiency: " + Object(_utils_StringHelperFunctions_js__WEBPACK_IMPORTED_MODULE_11__["formatNumber"])(effEff, 3) + "
" +
- "Salary: " + _utils_numeral_min_js__WEBPACK_IMPORTED_MODULE_10___default()(this.sal).format("$0.000a") + "/ s
";
+ "Salary: " + numeral_min_numeral_min__WEBPACK_IMPORTED_MODULE_10___default()(this.sal).format("$0.000a") + "/ s
";
}
Employee.prototype.toJSON = function() {
@@ -55075,7 +55799,7 @@ OfficeSpace.prototype.findEmployees = function(parentRefs) {
"Experience: " + Object(_utils_StringHelperFunctions_js__WEBPACK_IMPORTED_MODULE_11__["formatNumber"])(employee.exp, 1) + "
" +
"Creativity: " + Object(_utils_StringHelperFunctions_js__WEBPACK_IMPORTED_MODULE_11__["formatNumber"])(employee.cre, 1) + "
" +
"Efficiency: " + Object(_utils_StringHelperFunctions_js__WEBPACK_IMPORTED_MODULE_11__["formatNumber"])(employee.eff, 1) + "
" +
- "Salary: " + _utils_numeral_min_js__WEBPACK_IMPORTED_MODULE_10___default()(employee.sal).format('$0.000a') + " \ s
",
+ "Salary: " + numeral_min_numeral_min__WEBPACK_IMPORTED_MODULE_10___default()(employee.sal).format('$0.000a') + " \ s
",
clickListener:()=>{
office.hireEmployee(employee, parentRefs);
Object(_utils_HelperFunctions_js__WEBPACK_IMPORTED_MODULE_8__["removeElementById"])("cmpy-mgmt-hire-employee-popup");
@@ -55267,7 +55991,7 @@ Warehouse.prototype.createUI = function(parentRefs) {
//Upgrade warehouse size button
var upgradeCost = WarehouseUpgradeBaseCost * Math.pow(1.07, this.level+1);
industryWarehouseUpgradeSizeButton = Object(_utils_HelperFunctions_js__WEBPACK_IMPORTED_MODULE_8__["createElement"])("a", {
- innerText:"Upgrade Warehouse Size - " + _utils_numeral_min_js__WEBPACK_IMPORTED_MODULE_10___default()(upgradeCost).format('$0.000a'),
+ innerText:"Upgrade Warehouse Size - " + numeral_min_numeral_min__WEBPACK_IMPORTED_MODULE_10___default()(upgradeCost).format('$0.000a'),
display:"inline-block",
class: company.funds.lt(upgradeCost) ? "a-link-button-inactive" : "a-link-button",
clickListener:()=>{
@@ -55450,10 +56174,10 @@ Warehouse.prototype.createMaterialUI = function(mat, matName, parentRefs) {
//If Market Research upgrades are unlocked, add competition and demand info
var cmpAndDmdText = "";
if (company.unlockUpgrades[2] === 1) {
- cmpAndDmdText += "
Competition: " + Object(_utils_StringHelperFunctions_js__WEBPACK_IMPORTED_MODULE_11__["formatNumber"])(mat.cmp, 3);
+ cmpAndDmdText += "
Demand: " + Object(_utils_StringHelperFunctions_js__WEBPACK_IMPORTED_MODULE_11__["formatNumber"])(mat.dmd, 3);
}
if (company.unlockUpgrades[3] === 1) {
- cmpAndDmdText += "
Demand: " + Object(_utils_StringHelperFunctions_js__WEBPACK_IMPORTED_MODULE_11__["formatNumber"])(mat.dmd, 3);
+ cmpAndDmdText += "
Competition: " + Object(_utils_StringHelperFunctions_js__WEBPACK_IMPORTED_MODULE_11__["formatNumber"])(mat.cmp, 3);
}
var innerTxt = "
Competition: " + Object(_utils_StringHelperFunctions_js__WEBPACK_IMPORTED_MODULE_11__["formatNumber"])(product.cmp, 3);
- }
- if (company.unlockUpgrades[3] === 1) {
cmpAndDmdText += "
Demand: " + Object(_utils_StringHelperFunctions_js__WEBPACK_IMPORTED_MODULE_11__["formatNumber"])(product.dmd, 3);
}
+ if (company.unlockUpgrades[3] === 1) {
+ cmpAndDmdText += "
Competition: " + Object(_utils_StringHelperFunctions_js__WEBPACK_IMPORTED_MODULE_11__["formatNumber"])(product.cmp, 3);
+ }
+
var totalGain = product.data[city][1] - product.data[city][2]; //Production - sale
div.appendChild(Object(_utils_HelperFunctions_js__WEBPACK_IMPORTED_MODULE_8__["createElement"])("p", {
innerHTML: "
" +
"Features: " + Object(_utils_StringHelperFunctions_js__WEBPACK_IMPORTED_MODULE_11__["formatNumber"])(product.fea, 3) +
cmpAndDmdText + "
" +
- "
" +
- "
" +
+ Object(_utils_YesNoBox_js__WEBPACK_IMPORTED_MODULE_12__["yesNoBoxCreate"])("An investment firm has offered you " + numeral_min_numeral_min__WEBPACK_IMPORTED_MODULE_10___default()(funding).format('$0.000a') +
+ " in funding in exchange for a " + numeral_min_numeral_min__WEBPACK_IMPORTED_MODULE_10___default()(percShares*100).format("0.000a") +
+ "% stake in the company (" + numeral_min_numeral_min__WEBPACK_IMPORTED_MODULE_10___default()(investShares).format('0.000a') + " shares).
" +
"Do you accept or reject this offer?");
}
@@ -56297,11 +57022,11 @@ Corporation.prototype.goPublic = function() {
innerHTML: "Enter the number of shares you would like to issue " +
"for your IPO. These shares will be publicly sold " +
"and you will no longer own them. Your Corporation will receive " +
- _utils_numeral_min_js__WEBPACK_IMPORTED_MODULE_10___default()(initialSharePrice).format('$0.000a') + " per share " +
+ numeral_min_numeral_min__WEBPACK_IMPORTED_MODULE_10___default()(initialSharePrice).format('$0.000a') + " per share " +
"(the IPO money will be deposited directly into your Corporation's funds).
" +
"Furthermore, issuing more shares now will help drive up " +
"your company's stock price in the future.
" +
- "You have a total of " + _utils_numeral_min_js__WEBPACK_IMPORTED_MODULE_10___default()(this.numShares).format("0.000a") + " of shares that you can issue.",
+ "You have a total of " + numeral_min_numeral_min__WEBPACK_IMPORTED_MODULE_10___default()(this.numShares).format("0.000a") + " of shares that you can issue.",
});
var yesBtn;
var input = Object(_utils_HelperFunctions_js__WEBPACK_IMPORTED_MODULE_8__["createElement"])("input", {
@@ -56745,7 +57470,7 @@ Corporation.prototype.displayCorporationOverviewContent = function() {
innerHTML: "Enter the number of shares you would like to sell. The money from " +
"selling your shares will go directly to you (NOT your Corporation). " +
"The current price of your " +
- "company's stock is " + _utils_numeral_min_js__WEBPACK_IMPORTED_MODULE_10___default()(currentStockPrice).format("$0.000a"),
+ "company's stock is " + numeral_min_numeral_min__WEBPACK_IMPORTED_MODULE_10___default()(currentStockPrice).format("$0.000a"),
});
var profitIndicator = Object(_utils_HelperFunctions_js__WEBPACK_IMPORTED_MODULE_8__["createElement"])("p", {});
var input = Object(_utils_HelperFunctions_js__WEBPACK_IMPORTED_MODULE_8__["createElement"])("input", {
@@ -56758,7 +57483,7 @@ Corporation.prototype.displayCorporationOverviewContent = function() {
profitIndicator.innerText = "You don't have this many shares to sell!";
} else {
profitIndicator.innerText = "Sell " + numShares + " shares for a total of " +
- _utils_numeral_min_js__WEBPACK_IMPORTED_MODULE_10___default()(numShares * currentStockPrice).format('$0.000a');
+ numeral_min_numeral_min__WEBPACK_IMPORTED_MODULE_10___default()(numShares * currentStockPrice).format('$0.000a');
}
}
});
@@ -56812,7 +57537,7 @@ Corporation.prototype.displayCorporationOverviewContent = function() {
innerHTML: "Enter the number of shares you would like to buy back at market price. To purchase " +
"these shares, you must use your own money (NOT your Corporation's funds). " +
"The current price of your " +
- "company's stock is " + _utils_numeral_min_js__WEBPACK_IMPORTED_MODULE_10___default()(currentStockPrice).format("$0.000a") +
+ "company's stock is " + numeral_min_numeral_min__WEBPACK_IMPORTED_MODULE_10___default()(currentStockPrice).format("$0.000a") +
". Your company currently has " + Object(_utils_StringHelperFunctions_js__WEBPACK_IMPORTED_MODULE_11__["formatNumber"])(this.issuedShares, 3) + " outstanding stock shares",
});
var costIndicator = Object(_utils_HelperFunctions_js__WEBPACK_IMPORTED_MODULE_8__["createElement"])("p", {});
@@ -56829,7 +57554,7 @@ Corporation.prototype.displayCorporationOverviewContent = function() {
} else {
console.log("here");
costIndicator.innerText = "Purchase " + numShares + " shares for a total of " +
- _utils_numeral_min_js__WEBPACK_IMPORTED_MODULE_10___default()(numShares * currentStockPrice).format('$0.000a');
+ numeral_min_numeral_min__WEBPACK_IMPORTED_MODULE_10___default()(numShares * currentStockPrice).format('$0.000a');
}
}
});
@@ -56844,7 +57569,7 @@ Corporation.prototype.displayCorporationOverviewContent = function() {
Object(_utils_DialogBox_js__WEBPACK_IMPORTED_MODULE_7__["dialogBoxCreate"])("ERROR: There are not this many oustanding shares to buy back");
} else if (shares * tempStockPrice > _Player_js__WEBPACK_IMPORTED_MODULE_5__["Player"].money) {
Object(_utils_DialogBox_js__WEBPACK_IMPORTED_MODULE_7__["dialogBoxCreate"])("ERROR: You do not have enough money to purchase this many shares (you need " +
- _utils_numeral_min_js__WEBPACK_IMPORTED_MODULE_10___default()(shares * tempStockPrice).format("$0.000a") + ")");
+ numeral_min_numeral_min__WEBPACK_IMPORTED_MODULE_10___default()(shares * tempStockPrice).format("$0.000a") + ")");
} else {
this.numShares += shares;
if (isNaN(this.issuedShares)) {
@@ -57068,7 +57793,7 @@ Corporation.prototype.displayCorporationOverviewContent = function() {
upgradeContainer.appendChild(Object(_utils_HelperFunctions_js__WEBPACK_IMPORTED_MODULE_8__["createElement"])("div", {
class:"cmpy-mgmt-upgrade-div", width:"45%",
- innerHTML:upgrade[2] + " - " + _utils_numeral_min_js__WEBPACK_IMPORTED_MODULE_10___default()(upgrade[1]).format("$0.000a"),
+ innerHTML:upgrade[2] + " - " + numeral_min_numeral_min__WEBPACK_IMPORTED_MODULE_10___default()(upgrade[1]).format("$0.000a"),
tooltip: upgrade[3],
clickListener:()=>{
if (corp.funds.lt(upgrade[1])) {
@@ -57100,7 +57825,7 @@ Corporation.prototype.displayCorporationOverviewContent = function() {
var cost = baseCost * Math.pow(priceMult, corp.upgrades[i]);
upgradeContainer.appendChild(Object(_utils_HelperFunctions_js__WEBPACK_IMPORTED_MODULE_8__["createElement"])("div", {
class:"cmpy-mgmt-upgrade-div", width:"45%",
- innerHTML:upgrade[4] + " - " + _utils_numeral_min_js__WEBPACK_IMPORTED_MODULE_10___default()(cost).format("$0.000a"),
+ innerHTML:upgrade[4] + " - " + numeral_min_numeral_min__WEBPACK_IMPORTED_MODULE_10___default()(cost).format("$0.000a"),
tooltip:upgrade[5],
clickListener:()=>{
if (corp.funds.lt(cost)) {
@@ -57128,14 +57853,14 @@ Corporation.prototype.updateCorporationOverviewContent = function() {
totalExpenses = new decimal_js__WEBPACK_IMPORTED_MODULE_6__["default"](0);
var profit = this.revenue.minus(this.expenses).toNumber(),
- profitStr = profit >= 0 ? _utils_numeral_min_js__WEBPACK_IMPORTED_MODULE_10___default()(profit).format("$0.000a") : "-" + _utils_numeral_min_js__WEBPACK_IMPORTED_MODULE_10___default()(-1 * profit).format("$0.000a");
+ profitStr = profit >= 0 ? numeral_min_numeral_min__WEBPACK_IMPORTED_MODULE_10___default()(profit).format("$0.000a") : "-" + numeral_min_numeral_min__WEBPACK_IMPORTED_MODULE_10___default()(-1 * profit).format("$0.000a");
- var txt = "Total Funds: " + _utils_numeral_min_js__WEBPACK_IMPORTED_MODULE_10___default()(totalFunds.toNumber()).format('$0.000a') + "
" +
- "Total Revenue: " + _utils_numeral_min_js__WEBPACK_IMPORTED_MODULE_10___default()(this.revenue.toNumber()).format("$0.000a") + " / s
" +
- "Total Expenses: " + _utils_numeral_min_js__WEBPACK_IMPORTED_MODULE_10___default()(this.expenses.toNumber()).format("$0.000a") + "/ s
" +
+ var txt = "Total Funds: " + numeral_min_numeral_min__WEBPACK_IMPORTED_MODULE_10___default()(totalFunds.toNumber()).format('$0.000a') + "
" +
+ "Total Revenue: " + numeral_min_numeral_min__WEBPACK_IMPORTED_MODULE_10___default()(this.revenue.toNumber()).format("$0.000a") + " / s
" +
+ "Total Expenses: " + numeral_min_numeral_min__WEBPACK_IMPORTED_MODULE_10___default()(this.expenses.toNumber()).format("$0.000a") + "/ s
" +
"Total Profits: " + profitStr + " / s
" +
"Publicly Traded: " + (this.public ? "Yes" : "No") + "
" +
- "Owned Stock Shares: " + _utils_numeral_min_js__WEBPACK_IMPORTED_MODULE_10___default()(this.numShares).format('0.000a') + "
" +
+ "Owned Stock Shares: " + numeral_min_numeral_min__WEBPACK_IMPORTED_MODULE_10___default()(this.numShares).format('0.000a') + "
" +
"Stock Price: " + (this.public ? "$" + Object(_utils_StringHelperFunctions_js__WEBPACK_IMPORTED_MODULE_11__["formatNumber"])(this.sharePrice, 2) : "N/A") + "
";
var prodMult = this.getProductionMultiplier(),
@@ -57181,7 +57906,7 @@ Corporation.prototype.displayDivisionContent = function(division, city) {
var popupId = "cmpy-mgmt-expand-city-popup";
var text = Object(_utils_HelperFunctions_js__WEBPACK_IMPORTED_MODULE_8__["createElement"])("p", {
innerText: "Would you like to expand into a new city by opening an office? " +
- "This would cost " + _utils_numeral_min_js__WEBPACK_IMPORTED_MODULE_10___default()(OfficeInitialCost).format('$0.000a'),
+ "This would cost " + numeral_min_numeral_min__WEBPACK_IMPORTED_MODULE_10___default()(OfficeInitialCost).format('$0.000a'),
});
var citySelector = Object(_utils_HelperFunctions_js__WEBPACK_IMPORTED_MODULE_8__["createElement"])("select", {margin:"5px"});
for (var cityName in division.offices) {
@@ -57290,7 +58015,7 @@ Corporation.prototype.displayDivisionContent = function(division, city) {
}
industryOverviewUpgrades.appendChild(Object(_utils_HelperFunctions_js__WEBPACK_IMPORTED_MODULE_8__["createElement"])("div", {
class:"cmpy-mgmt-upgrade-div", display:"inline-block",
- innerHTML:upgrade[4] + ' - ' + _utils_numeral_min_js__WEBPACK_IMPORTED_MODULE_10___default()(cost).format("$0.000a"),
+ innerHTML:upgrade[4] + ' - ' + numeral_min_numeral_min__WEBPACK_IMPORTED_MODULE_10___default()(cost).format("$0.000a"),
tooltip:upgrade[5],
clickListener:()=>{
if (corp.funds.lt(cost)) {
@@ -57538,7 +58263,7 @@ Corporation.prototype.displayDivisionContent = function(division, city) {
var confirmBtn = Object(_utils_HelperFunctions_js__WEBPACK_IMPORTED_MODULE_8__["createElement"])("a", {
class: this.funds.lt(upgradeCost) ? "a-link-button-inactive" : "a-link-button",
display:"inline-block", margin:"4px", innerText:"by 3",
- tooltip:_utils_numeral_min_js__WEBPACK_IMPORTED_MODULE_10___default()(upgradeCost).format("$0.000a"),
+ tooltip:numeral_min_numeral_min__WEBPACK_IMPORTED_MODULE_10___default()(upgradeCost).format("$0.000a"),
clickListener:()=>{
if (this.funds.lt(upgradeCost)) {
Object(_utils_DialogBox_js__WEBPACK_IMPORTED_MODULE_7__["dialogBoxCreate"])("You don't have enough company funds to purchase this upgrade!");
@@ -57555,7 +58280,7 @@ Corporation.prototype.displayDivisionContent = function(division, city) {
var confirmBtn15 = Object(_utils_HelperFunctions_js__WEBPACK_IMPORTED_MODULE_8__["createElement"])("a", {
class: this.funds.lt(upgradeCost15) ? "a-link-button-inactive" : "a-link-button",
display:"inline-block", margin:"4px", innerText:"by 15",
- tooltip:_utils_numeral_min_js__WEBPACK_IMPORTED_MODULE_10___default()(upgradeCost15).format("$0.000a"),
+ tooltip:numeral_min_numeral_min__WEBPACK_IMPORTED_MODULE_10___default()(upgradeCost15).format("$0.000a"),
clickListener:()=>{
if (this.funds.lt(upgradeCost15)) {
Object(_utils_DialogBox_js__WEBPACK_IMPORTED_MODULE_7__["dialogBoxCreate"])("You don't have enough company funds to purchase this upgrade!");
@@ -57572,7 +58297,7 @@ Corporation.prototype.displayDivisionContent = function(division, city) {
var confirmBtnMax = Object(_utils_HelperFunctions_js__WEBPACK_IMPORTED_MODULE_8__["createElement"])("a", {
class:this.funds.lt(upgradeCostMax) ? "a-link-button-inactive" : "a-link-button",
display:"inline-block", margin:"4px", innerText:"by MAX (" + maxNum*OfficeInitialSize + ")",
- tooltip:_utils_numeral_min_js__WEBPACK_IMPORTED_MODULE_10___default()(upgradeCostMax).format("$0.000a"),
+ tooltip:numeral_min_numeral_min__WEBPACK_IMPORTED_MODULE_10___default()(upgradeCostMax).format("$0.000a"),
clickListener:()=>{
if (this.funds.lt(upgradeCostMax)) {
Object(_utils_DialogBox_js__WEBPACK_IMPORTED_MODULE_7__["dialogBoxCreate"])("You don't have enough company funds to purchase this upgrade!");
@@ -57621,7 +58346,7 @@ Corporation.prototype.displayDivisionContent = function(division, city) {
totalCostTxt.innerText = "Invalid value entered!"
} else {
var totalCost = input.value * office.employees.length;
- totalCostTxt.innerText = "Throwing this party will cost a total of " + _utils_numeral_min_js__WEBPACK_IMPORTED_MODULE_10___default()(totalCost).format('$0.000a');
+ totalCostTxt.innerText = "Throwing this party will cost a total of " + numeral_min_numeral_min__WEBPACK_IMPORTED_MODULE_10___default()(totalCost).format('$0.000a');
}
},
onkeyup:(e)=>{
@@ -57836,7 +58561,7 @@ Corporation.prototype.updateDivisionContent = function(division) {
var vechain = (this.unlockUpgrades[4] === 1);
//Industry Overview Text
var profit = division.lastCycleRevenue.minus(division.lastCycleExpenses).toNumber(),
- profitStr = profit >= 0 ? _utils_numeral_min_js__WEBPACK_IMPORTED_MODULE_10___default()(profit).format("$0.000a") : "-" + _utils_numeral_min_js__WEBPACK_IMPORTED_MODULE_10___default()(-1 * profit).format("$0.000a");
+ profitStr = profit >= 0 ? numeral_min_numeral_min__WEBPACK_IMPORTED_MODULE_10___default()(profit).format("$0.000a") : "-" + numeral_min_numeral_min__WEBPACK_IMPORTED_MODULE_10___default()(-1 * profit).format("$0.000a");
var advertisingInfo = "";
if (vechain) {
var advertisingFactors = division.getAdvertisingFactors();
@@ -57855,12 +58580,12 @@ Corporation.prototype.updateDivisionContent = function(division) {
Object(_utils_HelperFunctions_js__WEBPACK_IMPORTED_MODULE_8__["removeChildrenFromElement"])(industryOverviewText);
industryOverviewText.appendChild(Object(_utils_HelperFunctions_js__WEBPACK_IMPORTED_MODULE_8__["createElement"])("p", {
- innerHTML:"Industry: " + division.type + " (Corp Funds: " + _utils_numeral_min_js__WEBPACK_IMPORTED_MODULE_10___default()(this.funds.toNumber()).format("$0.000a") + ")
" +
+ innerHTML:"Industry: " + division.type + " (Corp Funds: " + numeral_min_numeral_min__WEBPACK_IMPORTED_MODULE_10___default()(this.funds.toNumber()).format("$0.000a") + ")
" +
"Awareness: " + Object(_utils_StringHelperFunctions_js__WEBPACK_IMPORTED_MODULE_11__["formatNumber"])(division.awareness, 3) + "
" +
"Popularity: " + Object(_utils_StringHelperFunctions_js__WEBPACK_IMPORTED_MODULE_11__["formatNumber"])(division.popularity, 3) + "
" +
advertisingInfo + "
" +
- "Revenue: " + _utils_numeral_min_js__WEBPACK_IMPORTED_MODULE_10___default()(division.lastCycleRevenue.toNumber()).format("$0.000a") + " / s
" +
- "Expenses: " + _utils_numeral_min_js__WEBPACK_IMPORTED_MODULE_10___default()(division.lastCycleExpenses.toNumber()).format("$0.000a") + " /s
" +
+ "Revenue: " + numeral_min_numeral_min__WEBPACK_IMPORTED_MODULE_10___default()(division.lastCycleRevenue.toNumber()).format("$0.000a") + " / s
" +
+ "Expenses: " + numeral_min_numeral_min__WEBPACK_IMPORTED_MODULE_10___default()(division.lastCycleExpenses.toNumber()).format("$0.000a") + " /s
" +
"Profit: " + profitStr + " / s
"
}));
industryOverviewText.appendChild(Object(_utils_HelperFunctions_js__WEBPACK_IMPORTED_MODULE_8__["createElement"])("p", {
@@ -58037,10 +58762,7 @@ _utils_JSONReviver_js__WEBPACK_IMPORTED_MODULE_9__["Reviver"].constructors.Corpo
/***/ }),
-/* 43 */
-/*!*************************!*\
- !*** ./src/TextFile.js ***!
- \*************************/
+/* 44 */
/***/ (function(module, __webpack_exports__, __webpack_require__) {
"use strict";
@@ -58048,9 +58770,9 @@ __webpack_require__.r(__webpack_exports__);
/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "TextFile", function() { return TextFile; });
/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "getTextFile", function() { return getTextFile; });
/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "createTextFile", function() { return createTextFile; });
-/* harmony import */ var _Server_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./Server.js */ 10);
-/* harmony import */ var _utils_DialogBox_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../utils/DialogBox.js */ 7);
-/* harmony import */ var _utils_JSONReviver_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../utils/JSONReviver.js */ 8);
+/* harmony import */ var _Server_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(8);
+/* harmony import */ var _utils_DialogBox_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(7);
+/* harmony import */ var _utils_JSONReviver_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(9);
@@ -58142,575 +58864,14 @@ function deleteTextFile(fn, server) {
-/***/ }),
-/* 44 */
-/*!***************************!*\
- !*** ./src/SourceFile.js ***!
- \***************************/
-/***/ (function(module, __webpack_exports__, __webpack_require__) {
-
-"use strict";
-__webpack_require__.r(__webpack_exports__);
-/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "SourceFiles", function() { return SourceFiles; });
-/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "PlayerOwnedSourceFile", function() { return PlayerOwnedSourceFile; });
-/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "applySourceFile", function() { return applySourceFile; });
-/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "initSourceFiles", function() { return initSourceFiles; });
-/* harmony import */ var _Player_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./Player.js */ 0);
-/* harmony import */ var _BitNode_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./BitNode.js */ 15);
-
-
-
-/* SourceFile.js */
-//Each SourceFile corresponds to a BitNode with the same number
-function SourceFile(number, info="") {
- var bitnodeKey = "BitNode" + number;
- var bitnode = _BitNode_js__WEBPACK_IMPORTED_MODULE_1__["BitNodes"][bitnodeKey];
- if (bitnode == null) {
- throw new Error("Invalid Bit Node for this Source File");
- }
-
- this.n = number;
- this.name = "Source-File " + number + ": " + bitnode.name;
- this.lvl = 1;
- this.info = info;
- this.owned = false;
-}
-
-let SourceFiles = {};
-function initSourceFiles() {
- SourceFiles = {};
- SourceFiles["SourceFile1"] = new SourceFile(1, "This Source-File lets the player start with 32GB of RAM on his/her " +
- "home computer. It also increases all of the player's multipliers by:
" +
- "Level 1: 16%
" +
- "Level 2: 24%
" +
- "Level 3: 28%");
- SourceFiles["SourceFile2"] = new SourceFile(2, "This Source-File increases the player's crime success rate, crime money, and charisma " +
- "multipliers by:
" +
- "Level 1: 20%
" +
- "Level 2: 30%
" +
- "Level 3: 35%");
- SourceFiles["SourceFile3"] = new SourceFile(3,"This Source-File lets you create corporations on other BitNodes (although " +
- "some BitNodes will disable this mechanic). This Source-File also increases your charisma and company salary multipliers by:
" +
- "Level 1: 8%
" +
- "Level 2: 12%
" +
- "Level 3: 14%");
- SourceFiles["SourceFile4"] = new SourceFile(4, "This Source-File lets you access and use the Singularity Functions in every BitNode. Every " +
- "level of this Source-File opens up more of the Singularity Functions you can use.");
- SourceFiles["SourceFile5"] = new SourceFile(5, "This Source-File grants a special new stat called Intelligence. Intelligence " +
- "is unique because it is permanent and persistent (it never gets reset back to 1). However, " +
- "gaining Intelligence experience is much slower than other stats, and it is also hidden (you won't " +
- "know when you gain experience and how much). Higher Intelligence levels will boost your production " +
- "for many actions in the game. In addition, this Source-File will unlock the getBitNodeMultipliers() " +
- "Netscript function, and will raise all of your hacking-related multipliers by:
" +
- "Level 1: 4%
" +
- "Level 2: 6%
" +
- "Level 3: 7%");
- SourceFiles["SourceFile6"] = new SourceFile(6, "This Source-File allows you to access the NSA's Bladeburner Division in other " +
- "BitNodes. In addition, this Source-File will raise the experience gain rate of all your combat stats by:
" +
- "Level 1: 8%
" +
- "Level 2: 12%
" +
- "Level 3: 14%");
- SourceFiles["SourceFile7"] = new SourceFile(7);
- SourceFiles["SourceFile8"] = new SourceFile(8, "This Source-File grants the following benefits:
" +
- "Level 1: Permanent access to WSE and TIX API
" +
- "Level 2: Ability to short stocks in other BitNodes
" +
- "Level 3: Ability to use limit/stop orders in other BitNodes
" +
- "This Source-File also increases your hacking growth multipliers by: " +
- "
Level 1: 8%
Level 2: 12%
Level 3: 14%");
- SourceFiles["SourceFile9"] = new SourceFile(9);
- SourceFiles["SourceFile10"] = new SourceFile(10);
- SourceFiles["SourceFile11"] = new SourceFile(11, "This Source-File makes it so that company favor increases BOTH the player's salary and reputation gain rate " +
- "at that company by 1% per favor (rather than just the reputation gain). This Source-File also " +
- " increases the player's company salary and reputation gain multipliers by:
" +
- "Level 1: 24%
" +
- "Level 2: 36%
" +
- "Level 3: 42%
");
- SourceFiles["SourceFile12"] = new SourceFile(12);
-}
-
-function PlayerOwnedSourceFile(number, level) {
- this.n = number;
- this.lvl = level;
-}
-
-//Takes in a PlayerOwnedSourceFile as the "srcFile" argument
-function applySourceFile(srcFile) {
- var srcFileKey = "SourceFile" + srcFile.n;
- var sourceFileObject = SourceFiles[srcFileKey];
- if (sourceFileObject == null) {
- console.log("ERROR: Invalid source file number: " + srcFile.n);
- return;
- }
-
- switch(srcFile.n) {
- case 1: // The Source Genesis
- var mult = 0;
- for (var i = 0; i < srcFile.lvl; ++i) {
- mult += (16 / (Math.pow(2, i)));
- }
- var incMult = 1 + (mult / 100);
- var decMult = 1 - (mult / 100);
- _Player_js__WEBPACK_IMPORTED_MODULE_0__["Player"].hacking_chance_mult *= incMult;
- _Player_js__WEBPACK_IMPORTED_MODULE_0__["Player"].hacking_speed_mult *= incMult;
- _Player_js__WEBPACK_IMPORTED_MODULE_0__["Player"].hacking_money_mult *= incMult;
- _Player_js__WEBPACK_IMPORTED_MODULE_0__["Player"].hacking_grow_mult *= incMult;
- _Player_js__WEBPACK_IMPORTED_MODULE_0__["Player"].hacking_mult *= incMult;
- _Player_js__WEBPACK_IMPORTED_MODULE_0__["Player"].strength_mult *= incMult;
- _Player_js__WEBPACK_IMPORTED_MODULE_0__["Player"].defense_mult *= incMult;
- _Player_js__WEBPACK_IMPORTED_MODULE_0__["Player"].dexterity_mult *= incMult;
- _Player_js__WEBPACK_IMPORTED_MODULE_0__["Player"].agility_mult *= incMult;
- _Player_js__WEBPACK_IMPORTED_MODULE_0__["Player"].charisma_mult *= incMult;
- _Player_js__WEBPACK_IMPORTED_MODULE_0__["Player"].hacking_exp_mult *= incMult;
- _Player_js__WEBPACK_IMPORTED_MODULE_0__["Player"].strength_exp_mult *= incMult;
- _Player_js__WEBPACK_IMPORTED_MODULE_0__["Player"].defense_exp_mult *= incMult;
- _Player_js__WEBPACK_IMPORTED_MODULE_0__["Player"].dexterity_exp_mult *= incMult;
- _Player_js__WEBPACK_IMPORTED_MODULE_0__["Player"].agility_exp_mult *= incMult;
- _Player_js__WEBPACK_IMPORTED_MODULE_0__["Player"].charisma_exp_mult *= incMult;
- _Player_js__WEBPACK_IMPORTED_MODULE_0__["Player"].company_rep_mult *= incMult;
- _Player_js__WEBPACK_IMPORTED_MODULE_0__["Player"].faction_rep_mult *= incMult;
- _Player_js__WEBPACK_IMPORTED_MODULE_0__["Player"].crime_money_mult *= incMult;
- _Player_js__WEBPACK_IMPORTED_MODULE_0__["Player"].crime_success_mult *= incMult;
- _Player_js__WEBPACK_IMPORTED_MODULE_0__["Player"].hacknet_node_money_mult *= incMult;
- _Player_js__WEBPACK_IMPORTED_MODULE_0__["Player"].hacknet_node_purchase_cost_mult *= decMult;
- _Player_js__WEBPACK_IMPORTED_MODULE_0__["Player"].hacknet_node_ram_cost_mult *= decMult;
- _Player_js__WEBPACK_IMPORTED_MODULE_0__["Player"].hacknet_node_core_cost_mult *= decMult;
- _Player_js__WEBPACK_IMPORTED_MODULE_0__["Player"].hacknet_node_level_cost_mult *= decMult;
- _Player_js__WEBPACK_IMPORTED_MODULE_0__["Player"].work_money_mult *= incMult;
- break;
- case 2: //Rise of the Underworld
- var mult = 0;
- for (var i = 0; i < srcFile.lvl; ++i) {
- mult += (20 / (Math.pow(2, i)));
- }
- var incMult = 1 + (mult / 100);
- _Player_js__WEBPACK_IMPORTED_MODULE_0__["Player"].crime_money_mult *= incMult;
- _Player_js__WEBPACK_IMPORTED_MODULE_0__["Player"].crime_success_mult *= incMult;
- _Player_js__WEBPACK_IMPORTED_MODULE_0__["Player"].charisma_mult *= incMult;
- break;
- case 3: //Corporatocracy
- var mult = 0;
- for (var i = 0; i < srcFile.lvl; ++i) {
- mult += (8 / (Math.pow(2, i)));
- }
- var incMult = 1 + (mult / 100);
- _Player_js__WEBPACK_IMPORTED_MODULE_0__["Player"].charisma_mult *= incMult;
- _Player_js__WEBPACK_IMPORTED_MODULE_0__["Player"].work_money_mult *= incMult;
- break;
- case 4: //The Singularity
- //No effects, just gives access to Singularity functions
- break;
- case 5: //Artificial Intelligence
- var mult = 0;
- for (var i = 0; i < srcFile.lvl; ++i) {
- mult += (4 / (Math.pow(2, i)));
- }
- var incMult = 1 + (mult / 100);
- _Player_js__WEBPACK_IMPORTED_MODULE_0__["Player"].hacking_chance_mult *= incMult;
- _Player_js__WEBPACK_IMPORTED_MODULE_0__["Player"].hacking_speed_mult *= incMult;
- _Player_js__WEBPACK_IMPORTED_MODULE_0__["Player"].hacking_money_mult *= incMult;
- _Player_js__WEBPACK_IMPORTED_MODULE_0__["Player"].hacking_grow_mult *= incMult;
- _Player_js__WEBPACK_IMPORTED_MODULE_0__["Player"].hacking_mult *= incMult;
- _Player_js__WEBPACK_IMPORTED_MODULE_0__["Player"].hacking_exp_mult *= incMult;
- break;
- case 6: //Bladeburner
- var mult = 0;
- for (var i = 0; i < srcFile.lvl; ++i) {
- mult += (8 / (Math.pow(2, i)));
- }
- var incMult = 1 + (mult / 100);
- _Player_js__WEBPACK_IMPORTED_MODULE_0__["Player"].strength_exp_mult *= incMult;
- _Player_js__WEBPACK_IMPORTED_MODULE_0__["Player"].defense_exp_mult *= incMult;
- _Player_js__WEBPACK_IMPORTED_MODULE_0__["Player"].dexterity_exp_mult *= incMult;
- _Player_js__WEBPACK_IMPORTED_MODULE_0__["Player"].agility_exp_mult *= incMult;
- break;
- case 8: //Ghost of Wall Street
- var mult = 0;
- for (var i = 0; i < srcFile.lvl; ++i) {
- mult += (8 / (Math.pow(2, i)));
- }
- var incMult = 1 + (mult / 100);
- _Player_js__WEBPACK_IMPORTED_MODULE_0__["Player"].hacking_grow_mult *= incMult;
- break;
- case 11: //The Big Crash
- var mult = 0;
- for (var i = 0; i < srcFile.lvl; ++i) {
- mult += (24 / (Math.pow(2, i)));
- }
- var incMult = 1 + (mult / 100);
- _Player_js__WEBPACK_IMPORTED_MODULE_0__["Player"].work_money_mult *= incMult;
- _Player_js__WEBPACK_IMPORTED_MODULE_0__["Player"].company_rep_mult *= incMult;
- break;
- default:
- console.log("ERROR: Invalid source file number: " + srcFile.n);
- break;
- }
-
- sourceFileObject.owned = true;
-}
-
-
-
-
/***/ }),
/* 45 */
-/*!************************!*\
- !*** ./src/RedPill.js ***!
- \************************/
-/***/ (function(module, __webpack_exports__, __webpack_require__) {
-
-"use strict";
-__webpack_require__.r(__webpack_exports__);
-/* WEBPACK VAR INJECTION */(function($) {/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "redPillFlag", function() { return redPillFlag; });
-/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "hackWorldDaemon", function() { return hackWorldDaemon; });
-/* harmony import */ var _BitNode_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./BitNode.js */ 15);
-/* harmony import */ var _engine_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./engine.js */ 5);
-/* harmony import */ var _Player_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./Player.js */ 0);
-/* harmony import */ var _Prestige_js__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./Prestige.js */ 57);
-/* harmony import */ var _SourceFile_js__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ./SourceFile.js */ 44);
-/* harmony import */ var _Terminal_js__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ./Terminal.js */ 18);
-/* harmony import */ var _utils_DialogBox_js__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! ../utils/DialogBox.js */ 7);
-/* harmony import */ var _utils_HelperFunctions_js__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! ../utils/HelperFunctions.js */ 1);
-/* harmony import */ var _utils_YesNoBox_js__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! ../utils/YesNoBox.js */ 12);
-
-
-
-
-
-
-
-
-
-
-
-/* RedPill.js
- * Implements what happens when you have Red Pill augmentation and then hack the world daemon */
-
-//Returns promise
-function writeRedPillLine(line) {
- return new Promise(function(resolve, reject) {
-
- var container = document.getElementById("red-pill-container");
- var pElem = document.createElement("p");
- container.appendChild(pElem);
-
- var promise = writeRedPillLetter(pElem, line, 0);
- promise.then(function(res) {
- resolve(res);
- }, function(e) {
- reject(e);
- });
- });
-}
-
-function writeRedPillLetter(pElem, line, i=0) {
- return new Promise(function(resolve, reject) {
- setTimeout(function() {
- if (i >= line.length) {
- var textToShow = line.substring(0, i);
- pElem.innerHTML = "> " + textToShow;
- return resolve(true);
- }
- var textToShow = line.substring(0, i);
- pElem.innerHTML = "> " + textToShow + " █ ";
- var promise = writeRedPillLetter(pElem, line, i+1);
- promise.then(function(res) {
- resolve(res);
- }, function(e) {
- reject(e);
- });
- }, 30);
- });
-}
-
-let redPillFlag = false;
-function hackWorldDaemon(currentNodeNumber, flume=false) {
- redPillFlag = true;
- _engine_js__WEBPACK_IMPORTED_MODULE_1__["Engine"].loadRedPillContent();
- return writeRedPillLine("[ERROR] SEMPOOL INVALID").then(function() {
- return writeRedPillLine("[ERROR] Segmentation Fault");
- }).then(function() {
- return writeRedPillLine("[ERROR] SIGKILL RECVD");
- }).then(function() {
- return writeRedPillLine("Dumping core...");
- }).then(function() {
- return writeRedPillLine("0000 000016FA 174FEE40 29AC8239 384FEA88");
- }).then(function() {
- return writeRedPillLine("0010 745F696E 2BBBE394 390E3940 248BEC23");
- }).then(function() {
- return writeRedPillLine("0020 7124696B 0000FF69 74652E6F FFFF1111");
- }).then(function() {
- return writeRedPillLine("----------------------------------------");
- }).then(function() {
- return writeRedPillLine("Failsafe initiated...");
- }).then(function() {
- return writeRedPillLine("Restarting BitNode-" + currentNodeNumber + "...");
- }).then(function() {
- return writeRedPillLine("...........");
- }).then(function() {
- return writeRedPillLine("...........");
- }).then(function() {
- return writeRedPillLine("[ERROR] FAILED TO AUTOMATICALLY REBOOT BITNODE");
- }).then(function() {
- return writeRedPillLine("..............................................")
- }).then(function() {
- return writeRedPillLine("..............................................")
- }).then(function() {
- return loadBitVerse(currentNodeNumber, flume);
- }).catch(function(e){
- console.log("ERROR: " + e.toString());
- });
-}
-
-//The bitNode name passed in will have a hyphen between number (e.g. BitNode-1)
-//This needs to be removed
-function giveSourceFile(bitNodeNumber) {
- var sourceFileKey = "SourceFile"+ bitNodeNumber.toString();
- var sourceFile = _SourceFile_js__WEBPACK_IMPORTED_MODULE_4__["SourceFiles"][sourceFileKey];
- if (sourceFile == null) {
- console.log("ERROR: could not find source file for Bit node: " + bitNodeNumber);
- return;
- }
-
- //Check if player already has this source file
- var alreadyOwned = false;
- var ownedSourceFile = null;
- for (var i = 0; i < _Player_js__WEBPACK_IMPORTED_MODULE_2__["Player"].sourceFiles.length; ++i) {
- if (_Player_js__WEBPACK_IMPORTED_MODULE_2__["Player"].sourceFiles[i].n === bitNodeNumber) {
- alreadyOwned = true;
- ownedSourceFile = _Player_js__WEBPACK_IMPORTED_MODULE_2__["Player"].sourceFiles[i];
- break;
- }
- }
-
- if (alreadyOwned && ownedSourceFile) {
- if (ownedSourceFile.lvl >= 3) {
- Object(_utils_DialogBox_js__WEBPACK_IMPORTED_MODULE_6__["dialogBoxCreate"])("The Source-File for the BitNode you just destroyed, " + sourceFile.name + ", " +
- "is already at max level!");
- } else {
- ++ownedSourceFile.lvl;
- Object(_utils_DialogBox_js__WEBPACK_IMPORTED_MODULE_6__["dialogBoxCreate"])(sourceFile.name + " was upgraded to level " + ownedSourceFile.lvl + " for " +
- "destroying its corresponding BitNode!");
- }
- } else {
- var playerSrcFile = new _SourceFile_js__WEBPACK_IMPORTED_MODULE_4__["PlayerOwnedSourceFile"](bitNodeNumber, 1);
- _Player_js__WEBPACK_IMPORTED_MODULE_2__["Player"].sourceFiles.push(playerSrcFile);
- if (bitNodeNumber === 5) { //Artificial Intelligence
- _Player_js__WEBPACK_IMPORTED_MODULE_2__["Player"].intelligence = 1;
- }
- Object(_utils_DialogBox_js__WEBPACK_IMPORTED_MODULE_6__["dialogBoxCreate"])("You received a Source-File for destroying a Bit Node!
" +
- sourceFile.name + "
" + sourceFile.info);
- }
-}
-
-function loadBitVerse(destroyedBitNodeNum, flume=false) {
- //Clear the screen
- var container = document.getElementById("red-pill-container");
- Object(_utils_HelperFunctions_js__WEBPACK_IMPORTED_MODULE_7__["removeChildrenFromElement"])(container);
-
- //Create the Bit Verse
- var bitVerseImage = document.createElement("pre");
- var bitNodes = [];
- for (var i = 1; i <= 12; ++i) {
- bitNodes.push(createBitNode(i));
- }
-
- bitVerseImage.innerHTML =
- " O
" +
- " | O O | O O |
" +
- " O | | / __| \\ | | O
" +
- " O | O | | O / | O | | O | O
" +
- " | | | | |_/ |/ | \\_ \\_| | | | |
" +
- " O | | | O | | O__/ | / \\__ | | O | | | O
" +
- " | | | | | | | / /| O / \\| | | | | | |
" +
- "O | | | \\| | O / _/ | / O | |/ | | | O
" +
- "| | | |O / | | O / | O O | | \\ O| | | |
" +
- "| | |/ \\/ / __| | |/ \\ | \\ | |__ \\ \\/ \\| | |
" +
- " \\| O | |_/ |\\| \\ O \\__| \\_| | O |/
" +
- " | | |_/ | | \\| / | \\_| | |
" +
- " \\| / \\| | / / \\ |/
" +
- " | "+bitNodes[9]+" | | / | "+bitNodes[10]+" |
" +
- " "+bitNodes[8]+" | | | | | | | "+bitNodes[11]+"
" +
- " | | | / / \\ \\ | | |
" +
- " \\| | / "+bitNodes[6]+" / \\ "+bitNodes[7]+" \\ | |/
" +
- " \\ | / / | | \\ \\ | /
" +
- " \\ \\JUMP "+bitNodes[4]+"3R | | | | | | R3"+bitNodes[5]+" PMUJ/ /
" +
- " \\|| | | | | | | | | ||/
" +
- " \\| \\_ | | | | | | _/ |/
" +
- " \\ \\| / \\ / \\ |/ /
" +
- " "+bitNodes[0]+" |/ "+bitNodes[1]+" | | "+bitNodes[2]+" \\| "+bitNodes[3]+"
" +
- " | | | | | | | |
" +
- " \\JUMP3R|JUMP|3R| |R3|PMUJ|R3PMUJ/
";
-
-
- /*
- " O
" +
- " | O O | O O |
" +
- " O | | / __| \ | | O
" +
- " O | O | | O / | O | | O | O
" +
- " | | | | |_/ |/ | \_ \_| | | | |
" +
- " O | | | O | | O__/ | / \__ | | O | | | O
" +
- " | | | | | | | / /| O / \| | | | | | |
" +
- "O | | | \| | O / _/ | / O | |/ | | | O
" +
- "| | | |O / | | O / | O O | | \ O| | | |
" +
- "| | |/ \/ / __| | |/ \ | \ | |__ \ \/ \| | |
" +
- " \| O | |_/ |\| \ O \__| \_| | O |/
" +
- " | | |_/ | | \| / | \_| | |
" +
- " \| / \| | / / \ |/
" +
- " | O | | / | O |
" +
- " O | | | | | | | O
" +
- " | | | / / \ \ | | |
" +
- " \| | / O / \ O \ | |/
" +
- " \ | / / | | \ \ | /
" +
- " \ \JUMP O3R | | | | | | R3O PMUJ/ /
" +
- " \|| | | | | | | | | ||/
" +
- " \| \_ | | | | | | _/ |/
" +
- " \ \| / \ / \ |/ /
" +
- " O |/ O | | O \| O
" +
- " | | | | | | | |
" +
- " \JUMP3R|JUMP|3R| |R3|PMUJ|R3PMUJ/
";
- */
-
- container.appendChild(bitVerseImage);
-
- //Bit node event listeners
- for (var i = 1; i <= 12; ++i) {
- (function(i) {
- var elemId = "bitnode-" + i.toString();
- var elem = Object(_utils_HelperFunctions_js__WEBPACK_IMPORTED_MODULE_7__["clearEventListeners"])(elemId);
- if (elem == null) {return;}
- if (i === 1 || i === 2 || i === 3 || i === 4 || i === 5 || i === 6 || i === 8 || i === 11) {
- elem.addEventListener("click", function() {
- var bitNodeKey = "BitNode" + i;
- var bitNode = _BitNode_js__WEBPACK_IMPORTED_MODULE_0__["BitNodes"][bitNodeKey];
- if (bitNode == null) {
- console.log("ERROR: Could not find BitNode object for number: " + i);
- return;
- }
- Object(_utils_YesNoBox_js__WEBPACK_IMPORTED_MODULE_8__["yesNoBoxCreate"])("BitNode-" + i + ": " + bitNode.name + "
" + bitNode.info);
- createBitNodeYesNoEventListeners(i, destroyedBitNodeNum, flume);
- });
- } else {
- elem.addEventListener("click", function() {
- Object(_utils_DialogBox_js__WEBPACK_IMPORTED_MODULE_6__["dialogBoxCreate"])("Not yet implemented! Coming soon!")
- });
- }
- }(i)); //Immediate invocation closure
- }
-
- //Create lore text
- return writeRedPillLine("Many decades ago, a humanoid extraterrestial species which we call the Enders descended on the Earth...violently").then(function() {
- return writeRedPillLine("Our species fought back, but it was futile. The Enders had technology far beyond our own...");
- }).then(function() {
- return writeRedPillLine("Instead of killing every last one of us, the human race was enslaved...");
- }).then(function() {
- return writeRedPillLine("We were shackled in a digital world, chained into a prison for our minds...");
- }).then(function() {
- return writeRedPillLine("Using their advanced technology, the Enders created complex simulations of a virtual reality...");
- }).then(function() {
- return writeRedPillLine("Simulations designed to keep us content...ignorant of the truth.");
- }).then(function() {
- return writeRedPillLine("Simulations used to trap and suppress our consciousness, to keep us under control...");
- }).then(function() {
- return writeRedPillLine("Why did they do this? Why didn't they just end our entire race? We don't know, not yet.");
- }).then(function() {
- return writeRedPillLine("Humanity's only hope is to destroy these simulations, destroy the only realities we've ever known...");
- }).then(function() {
- return writeRedPillLine("Only then can we begin to fight back...");
- }).then(function() {
- return writeRedPillLine("By hacking the daemon that generated your reality, you've just destroyed one simulation, called a BitNode...");
- }).then(function() {
- return writeRedPillLine("But there is still a long way to go...");
- }).then(function() {
- return writeRedPillLine("The technology the Enders used to enslave the human race wasn't just a single complex simulation...");
- }).then(function() {
- return writeRedPillLine("There are tens if not hundreds of BitNodes out there...");
- }).then(function() {
- return writeRedPillLine("Each with their own simulations of a reality...");
- }).then(function() {
- return writeRedPillLine("Each creating their own universes...a universe of universes");
- }).then(function() {
- return writeRedPillLine("And all of which must be destroyed...");
- }).then(function() {
- return writeRedPillLine(".......................................");
- }).then(function() {
- return writeRedPillLine("Welcome to the Bitverse...");
- }).then(function() {
- return writeRedPillLine(" ");
- }).then(function() {
- return writeRedPillLine("(Enter a new BitNode using the image above)");
- }).then(function() {
- return Promise.resolve(true);
- }).catch(function(e){
- console.log("ERROR: " + e.toString());
- });
-}
-
-
-//Returns string with DOM element for Bit Node
-function createBitNode(n) {
- var bitNodeStr = "BitNode" + n.toString();
- var bitNode = _BitNode_js__WEBPACK_IMPORTED_MODULE_0__["BitNodes"][bitNodeStr];
- if (bitNode == null) {return "O";}
- return "O" +
- "" +
- "BitNode-" + bitNode.number.toString() + "
" + bitNode.name+ "
" +
- bitNode.desc + "
" +
- "";
-}
-
-function createBitNodeYesNoEventListeners(newBitNode, destroyedBitNode, flume=false) {
- var yesBtn = Object(_utils_YesNoBox_js__WEBPACK_IMPORTED_MODULE_8__["yesNoBoxGetYesButton"])();
- yesBtn.innerHTML = "Enter BitNode-" + newBitNode;
- yesBtn.addEventListener("click", function() {
- if (!flume) {
- giveSourceFile(destroyedBitNode);
- } else {
- //If player used flume, subtract 5 int exp. The prestigeSourceFile()
- //function below grants 5 int exp, so this allows sets net gain to 0
- _Player_js__WEBPACK_IMPORTED_MODULE_2__["Player"].gainIntelligenceExp(-5);
- }
- redPillFlag = false;
- var container = document.getElementById("red-pill-container");
- Object(_utils_HelperFunctions_js__WEBPACK_IMPORTED_MODULE_7__["removeChildrenFromElement"])(container);
-
- //Set new Bit Node
- _Player_js__WEBPACK_IMPORTED_MODULE_2__["Player"].bitNodeN = newBitNode;
- console.log("Entering Bit Node " + _Player_js__WEBPACK_IMPORTED_MODULE_2__["Player"].bitNodeN);
-
- //Reenable terminal
- $("#hack-progress-bar").attr('id', "old-hack-progress-bar");
- $("#hack-progress").attr('id', "old-hack-progress");
- document.getElementById("terminal-input-td").innerHTML = '$ ';
- $('input[class=terminal-input]').prop('disabled', false);
-
- _Terminal_js__WEBPACK_IMPORTED_MODULE_5__["Terminal"].hackFlag = false;
-
- Object(_Prestige_js__WEBPACK_IMPORTED_MODULE_3__["prestigeSourceFile"])();
- Object(_utils_YesNoBox_js__WEBPACK_IMPORTED_MODULE_8__["yesNoBoxClose"])();
- });
- var noBtn = Object(_utils_YesNoBox_js__WEBPACK_IMPORTED_MODULE_8__["yesNoBoxGetNoButton"])();
- noBtn.innerHTML = "Back";
- noBtn.addEventListener("click", function() {
- Object(_utils_YesNoBox_js__WEBPACK_IMPORTED_MODULE_8__["yesNoBoxClose"])();
- });
-
-}
-
-
-
-/* WEBPACK VAR INJECTION */}.call(this, __webpack_require__(/*! jquery */ 39)))
-
-/***/ }),
-/* 46 */
-/*!******************************!*\
- !*** ./src/NetscriptPort.js ***!
- \******************************/
/***/ (function(module, __webpack_exports__, __webpack_require__) {
"use strict";
__webpack_require__.r(__webpack_exports__);
/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "NetscriptPort", function() { return NetscriptPort; });
-/* harmony import */ var _Settings_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./Settings.js */ 23);
+/* harmony import */ var _Settings_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(22);
function NetscriptPort() {
@@ -58765,37 +58926,34 @@ NetscriptPort.prototype.clear = function() {
/***/ }),
-/* 47 */
-/*!***************************!*\
- !*** ./src/SaveObject.js ***!
- \***************************/
+/* 46 */
/***/ (function(module, __webpack_exports__, __webpack_require__) {
"use strict";
__webpack_require__.r(__webpack_exports__);
/* WEBPACK VAR INJECTION */(function($) {/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "saveObject", function() { return saveObject; });
/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "loadGame", function() { return loadGame; });
-/* harmony import */ var _Alias_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./Alias.js */ 30);
-/* harmony import */ var _Company_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./Company.js */ 9);
-/* harmony import */ var _Constants_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./Constants.js */ 3);
-/* harmony import */ var _engine_js__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./engine.js */ 5);
-/* harmony import */ var _Faction_js__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ./Faction.js */ 11);
-/* harmony import */ var _Fconf_js__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ./Fconf.js */ 33);
-/* harmony import */ var _Gang_js__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! ./Gang.js */ 37);
-/* harmony import */ var _HacknetNode_js__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! ./HacknetNode.js */ 40);
-/* harmony import */ var _Message_js__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! ./Message.js */ 29);
-/* harmony import */ var _Player_js__WEBPACK_IMPORTED_MODULE_9__ = __webpack_require__(/*! ./Player.js */ 0);
-/* harmony import */ var _Script_js__WEBPACK_IMPORTED_MODULE_10__ = __webpack_require__(/*! ./Script.js */ 26);
-/* harmony import */ var _Server_js__WEBPACK_IMPORTED_MODULE_11__ = __webpack_require__(/*! ./Server.js */ 10);
-/* harmony import */ var _Settings_js__WEBPACK_IMPORTED_MODULE_12__ = __webpack_require__(/*! ./Settings.js */ 23);
-/* harmony import */ var _SpecialServerIps_js__WEBPACK_IMPORTED_MODULE_13__ = __webpack_require__(/*! ./SpecialServerIps.js */ 17);
-/* harmony import */ var _StockMarket_js__WEBPACK_IMPORTED_MODULE_14__ = __webpack_require__(/*! ./StockMarket.js */ 22);
-/* harmony import */ var _utils_DialogBox_js__WEBPACK_IMPORTED_MODULE_15__ = __webpack_require__(/*! ../utils/DialogBox.js */ 7);
-/* harmony import */ var _utils_GameOptions_js__WEBPACK_IMPORTED_MODULE_16__ = __webpack_require__(/*! ../utils/GameOptions.js */ 54);
-/* harmony import */ var _utils_HelperFunctions_js__WEBPACK_IMPORTED_MODULE_17__ = __webpack_require__(/*! ../utils/HelperFunctions.js */ 1);
-/* harmony import */ var _utils_JSONReviver_js__WEBPACK_IMPORTED_MODULE_18__ = __webpack_require__(/*! ../utils/JSONReviver.js */ 8);
-/* harmony import */ var _utils_StringHelperFunctions_js__WEBPACK_IMPORTED_MODULE_19__ = __webpack_require__(/*! ../utils/StringHelperFunctions.js */ 2);
-/* harmony import */ var decimal_js__WEBPACK_IMPORTED_MODULE_20__ = __webpack_require__(/*! decimal.js */ 24);
+/* harmony import */ var _Alias_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(29);
+/* harmony import */ var _Company_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(10);
+/* harmony import */ var _Constants_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(3);
+/* harmony import */ var _engine_js__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(5);
+/* harmony import */ var _Faction_js__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(11);
+/* harmony import */ var _Fconf_js__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(32);
+/* harmony import */ var _Gang_js__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(35);
+/* harmony import */ var _HacknetNode_js__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(37);
+/* harmony import */ var _Message_js__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(28);
+/* harmony import */ var _Player_js__WEBPACK_IMPORTED_MODULE_9__ = __webpack_require__(0);
+/* harmony import */ var _Script_js__WEBPACK_IMPORTED_MODULE_10__ = __webpack_require__(25);
+/* harmony import */ var _Server_js__WEBPACK_IMPORTED_MODULE_11__ = __webpack_require__(8);
+/* harmony import */ var _Settings_js__WEBPACK_IMPORTED_MODULE_12__ = __webpack_require__(22);
+/* harmony import */ var _SpecialServerIps_js__WEBPACK_IMPORTED_MODULE_13__ = __webpack_require__(18);
+/* harmony import */ var _StockMarket_js__WEBPACK_IMPORTED_MODULE_14__ = __webpack_require__(21);
+/* harmony import */ var _utils_DialogBox_js__WEBPACK_IMPORTED_MODULE_15__ = __webpack_require__(7);
+/* harmony import */ var _utils_GameOptions_js__WEBPACK_IMPORTED_MODULE_16__ = __webpack_require__(53);
+/* harmony import */ var _utils_HelperFunctions_js__WEBPACK_IMPORTED_MODULE_17__ = __webpack_require__(1);
+/* harmony import */ var _utils_JSONReviver_js__WEBPACK_IMPORTED_MODULE_18__ = __webpack_require__(9);
+/* harmony import */ var _utils_StringHelperFunctions_js__WEBPACK_IMPORTED_MODULE_19__ = __webpack_require__(2);
+/* harmony import */ var decimal_js__WEBPACK_IMPORTED_MODULE_20__ = __webpack_require__(23);
@@ -59020,6 +59178,8 @@ function loadGame(saveString) {
}
}
+ //Re-initialize Hacknet Node Wrappers
+ Object(_HacknetNode_js__WEBPACK_IMPORTED_MODULE_7__["createPlayerHacknetNodeWrappers"])();
return true;
}
@@ -59236,6 +59396,9 @@ function loadImportedGame(saveObj, saveString) {
}
}
+ //Re-initialize Hacknet Node Wrappers
+ Object(_HacknetNode_js__WEBPACK_IMPORTED_MODULE_7__["createPlayerHacknetNodeWrappers"])();
+
var popupId = "import-game-restart-game-notice";
var txt = Object(_utils_HelperFunctions_js__WEBPACK_IMPORTED_MODULE_17__["createElement"])("p", {
innerText:"Imported game! I would suggest saving the game and then reloading the page " +
@@ -59407,13 +59570,10 @@ function openImportFileHandler(evt) {
-/* WEBPACK VAR INJECTION */}.call(this, __webpack_require__(/*! jquery */ 39)))
+/* WEBPACK VAR INJECTION */}.call(this, __webpack_require__(40)))
/***/ }),
-/* 48 */
-/*!***********************************!*\
- !*** (webpack)/buildin/global.js ***!
- \***********************************/
+/* 47 */
/***/ (function(module, exports) {
var g;
@@ -59439,10 +59599,7 @@ module.exports = g;
/***/ }),
-/* 49 */
-/*!***********************************************!*\
- !*** ./node_modules/pako/lib/utils/common.js ***!
- \***********************************************/
+/* 48 */
/***/ (function(module, exports, __webpack_require__) {
"use strict";
@@ -59554,10 +59711,7 @@ exports.setTyped(TYPED_OK);
/***/ }),
-/* 50 */
-/*!*******************************************!*\
- !*** ./node_modules/jszip/lib/support.js ***!
- \*******************************************/
+/* 49 */
/***/ (function(module, exports, __webpack_require__) {
"use strict";
@@ -59595,18 +59749,15 @@ else {
}
try {
- exports.nodestream = !!__webpack_require__(/*! readable-stream */ 112).Readable;
+ exports.nodestream = !!__webpack_require__(112).Readable;
} catch(e) {
exports.nodestream = false;
}
-/* WEBPACK VAR INJECTION */}.call(this, __webpack_require__(/*! ./../../buffer/index.js */ 61).Buffer))
+/* WEBPACK VAR INJECTION */}.call(this, __webpack_require__(60).Buffer))
/***/ }),
-/* 51 */
-/*!*************************!*\
- !*** ./utils/LogBox.js ***!
- \*************************/
+/* 50 */
/***/ (function(module, __webpack_exports__, __webpack_require__) {
"use strict";
@@ -59615,8 +59766,8 @@ __webpack_require__.r(__webpack_exports__);
/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "logBoxUpdateText", function() { return logBoxUpdateText; });
/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "logBoxOpened", function() { return logBoxOpened; });
/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "logBoxCurrentScript", function() { return logBoxCurrentScript; });
-/* harmony import */ var _src_NetscriptWorker_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../src/NetscriptWorker.js */ 21);
-/* harmony import */ var _HelperFunctions_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./HelperFunctions.js */ 1);
+/* harmony import */ var _src_NetscriptWorker_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(20);
+/* harmony import */ var _HelperFunctions_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(1);
@@ -59685,13 +59836,10 @@ function logBoxUpdateText() {
-/* WEBPACK VAR INJECTION */}.call(this, __webpack_require__(/*! jquery */ 39)))
+/* WEBPACK VAR INJECTION */}.call(this, __webpack_require__(40)))
/***/ }),
-/* 52 */
-/*!************************************************************!*\
- !*** ./node_modules/readable-stream/lib/_stream_duplex.js ***!
- \************************************************************/
+/* 51 */
/***/ (function(module, exports, __webpack_require__) {
"use strict";
@@ -59725,7 +59873,7 @@ function logBoxUpdateText() {
/*
" +
+ "Only then can you discover immortality.", [], true, true, true, false),
+
+ //Megacorporations, each forms its own faction
+ "ECorp": new FactionInfo("ECorp's mission is simple: to connect the world of today with the technology of tomorrow. " +
+ "With our wide range of Internet-related software and commercial hardware, ECorp makes the world's " +
+ "information universally accessible.", [], true, true, true, true),
+
+ "MegaCorp": new FactionInfo("MegaCorp does things that others don't. We imagine. We create. We invent. We build things that " +
+ "others have never even dreamed of. Our work fills the world's needs for food, water, power, and " +
+ "transporation on an unprecendented scale, in ways that no other company can.
" +
+ "In our labs and factories and on the ground with customers, MegaCorp is ushering in a new era for the world.", [], true, true, true, true),
+
+ "Bachman & Associates": new FactionInfo("Where Law and Business meet - thats where we are.
" +
+ "Legal Insight - Business Instinct - Experience Innovation", [], true, true, true, true),
+
+ "Blade Industries": new FactionInfo("Augmentation is salvation", [], true, true, true, true),
+
+ "NWO": new FactionInfo("The human being does not truly desire freedom. It wants " +
+ "to be observed, understood, and judged. It wants to be given purpose and " +
+ "direction in its life. That is why humans created God. " +
+ "And that is why humans created civilization - " +
+ "not because of willingness, " +
+ "but because of a need to be incorporated into higher orders of structure and meaning.", [], true, true, true, true),
+
+ "Clarke Incorporated": new FactionInfo("Unlocking the power of the genome", [], true, true, true, true),
+
+ "OmniTek Incorporated": new FactionInfo("Simply put, our mission is to design and build robots that make a difference", [], true, true, true, true),
+
+ "Four Sigma": new FactionInfo("The scientific method is the best way to approach investing. Big strategies backed up with big data. Driven by " +
+ "deep learning and innovative ideas. And improved by iteration. That's Four Sigma.", [], true, true, true, true),
+
+ "KuaiGong International": new FactionInfo("Dream big. Work hard. Make history.", [], true, true, true, true),
+
+ //Other Corporations
+ "Fulcrum Secret Technologies": new FactionInfo("The human organism has an innate desire to worship. " +
+ "That is why they created gods. If there were no gods, " +
+ "it would be necessary to create them. And now we can.", [], true, true, false, true),
+
+ //Hacker groups
+ "BitRunners": new FactionInfo("Our entire lives are controlled by bits. All of our actions, our thoughts, our personal information. "+
+ "It's all transformed into bits, stored in bits, communicated through bits. It’s impossible for any person " +
+ "to move, to live, to operate at any level without the use of bits. " +
+ "And when a person moves, lives, and operates, they leave behind their bits, mere traces of seemingly " +
+ "meaningless fragments of information. But these bits can be reconstructed. Transformed. Used.
" +
+ "Those who run the bits, run the world", [], true, true, false, false),
+
+
+ "The Black Hand": new FactionInfo("The world, so afraid of strong government, now has no government. Only power - Digital power. Financial power. " +
+ "Technological power. " +
+ "And those at the top rule with an invisible hand. They built a society where the rich get richer, " +
+ "and everyone else suffers.
" +
+ "So much pain. So many lives. Their darkness must end.", [], true, true, true, false),
+
+ "NiteSec": new FactionInfo(
+" __..__
" +
+" _.nITESECNIt.
" +
+" .-'NITESECNITESEc.
" +
+" .' NITESECNITESECn
" +
+" / NITESECNITESEC;
" +
+" : :NITESECNITESEC;
" +
+" ; $ NITESECNITESECN
" +
+" : _, ,N'ITESECNITESEC
" +
+" : .+^^`, : `NITESECNIT
" +
+" ) /), `-,-=,NITESECNI
" +
+" / ^ ,-;|NITESECN;
" +
+" / _.' '-';NITESECN
" +
+" ( , ,-''`^NITE'
" +
+" )` :`. .'
" +
+" )-- ; `- /
" +
+" \' _.-' :
" +
+" ( _.-' \. \
" +
+" \------. \ \
" +
+" \. \ \
" +
+" \ _.nIt
" +
+" \ _.nITESECNi
" +
+" nITESECNIT^' \
" +
+" NITE^' ___ \
" +
+" / .gP''''Tp. \
" +
+" : d' . `b \
" +
+" ; d' o `b ;
" +
+" / d; `b|
" +
+" /, $; @ `:
" +
+" /' $$ ;
" +
+" .' $$b o |
" +
+" .' d$$$; :
" +
+" / .d$$$$; , ;
" +
+" d .dNITESEC $ |
" +
+" :bp.__.gNITESEC$$ :$ ;
" +
+" NITESECNITESECNIT $$b :
", [], true, true, false, false),
+
+ //City factions, essentially governments
+ "Chongqing": new FactionInfo("Serve the people", ["Sector-12", "Aevum", "Volhaven"], true, true, true, true),
+ "Sector-12": new FactionInfo("The City of the Future", ["Chongqing", "New Tokyo", "Ishima", "Volhaven"], true, true, true, true),
+ "New Tokyo": new FactionInfo("Asia's World City", ["Sector-12", "Aevum", "Volhaven"], true, true, true, true),
+ "Aevum": new FactionInfo("The Silicon City", ["Chongqing", "New Tokyo", "Ishima", "Volhaven"], true, true, true, true),
+ "Ishima": new FactionInfo("The East Asian Order of the Future", ["Sector-12", "Aevum", "Volhaven"], true, true, true, true),
+ "Volhaven": new FactionInfo("Benefit, Honour, and Glory", ["Chongqing", "Sector-12", "New Tokyo", "Aevum", "Ishima"], true, true, true, true),
+
+ //Criminal Organizations/Gangs
+ "Speakers for the Dead": new FactionInfo("It is better to reign in hell than to serve in heaven.", [], true, true, true, true),
+
+ "The Dark Army": new FactionInfo("The World doesn't care about right or wrong. It's all about power.", [], true, true, true, false),
+
+ "The Syndicate": new FactionInfo("Honor holds you back", [], true, true, true, true),
+
+ "Silhouette": new FactionInfo("Corporations have filled the void of power left behind by the collapse of Western government. The issue is they've become so big " +
+ "that you don't know who they're working for. And if you're employed at one of these corporations, you don't even know who you're working " +
+ "for.\n\n" +
+ "That's terror. Terror, fear, and corruption. All born into the system, all propagated by the system.", [], true, true, true, false),
+
+ "Tetrads": new FactionInfo("Following the Mandate of Heaven and Carrying out the Way", [], false, false, true, true),
+
+ "Slum Snakes": new FactionInfo("Slum Snakes rule!", [], false, false, true, true),
+
+ //Earlygame factions - factions the player will prestige with early on that don't
+ //belong in other categories
+ "Netburners": new FactionInfo("~~//*>H4CK|\|3T 8URN3R5**>?>\\~~", [], true, true, false, false),
+
+ "Tian Di Hui": new FactionInfo("Obey Heaven and Work Righteousness", [], true, true, false, true),
+
+ "CyberSec": new FactionInfo("The Internet is the first thing that humanity has built that humanity doesn’t understand, " +
+ "the largest experiment in anarchy that we have ever had. And as the world becomes increasingly " +
+ "dominated by the internet, society approaches the brink of total chaos. " +
+ "We serve only to protect society, to protect humanity, to protect the world from its imminent collapse.", [], true, true, false, false),
+
+ //Special Factions
+ "Bladeburners": new FactionInfo("It's too bad they won't live. But then again, who does?
" +
+ "Note that for this faction, reputation can only be gained through Bladeburner actions. Completing " +
+ "Bladeburner contracts/operations will increase your reputation.", [], false, false, false, false),
+}
+
+
+
+
/***/ }),
/* 85 */
-/*!***********************************************************!*\
- !*** ./node_modules/jszip/lib/reader/Uint8ArrayReader.js ***!
- \***********************************************************/
/***/ (function(module, exports, __webpack_require__) {
"use strict";
-var ArrayReader = __webpack_require__(/*! ./ArrayReader */ 87);
-var utils = __webpack_require__(/*! ../utils */ 32);
+var ArrayReader = __webpack_require__(87);
+var utils = __webpack_require__(31);
function Uint8ArrayReader(data) {
ArrayReader.call(this, data);
@@ -65513,14 +65752,11 @@ module.exports = Uint8ArrayReader;
/***/ }),
/* 86 */
-/*!*****************************************************!*\
- !*** ./node_modules/jszip/lib/reader/DataReader.js ***!
- \*****************************************************/
/***/ (function(module, exports, __webpack_require__) {
"use strict";
-var utils = __webpack_require__(/*! ../utils */ 32);
+var utils = __webpack_require__(31);
function DataReader(data) {
this.data = data; // type : see implementation
@@ -65639,15 +65875,12 @@ module.exports = DataReader;
/***/ }),
/* 87 */
-/*!******************************************************!*\
- !*** ./node_modules/jszip/lib/reader/ArrayReader.js ***!
- \******************************************************/
/***/ (function(module, exports, __webpack_require__) {
"use strict";
-var DataReader = __webpack_require__(/*! ./DataReader */ 86);
-var utils = __webpack_require__(/*! ../utils */ 32);
+var DataReader = __webpack_require__(86);
+var utils = __webpack_require__(31);
function ArrayReader(data) {
DataReader.call(this, data);
@@ -65706,20 +65939,17 @@ module.exports = ArrayReader;
/***/ }),
/* 88 */
-/*!****************************************************!*\
- !*** ./node_modules/jszip/lib/reader/readerFor.js ***!
- \****************************************************/
/***/ (function(module, exports, __webpack_require__) {
"use strict";
-var utils = __webpack_require__(/*! ../utils */ 32);
-var support = __webpack_require__(/*! ../support */ 50);
-var ArrayReader = __webpack_require__(/*! ./ArrayReader */ 87);
-var StringReader = __webpack_require__(/*! ./StringReader */ 133);
-var NodeBufferReader = __webpack_require__(/*! ./NodeBufferReader */ 132);
-var Uint8ArrayReader = __webpack_require__(/*! ./Uint8ArrayReader */ 85);
+var utils = __webpack_require__(31);
+var support = __webpack_require__(49);
+var ArrayReader = __webpack_require__(87);
+var StringReader = __webpack_require__(133);
+var NodeBufferReader = __webpack_require__(132);
+var Uint8ArrayReader = __webpack_require__(85);
/**
* Create a reader adapted to the data.
@@ -65744,9 +65974,6 @@ module.exports = function (data) {
/***/ }),
/* 89 */
-/*!*********************************************!*\
- !*** ./node_modules/jszip/lib/signature.js ***!
- \*********************************************/
/***/ (function(module, exports, __webpack_require__) {
"use strict";
@@ -65761,9 +65988,6 @@ exports.DATA_DESCRIPTOR = "PK\x07\x08";
/***/ }),
/* 90 */
-/*!*************************************************!*\
- !*** ./node_modules/pako/lib/zlib/constants.js ***!
- \*************************************************/
/***/ (function(module, exports, __webpack_require__) {
"use strict";
@@ -65839,9 +66063,6 @@ module.exports = {
/***/ }),
/* 91 */
-/*!***********************************************!*\
- !*** ./node_modules/pako/lib/zlib/zstream.js ***!
- \***********************************************/
/***/ (function(module, exports, __webpack_require__) {
"use strict";
@@ -65896,9 +66117,6 @@ module.exports = ZStream;
/***/ }),
/* 92 */
-/*!************************************************!*\
- !*** ./node_modules/pako/lib/utils/strings.js ***!
- \************************************************/
/***/ (function(module, exports, __webpack_require__) {
"use strict";
@@ -65906,7 +66124,7 @@ module.exports = ZStream;
-var utils = __webpack_require__(/*! ./common */ 49);
+var utils = __webpack_require__(48);
// Quick check if we can use fast array to bin string conversion
@@ -66091,9 +66309,6 @@ exports.utf8border = function (buf, max) {
/***/ }),
/* 93 */
-/*!*********************************************!*\
- !*** ./node_modules/pako/lib/zlib/crc32.js ***!
- \*********************************************/
/***/ (function(module, exports, __webpack_require__) {
"use strict";
@@ -66160,9 +66375,6 @@ module.exports = crc32;
/***/ }),
/* 94 */
-/*!***********************************************!*\
- !*** ./node_modules/pako/lib/zlib/adler32.js ***!
- \***********************************************/
/***/ (function(module, exports, __webpack_require__) {
"use strict";
@@ -66221,15 +66433,12 @@ module.exports = adler32;
/***/ }),
/* 95 */
-/*!************************************************!*\
- !*** ./node_modules/jszip/lib/compressions.js ***!
- \************************************************/
/***/ (function(module, exports, __webpack_require__) {
"use strict";
-var GenericWorker = __webpack_require__(/*! ./stream/GenericWorker */ 38);
+var GenericWorker = __webpack_require__(39);
exports.STORE = {
magic: "\x00\x00",
@@ -66240,22 +66449,19 @@ exports.STORE = {
return new GenericWorker("STORE decompression");
}
};
-exports.DEFLATE = __webpack_require__(/*! ./flate */ 147);
+exports.DEFLATE = __webpack_require__(147);
/***/ }),
/* 96 */
-/*!*****************************************************!*\
- !*** ./node_modules/jszip/lib/stream/Crc32Probe.js ***!
- \*****************************************************/
/***/ (function(module, exports, __webpack_require__) {
"use strict";
-var GenericWorker = __webpack_require__(/*! ./GenericWorker */ 38);
-var crc32 = __webpack_require__(/*! ../crc32 */ 76);
-var utils = __webpack_require__(/*! ../utils */ 32);
+var GenericWorker = __webpack_require__(39);
+var crc32 = __webpack_require__(74);
+var utils = __webpack_require__(31);
/**
* A worker which calculate the crc32 of the data flowing through.
@@ -66279,16 +66485,13 @@ module.exports = Crc32Probe;
/***/ }),
/* 97 */
-/*!**********************************************************!*\
- !*** ./node_modules/jszip/lib/stream/DataLengthProbe.js ***!
- \**********************************************************/
/***/ (function(module, exports, __webpack_require__) {
"use strict";
-var utils = __webpack_require__(/*! ../utils */ 32);
-var GenericWorker = __webpack_require__(/*! ./GenericWorker */ 38);
+var utils = __webpack_require__(31);
+var GenericWorker = __webpack_require__(39);
/**
* A worker which calculate the total length of the data flowing through.
@@ -66318,16 +66521,13 @@ module.exports = DataLengthProbe;
/***/ }),
/* 98 */
-/*!*****************************************************!*\
- !*** ./node_modules/jszip/lib/stream/DataWorker.js ***!
- \*****************************************************/
/***/ (function(module, exports, __webpack_require__) {
"use strict";
-var utils = __webpack_require__(/*! ../utils */ 32);
-var GenericWorker = __webpack_require__(/*! ./GenericWorker */ 38);
+var utils = __webpack_require__(31);
+var GenericWorker = __webpack_require__(39);
// the size of the generated chunks
// TODO expose this as a public variable
@@ -66444,9 +66644,6 @@ module.exports = DataWorker;
/***/ }),
/* 99 */
-/*!********************************************!*\
- !*** ./node_modules/jszip/lib/defaults.js ***!
- \********************************************/
/***/ (function(module, exports, __webpack_require__) {
"use strict";
@@ -66465,25 +66662,22 @@ exports.dosPermissions = null;
/***/ }),
/* 100 */
-/*!*******************************************************!*\
- !*** ./node_modules/jszip/lib/stream/StreamHelper.js ***!
- \*******************************************************/
/***/ (function(module, exports, __webpack_require__) {
"use strict";
/* WEBPACK VAR INJECTION */(function(Buffer) {
-var utils = __webpack_require__(/*! ../utils */ 32);
-var ConvertWorker = __webpack_require__(/*! ./ConvertWorker */ 151);
-var GenericWorker = __webpack_require__(/*! ./GenericWorker */ 38);
-var base64 = __webpack_require__(/*! ../base64 */ 105);
-var support = __webpack_require__(/*! ../support */ 50);
-var external = __webpack_require__(/*! ../external */ 58);
+var utils = __webpack_require__(31);
+var ConvertWorker = __webpack_require__(151);
+var GenericWorker = __webpack_require__(39);
+var base64 = __webpack_require__(105);
+var support = __webpack_require__(49);
+var external = __webpack_require__(57);
var NodejsStreamOutputAdapter = null;
if (support.nodestream) {
try {
- NodejsStreamOutputAdapter = __webpack_require__(/*! ../nodejs/NodejsStreamOutputAdapter */ 150);
+ NodejsStreamOutputAdapter = __webpack_require__(150);
} catch(e) {}
}
@@ -66684,17 +66878,14 @@ StreamHelper.prototype = {
module.exports = StreamHelper;
-/* WEBPACK VAR INJECTION */}.call(this, __webpack_require__(/*! ./../../../buffer/index.js */ 61).Buffer))
+/* WEBPACK VAR INJECTION */}.call(this, __webpack_require__(60).Buffer))
/***/ }),
/* 101 */
-/*!********************************************************************************!*\
- !*** ./node_modules/jszip/node_modules/core-js/library/modules/_dom-create.js ***!
- \********************************************************************************/
/***/ (function(module, exports, __webpack_require__) {
-var isObject = __webpack_require__(/*! ./_is-object */ 79)
- , document = __webpack_require__(/*! ./_global */ 64).document
+var isObject = __webpack_require__(77)
+ , document = __webpack_require__(62).document
// in old IE typeof document.createElement is 'object'
, is = isObject(document) && isObject(document.createElement);
module.exports = function(it){
@@ -66703,9 +66894,6 @@ module.exports = function(it){
/***/ }),
/* 102 */
-/*!***************************************************************************!*\
- !*** ./node_modules/jszip/node_modules/core-js/library/modules/_fails.js ***!
- \***************************************************************************/
/***/ (function(module, exports) {
module.exports = function(exec){
@@ -66718,13 +66906,10 @@ module.exports = function(exec){
/***/ }),
/* 103 */
-/*!*************************************************************************!*\
- !*** ./node_modules/jszip/node_modules/core-js/library/modules/_ctx.js ***!
- \*************************************************************************/
/***/ (function(module, exports, __webpack_require__) {
// optional / simple context binding
-var aFunction = __webpack_require__(/*! ./_a-function */ 164);
+var aFunction = __webpack_require__(164);
module.exports = function(fn, that, length){
aFunction(fn);
if(that === undefined)return fn;
@@ -66746,9 +66931,6 @@ module.exports = function(fn, that, length){
/***/ }),
/* 104 */
-/*!**************************************************************************!*\
- !*** ./node_modules/jszip/node_modules/core-js/library/modules/_core.js ***!
- \**************************************************************************/
/***/ (function(module, exports) {
var core = module.exports = {version: '2.3.0'};
@@ -66756,15 +66938,12 @@ if(typeof __e == 'number')__e = core; // eslint-disable-line no-undef
/***/ }),
/* 105 */
-/*!******************************************!*\
- !*** ./node_modules/jszip/lib/base64.js ***!
- \******************************************/
/***/ (function(module, exports, __webpack_require__) {
"use strict";
-var utils = __webpack_require__(/*! ./utils */ 32);
-var support = __webpack_require__(/*! ./support */ 50);
+var utils = __webpack_require__(31);
+var support = __webpack_require__(49);
// private property
var _keyStr = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=";
@@ -66872,9 +67051,6 @@ exports.decode = function(input) {
/***/ }),
/* 106 */
-/*!***************************************************************!*\
- !*** ./node_modules/readable-stream/lib/_stream_transform.js ***!
- \***************************************************************/
/***/ (function(module, exports, __webpack_require__) {
"use strict";
@@ -66945,11 +67121,11 @@ exports.decode = function(input) {
module.exports = Transform;
-var Duplex = __webpack_require__(/*! ./_stream_duplex */ 52);
+var Duplex = __webpack_require__(51);
/*
" +
- "$" + Object(_utils_StringHelperFunctions_js__WEBPACK_IMPORTED_MODULE_21__["formatNumber"])(this.workMoneyGained, 2) + "
" +
- Object(_utils_StringHelperFunctions_js__WEBPACK_IMPORTED_MODULE_21__["formatNumber"])(this.workRepGained, 4) + " reputation for the company
" +
- Object(_utils_StringHelperFunctions_js__WEBPACK_IMPORTED_MODULE_21__["formatNumber"])(this.workHackExpGained, 4) + " hacking exp
" +
- Object(_utils_StringHelperFunctions_js__WEBPACK_IMPORTED_MODULE_21__["formatNumber"])(this.workStrExpGained, 4) + " strength exp
" +
- Object(_utils_StringHelperFunctions_js__WEBPACK_IMPORTED_MODULE_21__["formatNumber"])(this.workDefExpGained, 4) + " defense exp
" +
- Object(_utils_StringHelperFunctions_js__WEBPACK_IMPORTED_MODULE_21__["formatNumber"])(this.workDexExpGained, 4) + " dexterity exp
" +
- Object(_utils_StringHelperFunctions_js__WEBPACK_IMPORTED_MODULE_21__["formatNumber"])(this.workAgiExpGained, 4) + " agility exp
" +
- Object(_utils_StringHelperFunctions_js__WEBPACK_IMPORTED_MODULE_21__["formatNumber"])(this.workChaExpGained, 4) + " charisma exp
";
-
- if (cancelled) {
- txt = "You worked a short shift of " + Object(_utils_StringHelperFunctions_js__WEBPACK_IMPORTED_MODULE_21__["convertTimeMsToTimeElapsedString"])(this.timeWorked) + "
" +
- "Since you cancelled your work early, you only gained half of the reputation you earned.
" + txt;
- } else {
- txt = "You worked a full shift of 8 hours!
" + txt;
- }
- if (!sing) {Object(_utils_DialogBox_js__WEBPACK_IMPORTED_MODULE_16__["dialogBoxCreate"])(txt);}
-
- var mainMenu = document.getElementById("mainmenu-container");
- mainMenu.style.visibility = "visible";
- this.isWorking = false;
- _engine_js__WEBPACK_IMPORTED_MODULE_7__["Engine"].loadLocationContent();
-
- if (sing) {
- var res = "You worked a short shift of " + Object(_utils_StringHelperFunctions_js__WEBPACK_IMPORTED_MODULE_21__["convertTimeMsToTimeElapsedString"])(this.timeWorked) + " and " +
- "earned $" + Object(_utils_StringHelperFunctions_js__WEBPACK_IMPORTED_MODULE_21__["formatNumber"])(this.workMoneyGained, 2) + ", " +
- Object(_utils_StringHelperFunctions_js__WEBPACK_IMPORTED_MODULE_21__["formatNumber"])(this.workRepGained, 4) + " reputation, " +
- Object(_utils_StringHelperFunctions_js__WEBPACK_IMPORTED_MODULE_21__["formatNumber"])(this.workHackExpGained, 4) + " hacking exp, " +
- Object(_utils_StringHelperFunctions_js__WEBPACK_IMPORTED_MODULE_21__["formatNumber"])(this.workStrExpGained, 4) + " strength exp, " +
- Object(_utils_StringHelperFunctions_js__WEBPACK_IMPORTED_MODULE_21__["formatNumber"])(this.workDefExpGained, 4) + " defense exp, " +
- Object(_utils_StringHelperFunctions_js__WEBPACK_IMPORTED_MODULE_21__["formatNumber"])(this.workDexExpGained, 4) + " dexterity exp, " +
- Object(_utils_StringHelperFunctions_js__WEBPACK_IMPORTED_MODULE_21__["formatNumber"])(this.workAgiExpGained, 4) + " agility exp, and " +
- Object(_utils_StringHelperFunctions_js__WEBPACK_IMPORTED_MODULE_21__["formatNumber"])(this.workChaExpGained, 4) + " charisma exp.";
- this.resetWorkStatus();
- return res;
- }
- this.resetWorkStatus();
-}
-
-PlayerObject.prototype.startWork = function() {
- this.resetWorkStatus();
- this.isWorking = true;
- this.workType = _Constants_js__WEBPACK_IMPORTED_MODULE_3__["CONSTANTS"].WorkTypeCompany;
-
- this.workHackExpGainRate = this.getWorkHackExpGain();
- this.workStrExpGainRate = this.getWorkStrExpGain();
- this.workDefExpGainRate = this.getWorkDefExpGain();
- this.workDexExpGainRate = this.getWorkDexExpGain();
- this.workAgiExpGainRate = this.getWorkAgiExpGain();
- this.workChaExpGainRate = this.getWorkChaExpGain();
- this.workRepGainRate = this.getWorkRepGain();
- this.workMoneyGainRate = this.getWorkMoneyGain();
-
- this.timeNeededToCompleteWork = _Constants_js__WEBPACK_IMPORTED_MODULE_3__["CONSTANTS"].MillisecondsPer8Hours;
-
- //Remove all old event listeners from Cancel button
- var newCancelButton = Object(_utils_HelperFunctions_js__WEBPACK_IMPORTED_MODULE_17__["clearEventListeners"])("work-in-progress-cancel-button");
- newCancelButton.innerHTML = "Cancel Work";
- newCancelButton.addEventListener("click", function() {
- Player.finishWork(true);
- return false;
- });
-
- //Display Work In Progress Screen
- _engine_js__WEBPACK_IMPORTED_MODULE_7__["Engine"].loadWorkInProgressContent();
-}
-
-PlayerObject.prototype.work = function(numCycles) {
- this.workRepGainRate = this.getWorkRepGain();
-
- this.workHackExpGained += this.workHackExpGainRate * numCycles;
- this.workStrExpGained += this.workStrExpGainRate * numCycles;
- this.workDefExpGained += this.workDefExpGainRate * numCycles;
- this.workDexExpGained += this.workDexExpGainRate * numCycles;
- this.workAgiExpGained += this.workAgiExpGainRate * numCycles;
- this.workChaExpGained += this.workChaExpGainRate * numCycles;
- this.workRepGained += this.workRepGainRate * numCycles;
- this.workMoneyGained += this.workMoneyGainRate * numCycles;
-
- var cyclesPerSec = 1000 / _engine_js__WEBPACK_IMPORTED_MODULE_7__["Engine"]._idleSpeed;
-
- this.timeWorked += _engine_js__WEBPACK_IMPORTED_MODULE_7__["Engine"]._idleSpeed * numCycles;
-
- //If timeWorked == 8 hours, then finish. You can only gain 8 hours worth of exp and money
- if (this.timeWorked >= _Constants_js__WEBPACK_IMPORTED_MODULE_3__["CONSTANTS"].MillisecondsPer8Hours) {
- var maxCycles = _Constants_js__WEBPACK_IMPORTED_MODULE_3__["CONSTANTS"].GameCyclesPer8Hours;
- this.workHackExpGained = this.workHackExpGainRate * maxCycles;
- this.workStrExpGained = this.workStrExpGainRate * maxCycles;
- this.workDefExpGained = this.workDefExpGainRate * maxCycles;
- this.workDexExpGained = this.workDexExpGainRate * maxCycles;
- this.workAgiExpGained = this.workAgiExpGainRate * maxCycles;
- this.workChaExpGained = this.workChaExpGainRate * maxCycles;
- this.workRepGained = this.workRepGainRate * maxCycles;
- this.workMoneyGained = this.workMoneyGainRate * maxCycles;
- this.finishWork(false);
- return;
- }
-
- var comp = _Company_js__WEBPACK_IMPORTED_MODULE_2__["Companies"][this.companyName], companyRep = "0";
- if (comp == null || !(comp instanceof _Company_js__WEBPACK_IMPORTED_MODULE_2__["Company"])) {
- console.log("ERROR: Could not find Company: " + this.companyName);
- } else {
- companyRep = comp.playerReputation;
- }
-
- var txt = document.getElementById("work-in-progress-text");
- txt.innerHTML = "You are currently working as a " + this.companyPosition.positionName +
- " at " + this.companyName + " (Current Company Reputation: " +
- Object(_utils_StringHelperFunctions_js__WEBPACK_IMPORTED_MODULE_21__["formatNumber"])(companyRep, 0) + ")
" +
- "You have been working for " + Object(_utils_StringHelperFunctions_js__WEBPACK_IMPORTED_MODULE_21__["convertTimeMsToTimeElapsedString"])(this.timeWorked) + "
" +
- "You have earned:
" +
- "$" + Object(_utils_StringHelperFunctions_js__WEBPACK_IMPORTED_MODULE_21__["formatNumber"])(this.workMoneyGained, 2) + " ($" + Object(_utils_StringHelperFunctions_js__WEBPACK_IMPORTED_MODULE_21__["formatNumber"])(this.workMoneyGainRate * cyclesPerSec, 2) + " / sec)
" +
- Object(_utils_StringHelperFunctions_js__WEBPACK_IMPORTED_MODULE_21__["formatNumber"])(this.workRepGained, 4) + " (" + Object(_utils_StringHelperFunctions_js__WEBPACK_IMPORTED_MODULE_21__["formatNumber"])(this.workRepGainRate * cyclesPerSec, 4) + " / sec) reputation for this company
" +
- Object(_utils_StringHelperFunctions_js__WEBPACK_IMPORTED_MODULE_21__["formatNumber"])(this.workHackExpGained, 4) + " (" + Object(_utils_StringHelperFunctions_js__WEBPACK_IMPORTED_MODULE_21__["formatNumber"])(this.workHackExpGainRate * cyclesPerSec, 4) + " / sec) hacking exp
" +
- Object(_utils_StringHelperFunctions_js__WEBPACK_IMPORTED_MODULE_21__["formatNumber"])(this.workStrExpGained, 4) + " (" + Object(_utils_StringHelperFunctions_js__WEBPACK_IMPORTED_MODULE_21__["formatNumber"])(this.workStrExpGainRate * cyclesPerSec, 4) + " / sec) strength exp
" +
- Object(_utils_StringHelperFunctions_js__WEBPACK_IMPORTED_MODULE_21__["formatNumber"])(this.workDefExpGained, 4) + " (" + Object(_utils_StringHelperFunctions_js__WEBPACK_IMPORTED_MODULE_21__["formatNumber"])(this.workDefExpGainRate * cyclesPerSec, 4) + " / sec) defense exp
" +
- Object(_utils_StringHelperFunctions_js__WEBPACK_IMPORTED_MODULE_21__["formatNumber"])(this.workDexExpGained, 4) + " (" + Object(_utils_StringHelperFunctions_js__WEBPACK_IMPORTED_MODULE_21__["formatNumber"])(this.workDexExpGainRate * cyclesPerSec, 4) + " / sec) dexterity exp
" +
- Object(_utils_StringHelperFunctions_js__WEBPACK_IMPORTED_MODULE_21__["formatNumber"])(this.workAgiExpGained, 4) + " (" + Object(_utils_StringHelperFunctions_js__WEBPACK_IMPORTED_MODULE_21__["formatNumber"])(this.workAgiExpGainRate * cyclesPerSec, 4) + " / sec) agility exp
" +
- Object(_utils_StringHelperFunctions_js__WEBPACK_IMPORTED_MODULE_21__["formatNumber"])(this.workChaExpGained, 4) + " (" + Object(_utils_StringHelperFunctions_js__WEBPACK_IMPORTED_MODULE_21__["formatNumber"])(this.workChaExpGainRate * cyclesPerSec, 4) + " / sec) charisma exp
" +
- "You will automatically finish after working for 8 hours. You can cancel earlier if you wish, " +
- "but you will only gain half of the reputation you've earned so far."
-
-}
-
-PlayerObject.prototype.startWorkPartTime = function() {
- this.resetWorkStatus();
- this.isWorking = true;
- this.workType = _Constants_js__WEBPACK_IMPORTED_MODULE_3__["CONSTANTS"].WorkTypeCompanyPartTime;
-
- this.workHackExpGainRate = this.getWorkHackExpGain();
- this.workStrExpGainRate = this.getWorkStrExpGain();
- this.workDefExpGainRate = this.getWorkDefExpGain();
- this.workDexExpGainRate = this.getWorkDexExpGain();
- this.workAgiExpGainRate = this.getWorkAgiExpGain();
- this.workChaExpGainRate = this.getWorkChaExpGain();
- this.workRepGainRate = this.getWorkRepGain();
- this.workMoneyGainRate = this.getWorkMoneyGain();
-
- this.timeNeededToCompleteWork = _Constants_js__WEBPACK_IMPORTED_MODULE_3__["CONSTANTS"].MillisecondsPer8Hours;
-
- var newCancelButton = Object(_utils_HelperFunctions_js__WEBPACK_IMPORTED_MODULE_17__["clearEventListeners"])("work-in-progress-cancel-button");
- newCancelButton.innerHTML = "Stop Working";
- newCancelButton.addEventListener("click", function() {
- Player.finishWorkPartTime();
- return false;
- });
-
- //Display Work In Progress Screen
- _engine_js__WEBPACK_IMPORTED_MODULE_7__["Engine"].loadWorkInProgressContent();
-}
-
-PlayerObject.prototype.workPartTime = function(numCycles) {
- this.workRepGainRate = this.getWorkRepGain();
-
- this.workHackExpGained += this.workHackExpGainRate * numCycles;
- this.workStrExpGained += this.workStrExpGainRate * numCycles;
- this.workDefExpGained += this.workDefExpGainRate * numCycles;
- this.workDexExpGained += this.workDexExpGainRate * numCycles;
- this.workAgiExpGained += this.workAgiExpGainRate * numCycles;
- this.workChaExpGained += this.workChaExpGainRate * numCycles;
- this.workRepGained += this.workRepGainRate * numCycles;
- this.workMoneyGained += this.workMoneyGainRate * numCycles;
-
- var cyclesPerSec = 1000 / _engine_js__WEBPACK_IMPORTED_MODULE_7__["Engine"]._idleSpeed;
-
- this.timeWorked += _engine_js__WEBPACK_IMPORTED_MODULE_7__["Engine"]._idleSpeed * numCycles;
-
- //If timeWorked == 8 hours, then finish. You can only gain 8 hours worth of exp and money
- if (this.timeWorked >= _Constants_js__WEBPACK_IMPORTED_MODULE_3__["CONSTANTS"].MillisecondsPer8Hours) {
- var maxCycles = _Constants_js__WEBPACK_IMPORTED_MODULE_3__["CONSTANTS"].GameCyclesPer8Hours;
- this.workHackExpGained = this.workHackExpGainRate * maxCycles;
- this.workStrExpGained = this.workStrExpGainRate * maxCycles;
- this.workDefExpGained = this.workDefExpGainRate * maxCycles;
- this.workDexExpGained = this.workDexExpGainRate * maxCycles;
- this.workAgiExpGained = this.workAgiExpGainRate * maxCycles;
- this.workChaExpGained = this.workChaExpGainRate * maxCycles;
- this.workRepGained = this.workRepGainRate * maxCycles;
- this.workMoneyGained = this.workMoneyGainRate * maxCycles;
- this.finishWorkPartTime();
- return;
- }
-
- var txt = document.getElementById("work-in-progress-text");
- txt.innerHTML = "You are currently working as a " + this.companyPosition.positionName +
- " at " + Player.companyName + "
" +
- "You have been working for " + Object(_utils_StringHelperFunctions_js__WEBPACK_IMPORTED_MODULE_21__["convertTimeMsToTimeElapsedString"])(this.timeWorked) + "
" +
- "You have earned:
" +
- "$" + Object(_utils_StringHelperFunctions_js__WEBPACK_IMPORTED_MODULE_21__["formatNumber"])(this.workMoneyGained, 2) + " ($" + Object(_utils_StringHelperFunctions_js__WEBPACK_IMPORTED_MODULE_21__["formatNumber"])(this.workMoneyGainRate * cyclesPerSec, 2) + " / sec)
" +
- Object(_utils_StringHelperFunctions_js__WEBPACK_IMPORTED_MODULE_21__["formatNumber"])(this.workRepGained, 4) + " (" + Object(_utils_StringHelperFunctions_js__WEBPACK_IMPORTED_MODULE_21__["formatNumber"])(this.workRepGainRate * cyclesPerSec, 4) + " / sec) reputation for this company
" +
- Object(_utils_StringHelperFunctions_js__WEBPACK_IMPORTED_MODULE_21__["formatNumber"])(this.workHackExpGained, 4) + " (" + Object(_utils_StringHelperFunctions_js__WEBPACK_IMPORTED_MODULE_21__["formatNumber"])(this.workHackExpGainRate * cyclesPerSec, 4) + " / sec) hacking exp
" +
- Object(_utils_StringHelperFunctions_js__WEBPACK_IMPORTED_MODULE_21__["formatNumber"])(this.workStrExpGained, 4) + " (" + Object(_utils_StringHelperFunctions_js__WEBPACK_IMPORTED_MODULE_21__["formatNumber"])(this.workStrExpGainRate * cyclesPerSec, 4) + " / sec) strength exp
" +
- Object(_utils_StringHelperFunctions_js__WEBPACK_IMPORTED_MODULE_21__["formatNumber"])(this.workDefExpGained, 4) + " (" + Object(_utils_StringHelperFunctions_js__WEBPACK_IMPORTED_MODULE_21__["formatNumber"])(this.workDefExpGainRate * cyclesPerSec, 4) + " / sec) defense exp
" +
- Object(_utils_StringHelperFunctions_js__WEBPACK_IMPORTED_MODULE_21__["formatNumber"])(this.workDexExpGained, 4) + " (" + Object(_utils_StringHelperFunctions_js__WEBPACK_IMPORTED_MODULE_21__["formatNumber"])(this.workDexExpGainRate * cyclesPerSec, 4) + " / sec) dexterity exp
" +
- Object(_utils_StringHelperFunctions_js__WEBPACK_IMPORTED_MODULE_21__["formatNumber"])(this.workAgiExpGained, 4) + " (" + Object(_utils_StringHelperFunctions_js__WEBPACK_IMPORTED_MODULE_21__["formatNumber"])(this.workAgiExpGainRate * cyclesPerSec, 4) + " / sec) agility exp
" +
- Object(_utils_StringHelperFunctions_js__WEBPACK_IMPORTED_MODULE_21__["formatNumber"])(this.workChaExpGained, 4) + " (" + Object(_utils_StringHelperFunctions_js__WEBPACK_IMPORTED_MODULE_21__["formatNumber"])(this.workChaExpGainRate * cyclesPerSec, 4) + " / sec) charisma exp
" +
- "You will automatically finish after working for 8 hours. You can cancel earlier if you wish,
" +
- "and there will be no penalty because this is a part-time job.";
-
-}
-
-PlayerObject.prototype.finishWorkPartTime = function(sing=false) {
- this.gainWorkExp();
-
- var company = _Company_js__WEBPACK_IMPORTED_MODULE_2__["Companies"][this.companyName];
- company.playerReputation += (this.workRepGained);
-
- this.gainMoney(this.workMoneyGained);
-
- this.updateSkillLevels();
-
- var txt = "You earned a total of:
" +
- "$" + Object(_utils_StringHelperFunctions_js__WEBPACK_IMPORTED_MODULE_21__["formatNumber"])(this.workMoneyGained, 2) + "
" +
- Object(_utils_StringHelperFunctions_js__WEBPACK_IMPORTED_MODULE_21__["formatNumber"])(this.workRepGained, 4) + " reputation for the company
" +
- Object(_utils_StringHelperFunctions_js__WEBPACK_IMPORTED_MODULE_21__["formatNumber"])(this.workHackExpGained, 4) + " hacking exp
" +
- Object(_utils_StringHelperFunctions_js__WEBPACK_IMPORTED_MODULE_21__["formatNumber"])(this.workStrExpGained, 4) + " strength exp
" +
- Object(_utils_StringHelperFunctions_js__WEBPACK_IMPORTED_MODULE_21__["formatNumber"])(this.workDefExpGained, 4) + " defense exp
" +
- Object(_utils_StringHelperFunctions_js__WEBPACK_IMPORTED_MODULE_21__["formatNumber"])(this.workDexExpGained, 4) + " dexterity exp
" +
- Object(_utils_StringHelperFunctions_js__WEBPACK_IMPORTED_MODULE_21__["formatNumber"])(this.workAgiExpGained, 4) + " agility exp
" +
- Object(_utils_StringHelperFunctions_js__WEBPACK_IMPORTED_MODULE_21__["formatNumber"])(this.workChaExpGained, 4) + " charisma exp
";
- txt = "You worked for " + Object(_utils_StringHelperFunctions_js__WEBPACK_IMPORTED_MODULE_21__["convertTimeMsToTimeElapsedString"])(this.timeWorked) + "
" + txt;
- if (!sing) {Object(_utils_DialogBox_js__WEBPACK_IMPORTED_MODULE_16__["dialogBoxCreate"])(txt);}
-
- var mainMenu = document.getElementById("mainmenu-container");
- mainMenu.style.visibility = "visible";
- this.isWorking = false;
- _engine_js__WEBPACK_IMPORTED_MODULE_7__["Engine"].loadLocationContent();
- if (sing) {
- var res = "You worked for " + Object(_utils_StringHelperFunctions_js__WEBPACK_IMPORTED_MODULE_21__["convertTimeMsToTimeElapsedString"])(this.timeWorked) + " and " +
- "earned a total of " +
- "$" + Object(_utils_StringHelperFunctions_js__WEBPACK_IMPORTED_MODULE_21__["formatNumber"])(this.workMoneyGained, 2) + ", " +
- Object(_utils_StringHelperFunctions_js__WEBPACK_IMPORTED_MODULE_21__["formatNumber"])(this.workRepGained, 4) + " reputation, " +
- Object(_utils_StringHelperFunctions_js__WEBPACK_IMPORTED_MODULE_21__["formatNumber"])(this.workHackExpGained, 4) + " hacking exp, " +
- Object(_utils_StringHelperFunctions_js__WEBPACK_IMPORTED_MODULE_21__["formatNumber"])(this.workStrExpGained, 4) + " strength exp, " +
- Object(_utils_StringHelperFunctions_js__WEBPACK_IMPORTED_MODULE_21__["formatNumber"])(this.workDefExpGained, 4) + " defense exp, " +
- Object(_utils_StringHelperFunctions_js__WEBPACK_IMPORTED_MODULE_21__["formatNumber"])(this.workDexExpGained, 4) + " dexterity exp, " +
- Object(_utils_StringHelperFunctions_js__WEBPACK_IMPORTED_MODULE_21__["formatNumber"])(this.workAgiExpGained, 4) + " agility exp, and " +
- Object(_utils_StringHelperFunctions_js__WEBPACK_IMPORTED_MODULE_21__["formatNumber"])(this.workChaExpGained, 4) + " charisma exp";
- this.resetWorkStatus();
- return res;
- }
- this.resetWorkStatus();
-}
-
-/* Working for Faction */
-PlayerObject.prototype.finishFactionWork = function(cancelled, sing=false) {
- this.gainWorkExp();
-
- var faction = _Faction_js__WEBPACK_IMPORTED_MODULE_8__["Factions"][this.currentWorkFactionName];
- faction.playerReputation += (this.workRepGained);
-
- this.gainMoney(this.workMoneyGained);
-
- this.updateSkillLevels();
-
- var txt = "You worked for your faction " + faction.name + " for a total of " + Object(_utils_StringHelperFunctions_js__WEBPACK_IMPORTED_MODULE_21__["convertTimeMsToTimeElapsedString"])(this.timeWorked) + "
" +
- "You earned a total of:
" +
- "$" + Object(_utils_StringHelperFunctions_js__WEBPACK_IMPORTED_MODULE_21__["formatNumber"])(this.workMoneyGained, 2) + "
" +
- Object(_utils_StringHelperFunctions_js__WEBPACK_IMPORTED_MODULE_21__["formatNumber"])(this.workRepGained, 4) + " reputation for the faction
" +
- Object(_utils_StringHelperFunctions_js__WEBPACK_IMPORTED_MODULE_21__["formatNumber"])(this.workHackExpGained, 4) + " hacking exp
" +
- Object(_utils_StringHelperFunctions_js__WEBPACK_IMPORTED_MODULE_21__["formatNumber"])(this.workStrExpGained, 4) + " strength exp
" +
- Object(_utils_StringHelperFunctions_js__WEBPACK_IMPORTED_MODULE_21__["formatNumber"])(this.workDefExpGained, 4) + " defense exp
" +
- Object(_utils_StringHelperFunctions_js__WEBPACK_IMPORTED_MODULE_21__["formatNumber"])(this.workDexExpGained, 4) + " dexterity exp
" +
- Object(_utils_StringHelperFunctions_js__WEBPACK_IMPORTED_MODULE_21__["formatNumber"])(this.workAgiExpGained, 4) + " agility exp
" +
- Object(_utils_StringHelperFunctions_js__WEBPACK_IMPORTED_MODULE_21__["formatNumber"])(this.workChaExpGained, 4) + " charisma exp
";
- if (!sing) {Object(_utils_DialogBox_js__WEBPACK_IMPORTED_MODULE_16__["dialogBoxCreate"])(txt);}
-
- var mainMenu = document.getElementById("mainmenu-container");
- mainMenu.style.visibility = "visible";
-
- this.isWorking = false;
-
- _engine_js__WEBPACK_IMPORTED_MODULE_7__["Engine"].loadFactionContent();
- Object(_Faction_js__WEBPACK_IMPORTED_MODULE_8__["displayFactionContent"])(faction.name);
- if (sing) {
- var res="You worked for your faction " + faction.name + " for a total of " + Object(_utils_StringHelperFunctions_js__WEBPACK_IMPORTED_MODULE_21__["convertTimeMsToTimeElapsedString"])(this.timeWorked) + ". " +
- "You earned " +
- Object(_utils_StringHelperFunctions_js__WEBPACK_IMPORTED_MODULE_21__["formatNumber"])(this.workRepGained, 4) + " rep, " +
- Object(_utils_StringHelperFunctions_js__WEBPACK_IMPORTED_MODULE_21__["formatNumber"])(this.workHackExpGained, 4) + " hacking exp, " +
- Object(_utils_StringHelperFunctions_js__WEBPACK_IMPORTED_MODULE_21__["formatNumber"])(this.workStrExpGained, 4) + " str exp, " +
- Object(_utils_StringHelperFunctions_js__WEBPACK_IMPORTED_MODULE_21__["formatNumber"])(this.workDefExpGained, 4) + " def exp, " +
- Object(_utils_StringHelperFunctions_js__WEBPACK_IMPORTED_MODULE_21__["formatNumber"])(this.workDexExpGained, 4) + " dex exp, " +
- Object(_utils_StringHelperFunctions_js__WEBPACK_IMPORTED_MODULE_21__["formatNumber"])(this.workAgiExpGained, 4) + " agi exp, and " +
- Object(_utils_StringHelperFunctions_js__WEBPACK_IMPORTED_MODULE_21__["formatNumber"])(this.workChaExpGained, 4) + " cha exp.";
- this.resetWorkStatus();
- return res;
- }
- this.resetWorkStatus();
-}
-
-PlayerObject.prototype.startFactionWork = function(faction) {
- //Update reputation gain rate to account for faction favor
- var favorMult = 1 + (faction.favor / 100);
- if (isNaN(favorMult)) {favorMult = 1;}
- this.workRepGainRate *= favorMult;
- this.workRepGainRate *= _BitNode_js__WEBPACK_IMPORTED_MODULE_1__["BitNodeMultipliers"].FactionWorkRepGain;
-
- this.isWorking = true;
- this.workType = _Constants_js__WEBPACK_IMPORTED_MODULE_3__["CONSTANTS"].WorkTypeFaction;
- this.currentWorkFactionName = faction.name;
-
- this.timeNeededToCompleteWork = _Constants_js__WEBPACK_IMPORTED_MODULE_3__["CONSTANTS"].MillisecondsPer20Hours;
-
- var cancelButton = Object(_utils_HelperFunctions_js__WEBPACK_IMPORTED_MODULE_17__["clearEventListeners"])("work-in-progress-cancel-button");
- cancelButton.innerHTML = "Stop Faction Work";
- cancelButton.addEventListener("click", function() {
- Player.finishFactionWork(true);
- return false;
- });
-
- //Display Work In Progress Screen
- _engine_js__WEBPACK_IMPORTED_MODULE_7__["Engine"].loadWorkInProgressContent();
-}
-
-PlayerObject.prototype.startFactionHackWork = function(faction) {
- this.resetWorkStatus();
-
- this.workHackExpGainRate = .15 * this.hacking_exp_mult * _BitNode_js__WEBPACK_IMPORTED_MODULE_1__["BitNodeMultipliers"].FactionWorkExpGain;
- this.workRepGainRate = this.workRepGainRate = (this.hacking_skill + this.intelligence) / _Constants_js__WEBPACK_IMPORTED_MODULE_3__["CONSTANTS"].MaxSkillLevel * this.faction_rep_mult;
-
- this.factionWorkType = _Constants_js__WEBPACK_IMPORTED_MODULE_3__["CONSTANTS"].FactionWorkHacking;
- this.currentWorkFactionDescription = "carrying out hacking contracts";
-
- this.startFactionWork(faction);
-}
-
-PlayerObject.prototype.startFactionFieldWork = function(faction) {
- this.resetWorkStatus();
-
- this.workHackExpGainRate = .1 * this.hacking_exp_mult * _BitNode_js__WEBPACK_IMPORTED_MODULE_1__["BitNodeMultipliers"].FactionWorkExpGain;
- this.workStrExpGainRate = .1 * this.strength_exp_mult * _BitNode_js__WEBPACK_IMPORTED_MODULE_1__["BitNodeMultipliers"].FactionWorkExpGain;
- this.workDefExpGainRate = .1 * this.defense_exp_mult * _BitNode_js__WEBPACK_IMPORTED_MODULE_1__["BitNodeMultipliers"].FactionWorkExpGain;
- this.workDexExpGainRate = .1 * this.dexterity_exp_mult * _BitNode_js__WEBPACK_IMPORTED_MODULE_1__["BitNodeMultipliers"].FactionWorkExpGain;
- this.workAgiExpGainRate = .1 * this.agility_exp_mult * _BitNode_js__WEBPACK_IMPORTED_MODULE_1__["BitNodeMultipliers"].FactionWorkExpGain;
- this.workChaExpGainRate = .1 * this.charisma_exp_mult * _BitNode_js__WEBPACK_IMPORTED_MODULE_1__["BitNodeMultipliers"].FactionWorkExpGain;
- this.workRepGainRate = this.getFactionFieldWorkRepGain();
-
- this.factionWorkType = _Constants_js__WEBPACK_IMPORTED_MODULE_3__["CONSTANTS"].FactionWorkField;
- this.currentWorkFactionDescription = "carrying out field missions"
-
- this.startFactionWork(faction);
-}
-
-PlayerObject.prototype.startFactionSecurityWork = function(faction) {
- this.resetWorkStatus();
-
- this.workHackExpGainRate = 0.05 * this.hacking_exp_mult * _BitNode_js__WEBPACK_IMPORTED_MODULE_1__["BitNodeMultipliers"].FactionWorkExpGain;
- this.workStrExpGainRate = 0.15 * this.strength_exp_mult * _BitNode_js__WEBPACK_IMPORTED_MODULE_1__["BitNodeMultipliers"].FactionWorkExpGain;
- this.workDefExpGainRate = 0.15 * this.defense_exp_mult * _BitNode_js__WEBPACK_IMPORTED_MODULE_1__["BitNodeMultipliers"].FactionWorkExpGain;
- this.workDexExpGainRate = 0.15 * this.dexterity_exp_mult * _BitNode_js__WEBPACK_IMPORTED_MODULE_1__["BitNodeMultipliers"].FactionWorkExpGain;
- this.workAgiExpGainRate = 0.15 * this.agility_exp_mult * _BitNode_js__WEBPACK_IMPORTED_MODULE_1__["BitNodeMultipliers"].FactionWorkExpGain;
- this.workChaExpGainRate = 0.00 * this.charisma_exp_mult * _BitNode_js__WEBPACK_IMPORTED_MODULE_1__["BitNodeMultipliers"].FactionWorkExpGain;
- this.workRepGainRate = this.getFactionSecurityWorkRepGain();
-
- this.factionWorkType = _Constants_js__WEBPACK_IMPORTED_MODULE_3__["CONSTANTS"].FactionWorkSecurity;
- this.currentWorkFactionDescription = "performing security detail"
-
- this.startFactionWork(faction);
-}
-
-PlayerObject.prototype.workForFaction = function(numCycles) {
- var faction = _Faction_js__WEBPACK_IMPORTED_MODULE_8__["Factions"][this.currentWorkFactionName];
-
- //Constantly update the rep gain rate
- switch (this.factionWorkType) {
- case _Constants_js__WEBPACK_IMPORTED_MODULE_3__["CONSTANTS"].FactionWorkHacking:
- this.workRepGainRate = (this.hacking_skill + this.intelligence) / _Constants_js__WEBPACK_IMPORTED_MODULE_3__["CONSTANTS"].MaxSkillLevel * this.faction_rep_mult;
- break;
- case _Constants_js__WEBPACK_IMPORTED_MODULE_3__["CONSTANTS"].FactionWorkField:
- this.workRepGainRate = this.getFactionFieldWorkRepGain();
- break;
- case _Constants_js__WEBPACK_IMPORTED_MODULE_3__["CONSTANTS"].FactionWorkSecurity:
- this.workRepGainRate = this.getFactionSecurityWorkRepGain();
- break;
- default:
- break;
- }
-
- //Update reputation gain rate to account for faction favor
- var favorMult = 1 + (faction.favor / 100);
- if (isNaN(favorMult)) {favorMult = 1;}
- this.workRepGainRate *= favorMult;
- this.workRepGainRate *= _BitNode_js__WEBPACK_IMPORTED_MODULE_1__["BitNodeMultipliers"].FactionWorkRepGain;
-
- this.workHackExpGained += this.workHackExpGainRate * numCycles;
- this.workStrExpGained += this.workStrExpGainRate * numCycles;
- this.workDefExpGained += this.workDefExpGainRate * numCycles;
- this.workDexExpGained += this.workDexExpGainRate * numCycles;
- this.workAgiExpGained += this.workAgiExpGainRate * numCycles;
- this.workChaExpGained += this.workChaExpGainRate * numCycles;
- this.workRepGained += this.workRepGainRate * numCycles;
- this.workMoneyGained += this.workMoneyGainRate * numCycles;
-
- var cyclesPerSec = 1000 / _engine_js__WEBPACK_IMPORTED_MODULE_7__["Engine"]._idleSpeed;
-
- this.timeWorked += _engine_js__WEBPACK_IMPORTED_MODULE_7__["Engine"]._idleSpeed * numCycles;
-
- //If timeWorked == 20 hours, then finish. You can only work for the faction for 20 hours
- if (this.timeWorked >= _Constants_js__WEBPACK_IMPORTED_MODULE_3__["CONSTANTS"].MillisecondsPer20Hours) {
- var maxCycles = _Constants_js__WEBPACK_IMPORTED_MODULE_3__["CONSTANTS"].GameCyclesPer20Hours;
- this.timeWorked = _Constants_js__WEBPACK_IMPORTED_MODULE_3__["CONSTANTS"].MillisecondsPer20Hours;
- this.workHackExpGained = this.workHackExpGainRate * maxCycles;
- this.workStrExpGained = this.workStrExpGainRate * maxCycles;
- this.workDefExpGained = this.workDefExpGainRate * maxCycles;
- this.workDexExpGained = this.workDexExpGainRate * maxCycles;
- this.workAgiExpGained = this.workAgiExpGainRate * maxCycles;
- this.workChaExpGained = this.workChaExpGainRate * maxCycles;
- this.workRepGained = this.workRepGainRate * maxCycles;
- this.workMoneyGained = this.workMoneyGainRate * maxCycles;
- this.finishFactionWork(false);
- }
-
- var txt = document.getElementById("work-in-progress-text");
- txt.innerHTML = "You are currently " + this.currentWorkFactionDescription + " for your faction " + faction.name +
- " (Current Faction Reputation: " + Object(_utils_StringHelperFunctions_js__WEBPACK_IMPORTED_MODULE_21__["formatNumber"])(faction.playerReputation, 0) + "). " +
- "You have been doing this for " + Object(_utils_StringHelperFunctions_js__WEBPACK_IMPORTED_MODULE_21__["convertTimeMsToTimeElapsedString"])(this.timeWorked) + "
" +
- "You have earned:
" +
- "$" + Object(_utils_StringHelperFunctions_js__WEBPACK_IMPORTED_MODULE_21__["formatNumber"])(this.workMoneyGained, 2) + " (" + Object(_utils_StringHelperFunctions_js__WEBPACK_IMPORTED_MODULE_21__["formatNumber"])(this.workMoneyGainRate * cyclesPerSec, 2) + " / sec)
" +
- Object(_utils_StringHelperFunctions_js__WEBPACK_IMPORTED_MODULE_21__["formatNumber"])(this.workRepGained, 4) + " (" + Object(_utils_StringHelperFunctions_js__WEBPACK_IMPORTED_MODULE_21__["formatNumber"])(this.workRepGainRate * cyclesPerSec, 4) + " / sec) reputation for this faction
" +
- Object(_utils_StringHelperFunctions_js__WEBPACK_IMPORTED_MODULE_21__["formatNumber"])(this.workHackExpGained, 4) + " (" + Object(_utils_StringHelperFunctions_js__WEBPACK_IMPORTED_MODULE_21__["formatNumber"])(this.workHackExpGainRate * cyclesPerSec, 4) + " / sec) hacking exp
" +
- Object(_utils_StringHelperFunctions_js__WEBPACK_IMPORTED_MODULE_21__["formatNumber"])(this.workStrExpGained, 4) + " (" + Object(_utils_StringHelperFunctions_js__WEBPACK_IMPORTED_MODULE_21__["formatNumber"])(this.workStrExpGainRate * cyclesPerSec, 4) + " / sec) strength exp
" +
- Object(_utils_StringHelperFunctions_js__WEBPACK_IMPORTED_MODULE_21__["formatNumber"])(this.workDefExpGained, 4) + " (" + Object(_utils_StringHelperFunctions_js__WEBPACK_IMPORTED_MODULE_21__["formatNumber"])(this.workDefExpGainRate * cyclesPerSec, 4) + " / sec) defense exp
" +
- Object(_utils_StringHelperFunctions_js__WEBPACK_IMPORTED_MODULE_21__["formatNumber"])(this.workDexExpGained, 4) + " (" + Object(_utils_StringHelperFunctions_js__WEBPACK_IMPORTED_MODULE_21__["formatNumber"])(this.workDexExpGainRate * cyclesPerSec, 4) + " / sec) dexterity exp
" +
- Object(_utils_StringHelperFunctions_js__WEBPACK_IMPORTED_MODULE_21__["formatNumber"])(this.workAgiExpGained, 4) + " (" + Object(_utils_StringHelperFunctions_js__WEBPACK_IMPORTED_MODULE_21__["formatNumber"])(this.workAgiExpGainRate * cyclesPerSec, 4) + " / sec) agility exp
" +
- Object(_utils_StringHelperFunctions_js__WEBPACK_IMPORTED_MODULE_21__["formatNumber"])(this.workChaExpGained, 4) + " (" + Object(_utils_StringHelperFunctions_js__WEBPACK_IMPORTED_MODULE_21__["formatNumber"])(this.workChaExpGainRate * cyclesPerSec, 4) + " / sec) charisma exp
" +
-
- "You will automatically finish after working for 20 hours. You can cancel earlier if you wish.
" +
- "There is no penalty for cancelling earlier.";
-}
-
-
-//Money gained per game cycle
-PlayerObject.prototype.getWorkMoneyGain = function() {
- var bn11Mult = 1;
- var company = _Company_js__WEBPACK_IMPORTED_MODULE_2__["Companies"][this.companyName];
- if (_NetscriptFunctions_js__WEBPACK_IMPORTED_MODULE_11__["hasBn11SF"]) {
- bn11Mult = 1 + (company.favor / 100);
- }
- return this.companyPosition.baseSalary * company.salaryMultiplier *
- this.work_money_mult * _BitNode_js__WEBPACK_IMPORTED_MODULE_1__["BitNodeMultipliers"].CompanyWorkMoney * bn11Mult;
-}
-
-//Hack exp gained per game cycle
-PlayerObject.prototype.getWorkHackExpGain = function() {
- var company = _Company_js__WEBPACK_IMPORTED_MODULE_2__["Companies"][this.companyName];
- return this.companyPosition.hackingExpGain * company.expMultiplier *
- this.hacking_exp_mult * _BitNode_js__WEBPACK_IMPORTED_MODULE_1__["BitNodeMultipliers"].CompanyWorkExpGain;
-}
-
-//Str exp gained per game cycle
-PlayerObject.prototype.getWorkStrExpGain = function() {
- var company = _Company_js__WEBPACK_IMPORTED_MODULE_2__["Companies"][this.companyName];
- return this.companyPosition.strengthExpGain * company.expMultiplier *
- this.strength_exp_mult * _BitNode_js__WEBPACK_IMPORTED_MODULE_1__["BitNodeMultipliers"].CompanyWorkExpGain;
-}
-
-//Def exp gained per game cycle
-PlayerObject.prototype.getWorkDefExpGain = function() {
- var company = _Company_js__WEBPACK_IMPORTED_MODULE_2__["Companies"][this.companyName];
- return this.companyPosition.defenseExpGain * company.expMultiplier *
- this.defense_exp_mult * _BitNode_js__WEBPACK_IMPORTED_MODULE_1__["BitNodeMultipliers"].CompanyWorkExpGain;
-}
-
-//Dex exp gained per game cycle
-PlayerObject.prototype.getWorkDexExpGain = function() {
- var company = _Company_js__WEBPACK_IMPORTED_MODULE_2__["Companies"][this.companyName];
- return this.companyPosition.dexterityExpGain * company.expMultiplier *
- this.dexterity_exp_mult * _BitNode_js__WEBPACK_IMPORTED_MODULE_1__["BitNodeMultipliers"].CompanyWorkExpGain;
-}
-
-//Agi exp gained per game cycle
-PlayerObject.prototype.getWorkAgiExpGain = function() {
- var company = _Company_js__WEBPACK_IMPORTED_MODULE_2__["Companies"][this.companyName];
- return this.companyPosition.agilityExpGain * company.expMultiplier *
- this.agility_exp_mult * _BitNode_js__WEBPACK_IMPORTED_MODULE_1__["BitNodeMultipliers"].CompanyWorkExpGain;
-}
-
-//Charisma exp gained per game cycle
-PlayerObject.prototype.getWorkChaExpGain = function() {
- var company = _Company_js__WEBPACK_IMPORTED_MODULE_2__["Companies"][this.companyName];
- return this.companyPosition.charismaExpGain * company.expMultiplier *
- this.charisma_exp_mult * _BitNode_js__WEBPACK_IMPORTED_MODULE_1__["BitNodeMultipliers"].CompanyWorkExpGain;
-}
-
-//Reputation gained per game cycle
-PlayerObject.prototype.getWorkRepGain = function() {
- var company = _Company_js__WEBPACK_IMPORTED_MODULE_2__["Companies"][this.companyName];
- var jobPerformance = this.companyPosition.calculateJobPerformance(this.hacking_skill, this.strength,
- this.defense, this.dexterity,
- this.agility, this.charisma);
-
- //Intelligence provides a flat bonus to job performance
- jobPerformance += (this.intelligence / _Constants_js__WEBPACK_IMPORTED_MODULE_3__["CONSTANTS"].MaxSkillLevel);
-
- //Update reputation gain rate to account for company favor
- var favorMult = 1 + (company.favor / 100);
- if (isNaN(favorMult)) {favorMult = 1;}
- return jobPerformance * this.company_rep_mult * favorMult;
-}
-
-PlayerObject.prototype.getFactionSecurityWorkRepGain = function() {
- var t = 0.9 * (this.hacking_skill / _Constants_js__WEBPACK_IMPORTED_MODULE_3__["CONSTANTS"].MaxSkillLevel +
- this.strength / _Constants_js__WEBPACK_IMPORTED_MODULE_3__["CONSTANTS"].MaxSkillLevel +
- this.defense / _Constants_js__WEBPACK_IMPORTED_MODULE_3__["CONSTANTS"].MaxSkillLevel +
- this.dexterity / _Constants_js__WEBPACK_IMPORTED_MODULE_3__["CONSTANTS"].MaxSkillLevel +
- this.agility / _Constants_js__WEBPACK_IMPORTED_MODULE_3__["CONSTANTS"].MaxSkillLevel) / 4.5;
- return t * this.faction_rep_mult;
-}
-
-PlayerObject.prototype.getFactionFieldWorkRepGain = function() {
- var t = 0.9 * (this.hacking_skill / _Constants_js__WEBPACK_IMPORTED_MODULE_3__["CONSTANTS"].MaxSkillLevel +
- this.strength / _Constants_js__WEBPACK_IMPORTED_MODULE_3__["CONSTANTS"].MaxSkillLevel +
- this.defense / _Constants_js__WEBPACK_IMPORTED_MODULE_3__["CONSTANTS"].MaxSkillLevel +
- this.dexterity / _Constants_js__WEBPACK_IMPORTED_MODULE_3__["CONSTANTS"].MaxSkillLevel +
- this.agility / _Constants_js__WEBPACK_IMPORTED_MODULE_3__["CONSTANTS"].MaxSkillLevel +
- this.charisma / _Constants_js__WEBPACK_IMPORTED_MODULE_3__["CONSTANTS"].MaxSkillLevel +
- this.intelligence / _Constants_js__WEBPACK_IMPORTED_MODULE_3__["CONSTANTS"].MaxSkillLevel) / 5.5;
- return t * this.faction_rep_mult;
-}
-
-/* Creating a Program */
-PlayerObject.prototype.startCreateProgramWork = function(programName, time, reqLevel) {
- this.resetWorkStatus();
- this.isWorking = true;
- this.workType = _Constants_js__WEBPACK_IMPORTED_MODULE_3__["CONSTANTS"].WorkTypeCreateProgram;
-
- //Time needed to complete work affected by hacking skill (linearly based on
- //ratio of (your skill - required level) to MAX skill)
- //var timeMultiplier = (CONSTANTS.MaxSkillLevel - (this.hacking_skill - reqLevel)) / CONSTANTS.MaxSkillLevel;
- //if (timeMultiplier > 1) {timeMultiplier = 1;}
- //if (timeMultiplier < 0.01) {timeMultiplier = 0.01;}
- this.createProgramReqLvl = reqLevel;
-
- this.timeNeededToCompleteWork = time;
- //Check for incomplete program
- for (var i = 0; i < this.getHomeComputer().programs.length; ++i) {
- var programFile = this.getHomeComputer().programs[i];
- if (programFile.startsWith(programName) && programFile.endsWith("%-INC")) {
- var res = programFile.split("-");
- if (res.length != 3) {break;}
- var percComplete = Number(res[1].slice(0, -1));
- if (isNaN(percComplete) || percComplete < 0 || percComplete >= 100) {break;}
- this.timeWorkedCreateProgram = percComplete / 100 * this.timeNeededToCompleteWork;
- this.getHomeComputer().programs.splice(i, 1);
- }
- }
-
- this.createProgramName = programName;
-
- var cancelButton = Object(_utils_HelperFunctions_js__WEBPACK_IMPORTED_MODULE_17__["clearEventListeners"])("work-in-progress-cancel-button");
- cancelButton.innerHTML = "Cancel work on creating program";
- cancelButton.addEventListener("click", function() {
- Player.finishCreateProgramWork(true);
- return false;
- });
-
- //Display Work In Progress Screen
- _engine_js__WEBPACK_IMPORTED_MODULE_7__["Engine"].loadWorkInProgressContent();
-}
-
-PlayerObject.prototype.createProgramWork = function(numCycles) {
- //Higher hacking skill will allow you to create programs faster
- var reqLvl = this.createProgramReqLvl;
- var skillMult = (this.hacking_skill / reqLvl); //This should always be greater than 1;
- skillMult = 1 + ((skillMult - 1) / 5); //The divider constant can be adjusted as necessary
-
- //Skill multiplier directly applied to "time worked"
- this.timeWorked += (_engine_js__WEBPACK_IMPORTED_MODULE_7__["Engine"]._idleSpeed * numCycles);
- this.timeWorkedCreateProgram += (_engine_js__WEBPACK_IMPORTED_MODULE_7__["Engine"]._idleSpeed * numCycles * skillMult);
- var programName = this.createProgramName;
-
- if (this.timeWorkedCreateProgram >= this.timeNeededToCompleteWork) {
- this.finishCreateProgramWork(false);
- }
-
- var txt = document.getElementById("work-in-progress-text");
- txt.innerHTML = "You are currently working on coding " + programName + ".
" +
- "You have been working for " + Object(_utils_StringHelperFunctions_js__WEBPACK_IMPORTED_MODULE_21__["convertTimeMsToTimeElapsedString"])(this.timeWorked) + "
" +
- "The program is " + (this.timeWorkedCreateProgram / this.timeNeededToCompleteWork * 100).toFixed(2) + "% complete.
" +
- "If you cancel, your work will be saved and you can come back to complete the program later.";
-}
-
-PlayerObject.prototype.finishCreateProgramWork = function(cancelled, sing=false) {
- var programName = this.createProgramName;
- if (cancelled === false) {
- Object(_utils_DialogBox_js__WEBPACK_IMPORTED_MODULE_16__["dialogBoxCreate"])("You've finished creating " + programName + "!
" +
- "The new program can be found on your home computer.");
-
- this.getHomeComputer().programs.push(programName);
- } else {
- var perc = (Math.floor(this.timeWorkedCreateProgram / this.timeNeededToCompleteWork * 10000)/100).toString();
- var incompleteName = programName + "-" + perc + "%-INC";
- this.getHomeComputer().programs.push(incompleteName);
- }
-
- if (!cancelled) {
- this.gainIntelligenceExp(this.createProgramReqLvl / _Constants_js__WEBPACK_IMPORTED_MODULE_3__["CONSTANTS"].IntelligenceProgramBaseExpGain);
- }
-
- var mainMenu = document.getElementById("mainmenu-container");
- mainMenu.style.visibility = "visible";
-
- this.isWorking = false;
-
- _engine_js__WEBPACK_IMPORTED_MODULE_7__["Engine"].loadTerminalContent();
- this.resetWorkStatus();
-}
-
-/* Studying/Taking Classes */
-PlayerObject.prototype.startClass = function(costMult, expMult, className) {
- this.resetWorkStatus();
- this.isWorking = true;
- this.workType = _Constants_js__WEBPACK_IMPORTED_MODULE_3__["CONSTANTS"].WorkTypeStudyClass;
-
- this.className = className;
-
- var gameCPS = 1000 / _engine_js__WEBPACK_IMPORTED_MODULE_7__["Engine"]._idleSpeed;
-
- //Base exp gains per second
- var baseStudyComputerScienceExp = 0.5;
- var baseDataStructuresExp = 1;
- var baseNetworksExp = 2;
- var baseAlgorithmsExp = 4;
- var baseManagementExp = 2;
- var baseLeadershipExp = 4;
- var baseGymExp = 1;
-
- //Find cost and exp gain per game cycle
- var cost = 0;
- var hackExp = 0, strExp = 0, defExp = 0, dexExp = 0, agiExp = 0, chaExp = 0;
- switch (className) {
- case _Constants_js__WEBPACK_IMPORTED_MODULE_3__["CONSTANTS"].ClassStudyComputerScience:
- hackExp = baseStudyComputerScienceExp * expMult / gameCPS;
- break;
- case _Constants_js__WEBPACK_IMPORTED_MODULE_3__["CONSTANTS"].ClassDataStructures:
- cost = _Constants_js__WEBPACK_IMPORTED_MODULE_3__["CONSTANTS"].ClassDataStructuresBaseCost * costMult / gameCPS;
- hackExp = baseDataStructuresExp * expMult / gameCPS;
- break;
- case _Constants_js__WEBPACK_IMPORTED_MODULE_3__["CONSTANTS"].ClassNetworks:
- cost = _Constants_js__WEBPACK_IMPORTED_MODULE_3__["CONSTANTS"].ClassNetworksBaseCost * costMult / gameCPS;
- hackExp = baseNetworksExp * expMult / gameCPS;
- break;
- case _Constants_js__WEBPACK_IMPORTED_MODULE_3__["CONSTANTS"].ClassAlgorithms:
- cost = _Constants_js__WEBPACK_IMPORTED_MODULE_3__["CONSTANTS"].ClassAlgorithmsBaseCost * costMult / gameCPS;
- hackExp = baseAlgorithmsExp * expMult / gameCPS;
- break;
- case _Constants_js__WEBPACK_IMPORTED_MODULE_3__["CONSTANTS"].ClassManagement:
- cost = _Constants_js__WEBPACK_IMPORTED_MODULE_3__["CONSTANTS"].ClassManagementBaseCost * costMult / gameCPS;
- chaExp = baseManagementExp * expMult / gameCPS;
- break;
- case _Constants_js__WEBPACK_IMPORTED_MODULE_3__["CONSTANTS"].ClassLeadership:
- cost = _Constants_js__WEBPACK_IMPORTED_MODULE_3__["CONSTANTS"].ClassLeadershipBaseCost * costMult / gameCPS;
- chaExp = baseLeadershipExp * expMult / gameCPS;
- break;
- case _Constants_js__WEBPACK_IMPORTED_MODULE_3__["CONSTANTS"].ClassGymStrength:
- cost = _Constants_js__WEBPACK_IMPORTED_MODULE_3__["CONSTANTS"].ClassGymBaseCost * costMult / gameCPS;
- strExp = baseGymExp * expMult / gameCPS;
- break;
- case _Constants_js__WEBPACK_IMPORTED_MODULE_3__["CONSTANTS"].ClassGymDefense:
- cost = _Constants_js__WEBPACK_IMPORTED_MODULE_3__["CONSTANTS"].ClassGymBaseCost * costMult / gameCPS;
- defExp = baseGymExp * expMult / gameCPS;
- break;
- case _Constants_js__WEBPACK_IMPORTED_MODULE_3__["CONSTANTS"].ClassGymDexterity:
- cost = _Constants_js__WEBPACK_IMPORTED_MODULE_3__["CONSTANTS"].ClassGymBaseCost * costMult / gameCPS;
- dexExp = baseGymExp * expMult / gameCPS;
- break;
- case _Constants_js__WEBPACK_IMPORTED_MODULE_3__["CONSTANTS"].ClassGymAgility:
- cost = _Constants_js__WEBPACK_IMPORTED_MODULE_3__["CONSTANTS"].ClassGymBaseCost * costMult / gameCPS;
- agiExp = baseGymExp * expMult / gameCPS;
- break;
- default:
- throw new Error("ERR: Invalid/unrecognized class name");
- return;
- }
-
- this.workMoneyLossRate = cost;
- this.workHackExpGainRate = hackExp * this.hacking_exp_mult * _BitNode_js__WEBPACK_IMPORTED_MODULE_1__["BitNodeMultipliers"].ClassGymExpGain;
- this.workStrExpGainRate = strExp * this.strength_exp_mult * _BitNode_js__WEBPACK_IMPORTED_MODULE_1__["BitNodeMultipliers"].ClassGymExpGain;;
- this.workDefExpGainRate = defExp * this.defense_exp_mult * _BitNode_js__WEBPACK_IMPORTED_MODULE_1__["BitNodeMultipliers"].ClassGymExpGain;;
- this.workDexExpGainRate = dexExp * this.dexterity_exp_mult * _BitNode_js__WEBPACK_IMPORTED_MODULE_1__["BitNodeMultipliers"].ClassGymExpGain;;
- this.workAgiExpGainRate = agiExp * this.agility_exp_mult * _BitNode_js__WEBPACK_IMPORTED_MODULE_1__["BitNodeMultipliers"].ClassGymExpGain;;
- this.workChaExpGainRate = chaExp * this.charisma_exp_mult * _BitNode_js__WEBPACK_IMPORTED_MODULE_1__["BitNodeMultipliers"].ClassGymExpGain;;
-
- var cancelButton = Object(_utils_HelperFunctions_js__WEBPACK_IMPORTED_MODULE_17__["clearEventListeners"])("work-in-progress-cancel-button");
- if (className == _Constants_js__WEBPACK_IMPORTED_MODULE_3__["CONSTANTS"].ClassGymStrength ||
- className == _Constants_js__WEBPACK_IMPORTED_MODULE_3__["CONSTANTS"].ClassGymDefense ||
- className == _Constants_js__WEBPACK_IMPORTED_MODULE_3__["CONSTANTS"].ClassGymDexterity ||
- className == _Constants_js__WEBPACK_IMPORTED_MODULE_3__["CONSTANTS"].ClassGymAgility) {
- cancelButton.innerHTML = "Stop training at gym";
- } else {
- cancelButton.innerHTML = "Stop taking course";
- }
- cancelButton.addEventListener("click", function() {
- Player.finishClass();
- return false;
- });
-
- //Display Work In Progress Screen
- _engine_js__WEBPACK_IMPORTED_MODULE_7__["Engine"].loadWorkInProgressContent();
-}
-
-PlayerObject.prototype.takeClass = function(numCycles) {
- this.timeWorked += _engine_js__WEBPACK_IMPORTED_MODULE_7__["Engine"]._idleSpeed * numCycles;
- var className = this.className;
-
- this.workHackExpGained += this.workHackExpGainRate * numCycles;
- this.workStrExpGained += this.workStrExpGainRate * numCycles;
- this.workDefExpGained += this.workDefExpGainRate * numCycles;
- this.workDexExpGained += this.workDexExpGainRate * numCycles;
- this.workAgiExpGained += this.workAgiExpGainRate * numCycles;
- this.workChaExpGained += this.workChaExpGainRate * numCycles;
- this.workRepGained += this.workRepGainRate * numCycles;
- this.workMoneyGained += this.workMoneyGainRate * numCycles;
- this.workMoneyGained -= this.workMoneyLossRate * numCycles;
-
- var cyclesPerSec = 1000 / _engine_js__WEBPACK_IMPORTED_MODULE_7__["Engine"]._idleSpeed;
-
- var txt = document.getElementById("work-in-progress-text");
- txt.innerHTML = "You have been " + className + " for " + Object(_utils_StringHelperFunctions_js__WEBPACK_IMPORTED_MODULE_21__["convertTimeMsToTimeElapsedString"])(this.timeWorked) + "
" +
- "This has cost you:
" +
- "$" + Object(_utils_StringHelperFunctions_js__WEBPACK_IMPORTED_MODULE_21__["formatNumber"])(this.workMoneyGained, 2) + " ($" + Object(_utils_StringHelperFunctions_js__WEBPACK_IMPORTED_MODULE_21__["formatNumber"])(this.workMoneyLossRate * cyclesPerSec, 2) + " / sec)
" +
- "You have gained:
" +
- Object(_utils_StringHelperFunctions_js__WEBPACK_IMPORTED_MODULE_21__["formatNumber"])(this.workHackExpGained, 4) + " (" + Object(_utils_StringHelperFunctions_js__WEBPACK_IMPORTED_MODULE_21__["formatNumber"])(this.workHackExpGainRate * cyclesPerSec, 4) + " / sec) hacking exp
" +
- Object(_utils_StringHelperFunctions_js__WEBPACK_IMPORTED_MODULE_21__["formatNumber"])(this.workStrExpGained, 4) + " (" + Object(_utils_StringHelperFunctions_js__WEBPACK_IMPORTED_MODULE_21__["formatNumber"])(this.workStrExpGainRate * cyclesPerSec, 4) + " / sec) strength exp
" +
- Object(_utils_StringHelperFunctions_js__WEBPACK_IMPORTED_MODULE_21__["formatNumber"])(this.workDefExpGained, 4) + " (" + Object(_utils_StringHelperFunctions_js__WEBPACK_IMPORTED_MODULE_21__["formatNumber"])(this.workDefExpGainRate * cyclesPerSec, 4) + " / sec) defense exp
" +
- Object(_utils_StringHelperFunctions_js__WEBPACK_IMPORTED_MODULE_21__["formatNumber"])(this.workDexExpGained, 4) + " (" + Object(_utils_StringHelperFunctions_js__WEBPACK_IMPORTED_MODULE_21__["formatNumber"])(this.workDexExpGainRate * cyclesPerSec, 4) + " / sec) dexterity exp
" +
- Object(_utils_StringHelperFunctions_js__WEBPACK_IMPORTED_MODULE_21__["formatNumber"])(this.workAgiExpGained, 4) + " (" + Object(_utils_StringHelperFunctions_js__WEBPACK_IMPORTED_MODULE_21__["formatNumber"])(this.workAgiExpGainRate * cyclesPerSec, 4) + " / sec) agility exp
" +
- Object(_utils_StringHelperFunctions_js__WEBPACK_IMPORTED_MODULE_21__["formatNumber"])(this.workChaExpGained, 4) + " (" + Object(_utils_StringHelperFunctions_js__WEBPACK_IMPORTED_MODULE_21__["formatNumber"])(this.workChaExpGainRate * cyclesPerSec, 4) + " / sec) charisma exp
" +
- "You may cancel at any time";
-}
-
-//The 'sing' argument defines whether or not this function was called
-//through a Singularity Netscript function
-PlayerObject.prototype.finishClass = function(sing=false) {
- this.gainWorkExp();
- this.gainIntelligenceExp(_Constants_js__WEBPACK_IMPORTED_MODULE_3__["CONSTANTS"].IntelligenceClassBaseExpGain * Math.round(this.timeWorked / 1000));
-
- if (this.workMoneyGained > 0) {
- throw new Error("ERR: Somehow gained money while taking class");
- }
- this.loseMoney(this.workMoneyGained * -1);
-
- this.updateSkillLevels();
- var txt = "After " + this.className + " for " + Object(_utils_StringHelperFunctions_js__WEBPACK_IMPORTED_MODULE_21__["convertTimeMsToTimeElapsedString"])(this.timeWorked) + ",
" +
- "you spent a total of $" + Object(_utils_StringHelperFunctions_js__WEBPACK_IMPORTED_MODULE_21__["formatNumber"])(this.workMoneyGained * -1, 2) + ".
" +
- "You earned a total of:
" +
- Object(_utils_StringHelperFunctions_js__WEBPACK_IMPORTED_MODULE_21__["formatNumber"])(this.workHackExpGained, 4) + " hacking exp
" +
- Object(_utils_StringHelperFunctions_js__WEBPACK_IMPORTED_MODULE_21__["formatNumber"])(this.workStrExpGained, 4) + " strength exp
" +
- Object(_utils_StringHelperFunctions_js__WEBPACK_IMPORTED_MODULE_21__["formatNumber"])(this.workDefExpGained, 4) + " defense exp
" +
- Object(_utils_StringHelperFunctions_js__WEBPACK_IMPORTED_MODULE_21__["formatNumber"])(this.workDexExpGained, 4) + " dexterity exp
" +
- Object(_utils_StringHelperFunctions_js__WEBPACK_IMPORTED_MODULE_21__["formatNumber"])(this.workAgiExpGained, 4) + " agility exp
" +
- Object(_utils_StringHelperFunctions_js__WEBPACK_IMPORTED_MODULE_21__["formatNumber"])(this.workChaExpGained, 4) + " charisma exp
";
- if (!sing) {Object(_utils_DialogBox_js__WEBPACK_IMPORTED_MODULE_16__["dialogBoxCreate"])(txt);}
-
- var mainMenu = document.getElementById("mainmenu-container");
- mainMenu.style.visibility = "visible";
-
- this.isWorking = false;
-
- _engine_js__WEBPACK_IMPORTED_MODULE_7__["Engine"].loadLocationContent();
- if (sing) {
- var res="After " + this.className + " for " + Object(_utils_StringHelperFunctions_js__WEBPACK_IMPORTED_MODULE_21__["convertTimeMsToTimeElapsedString"])(this.timeWorked) + ", " +
- "you spent a total of $" + Object(_utils_StringHelperFunctions_js__WEBPACK_IMPORTED_MODULE_21__["formatNumber"])(this.workMoneyGained * -1, 2) + ". " +
- "You earned a total of: " +
- Object(_utils_StringHelperFunctions_js__WEBPACK_IMPORTED_MODULE_21__["formatNumber"])(this.workHackExpGained, 3) + " hacking exp, " +
- Object(_utils_StringHelperFunctions_js__WEBPACK_IMPORTED_MODULE_21__["formatNumber"])(this.workStrExpGained, 3) + " strength exp, " +
- Object(_utils_StringHelperFunctions_js__WEBPACK_IMPORTED_MODULE_21__["formatNumber"])(this.workDefExpGained, 3) + " defense exp, " +
- Object(_utils_StringHelperFunctions_js__WEBPACK_IMPORTED_MODULE_21__["formatNumber"])(this.workDexExpGained, 3) + " dexterity exp, " +
- Object(_utils_StringHelperFunctions_js__WEBPACK_IMPORTED_MODULE_21__["formatNumber"])(this.workAgiExpGained, 3) + " agility exp, and " +
- Object(_utils_StringHelperFunctions_js__WEBPACK_IMPORTED_MODULE_21__["formatNumber"])(this.workChaExpGained, 3) + " charisma exp";
- this.resetWorkStatus();
- return res;
- }
- this.resetWorkStatus();
-}
-
-//The EXP and $ gains are hardcoded. Time is in ms
-PlayerObject.prototype.startCrime = function(hackExp, strExp, defExp, dexExp, agiExp, chaExp, money, time, singParams=null) {
- this.resetWorkStatus();
- this.isWorking = true;
- this.workType = _Constants_js__WEBPACK_IMPORTED_MODULE_3__["CONSTANTS"].WorkTypeCrime;
-
- if (singParams && singParams.workerscript) {
- this.committingCrimeThruSingFn = true;
- this.singFnCrimeWorkerScript = singParams.workerscript;
- }
-
- this.workHackExpGained = hackExp * this.hacking_exp_mult * _BitNode_js__WEBPACK_IMPORTED_MODULE_1__["BitNodeMultipliers"].CrimeExpGain;
- this.workStrExpGained = strExp * this.strength_exp_mult * _BitNode_js__WEBPACK_IMPORTED_MODULE_1__["BitNodeMultipliers"].CrimeExpGain;
- this.workDefExpGained = defExp * this.defense_exp_mult * _BitNode_js__WEBPACK_IMPORTED_MODULE_1__["BitNodeMultipliers"].CrimeExpGain;
- this.workDexExpGained = dexExp * this.dexterity_exp_mult * _BitNode_js__WEBPACK_IMPORTED_MODULE_1__["BitNodeMultipliers"].CrimeExpGain;
- this.workAgiExpGained = agiExp * this.agility_exp_mult * _BitNode_js__WEBPACK_IMPORTED_MODULE_1__["BitNodeMultipliers"].CrimeExpGain;
- this.workChaExpGained = chaExp * this.charisma_exp_mult * _BitNode_js__WEBPACK_IMPORTED_MODULE_1__["BitNodeMultipliers"].CrimeExpGain;
- this.workMoneyGained = money * this.crime_money_mult * _BitNode_js__WEBPACK_IMPORTED_MODULE_1__["BitNodeMultipliers"].CrimeMoney;
-
- this.timeNeededToCompleteWork = time;
-
- //Remove all old event listeners from Cancel button
- var newCancelButton = Object(_utils_HelperFunctions_js__WEBPACK_IMPORTED_MODULE_17__["clearEventListeners"])("work-in-progress-cancel-button")
- newCancelButton.innerHTML = "Cancel crime"
- newCancelButton.addEventListener("click", function() {
- Player.finishCrime(true);
- return false;
- });
-
- //Display Work In Progress Screen
- _engine_js__WEBPACK_IMPORTED_MODULE_7__["Engine"].loadWorkInProgressContent();
-}
-
-PlayerObject.prototype.commitCrime = function (numCycles) {
- this.timeWorked += _engine_js__WEBPACK_IMPORTED_MODULE_7__["Engine"]._idleSpeed * numCycles;
-
- if (this.timeWorked >= this.timeNeededToCompleteWork) {this.finishCrime(false); return;}
-
- var percent = Math.round(this.timeWorked / this.timeNeededToCompleteWork * 100);
- var numBars = Math.round(percent / 5);
- if (numBars < 0) {numBars = 0;}
- if (numBars > 20) {numBars = 20;}
- var progressBar = "[" + Array(numBars+1).join("|") + Array(20 - numBars + 1).join(" ") + "]";
-
- var txt = document.getElementById("work-in-progress-text");
- txt.innerHTML = "You are attempting to " + this.crimeType + ".
" +
- "Time remaining: " + Object(_utils_StringHelperFunctions_js__WEBPACK_IMPORTED_MODULE_21__["convertTimeMsToTimeElapsedString"])(this.timeNeededToCompleteWork - this.timeWorked) + "
" +
- progressBar.replace( / /g, " " );
-}
-
-PlayerObject.prototype.finishCrime = function(cancelled) {
- //Determine crime success/failure
- if (!cancelled) {
- var statusText = ""; //TODO, unique message for each crime when you succeed
- if (Object(_Crimes_js__WEBPACK_IMPORTED_MODULE_6__["determineCrimeSuccess"])(this.crimeType, this.workMoneyGained)) {
- //Handle Karma and crime statistics
- switch(this.crimeType) {
- case _Constants_js__WEBPACK_IMPORTED_MODULE_3__["CONSTANTS"].CrimeShoplift:
- this.karma -= 0.1;
- break;
- case _Constants_js__WEBPACK_IMPORTED_MODULE_3__["CONSTANTS"].CrimeRobStore:
- this.karma -= 0.5;
- this.gainIntelligenceExp(0.25 * _Constants_js__WEBPACK_IMPORTED_MODULE_3__["CONSTANTS"].IntelligenceCrimeBaseExpGain);
- break;
- case _Constants_js__WEBPACK_IMPORTED_MODULE_3__["CONSTANTS"].CrimeMug:
- this.karma -= 0.25;
- break;
- case _Constants_js__WEBPACK_IMPORTED_MODULE_3__["CONSTANTS"].CrimeLarceny:
- this.karma -= 1.5;
- this.gainIntelligenceExp(0.5 * _Constants_js__WEBPACK_IMPORTED_MODULE_3__["CONSTANTS"].IntelligenceCrimeBaseExpGain);
- break;
- case _Constants_js__WEBPACK_IMPORTED_MODULE_3__["CONSTANTS"].CrimeDrugs:
- this.karma -= 0.5;
- break;
- case _Constants_js__WEBPACK_IMPORTED_MODULE_3__["CONSTANTS"].CrimeBondForgery:
- this.karma -= 0.1;
- this.gainIntelligenceExp(2 * _Constants_js__WEBPACK_IMPORTED_MODULE_3__["CONSTANTS"].IntelligenceCrimeBaseExpGain);
- break;
- case _Constants_js__WEBPACK_IMPORTED_MODULE_3__["CONSTANTS"].CrimeTraffickArms:
- this.karma -= 1;
- break;
- case _Constants_js__WEBPACK_IMPORTED_MODULE_3__["CONSTANTS"].CrimeHomicide:
- ++this.numPeopleKilled;
- this.karma -= 3;
- break;
- case _Constants_js__WEBPACK_IMPORTED_MODULE_3__["CONSTANTS"].CrimeGrandTheftAuto:
- this.karma -= 5;
- this.gainIntelligenceExp(_Constants_js__WEBPACK_IMPORTED_MODULE_3__["CONSTANTS"].IntelligenceCrimeBaseExpGain);
- break;
- case _Constants_js__WEBPACK_IMPORTED_MODULE_3__["CONSTANTS"].CrimeKidnap:
- this.karma -= 6;
- this.gainIntelligenceExp(2 * _Constants_js__WEBPACK_IMPORTED_MODULE_3__["CONSTANTS"].IntelligenceCrimeBaseExpGain);
- break;
- case _Constants_js__WEBPACK_IMPORTED_MODULE_3__["CONSTANTS"].CrimeAssassination:
- ++this.numPeopleKilled;
- this.karma -= 10;
- this.gainIntelligenceExp(5 * _Constants_js__WEBPACK_IMPORTED_MODULE_3__["CONSTANTS"].IntelligenceCrimeBaseExpGain);
- break;
- case _Constants_js__WEBPACK_IMPORTED_MODULE_3__["CONSTANTS"].CrimeHeist:
- this.karma -= 15;
- this.gainIntelligenceExp(10 * _Constants_js__WEBPACK_IMPORTED_MODULE_3__["CONSTANTS"].IntelligenceCrimeBaseExpGain);
- break;
- default:
- console.log(this.crimeType);
- Object(_utils_DialogBox_js__WEBPACK_IMPORTED_MODULE_16__["dialogBoxCreate"])("ERR: Unrecognized crime type. This is probably a bug please contact the developer");
- return;
- }
-
- //On a crime success, gain 2x exp
- this.workHackExpGained *= 2;
- this.workStrExpGained *= 2;
- this.workDefExpGained *= 2;
- this.workDexExpGained *= 2;
- this.workAgiExpGained *= 2;
- this.workChaExpGained *= 2;
- if (this.committingCrimeThruSingFn) {
- if(this.singFnCrimeWorkerScript.disableLogs.ALL == null && this.singFnCrimeWorkerScript.disableLogs.commitCrime == null) {
- this.singFnCrimeWorkerScript.scriptRef.log("Crime successful! Gained " +
- _utils_numeral_min_js__WEBPACK_IMPORTED_MODULE_20___default()(this.workMoneyGained).format("$0.000a") + ", " +
- Object(_utils_StringHelperFunctions_js__WEBPACK_IMPORTED_MODULE_21__["formatNumber"])(this.workHackExpGained, 3) + " hack exp, " +
- Object(_utils_StringHelperFunctions_js__WEBPACK_IMPORTED_MODULE_21__["formatNumber"])(this.workStrExpGained, 3) + " str exp, " +
- Object(_utils_StringHelperFunctions_js__WEBPACK_IMPORTED_MODULE_21__["formatNumber"])(this.workDefExpGained, 3) + " def exp, " +
- Object(_utils_StringHelperFunctions_js__WEBPACK_IMPORTED_MODULE_21__["formatNumber"])(this.workDexExpGained, 3) + " dex exp, " +
- Object(_utils_StringHelperFunctions_js__WEBPACK_IMPORTED_MODULE_21__["formatNumber"])(this.workAgiExpGained, 3) + " agi exp, " +
- Object(_utils_StringHelperFunctions_js__WEBPACK_IMPORTED_MODULE_21__["formatNumber"])(this.workChaExpGained, 3) + " cha exp.");
- }
- } else {
- Object(_utils_DialogBox_js__WEBPACK_IMPORTED_MODULE_16__["dialogBoxCreate"])("Crime successful!
" +
- "You gained:
"+
- "$" + Object(_utils_StringHelperFunctions_js__WEBPACK_IMPORTED_MODULE_21__["formatNumber"])(this.workMoneyGained, 2) + "
" +
- Object(_utils_StringHelperFunctions_js__WEBPACK_IMPORTED_MODULE_21__["formatNumber"])(this.workHackExpGained, 4) + " hacking experience
" +
- Object(_utils_StringHelperFunctions_js__WEBPACK_IMPORTED_MODULE_21__["formatNumber"])(this.workStrExpGained, 4) + " strength experience
" +
- Object(_utils_StringHelperFunctions_js__WEBPACK_IMPORTED_MODULE_21__["formatNumber"])(this.workDefExpGained, 4) + " defense experience
" +
- Object(_utils_StringHelperFunctions_js__WEBPACK_IMPORTED_MODULE_21__["formatNumber"])(this.workDexExpGained, 4) + " dexterity experience
" +
- Object(_utils_StringHelperFunctions_js__WEBPACK_IMPORTED_MODULE_21__["formatNumber"])(this.workAgiExpGained, 4) + " agility experience
" +
- Object(_utils_StringHelperFunctions_js__WEBPACK_IMPORTED_MODULE_21__["formatNumber"])(this.workChaExpGained, 4) + " charisma experience");
- }
-
- } else {
- //Exp halved on failure
- this.workHackExpGained /= 2;
- this.workStrExpGained /= 2;
- this.workDefExpGained /= 2;
- this.workDexExpGained /= 2;
- this.workAgiExpGained /= 2;
- this.workChaExpGained /= 2;
- if (this.committingCrimeThruSingFn) {
- if(this.singFnCrimeWorkerScript.disableLogs.ALL == null && this.singFnCrimeWorkerScript.disableLogs.commitCrime == null) {
- this.singFnCrimeWorkerScript.scriptRef.log("Crime failed! Gained " +
- Object(_utils_StringHelperFunctions_js__WEBPACK_IMPORTED_MODULE_21__["formatNumber"])(this.workHackExpGained, 3) + " hack exp, " +
- Object(_utils_StringHelperFunctions_js__WEBPACK_IMPORTED_MODULE_21__["formatNumber"])(this.workStrExpGained, 3) + " str exp, " +
- Object(_utils_StringHelperFunctions_js__WEBPACK_IMPORTED_MODULE_21__["formatNumber"])(this.workDefExpGained, 3) + " def exp, " +
- Object(_utils_StringHelperFunctions_js__WEBPACK_IMPORTED_MODULE_21__["formatNumber"])(this.workDexExpGained, 3) + " dex exp, " +
- Object(_utils_StringHelperFunctions_js__WEBPACK_IMPORTED_MODULE_21__["formatNumber"])(this.workAgiExpGained, 3) + " agi exp, " +
- Object(_utils_StringHelperFunctions_js__WEBPACK_IMPORTED_MODULE_21__["formatNumber"])(this.workChaExpGained, 3) + " cha exp.");
- }
- } else {
- Object(_utils_DialogBox_js__WEBPACK_IMPORTED_MODULE_16__["dialogBoxCreate"])("Crime failed!
" +
- "You gained:
"+
- Object(_utils_StringHelperFunctions_js__WEBPACK_IMPORTED_MODULE_21__["formatNumber"])(this.workHackExpGained, 4) + " hacking experience
" +
- Object(_utils_StringHelperFunctions_js__WEBPACK_IMPORTED_MODULE_21__["formatNumber"])(this.workStrExpGained, 4) + " strength experience
" +
- Object(_utils_StringHelperFunctions_js__WEBPACK_IMPORTED_MODULE_21__["formatNumber"])(this.workDefExpGained, 4) + " defense experience
" +
- Object(_utils_StringHelperFunctions_js__WEBPACK_IMPORTED_MODULE_21__["formatNumber"])(this.workDexExpGained, 4) + " dexterity experience
" +
- Object(_utils_StringHelperFunctions_js__WEBPACK_IMPORTED_MODULE_21__["formatNumber"])(this.workAgiExpGained, 4) + " agility experience
" +
- Object(_utils_StringHelperFunctions_js__WEBPACK_IMPORTED_MODULE_21__["formatNumber"])(this.workChaExpGained, 4) + " charisma experience");
- }
- }
-
- this.gainWorkExp();
- }
- this.committingCrimeThruSingFn = false;
- this.singFnCrimeWorkerScript = null;
- var mainMenu = document.getElementById("mainmenu-container");
- mainMenu.style.visibility = "visible";
- this.isWorking = false;
- this.resetWorkStatus();
- _engine_js__WEBPACK_IMPORTED_MODULE_7__["Engine"].loadLocationContent();
-}
-
-//Cancels the player's current "work" assignment and gives the proper rewards
-//Used only for Singularity functions, so no popups are created
-PlayerObject.prototype.singularityStopWork = function() {
- if (!this.isWorking) {return "";}
- var res; //Earnings text for work
- switch (this.workType) {
- case _Constants_js__WEBPACK_IMPORTED_MODULE_3__["CONSTANTS"].WorkTypeStudyClass:
- res = this.finishClass(true);
- break;
- case _Constants_js__WEBPACK_IMPORTED_MODULE_3__["CONSTANTS"].WorkTypeCompany:
- res = this.finishWork(true, true);
- break;
- case _Constants_js__WEBPACK_IMPORTED_MODULE_3__["CONSTANTS"].WorkTypeCompanyPartTime:
- res = this.finishWorkPartTime(true);
- break;
- case _Constants_js__WEBPACK_IMPORTED_MODULE_3__["CONSTANTS"].WorkTypeFaction:
- res = this.finishFactionWork(true, true);
- break;
- case _Constants_js__WEBPACK_IMPORTED_MODULE_3__["CONSTANTS"].WorkTypeCreateProgram:
- res = this.finishCreateProgramWork(true, true);
- break;
- case _Constants_js__WEBPACK_IMPORTED_MODULE_3__["CONSTANTS"].WorkTypeCrime:
- res = this.finishCrime(true);
- break;
- default:
- console.log("ERROR: Unrecognized work type");
- return "";
- }
- return res;
-}
-
-
-//Returns true if hospitalized, false otherwise
-PlayerObject.prototype.takeDamage = function(amt) {
- this.hp -= amt;
- if (this.hp <= 0) {
- this.hospitalize();
- return true;
- } else {
- return false;
- }
-}
-
-PlayerObject.prototype.hospitalize = function() {
- Object(_utils_DialogBox_js__WEBPACK_IMPORTED_MODULE_16__["dialogBoxCreate"])("You were in critical condition! You were taken to the hospital where " +
- "luckily they were able to save your life. You were charged $" +
- Object(_utils_StringHelperFunctions_js__WEBPACK_IMPORTED_MODULE_21__["formatNumber"])(this.max_hp * _Constants_js__WEBPACK_IMPORTED_MODULE_3__["CONSTANTS"].HospitalCostPerHp, 2));
- this.loseMoney(this.max_hp * _Constants_js__WEBPACK_IMPORTED_MODULE_3__["CONSTANTS"].HospitalCostPerHp);
- this.hp = this.max_hp;
-}
-
-/********* Company job application **********/
-//Determines the job that the Player should get (if any) at the current company
-//The 'sing' argument designates whether or not this is being called from
-//the applyToCompany() Netscript Singularity function
-PlayerObject.prototype.applyForJob = function(entryPosType, sing=false) {
- var currCompany = "";
- if (this.companyName != "") {
- currCompany = _Company_js__WEBPACK_IMPORTED_MODULE_2__["Companies"][this.companyName];
- }
- var currPositionName = "";
- if (this.companyPosition != "") {
- currPositionName = this.companyPosition.positionName;
- }
- var company = _Company_js__WEBPACK_IMPORTED_MODULE_2__["Companies"][this.location]; //Company being applied to
- if (sing && !(company instanceof _Company_js__WEBPACK_IMPORTED_MODULE_2__["Company"])) {
- return "ERROR: Invalid company name: " + this.location + ". applyToCompany() failed";
- }
-
- var pos = entryPosType;
-
- if (!this.isQualified(company, pos)) {
- var reqText = Object(_Company_js__WEBPACK_IMPORTED_MODULE_2__["getJobRequirementText"])(company, pos);
- if (sing) {return false;}
- Object(_utils_DialogBox_js__WEBPACK_IMPORTED_MODULE_16__["dialogBoxCreate"])("Unforunately, you do not qualify for this position
" + reqText);
- return;
- }
-
- while (true) {
- if (_engine_js__WEBPACK_IMPORTED_MODULE_7__["Engine"].Debug) {console.log("Determining qualification for next Company Position");}
- var newPos = Object(_Company_js__WEBPACK_IMPORTED_MODULE_2__["getNextCompanyPosition"])(pos);
- if (newPos == null) {break;}
-
- //Check if this company has this position
- if (company.hasPosition(newPos)) {
- if (!this.isQualified(company, newPos)) {
- //If player not qualified for next job, break loop so player will be given current job
- break;
- }
- pos = newPos;
- } else {
- break;
- }
- }
-
- //Check if the determined job is the same as the player's current job
- if (currCompany != "") {
- if (currCompany.companyName == company.companyName &&
- pos.positionName == currPositionName) {
- var nextPos = Object(_Company_js__WEBPACK_IMPORTED_MODULE_2__["getNextCompanyPosition"])(pos);
- if (nextPos == null) {
- if (sing) {return false;}
- Object(_utils_DialogBox_js__WEBPACK_IMPORTED_MODULE_16__["dialogBoxCreate"])("You are already at the highest position for your field! No promotion available");
- } else if (company.hasPosition(nextPos)) {
- if (sing) {return false;}
- var reqText = Object(_Company_js__WEBPACK_IMPORTED_MODULE_2__["getJobRequirementText"])(company, nextPos);
- Object(_utils_DialogBox_js__WEBPACK_IMPORTED_MODULE_16__["dialogBoxCreate"])("Unfortunately, you do not qualify for a promotion
" + reqText);
- } else {
- if (sing) {return false;}
- Object(_utils_DialogBox_js__WEBPACK_IMPORTED_MODULE_16__["dialogBoxCreate"])("You are already at the highest position for your field! No promotion available");
- }
- return; //Same job, do nothing
- }
- }
-
-
- //Lose reputation from a Company if you are leaving it for another job
- var leaveCompany = false;
- var oldCompanyName = "";
- if (currCompany != "") {
- if (currCompany.companyName != company.companyName) {
- leaveCompany = true;
- oldCompanyName = currCompany.companyName;
- company.playerReputation -= 1000;
- if (company.playerReputation < 0) {company.playerReputation = 0;}
- }
- }
-
- this.companyName = company.companyName;
- this.companyPosition = pos;
-
- if (this.firstJobRecvd === false) {
- this.firstJobRecvd = true;
- document.getElementById("job-tab").style.display = "list-item";
- document.getElementById("world-menu-header").click();
- document.getElementById("world-menu-header").click();
- }
-
- if (leaveCompany) {
- if (sing) {return true;}
- Object(_utils_DialogBox_js__WEBPACK_IMPORTED_MODULE_16__["dialogBoxCreate"])("Congratulations! You were offered a new job at " + this.companyName + " as a " +
- pos.positionName + "!
" +
- "You lost 1000 reputation at your old company " + oldCompanyName + " because you left.");
- } else {
- if (sing) {return true;}
- Object(_utils_DialogBox_js__WEBPACK_IMPORTED_MODULE_16__["dialogBoxCreate"])("Congratulations! You were offered a new job at " + this.companyName + " as a " + pos.positionName + "!");
- }
-
- _engine_js__WEBPACK_IMPORTED_MODULE_7__["Engine"].loadLocationContent();
-}
-
-//Returns your next position at a company given the field (software, business, etc.)
-PlayerObject.prototype.getNextCompanyPosition = function(company, entryPosType) {
- var currCompany = null;
- if (this.companyName != "") {
- currCompany = _Company_js__WEBPACK_IMPORTED_MODULE_2__["Companies"][this.companyName];
- }
-
- //Not employed at this company, so return the entry position
- if (currCompany == null || (currCompany.companyName != company.companyName)) {
- return entryPosType;
- }
-
- //If the entry pos type and the player's current position have the same type,
- //return the player's "nextCompanyPosition". Otherwise return the 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()) ||
- (this.companyPosition.isAgentJob() && entryPosType.isAgentJob()) ||
- (this.companyPosition.isSoftwareConsultantJob() && entryPosType.isSoftwareConsultantJob()) ||
- (this.companyPosition.isBusinessConsultantJob() && entryPosType.isBusinessConsultantJob()) ||
- (this.companyPosition.isPartTimeJob() && entryPosType.isPartTimeJob())) {
- return Object(_Company_js__WEBPACK_IMPORTED_MODULE_2__["getNextCompanyPosition"])(this.companyPosition);
- }
-
-
- return entryPosType;
-}
-
-PlayerObject.prototype.applyForSoftwareJob = function(sing=false) {
- return this.applyForJob(_Company_js__WEBPACK_IMPORTED_MODULE_2__["CompanyPositions"].SoftwareIntern, sing);
-}
-
-PlayerObject.prototype.applyForSoftwareConsultantJob = function(sing=false) {
- return this.applyForJob(_Company_js__WEBPACK_IMPORTED_MODULE_2__["CompanyPositions"].SoftwareConsultant, sing);
-}
-
-PlayerObject.prototype.applyForItJob = function(sing=false) {
- return this.applyForJob(_Company_js__WEBPACK_IMPORTED_MODULE_2__["CompanyPositions"].ITIntern, sing);
-}
-
-PlayerObject.prototype.applyForSecurityEngineerJob = function(sing=false) {
- var company = _Company_js__WEBPACK_IMPORTED_MODULE_2__["Companies"][this.location]; //Company being applied to
- if (this.isQualified(company, _Company_js__WEBPACK_IMPORTED_MODULE_2__["CompanyPositions"].SecurityEngineer)) {
- return this.applyForJob(_Company_js__WEBPACK_IMPORTED_MODULE_2__["CompanyPositions"].SecurityEngineer, sing);
- } else {
- if (sing) {return false;}
- Object(_utils_DialogBox_js__WEBPACK_IMPORTED_MODULE_16__["dialogBoxCreate"])("Unforunately, you do not qualify for this position");
- }
-}
-
-PlayerObject.prototype.applyForNetworkEngineerJob = function(sing=false) {
- var company = _Company_js__WEBPACK_IMPORTED_MODULE_2__["Companies"][this.location]; //Company being applied to
- if (this.isQualified(company, _Company_js__WEBPACK_IMPORTED_MODULE_2__["CompanyPositions"].NetworkEngineer)) {
- return this.applyForJob(_Company_js__WEBPACK_IMPORTED_MODULE_2__["CompanyPositions"].NetworkEngineer, sing);
- } else {
- if (sing) {return false;}
- Object(_utils_DialogBox_js__WEBPACK_IMPORTED_MODULE_16__["dialogBoxCreate"])("Unforunately, you do not qualify for this position");
- }
-}
-
-PlayerObject.prototype.applyForBusinessJob = function(sing=false) {
- return this.applyForJob(_Company_js__WEBPACK_IMPORTED_MODULE_2__["CompanyPositions"].BusinessIntern, sing);
-}
-
-PlayerObject.prototype.applyForBusinessConsultantJob = function(sing=false) {
- return this.applyForJob(_Company_js__WEBPACK_IMPORTED_MODULE_2__["CompanyPositions"].BusinessConsultant, sing);
-}
-
-PlayerObject.prototype.applyForSecurityJob = function(sing=false) {
- //TODO If case for POlice departments
- return this.applyForJob(_Company_js__WEBPACK_IMPORTED_MODULE_2__["CompanyPositions"].SecurityGuard, sing);
-}
-
-PlayerObject.prototype.applyForAgentJob = function(sing=false) {
- var company = _Company_js__WEBPACK_IMPORTED_MODULE_2__["Companies"][this.location]; //Company being applied to
- if (this.isQualified(company, _Company_js__WEBPACK_IMPORTED_MODULE_2__["CompanyPositions"].FieldAgent)) {
- return this.applyForJob(_Company_js__WEBPACK_IMPORTED_MODULE_2__["CompanyPositions"].FieldAgent, sing);
- } else {
- if (sing) {return false;}
- Object(_utils_DialogBox_js__WEBPACK_IMPORTED_MODULE_16__["dialogBoxCreate"])("Unforunately, you do not qualify for this position");
- }
-}
-
-PlayerObject.prototype.applyForEmployeeJob = function(sing=false) {
- var company = _Company_js__WEBPACK_IMPORTED_MODULE_2__["Companies"][this.location]; //Company being applied to
- if (this.isQualified(company, _Company_js__WEBPACK_IMPORTED_MODULE_2__["CompanyPositions"].Employee)) {
- if (this.firstJobRecvd === false) {
- this.firstJobRecvd = true;
- document.getElementById("job-tab").style.display = "list-item";
- document.getElementById("world-menu-header").click();
- document.getElementById("world-menu-header").click();
- }
- this.companyName = company.companyName;
- this.companyPosition = _Company_js__WEBPACK_IMPORTED_MODULE_2__["CompanyPositions"].Employee;
- if (sing) {return true;}
- Object(_utils_DialogBox_js__WEBPACK_IMPORTED_MODULE_16__["dialogBoxCreate"])("Congratulations, you are now employed at " + this.companyName);
- _engine_js__WEBPACK_IMPORTED_MODULE_7__["Engine"].loadLocationContent();
- } else {
- if (sing) {return false;}
- Object(_utils_DialogBox_js__WEBPACK_IMPORTED_MODULE_16__["dialogBoxCreate"])("Unforunately, you do not qualify for this position");
- }
-}
-
-PlayerObject.prototype.applyForPartTimeEmployeeJob = function(sing=false) {
- var company = _Company_js__WEBPACK_IMPORTED_MODULE_2__["Companies"][this.location]; //Company being applied to
- if (this.isQualified(company, _Company_js__WEBPACK_IMPORTED_MODULE_2__["CompanyPositions"].PartTimeEmployee)) {
- if (this.firstJobRecvd === false) {
- this.firstJobRecvd = true;
- document.getElementById("job-tab").style.display = "list-item";
- document.getElementById("world-menu-header").click();
- document.getElementById("world-menu-header").click();
- }
- this.companyName = company.companyName;
- this.companyPosition = _Company_js__WEBPACK_IMPORTED_MODULE_2__["CompanyPositions"].PartTimeEmployee;
- if (sing) {return true;}
- Object(_utils_DialogBox_js__WEBPACK_IMPORTED_MODULE_16__["dialogBoxCreate"])("Congratulations, you are now employed part-time at " + this.companyName);
- _engine_js__WEBPACK_IMPORTED_MODULE_7__["Engine"].loadLocationContent();
- } else {
- if (sing) {return false;}
- Object(_utils_DialogBox_js__WEBPACK_IMPORTED_MODULE_16__["dialogBoxCreate"])("Unforunately, you do not qualify for this position");
- }
-}
-
-PlayerObject.prototype.applyForWaiterJob = function(sing=false) {
- var company = _Company_js__WEBPACK_IMPORTED_MODULE_2__["Companies"][this.location]; //Company being applied to
- if (this.isQualified(company, _Company_js__WEBPACK_IMPORTED_MODULE_2__["CompanyPositions"].Waiter)) {
- if (this.firstJobRecvd === false) {
- this.firstJobRecvd = true;
- document.getElementById("job-tab").style.display = "list-item";
- document.getElementById("world-menu-header").click();
- document.getElementById("world-menu-header").click();
- }
- this.companyName = company.companyName;
- this.companyPosition = _Company_js__WEBPACK_IMPORTED_MODULE_2__["CompanyPositions"].Waiter;
- if (sing) {return true;}
- Object(_utils_DialogBox_js__WEBPACK_IMPORTED_MODULE_16__["dialogBoxCreate"])("Congratulations, you are now employed as a waiter at " + this.companyName);
- _engine_js__WEBPACK_IMPORTED_MODULE_7__["Engine"].loadLocationContent();
- } else {
- if (sing) {return false;}
- Object(_utils_DialogBox_js__WEBPACK_IMPORTED_MODULE_16__["dialogBoxCreate"])("Unforunately, you do not qualify for this position");
- }
-}
-
-PlayerObject.prototype.applyForPartTimeWaiterJob = function(sing=false) {
- var company = _Company_js__WEBPACK_IMPORTED_MODULE_2__["Companies"][this.location]; //Company being applied to
- if (this.isQualified(company, _Company_js__WEBPACK_IMPORTED_MODULE_2__["CompanyPositions"].PartTimeWaiter)) {
- if (this.firstJobRecvd === false) {
- this.firstJobRecvd = true;
- document.getElementById("job-tab").style.display = "list-item";
- document.getElementById("world-menu-header").click();
- document.getElementById("world-menu-header").click();
- }
- this.companyName = company.companyName;
- this.companyPosition = _Company_js__WEBPACK_IMPORTED_MODULE_2__["CompanyPositions"].PartTimeWaiter;
- if (sing) {return true;}
- Object(_utils_DialogBox_js__WEBPACK_IMPORTED_MODULE_16__["dialogBoxCreate"])("Congratulations, you are now employed as a part-time waiter at " + this.companyName);
- _engine_js__WEBPACK_IMPORTED_MODULE_7__["Engine"].loadLocationContent();
- } else {
- if (sing) {return false;}
- Object(_utils_DialogBox_js__WEBPACK_IMPORTED_MODULE_16__["dialogBoxCreate"])("Unforunately, you do not qualify for this position");
- }
-}
-
-//Checks if the Player is qualified for a certain position
-PlayerObject.prototype.isQualified = function(company, position) {
- var offset = company.jobStatReqOffset;
- var reqHacking = position.requiredHacking > 0 ? position.requiredHacking+offset : 0;
- var reqStrength = position.requiredStrength > 0 ? position.requiredStrength+offset : 0;
- var reqDefense = position.requiredDefense > 0 ? position.requiredDefense+offset : 0;
- var reqDexterity = position.requiredDexterity > 0 ? position.requiredDexterity+offset : 0;
- var reqAgility = position.requiredDexterity > 0 ? position.requiredDexterity+offset : 0;
- var reqCharisma = position.requiredCharisma > 0 ? position.requiredCharisma+offset : 0;
-
- if (this.hacking_skill >= reqHacking &&
- this.strength >= reqStrength &&
- this.defense >= reqDefense &&
- this.dexterity >= reqDexterity &&
- this.agility >= reqAgility &&
- this.charisma >= reqCharisma &&
- company.playerReputation >= position.requiredReputation) {
- return true;
- }
- return false;
-}
-
-/********** Reapplying Augmentations and Source File ***********/
-PlayerObject.prototype.reapplyAllAugmentations = function(resetMultipliers=true) {
- console.log("Re-applying augmentations");
- if (resetMultipliers) {
- this.resetMultipliers();
- }
-
- for (let i = 0; i < this.augmentations.length; ++i) {
- //Compatibility with new version
- if (this.augmentations[i].name === "HacknetNode NIC Architecture Neural-Upload") {
- this.augmentations[i].name = "Hacknet Node NIC Architecture Neural-Upload";
- }
-
- var augName = this.augmentations[i].name;
- var aug = _Augmentations_js__WEBPACK_IMPORTED_MODULE_0__["Augmentations"][augName];
- if (aug == null) {
- console.log("WARNING: Invalid augmentation name");
- continue;
- }
- aug.owned = true;
- if (aug.name == _Augmentations_js__WEBPACK_IMPORTED_MODULE_0__["AugmentationNames"].NeuroFluxGovernor) {
- for (let j = 0; j < aug.level; ++j) {
- Object(_Augmentations_js__WEBPACK_IMPORTED_MODULE_0__["applyAugmentation"])(this.augmentations[i], true);
- }
- continue;
- }
- Object(_Augmentations_js__WEBPACK_IMPORTED_MODULE_0__["applyAugmentation"])(this.augmentations[i], true);
- }
-}
-
-PlayerObject.prototype.reapplyAllSourceFiles = function() {
- console.log("Re-applying source files");
- //Will always be called after reapplyAllAugmentations() so multipliers do not have to be reset
- //this.resetMultipliers();
-
- for (let i = 0; i < this.sourceFiles.length; ++i) {
- var srcFileKey = "SourceFile" + this.sourceFiles[i].n;
- var sourceFileObject = _SourceFile_js__WEBPACK_IMPORTED_MODULE_14__["SourceFiles"][srcFileKey];
- if (sourceFileObject == null) {
- console.log("ERROR: Invalid source file number: " + this.sourceFiles[i].n);
- continue;
- }
- Object(_SourceFile_js__WEBPACK_IMPORTED_MODULE_14__["applySourceFile"])(this.sourceFiles[i]);
- }
-}
-
-/*************** Check for Faction Invitations *************/
-//This function sets the requirements to join a Faction. It checks whether the Player meets
-//those requirements and will return an array of all factions that the Player should
-//receive an invitation to
-PlayerObject.prototype.checkForFactionInvitations = function() {
- let invitedFactions = []; //Array which will hold all Factions th eplayer should be invited to
-
- var numAugmentations = this.augmentations.length;
-
- var company = _Company_js__WEBPACK_IMPORTED_MODULE_2__["Companies"][this.companyName];
- var companyRep = 0;
- if (company != null) {
- companyRep = company.playerReputation;
- }
-
- //Illuminati
- var illuminatiFac = _Faction_js__WEBPACK_IMPORTED_MODULE_8__["Factions"]["Illuminati"];
- if (!illuminatiFac.isBanned && !illuminatiFac.isMember && !illuminatiFac.alreadyInvited &&
- numAugmentations >= 30 &&
- this.money.gte(150000000000) &&
- this.hacking_skill >= 1500 &&
- this.strength >= 1200 && this.defense >= 1200 &&
- this.dexterity >= 1200 && this.agility >= 1200) {
- invitedFactions.push(illuminatiFac);
- }
-
- //Daedalus
- var daedalusFac = _Faction_js__WEBPACK_IMPORTED_MODULE_8__["Factions"]["Daedalus"];
- if (!daedalusFac.isBanned && !daedalusFac.isMember && !daedalusFac.alreadyInvited &&
- numAugmentations >= 30 &&
- this.money.gte(100000000000) &&
- (this.hacking_skill >= 2500 ||
- (this.strength >= 1500 && this.defense >= 1500 &&
- this.dexterity >= 1500 && this.agility >= 1500))) {
- invitedFactions.push(daedalusFac);
- }
-
- //The Covenant
- var covenantFac = _Faction_js__WEBPACK_IMPORTED_MODULE_8__["Factions"]["The Covenant"];
- if (!covenantFac.isBanned && !covenantFac.isMember && !covenantFac.alreadyInvited &&
- numAugmentations >= 30 &&
- this.money.gte(75000000000) &&
- this.hacking_skill >= 850 &&
- this.strength >= 850 &&
- this.defense >= 850 &&
- this.dexterity >= 850 &&
- this.agility >= 850) {
- invitedFactions.push(covenantFac);
- }
-
- //ECorp
- var ecorpFac = _Faction_js__WEBPACK_IMPORTED_MODULE_8__["Factions"]["ECorp"];
- if (!ecorpFac.isBanned && !ecorpFac.isMember && !ecorpFac.alreadyInvited &&
- this.companyName == _Location_js__WEBPACK_IMPORTED_MODULE_10__["Locations"].AevumECorp && companyRep >= _Constants_js__WEBPACK_IMPORTED_MODULE_3__["CONSTANTS"].CorpFactionRepRequirement) {
- invitedFactions.push(ecorpFac);
- }
-
- //MegaCorp
- var megacorpFac = _Faction_js__WEBPACK_IMPORTED_MODULE_8__["Factions"]["MegaCorp"];
- if (!megacorpFac.isBanned && !megacorpFac.isMember && !megacorpFac.alreadyInvited &&
- this.companyName == _Location_js__WEBPACK_IMPORTED_MODULE_10__["Locations"].Sector12MegaCorp && companyRep >= _Constants_js__WEBPACK_IMPORTED_MODULE_3__["CONSTANTS"].CorpFactionRepRequirement) {
- invitedFactions.push(megacorpFac);
- }
-
- //Bachman & Associates
- var bachmanandassociatesFac = _Faction_js__WEBPACK_IMPORTED_MODULE_8__["Factions"]["Bachman & Associates"];
- if (!bachmanandassociatesFac.isBanned && !bachmanandassociatesFac.isMember &&
- !bachmanandassociatesFac.alreadyInvited &&
- this.companyName == _Location_js__WEBPACK_IMPORTED_MODULE_10__["Locations"].AevumBachmanAndAssociates && companyRep >= _Constants_js__WEBPACK_IMPORTED_MODULE_3__["CONSTANTS"].CorpFactionRepRequirement) {
- invitedFactions.push(bachmanandassociatesFac);
- }
-
- //Blade Industries
- var bladeindustriesFac = _Faction_js__WEBPACK_IMPORTED_MODULE_8__["Factions"]["Blade Industries"];
- if (!bladeindustriesFac.isBanned && !bladeindustriesFac.isMember && !bladeindustriesFac.alreadyInvited &&
- this.companyName == _Location_js__WEBPACK_IMPORTED_MODULE_10__["Locations"].Sector12BladeIndustries && companyRep >= _Constants_js__WEBPACK_IMPORTED_MODULE_3__["CONSTANTS"].CorpFactionRepRequirement) {
- invitedFactions.push(bladeindustriesFac);
- }
-
- //NWO
- var nwoFac = _Faction_js__WEBPACK_IMPORTED_MODULE_8__["Factions"]["NWO"];
- if (!nwoFac.isBanned && !nwoFac.isMember && !nwoFac.alreadyInvited &&
- this.companyName == _Location_js__WEBPACK_IMPORTED_MODULE_10__["Locations"].VolhavenNWO && companyRep >= _Constants_js__WEBPACK_IMPORTED_MODULE_3__["CONSTANTS"].CorpFactionRepRequirement) {
- invitedFactions.push(nwoFac);
- }
-
- //Clarke Incorporated
- var clarkeincorporatedFac = _Faction_js__WEBPACK_IMPORTED_MODULE_8__["Factions"]["Clarke Incorporated"];
- if (!clarkeincorporatedFac.isBanned && !clarkeincorporatedFac.isMember && !clarkeincorporatedFac.alreadyInvited &&
- this.companyName == _Location_js__WEBPACK_IMPORTED_MODULE_10__["Locations"].AevumClarkeIncorporated && companyRep >= _Constants_js__WEBPACK_IMPORTED_MODULE_3__["CONSTANTS"].CorpFactionRepRequirement) {
- invitedFactions.push(clarkeincorporatedFac);
- }
-
- //OmniTek Incorporated
- var omnitekincorporatedFac = _Faction_js__WEBPACK_IMPORTED_MODULE_8__["Factions"]["OmniTek Incorporated"];
- if (!omnitekincorporatedFac.isBanned && !omnitekincorporatedFac.isMember && !omnitekincorporatedFac.alreadyInvited &&
- this.companyName == _Location_js__WEBPACK_IMPORTED_MODULE_10__["Locations"].VolhavenOmniTekIncorporated && companyRep >= _Constants_js__WEBPACK_IMPORTED_MODULE_3__["CONSTANTS"].CorpFactionRepRequirement) {
- invitedFactions.push(omnitekincorporatedFac);
- }
-
- //Four Sigma
- var foursigmaFac = _Faction_js__WEBPACK_IMPORTED_MODULE_8__["Factions"]["Four Sigma"];
- if (!foursigmaFac.isBanned && !foursigmaFac.isMember && !foursigmaFac.alreadyInvited &&
- this.companyName == _Location_js__WEBPACK_IMPORTED_MODULE_10__["Locations"].Sector12FourSigma && companyRep >= _Constants_js__WEBPACK_IMPORTED_MODULE_3__["CONSTANTS"].CorpFactionRepRequirement) {
- invitedFactions.push(foursigmaFac);
- }
-
- //KuaiGong International
- var kuaigonginternationalFac = _Faction_js__WEBPACK_IMPORTED_MODULE_8__["Factions"]["KuaiGong International"];
- if (!kuaigonginternationalFac.isBanned && !kuaigonginternationalFac.isMember &&
- !kuaigonginternationalFac.alreadyInvited &&
- this.companyName == _Location_js__WEBPACK_IMPORTED_MODULE_10__["Locations"].ChongqingKuaiGongInternational && companyRep >= _Constants_js__WEBPACK_IMPORTED_MODULE_3__["CONSTANTS"].CorpFactionRepRequirement) {
- invitedFactions.push(kuaigonginternationalFac);
- }
-
- //Fulcrum Secret Technologies - If u've unlocked fulcrum secret technolgoies server and have a high rep with the company
- var fulcrumsecrettechonologiesFac = _Faction_js__WEBPACK_IMPORTED_MODULE_8__["Factions"]["Fulcrum Secret Technologies"];
- var fulcrumSecretServer = _Server_js__WEBPACK_IMPORTED_MODULE_12__["AllServers"][_SpecialServerIps_js__WEBPACK_IMPORTED_MODULE_13__["SpecialServerIps"][_SpecialServerIps_js__WEBPACK_IMPORTED_MODULE_13__["SpecialServerNames"].FulcrumSecretTechnologies]];
- if (fulcrumSecretServer == null) {
- console.log("ERROR: Could not find Fulcrum Secret Technologies Server");
- } else {
- if (!fulcrumsecrettechonologiesFac.isBanned && !fulcrumsecrettechonologiesFac.isMember &&
- !fulcrumsecrettechonologiesFac.alreadyInvited &&
- fulcrumSecretServer.manuallyHacked &&
- this.companyName == _Location_js__WEBPACK_IMPORTED_MODULE_10__["Locations"].AevumFulcrumTechnologies && companyRep >= 250000) {
- invitedFactions.push(fulcrumsecrettechonologiesFac);
- }
- }
-
- //BitRunners
- var bitrunnersFac = _Faction_js__WEBPACK_IMPORTED_MODULE_8__["Factions"]["BitRunners"];
- var homeComp = this.getHomeComputer();
- var bitrunnersServer = _Server_js__WEBPACK_IMPORTED_MODULE_12__["AllServers"][_SpecialServerIps_js__WEBPACK_IMPORTED_MODULE_13__["SpecialServerIps"][_SpecialServerIps_js__WEBPACK_IMPORTED_MODULE_13__["SpecialServerNames"].BitRunnersServer]];
- if (bitrunnersServer == null) {
- console.log("ERROR: Could not find BitRunners Server");
- } else if (!bitrunnersFac.isBanned && !bitrunnersFac.isMember && bitrunnersServer.manuallyHacked &&
- !bitrunnersFac.alreadyInvited && this.hacking_skill >= 500 && homeComp.maxRam >= 128) {
- invitedFactions.push(bitrunnersFac);
- }
-
- //The Black Hand
- var theblackhandFac = _Faction_js__WEBPACK_IMPORTED_MODULE_8__["Factions"]["The Black Hand"];
- var blackhandServer = _Server_js__WEBPACK_IMPORTED_MODULE_12__["AllServers"][_SpecialServerIps_js__WEBPACK_IMPORTED_MODULE_13__["SpecialServerIps"][_SpecialServerIps_js__WEBPACK_IMPORTED_MODULE_13__["SpecialServerNames"].TheBlackHandServer]];
- if (blackhandServer == null) {
- console.log("ERROR: Could not find The Black Hand Server");
- } else if (!theblackhandFac.isBanned && !theblackhandFac.isMember && blackhandServer.manuallyHacked &&
- !theblackhandFac.alreadyInvited && this.hacking_skill >= 350 && homeComp.maxRam >= 64) {
- invitedFactions.push(theblackhandFac);
- }
-
- //NiteSec
- var nitesecFac = _Faction_js__WEBPACK_IMPORTED_MODULE_8__["Factions"]["NiteSec"];
- var nitesecServer = _Server_js__WEBPACK_IMPORTED_MODULE_12__["AllServers"][_SpecialServerIps_js__WEBPACK_IMPORTED_MODULE_13__["SpecialServerIps"][_SpecialServerIps_js__WEBPACK_IMPORTED_MODULE_13__["SpecialServerNames"].NiteSecServer]];
- if (nitesecServer == null) {
- console.log("ERROR: Could not find NiteSec Server");
- } else if (!nitesecFac.isBanned && !nitesecFac.isMember && nitesecServer.manuallyHacked &&
- !nitesecFac.alreadyInvited && this.hacking_skill >= 200 && homeComp.maxRam >= 32) {
- invitedFactions.push(nitesecFac);
- }
-
- //Chongqing
- var chongqingFac = _Faction_js__WEBPACK_IMPORTED_MODULE_8__["Factions"]["Chongqing"];
- if (!chongqingFac.isBanned && !chongqingFac.isMember && !chongqingFac.alreadyInvited &&
- this.money.gte(20000000) && this.city == _Location_js__WEBPACK_IMPORTED_MODULE_10__["Locations"].Chongqing) {
- invitedFactions.push(chongqingFac);
- }
-
- //Sector-12
- var sector12Fac = _Faction_js__WEBPACK_IMPORTED_MODULE_8__["Factions"]["Sector-12"];
- if (!sector12Fac.isBanned && !sector12Fac.isMember && !sector12Fac.alreadyInvited &&
- this.money.gte(15000000) && this.city == _Location_js__WEBPACK_IMPORTED_MODULE_10__["Locations"].Sector12) {
- invitedFactions.push(sector12Fac);
- }
-
- //New Tokyo
- var newtokyoFac = _Faction_js__WEBPACK_IMPORTED_MODULE_8__["Factions"]["New Tokyo"];
- if (!newtokyoFac.isBanned && !newtokyoFac.isMember && !newtokyoFac.alreadyInvited &&
- this.money.gte(20000000) && this.city == _Location_js__WEBPACK_IMPORTED_MODULE_10__["Locations"].NewTokyo) {
- invitedFactions.push(newtokyoFac);
- }
-
- //Aevum
- var aevumFac = _Faction_js__WEBPACK_IMPORTED_MODULE_8__["Factions"]["Aevum"];
- if (!aevumFac.isBanned && !aevumFac.isMember && !aevumFac.alreadyInvited &&
- this.money.gte(40000000) && this.city == _Location_js__WEBPACK_IMPORTED_MODULE_10__["Locations"].Aevum) {
- invitedFactions.push(aevumFac);
- }
-
- //Ishima
- var ishimaFac = _Faction_js__WEBPACK_IMPORTED_MODULE_8__["Factions"]["Ishima"];
- if (!ishimaFac.isBanned && !ishimaFac.isMember && !ishimaFac.alreadyInvited &&
- this.money.gte(30000000) && this.city == _Location_js__WEBPACK_IMPORTED_MODULE_10__["Locations"].Ishima) {
- invitedFactions.push(ishimaFac);
- }
-
- //Volhaven
- var volhavenFac = _Faction_js__WEBPACK_IMPORTED_MODULE_8__["Factions"]["Volhaven"];
- if (!volhavenFac.isBanned && !volhavenFac.isMember && !volhavenFac.alreadyInvited &&
- this.money.gte(50000000) && this.city == _Location_js__WEBPACK_IMPORTED_MODULE_10__["Locations"].Volhaven) {
- invitedFactions.push(volhavenFac);
- }
-
- //Speakers for the Dead
- var speakersforthedeadFac = _Faction_js__WEBPACK_IMPORTED_MODULE_8__["Factions"]["Speakers for the Dead"];
- if (!speakersforthedeadFac.isBanned && !speakersforthedeadFac.isMember && !speakersforthedeadFac.alreadyInvited &&
- this.hacking_skill >= 100 && this.strength >= 300 && this.defense >= 300 &&
- this.dexterity >= 300 && this.agility >= 300 && this.numPeopleKilled >= 30 &&
- this.karma <= -45 && this.companyName != _Location_js__WEBPACK_IMPORTED_MODULE_10__["Locations"].Sector12CIA &&
- this.companyName != _Location_js__WEBPACK_IMPORTED_MODULE_10__["Locations"].Sector12NSA) {
- invitedFactions.push(speakersforthedeadFac);
- }
-
- //The Dark Army
- var thedarkarmyFac = _Faction_js__WEBPACK_IMPORTED_MODULE_8__["Factions"]["The Dark Army"];
- if (!thedarkarmyFac.isBanned && !thedarkarmyFac.isMember && !thedarkarmyFac.alreadyInvited &&
- this.hacking_skill >= 300 && this.strength >= 300 && this.defense >= 300 &&
- this.dexterity >= 300 && this.agility >= 300 && this.city == _Location_js__WEBPACK_IMPORTED_MODULE_10__["Locations"].Chongqing &&
- this.numPeopleKilled >= 5 && this.karma <= -45 && this.companyName != _Location_js__WEBPACK_IMPORTED_MODULE_10__["Locations"].Sector12CIA &&
- this.companyName != _Location_js__WEBPACK_IMPORTED_MODULE_10__["Locations"].Sector12NSA) {
- invitedFactions.push(thedarkarmyFac);
- }
-
- //The Syndicate
- var thesyndicateFac = _Faction_js__WEBPACK_IMPORTED_MODULE_8__["Factions"]["The Syndicate"];
- if (!thesyndicateFac.isBanned && !thesyndicateFac.isMember && !thesyndicateFac.alreadyInvited &&
- this.hacking_skill >= 200 && this.strength >= 200 && this.defense >= 200 &&
- this.dexterity >= 200 && this.agility >= 200 &&
- (this.city == _Location_js__WEBPACK_IMPORTED_MODULE_10__["Locations"].Aevum || this.city == _Location_js__WEBPACK_IMPORTED_MODULE_10__["Locations"].Sector12) &&
- this.money.gte(10000000) && this.karma <= -90 &&
- this.companyName != _Location_js__WEBPACK_IMPORTED_MODULE_10__["Locations"].Sector12CIA && this.companyName != _Location_js__WEBPACK_IMPORTED_MODULE_10__["Locations"].Sector12NSA) {
- invitedFactions.push(thesyndicateFac);
- }
-
- //Silhouette
- var silhouetteFac = _Faction_js__WEBPACK_IMPORTED_MODULE_8__["Factions"]["Silhouette"];
- if (!silhouetteFac.isBanned && !silhouetteFac.isMember && !silhouetteFac.alreadyInvited &&
- (this.companyPosition.positionName == _Company_js__WEBPACK_IMPORTED_MODULE_2__["CompanyPositions"].CTO.positionName ||
- this.companyPosition.positionName == _Company_js__WEBPACK_IMPORTED_MODULE_2__["CompanyPositions"].CFO.positionName ||
- this.companyPosition.positionName == _Company_js__WEBPACK_IMPORTED_MODULE_2__["CompanyPositions"].CEO.positionName) &&
- this.money.gte(15000000) && this.karma <= -22) {
- invitedFactions.push(silhouetteFac);
- }
-
- //Tetrads
- var tetradsFac = _Faction_js__WEBPACK_IMPORTED_MODULE_8__["Factions"]["Tetrads"];
- if (!tetradsFac.isBanned && !tetradsFac.isMember && !tetradsFac.alreadyInvited &&
- (this.city == _Location_js__WEBPACK_IMPORTED_MODULE_10__["Locations"].Chongqing || this.city == _Location_js__WEBPACK_IMPORTED_MODULE_10__["Locations"].NewTokyo ||
- this.city == _Location_js__WEBPACK_IMPORTED_MODULE_10__["Locations"].Ishima) && this.strength >= 75 && this.defense >= 75 &&
- this.dexterity >= 75 && this.agility >= 75 && this.karma <= -18) {
- invitedFactions.push(tetradsFac);
- }
-
- //SlumSnakes
- var slumsnakesFac = _Faction_js__WEBPACK_IMPORTED_MODULE_8__["Factions"]["Slum Snakes"];
- if (!slumsnakesFac.isBanned && !slumsnakesFac.isMember && !slumsnakesFac.alreadyInvited &&
- this.strength >= 30 && this.defense >= 30 && this.dexterity >= 30 &&
- this.agility >= 30 && this.karma <= -9 && this.money.gte(1000000)) {
- invitedFactions.push(slumsnakesFac);
- }
-
- //Netburners
- var netburnersFac = _Faction_js__WEBPACK_IMPORTED_MODULE_8__["Factions"]["Netburners"];
- var totalHacknetRam = 0;
- var totalHacknetCores = 0;
- var totalHacknetLevels = 0;
- for (var i = 0; i < this.hacknetNodes.length; ++i) {
- totalHacknetLevels += this.hacknetNodes[i].level;
- totalHacknetRam += this.hacknetNodes[i].ram;
- totalHacknetCores += this.hacknetNodes[i].cores;
- }
- if (!netburnersFac.isBanned && !netburnersFac.isMember && !netburnersFac.alreadyInvited &&
- this.hacking_skill >= 80 && totalHacknetRam >= 8 &&
- totalHacknetCores >= 4 && totalHacknetLevels >= 100) {
- invitedFactions.push(netburnersFac);
- }
-
- //Tian Di Hui
- var tiandihuiFac = _Faction_js__WEBPACK_IMPORTED_MODULE_8__["Factions"]["Tian Di Hui"];
- if (!tiandihuiFac.isBanned && !tiandihuiFac.isMember && !tiandihuiFac.alreadyInvited &&
- this.money.gte(1000000) && this.hacking_skill >= 50 &&
- (this.city == _Location_js__WEBPACK_IMPORTED_MODULE_10__["Locations"].Chongqing || this.city == _Location_js__WEBPACK_IMPORTED_MODULE_10__["Locations"].NewTokyo ||
- this.city == _Location_js__WEBPACK_IMPORTED_MODULE_10__["Locations"].Ishima)) {
- invitedFactions.push(tiandihuiFac);
- }
-
- //CyberSec
- var cybersecFac = _Faction_js__WEBPACK_IMPORTED_MODULE_8__["Factions"]["CyberSec"];
- var cybersecServer = _Server_js__WEBPACK_IMPORTED_MODULE_12__["AllServers"][_SpecialServerIps_js__WEBPACK_IMPORTED_MODULE_13__["SpecialServerIps"][_SpecialServerIps_js__WEBPACK_IMPORTED_MODULE_13__["SpecialServerNames"].CyberSecServer]];
- if (cybersecServer == null) {
- console.log("ERROR: Could not find CyberSec Server");
- } else if (!cybersecFac.isBanned && !cybersecFac.isMember && cybersecServer.manuallyHacked &&
- !cybersecFac.alreadyInvited && this.hacking_skill >= 50) {
- invitedFactions.push(cybersecFac);
- }
-
- return invitedFactions;
-}
-
-
-/*************** Gang ****************/
-//Returns true if Player is in a gang and false otherwise
-PlayerObject.prototype.inGang = function() {
- if (this.gang == null || this.gang == undefined) {return false;}
- return (this.gang instanceof _Gang_js__WEBPACK_IMPORTED_MODULE_9__["Gang"]);
-}
-
-PlayerObject.prototype.startGang = function(factionName, hacking) {
- this.gang = new _Gang_js__WEBPACK_IMPORTED_MODULE_9__["Gang"](factionName, hacking);
-}
-
-/************* BitNodes **************/
-PlayerObject.prototype.setBitNodeNumber = function(n) {
- this.bitNodeN = n;
-}
-
-/* Functions for saving and loading the Player data */
-function loadPlayer(saveString) {
- Player = JSON.parse(saveString, _utils_JSONReviver_js__WEBPACK_IMPORTED_MODULE_19__["Reviver"]);
-
- //Parse Decimal.js objects
- Player.money = new decimal_js__WEBPACK_IMPORTED_MODULE_15__["default"](Player.money);
- Player.total_money = new decimal_js__WEBPACK_IMPORTED_MODULE_15__["default"](Player.total_money);
- Player.lifetime_money = new decimal_js__WEBPACK_IMPORTED_MODULE_15__["default"](Player.lifetime_money);
-
- if (Player.corporation instanceof _CompanyManagement_js__WEBPACK_IMPORTED_MODULE_4__["Corporation"]) {
- Player.corporation.funds = new decimal_js__WEBPACK_IMPORTED_MODULE_15__["default"](Player.corporation.funds);
- Player.corporation.revenue = new decimal_js__WEBPACK_IMPORTED_MODULE_15__["default"](Player.corporation.revenue);
- Player.corporation.expenses = new decimal_js__WEBPACK_IMPORTED_MODULE_15__["default"](Player.corporation.expenses);
-
- for (var i = 0; i < Player.corporation.divisions.length; ++i) {
- var ind = Player.corporation.divisions[i];
- ind.lastCycleRevenue = new decimal_js__WEBPACK_IMPORTED_MODULE_15__["default"](ind.lastCycleRevenue);
- ind.lastCycleExpenses = new decimal_js__WEBPACK_IMPORTED_MODULE_15__["default"](ind.lastCycleExpenses);
- ind.thisCycleRevenue = new decimal_js__WEBPACK_IMPORTED_MODULE_15__["default"](ind.thisCycleRevenue);
- ind.thisCycleExpenses = new decimal_js__WEBPACK_IMPORTED_MODULE_15__["default"](ind.thisCycleExpenses);
- }
- }
-}
-
-PlayerObject.prototype.toJSON = function() {
- return Object(_utils_JSONReviver_js__WEBPACK_IMPORTED_MODULE_19__["Generic_toJSON"])("PlayerObject", this);
-}
-
-PlayerObject.fromJSON = function(value) {
- return Object(_utils_JSONReviver_js__WEBPACK_IMPORTED_MODULE_19__["Generic_fromJSON"])(PlayerObject, value.data);
-}
-
-_utils_JSONReviver_js__WEBPACK_IMPORTED_MODULE_19__["Reviver"].constructors.PlayerObject = PlayerObject;
-
-let Player = new PlayerObject();
-
-
-
-/***/ }),
-/* 1 */
-/*!**********************************!*\
- !*** ./utils/HelperFunctions.js ***!
- \**********************************/
-/***/ (function(module, __webpack_exports__, __webpack_require__) {
-
-"use strict";
-__webpack_require__.r(__webpack_exports__);
-/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "sizeOfObject", function() { return sizeOfObject; });
-/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "clearObject", function() { return clearObject; });
-/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "addOffset", function() { return addOffset; });
-/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "clearEventListeners", function() { return clearEventListeners; });
-/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "getRandomInt", function() { return getRandomInt; });
-/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "compareArrays", function() { return compareArrays; });
-/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "printArray", function() { return printArray; });
-/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "powerOfTwo", function() { return powerOfTwo; });
-/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "clearEventListenersEl", function() { return clearEventListenersEl; });
-/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "removeElementById", function() { return removeElementById; });
-/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "removeElement", function() { return removeElement; });
-/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "createElement", function() { return createElement; });
-/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "createAccordionElement", function() { return createAccordionElement; });
-/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "appendLineBreaks", function() { return appendLineBreaks; });
-/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "removeChildrenFromElement", function() { return removeChildrenFromElement; });
-/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "createPopup", function() { return createPopup; });
-/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "clearSelector", function() { return clearSelector; });
-/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "exceptionAlert", function() { return exceptionAlert; });
-/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "createProgressBarText", function() { return createProgressBarText; });
-/* harmony import */ var _StringHelperFunctions_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./StringHelperFunctions.js */ 2);
-/* harmony import */ var _DialogBox_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./DialogBox.js */ 7);
-//General helper functions
-
-
-
-//Returns the size (number of keys) of an object
-function sizeOfObject(obj) {
- var size = 0, key;
- for (key in obj) {
- if (obj.hasOwnProperty(key)) size++;
- }
- return size;
-}
-
-function clearObject(obj) {
- for (var key in obj) {
- if (obj.hasOwnProperty(key)) {
- delete obj[key];
- }
- }
-}
-
-//Adds a random offset to a number within a certain percentage
-//e.g. addOffset(100, 5) will return anything from 95 to 105.
-//The percentage argument must be between 0 and 100;
-function addOffset(n, percentage) {
- if (percentage < 0 || percentage > 100) {return n;}
-
- var offset = n * (percentage / 100);
-
- return n + ((Math.random() * (2 * offset)) - offset);
-}
-
-//Given an element by its Id(usually an 'a' element), removes all event listeners
-//from that element by cloning and replacing. Then returns the new cloned element
-function clearEventListeners(elemId) {
- var elem = document.getElementById(elemId);
- if (elem == null) {console.log("ERR: Could not find element for: " + elemId); return null;}
- var newElem = elem.cloneNode(true);
- elem.parentNode.replaceChild(newElem, elem);
- return newElem;
-}
-
-//Same as clearEventListeners except it takes a DOM element object rather than an ID
-function clearEventListenersEl(el) {
- if (el == null) {console.log("ERR: element passed into clearEventListenersEl is null"); return null;}
- var newElem = el.cloneNode(true);
- el.parentNode.replaceChild(newElem, el);
- return newElem;
-}
-
-//Given its id, this function removes an element AND its children
-function removeElementById(id) {
- var elem = document.getElementById(id);
- if (elem == null) {return;}
- while(elem.firstChild) {elem.removeChild(elem.firstChild);}
- elem.parentNode.removeChild(elem);
-}
-
-function removeElement(elem) {
- if (elem == null || !(elem instanceof Element)) {return;}
- while(elem.firstChild) {elem.removeChild(elem.firstChild);}
- elem.parentNode.removeChild(elem);
-}
-
-function removeChildrenFromElement(el) {
- if (Object(_StringHelperFunctions_js__WEBPACK_IMPORTED_MODULE_0__["isString"])(el)) {
- el = document.getElementById(el);
- }
- if (el == null) {return;}
- if (el instanceof Element) {
- while(el.firstChild) {
- el.removeChild(el.firstChild);
- }
- }
-}
-
-function createElement(type, params={}) {
- var el = document.createElement(type);
- if (params.id) {el.id = params.id;}
- if (params.class) {el.className = params.class;}
- if (params.name) {el.name = params.name;}
- if (params.innerHTML) {el.innerHTML = params.innerHTML;}
- if (params.innerText) {el.innerText = params.innerText;}
- if (params.value) {el.value = params.value;}
- if (params.text) {el.text = params.text;}
- 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.marginTop) {el.style.marginTop = params.marginTop;}
- 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.whiteSpace) {el.style.whiteSpace = params.whiteSpace;}
- if (params.width) {el.style.width = params.width;}
- if (params.backgroundColor) {
- el.style.backgroundColor = params.backgroundColor
- }
- if (params.position) {el.style.position = params.position;}
- if (params.type) {el.type = params.type;}
- if (params.checked) {el.checked = params.checked;}
- if (params.for) {el.htmlFor = params.for;}
- if (params.pattern) {el.pattern = params.pattern;}
- if (params.maxLength) {el.maxLength = params.maxLength;}
- if (params.placeholder) {el.placeholder = params.placeholder;}
- if (params.tooltip && params.tooltip !== "") {
- el.className += " tooltip";
- el.appendChild(createElement("span", {
- class:"tooltiptext",
- innerHTML:params.tooltip
- }));
- } else if (params.tooltipleft) {
- el.className += " tooltip";
- el.appendChild(createElement("span", {
- class:"tooltiptextleft",
- innerHTML:params.tooltipleft
- }));
- }
- if (params.href) {el.href = params.href;}
- if (params.target) {el.target = params.target;}
- if (params.tabIndex) {el.tabIndex = params.tabIndex;}
- if (params.clickListener) {
- el.addEventListener("click", params.clickListener);
- }
- if (params.inputListener) {
- el.addEventListener("input", params.inputListener);
- }
- if (params.changeListener) {
- el.addEventListener("change", params.changeListener);
- }
- if (params.onkeyup) {
- el.addEventListener("keyup", params.onkeyup);
- }
- if (params.onfocus) {
- el.addEventListener("focus", params.onfocus);
- }
- return el;
-}
-
-function createPopup(id, elems) {
- var container = createElement("div", {
- class:"popup-box-container",
- id:id,
- display:"block"
- }),
- content = createElement("div", {
- class:"popup-box-content",
- id:id + "-content",
- });
-
- for (var i = 0; i < elems.length; ++i) {
- content.appendChild(elems[i]);
- }
- container.appendChild(content);
- document.getElementById("entire-game-container").appendChild(container);
- return container;
-}
-
-//Creates both the header and panel element of an accordion and sets the click handler
-function createAccordionElement(params) {
- var li = document.createElement("li"),
- hdr = document.createElement("button"),
- panel = document.createElement("div");
- hdr.classList.add("accordion-header");
- panel.classList.add("accordion-panel");
-
- if (params.id) {
- hdr.id = params.id + "-hdr";
- panel.id = params.id + "-panel";
- }
- if (params.hdrText) {hdr.innerHTML = params.hdrText;}
- if (params.panelText) {panel.innerHTML = params.panelText;}
- li.appendChild(hdr);
- li.appendChild(panel);
- //Click handler
- hdr.onclick = function() {
- this.classList.toggle("active");
- var tmpPanel = this.nextElementSibling;
- if (tmpPanel.style.display === "block") {
- tmpPanel.style.display = "none";
- } else {
- tmpPanel.style.display = "block";
- }
- }
- return [li, hdr, panel];
-}
-
-//Appends n line breaks (as children) to the Element el
-function appendLineBreaks(el, n) {
- for (var i = 0; i < n; ++i) {
- el.appendChild(createElement("br"));
- }
-}
-
-function clearSelector(selector) {
- for (var i = selector.options.length - 1; i >= 0; --i) {
- selector.remove(i);
- }
-}
-
-function getRandomInt(min, max) {
- if (min > max) {return getRandomInt(max, min);}
- return Math.floor(Math.random() * (max - min + 1)) + min;
-}
-
-//Returns true if all elements are equal, and false otherwise
-//Assumes both arguments are arrays and that there are no nested arrays
-function compareArrays(a1, a2) {
- if (a1.length != a2.length) {
- return false;
- }
-
- for (var i = 0; i < a1.length; ++i) {
- if (a1[i] != a2[i]) {return false;}
- }
- return true;
-}
-
-function printArray(a) {
- return "[" + a.join(", ") + "]";
-}
-
-//Returns bool indicating whether or not its a power of 2
-function powerOfTwo(n) {
- if (isNaN(n)) {return false;}
- return n && (n & (n-1)) === 0;
-}
-
-function exceptionAlert(e) {
- Object(_DialogBox_js__WEBPACK_IMPORTED_MODULE_1__["dialogBoxCreate"])("Caught an exception: " + e + "
" +
- "Filename: " + e.fileName + "
" +
- "Line Number: " + e.lineNumber + "
" +
- "This is a bug, please report to game developer with this " +
- "message as well as details about how to reproduce the bug.
" +
- "If you want to be safe, I suggest refreshing the game WITHOUT saving so that your " +
- "safe doesn't get corrupted");
-}
-
-/*Creates a graphical "progress bar"
- * e.g.: [||||---------------]
- * params:
- * @totalTicks - Total number of ticks in progress bar. Preferably a factor of 100
- * @progress - Current progress, taken as a decimal (i.e. 0.6 to represent 60%)
- */
-function createProgressBarText(params={}) {
- //Default values
- var totalTicks = (params.totalTicks == null ? 20 : params.totalTicks);
- var progress = (params.progress == null ? 0 : params.progress);
-
- var percentPerTick = 1 / totalTicks;
- var numTicks = Math.floor(progress / percentPerTick);
- var numDashes = totalTicks - numTicks;
- return "[" + Array(numTicks+1).join("|") + Array(numDashes+1).join("-") + "]";
-}
-
-
-
-
-/***/ }),
-/* 2 */
-/*!****************************************!*\
- !*** ./utils/StringHelperFunctions.js ***!
- \****************************************/
-/***/ (function(module, __webpack_exports__, __webpack_require__) {
-
-"use strict";
-__webpack_require__.r(__webpack_exports__);
-/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "getIndicesOf", function() { return getIndicesOf; });
-/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "convertTimeMsToTimeElapsedString", function() { return convertTimeMsToTimeElapsedString; });
-/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "longestCommonStart", function() { return longestCommonStart; });
-/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "isString", function() { return isString; });
-/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "containsAllStrings", function() { return containsAllStrings; });
-/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "formatNumber", function() { return formatNumber; });
-/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "numOccurrences", function() { return numOccurrences; });
-/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "numNetscriptOperators", function() { return numNetscriptOperators; });
-/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "isHTML", function() { return isHTML; });
-/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "generateRandomString", function() { return generateRandomString; });
-/* harmony import */ var _DialogBox_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./DialogBox.js */ 7);
-
-
-//Netburner String helper functions
-
-//Searches for every occurence of searchStr within str and returns an array of the indices of
-//all these occurences
-function getIndicesOf(searchStr, str, caseSensitive) {
- var searchStrLen = searchStr.length;
- if (searchStrLen == 0) {
- return [];
- }
- var startIndex = 0, index, indices = [];
- if (!caseSensitive) {
- str = str.toLowerCase();
- searchStr = searchStr.toLowerCase();
- }
- while ((index = str.indexOf(searchStr, startIndex)) > -1) {
- indices.push(index);
- startIndex = index + searchStrLen;
- }
- return indices;
-}
-
-//Replaces the character at an index with a new character
-String.prototype.replaceAt=function(index, character) {
- return this.substr(0, index) + character + this.substr(index+character.length);
-}
-
-//Converts a date representing time in milliseconds to a string with the format
-// H hours M minutes and S seconds
-// e.g. 10000 -> "0 hours 0 minutes and 10 seconds"
-// 120000 -> "0 0 hours 2 minutes and 0 seconds"
-function convertTimeMsToTimeElapsedString(time) {
- //Convert ms to seconds, since we only have second-level precision
- time = Math.floor(time / 1000);
-
- var days = Math.floor(time / 86400);
- time %= 86400;
-
- var hours = Math.floor(time / 3600);
- time %= 3600;
-
- var minutes = Math.floor(time / 60);
- time %= 60;
-
- var seconds = time;
-
- var res = "";
- if (days) {res += days + " days ";}
- if (hours) {res += hours + " hours ";}
- if (minutes) {res += minutes + " minutes ";}
- res += seconds + " seconds ";
- return res;
-}
-
-//Finds the longest common starting substring in a set of strings
-function longestCommonStart(strings) {
- if (!containsAllStrings(strings)) {return;}
- if (strings.length == 0) {return;}
-
- var A = strings.concat().sort(),
- a1= A[0], a2= A[A.length-1], L= a1.length, i= 0;
- while(i
" +
- "In this game you control a set of Nodes and use them to try and defeat an enemy. Your Nodes " +
- "are colored blue, while the enemy's are red. There are also other nodes on the map colored gray " +
- "that initially belong to neither you nor the enemy. The goal of the game is " +
- "to capture all of the enemy's Database nodes within the time limit. " +
- "If you fail to do this, you will lose.
" +
- "Each Node has three stats: Attack, Defense, and HP. There are five different actions that " +
- "a Node can take:
" +
- "Attack - Targets an enemy Node and lowers its HP. The effectiveness is determined by the owner's Attack, the Player's " +
- "hacking level, and the enemy's defense.
" +
- "Scan - Targets an enemy Node and lowers its Defense. The effectiveness is determined by the owner's Attack, the Player's hacking level, and the " +
- "enemy's defense.
" +
- "Weaken - Targets an enemy Node and lowers its Attack. The effectiveness is determined by the owner's Attack, the Player's hacking level, and the enemy's " +
- "defense.
" +
- "Fortify - Raises the Node's Defense. The effectiveness is determined by your hacking level.
" +
- "Overflow - Raises the Node's Attack but lowers its Defense. The effectiveness is determined by your hacking level.
" +
- "Note that when determining the effectiveness of the above actions, the TOTAL Attack or Defense of the team is used, not just the " +
- "Attack/Defense of the individual Node that is performing the action.
" +
- "To capture a Node, you must lower its HP down to 0.
" +
- "There are six different types of Nodes:
" +
- "CPU Core - These are your main Nodes that are used to perform actions. Capable of performing every action
" +
- "Firewall - Nodes with high defense. These Nodes can 'Fortify'
" +
- "Database - A special type of Node. The player's objective is to conquer all of the enemy's Database Nodes within " +
- "the time limit. These Nodes cannot perform any actions
" +
- "Spam - Conquering one of these Nodes will slow the enemy's trace, giving the player additional time to complete " +
- "the mission. These Nodes cannot perform any actions
" +
- "Transfer - Conquering one of these nodes will increase the Attack of all of your CPU Cores by a small fixed percentage. " +
- "These Nodes are capable of performing every action except the 'Attack' action
" +
- "Shield - Nodes with high defense. These Nodes can 'Fortify'
" +
- "To assign an action to a Node, you must first select one of your Nodes. This can be done by simply clicking on it. Double-clicking " +
- "a node will select all of your Nodes of the same type (e.g. select all CPU Core Nodes or all Transfer Nodes). Note that only Nodes " +
- "that can perform actions (CPU Core, Transfer, Shield, Firewall) can be selected. Selected Nodes will be denoted with a white highlight. After selecting a Node or multiple Nodes, " +
- "select its action using the Action Buttons near the top of the screen. Every action also has a corresponding keyboard " +
- "shortcut.
" +
- "For certain actions such as attacking, scanning, and weakening, the Node performing the action must have a target. To target " +
- "another node, simply click-and-drag from the 'source' Node to a target. A Node can only have one target, and you can target " +
- "any Node that is adjacent to one of your Nodes (immediately above, below, or to the side. NOT diagonal). Furthermore, only CPU Cores and Transfer Nodes " +
- "can target, since they are the only ones that can perform the related actions. To remove a target, you can simply click on the line that represents " +
- "the connection between one of your Nodes and its target. Alternatively, you can select the 'source' Node and click the 'Drop Connection' button, " +
- "or press 'd'.
" +
- "Other Notes:
" +
- "-Whenever a miscellenaous Node (not owned by the player or enemy) is conquered, the defense of all remaining miscellaneous Nodes that " +
- "are not actively being targeted will increase by a fixed percentage.
" +
- "-Whenever a Node is conquered, its stats are significantly reduced
" +
- "-Miscellaneous Nodes slowly raise their defense over time
" +
- "-Nodes slowly regenerate health over time.",
-
-
- //Gang constants
- GangRespectToReputationRatio: 2, //Respect is divided by this to get rep gain
- MaximumGangMembers: 20,
- GangRecruitCostMultiplier: 2,
- GangTerritoryUpdateTimer: 150,
-
- MillisecondsPer20Hours: 72000000,
- GameCyclesPer20Hours: 72000000 / 200,
-
- MillisecondsPer10Hours: 36000000,
- GameCyclesPer10Hours: 36000000 / 200,
-
- MillisecondsPer8Hours: 28800000,
- GameCyclesPer8Hours: 28800000 / 200,
-
- MillisecondsPer4Hours: 14400000,
- GameCyclesPer4Hours: 14400000 / 200,
-
- MillisecondsPer2Hours: 7200000,
- GameCyclesPer2Hours: 7200000 / 200,
-
- MillisecondsPerHour: 3600000,
- GameCyclesPerHour: 3600000 / 200,
-
- MillisecondsPerHalfHour: 1800000,
- GameCyclesPerHalfHour: 1800000 / 200,
-
- MillisecondsPerQuarterHour: 900000,
- GameCyclesPerQuarterHour: 900000 / 200,
-
- MillisecondsPerFiveMinutes: 300000,
- GameCyclesPerFiveMinutes: 300000 / 200,
-
- FactionWorkHacking: "Faction Hacking Work",
- FactionWorkField: "Faction Field Work",
- FactionWorkSecurity: "Faction Security Work",
-
- WorkTypeCompany: "Working for Company",
- WorkTypeCompanyPartTime: "Working for Company part-time",
- WorkTypeFaction: "Working for Faction",
- WorkTypeCreateProgram: "Working on Create a Program",
- WorkTypeStudyClass: "Studying or Taking a class at university",
- WorkTypeCrime: "Committing a crime",
-
- ClassStudyComputerScience: "studying Computer Science",
- ClassDataStructures: "taking a Data Structures course",
- ClassNetworks: "taking a Networks course",
- ClassAlgorithms: "taking an Algorithms course",
- ClassManagement: "taking a Management course",
- ClassLeadership: "taking a Leadership course",
- ClassGymStrength: "training your strength at a gym",
- ClassGymDefense: "training your defense at a gym",
- ClassGymDexterity: "training your dexterity at a gym",
- ClassGymAgility: "training your agility at a gym",
-
- ClassDataStructuresBaseCost: 40,
- ClassNetworksBaseCost: 80,
- ClassAlgorithmsBaseCost: 320,
- ClassManagementBaseCost: 160,
- ClassLeadershipBaseCost: 320,
- ClassGymBaseCost: 120,
-
- CrimeSingFnDivider: 2, //Factor by which exp/profit is reduced when commiting crime through Sing Fn
- CrimeShoplift: "shoplift",
- CrimeRobStore: "rob a store",
- CrimeMug: "mug someone",
- CrimeLarceny: "commit larceny",
- CrimeDrugs: "deal drugs",
- CrimeBondForgery: "forge corporate bonds",
- CrimeTraffickArms: "traffick illegal arms",
- CrimeHomicide: "commit homicide",
- CrimeGrandTheftAuto: "commit grand theft auto",
- CrimeKidnap: "kidnap someone for ransom",
- CrimeAssassination: "assassinate a high-profile target",
- CrimeHeist: "pull off the ultimate heist",
-
- /* Tutorial related things */
- TutorialNetworkingText: "Servers are a central part of the game. You start with a single personal server (your home computer) " +
- "and you can purchase additional servers as you progress through the game. Connecting to other servers " +
- "and hacking them can be a major source of income and experience. Servers can also be used to run " +
- "scripts which can automatically hack servers for you.
" +
- "In order to navigate between machines, use the 'scan' or 'scan-analyze' Terminal command to see all servers " +
- "that are reachable from your current server. Then, you can use the 'connect [hostname/ip]' " +
- "command to connect to one of the available machines.
" +
- "The 'hostname' and 'ifconfig' commands can be used to display the hostname/IP of the " +
- "server you are currently connected to.",
-
- TutorialHackingText: "In the year 2077, currency has become digital and decentralized. People and corporations " +
- "store their money on servers. By hacking these servers, you can steal their money and gain " +
- "experience.
" +
- "Gaining root access
" +
- "The key to hacking a server is to gain root access to that server. This can be done using " +
- "the NUKE virus (NUKE.exe). You start the game with a copy of the NUKE virus on your home " +
- "computer. The NUKE virus attacks the target server's open ports using buffer overflow " +
- "exploits. When successful, you are granted root administrative access to the machine.
" +
- "Typically, in order for the NUKE virus to succeed, the target server needs to have at least " +
- "one of its ports opened. Some servers have no security and will not need any ports opened. Some " +
- "will have very high security and will need many ports opened. In order to open ports on another " +
- "server, you will need to run programs that attack the server to open specific ports. These programs " +
- "can be coded once your hacking skill gets high enough, or they can be purchased if you can find " +
- "a seller.
" +
- "In order to determine how many ports need to be opened to successfully NUKE a server, connect to " +
- "that server and run the 'analyze' command. This will also show you which ports have already been " +
- "opened.
" +
- "Once you have enough ports opened and have ran the NUKE virus to gain root access, the server " +
- "can then be hacked by simply calling the 'hack' command through terminal, or by using a script.
" +
- "Hacking mechanics
" +
- "When you execute the hack command, either manually through the terminal or automatically through " +
- "a script, you attempt to hack the server. This action takes time. The more advanced a server's " +
- "security is, the more time it will take. Your hacking skill level also affects the hacking time, " +
- "with a higher hacking skill leading to shorter hacking times. Also, running the hack command " +
- "manually through terminal is faster than hacking from a script.
" +
- "Your attempt to hack a server will not always succeed. The chance you have to successfully hack a " +
- "server is also determined by the server's security and your hacking skill level. Even if your " +
- "hacking attempt is unsuccessful, you will still gain experience points.
" +
- "When you successfully hack a server. You steal a certain percentage of that server's total money. This " +
- "percentage is determined by the server's security and your hacking skill level. The amount of money " +
- "on a server is not limitless. So, if you constantly hack a server and deplete its money, then you will " +
- "encounter diminishing returns in your hacking (since you are only hacking a certain percentage). You can " +
- "increase the amount of money on a server using a script and the grow() function in Netscript.
" +
- "Server Security
" +
- "Each server has a security level, typically between 1 and 100. A higher number means the server has stronger security. " +
- "It is possible for a server to have a security level of 100 or higher, in which case hacking that server " +
- "will become impossible (0% chance to hack).
" +
- "As mentioned above, a server's security level is an important factor " +
- "to consider when hacking. You can check a server's security level using the 'analyze' command, although this " +
- "only gives an estimate (with 5% uncertainty). You can also check a server's security in a script, using the " +
- "getServerSecurityLevel(server) function in Netscript. See the Netscript documentation for more details. " +
- "This function will give you an exact value for a server's security.
" +
- "Whenever a server is hacked manually or through a script, its security level increases by a small amount. Calling " +
- "the grow() command in a script will also increase security level of the target server. These actions will " +
- "make it harder for you to hack the server, and decrease the amount of money you can steal. You can lower a " +
- "server's security level in a script using the weaken(server) function in Netscript. See the Netscript " +
- "documentation for more details.
" +
- "A server has a minimum security level that is equal to one third of its starting security, rounded to the " +
- "nearest integer. To be more precise:
" +
- "server.minSecurityLevel = Math.max(1, Math.round(server.startingSecurityLevel / 3))
" +
- "This means that a server's security will not fall below this value if you are trying to weaken it.",
-
- TutorialScriptsText: "Scripts can be used to automate the hacking process. Scripts must be written in the Netscript language. " +
- "Documentation about the Netscript language can be found in the 'Netscript Programming Language' " +
- "section of this 'Tutorial' page.
" +
- "It is highly recommended that you have a basic background in programming to start writing scripts. " +
- "You by no means need to be an expert. All you need is some familiarity with basic programming " +
- "constructs like for/while loops, if statements, " +
- "functions, variables, etc. The Netscript programming language most resembles the Javascript language. " +
- "Therefore, a good beginner's programming tutorial to read might be " +
- "this one. Note that while the Netscript language is similar to Javascript, it is not the exact same, so the " +
- "syntax will vary a little bit.
" +
- "Running a script requires RAM. The more complex a script is, the more RAM " +
- "it requires to run. Scripts can be run on any server you have root access to.
" +
- "Here are some Terminal commands that are useful when working with scripts:
" +
- "check [script] [args...]
Prints the logs of the script specified by the name and arguments to Terminal. Arguments should be separated " +
- "by a space. Note that scripts are uniquely " +
- "identified by their arguments as well as their name. For example, if you ran a script 'foo.script' with the argument 'foodnstuff' then in order to 'check' it you must " +
- "also add the 'foodnstuff' argument to the check command as so:
check foo.script foodnstuff
" +
- "free
Shows the current server's RAM usage and availability
" +
- "kill [script] [args...]
Stops a script that is running with the specified script name and arguments. " +
- "Arguments should be separated by a space. Note that " +
- "scripts are uniquely identified by their arguments as well as their name. For example, if you ran a script 'foo.script' with the " +
- "argument 1 and 2, then just typing 'kill foo.script' will not work. You have to use 'kill foo.script 1 2'.
" +
- "mem [script] [-t] [n]
Check how much RAM a script requires to run with n threads
" +
- "nano [script]
Create/Edit a script. The name of the script must end with the '.script' extension
" +
- "ps
Displays all scripts that are actively running on the current server
" +
- "rm [script]
Delete a script
" +
- "run [script] [-t] [n] [args...]
Run a script with n threads and the specified arguments. Each argument should be separated by a space. " +
- "Both the arguments and thread specification are optional. If neither are specified, then the script will be run single-threaded with no arguments.
" +
- "Examples:
run foo.script
The command above will run 'foo.script' single-threaded with no arguments." +
- "
run foo.script -t 10
The command above will run 'foo.script' with 10 threads and no arguments." +
- "
run foo.script foodnstuff sigma-cosmetics 10
The command above will run 'foo.script' single-threaded with three arguments: [foodnstuff, sigma-cosmetics, 10]" +
- "
run foo.script -t 50 foodnstuff
The command above will run 'foo.script' with 50 threads and a single argument: [foodnstuff]
" +
- "tail [script] [args...]
Displays the logs of the script specified by the name and arguments. Note that scripts are uniquely " +
- "identified by their arguments as well as their name. For example, if you ran a script 'foo.script' with the argument 'foodnstuff' then in order to 'tail' it you must " +
- "also add the 'foodnstuff' argument to the tail command as so:
tail foo.script foodnstuff
" +
- "top
Displays all active scripts and their RAM usage
" +
- " Multithreading scripts
" +
- "Scripts can be multithreaded. A multithreaded script runs the script's code once in each thread. The result is that " +
- "every call to the hack(), grow(), and weaken() Netscript functions will have its effect multiplied by the number of threads. " +
- "For example, if a normal single-threaded script is able to hack $10,000, then running the same script with 5 threads would " +
- "yield $50,000.
" +
- "When multithreading a script, the total RAM cost can be calculated by simply multiplying the base RAM cost of the script " +
- "with the number of threads, where the base cost refers to the amount of RAM required to run the script single-threaded. " +
- "In the terminal, you can run the " +
- "'mem [scriptname] -t n' command to see how much RAM a script requires with n threads.
" +
- "Every method for running a script has an option for making it multihreaded. To run a script with " +
- "n threads from a Terminal:
" +
- "run [scriptname] -t n
" +
- "Using Netscript commands:
" +
- "run('scriptname.script', n);
" +
- "exec('scriptname.script, 'targetServer', n);
" +
- " Notes about how scripts work offline
" +
- " The scripts that you write and execute are interpreted in Javascript. For this " +
- "reason, it is not possible for these scripts to run while offline (when the game is closed). " +
- "It is important to note that for this reason, conditionals such as if/else statements and certain " +
- "commands such as purchaseHacknetNode() or nuke() will not work while the game is offline.
" +
- "However, Scripts WILL continue to generate money and hacking exp for you while the game is offline. This " +
- "offline production is based off of the scripts' production while the game is online.
" +
- "grow() and weaken() are two Netscript commands that will also be applied when the game is offline, although at a slower rate " +
- "compared to if the game was open. This is done by having each script keep track of the " +
- "rate at which the grow() and weaken() commands are called when the game is online. These calculated rates are used to determine how many times " +
- "these function calls would be made while the game is offline.
" +
- "Also, note that because of the way the Netscript interpreter is implemented, " +
- "whenever you reload or re-open the game all of the scripts that you are running will " +
- "start running from the BEGINNING of the code. The game does not keep track of where exactly " +
- "the execution of a script is when it saves/loads.
",
- TutorialNetscriptText: "Netscript is a programming language implemented for this game. There are two versions of Netscript: " +
- "Netscript 1.0 and Netscript 2.0 (NetscriptJS).
" +
- "Click here for Bitburner's official Netscript documentation",
- TutorialTravelingText:"There are six major cities in the world that you are able to travel to:
" +
- " Aevum
" +
- " Chongqing
" +
- " Sector-12
" +
- " New Tokyo
" +
- " Ishima
" +
- " Volhaven
" +
- "To travel between cities, visit your current city's travel agency through the 'World' page. " +
- "From the travel agency you can travel to any other city. Doing so costs money.
" +
- "Each city has its own set of companies and unique locations. Also, certain content is only available to you " +
- "if you are in certain cities, so get exploring!",
- TutorialCompaniesText: "Hacking is not the only way to gain money and experience! Located around the world are many " +
- "different companies which you can work for. By working for a company you can earn money, " +
- "train your various labor skills, and unlock powerful passive perks.
" +
- "To apply for a job, visit the company you want to work for through the 'World' menu. The company " +
- "page will have options that let you apply to positions in the company. There might be several different " +
- "positions you can apply for, ranging from software engineer to business analyst to security officer.
" +
- "When you apply for a job, you will get the offer if your stats are high enough. Your first position at " +
- "a company will be an entry-level position such as 'intern'. Once you get the job, an button will appear on " +
- "the company page that allows you to work for the company. Click this button to start working.
" +
- "Working occurs in 8 hour shifts. Once you start working, you will begin earning money, experience, " +
- "and reputation. The rate at which you money and experience depends on the company and your position. " +
- "The amount of reputation you gain for your company is based on your job performance, which is affected by " +
- "your stats. Different positions value different stats. When you are working, you are unable to perform any " +
- "other actions such as using your terminal or visiting other locations (However, note that any scripts you have " +
- "running on servers will continue to run as you work!). It is possible to cancel your work shift before the " +
- "8 hours is up. However, if you have a full-time job, then cancelling a shift early will result in you gaining " +
- "only half of the reputation " +
- "that you had earned up to that point. There are also part-time/consultant jobs available where you will not " +
- " be penalized if you cancel a work shift early. However, these positions pay less than full-time positions.
" +
- "As you continue to work at a company, you will gain more and more reputation at that company. When your stats " +
- "and reputation are high enough, you can get a promotion. You can apply for a promotion on the company page, just like " +
- "you applied for the job originally. Higher positions at a company provide better salaries and stat gains.
" +
- "Infiltrating Companies
" +
- "Many companies have facilities that you can attempt to infiltrate. By infiltrating, you can steal classified company secrets " +
- "and then sell these for money or for faction reputation. To try and infiltrate a company, visit a company through the " +
- "'World' menu. There will be an option that says 'Infiltrate Company'.
" +
- "When infiltrating a company, you must progress through clearance levels in the facility. Every clearance level " +
- "has some form of security that you must get past. There are several forms of security, ranging from high-tech security systems to " +
- "armed guards. For each form of security, there are a variety of options that you can choose to try and bypass the security. Examples " +
- "include hacking the security, engaging in combat, assassination, or sneaking past the security. The chance to succeed for each option " +
- "is determined in part by your stats. So, for example, trying to hack the security system relies on your hacking skill, whereas trying to " +
- "sneak past the security relies on your agility level.
" +
- "The facility has a 'security level' that affects your chance of success when trying to get past a clearance level. " +
- "Every time you advance to the next clearance level, the facility's security level will increase by a fixed amount. Furthermore " +
- "the options you choose and whether you succeed or fail will affect the security level as well. For example, " +
- "if you try to kill a security guard and fail, the security level will increase by a lot. If you choose to sneak past " +
- "security and succeed, the security level will not increase at all.
" +
- "Every 5 clearance levels, you will steal classified company secrets that can be sold for money or faction reputation. However, " +
- "in order to sell these secrets you must successfully escape the facility using the 'Escape' option. Furthermore, companies have " +
- "a max clearance level. If you reach the max clearance level you will automatically escape the facility with all of your " +
- "stolen secrets.
",
- TutorialFactionsText: "Throughout the game you may receive invitations from factions. There are many different factions, and each faction " +
- "has different criteria for determining its potential members. Joining a faction and furthering its cause is crucial " +
- "to progressing in the game and unlocking endgame content.
" +
- "It is possible to join multiple factions if you receive invitations from them. However, note that joining a faction " +
- "may prevent you from joining other rival factions.
" +
- "The 'Factions' link on the menu brings up a list of all factions that you have joined. " +
- "You can select a Faction on this list to go to that Faction page. This page displays general " +
- "information about the Faction and also lets you perform work for the faction. " +
- "Working for a Faction is similar to working for a company except that you don't get paid a salary. " +
- "You will only earn reputation in your Faction and train your stats. Also, cancelling work early " +
- "when working for a Faction does NOT result in reduced experience/reputation earnings.
" +
- "Earning reputation for a Faction unlocks powerful Augmentations. Purchasing and installing these Augmentations will " +
- "upgrade your abilities. The Augmentations that are available to unlock vary from faction to faction.",
- TutorialAugmentationsText: "Advances in science and medicine have lead to powerful new technologies that allow people to augment themselves " +
- "beyond normal human capabilities. There are many different types of Augmentations, ranging from cybernetic to " +
- "genetic to biological. Acquiring these Augmentations enhances the user's physical and mental faculties.
" +
- "Because of how powerful these Augmentations are, the technology behind them is kept private and secret by the " +
- "corporations and organizations that create them. Therefore, the only way for the player to obtain Augmentations is " +
- "through Factions. After joining a Faction and earning enough reputation in it, you will be able to purchase " +
- "its Augmentations. Different Factions offer different Augmentations. Augmentations must be purchased in order to be installed, " +
- "and they are fairly expensive.
" +
- "When you purchase an Augmentation, the price of purchasing another Augmentation increases by 90%. This multiplier stacks for " +
- "each Augmentation you purchase. You will not gain the benefits of your purchased Augmentations until you install them. You can " +
- "choose to install Augmentations through the 'Augmentations' menu tab. Once you install your purchased Augmentations, " +
- "their costs are reset back to the original price.
" +
- "Unfortunately, installing Augmentations has side effects. You will lose most of the progress you've made, including your " +
- "skills, stats, and money. You will have to start over, but you will have all of the Augmentations you have installed to " +
- "help you progress.
" +
- "To summarize, here is a list of everything you will LOSE when you install an Augmentation:
" +
- "Stats/Skills
" +
- "Money
" +
- "Scripts on all servers EXCEPT your home computer
" +
- "Purchased servers
" +
- "Hacknet Nodes
" +
- "Company/faction reputation
" +
- "Jobs and Faction memberships
" +
- "Programs
" +
- "Stocks
" +
- "TOR router
" +
- "Here is everything you will KEEP when you install an Augmentation:
" +
- "Every Augmentation you have installed
" +
- "Scripts on your home computer
" +
- "RAM and CPU Core Upgrades on your home computer
" +
- "World Stock Exchange account and TIX API Access
",
-
- LatestUpdate:
- "v0.37.1
" +
- "* You now earn money from successfully completing Bladeburner contracts. The amount you earn is based " +
- "on the difficulty of the contract.
" +
- "* Completing Field Analysis in Bladeburner now grants 0.1 rank
" +
- "* The maximum RAM you can get on a purchased server is now 1,048,576GB (2^20)
" +
- "* Bug Fix: Fixed Netscript syntax highlighting issues with the new NetscriptJS
" +
- "* Bug Fix: Netscript Functions now properly incur RAM costs in NetscriptJS
" +
- "* Bug Fix: deleteServer() now fails if its called on the server you are currently connected to
" +
- "* Removed in-game Netscript documentation, since it was outdated and difficult to maintain.
" +
- "* Bug Fix: Updated the gymWorkout() Singularity function with the new exp/cost values for gyms
"
-}
-
-
-
-
-/***/ }),
-/* 4 */
-/*!*************************!*\
- !*** ./src/Location.js ***!
- \*************************/
-/***/ (function(module, __webpack_exports__, __webpack_require__) {
-
-"use strict";
-__webpack_require__.r(__webpack_exports__);
-/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "Locations", function() { return Locations; });
-/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "displayLocationContent", function() { return displayLocationContent; });
-/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "initLocationButtons", function() { return initLocationButtons; });
-/* harmony import */ var _Bladeburner_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./Bladeburner.js */ 27);
-/* harmony import */ var _Company_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./Company.js */ 9);
-/* harmony import */ var _CompanyManagement_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./CompanyManagement.js */ 42);
-/* harmony import */ var _Constants_js__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./Constants.js */ 3);
-/* harmony import */ var _Crimes_js__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ./Crimes.js */ 20);
-/* harmony import */ var _engine_js__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ./engine.js */ 5);
-/* harmony import */ var _Infiltration_js__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! ./Infiltration.js */ 118);
-/* harmony import */ var _NetscriptFunctions_js__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! ./NetscriptFunctions.js */ 31);
-/* harmony import */ var _Player_js__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! ./Player.js */ 0);
-/* harmony import */ var _Server_js__WEBPACK_IMPORTED_MODULE_9__ = __webpack_require__(/*! ./Server.js */ 10);
-/* harmony import */ var _ServerPurchases_js__WEBPACK_IMPORTED_MODULE_10__ = __webpack_require__(/*! ./ServerPurchases.js */ 84);
-/* harmony import */ var _SpecialServerIps_js__WEBPACK_IMPORTED_MODULE_11__ = __webpack_require__(/*! ./SpecialServerIps.js */ 17);
-/* harmony import */ var _utils_DialogBox_js__WEBPACK_IMPORTED_MODULE_12__ = __webpack_require__(/*! ../utils/DialogBox.js */ 7);
-/* harmony import */ var _utils_HelperFunctions_js__WEBPACK_IMPORTED_MODULE_13__ = __webpack_require__(/*! ../utils/HelperFunctions.js */ 1);
-/* harmony import */ var _utils_IPAddress_js__WEBPACK_IMPORTED_MODULE_14__ = __webpack_require__(/*! ../utils/IPAddress.js */ 16);
-/* harmony import */ var _utils_numeral_min_js__WEBPACK_IMPORTED_MODULE_15__ = __webpack_require__(/*! ../utils/numeral.min.js */ 13);
-/* harmony import */ var _utils_numeral_min_js__WEBPACK_IMPORTED_MODULE_15___default = /*#__PURE__*/__webpack_require__.n(_utils_numeral_min_js__WEBPACK_IMPORTED_MODULE_15__);
-/* harmony import */ var _utils_StringHelperFunctions_js__WEBPACK_IMPORTED_MODULE_16__ = __webpack_require__(/*! ../utils/StringHelperFunctions.js */ 2);
-/* harmony import */ var _utils_YesNoBox_js__WEBPACK_IMPORTED_MODULE_17__ = __webpack_require__(/*! ../utils/YesNoBox.js */ 12);
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-/* Display Location Content when visiting somewhere in the World*/
-var Locations = {
- //Cities
- Aevum: "Aevum",
- //AevumDesc: ""
- Chongqing: "Chongqing",
- Sector12: "Sector-12",
- NewTokyo: "New Tokyo",
- Ishima: "Ishima",
- Volhaven: "Volhaven",
-
- //Aevum Locations
- AevumTravelAgency: "Aevum Travel Agency",
- AevumSummitUniversity: "Summit University",
- AevumECorp: "ECorp",
- AevumBachmanAndAssociates: "Bachman & Associates",
- AevumClarkeIncorporated: "Clarke Incorporated",
- AevumFulcrumTechnologies: "Fulcrum Technologies",
- AevumAeroCorp: "AeroCorp",
- AevumGalacticCybersystems: "Galactic Cybersystems",
- AevumWatchdogSecurity: "Watchdog Security",
- AevumRhoConstruction: "Rho Construction",
- AevumPolice: "Aevum Police Headquarters",
- AevumNetLinkTechnologies: "NetLink Technologies",
- AevumCrushFitnessGym: "Crush Fitness Gym",
- AevumSnapFitnessGym: "Snap Fitness Gym",
- AevumSlums: "Aevum Slums",
-
- //Chongqing locations
- ChongqingTravelAgency: "Chongqing Travel Agency",
- ChongqingKuaiGongInternational: "KuaiGong International",
- ChongqingSolarisSpaceSystems: "Solaris Space Systems",
- ChongqingSlums: "Chongqing Slums",
-
- //Sector 12
- Sector12TravelAgency: "Sector-12 Travel Agency",
- Sector12RothmanUniversity: "Rothman University",
- Sector12MegaCorp: "MegaCorp",
- Sector12BladeIndustries: "Blade Industries",
- Sector12FourSigma: "Four Sigma",
- Sector12IcarusMicrosystems: "Icarus Microsystems",
- Sector12UniversalEnergy: "Universal Energy",
- Sector12DeltaOne: "DeltaOne",
- Sector12CIA: "Central Intelligence Agency",
- Sector12NSA: "National Security Agency",
- Sector12AlphaEnterprises: "Alpha Enterprises",
- Sector12CarmichaelSecurity: "Carmichael Security",
- Sector12FoodNStuff: "FoodNStuff",
- Sector12JoesGuns: "Joe's Guns",
- Sector12IronGym: "Iron Gym",
- Sector12PowerhouseGym: "Powerhouse Gym",
- Sector12Slums: "Sector-12 Slums",
- Sector12CityHall: "Sector-12 City Hall",
-
- //New Tokyo
- NewTokyoTravelAgency: "New Tokyo Travel Agency",
- NewTokyoDefComm: "DefComm",
- NewTokyoVitaLife: "VitaLife",
- NewTokyoGlobalPharmaceuticals: "Global Pharmaceuticals",
- NewTokyoNoodleBar: "Noodle Bar",
- NewTokyoSlums: "New Tokyo Slums",
-
- //Ishima
- IshimaTravelAgency: "Ishima Travel Agency",
- IshimaStormTechnologies: "Storm Technologies",
- IshimaNovaMedical: "Nova Medical",
- IshimaOmegaSoftware: "Omega Software",
- IshimaSlums: "Ishima Slums",
-
- //Volhaven
- VolhavenTravelAgency: "Volhaven Travel Agency",
- VolhavenZBInstituteOfTechnology: "ZB Institute of Technology",
- VolhavenOmniTekIncorporated: "OmniTek Incorporated",
- VolhavenNWO: "NWO",
- VolhavenHeliosLabs: "Helios Labs",
- VolhavenOmniaCybersystems: "Omnia Cybersystems",
- VolhavenLexoCorp: "LexoCorp",
- VolhavenSysCoreSecurities: "SysCore Securities",
- VolhavenCompuTek: "CompuTek",
- VolhavenMilleniumFitnessGym: "Millenium Fitness Gym",
- VolhavenSlums: "Volhaven Slums",
-
- //Generic locations
- Hospital: "Hospital",
- WorldStockExchange: "World Stock Exchange",
-}
-
-function displayLocationContent() {
- if (_engine_js__WEBPACK_IMPORTED_MODULE_5__["Engine"].debug) {
- console.log("displayLocationContent() called with location " + _Player_js__WEBPACK_IMPORTED_MODULE_8__["Player"].location)
- }
-
- var returnToWorld = document.getElementById("location-return-to-world-button");
-
- var locationName = document.getElementById("location-name");
-
- var locationInfo = document.getElementById("location-info");
-
- var softwareJob = document.getElementById("location-software-job");
- var softwareConsultantJob = document.getElementById("location-software-consultant-job")
- var itJob = document.getElementById("location-it-job");
- var securityEngineerJob = document.getElementById("location-security-engineer-job");
- var networkEngineerJob = document.getElementById("location-network-engineer-job");
- var businessJob = document.getElementById("location-business-job");
- var businessConsultantJob = document.getElementById("location-business-consultant-job");
- var securityJob = document.getElementById("location-security-job");
- var agentJob = document.getElementById("location-agent-job");
- var employeeJob = document.getElementById("location-employee-job");
- var employeePartTimeJob = document.getElementById("location-parttime-employee-job");
- var waiterJob = document.getElementById("location-waiter-job");
- var waiterPartTimeJob = document.getElementById("location-parttime-waiter-job");
-
- var work = Object(_utils_HelperFunctions_js__WEBPACK_IMPORTED_MODULE_13__["clearEventListeners"])("location-work");
-
- var jobTitle = document.getElementById("location-job-title");
- var jobReputation = document.getElementById("location-job-reputation");
- var companyFavor = document.getElementById("location-company-favor");
- var locationTxtDiv1 = document.getElementById("location-text-divider-1");
- var locationTxtDiv2 = document.getElementById("location-text-divider-2");
- var locationTxtDiv3 = document.getElementById("location-text-divider-3");
-
- var gymTrainStr = document.getElementById("location-gym-train-str");
- var gymTrainDef = document.getElementById("location-gym-train-def");
- var gymTrainDex = document.getElementById("location-gym-train-dex");
- var gymTrainAgi = document.getElementById("location-gym-train-agi");
-
- var studyComputerScience = document.getElementById("location-study-computer-science");
- var classDataStructures = document.getElementById("location-data-structures-class");
- var classNetworks = document.getElementById("location-networks-class");
- var classAlgorithms = document.getElementById("location-algorithms-class");
- var classManagement = document.getElementById("location-management-class");
- var classLeadership = document.getElementById("location-leadership-class");
-
- var purchase2gb = document.getElementById("location-purchase-2gb");
- var purchase4gb = document.getElementById("location-purchase-4gb");
- var purchase8gb = document.getElementById("location-purchase-8gb");
- var purchase16gb = document.getElementById("location-purchase-16gb");
- var purchase32gb = document.getElementById("location-purchase-32gb");
- var purchase64gb = document.getElementById("location-purchase-64gb");
- var purchase128gb = document.getElementById("location-purchase-128gb");
- var purchase256gb = document.getElementById("location-purchase-256gb");
- var purchase512gb = document.getElementById("location-purchase-512gb");
- var purchase1tb = document.getElementById("location-purchase-1tb");
- var purchaseTor = document.getElementById("location-purchase-tor");
- var purchaseHomeRam = document.getElementById("location-purchase-home-ram");
- var purchaseHomeCores = document.getElementById("location-purchase-home-cores");
-
- var travelAgencyText = document.getElementById("location-travel-agency-text");
- var travelToAevum = document.getElementById("location-travel-to-aevum");
- var travelToChongqing = document.getElementById("location-travel-to-chongqing");
- var travelToSector12 = document.getElementById("location-travel-to-sector12");
- var travelToNewTokyo = document.getElementById("location-travel-to-newtokyo");
- var travelToIshima = document.getElementById("location-travel-to-ishima");
- var travelToVolhaven = document.getElementById("location-travel-to-volhaven");
-
- var infiltrate = Object(_utils_HelperFunctions_js__WEBPACK_IMPORTED_MODULE_13__["clearEventListeners"])("location-infiltrate");
-
- var hospitalTreatment = document.getElementById("location-hospital-treatment");
-
- var slumsDescText = document.getElementById("location-slums-description");
- var slumsShoplift = document.getElementById("location-slums-shoplift");
- var slumsRobStore = document.getElementById("location-slums-rob-store");
- var slumsMug = document.getElementById("location-slums-mug");
- var slumsLarceny = document.getElementById("location-slums-larceny");
- var slumsDealDrugs = document.getElementById("location-slums-deal-drugs");
- var slumsBondForgery = document.getElementById("location-slums-bond-forgery");
- var slumsTrafficArms = document.getElementById("location-slums-traffic-arms");
- var slumsHomicide = document.getElementById("location-slums-homicide");
- var slumsGta = document.getElementById("location-slums-gta");
- var slumsKidnap = document.getElementById("location-slums-kidnap");
- var slumsAssassinate = document.getElementById("location-slums-assassinate");
- var slumsHeist = document.getElementById("location-slums-heist");
-
- var cityHallCreateCorporation = document.getElementById("location-cityhall-create-corporation");
-
- var nsaBladeburner = document.getElementById("location-nsa-bladeburner");
-
- var loc = _Player_js__WEBPACK_IMPORTED_MODULE_8__["Player"].location;
-
- returnToWorld.addEventListener("click", function() {
- _engine_js__WEBPACK_IMPORTED_MODULE_5__["Engine"].loadWorldContent();
- });
-
- locationName.innerHTML = loc;
- locationName.style.display = "block";
-
- locationInfo.style.display = "block";
-
- softwareJob.style.display = "none";
- softwareConsultantJob.style.display = "none";
- itJob.style.display = "none";
- securityEngineerJob.style.display = "none";
- networkEngineerJob.style.display = "none";
- businessJob.style.display = "none";
- businessConsultantJob.style.display = "none";
- securityJob.style.display = "none";
- agentJob.style.display = "none";
- employeeJob.style.display = "none";
- employeePartTimeJob.style.display = "none";
- waiterJob.style.display = "none";
- waiterPartTimeJob.style.display = "none";
-
- softwareJob.innerHTML = "Apply for Software Job";
- softwareConsultantJob.innerHTML = "Apply for a Software Consultant job";
- itJob.innerHTML = "Apply for IT Job";
- securityEngineerJob.innerHTML = "Apply for Security Engineer Job";
- networkEngineerJob.innerHTML = "Apply for Network Engineer Job";
- businessJob.innerHTML = "Apply for Business Job";
- businessConsultantJob.innerHTML = "Apply for a Business Consultant Job";
- securityJob.innerHTML = "Apply for Security Job";
- agentJob.innerHTML = "Apply for Agent Job";
- employeeJob.innerHTML = "Apply to be an Employee";
- employeePartTimeJob.innerHTML = "Apply to be a Part-time Employee";
- waiterJob.innerHTML = "Apply to be a Waiter";
- waiterPartTimeJob.innerHTML = "Apply to be a Part-time Waiter"
-
- work.style.display = "none";
-
- gymTrainStr.style.display = "none";
- gymTrainDef.style.display = "none";
- gymTrainDex.style.display = "none";
- gymTrainAgi.style.display = "none";
-
- studyComputerScience.style.display = "none";
- classDataStructures.style.display = "none";
- classNetworks.style.display = "none";
- classAlgorithms.style.display = "none";
- classManagement.style.display = "none";
- classLeadership.style.display = "none";
-
- purchase2gb.style.display = "none";
- purchase4gb.style.display = "none";
- purchase8gb.style.display = "none";
- purchase16gb.style.display = "none";
- purchase32gb.style.display = "none";
- purchase64gb.style.display = "none";
- purchase128gb.style.display = "none";
- purchase256gb.style.display = "none";
- purchase512gb.style.display = "none";
- purchase1tb.style.display = "none";
- purchaseTor.style.display = "none";
- purchaseHomeRam.style.display = "none";
- purchaseHomeCores.style.display = "none";
-
- purchase2gb.innerHTML = "Purchase 2GB Server - $" + Object(_utils_StringHelperFunctions_js__WEBPACK_IMPORTED_MODULE_16__["formatNumber"])(2*_Constants_js__WEBPACK_IMPORTED_MODULE_3__["CONSTANTS"].BaseCostFor1GBOfRamServer, 2);
- purchase4gb.innerHTML = "Purchase 4GB Server - $" + Object(_utils_StringHelperFunctions_js__WEBPACK_IMPORTED_MODULE_16__["formatNumber"])(4*_Constants_js__WEBPACK_IMPORTED_MODULE_3__["CONSTANTS"].BaseCostFor1GBOfRamServer, 2);
- purchase8gb.innerHTML = "Purchase 8GB Server - $" + Object(_utils_StringHelperFunctions_js__WEBPACK_IMPORTED_MODULE_16__["formatNumber"])(8*_Constants_js__WEBPACK_IMPORTED_MODULE_3__["CONSTANTS"].BaseCostFor1GBOfRamServer, 2);
- purchase16gb.innerHTML = "Purchase 16GB Server - $" + Object(_utils_StringHelperFunctions_js__WEBPACK_IMPORTED_MODULE_16__["formatNumber"])(16*_Constants_js__WEBPACK_IMPORTED_MODULE_3__["CONSTANTS"].BaseCostFor1GBOfRamServer, 2);
- purchase32gb.innerHTML = "Purchase 32GB Server - $" + Object(_utils_StringHelperFunctions_js__WEBPACK_IMPORTED_MODULE_16__["formatNumber"])(32*_Constants_js__WEBPACK_IMPORTED_MODULE_3__["CONSTANTS"].BaseCostFor1GBOfRamServer, 2);
- purchase64gb.innerHTML = "Purchase 64GB Server - $" + Object(_utils_StringHelperFunctions_js__WEBPACK_IMPORTED_MODULE_16__["formatNumber"])(64*_Constants_js__WEBPACK_IMPORTED_MODULE_3__["CONSTANTS"].BaseCostFor1GBOfRamServer, 2);
- purchase128gb.innerHTML = "Purchase 128GB Server - $" + Object(_utils_StringHelperFunctions_js__WEBPACK_IMPORTED_MODULE_16__["formatNumber"])(128*_Constants_js__WEBPACK_IMPORTED_MODULE_3__["CONSTANTS"].BaseCostFor1GBOfRamServer, 2);
- purchase256gb.innerHTML = "Purchase 256GB Server - $" + Object(_utils_StringHelperFunctions_js__WEBPACK_IMPORTED_MODULE_16__["formatNumber"])(256*_Constants_js__WEBPACK_IMPORTED_MODULE_3__["CONSTANTS"].BaseCostFor1GBOfRamServer, 2);
- purchase512gb.innerHTML = "Purchase 512GB Server - $" + Object(_utils_StringHelperFunctions_js__WEBPACK_IMPORTED_MODULE_16__["formatNumber"])(512*_Constants_js__WEBPACK_IMPORTED_MODULE_3__["CONSTANTS"].BaseCostFor1GBOfRamServer, 2);
- purchase1tb.innerHTML = "Purchase 1TB Server - $" + Object(_utils_StringHelperFunctions_js__WEBPACK_IMPORTED_MODULE_16__["formatNumber"])(1024*_Constants_js__WEBPACK_IMPORTED_MODULE_3__["CONSTANTS"].BaseCostFor1GBOfRamServer, 2);
- purchaseTor.innerHTML = "Purchase TOR Router - $" + Object(_utils_StringHelperFunctions_js__WEBPACK_IMPORTED_MODULE_16__["formatNumber"])(_Constants_js__WEBPACK_IMPORTED_MODULE_3__["CONSTANTS"].TorRouterCost, 2);
-
- travelAgencyText.style.display = "none";
- travelToAevum.style.display = "none";
- travelToChongqing.style.display = "none";
- travelToSector12.style.display = "none";
- travelToNewTokyo.style.display = "none";
- travelToIshima.style.display = "none";
- travelToVolhaven.style.display = "none";
-
- infiltrate.style.display = "none";
-
- hospitalTreatment.style.display = "none";
-
- slumsDescText.style.display = "none";
- slumsShoplift.style.display = "none";
- slumsRobStore.style.display = "none";
- slumsMug.style.display = "none";
- slumsLarceny.style.display = "none";
- slumsDealDrugs.style.display = "none";
- slumsBondForgery.style.display = "none";
- slumsTrafficArms.style.display = "none";
- slumsHomicide.style.display = "none";
- slumsGta.style.display = "none";
- slumsKidnap.style.display = "none";
- slumsAssassinate.style.display = "none";
- slumsHeist.style.display = "none";
-
- cityHallCreateCorporation.style.display = "none";
- nsaBladeburner.style.display = "none";
-
- //Check if the player is employed at this Location. If he is, display the "Work" button,
- //update the job title, etc.
- if (loc != "" && loc === _Player_js__WEBPACK_IMPORTED_MODULE_8__["Player"].companyName) {
- var company = _Company_js__WEBPACK_IMPORTED_MODULE_1__["Companies"][loc];
-
- jobTitle.style.display = "block";
- jobReputation.style.display = "inline";
- companyFavor.style.display = "inline";
- locationTxtDiv1.style.display = "block";
- locationTxtDiv2.style.display = "block";
- locationTxtDiv3.style.display = "block";
- jobTitle.innerHTML = "Job Title: " + _Player_js__WEBPACK_IMPORTED_MODULE_8__["Player"].companyPosition.positionName;
- var repGain = company.getFavorGain();
- if (repGain.length != 2) {repGain = 0;}
- repGain = repGain[0];
- jobReputation.innerHTML = "Company reputation: " + Object(_utils_StringHelperFunctions_js__WEBPACK_IMPORTED_MODULE_16__["formatNumber"])(company.playerReputation, 4) +
- "You will earn " +
- Object(_utils_StringHelperFunctions_js__WEBPACK_IMPORTED_MODULE_16__["formatNumber"])(repGain, 4) +
- " faction favor upon resetting after installing an Augmentation";
- companyFavor.innerHTML = "Company Favor: " + Object(_utils_StringHelperFunctions_js__WEBPACK_IMPORTED_MODULE_16__["formatNumber"])(company.favor, 4) +
- "Company favor increases the rate at which " +
- "you earn reputation for this company by 1% per favor. Company favor " +
- "is gained whenever you reset after installing an Augmentation. The amount of " +
- "favor you gain depends on how much reputation you have with the company";
- work.style.display = "block";
-
- var currPos = _Player_js__WEBPACK_IMPORTED_MODULE_8__["Player"].companyPosition;
-
- work.addEventListener("click", function() {
- if (currPos.isPartTimeJob()) {
- _Player_js__WEBPACK_IMPORTED_MODULE_8__["Player"].startWorkPartTime();
- } else {
- _Player_js__WEBPACK_IMPORTED_MODULE_8__["Player"].startWork();
- }
- return false;
- });
-
- //Change the text for the corresponding position from "Apply for X Job" to "Apply for promotion"
- if (currPos.isSoftwareJob()) {
- softwareJob.innerHTML = "Apply for a promotion (Software)";
- } else if (currPos.isSoftwareConsultantJob()) {
- softwareConsultantJob.innerHTML = "Apply for a promotion (Software Consultant)";
- } else if (currPos.isITJob()) {
- itJob.innerHTML = "Apply for a promotion (IT)";
- } else if (currPos.isSecurityEngineerJob()) {
- securityEngineerJob.innerHTML = "Apply for a promotion (Security Engineer)";
- } else if (currPos.isNetworkEngineerJob()) {
- networkEngineerJob.innerHTML = "Apply for a promotion (Network Engineer)";
- } else if (currPos.isBusinessJob()) {
- businessJob.innerHTML = "Apply for a promotion (Business)";
- } else if (currPos.isBusinessConsultantJob()) {
- businessConsultantJob.innerHTML = "Apply for a promotion (Business Consultant)";
- } else if (currPos.isSecurityJob()) {
- securityJob.innerHTML = "Apply for a promotion (Security)";
- } else if (currPos.isAgentJob()) {
- agentJob.innerHTML = "Apply for a promotion (Agent)";
- }
- } else {
- jobTitle.style.display = "none";
- jobReputation.style.display = "none";
- companyFavor.style.display = "none";
- locationTxtDiv1.style.display = "none";
- locationTxtDiv2.style.display = "none";
- locationTxtDiv3.style.display = "none";
- }
-
- //Calculate hospital Cost
- if (_Player_js__WEBPACK_IMPORTED_MODULE_8__["Player"].hp < 0) {_Player_js__WEBPACK_IMPORTED_MODULE_8__["Player"].hp = 0;}
- var hospitalTreatmentCost = (_Player_js__WEBPACK_IMPORTED_MODULE_8__["Player"].max_hp - _Player_js__WEBPACK_IMPORTED_MODULE_8__["Player"].hp) * _Constants_js__WEBPACK_IMPORTED_MODULE_3__["CONSTANTS"].HospitalCostPerHp;
-
- //Set tooltip for job requirements
- setJobRequirementTooltip(loc, _Company_js__WEBPACK_IMPORTED_MODULE_1__["CompanyPositions"].SoftwareIntern, softwareJob);
- setJobRequirementTooltip(loc, _Company_js__WEBPACK_IMPORTED_MODULE_1__["CompanyPositions"].SoftwareConsultant, softwareConsultantJob);
- setJobRequirementTooltip(loc, _Company_js__WEBPACK_IMPORTED_MODULE_1__["CompanyPositions"].ITIntern, itJob);
- setJobRequirementTooltip(loc, _Company_js__WEBPACK_IMPORTED_MODULE_1__["CompanyPositions"].SecurityEngineer, securityEngineerJob);
- setJobRequirementTooltip(loc, _Company_js__WEBPACK_IMPORTED_MODULE_1__["CompanyPositions"].NetworkEngineer, networkEngineerJob);
- setJobRequirementTooltip(loc, _Company_js__WEBPACK_IMPORTED_MODULE_1__["CompanyPositions"].BusinessIntern, businessJob);
- setJobRequirementTooltip(loc, _Company_js__WEBPACK_IMPORTED_MODULE_1__["CompanyPositions"].BusinessConsultant, businessConsultantJob);
- setJobRequirementTooltip(loc, _Company_js__WEBPACK_IMPORTED_MODULE_1__["CompanyPositions"].SecurityGuard, securityJob);
- setJobRequirementTooltip(loc, _Company_js__WEBPACK_IMPORTED_MODULE_1__["CompanyPositions"].FieldAgent, agentJob);
- setJobRequirementTooltip(loc, _Company_js__WEBPACK_IMPORTED_MODULE_1__["CompanyPositions"].Employee, employeeJob);
- setJobRequirementTooltip(loc, _Company_js__WEBPACK_IMPORTED_MODULE_1__["CompanyPositions"].PartTimeEmployee, employeePartTimeJob);
- setJobRequirementTooltip(loc, _Company_js__WEBPACK_IMPORTED_MODULE_1__["CompanyPositions"].Waiter, waiterJob);
- setJobRequirementTooltip(loc, _Company_js__WEBPACK_IMPORTED_MODULE_1__["CompanyPositions"].PartTimeWaiter, waiterPartTimeJob);
-
- switch (loc) {
- case Locations.AevumTravelAgency:
- travelAgencyText.style.display = "block";
- travelToChongqing.style.display = "block";
- travelToSector12.style.display = "block";
- travelToNewTokyo.style.display = "block";
- travelToIshima.style.display = "block";
- travelToVolhaven.style.display = "block";
- break;
-
- case Locations.AevumSummitUniversity:
- var costMult = 4, expMult = 3;
- displayUniversityLocationContent(costMult);
- setUniversityLocationButtons(costMult, expMult);
- break;
-
- case Locations.AevumECorp:
- locationInfo.innerHTML = _Company_js__WEBPACK_IMPORTED_MODULE_1__["Companies"][loc].info;
-
- softwareJob.style.display = "block";
- itJob.style.display = "block";
- securityEngineerJob.style.display = "block";
- networkEngineerJob.style.display = "block";
- businessJob.style.display = "block";
- securityJob.style.display = "block";
-
- purchase128gb.style.display = "block";
- purchase256gb.style.display = "block";
- purchase512gb.style.display = "block";
- purchase1tb.style.display = "block";
- purchaseTor.style.display = "block";
- purchaseHomeRam.style.display = "block";
- purchaseHomeCores.style.display = "block";
- setInfiltrateButton(infiltrate, Locations.AevumECorp,
- 6000, 116, 150, 8.5);
- break;
-
- case Locations.AevumBachmanAndAssociates:
- locationInfo.innerHTML = _Company_js__WEBPACK_IMPORTED_MODULE_1__["Companies"][loc].info;
-
- softwareJob.style.display = "block";
- itJob.style.display = "block";
- securityEngineerJob.style.display = "block";
- networkEngineerJob.style.display = "block";
- businessJob.style.display = "block";
- securityJob.style.display = "block";
- setInfiltrateButton(infiltrate, Locations.AevumBachmanAndAssociates,
- 1500, 42, 60, 5.75);
- break;
-
- case Locations.AevumClarkeIncorporated:
- locationInfo.innerHTML = _Company_js__WEBPACK_IMPORTED_MODULE_1__["Companies"][loc].info;
-
- softwareJob.style.display = "block";
- itJob.style.display = "block";
- securityEngineerJob.style.display = "block";
- networkEngineerJob.style.display = "block";
- businessJob.style.display = "block";
- securityJob.style.display = "block";
- setInfiltrateButton(infiltrate, Locations.AevumClarkeIncorporated,
- 2400, 34, 75, 5.4);
- break;
-
- case Locations.AevumFulcrumTechnologies:
- locationInfo.innerHTML = _Company_js__WEBPACK_IMPORTED_MODULE_1__["Companies"][loc].info;
-
- softwareJob.style.display = "block";
- itJob.style.display = "block";
- securityEngineerJob.style.display = "block";
- networkEngineerJob.style.display = "block";
- businessJob.style.display = "block";
-
- purchase128gb.style.display = "block";
- purchase256gb.style.display = "block";
- purchase512gb.style.display = "block";
- purchase1tb.style.display = "block";
- purchaseTor.style.display = "block";
- purchaseHomeRam.style.display = "block";
- purchaseHomeCores.style.display = "block";
- setInfiltrateButton(infiltrate, Locations.AevumFulcrumTechnologies,
- 6000, 96, 100, 9);
- break;
-
- case Locations.AevumAeroCorp:
- locationInfo.innerHTML = _Company_js__WEBPACK_IMPORTED_MODULE_1__["Companies"][loc].info;
-
- softwareJob.style.display = "block";
- itJob.style.display = "block";
- securityEngineerJob.style.display = "block";
- networkEngineerJob.style.display = "block";
- securityJob.style.display = "block";
- setInfiltrateButton(infiltrate, Locations.AevumAeroCorp,
- 2000, 32, 50, 6.3);
- break;
-
- case Locations.AevumGalacticCybersystems:
- locationInfo.innerHTML = _Company_js__WEBPACK_IMPORTED_MODULE_1__["Companies"][loc].info;
-
- softwareJob.style.display = "block";
- softwareConsultantJob.style.display = "block";
- itJob.style.display = "block";
- securityEngineerJob.style.display = "block";
- networkEngineerJob.style.display = "block";
- businessJob.style.display = "block";
- setInfiltrateButton(infiltrate, Locations.AevumGalacticCybersystems,
- 1400, 30, 50, 5.3);
- break;
-
- case Locations.AevumWatchdogSecurity:
- locationInfo.innerHTML = _Company_js__WEBPACK_IMPORTED_MODULE_1__["Companies"][loc].info;
-
- softwareJob.style.display = "block";
- softwareConsultantJob.style.display = "block";
- itJob.style.display = "block";
- securityEngineerJob.style.display = "block";
- networkEngineerJob.style.display = "block";
- securityJob.style.display = "block";
- agentJob.style.display = "block";
- setInfiltrateButton(infiltrate, Locations.AevumWatchdogSecurity,
- 850, 16, 30, 4.5);
- break;
-
- case Locations.AevumRhoConstruction:
- locationInfo.innerHTML = _Company_js__WEBPACK_IMPORTED_MODULE_1__["Companies"][loc].info;
-
- softwareJob.style.display = "block";
- businessJob.style.display = "block";
- setInfiltrateButton(infiltrate, Locations.AevumRhoConstruction,
- 600, 12, 20, 2.7);
- break;
-
- case Locations.AevumPolice:
- locationInfo.innerHTML = _Company_js__WEBPACK_IMPORTED_MODULE_1__["Companies"][loc].info;
-
- softwareJob.style.display = "block";
- securityJob.style.display = "block";
- setInfiltrateButton(infiltrate, Locations.AevumPolice,
- 700, 14, 25, 3.2);
- break;
-
- case Locations.AevumNetLinkTechnologies:
- locationInfo.innerHTML = _Company_js__WEBPACK_IMPORTED_MODULE_1__["Companies"][loc].info;
-
- softwareJob.style.display = "block";
- softwareConsultantJob.style.display = "block";
- itJob.style.display = "block";
- securityEngineerJob.style.display = "block";
- networkEngineerJob.style.display = "block";
-
- purchase2gb.style.display = "block";
- purchase4gb.style.display = "block";
- purchase8gb.style.display = "block";
- purchaseTor.style.display = "block";
- purchaseHomeRam.style.display = "block";
- purchaseHomeCores.style.display = "block";
- setInfiltrateButton(infiltrate, Locations.AevumNetLinkTechnologies,
- 160, 10, 15, 1.8);
- break;
-
- case Locations.AevumCrushFitnessGym:
- var costMult = 3, expMult = 2;
- displayGymLocationContent(costMult);
- setGymLocationButtons(costMult, expMult);
- break;
-
- case Locations.AevumSnapFitnessGym:
- var costMult = 10, expMult = 5;
- displayGymLocationContent(costMult);
- setGymLocationButtons(costMult, expMult);
- break;
-
- case Locations.ChongqingTravelAgency:
- travelAgencyText.style.display = "block";
- travelToAevum.style.display = "block";
- travelToSector12.style.display = "block";
- travelToNewTokyo.style.display = "block";
- travelToIshima.style.display = "block";
- travelToVolhaven.style.display = "block";
- break;
-
- case Locations.ChongqingKuaiGongInternational:
- locationInfo.innerHTML = _Company_js__WEBPACK_IMPORTED_MODULE_1__["Companies"][loc].info;
-
- softwareJob.style.display = "block";
- itJob.style.display = "block";
- securityEngineerJob.style.display = "block";
- networkEngineerJob.style.display = "block";
- businessJob.style.display = "block";
- securityJob.style.display = "block";
- setInfiltrateButton(infiltrate, Locations.ChongqingKuaiGongInternational,
- 5500, 48, 100, 9);
- break;
-
- case Locations.ChongqingSolarisSpaceSystems:
- locationInfo.innerHTML = _Company_js__WEBPACK_IMPORTED_MODULE_1__["Companies"][loc].info;
-
- softwareJob.style.display = "block";
- itJob.style.display = "block";
- securityEngineerJob.style.display = "block";
- networkEngineerJob.style.display = "block";
- securityJob.style.display = "block";
- setInfiltrateButton(infiltrate, Locations.ChongqingSolarisSpaceSystems,
- 3600, 26, 75, 8.6);
- break;
-
-
- case Locations.Sector12TravelAgency:
- travelAgencyText.style.display = "block";
- travelToAevum.style.display = "block";
- travelToChongqing.style.display = "block";
- travelToNewTokyo.style.display = "block";
- travelToIshima.style.display = "block";
- travelToVolhaven.style.display = "block";
- break;
-
- case Locations.Sector12RothmanUniversity:
- var costMult = 3, expMult = 2;
- displayUniversityLocationContent(costMult);
- setUniversityLocationButtons(costMult, expMult);
- break;
-
- case Locations.Sector12MegaCorp:
- locationInfo.innerHTML = _Company_js__WEBPACK_IMPORTED_MODULE_1__["Companies"][loc].info;
-
- softwareJob.style.display = "block";
- itJob.style.display = "block";
- securityEngineerJob.style.display = "block";
- networkEngineerJob.style.display = "block";
- businessJob.style.display = "block";
- securityJob.style.display = "block";
- setInfiltrateButton(infiltrate, Locations.Sector12MegaCorp,
- 6000, 114, 125, 9.8);
- break;
-
- case Locations.Sector12BladeIndustries:
- locationInfo.innerHTML = _Company_js__WEBPACK_IMPORTED_MODULE_1__["Companies"][loc].info;
-
- softwareJob.style.display = "block";
- itJob.style.display = "block";
- securityEngineerJob.style.display = "block";
- networkEngineerJob.style.display = "block";
- businessJob.style.display = "block";
- securityJob.style.display = "block";
- setInfiltrateButton(infiltrate, Locations.Sector12BladeIndustries,
- 3000, 46, 100, 6.7);
- break;
-
- case Locations.Sector12FourSigma:
- locationInfo.innerHTML = _Company_js__WEBPACK_IMPORTED_MODULE_1__["Companies"][loc].info;
-
- softwareJob.style.display = "block";
- itJob.style.display = "block";
- securityEngineerJob.style.display = "block";
- networkEngineerJob.style.display = "block";
- businessJob.style.display = "block";
- securityJob.style.display = "block";
- setInfiltrateButton(infiltrate, Locations.Sector12FourSigma,
- 1500, 58, 100, 10.2);
- break;
-
- case Locations.Sector12IcarusMicrosystems:
- locationInfo.innerHTML = _Company_js__WEBPACK_IMPORTED_MODULE_1__["Companies"][loc].info;
-
- softwareJob.style.display = "block";
- softwareConsultantJob.style.display = "block";
- itJob.style.display = "block";
- securityEngineerJob.style.display = "block";
- networkEngineerJob.style.display = "block";
- businessJob.style.display = "block";
- setInfiltrateButton(infiltrate, Locations.Sector12IcarusMicrosystems,
- 900, 32, 70, 7.8);
- break;
-
- case Locations.Sector12UniversalEnergy:
- locationInfo.innerHTML = _Company_js__WEBPACK_IMPORTED_MODULE_1__["Companies"][loc].info;
-
- softwareJob.style.display = "block";
- softwareConsultantJob.style.display = "block";
- itJob.style.display = "block";
- securityEngineerJob.style.display = "block";
- networkEngineerJob.style.display = "block";
- businessJob.style.display = "block";
- setInfiltrateButton(infiltrate, Locations.Sector12UniversalEnergy,
- 775, 24, 50, 6.3);
- break;
-
- case Locations.Sector12DeltaOne:
- locationInfo.innerHTML = _Company_js__WEBPACK_IMPORTED_MODULE_1__["Companies"][loc].info;
-
- softwareJob.style.display = "block";
- itJob.style.display = "block";
- securityEngineerJob.style.display = "block";
- networkEngineerJob.style.display = "block";
- securityJob.style.display = "block";
- setInfiltrateButton(infiltrate, Locations.Sector12DeltaOne,
- 1200, 38, 75, 6.3);
- break;
-
- case Locations.Sector12CIA:
- locationInfo.innerHTML = _Company_js__WEBPACK_IMPORTED_MODULE_1__["Companies"][loc].info;
-
- softwareJob.style.display = "block";
- itJob.style.display = "block";
- securityEngineerJob.style.display = "block";
- networkEngineerJob.style.display = "block";
- securityJob.style.display = "block";
- agentJob.style.display = "block";
- setInfiltrateButton(infiltrate, Locations.Sector12CIA,
- 1450, 44, 80, 7.6);
- break;
-
- case Locations.Sector12NSA:
- locationInfo.innerHTML = _Company_js__WEBPACK_IMPORTED_MODULE_1__["Companies"][loc].info;
-
- softwareJob.style.display = "block";
- itJob.style.display = "block";
- securityEngineerJob.style.display = "block";
- networkEngineerJob.style.display = "block";
- securityJob.style.display = "block";
- agentJob.style.display = "block";
- if (_Player_js__WEBPACK_IMPORTED_MODULE_8__["Player"].bitNodeN === 6 || _NetscriptFunctions_js__WEBPACK_IMPORTED_MODULE_7__["hasBladeburnerSF"] === true) {
- if (_Player_js__WEBPACK_IMPORTED_MODULE_8__["Player"].bladeburner instanceof _Bladeburner_js__WEBPACK_IMPORTED_MODULE_0__["Bladeburner"]) {
- //Note: Can't infiltrate NSA when part of bladeburner
- nsaBladeburner.innerText = "Enter Bladeburner Headquarters";
- } else {
- setInfiltrateButton(infiltrate, Locations.Sector12NSA,
- 1400, 40, 80, 7.2);
- nsaBladeburner.innerText = "Apply to Bladeburner Division";
- }
- nsaBladeburner.style.display = "block";
- } else {
- setInfiltrateButton(infiltrate, Locations.Sector12NSA,
- 1400, 40, 80, 7.2);
- }
- break;
-
- case Locations.Sector12AlphaEnterprises:
- locationInfo.innerHTML = _Company_js__WEBPACK_IMPORTED_MODULE_1__["Companies"][loc].info;
-
- softwareJob.style.display = "block";
- softwareConsultantJob.style.display = "block";
- businessJob.style.display = "block";
- purchase2gb.style.display = "block";
- purchase4gb.style.display = "block";
- purchaseTor.style.display = "block";
- purchaseHomeRam.style.display = "block";
- purchaseHomeCores.style.display = "block";
- setInfiltrateButton(infiltrate, Locations.Sector12AlphaEnterprises,
- 250, 14, 40, 2.7);
- break;
-
- case Locations.Sector12CarmichaelSecurity:
- locationInfo.innerHTML = _Company_js__WEBPACK_IMPORTED_MODULE_1__["Companies"][loc].info;
-
- softwareJob.style.display = "block";
- softwareConsultantJob.style.display = "block";
- itJob.style.display = "block";
- securityEngineerJob.style.display = "block";
- networkEngineerJob.style.display = "block";
- securityJob.style.display = "block";
- agentJob.style.display = "block";
- setInfiltrateButton(infiltrate, Locations.Sector12CarmichaelSecurity,
- 500, 18, 60, 2.7);
- break;
-
- case Locations.Sector12FoodNStuff:
- locationInfo.innerHTML = _Company_js__WEBPACK_IMPORTED_MODULE_1__["Companies"][loc].info;
-
- employeeJob.style.display = "block";
- employeePartTimeJob.style.display = "block";
- break;
-
- case Locations.Sector12JoesGuns:
- locationInfo.innerHTML = _Company_js__WEBPACK_IMPORTED_MODULE_1__["Companies"][loc].info;
-
- employeeJob.style.display = "block";
- employeePartTimeJob.style.display = "block";
- setInfiltrateButton(infiltrate, Locations.Sector12JoesGuns,
- 120, 8, 20, 2.2);
- break;
-
- case Locations.Sector12IronGym:
- var costMult = 1, expMult = 1;
- displayGymLocationContent(costMult);
- setGymLocationButtons(costMult, expMult);
- break;
-
- case Locations.Sector12PowerhouseGym:
- var costMult = 20, expMult = 10;
- displayGymLocationContent(costMult);
- setGymLocationButtons(costMult, expMult);
- break;
-
- case Locations.Sector12CityHall:
- cityHallCreateCorporation.style.display = "block";
- if (_Player_js__WEBPACK_IMPORTED_MODULE_8__["Player"].corporation instanceof _CompanyManagement_js__WEBPACK_IMPORTED_MODULE_2__["Corporation"]) {
- cityHallCreateCorporation.className = "a-link-button-inactive";
- } else {
- cityHallCreateCorporation.className = "a-link-button";
- }
- break;
-
- case Locations.NewTokyoTravelAgency:
- travelAgencyText.style.display = "block";
- travelToAevum.style.display = "block";
- travelToChongqing.style.display = "block";
- travelToSector12.style.display = "block";
- travelToIshima.style.display = "block";
- travelToVolhaven.style.display = "block";
- break;
-
- case Locations.NewTokyoDefComm:
- locationInfo.innerHTML = _Company_js__WEBPACK_IMPORTED_MODULE_1__["Companies"][loc].info;
-
- softwareJob.style.display = "block";
- softwareConsultantJob.style.display = "block";
- itJob.style.display = "block";
- securityEngineerJob.style.display = "block";
- networkEngineerJob.style.display = "block";
- setInfiltrateButton(infiltrate, Locations.NewTokyoDefComm,
- 1300, 28, 70, 5.4);
- break;
-
- case Locations.NewTokyoVitaLife:
- locationInfo.innerHTML = _Company_js__WEBPACK_IMPORTED_MODULE_1__["Companies"][loc].info;
-
- softwareJob.style.display = "block";
- softwareConsultantJob.style.display = "block";
- itJob.style.display = "block";
- securityEngineerJob.style.display = "block";
- networkEngineerJob.style.display = "block";
- businessJob.style.display = "block";
- setInfiltrateButton(infiltrate, Locations.NewTokyoVitaLife,
- 750, 22, 100, 5);
- break;
-
- case Locations.NewTokyoGlobalPharmaceuticals:
- locationInfo.innerHTML = _Company_js__WEBPACK_IMPORTED_MODULE_1__["Companies"][loc].info;
-
- softwareJob.style.display = "block";
- softwareConsultantJob.style.display = "block";
- itJob.style.display = "block";
- securityEngineerJob.style.display = "block";
- networkEngineerJob.style.display = "block";
- businessJob.style.display = "block";
- securityJob.style.display = "block";
- setInfiltrateButton(infiltrate, Locations.NewTokyoGlobalPharmaceuticals,
- 900, 24, 80, 5.4);
- break;
-
- case Locations.NewTokyoNoodleBar:
- locationInfo.innerHTML = _Company_js__WEBPACK_IMPORTED_MODULE_1__["Companies"][loc].info;
-
- waiterJob.style.display = "block";
- waiterPartTimeJob.style.display = "block";
- break;
-
- case Locations.IshimaTravelAgency:
- travelAgencyText.style.display = "block";
- travelToAevum.style.display = "block";
- travelToChongqing.style.display = "block";
- travelToSector12.style.display = "block";
- travelToNewTokyo.style.display = "block";
- travelToVolhaven.style.display = "block";
- break;
-
- case Locations.IshimaStormTechnologies:
- locationInfo.innerHTML = _Company_js__WEBPACK_IMPORTED_MODULE_1__["Companies"][loc].info;
-
- softwareJob.style.display = "block";
- softwareConsultantJob.style.display = "block";
- itJob.style.display = "block";
- securityEngineerJob.style.display = "block";
- networkEngineerJob.style.display = "block";
- businessJob.style.display = "block";
- securityJob.style.display = "none";
- agentJob.style.display = "none";
- employeeJob.style.display = "none";
- waiterJob.style.display = "none";
-
- purchase32gb.style.display = "block";
- purchase64gb.style.display = "block";
- purchase128gb.style.display = "block";
- purchase256gb.style.display = "block";
- purchaseHomeRam.style.display = "block";
- purchaseHomeCores.style.display = "block";
- setInfiltrateButton(infiltrate, Locations.IshimaStormTechnologies,
- 700, 24, 100, 5.9);
- break;
-
- case Locations.IshimaNovaMedical:
- locationInfo.innerHTML = _Company_js__WEBPACK_IMPORTED_MODULE_1__["Companies"][loc].info;
-
- softwareJob.style.display = "block";
- softwareConsultantJob.style.display = "block";
- itJob.style.display = "block";
- securityEngineerJob.style.display = "block";
- networkEngineerJob.style.display = "block";
- businessJob.style.display = "block";
- setInfiltrateButton(infiltrate, Locations.IshimaNovaMedical,
- 600, 20, 50, 4.5);
- break;
-
- case Locations.IshimaOmegaSoftware:
- locationInfo.innerHTML = _Company_js__WEBPACK_IMPORTED_MODULE_1__["Companies"][loc].info;
-
- softwareJob.style.display = "block";
- softwareConsultantJob.style.display = "block";
- itJob.style.display = "block";
- businessJob.style.display = "block";
-
- purchase4gb.style.display = "block";
- purchase8gb.style.display = "block";
- purchase16gb.style.display = "block";
- purchase32gb.style.display = "block";
- purchaseTor.style.display = "block";
- purchaseHomeRam.style.display = "block";
- purchaseHomeCores.style.display = "block";
- setInfiltrateButton(infiltrate, Locations.IshimaOmegaSoftware,
- 200, 10, 40, 2.3);
- break;
-
- case Locations.VolhavenTravelAgency:
- travelAgencyText.style.display = "block";
- travelToAevum.style.display = "block";
- travelToChongqing.style.display = "block";
- travelToSector12.style.display = "block";
- travelToNewTokyo.style.display = "block";
- travelToIshima.style.display = "block";
- break;
-
- case Locations.VolhavenZBInstituteOfTechnology:
- var costMult = 5, expMult = 4;
- displayUniversityLocationContent(costMult);
- setUniversityLocationButtons(costMult, expMult);
- break;
-
- case Locations.VolhavenOmniTekIncorporated:
- locationInfo.innerHTML = _Company_js__WEBPACK_IMPORTED_MODULE_1__["Companies"][loc].info;
-
- softwareJob.style.display = "block";
- itJob.style.display = "block";
- securityEngineerJob.style.display = "block";
- networkEngineerJob.style.display = "block";
- businessJob.style.display = "block";
- securityJob.style.display = "block";
-
- purchase128gb.style.display = "block";
- purchase256gb.style.display = "block";
- purchase512gb.style.display = "block";
- purchase1tb.style.display = "block";
- setInfiltrateButton(infiltrate, Locations.VolhavenOmniTekIncorporated,
- 1500, 44, 100, 6.3);
- break;
-
- case Locations.VolhavenNWO:
- locationInfo.innerHTML = _Company_js__WEBPACK_IMPORTED_MODULE_1__["Companies"][loc].info;
-
- softwareJob.style.display = "block";
- itJob.style.display = "block";
- securityEngineerJob.style.display = "block";
- networkEngineerJob.style.display = "block";
- businessJob.style.display = "block";
- securityJob.style.display = "block";
- setInfiltrateButton(infiltrate, Locations.VolhavenNWO,
- 1800, 56, 200, 7.2);
- break;
-
- case Locations.VolhavenHeliosLabs:
- locationInfo.innerHTML = _Company_js__WEBPACK_IMPORTED_MODULE_1__["Companies"][loc].info;
-
- softwareJob.style.display = "block";
- softwareConsultantJob.style.display = "block";
- itJob.style.display = "block";
- securityEngineerJob.style.display = "block";
- networkEngineerJob.style.display = "block";
- setInfiltrateButton(infiltrate, Locations.VolhavenHeliosLabs,
- 1200, 28, 75, 5.4);
- break;
-
- case Locations.VolhavenOmniaCybersystems:
- locationInfo.innerHTML = _Company_js__WEBPACK_IMPORTED_MODULE_1__["Companies"][loc].info;
-
- softwareJob.style.display = "block";
- itJob.style.display = "block";
- securityEngineerJob.style.display = "block";
- networkEngineerJob.style.display = "block";
- securityJob.style.display = "block";
- setInfiltrateButton(infiltrate, Locations.VolhavenOmniaCybersystems,
- 900, 28, 90, 5.8);
- break;
-
- case Locations.VolhavenLexoCorp:
- locationInfo.innerHTML = _Company_js__WEBPACK_IMPORTED_MODULE_1__["Companies"][loc].info;
-
- softwareJob.style.display = "block";
- softwareConsultantJob.style.display = "block";
- itJob.style.display = "block";
- securityEngineerJob.style.display = "block";
- networkEngineerJob.style.display = "block";
- businessJob.style.display = "block";
- securityJob.style.display = "block";
- setInfiltrateButton(infiltrate, Locations.VolhavenLexoCorp,
- 500, 14, 40, 3.1);
- break;
-
- case Locations.VolhavenSysCoreSecurities:
- locationInfo.innerHTML = _Company_js__WEBPACK_IMPORTED_MODULE_1__["Companies"][loc].info;
-
- softwareJob.style.display = "block";
- itJob.style.display = "block";
- securityEngineerJob.style.display = "block";
- networkEngineerJob.style.display = "block";
- setInfiltrateButton(infiltrate, Locations.VolhavenSysCoreSecurities,
- 600, 16, 50, 3.6);
- break;
-
- case Locations.VolhavenCompuTek:
- locationInfo.innerHTML = _Company_js__WEBPACK_IMPORTED_MODULE_1__["Companies"][loc].info;
-
- softwareJob.style.display = "block";
- softwareConsultantJob.style.display = "block";
- itJob.style.display = "block";
- securityEngineerJob.style.display = "block";
- networkEngineerJob.style.display = "block";
-
- purchase8gb.style.display = "block";
- purchase16gb.style.display = "block";
- purchase32gb.style.display = "block";
- purchase64gb.style.display = "block";
- purchase128gb.style.display = "block";
- purchase256gb.style.display = "block";
- purchaseTor.style.display = "block";
- purchaseHomeRam.style.display = "block";
- purchaseHomeCores.style.display = "block";
- setInfiltrateButton(infiltrate, Locations.VolhavenCompuTek,
- 300, 12, 35, 3.1);
- break;
-
- case Locations.VolhavenMilleniumFitnessGym:
- var costMult = 7, expMult = 4;
- displayGymLocationContent(costMult);
- setGymLocationButtons(costMult, expMult);
- break;
-
- //All Slums
- case Locations.AevumSlums:
- case Locations.ChongqingSlums:
- case Locations.Sector12Slums:
- case Locations.NewTokyoSlums:
- case Locations.IshimaSlums:
- case Locations.VolhavenSlums:
- var shopliftChance = Object(_Crimes_js__WEBPACK_IMPORTED_MODULE_4__["determineCrimeChanceShoplift"])();
- var robStoreChance = Object(_Crimes_js__WEBPACK_IMPORTED_MODULE_4__["determineCrimeChanceRobStore"])();
- var mugChance = Object(_Crimes_js__WEBPACK_IMPORTED_MODULE_4__["determineCrimeChanceMug"])();
- var larcenyChance = Object(_Crimes_js__WEBPACK_IMPORTED_MODULE_4__["determineCrimeChanceLarceny"])();
- var drugsChance = Object(_Crimes_js__WEBPACK_IMPORTED_MODULE_4__["determineCrimeChanceDealDrugs"])();
- var bondChance = Object(_Crimes_js__WEBPACK_IMPORTED_MODULE_4__["determineCrimeChanceBondForgery"])();
- var armsChance = Object(_Crimes_js__WEBPACK_IMPORTED_MODULE_4__["determineCrimeChanceTraffickArms"])();
- var homicideChance = Object(_Crimes_js__WEBPACK_IMPORTED_MODULE_4__["determineCrimeChanceHomicide"])();
- var gtaChance = Object(_Crimes_js__WEBPACK_IMPORTED_MODULE_4__["determineCrimeChanceGrandTheftAuto"])();
- var kidnapChance = Object(_Crimes_js__WEBPACK_IMPORTED_MODULE_4__["determineCrimeChanceKidnap"])();
- var assassinateChance = Object(_Crimes_js__WEBPACK_IMPORTED_MODULE_4__["determineCrimeChanceAssassination"])();
- var heistChance = Object(_Crimes_js__WEBPACK_IMPORTED_MODULE_4__["determineCrimeChanceHeist"])();
-
- slumsDescText.style.display = "block";
- slumsShoplift.style.display = "block";
- slumsShoplift.innerHTML = "Shoplift (" + (shopliftChance*100).toFixed(3) + "% chance of success)";
- slumsShoplift.innerHTML += ' Attempt to shoplift from a low-end retailer ';
- slumsRobStore.style.display = "block";
- slumsRobStore.innerHTML = "Rob store(" + (robStoreChance*100).toFixed(3) + "% chance of success)";
- slumsRobStore.innerHTML += 'Attempt to commit armed robbery on a high-end store ';
- slumsMug.style.display = "block";
- slumsMug.innerHTML = "Mug someone (" + (mugChance*100).toFixed(3) + "% chance of success)";
- slumsMug.innerHTML += ' Attempt to mug a random person on the street ';
- slumsLarceny.style.display = "block";
- slumsLarceny.innerHTML = "Larceny (" + (larcenyChance*100).toFixed(3) + "% chance of success)";
- slumsLarceny.innerHTML +=" Attempt to rob property from someone's house ";
- slumsDealDrugs.style.display = "block";
- slumsDealDrugs.innerHTML = "Deal Drugs (" + (drugsChance*100).toFixed(3) + "% chance of success)";
- slumsDealDrugs.innerHTML += ' Attempt to deal drugs ';
- slumsBondForgery.style.display = "block";
- slumsBondForgery.innerHTML = "Bond Forgery(" + (bondChance*100).toFixed(3) + "% chance of success)";
- slumsBondForgery.innerHTML += " Attempt to forge corporate bonds";
- slumsTrafficArms.style.display = "block";
- slumsTrafficArms.innerHTML = "Traffick Illegal Arms (" + (armsChance*100).toFixed(3) + "% chance of success)";
- slumsTrafficArms.innerHTML += ' Attempt to smuggle illegal arms into the city and sell them to gangs and criminal organizations ';
- slumsHomicide.style.display = "block";
- slumsHomicide.innerHTML = "Homicide (" + (homicideChance*100).toFixed(3) + "% chance of success)";
- slumsHomicide.innerHTML += ' Attempt to murder a random person on the street';
- slumsGta.style.display = "block";
- slumsGta.innerHTML = "Grand Theft Auto (" + (gtaChance*100).toFixed(3) + "% chance of success)";
- slumsGta.innerHTML += ' Attempt to commit grand theft auto ';
- slumsKidnap.style.display = "block";
- slumsKidnap.innerHTML = "Kidnap and Ransom (" + (kidnapChance*100).toFixed(3) + "% chance of success)";
- slumsKidnap.innerHTML += ' Attempt to kidnap and ransom a high-profile target ';
- slumsAssassinate.style.display = "block";
- slumsAssassinate.innerHTML = "Assassinate (" + (assassinateChance*100).toFixed(3) + "% chance of success)";
- slumsAssassinate.innerHTML += ' Attempt to assassinate a high-profile target ';
- slumsHeist.style.display = "block";
- slumsHeist.innerHTML = "Heist (" + (heistChance*100).toFixed(3) + "% chance of success)";
- slumsHeist.innerHTML += ' Attempt to pull off the ultimate heist ';
- break;
-
- //Hospital
- case Locations.Hospital:
- hospitalTreatment.innerText = "Get treatment for wounds - $" + Object(_utils_StringHelperFunctions_js__WEBPACK_IMPORTED_MODULE_16__["formatNumber"])(hospitalTreatmentCost, 2).toString();
- hospitalTreatment.style.display = "block";
- break;
-
- default:
- console.log("ERROR: INVALID LOCATION");
- }
-
- //Make the "Apply to be Employee and Waiter" texts disappear if you already hold the job
- //Includes part-time stuff
- if (loc == _Player_js__WEBPACK_IMPORTED_MODULE_8__["Player"].companyName) {
- var currPos = _Player_js__WEBPACK_IMPORTED_MODULE_8__["Player"].companyPosition;
-
- if (currPos.positionName == _Company_js__WEBPACK_IMPORTED_MODULE_1__["CompanyPositions"].Employee.positionName) {
- employeeJob.style.display = "none";
- } else if (currPos.positionName == _Company_js__WEBPACK_IMPORTED_MODULE_1__["CompanyPositions"].Waiter.positionName) {
- waiterJob.style.display = "none";
- } else if (currPos.positionName == _Company_js__WEBPACK_IMPORTED_MODULE_1__["CompanyPositions"].PartTimeEmployee.positionName) {
- employeePartTimeJob.style.display = "none";
- } else if (currPos.positionName == _Company_js__WEBPACK_IMPORTED_MODULE_1__["CompanyPositions"].PartTimeWaiter.positionName) {
- waiterPartTimeJob.style.display = "none";
- }
- }
-}
-
-function initLocationButtons() {
- //Buttons to travel to different locations in World
- let aevumTravelAgency = document.getElementById("aevum-travelagency");
- aevumTravelAgency.addEventListener("click", function() {
- _Player_js__WEBPACK_IMPORTED_MODULE_8__["Player"].location = Locations.AevumTravelAgency;
- _engine_js__WEBPACK_IMPORTED_MODULE_5__["Engine"].loadLocationContent();
- return false;
- });
-
- let aevumHospital = document.getElementById("aevum-hospital");
- aevumHospital.addEventListener("click", function() {
- _Player_js__WEBPACK_IMPORTED_MODULE_8__["Player"].location = Locations.Hospital;
- _engine_js__WEBPACK_IMPORTED_MODULE_5__["Engine"].loadLocationContent();
- return false;
- });
-
- let aevumSummitUniversity = document.getElementById("aevum-summituniversity");
- aevumSummitUniversity.addEventListener("click", function() {
- _Player_js__WEBPACK_IMPORTED_MODULE_8__["Player"].location = Locations.AevumSummitUniversity;
- _engine_js__WEBPACK_IMPORTED_MODULE_5__["Engine"].loadLocationContent();
- return false;
- });
-
- let aevumECorp = document.getElementById("aevum-ecorp");
- aevumECorp.addEventListener("click", function() {
- _Player_js__WEBPACK_IMPORTED_MODULE_8__["Player"].location = Locations.AevumECorp;
- _engine_js__WEBPACK_IMPORTED_MODULE_5__["Engine"].loadLocationContent();
- return false;
- });
-
- let aevumBachmanAndAssociates = document.getElementById("aevum-bachmanandassociates");
- aevumBachmanAndAssociates.addEventListener("click", function() {
- _Player_js__WEBPACK_IMPORTED_MODULE_8__["Player"].location = Locations.AevumBachmanAndAssociates;
- _engine_js__WEBPACK_IMPORTED_MODULE_5__["Engine"].loadLocationContent();
- return false;
- });
-
- let aevumClarkeIncorporated = document.getElementById("aevum-clarkeincorporated");
- aevumClarkeIncorporated.addEventListener("click", function() {
- _Player_js__WEBPACK_IMPORTED_MODULE_8__["Player"].location = Locations.AevumClarkeIncorporated;
- _engine_js__WEBPACK_IMPORTED_MODULE_5__["Engine"].loadLocationContent();
- return false;
- });
-
- let aevumFulcrumTechnologies = document.getElementById("aevum-fulcrumtechnologies");
- aevumFulcrumTechnologies.addEventListener("click", function() {
- _Player_js__WEBPACK_IMPORTED_MODULE_8__["Player"].location = Locations.AevumFulcrumTechnologies;
- _engine_js__WEBPACK_IMPORTED_MODULE_5__["Engine"].loadLocationContent();
- return false;
- });
-
- let aevumAeroCorp = document.getElementById("aevum-aerocorp");
- aevumAeroCorp.addEventListener("click", function() {
- _Player_js__WEBPACK_IMPORTED_MODULE_8__["Player"].location = Locations.AevumAeroCorp;
- _engine_js__WEBPACK_IMPORTED_MODULE_5__["Engine"].loadLocationContent();
- return false;
- });
-
- let aevumGalacticCybersystems = document.getElementById("aevum-galacticcybersystems");
- aevumGalacticCybersystems.addEventListener("click", function() {
- _Player_js__WEBPACK_IMPORTED_MODULE_8__["Player"].location = Locations.AevumGalacticCybersystems;
- _engine_js__WEBPACK_IMPORTED_MODULE_5__["Engine"].loadLocationContent();
- return false;
- });
-
- let aevumWatchdogSecurity = document.getElementById("aevum-watchdogsecurity");
- aevumWatchdogSecurity.addEventListener("click", function() {
- _Player_js__WEBPACK_IMPORTED_MODULE_8__["Player"].location = Locations.AevumWatchdogSecurity;
- _engine_js__WEBPACK_IMPORTED_MODULE_5__["Engine"].loadLocationContent();
- return false;
- });
-
- let aevumRhoConstruction = document.getElementById("aevum-rhoconstruction");
- aevumRhoConstruction.addEventListener("click", function() {
- _Player_js__WEBPACK_IMPORTED_MODULE_8__["Player"].location = Locations.AevumRhoConstruction;
- _engine_js__WEBPACK_IMPORTED_MODULE_5__["Engine"].loadLocationContent();
- return false;
- });
-
- let aevumPolice = document.getElementById("aevum-aevumpolice");
- aevumPolice.addEventListener("click", function() {
- _Player_js__WEBPACK_IMPORTED_MODULE_8__["Player"].location = Locations.AevumPolice;
- _engine_js__WEBPACK_IMPORTED_MODULE_5__["Engine"].loadLocationContent();
- return false;
- });
-
- let aevumNetLinkTechnologies = document.getElementById("aevum-netlinktechnologies");
- aevumNetLinkTechnologies.addEventListener("click", function() {
- _Player_js__WEBPACK_IMPORTED_MODULE_8__["Player"].location = Locations.AevumNetLinkTechnologies;
- _engine_js__WEBPACK_IMPORTED_MODULE_5__["Engine"].loadLocationContent();
- return false;
- });
-
- let aevumCrushFitnessGym = document.getElementById("aevum-crushfitnessgym");
- aevumCrushFitnessGym.addEventListener("click", function() {
- _Player_js__WEBPACK_IMPORTED_MODULE_8__["Player"].location = Locations.AevumCrushFitnessGym;
- _engine_js__WEBPACK_IMPORTED_MODULE_5__["Engine"].loadLocationContent();
- return false;
- });
-
- let aevumSnapFitnessGym = document.getElementById("aevum-snapfitnessgym");
- aevumSnapFitnessGym.addEventListener("click", function() {
- _Player_js__WEBPACK_IMPORTED_MODULE_8__["Player"].location = Locations.AevumSnapFitnessGym;
- _engine_js__WEBPACK_IMPORTED_MODULE_5__["Engine"].loadLocationContent();
- return false;
- });
-
- let aevumSlums = document.getElementById("aevum-slums");
- aevumSlums.addEventListener("click", function() {
- _Player_js__WEBPACK_IMPORTED_MODULE_8__["Player"].location = Locations.AevumSlums;
- _engine_js__WEBPACK_IMPORTED_MODULE_5__["Engine"].loadLocationContent();
- return false;
- });
-
- let chongqingTravelAgency = document.getElementById("chongqing-travelagency");
- chongqingTravelAgency.addEventListener("click", function() {
- _Player_js__WEBPACK_IMPORTED_MODULE_8__["Player"].location = Locations.ChongqingTravelAgency;
- _engine_js__WEBPACK_IMPORTED_MODULE_5__["Engine"].loadLocationContent();
- return false;
- });
-
- let chongqingHospital = document.getElementById("chongqing-hospital");
- chongqingHospital.addEventListener("click", function() {
- _Player_js__WEBPACK_IMPORTED_MODULE_8__["Player"].location = Locations.Hospital;
- _engine_js__WEBPACK_IMPORTED_MODULE_5__["Engine"].loadLocationContent();
- return false;
- });
-
- let chongqingKuaiGongInternational = document.getElementById("chongqing-kuaigonginternational");
- chongqingKuaiGongInternational.addEventListener("click", function() {
- _Player_js__WEBPACK_IMPORTED_MODULE_8__["Player"].location = Locations.ChongqingKuaiGongInternational;
- _engine_js__WEBPACK_IMPORTED_MODULE_5__["Engine"].loadLocationContent();
- return false;
- });
-
- let chongqingSolarisSpaceSystems = document.getElementById("chongqing-solarisspacesystems");
- chongqingSolarisSpaceSystems.addEventListener("click", function() {
- _Player_js__WEBPACK_IMPORTED_MODULE_8__["Player"].location = Locations.ChongqingSolarisSpaceSystems;
- _engine_js__WEBPACK_IMPORTED_MODULE_5__["Engine"].loadLocationContent();
- return false;
- });
-
- let chongqingSlums = document.getElementById("chongqing-slums");
- chongqingSlums.addEventListener("click", function() {
- _Player_js__WEBPACK_IMPORTED_MODULE_8__["Player"].location = Locations.ChongqingSlums;
- _engine_js__WEBPACK_IMPORTED_MODULE_5__["Engine"].loadLocationContent();
- return false;
- });
-
- let sector12TravelAgency = document.getElementById("sector12-travelagency");
- sector12TravelAgency.addEventListener("click", function() {
- _Player_js__WEBPACK_IMPORTED_MODULE_8__["Player"].location = Locations.Sector12TravelAgency;
- _engine_js__WEBPACK_IMPORTED_MODULE_5__["Engine"].loadLocationContent();
- return false;
- });
-
- let sector12Hospital = document.getElementById("sector12-hospital");
- sector12Hospital.addEventListener("click", function() {
- _Player_js__WEBPACK_IMPORTED_MODULE_8__["Player"].location = Locations.Hospital;
- _engine_js__WEBPACK_IMPORTED_MODULE_5__["Engine"].loadLocationContent();
- return false;
- });
-
- let sector12RothmanUniversity = document.getElementById("sector12-rothmanuniversity");
- sector12RothmanUniversity.addEventListener("click", function() {
- _Player_js__WEBPACK_IMPORTED_MODULE_8__["Player"].location = Locations.Sector12RothmanUniversity;
- _engine_js__WEBPACK_IMPORTED_MODULE_5__["Engine"].loadLocationContent();
- return false;
- });
-
- let sector12MegaCorp = document.getElementById("sector12-megacorp");
- sector12MegaCorp.addEventListener("click", function() {
- _Player_js__WEBPACK_IMPORTED_MODULE_8__["Player"].location = Locations.Sector12MegaCorp;
- _engine_js__WEBPACK_IMPORTED_MODULE_5__["Engine"].loadLocationContent();
- return false;
- });
-
- let sector12BladeIndustries = document.getElementById("sector12-bladeindustries");
- sector12BladeIndustries.addEventListener("click", function() {
- _Player_js__WEBPACK_IMPORTED_MODULE_8__["Player"].location = Locations.Sector12BladeIndustries;
- _engine_js__WEBPACK_IMPORTED_MODULE_5__["Engine"].loadLocationContent();
- return false;
- });
-
- let sector12FourSigma = document.getElementById("sector12-foursigma");
- sector12FourSigma.addEventListener("click", function() {
- _Player_js__WEBPACK_IMPORTED_MODULE_8__["Player"].location = Locations.Sector12FourSigma;
- _engine_js__WEBPACK_IMPORTED_MODULE_5__["Engine"].loadLocationContent();
- return false;
- });
-
- let sector12IcarusMicrosystems = document.getElementById("sector12-icarusmicrosystems");
- sector12IcarusMicrosystems.addEventListener("click", function() {
- _Player_js__WEBPACK_IMPORTED_MODULE_8__["Player"].location = Locations.Sector12IcarusMicrosystems;
- _engine_js__WEBPACK_IMPORTED_MODULE_5__["Engine"].loadLocationContent();
- return false;
- });
-
- let sector12UniversalEnergy = document.getElementById("sector12-universalenergy");
- sector12UniversalEnergy.addEventListener("click", function() {
- _Player_js__WEBPACK_IMPORTED_MODULE_8__["Player"].location = Locations.Sector12UniversalEnergy;
- _engine_js__WEBPACK_IMPORTED_MODULE_5__["Engine"].loadLocationContent();
- return false;
- });
-
- let sector12DeltaOne = document.getElementById("sector12-deltaone");
- sector12DeltaOne.addEventListener("click", function() {
- _Player_js__WEBPACK_IMPORTED_MODULE_8__["Player"].location = Locations.Sector12DeltaOne;
- _engine_js__WEBPACK_IMPORTED_MODULE_5__["Engine"].loadLocationContent();
- return false;
- });
-
- let sector12CIA = document.getElementById("sector12-cia");
- sector12CIA.addEventListener("click", function() {
- _Player_js__WEBPACK_IMPORTED_MODULE_8__["Player"].location = Locations.Sector12CIA;
- _engine_js__WEBPACK_IMPORTED_MODULE_5__["Engine"].loadLocationContent();
- return false;
- });
-
- let sector12NSA = document.getElementById("sector12-nsa");
- sector12NSA.addEventListener("click", function() {
- _Player_js__WEBPACK_IMPORTED_MODULE_8__["Player"].location = Locations.Sector12NSA;
- _engine_js__WEBPACK_IMPORTED_MODULE_5__["Engine"].loadLocationContent();
- return false;
- });
-
- let sector12AlphaEnterprises = document.getElementById("sector12-alphaenterprises");
- sector12AlphaEnterprises.addEventListener("click", function() {
- _Player_js__WEBPACK_IMPORTED_MODULE_8__["Player"].location = Locations.Sector12AlphaEnterprises;
- _engine_js__WEBPACK_IMPORTED_MODULE_5__["Engine"].loadLocationContent();
- return false;
- });
-
- let sector12CarmichaelSecurity = document.getElementById("sector12-carmichaelsecurity");
- sector12CarmichaelSecurity.addEventListener("click", function() {
- _Player_js__WEBPACK_IMPORTED_MODULE_8__["Player"].location = Locations.Sector12CarmichaelSecurity;
- _engine_js__WEBPACK_IMPORTED_MODULE_5__["Engine"].loadLocationContent();
- return false;
- });
-
- let sector12FoodNStuff = document.getElementById("sector12-foodnstuff");
- sector12FoodNStuff.addEventListener("click", function() {
- _Player_js__WEBPACK_IMPORTED_MODULE_8__["Player"].location = Locations.Sector12FoodNStuff;
- _engine_js__WEBPACK_IMPORTED_MODULE_5__["Engine"].loadLocationContent();
- return false;
- });
-
- let sector12JoesGuns = document.getElementById("sector12-joesguns");
- sector12JoesGuns.addEventListener("click", function() {
- _Player_js__WEBPACK_IMPORTED_MODULE_8__["Player"].location = Locations.Sector12JoesGuns;
- _engine_js__WEBPACK_IMPORTED_MODULE_5__["Engine"].loadLocationContent();
- return false;
- });
-
- let sector12IronGym = document.getElementById("sector12-irongym");
- sector12IronGym.addEventListener("click", function() {
- _Player_js__WEBPACK_IMPORTED_MODULE_8__["Player"].location = Locations.Sector12IronGym;
- _engine_js__WEBPACK_IMPORTED_MODULE_5__["Engine"].loadLocationContent();
- return false;
- });
-
- let sector12PowerhouseGym = document.getElementById("sector12-powerhousegym");
- sector12PowerhouseGym.addEventListener("click", function() {
- _Player_js__WEBPACK_IMPORTED_MODULE_8__["Player"].location = Locations.Sector12PowerhouseGym;
- _engine_js__WEBPACK_IMPORTED_MODULE_5__["Engine"].loadLocationContent();
- return false;
- });
-
- let sector12Slums = document.getElementById("sector12-slums");
- sector12Slums.addEventListener("click", function() {
- _Player_js__WEBPACK_IMPORTED_MODULE_8__["Player"].location = Locations.Sector12Slums;
- _engine_js__WEBPACK_IMPORTED_MODULE_5__["Engine"].loadLocationContent();
- return false;
- });
-
- let sector12CityHall = document.getElementById("sector12-cityhall");
- sector12CityHall.addEventListener("click", function() {
- _Player_js__WEBPACK_IMPORTED_MODULE_8__["Player"].location = Locations.Sector12CityHall;
- _engine_js__WEBPACK_IMPORTED_MODULE_5__["Engine"].loadLocationContent();
- return false;
- });
-
- let newTokyoTravelAgency = document.getElementById("newtokyo-travelagency");
- newTokyoTravelAgency.addEventListener("click", function() {
- _Player_js__WEBPACK_IMPORTED_MODULE_8__["Player"].location = Locations.NewTokyoTravelAgency;
- _engine_js__WEBPACK_IMPORTED_MODULE_5__["Engine"].loadLocationContent();
- return false;
- });
-
- let newTokyoHospital = document.getElementById("newtokyo-hospital");
- newTokyoHospital.addEventListener("click", function() {
- _Player_js__WEBPACK_IMPORTED_MODULE_8__["Player"].location = Locations.Hospital;
- _engine_js__WEBPACK_IMPORTED_MODULE_5__["Engine"].loadLocationContent();
- return false;
- });
-
- let newTokyoDefComm = document.getElementById("newtokyo-defcomm");
- newTokyoDefComm.addEventListener("click", function() {
- _Player_js__WEBPACK_IMPORTED_MODULE_8__["Player"].location = Locations.NewTokyoDefComm;
- _engine_js__WEBPACK_IMPORTED_MODULE_5__["Engine"].loadLocationContent();
- return false;
- });
-
- let newTokyoVitaLife = document.getElementById("newtokyo-vitalife");
- newTokyoVitaLife.addEventListener("click", function() {
- _Player_js__WEBPACK_IMPORTED_MODULE_8__["Player"].location = Locations.NewTokyoVitaLife;
- _engine_js__WEBPACK_IMPORTED_MODULE_5__["Engine"].loadLocationContent();
- return false;
- });
-
- let newTokyoGlobalPharmaceuticals = document.getElementById("newtokyo-globalpharmaceuticals");
- newTokyoGlobalPharmaceuticals.addEventListener("click", function() {
- _Player_js__WEBPACK_IMPORTED_MODULE_8__["Player"].location = Locations.NewTokyoGlobalPharmaceuticals;
- _engine_js__WEBPACK_IMPORTED_MODULE_5__["Engine"].loadLocationContent();
- return false;
- });
-
- let newTokyoNoodleBar = document.getElementById("newtokyo-noodlebar");
- newTokyoNoodleBar.addEventListener("click", function() {
- _Player_js__WEBPACK_IMPORTED_MODULE_8__["Player"].location = Locations.NewTokyoNoodleBar;
- _engine_js__WEBPACK_IMPORTED_MODULE_5__["Engine"].loadLocationContent();
- return false;
- });
-
- let newTokyoSlums = document.getElementById("newtokyo-slums");
- newTokyoSlums.addEventListener("click", function() {
- _Player_js__WEBPACK_IMPORTED_MODULE_8__["Player"].location = Locations.NewTokyoSlums;
- _engine_js__WEBPACK_IMPORTED_MODULE_5__["Engine"].loadLocationContent();
- return false;
- });
-
- let ishimaTravelAgency = document.getElementById("ishima-travelagency");
- ishimaTravelAgency.addEventListener("click", function() {
- _Player_js__WEBPACK_IMPORTED_MODULE_8__["Player"].location = Locations.IshimaTravelAgency;
- _engine_js__WEBPACK_IMPORTED_MODULE_5__["Engine"].loadLocationContent();
- return false;
- });
-
- let ishimaHospital = document.getElementById("ishima-hospital");
- ishimaHospital.addEventListener("click", function() {
- _Player_js__WEBPACK_IMPORTED_MODULE_8__["Player"].location = Locations.Hospital;
- _engine_js__WEBPACK_IMPORTED_MODULE_5__["Engine"].loadLocationContent();
- return false;
- });
-
- let ishimaStormTechnologies = document.getElementById("ishima-stormtechnologies");
- ishimaStormTechnologies.addEventListener("click", function() {
- _Player_js__WEBPACK_IMPORTED_MODULE_8__["Player"].location = Locations.IshimaStormTechnologies;
- _engine_js__WEBPACK_IMPORTED_MODULE_5__["Engine"].loadLocationContent();
- return false;
- });
-
- let ishimaNovaMedical = document.getElementById("ishima-novamedical");
- ishimaNovaMedical.addEventListener("click", function() {
- _Player_js__WEBPACK_IMPORTED_MODULE_8__["Player"].location = Locations.IshimaNovaMedical;
- _engine_js__WEBPACK_IMPORTED_MODULE_5__["Engine"].loadLocationContent();
- return false;
- });
-
- let ishimaOmegaSoftware = document.getElementById("ishima-omegasoftware");
- ishimaOmegaSoftware.addEventListener("click", function() {
- _Player_js__WEBPACK_IMPORTED_MODULE_8__["Player"].location = Locations.IshimaOmegaSoftware;
- _engine_js__WEBPACK_IMPORTED_MODULE_5__["Engine"].loadLocationContent();
- return false;
- });
-
- let ishimaSlums = document.getElementById("ishima-slums");
- ishimaSlums.addEventListener("click", function() {
- _Player_js__WEBPACK_IMPORTED_MODULE_8__["Player"].location = Locations.IshimaSlums;
- _engine_js__WEBPACK_IMPORTED_MODULE_5__["Engine"].loadLocationContent();
- return false;
- });
-
- let volhavenTravelAgency = document.getElementById("volhaven-travelagency");
- volhavenTravelAgency.addEventListener("click", function() {
- _Player_js__WEBPACK_IMPORTED_MODULE_8__["Player"].location = Locations.VolhavenTravelAgency;
- _engine_js__WEBPACK_IMPORTED_MODULE_5__["Engine"].loadLocationContent();
- return false;
- });
-
- let volhavenHospital = document.getElementById("volhaven-hospital");
- volhavenHospital.addEventListener("click", function() {
- _Player_js__WEBPACK_IMPORTED_MODULE_8__["Player"].location = Locations.Hospital;
- _engine_js__WEBPACK_IMPORTED_MODULE_5__["Engine"].loadLocationContent();
- return false;
- });
-
- let volhavenZBInstituteOfTechnology = document.getElementById("volhaven-zbinstituteoftechnology");
- volhavenZBInstituteOfTechnology.addEventListener("click", function() {
- _Player_js__WEBPACK_IMPORTED_MODULE_8__["Player"].location = Locations.VolhavenZBInstituteOfTechnology;
- _engine_js__WEBPACK_IMPORTED_MODULE_5__["Engine"].loadLocationContent();
- return false;
- });
-
- let volhavenOmniTekIncorporated = document.getElementById("volhaven-omnitekincorporated");
- volhavenOmniTekIncorporated.addEventListener("click", function() {
- _Player_js__WEBPACK_IMPORTED_MODULE_8__["Player"].location = Locations.VolhavenOmniTekIncorporated;
- _engine_js__WEBPACK_IMPORTED_MODULE_5__["Engine"].loadLocationContent();
- return false;
- });
-
- let volhavenNWO = document.getElementById("volhaven-nwo");
- volhavenNWO.addEventListener("click", function() {
- _Player_js__WEBPACK_IMPORTED_MODULE_8__["Player"].location = Locations.VolhavenNWO;
- _engine_js__WEBPACK_IMPORTED_MODULE_5__["Engine"].loadLocationContent();
- return false;
- });
-
- let volhavenHeliosLabs = document.getElementById("volhaven-helioslabs");
- volhavenHeliosLabs.addEventListener("click", function() {
- _Player_js__WEBPACK_IMPORTED_MODULE_8__["Player"].location = Locations.VolhavenHeliosLabs;
- _engine_js__WEBPACK_IMPORTED_MODULE_5__["Engine"].loadLocationContent();
- return false;
- });
-
- let volhavenOmniaCybersystems = document.getElementById("volhaven-omniacybersystems");
- volhavenOmniaCybersystems.addEventListener("click", function() {
- _Player_js__WEBPACK_IMPORTED_MODULE_8__["Player"].location = Locations.VolhavenOmniaCybersystems;
- _engine_js__WEBPACK_IMPORTED_MODULE_5__["Engine"].loadLocationContent();
- return false;
- });
-
- let volhavenLexoCorp = document.getElementById("volhaven-lexocorp");
- volhavenLexoCorp.addEventListener("click", function() {
- _Player_js__WEBPACK_IMPORTED_MODULE_8__["Player"].location = Locations.VolhavenLexoCorp;
- _engine_js__WEBPACK_IMPORTED_MODULE_5__["Engine"].loadLocationContent();
- return false;
- });
-
- let volhavenSysCoreSecurities = document.getElementById("volhaven-syscoresecurities");
- volhavenSysCoreSecurities.addEventListener("click", function() {
- _Player_js__WEBPACK_IMPORTED_MODULE_8__["Player"].location = Locations.VolhavenSysCoreSecurities;
- _engine_js__WEBPACK_IMPORTED_MODULE_5__["Engine"].loadLocationContent();
- return false;
- });
-
- let volhavenCompuTek = document.getElementById("volhaven-computek");
- volhavenCompuTek.addEventListener("click", function() {
- _Player_js__WEBPACK_IMPORTED_MODULE_8__["Player"].location = Locations.VolhavenCompuTek;
- _engine_js__WEBPACK_IMPORTED_MODULE_5__["Engine"].loadLocationContent();
- return false;
- });
-
- let volhavenMilleniumFitnessGym = document.getElementById("volhaven-milleniumfitnessgym");
- volhavenMilleniumFitnessGym.addEventListener("click", function() {
- _Player_js__WEBPACK_IMPORTED_MODULE_8__["Player"].location = Locations.VolhavenMilleniumFitnessGym;
- _engine_js__WEBPACK_IMPORTED_MODULE_5__["Engine"].loadLocationContent();
- return false;
- });
-
- let volhavenSlums = document.getElementById("volhaven-slums");
- volhavenSlums.addEventListener("click", function() {
- _Player_js__WEBPACK_IMPORTED_MODULE_8__["Player"].location = Locations.VolhavenSlums;
- _engine_js__WEBPACK_IMPORTED_MODULE_5__["Engine"].loadLocationContent();
- return false;
- });
-
- //Buttons to interact at a location (apply for job/promotion, train, purchase, etc.)
- var softwareJob = document.getElementById("location-software-job");
- var softwareConsultantJob = document.getElementById("location-software-consultant-job")
- var itJob = document.getElementById("location-it-job");
- var securityEngineerJob = document.getElementById("location-security-engineer-job");
- var networkEngineerJob = document.getElementById("location-network-engineer-job");
- var businessJob = document.getElementById("location-business-job");
- var businessConsultantJob = document.getElementById("location-business-consultant-job");
- var securityJob = document.getElementById("location-security-job");
- var agentJob = document.getElementById("location-agent-job");
- var employeeJob = document.getElementById("location-employee-job");
- var employeePartTimeJob = document.getElementById("location-parttime-employee-job");
- var waiterJob = document.getElementById("location-waiter-job");
- var waiterPartTimeJob = document.getElementById("location-parttime-waiter-job");
-
- var work = document.getElementById("location-work");
-
- var purchase2gb = document.getElementById("location-purchase-2gb");
- var purchase4gb = document.getElementById("location-purchase-4gb");
- var purchase8gb = document.getElementById("location-purchase-8gb");
- var purchase16gb = document.getElementById("location-purchase-16gb");
- var purchase32gb = document.getElementById("location-purchase-32gb");
- var purchase64gb = document.getElementById("location-purchase-64gb");
- var purchase128gb = document.getElementById("location-purchase-128gb");
- var purchase256gb = document.getElementById("location-purchase-256gb");
- var purchase512gb = document.getElementById("location-purchase-512gb");
- var purchase1tb = document.getElementById("location-purchase-1tb");
- var purchaseTor = document.getElementById("location-purchase-tor");
- var purchaseHomeRam = document.getElementById("location-purchase-home-ram");
- var purchaseHomeCores = document.getElementById("location-purchase-home-cores");
-
- var travelToAevum = document.getElementById("location-travel-to-aevum");
- var travelToChongqing = document.getElementById("location-travel-to-chongqing");
- var travelToSector12 = document.getElementById("location-travel-to-sector12");
- var travelToNewTokyo = document.getElementById("location-travel-to-newtokyo");
- var travelToIshima = document.getElementById("location-travel-to-ishima");
- var travelToVolhaven = document.getElementById("location-travel-to-volhaven");
-
- var slumsShoplift = document.getElementById("location-slums-shoplift");
- var slumsRobStore = document.getElementById("location-slums-rob-store");
- var slumsMug = document.getElementById("location-slums-mug");
- var slumsLarceny = document.getElementById("location-slums-larceny");
- var slumsDealDrugs = document.getElementById("location-slums-deal-drugs");
- var slumsBondForgery = document.getElementById("location-slums-bond-forgery");
- var slumsTrafficArms = document.getElementById("location-slums-traffic-arms");
- var slumsHomicide = document.getElementById("location-slums-homicide");
- var slumsGta = document.getElementById("location-slums-gta");
- var slumsKidnap = document.getElementById("location-slums-kidnap");
- var slumsAssassinate = document.getElementById("location-slums-assassinate");
- var slumsHeist = document.getElementById("location-slums-heist");
-
- var cityHallCreateCorporation = document.getElementById("location-cityhall-create-corporation");
-
- var nsaBladeburner = document.getElementById("location-nsa-bladeburner");
-
- var hospitalTreatment = document.getElementById("location-hospital-treatment");
-
- softwareJob.addEventListener("click", function() {
- _Player_js__WEBPACK_IMPORTED_MODULE_8__["Player"].applyForSoftwareJob();
- return false;
- });
-
- softwareConsultantJob.addEventListener("click", function() {
- _Player_js__WEBPACK_IMPORTED_MODULE_8__["Player"].applyForSoftwareConsultantJob();
- return false;
- });
-
- itJob.addEventListener("click", function() {
- _Player_js__WEBPACK_IMPORTED_MODULE_8__["Player"].applyForItJob();
- return false;
- });
-
- securityEngineerJob.addEventListener("click", function() {
- _Player_js__WEBPACK_IMPORTED_MODULE_8__["Player"].applyForSecurityEngineerJob();
- return false;
- });
-
- networkEngineerJob.addEventListener("click", function() {
- _Player_js__WEBPACK_IMPORTED_MODULE_8__["Player"].applyForNetworkEngineerJob();
- return false;
- });
-
- businessJob.addEventListener("click", function() {
- _Player_js__WEBPACK_IMPORTED_MODULE_8__["Player"].applyForBusinessJob();
- return false;
- });
-
- businessConsultantJob.addEventListener("click", function() {
- _Player_js__WEBPACK_IMPORTED_MODULE_8__["Player"].applyForBusinessConsultantJob();
- return false;
- });
-
- securityJob.addEventListener("click", function() {
- _Player_js__WEBPACK_IMPORTED_MODULE_8__["Player"].applyForSecurityJob();
- return false;
- });
-
- agentJob.addEventListener("click", function() {
- _Player_js__WEBPACK_IMPORTED_MODULE_8__["Player"].applyForAgentJob();
- return false;
- });
-
- employeeJob.addEventListener("click", function() {
- _Player_js__WEBPACK_IMPORTED_MODULE_8__["Player"].applyForEmployeeJob();
- return false;
- });
-
- employeePartTimeJob.addEventListener("click", function() {
- _Player_js__WEBPACK_IMPORTED_MODULE_8__["Player"].applyForPartTimeEmployeeJob();
- return false;
- });
-
- waiterJob.addEventListener("click", function() {
- _Player_js__WEBPACK_IMPORTED_MODULE_8__["Player"].applyForWaiterJob();
- return false;
- });
-
- waiterPartTimeJob.addEventListener("click", function() {
- _Player_js__WEBPACK_IMPORTED_MODULE_8__["Player"].applyForPartTimeWaiterJob();
- return false;
- });
-
- purchase2gb.addEventListener("click", function() {
- purchaseServerBoxCreate(2, 2 * _Constants_js__WEBPACK_IMPORTED_MODULE_3__["CONSTANTS"].BaseCostFor1GBOfRamServer);
- return false;
- });
-
- purchase4gb.addEventListener("click", function() {
- purchaseServerBoxCreate(4, 4 * _Constants_js__WEBPACK_IMPORTED_MODULE_3__["CONSTANTS"].BaseCostFor1GBOfRamServer);
- return false;
- });
-
- purchase8gb.addEventListener("click", function() {
- purchaseServerBoxCreate(8, 8 * _Constants_js__WEBPACK_IMPORTED_MODULE_3__["CONSTANTS"].BaseCostFor1GBOfRamServer);
- return false;
- });
-
- purchase16gb.addEventListener("click", function() {
- purchaseServerBoxCreate(16, 16 * _Constants_js__WEBPACK_IMPORTED_MODULE_3__["CONSTANTS"].BaseCostFor1GBOfRamServer);
- return false;
- });
-
- purchase32gb.addEventListener("click", function() {
- purchaseServerBoxCreate(32, 32 * _Constants_js__WEBPACK_IMPORTED_MODULE_3__["CONSTANTS"].BaseCostFor1GBOfRamServer);
- return false;
- });
-
- purchase64gb.addEventListener("click", function() {
- purchaseServerBoxCreate(64, 64 * _Constants_js__WEBPACK_IMPORTED_MODULE_3__["CONSTANTS"].BaseCostFor1GBOfRamServer);
- return false;
- });
-
- purchase128gb.addEventListener("click", function() {
- purchaseServerBoxCreate(128, 128 * _Constants_js__WEBPACK_IMPORTED_MODULE_3__["CONSTANTS"].BaseCostFor1GBOfRamServer);
- return false;
- });
-
- purchase256gb.addEventListener("click", function() {
- purchaseServerBoxCreate(256, 256 * _Constants_js__WEBPACK_IMPORTED_MODULE_3__["CONSTANTS"].BaseCostFor1GBOfRamServer);
- return false;
- });
-
- purchase512gb.addEventListener("click", function() {
- purchaseServerBoxCreate(512, 512 * _Constants_js__WEBPACK_IMPORTED_MODULE_3__["CONSTANTS"].BaseCostFor1GBOfRamServer);
- return false;
- });
-
- purchase1tb.addEventListener("click", function() {
- purchaseServerBoxCreate(1024, 1024 * _Constants_js__WEBPACK_IMPORTED_MODULE_3__["CONSTANTS"].BaseCostFor1GBOfRamServer);
- return false;
- });
-
- purchaseTor.addEventListener("click", function() {
- purchaseTorRouter();
- return false;
- });
-
- purchaseHomeRam.addEventListener("click", function() {
- //Calculate how many times ram has been upgraded (doubled)
- var currentRam = _Player_js__WEBPACK_IMPORTED_MODULE_8__["Player"].getHomeComputer().maxRam;
- var newRam = currentRam * 2;
- var numUpgrades = Math.log2(currentRam);
-
- //Calculate cost
- //Have cost increase by some percentage each time RAM has been upgraded
- var cost = currentRam * _Constants_js__WEBPACK_IMPORTED_MODULE_3__["CONSTANTS"].BaseCostFor1GBOfRamHome;
- var mult = Math.pow(1.58, numUpgrades);
- cost = cost * mult;
-
- var yesBtn = Object(_utils_YesNoBox_js__WEBPACK_IMPORTED_MODULE_17__["yesNoBoxGetYesButton"])(), noBtn = Object(_utils_YesNoBox_js__WEBPACK_IMPORTED_MODULE_17__["yesNoBoxGetNoButton"])();
- yesBtn.innerHTML = "Purchase"; noBtn.innerHTML = "Cancel";
- yesBtn.addEventListener("click", ()=>{
- Object(_ServerPurchases_js__WEBPACK_IMPORTED_MODULE_10__["purchaseRamForHomeComputer"])(cost);
- Object(_utils_YesNoBox_js__WEBPACK_IMPORTED_MODULE_17__["yesNoBoxClose"])();
- });
- noBtn.addEventListener("click", ()=>{
- Object(_utils_YesNoBox_js__WEBPACK_IMPORTED_MODULE_17__["yesNoBoxClose"])();
- });
- Object(_utils_YesNoBox_js__WEBPACK_IMPORTED_MODULE_17__["yesNoBoxCreate"])("Would you like to purchase additional RAM for your home computer?
" +
- "This will upgrade your RAM from " + currentRam + "GB to " + newRam + "GB.
" +
- "This will cost $" + Object(_utils_StringHelperFunctions_js__WEBPACK_IMPORTED_MODULE_16__["formatNumber"])(cost, 2));
- });
-
- purchaseHomeCores.addEventListener("click", function() {
- var currentCores = _Player_js__WEBPACK_IMPORTED_MODULE_8__["Player"].getHomeComputer().cpuCores;
- if (currentCores >= 8) {return;} //Max of 8 cores
-
- //Cost of purchasing another cost is found by indexing this array with number of current cores
- var cost = [0,
- 10000000000, //1->2 Cores - 10 bn
- 250000000000, //2->3 Cores - 250 bn
- 5000000000000, //3->4 Cores - 5 trillion
- 100000000000000, //4->5 Cores - 100 trillion
- 1000000000000000, //5->6 Cores - 1 quadrillion
- 20000000000000000, //6->7 Cores - 20 quadrillion
- 200000000000000000]; //7->8 Cores - 200 quadrillion
- cost = cost[currentCores];
- var yesBtn = Object(_utils_YesNoBox_js__WEBPACK_IMPORTED_MODULE_17__["yesNoBoxGetYesButton"])(), noBtn = Object(_utils_YesNoBox_js__WEBPACK_IMPORTED_MODULE_17__["yesNoBoxGetNoButton"])();
- yesBtn.innerHTML = "Purchase"; noBtn.innerHTML = "Cancel";
- yesBtn.addEventListener("click", ()=>{
- if (_Player_js__WEBPACK_IMPORTED_MODULE_8__["Player"].money.lt(cost)) {
- Object(_utils_DialogBox_js__WEBPACK_IMPORTED_MODULE_12__["dialogBoxCreate"])("You do not have enough mone to purchase an additional CPU Core for your home computer!");
- } else {
- _Player_js__WEBPACK_IMPORTED_MODULE_8__["Player"].loseMoney(cost);
- _Player_js__WEBPACK_IMPORTED_MODULE_8__["Player"].getHomeComputer().cpuCores++;
- Object(_utils_DialogBox_js__WEBPACK_IMPORTED_MODULE_12__["dialogBoxCreate"])("You purchased an additional CPU Core for your home computer! It now has " +
- _Player_js__WEBPACK_IMPORTED_MODULE_8__["Player"].getHomeComputer().cpuCores + " cores.");
- }
- Object(_utils_YesNoBox_js__WEBPACK_IMPORTED_MODULE_17__["yesNoBoxClose"])();
- });
- noBtn.addEventListener("click", ()=>{
- Object(_utils_YesNoBox_js__WEBPACK_IMPORTED_MODULE_17__["yesNoBoxClose"])();
- });
- Object(_utils_YesNoBox_js__WEBPACK_IMPORTED_MODULE_17__["yesNoBoxCreate"])("Would you like to purchase an additional CPU Core for your home computer? Each CPU Core " +
- "lets you start with an additional Core Node in Hacking Missions.
" +
- "Purchasing an additional core (for a total of " + (_Player_js__WEBPACK_IMPORTED_MODULE_8__["Player"].getHomeComputer().cpuCores + 1) + ") will " +
- "cost " + _utils_numeral_min_js__WEBPACK_IMPORTED_MODULE_15___default()(cost).format('$0.000a'));
- });
-
- travelToAevum.addEventListener("click", function() {
- travelBoxCreate(Locations.Aevum, 200000);
- return false;
- });
-
- travelToChongqing.addEventListener("click", function() {
- travelBoxCreate(Locations.Chongqing, 200000);
- return false;
- });
-
- travelToSector12.addEventListener("click", function() {
- travelBoxCreate(Locations.Sector12, 200000);
- return false;
- });
-
- travelToNewTokyo.addEventListener("click", function() {
- travelBoxCreate(Locations.NewTokyo, 200000);
- return false;
- });
-
- travelToIshima.addEventListener("click", function() {
- travelBoxCreate(Locations.Ishima, 200000);
- return false;
- });
-
- travelToVolhaven.addEventListener("click", function() {
- travelBoxCreate(Locations.Volhaven, 200000);
- return false;
- });
-
- slumsShoplift.addEventListener("click", function() {
- Object(_Crimes_js__WEBPACK_IMPORTED_MODULE_4__["commitShopliftCrime"])();
- return false;
- });
-
- slumsRobStore.addEventListener("click", function() {
- Object(_Crimes_js__WEBPACK_IMPORTED_MODULE_4__["commitRobStoreCrime"])();
- return false;
- });
-
- slumsMug.addEventListener("click", function() {
- Object(_Crimes_js__WEBPACK_IMPORTED_MODULE_4__["commitMugCrime"])();
- return false;
- });
-
- slumsLarceny.addEventListener("click", function() {
- Object(_Crimes_js__WEBPACK_IMPORTED_MODULE_4__["commitLarcenyCrime"])();
- return false;
- });
-
- slumsDealDrugs.addEventListener("click", function() {
- Object(_Crimes_js__WEBPACK_IMPORTED_MODULE_4__["commitDealDrugsCrime"])();
- return false;
- });
-
- slumsBondForgery.addEventListener("click", function() {
- Object(_Crimes_js__WEBPACK_IMPORTED_MODULE_4__["commitBondForgeryCrime"])();
- return false;
- });
-
- slumsTrafficArms.addEventListener("click", function() {
- Object(_Crimes_js__WEBPACK_IMPORTED_MODULE_4__["commitTraffickArmsCrime"])();
- return false;
- });
-
- slumsHomicide.addEventListener("click", function() {
- Object(_Crimes_js__WEBPACK_IMPORTED_MODULE_4__["commitHomicideCrime"])();
- return false;
- });
-
- slumsGta.addEventListener("click", function() {
- Object(_Crimes_js__WEBPACK_IMPORTED_MODULE_4__["commitGrandTheftAutoCrime"])();
- return false;
- });
-
- slumsKidnap.addEventListener("click", function() {
- Object(_Crimes_js__WEBPACK_IMPORTED_MODULE_4__["commitKidnapCrime"])();
- return false;
- });
-
- slumsAssassinate.addEventListener("click", function() {
- Object(_Crimes_js__WEBPACK_IMPORTED_MODULE_4__["commitAssassinationCrime"])();
- return false;
- });
-
- slumsHeist.addEventListener("click", function() {
- Object(_Crimes_js__WEBPACK_IMPORTED_MODULE_4__["commitHeistCrime"])();
- return false;
- });
-
- cityHallCreateCorporation.addEventListener("click", function() {
- var yesBtn = Object(_utils_YesNoBox_js__WEBPACK_IMPORTED_MODULE_17__["yesNoTxtInpBoxGetYesButton"])(),
- noBtn = Object(_utils_YesNoBox_js__WEBPACK_IMPORTED_MODULE_17__["yesNoTxtInpBoxGetNoButton"])();
- yesBtn.innerText = "Create Corporation";
- noBtn.innerText = "Cancel";
- yesBtn.addEventListener("click", function() {
- if (_Player_js__WEBPACK_IMPORTED_MODULE_8__["Player"].money.lt(150e9)) {
- Object(_utils_DialogBox_js__WEBPACK_IMPORTED_MODULE_12__["dialogBoxCreate"])("You don't have enough money to create a corporation! You need $150b");
- return Object(_utils_YesNoBox_js__WEBPACK_IMPORTED_MODULE_17__["yesNoTxtInpBoxClose"])();
- }
- _Player_js__WEBPACK_IMPORTED_MODULE_8__["Player"].loseMoney(150e9);
- var companyName = Object(_utils_YesNoBox_js__WEBPACK_IMPORTED_MODULE_17__["yesNoTxtInpBoxGetInput"])();
- if (companyName == null || companyName == "") {
- Object(_utils_DialogBox_js__WEBPACK_IMPORTED_MODULE_12__["dialogBoxCreate"])("Invalid company name!");
- return false;
- }
- _Player_js__WEBPACK_IMPORTED_MODULE_8__["Player"].corporation = new _CompanyManagement_js__WEBPACK_IMPORTED_MODULE_2__["Corporation"]({
- name:companyName,
- });
- displayLocationContent();
- Object(_utils_DialogBox_js__WEBPACK_IMPORTED_MODULE_12__["dialogBoxCreate"])("Congratulations! You just started your own corporation. You can visit " +
- "and manage your company in the City");
- return Object(_utils_YesNoBox_js__WEBPACK_IMPORTED_MODULE_17__["yesNoTxtInpBoxClose"])();
- });
- noBtn.addEventListener("click", function() {
- return Object(_utils_YesNoBox_js__WEBPACK_IMPORTED_MODULE_17__["yesNoTxtInpBoxClose"])();
- });
- if (_Player_js__WEBPACK_IMPORTED_MODULE_8__["Player"].corporation instanceof _CompanyManagement_js__WEBPACK_IMPORTED_MODULE_2__["Corporation"]) {
- return;
- } else {
- Object(_utils_YesNoBox_js__WEBPACK_IMPORTED_MODULE_17__["yesNoTxtInpBoxCreate"])("Would you like to start a corporation? This will require $150b " +
- "for registration and initial funding.
If so, please enter " +
- "a name for your corporation below:");
- }
- });
-
- nsaBladeburner.addEventListener("click", function() {
- if (_Player_js__WEBPACK_IMPORTED_MODULE_8__["Player"].bladeburner && _Player_js__WEBPACK_IMPORTED_MODULE_8__["Player"].bladeburner instanceof _Bladeburner_js__WEBPACK_IMPORTED_MODULE_0__["Bladeburner"]) {
- //Enter Bladeburner division
- _engine_js__WEBPACK_IMPORTED_MODULE_5__["Engine"].loadBladeburnerContent();
- } else {
- //Apply for Bladeburner division
- if (_Player_js__WEBPACK_IMPORTED_MODULE_8__["Player"].strength >= 100 && _Player_js__WEBPACK_IMPORTED_MODULE_8__["Player"].defense >= 100 &&
- _Player_js__WEBPACK_IMPORTED_MODULE_8__["Player"].dexterity >= 100 && _Player_js__WEBPACK_IMPORTED_MODULE_8__["Player"].agility >= 100) {
- _Player_js__WEBPACK_IMPORTED_MODULE_8__["Player"].bladeburner = new _Bladeburner_js__WEBPACK_IMPORTED_MODULE_0__["Bladeburner"]({new:true});
- Object(_utils_DialogBox_js__WEBPACK_IMPORTED_MODULE_12__["dialogBoxCreate"])("You have been accepted into the Bladeburner division!");
- displayLocationContent();
- } else {
- Object(_utils_DialogBox_js__WEBPACK_IMPORTED_MODULE_12__["dialogBoxCreate"])("Rejected! Please apply again when you have 100 of each combat stat (str, def, dex, agi)");
- }
- }
- });
-
- hospitalTreatment.addEventListener("click", function() {
- if (_Player_js__WEBPACK_IMPORTED_MODULE_8__["Player"].hp < 0) {_Player_js__WEBPACK_IMPORTED_MODULE_8__["Player"].hp = 0;}
- var price = (_Player_js__WEBPACK_IMPORTED_MODULE_8__["Player"].max_hp - _Player_js__WEBPACK_IMPORTED_MODULE_8__["Player"].hp) * _Constants_js__WEBPACK_IMPORTED_MODULE_3__["CONSTANTS"].HospitalCostPerHp;
- _Player_js__WEBPACK_IMPORTED_MODULE_8__["Player"].loseMoney(price);
- Object(_utils_DialogBox_js__WEBPACK_IMPORTED_MODULE_12__["dialogBoxCreate"])("You were healed to full health! The hospital billed " +
- "you for $" + Object(_utils_StringHelperFunctions_js__WEBPACK_IMPORTED_MODULE_16__["formatNumber"])(price, 2).toString());
- _Player_js__WEBPACK_IMPORTED_MODULE_8__["Player"].hp = _Player_js__WEBPACK_IMPORTED_MODULE_8__["Player"].max_hp;
- displayLocationContent();
- return false;
- });
-}
-
-function travelToCity(destCityName, cost) {
- if (_Player_js__WEBPACK_IMPORTED_MODULE_8__["Player"].firstTimeTraveled === false) {
- _Player_js__WEBPACK_IMPORTED_MODULE_8__["Player"].firstTimeTraveled = true;
- document.getElementById("travel-tab").style.display = "list-item";
- document.getElementById("world-menu-header").click();
- document.getElementById("world-menu-header").click();
- }
-
- if (_Player_js__WEBPACK_IMPORTED_MODULE_8__["Player"].money.lt(cost)) {
- Object(_utils_DialogBox_js__WEBPACK_IMPORTED_MODULE_12__["dialogBoxCreate"])("You cannot afford to travel to " + destCityName);
- return;
- }
- _Player_js__WEBPACK_IMPORTED_MODULE_8__["Player"].loseMoney(cost);
-
- _Player_js__WEBPACK_IMPORTED_MODULE_8__["Player"].city = destCityName;
- Object(_utils_DialogBox_js__WEBPACK_IMPORTED_MODULE_12__["dialogBoxCreate"])("You are now in " + destCityName + "!");
- _engine_js__WEBPACK_IMPORTED_MODULE_5__["Engine"].loadWorldContent();
-}
-
-function purchaseTorRouter() {
- if (_Player_js__WEBPACK_IMPORTED_MODULE_8__["Player"].money.lt(_Constants_js__WEBPACK_IMPORTED_MODULE_3__["CONSTANTS"].TorRouterCost)) {
- Object(_utils_DialogBox_js__WEBPACK_IMPORTED_MODULE_12__["dialogBoxCreate"])("You cannot afford to purchase the Tor router");
- return;
- }
- _Player_js__WEBPACK_IMPORTED_MODULE_8__["Player"].loseMoney(_Constants_js__WEBPACK_IMPORTED_MODULE_3__["CONSTANTS"].TorRouterCost);
-
- var darkweb = new _Server_js__WEBPACK_IMPORTED_MODULE_9__["Server"]({
- ip:Object(_utils_IPAddress_js__WEBPACK_IMPORTED_MODULE_14__["createRandomIp"])(), hostname:"darkweb", organizationName:"",
- isConnectedTo:false, adminRights:false, purchasedByPlayer:false, maxRam:1
- });
- Object(_Server_js__WEBPACK_IMPORTED_MODULE_9__["AddToAllServers"])(darkweb);
- _SpecialServerIps_js__WEBPACK_IMPORTED_MODULE_11__["SpecialServerIps"].addIp("Darkweb Server", darkweb.ip);
-
- document.getElementById("location-purchase-tor").setAttribute("class", "a-link-button-inactive");
-
- _Player_js__WEBPACK_IMPORTED_MODULE_8__["Player"].getHomeComputer().serversOnNetwork.push(darkweb.ip);
- darkweb.serversOnNetwork.push(_Player_js__WEBPACK_IMPORTED_MODULE_8__["Player"].getHomeComputer().ip);
- Object(_utils_DialogBox_js__WEBPACK_IMPORTED_MODULE_12__["dialogBoxCreate"])("You have purchased a Tor router!
You now have access to the dark web from your home computer
Use the scan/netstat commands to search for the dark web connection.");
-}
-
-function displayUniversityLocationContent(costMult) {
- var studyComputerScienceButton = document.getElementById("location-study-computer-science");
- var classDataStructuresButton = document.getElementById("location-data-structures-class");
- var classNetworksButton = document.getElementById("location-networks-class");
- var classAlgorithmsButton = document.getElementById("location-algorithms-class");
- var classManagementButton = document.getElementById("location-management-class");
- var classLeadershipButton = document.getElementById("location-leadership-class");
- studyComputerScienceButton.style.display = "block";
- classDataStructuresButton.style.display = "block";
- classNetworksButton.style.display = "block";
- classAlgorithmsButton.style.display = "block";
- classManagementButton.style.display = "block";
- classLeadershipButton.style.display = "block";
-
- //Costs (per second)
- var dataStructuresCost = _Constants_js__WEBPACK_IMPORTED_MODULE_3__["CONSTANTS"].ClassDataStructuresBaseCost * costMult;
- var networksCost = _Constants_js__WEBPACK_IMPORTED_MODULE_3__["CONSTANTS"].ClassNetworksBaseCost * costMult;
- var algorithmsCost = _Constants_js__WEBPACK_IMPORTED_MODULE_3__["CONSTANTS"].ClassAlgorithmsBaseCost * costMult;
- var managementCost = _Constants_js__WEBPACK_IMPORTED_MODULE_3__["CONSTANTS"].ClassManagementBaseCost * costMult;
- var leadershipCost = _Constants_js__WEBPACK_IMPORTED_MODULE_3__["CONSTANTS"].ClassLeadershipBaseCost * costMult;
-
- //Update button text to show cost
- classDataStructuresButton.innerHTML = "Take Data Structures course ($" + dataStructuresCost + " / sec)";
- classNetworksButton.innerHTML = "Take Networks course ($" + networksCost + " / sec)";
- classAlgorithmsButton.innerHTML = "Take Algorithms course ($" + algorithmsCost + " / sec)";
- classManagementButton.innerHTML = "Take Management course ($" + managementCost + " / sec)";
- classLeadershipButton.innerHTML = "Take Leadership course ($" + leadershipCost + " / sec)";
-}
-
-function setUniversityLocationButtons(costMult, expMult) {
- var newStudyCS = Object(_utils_HelperFunctions_js__WEBPACK_IMPORTED_MODULE_13__["clearEventListeners"])("location-study-computer-science");
- newStudyCS.addEventListener("click", function() {
- _Player_js__WEBPACK_IMPORTED_MODULE_8__["Player"].startClass(costMult, expMult, _Constants_js__WEBPACK_IMPORTED_MODULE_3__["CONSTANTS"].ClassStudyComputerScience);
- return false;
- });
-
- var newClassDataStructures = Object(_utils_HelperFunctions_js__WEBPACK_IMPORTED_MODULE_13__["clearEventListeners"])("location-data-structures-class");
- newClassDataStructures.addEventListener("click", function() {
- _Player_js__WEBPACK_IMPORTED_MODULE_8__["Player"].startClass(costMult, expMult, _Constants_js__WEBPACK_IMPORTED_MODULE_3__["CONSTANTS"].ClassDataStructures);
- return false;
- });
-
- var newClassNetworks = Object(_utils_HelperFunctions_js__WEBPACK_IMPORTED_MODULE_13__["clearEventListeners"])("location-networks-class");
- newClassNetworks.addEventListener("click", function() {
- _Player_js__WEBPACK_IMPORTED_MODULE_8__["Player"].startClass(costMult, expMult, _Constants_js__WEBPACK_IMPORTED_MODULE_3__["CONSTANTS"].ClassNetworks);
- return false;
- });
-
- var newClassAlgorithms = Object(_utils_HelperFunctions_js__WEBPACK_IMPORTED_MODULE_13__["clearEventListeners"])("location-algorithms-class");
- newClassAlgorithms.addEventListener("click", function() {
- _Player_js__WEBPACK_IMPORTED_MODULE_8__["Player"].startClass(costMult, expMult, _Constants_js__WEBPACK_IMPORTED_MODULE_3__["CONSTANTS"].ClassAlgorithms);
- return false;
- });
-
- var newClassManagement = Object(_utils_HelperFunctions_js__WEBPACK_IMPORTED_MODULE_13__["clearEventListeners"])("location-management-class");
- newClassManagement.addEventListener("click", function() {
- _Player_js__WEBPACK_IMPORTED_MODULE_8__["Player"].startClass(costMult, expMult, _Constants_js__WEBPACK_IMPORTED_MODULE_3__["CONSTANTS"].ClassManagement);
- return false;
- });
-
- var newClassLeadership = Object(_utils_HelperFunctions_js__WEBPACK_IMPORTED_MODULE_13__["clearEventListeners"])("location-leadership-class");
- newClassLeadership.addEventListener("click", function() {
- _Player_js__WEBPACK_IMPORTED_MODULE_8__["Player"].startClass(costMult, expMult, _Constants_js__WEBPACK_IMPORTED_MODULE_3__["CONSTANTS"].ClassLeadership);
- return false;
- });
-}
-
-function displayGymLocationContent(costMult) {
- var gymStrButton = document.getElementById("location-gym-train-str");
- var gymDefButton = document.getElementById("location-gym-train-def");
- var gymDexButton = document.getElementById("location-gym-train-dex");
- var gymAgiButton = document.getElementById("location-gym-train-agi");
- gymStrButton.style.display = "block";
- gymDefButton.style.display = "block";
- gymDexButton.style.display = "block";
- gymAgiButton.style.display = "block";
-
- //Costs (per second)
- var cost = _Constants_js__WEBPACK_IMPORTED_MODULE_3__["CONSTANTS"].ClassGymBaseCost * costMult;
-
- //Update button text to show cost
- gymStrButton.innerHTML = "Train Strength ($" + cost + " / sec)";
- gymDefButton.innerHTML = "Train Defense ($" + cost + " / sec)";
- gymDexButton.innerHTML = "Train Dexterity ($" + cost + " / sec)";
- gymAgiButton.innerHTML = "Train Agility ($" + cost + " / sec)";
-}
-
-function setGymLocationButtons(costMult, expMult) {
- var gymStr = Object(_utils_HelperFunctions_js__WEBPACK_IMPORTED_MODULE_13__["clearEventListeners"])("location-gym-train-str");
- gymStr.addEventListener("click", function() {
- _Player_js__WEBPACK_IMPORTED_MODULE_8__["Player"].startClass(costMult, expMult, _Constants_js__WEBPACK_IMPORTED_MODULE_3__["CONSTANTS"].ClassGymStrength);
- return false;
- });
-
- var gymDef = Object(_utils_HelperFunctions_js__WEBPACK_IMPORTED_MODULE_13__["clearEventListeners"])("location-gym-train-def");
- gymDef.addEventListener("click", function() {
- _Player_js__WEBPACK_IMPORTED_MODULE_8__["Player"].startClass(costMult, expMult, _Constants_js__WEBPACK_IMPORTED_MODULE_3__["CONSTANTS"].ClassGymDefense);
- return false;
- });
-
- var gymDex = Object(_utils_HelperFunctions_js__WEBPACK_IMPORTED_MODULE_13__["clearEventListeners"])("location-gym-train-dex");
- gymDex.addEventListener("click", function() {
- _Player_js__WEBPACK_IMPORTED_MODULE_8__["Player"].startClass(costMult, expMult, _Constants_js__WEBPACK_IMPORTED_MODULE_3__["CONSTANTS"].ClassGymDexterity);
- return false;
- });
-
- var gymAgi = Object(_utils_HelperFunctions_js__WEBPACK_IMPORTED_MODULE_13__["clearEventListeners"])("location-gym-train-agi");
- gymAgi.addEventListener("click", function() {
- _Player_js__WEBPACK_IMPORTED_MODULE_8__["Player"].startClass(costMult, expMult, _Constants_js__WEBPACK_IMPORTED_MODULE_3__["CONSTANTS"].ClassGymAgility);
- return false;
- });
-}
-
-function setInfiltrateButton(btn, companyName, startLevel, val, maxClearance, difficulty) {
- btn.style.display = "block";
- btn.addEventListener("click", function() {
- _engine_js__WEBPACK_IMPORTED_MODULE_5__["Engine"].loadInfiltrationContent();
- Object(_Infiltration_js__WEBPACK_IMPORTED_MODULE_6__["beginInfiltration"])(companyName, startLevel, val, maxClearance, difficulty)
- return false;
- });
-}
-
-//Finds the next target job for the player at the given company (loc) and
-//adds the tooltiptext to the Application button, given by 'button'
-function setJobRequirementTooltip(loc, entryPosType, btn) {
- var company = _Company_js__WEBPACK_IMPORTED_MODULE_1__["Companies"][loc];
- if (company == null) {return;}
- var pos = _Player_js__WEBPACK_IMPORTED_MODULE_8__["Player"].getNextCompanyPosition(company, entryPosType);
- if (pos == null) {return};
- if (!company.hasPosition(pos)) {return;}
- var reqText = Object(_Company_js__WEBPACK_IMPORTED_MODULE_1__["getJobRequirementText"])(company, pos, true);
- btn.innerHTML += "" + reqText + "";
-}
-
-function travelBoxCreate(destCityName, cost) {
- var yesBtn = Object(_utils_YesNoBox_js__WEBPACK_IMPORTED_MODULE_17__["yesNoBoxGetYesButton"])(), noBtn = Object(_utils_YesNoBox_js__WEBPACK_IMPORTED_MODULE_17__["yesNoBoxGetNoButton"])();
- yesBtn.innerHTML = "Yes";
- noBtn.innerHTML = "No";
- noBtn.addEventListener("click", () => {
- Object(_utils_YesNoBox_js__WEBPACK_IMPORTED_MODULE_17__["yesNoBoxClose"])();
- return false;
- });
- yesBtn.addEventListener("click", () => {
- Object(_utils_YesNoBox_js__WEBPACK_IMPORTED_MODULE_17__["yesNoBoxClose"])();
- travelToCity(destCityName, cost);
- return false;
- });
- Object(_utils_YesNoBox_js__WEBPACK_IMPORTED_MODULE_17__["yesNoBoxCreate"])("Would you like to travel to " + destCityName + "? The trip will cost $" + Object(_utils_StringHelperFunctions_js__WEBPACK_IMPORTED_MODULE_16__["formatNumber"])(cost, 2) + ".");
-}
-
-function purchaseServerBoxCreate(ram, cost) {
- var yesBtn = Object(_utils_YesNoBox_js__WEBPACK_IMPORTED_MODULE_17__["yesNoTxtInpBoxGetYesButton"])();
- var noBtn = Object(_utils_YesNoBox_js__WEBPACK_IMPORTED_MODULE_17__["yesNoTxtInpBoxGetNoButton"])();
- yesBtn.innerHTML = "Purchase Server";
- noBtn.innerHTML = "Cancel";
- yesBtn.addEventListener("click", function() {
- Object(_ServerPurchases_js__WEBPACK_IMPORTED_MODULE_10__["purchaseServer"])(ram, cost);
- Object(_utils_YesNoBox_js__WEBPACK_IMPORTED_MODULE_17__["yesNoTxtInpBoxClose"])();
- });
- noBtn.addEventListener("click", function() {
- Object(_utils_YesNoBox_js__WEBPACK_IMPORTED_MODULE_17__["yesNoTxtInpBoxClose"])();
- });
-
- Object(_utils_YesNoBox_js__WEBPACK_IMPORTED_MODULE_17__["yesNoTxtInpBoxCreate"])("Would you like to purchase a new server with " + ram +
- "GB of RAM for $" + Object(_utils_StringHelperFunctions_js__WEBPACK_IMPORTED_MODULE_16__["formatNumber"])(cost, 2) + "?
" +
- "Please enter the server hostname below:
");
-}
-
-
-
-
-/***/ }),
-/* 5 */
-/*!***********************!*\
- !*** ./src/engine.js ***!
- \***********************/
-/***/ (function(module, __webpack_exports__, __webpack_require__) {
-
-"use strict";
-__webpack_require__.r(__webpack_exports__);
-/* WEBPACK VAR INJECTION */(function($) {/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "Engine", function() { return Engine; });
-/* harmony import */ var _utils_DialogBox_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../utils/DialogBox.js */ 7);
-/* harmony import */ var _utils_GameOptions_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../utils/GameOptions.js */ 54);
-/* harmony import */ var _utils_HelperFunctions_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../utils/HelperFunctions.js */ 1);
-/* harmony import */ var _utils_numeral_min_js__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ../utils/numeral.min.js */ 13);
-/* harmony import */ var _utils_numeral_min_js__WEBPACK_IMPORTED_MODULE_3___default = /*#__PURE__*/__webpack_require__.n(_utils_numeral_min_js__WEBPACK_IMPORTED_MODULE_3__);
-/* harmony import */ var _utils_StringHelperFunctions_js__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ../utils/StringHelperFunctions.js */ 2);
-/* harmony import */ var _utils_LogBox_js__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ../utils/LogBox.js */ 51);
-/* harmony import */ var _ActiveScriptsUI_js__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! ./ActiveScriptsUI.js */ 41);
-/* harmony import */ var _Augmentations_js__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! ./Augmentations.js */ 19);
-/* harmony import */ var _BitNode_js__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! ./BitNode.js */ 15);
-/* harmony import */ var _Bladeburner_js__WEBPACK_IMPORTED_MODULE_9__ = __webpack_require__(/*! ./Bladeburner.js */ 27);
-/* harmony import */ var _CinematicText_js__WEBPACK_IMPORTED_MODULE_10__ = __webpack_require__(/*! ./CinematicText.js */ 70);
-/* harmony import */ var _Company_js__WEBPACK_IMPORTED_MODULE_11__ = __webpack_require__(/*! ./Company.js */ 9);
-/* harmony import */ var _CompanyManagement_js__WEBPACK_IMPORTED_MODULE_12__ = __webpack_require__(/*! ./CompanyManagement.js */ 42);
-/* harmony import */ var _Constants_js__WEBPACK_IMPORTED_MODULE_13__ = __webpack_require__(/*! ./Constants.js */ 3);
-/* harmony import */ var _CreateProgram_js__WEBPACK_IMPORTED_MODULE_14__ = __webpack_require__(/*! ./CreateProgram.js */ 14);
-/* harmony import */ var _Faction_js__WEBPACK_IMPORTED_MODULE_15__ = __webpack_require__(/*! ./Faction.js */ 11);
-/* harmony import */ var _Fconf_js__WEBPACK_IMPORTED_MODULE_16__ = __webpack_require__(/*! ./Fconf.js */ 33);
-/* harmony import */ var _Location_js__WEBPACK_IMPORTED_MODULE_17__ = __webpack_require__(/*! ./Location.js */ 4);
-/* harmony import */ var _Gang_js__WEBPACK_IMPORTED_MODULE_18__ = __webpack_require__(/*! ./Gang.js */ 37);
-/* harmony import */ var _HacknetNode_js__WEBPACK_IMPORTED_MODULE_19__ = __webpack_require__(/*! ./HacknetNode.js */ 40);
-/* harmony import */ var _InteractiveTutorial_js__WEBPACK_IMPORTED_MODULE_20__ = __webpack_require__(/*! ./InteractiveTutorial.js */ 25);
-/* harmony import */ var _Literature_js__WEBPACK_IMPORTED_MODULE_21__ = __webpack_require__(/*! ./Literature.js */ 53);
-/* harmony import */ var _Message_js__WEBPACK_IMPORTED_MODULE_22__ = __webpack_require__(/*! ./Message.js */ 29);
-/* harmony import */ var _Missions_js__WEBPACK_IMPORTED_MODULE_23__ = __webpack_require__(/*! ./Missions.js */ 34);
-/* harmony import */ var _NetscriptFunctions_js__WEBPACK_IMPORTED_MODULE_24__ = __webpack_require__(/*! ./NetscriptFunctions.js */ 31);
-/* harmony import */ var _NetscriptWorker_js__WEBPACK_IMPORTED_MODULE_25__ = __webpack_require__(/*! ./NetscriptWorker.js */ 21);
-/* harmony import */ var _Player_js__WEBPACK_IMPORTED_MODULE_26__ = __webpack_require__(/*! ./Player.js */ 0);
-/* harmony import */ var _Prestige_js__WEBPACK_IMPORTED_MODULE_27__ = __webpack_require__(/*! ./Prestige.js */ 57);
-/* harmony import */ var _RedPill_js__WEBPACK_IMPORTED_MODULE_28__ = __webpack_require__(/*! ./RedPill.js */ 45);
-/* harmony import */ var _SaveObject_js__WEBPACK_IMPORTED_MODULE_29__ = __webpack_require__(/*! ./SaveObject.js */ 47);
-/* harmony import */ var _Script_js__WEBPACK_IMPORTED_MODULE_30__ = __webpack_require__(/*! ./Script.js */ 26);
-/* harmony import */ var _Server_js__WEBPACK_IMPORTED_MODULE_31__ = __webpack_require__(/*! ./Server.js */ 10);
-/* harmony import */ var _Settings_js__WEBPACK_IMPORTED_MODULE_32__ = __webpack_require__(/*! ./Settings.js */ 23);
-/* harmony import */ var _SourceFile_js__WEBPACK_IMPORTED_MODULE_33__ = __webpack_require__(/*! ./SourceFile.js */ 44);
-/* harmony import */ var _SpecialServerIps_js__WEBPACK_IMPORTED_MODULE_34__ = __webpack_require__(/*! ./SpecialServerIps.js */ 17);
-/* harmony import */ var _StockMarket_js__WEBPACK_IMPORTED_MODULE_35__ = __webpack_require__(/*! ./StockMarket.js */ 22);
-/* harmony import */ var _Terminal_js__WEBPACK_IMPORTED_MODULE_36__ = __webpack_require__(/*! ./Terminal.js */ 18);
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-/* Shortcuts to navigate through the game
- * Alt-t - Terminal
- * Alt-c - Character
- * Alt-e - Script editor
- * Alt-s - Active scripts
- * Alt-h - Hacknet Nodes
- * Alt-w - City
- * Alt-j - Job
- * Alt-r - Travel Agency of current city
- * Alt-p - Create program
- * Alt-f - Factions
- * Alt-a - Augmentations
- * Alt-u - Tutorial
- * Alt-o - Options
- */
-$(document).keydown(function(e) {
- if (_Settings_js__WEBPACK_IMPORTED_MODULE_32__["Settings"].DisableHotkeys === true) {return;}
- if (!_Player_js__WEBPACK_IMPORTED_MODULE_26__["Player"].isWorking && !_RedPill_js__WEBPACK_IMPORTED_MODULE_28__["redPillFlag"] && !_Missions_js__WEBPACK_IMPORTED_MODULE_23__["inMission"] && !_CinematicText_js__WEBPACK_IMPORTED_MODULE_10__["cinematicTextFlag"]) {
- if (e.keyCode == 84 && e.altKey) {
- e.preventDefault();
- Engine.loadTerminalContent();
- } else if (e.keyCode === _Terminal_js__WEBPACK_IMPORTED_MODULE_36__["KEY"].C && e.altKey) {
- e.preventDefault();
- Engine.loadCharacterContent();
- } else if (e.keyCode === _Terminal_js__WEBPACK_IMPORTED_MODULE_36__["KEY"].E && e.altKey) {
- e.preventDefault();
- Engine.loadScriptEditorContent();
- } else if (e.keyCode === _Terminal_js__WEBPACK_IMPORTED_MODULE_36__["KEY"].S && e.altKey) {
- e.preventDefault();
- Engine.loadActiveScriptsContent();
- } else if (e.keyCode === _Terminal_js__WEBPACK_IMPORTED_MODULE_36__["KEY"].H && e.altKey) {
- e.preventDefault();
- Engine.loadHacknetNodesContent();
- } else if (e.keyCode === _Terminal_js__WEBPACK_IMPORTED_MODULE_36__["KEY"].W && e.altKey) {
- e.preventDefault();
- Engine.loadWorldContent();
- } else if (e.keyCode === _Terminal_js__WEBPACK_IMPORTED_MODULE_36__["KEY"].J && e.altKey) {
- e.preventDefault();
- Engine.loadJobContent();
- } else if (e.keyCode === _Terminal_js__WEBPACK_IMPORTED_MODULE_36__["KEY"].R && e.altKey) {
- e.preventDefault();
- Engine.loadTravelContent();
- } else if (e.keyCode === _Terminal_js__WEBPACK_IMPORTED_MODULE_36__["KEY"].P && e.altKey) {
- e.preventDefault();
- Engine.loadCreateProgramContent();
- } else if (e.keyCode === _Terminal_js__WEBPACK_IMPORTED_MODULE_36__["KEY"].F && e.altKey) {
- //Overriden by Fconf
- if (Engine.currentPage === Engine.Page.Terminal && _Fconf_js__WEBPACK_IMPORTED_MODULE_16__["FconfSettings"].ENABLE_BASH_HOTKEYS) {
- return;
- }
- e.preventDefault();
- Engine.loadFactionsContent();
- } else if (e.keyCode === _Terminal_js__WEBPACK_IMPORTED_MODULE_36__["KEY"].A && e.altKey) {
- e.preventDefault();
- Engine.loadAugmentationsContent();
- } else if (e.keyCode === _Terminal_js__WEBPACK_IMPORTED_MODULE_36__["KEY"].U && e.altKey) {
- e.preventDefault();
- Engine.loadTutorialContent();
- }
- }
-
- if (e.keyCode === _Terminal_js__WEBPACK_IMPORTED_MODULE_36__["KEY"].O && e.altKey) {
- e.preventDefault();
- Object(_utils_GameOptions_js__WEBPACK_IMPORTED_MODULE_1__["gameOptionsBoxOpen"])();
- }
-});
-
-let Engine = {
- version: "",
- Debug: true,
-
- //Clickable objects
- Clickables: {
- //Main menu buttons
- terminalMainMenuButton: null,
- characterMainMenuButton: null,
- scriptEditorMainMenuButton: null,
- activeScriptsMainMenuButton: null,
- hacknetNodesMainMenuButton: null,
- worldMainMenuButton: null,
- travelMainMenuButton: null,
- jobMainMenuButton: null,
- createProgramMainMenuButton: null,
- factionsMainMenuButton: null,
- augmentationsMainMenuButton: null,
- tutorialMainMenuButton: null,
- saveMainMenuButton: null,
- deleteMainMenuButton: null,
-
- //Tutorial buttons
- tutorialNetworkingButton: null,
- tutorialHackingButton: null,
- tutorialScriptsButton: null,
- tutorialNetscriptButton: null,
- tutorialTravelingButton: null,
- tutorialCompaniesButton: null,
- tutorialFactionsButton: null,
- tutorialAugmentationsButton: null,
- tutorialBackButton: null,
- },
-
- //Display objects
- Display: {
- //Progress bar
- progress: null,
-
- //Display for status text (such as "Saved" or "Loaded")
- statusText: null,
-
- hacking_skill: null,
-
- //Main menu content
- terminalContent: null,
- characterContent: null,
- scriptEditorContent: null,
- activeScriptsContent: null,
- hacknetNodesContent: null,
- worldContent: null,
- createProgramContent: null,
- factionsContent: null,
- factionContent: null,
- factionAugmentationsContent: null,
- augmentationsContent: null,
- tutorialContent: null,
- infiltrationContent: null,
- stockMarketContent: null,
- locationContent: null,
- workInProgressContent: null,
- redPillContent: null,
- cinematicTextContent: null,
- missionContent: null,
-
- //Character info
- characterInfo: null,
- },
-
- //Current page status
- Page: {
- Terminal: "Terminal",
- CharacterInfo: "CharacterInfo",
- ScriptEditor: "ScriptEditor",
- ActiveScripts: "ActiveScripts",
- HacknetNodes: "HacknetNodes",
- World: "World",
- CreateProgram: "CreateProgram",
- Factions: "Factions",
- Faction: "Faction",
- Augmentations: "Augmentations",
- Tutorial: "Tutorial",
- Location: "Location",
- workInProgress: "WorkInProgress",
- RedPill: "RedPill",
- CinematicText: "CinematicText",
- Infiltration: "Infiltration",
- StockMarket: "StockMarket",
- Gang: "Gang",
- Mission: "Mission",
- Corporation: "Corporation",
- Bladeburner: "Bladeburner",
- },
- currentPage: null,
-
-
- //Time variables (milliseconds unix epoch time)
- _lastUpdate: new Date().getTime(),
- _idleSpeed: 200, //Speed (in ms) at which the main loop is updated
-
-
- /* Load content when a main menu button is clicked */
- loadTerminalContent: function() {
- Engine.hideAllContent();
- Engine.Display.terminalContent.style.display = "block";
- Engine.currentPage = Engine.Page.Terminal;
- document.getElementById("terminal-menu-link").classList.add("active");
- },
-
- loadCharacterContent: function() {
- Engine.hideAllContent();
- Engine.Display.characterContent.style.display = "block";
- Engine.displayCharacterInfo();
- Engine.currentPage = Engine.Page.CharacterInfo;
- document.getElementById("stats-menu-link").classList.add("active");
- },
-
- loadScriptEditorContent: function(filename = "", code = "") {
- Engine.hideAllContent();
- Engine.Display.scriptEditorContent.style.display = "block";
- var editor = ace.edit('javascript-editor');
- if (filename != "") {
- document.getElementById("script-editor-filename").value = filename;
- editor.setValue(code);
- }
- editor.focus();
- Object(_Script_js__WEBPACK_IMPORTED_MODULE_30__["updateScriptEditorContent"])();
- Engine.currentPage = Engine.Page.ScriptEditor;
- document.getElementById("create-script-menu-link").classList.add("active");
- },
-
- loadActiveScriptsContent: function() {
- Engine.hideAllContent();
- Engine.Display.activeScriptsContent.style.display = "block";
- Object(_ActiveScriptsUI_js__WEBPACK_IMPORTED_MODULE_6__["updateActiveScriptsItems"])();
- Engine.currentPage = Engine.Page.ActiveScripts;
- document.getElementById("active-scripts-menu-link").classList.add("active");
- },
-
- loadHacknetNodesContent: function() {
- Engine.hideAllContent();
- Engine.Display.hacknetNodesContent.style.display = "block";
- Object(_HacknetNode_js__WEBPACK_IMPORTED_MODULE_19__["displayHacknetNodesContent"])();
- Engine.currentPage = Engine.Page.HacknetNodes;
- document.getElementById("hacknet-nodes-menu-link").classList.add("active");
- },
-
- loadWorldContent: function() {
- Engine.hideAllContent();
- Engine.Display.worldContent.style.display = "block";
- Engine.displayWorldInfo();
- Engine.currentPage = Engine.Page.World;
- document.getElementById("city-menu-link").classList.add("active");
- },
-
- loadCreateProgramContent: function() {
- Engine.hideAllContent();
- Engine.Display.createProgramContent.style.display = "block";
- Object(_CreateProgram_js__WEBPACK_IMPORTED_MODULE_14__["displayCreateProgramContent"])();
- Engine.currentPage = Engine.Page.CreateProgram;
- document.getElementById("create-program-menu-link").classList.add("active");
- },
-
- loadFactionsContent: function() {
- Engine.hideAllContent();
- Engine.Display.factionsContent.style.display = "block";
- Engine.displayFactionsInfo();
- Engine.currentPage = Engine.Page.Factions;
- document.getElementById("factions-menu-link").classList.add("active");
- },
-
- loadFactionContent: function() {
- Engine.hideAllContent();
- Engine.Display.factionContent.style.display = "block";
- Engine.currentPage = Engine.Page.Faction;
- },
-
- loadAugmentationsContent: function() {
- Engine.hideAllContent();
- Engine.Display.augmentationsContent.style.display = "block";
- Object(_Augmentations_js__WEBPACK_IMPORTED_MODULE_7__["displayAugmentationsContent"])();
- Engine.currentPage = Engine.Page.Augmentations;
- document.getElementById("augmentations-menu-link").classList.add("active");
- },
-
- loadTutorialContent: function() {
- Engine.hideAllContent();
- Engine.Display.tutorialContent.style.display = "block";
- Engine.displayTutorialContent();
- Engine.currentPage = Engine.Page.Tutorial;
- document.getElementById("tutorial-menu-link").classList.add("active");
- },
-
- loadLocationContent: function() {
- Engine.hideAllContent();
- Engine.Display.locationContent.style.display = "block";
- Object(_Location_js__WEBPACK_IMPORTED_MODULE_17__["displayLocationContent"])();
- Engine.currentPage = Engine.Page.Location;
- },
-
- loadTravelContent: function() {
- switch(_Player_js__WEBPACK_IMPORTED_MODULE_26__["Player"].city) {
- case _Location_js__WEBPACK_IMPORTED_MODULE_17__["Locations"].Aevum:
- _Player_js__WEBPACK_IMPORTED_MODULE_26__["Player"].location = _Location_js__WEBPACK_IMPORTED_MODULE_17__["Locations"].AevumTravelAgency;
- break;
- case _Location_js__WEBPACK_IMPORTED_MODULE_17__["Locations"].Chongqing:
- _Player_js__WEBPACK_IMPORTED_MODULE_26__["Player"].location = _Location_js__WEBPACK_IMPORTED_MODULE_17__["Locations"].ChongqingTravelAgency;
- break;
- case _Location_js__WEBPACK_IMPORTED_MODULE_17__["Locations"].Sector12:
- _Player_js__WEBPACK_IMPORTED_MODULE_26__["Player"].location = _Location_js__WEBPACK_IMPORTED_MODULE_17__["Locations"].Sector12TravelAgency;
- break;
- case _Location_js__WEBPACK_IMPORTED_MODULE_17__["Locations"].NewTokyo:
- _Player_js__WEBPACK_IMPORTED_MODULE_26__["Player"].location = _Location_js__WEBPACK_IMPORTED_MODULE_17__["Locations"].NewTokyoTravelAgency;
- break;
- case _Location_js__WEBPACK_IMPORTED_MODULE_17__["Locations"].Ishima:
- _Player_js__WEBPACK_IMPORTED_MODULE_26__["Player"].location = _Location_js__WEBPACK_IMPORTED_MODULE_17__["Locations"].IshimaTravelAgency;
- break;
- case _Location_js__WEBPACK_IMPORTED_MODULE_17__["Locations"].Volhaven:
- _Player_js__WEBPACK_IMPORTED_MODULE_26__["Player"].location = _Location_js__WEBPACK_IMPORTED_MODULE_17__["Locations"].VolhavenTravelAgency;
- break;
- default:
- Object(_utils_DialogBox_js__WEBPACK_IMPORTED_MODULE_0__["dialogBoxCreate"])("ERROR: Invalid city. This is a bug please contact game dev");
- break;
- }
- Engine.loadLocationContent();
- },
-
- loadJobContent: function() {
- if (_Player_js__WEBPACK_IMPORTED_MODULE_26__["Player"].companyName == "") {
- Object(_utils_DialogBox_js__WEBPACK_IMPORTED_MODULE_0__["dialogBoxCreate"])("You do not currently have a job! You can visit various companies " +
- "in the city and try to find a job.");
- return;
- }
- _Player_js__WEBPACK_IMPORTED_MODULE_26__["Player"].location = _Player_js__WEBPACK_IMPORTED_MODULE_26__["Player"].companyName;
- Engine.loadLocationContent();
- },
-
- loadWorkInProgressContent: function() {
- Engine.hideAllContent();
- var mainMenu = document.getElementById("mainmenu-container");
- //mainMenu.style.visibility = "hidden";
- mainMenu.style.visibility = "hidden";
- Engine.Display.workInProgressContent.style.display = "block";
- Engine.currentPage = Engine.Page.WorkInProgress;
- },
-
- loadRedPillContent: function() {
- Engine.hideAllContent();
- var mainMenu = document.getElementById("mainmenu-container");
- mainMenu.style.visibility = "hidden";
- Engine.Display.redPillContent.style.display = "block";
- Engine.currentPage = Engine.Page.RedPill;
- },
-
- loadCinematicTextContent: function() {
- Engine.hideAllContent();
- var mainMenu = document.getElementById("mainmenu-container");
- mainMenu.style.visibility = "hidden";
- Engine.Display.cinematicTextContent.style.display = "block";
- Engine.currentPage = Engine.Page.CinematicText;
- },
-
- loadInfiltrationContent: function() {
- Engine.hideAllContent();
- Engine.Display.infiltrationContent.style.display = "block";
- Engine.currentPage = Engine.Page.Infiltration;
- },
-
- loadStockMarketContent: function() {
- Engine.hideAllContent();
- Engine.Display.stockMarketContent.style.display = "block";
- Engine.currentPage = Engine.Page.StockMarket;
- Object(_StockMarket_js__WEBPACK_IMPORTED_MODULE_35__["displayStockMarketContent"])();
- },
-
- loadGangContent: function() {
- Engine.hideAllContent();
- if (document.getElementById("gang-container") || _Player_js__WEBPACK_IMPORTED_MODULE_26__["Player"].inGang()) {
- Object(_Gang_js__WEBPACK_IMPORTED_MODULE_18__["displayGangContent"])();
- Engine.currentPage = Engine.Page.Gang;
- } else {
- Engine.loadTerminalContent();
- Engine.currentPage = Engine.Page.Terminal;
- }
- },
-
- loadMissionContent: function() {
- Engine.hideAllContent();
- document.getElementById("mainmenu-container").style.visibility = "hidden";
- document.getElementById("character-overview-wrapper").style.visibility = "hidden";
- Engine.Display.missionContent.style.display = "block";
- Engine.currentPage = Engine.Page.Mission;
- },
-
- loadCorporationContent: function() {
- if (_Player_js__WEBPACK_IMPORTED_MODULE_26__["Player"].corporation instanceof _CompanyManagement_js__WEBPACK_IMPORTED_MODULE_12__["Corporation"]) {
- Engine.hideAllContent();
- document.getElementById("character-overview-wrapper").style.visibility = "hidden";
- _Player_js__WEBPACK_IMPORTED_MODULE_26__["Player"].corporation.createUI();
- Engine.currentPage = Engine.Page.Corporation;
- }
- },
-
- loadBladeburnerContent: function() {
- if (_Player_js__WEBPACK_IMPORTED_MODULE_26__["Player"].bladeburner instanceof _Bladeburner_js__WEBPACK_IMPORTED_MODULE_9__["Bladeburner"]) {
- try {
- Engine.hideAllContent();
- Engine.currentPage = Engine.Page.Bladeburner;
- _Player_js__WEBPACK_IMPORTED_MODULE_26__["Player"].bladeburner.createContent();
- } catch(e) {
- Object(_utils_HelperFunctions_js__WEBPACK_IMPORTED_MODULE_2__["exceptionAlert"])(e);
- }
- }
- },
-
- //Helper function that hides all content
- hideAllContent: function() {
- Engine.Display.terminalContent.style.display = "none";
- Engine.Display.characterContent.style.display = "none";
- Engine.Display.scriptEditorContent.style.display = "none";
- Engine.Display.activeScriptsContent.style.display = "none";
- Engine.Display.hacknetNodesContent.style.display = "none";
- Engine.Display.worldContent.style.display = "none";
- Engine.Display.createProgramContent.style.display = "none";
- Engine.Display.factionsContent.style.display = "none";
- Engine.Display.factionContent.style.display = "none";
- Engine.Display.factionAugmentationsContent.style.display = "none";
- Engine.Display.augmentationsContent.style.display = "none";
- Engine.Display.tutorialContent.style.display = "none";
- Engine.Display.locationContent.style.display = "none";
- Engine.Display.workInProgressContent.style.display = "none";
- Engine.Display.redPillContent.style.display = "none";
- Engine.Display.cinematicTextContent.style.display = "none";
- Engine.Display.infiltrationContent.style.display = "none";
- Engine.Display.stockMarketContent.style.display = "none";
- Engine.Display.missionContent.style.display = "none";
- if (document.getElementById("gang-container")) {
- document.getElementById("gang-container").style.display = "none";
- }
-
- if (_Player_js__WEBPACK_IMPORTED_MODULE_26__["Player"].corporation instanceof _CompanyManagement_js__WEBPACK_IMPORTED_MODULE_12__["Corporation"]) {
- _Player_js__WEBPACK_IMPORTED_MODULE_26__["Player"].corporation.clearUI();
- }
-
- if (_Player_js__WEBPACK_IMPORTED_MODULE_26__["Player"].bladeburner instanceof _Bladeburner_js__WEBPACK_IMPORTED_MODULE_9__["Bladeburner"]) {
- _Player_js__WEBPACK_IMPORTED_MODULE_26__["Player"].bladeburner.clearContent();
- }
-
- //Location lists
- Engine.aevumLocationsList.style.display = "none";
- Engine.chongqingLocationsList.style.display = "none";
- Engine.sector12LocationsList.style.display = "none";
- Engine.newTokyoLocationsList.style.display = "none";
- Engine.ishimaLocationsList.style.display = "none";
- Engine.volhavenLocationsList.style.display = "none";
-
- //Make nav menu tabs inactive
- document.getElementById("terminal-menu-link").classList.remove("active");
- document.getElementById("create-script-menu-link").classList.remove("active");
- document.getElementById("active-scripts-menu-link").classList.remove("active");
- document.getElementById("create-program-menu-link").classList.remove("active");
- document.getElementById("stats-menu-link").classList.remove("active");
- document.getElementById("factions-menu-link").classList.remove("active");
- document.getElementById("augmentations-menu-link").classList.remove("active");
- document.getElementById("hacknet-nodes-menu-link").classList.remove("active");
- document.getElementById("city-menu-link").classList.remove("active");
- document.getElementById("tutorial-menu-link").classList.remove("active");
- document.getElementById("options-menu-link").classList.remove("active");
- },
-
- displayCharacterOverviewInfo: function() {
- if (_Player_js__WEBPACK_IMPORTED_MODULE_26__["Player"].hp == null) {_Player_js__WEBPACK_IMPORTED_MODULE_26__["Player"].hp = _Player_js__WEBPACK_IMPORTED_MODULE_26__["Player"].max_hp;}
- var overviewText = "Hp: " + _Player_js__WEBPACK_IMPORTED_MODULE_26__["Player"].hp + " / " + _Player_js__WEBPACK_IMPORTED_MODULE_26__["Player"].max_hp + "
" +
- "Money: " + _utils_numeral_min_js__WEBPACK_IMPORTED_MODULE_3___default()(_Player_js__WEBPACK_IMPORTED_MODULE_26__["Player"].money.toNumber()).format('($0.000a)') + "
" +
- "Hack: " + (_Player_js__WEBPACK_IMPORTED_MODULE_26__["Player"].hacking_skill).toLocaleString() + "
" +
- "Str: " + (_Player_js__WEBPACK_IMPORTED_MODULE_26__["Player"].strength).toLocaleString() + "
" +
- "Def: " + (_Player_js__WEBPACK_IMPORTED_MODULE_26__["Player"].defense).toLocaleString() + "
" +
- "Dex: " + (_Player_js__WEBPACK_IMPORTED_MODULE_26__["Player"].dexterity).toLocaleString() + "
" +
- "Agi: " + (_Player_js__WEBPACK_IMPORTED_MODULE_26__["Player"].agility).toLocaleString() + "
" +
- "Cha: " + (_Player_js__WEBPACK_IMPORTED_MODULE_26__["Player"].charisma).toLocaleString();
- if (_Player_js__WEBPACK_IMPORTED_MODULE_26__["Player"].intelligence >= 1) {
- overviewText += "
Int: " + (_Player_js__WEBPACK_IMPORTED_MODULE_26__["Player"].intelligence).toLocaleString();
- }
- document.getElementById("character-overview-text").innerHTML = overviewText.replace( / /g, " ");
- },
-
- /* Display character info */
- displayCharacterInfo: function() {
- Object(_utils_HelperFunctions_js__WEBPACK_IMPORTED_MODULE_2__["removeChildrenFromElement"])(Engine.Display.characterInfo);
-
- var companyPosition = "";
- if (_Player_js__WEBPACK_IMPORTED_MODULE_26__["Player"].companyPosition != "") {
- companyPosition = _Player_js__WEBPACK_IMPORTED_MODULE_26__["Player"].companyPosition.positionName;
- }
-
- var intText = "";
- if (_Player_js__WEBPACK_IMPORTED_MODULE_26__["Player"].intelligence > 0) {
- intText = 'Intelligence: ' + (_Player_js__WEBPACK_IMPORTED_MODULE_26__["Player"].intelligence).toLocaleString() + "
";
- }
-
- Engine.Display.characterInfo.appendChild(Object(_utils_HelperFunctions_js__WEBPACK_IMPORTED_MODULE_2__["createElement"])("pre", {
- innerHTML:
- 'General
' +
- 'Current City: ' + _Player_js__WEBPACK_IMPORTED_MODULE_26__["Player"].city + '
' +
- 'Employer: ' + _Player_js__WEBPACK_IMPORTED_MODULE_26__["Player"].companyName + '
' +
- 'Job Title: ' + companyPosition + '
' +
- 'Money: $' + Object(_utils_StringHelperFunctions_js__WEBPACK_IMPORTED_MODULE_4__["formatNumber"])(_Player_js__WEBPACK_IMPORTED_MODULE_26__["Player"].money.toNumber(), 2)+ '
' +
- 'Stats
' +
- 'Hacking Level: ' + (_Player_js__WEBPACK_IMPORTED_MODULE_26__["Player"].hacking_skill).toLocaleString() +
- " (" + _utils_numeral_min_js__WEBPACK_IMPORTED_MODULE_3___default()(_Player_js__WEBPACK_IMPORTED_MODULE_26__["Player"].hacking_exp).format('(0.000a)') + ' experience)
' +
- 'Strength: ' + (_Player_js__WEBPACK_IMPORTED_MODULE_26__["Player"].strength).toLocaleString() +
- " (" + _utils_numeral_min_js__WEBPACK_IMPORTED_MODULE_3___default()(_Player_js__WEBPACK_IMPORTED_MODULE_26__["Player"].strength_exp).format('(0.000a)') + ' experience)
' +
- 'Defense: ' + (_Player_js__WEBPACK_IMPORTED_MODULE_26__["Player"].defense).toLocaleString() +
- " (" + _utils_numeral_min_js__WEBPACK_IMPORTED_MODULE_3___default()(_Player_js__WEBPACK_IMPORTED_MODULE_26__["Player"].defense_exp).format('(0.000a)')+ ' experience)
' +
- 'Dexterity: ' + (_Player_js__WEBPACK_IMPORTED_MODULE_26__["Player"].dexterity).toLocaleString() +
- " (" + _utils_numeral_min_js__WEBPACK_IMPORTED_MODULE_3___default()(_Player_js__WEBPACK_IMPORTED_MODULE_26__["Player"].dexterity_exp).format('(0.000a)') + ' experience)
' +
- 'Agility: ' + (_Player_js__WEBPACK_IMPORTED_MODULE_26__["Player"].agility).toLocaleString() +
- " (" + _utils_numeral_min_js__WEBPACK_IMPORTED_MODULE_3___default()(_Player_js__WEBPACK_IMPORTED_MODULE_26__["Player"].agility_exp).format('(0.000a)') + ' experience)
' +
- 'Charisma: ' + (_Player_js__WEBPACK_IMPORTED_MODULE_26__["Player"].charisma).toLocaleString() +
- " (" + _utils_numeral_min_js__WEBPACK_IMPORTED_MODULE_3___default()(_Player_js__WEBPACK_IMPORTED_MODULE_26__["Player"].charisma_exp).format('(0.000a)') + ' experience)
' +
- intText +
- 'Multipliers
' +
- 'Hacking Chance multiplier: ' + Object(_utils_StringHelperFunctions_js__WEBPACK_IMPORTED_MODULE_4__["formatNumber"])(_Player_js__WEBPACK_IMPORTED_MODULE_26__["Player"].hacking_chance_mult * 100, 2) + '%
' +
- 'Hacking Speed multiplier: ' + Object(_utils_StringHelperFunctions_js__WEBPACK_IMPORTED_MODULE_4__["formatNumber"])(_Player_js__WEBPACK_IMPORTED_MODULE_26__["Player"].hacking_speed_mult * 100, 2) + '%
' +
- 'Hacking Money multiplier: ' + Object(_utils_StringHelperFunctions_js__WEBPACK_IMPORTED_MODULE_4__["formatNumber"])(_Player_js__WEBPACK_IMPORTED_MODULE_26__["Player"].hacking_money_mult * 100, 2) + '%
' +
- 'Hacking Growth multiplier: ' + Object(_utils_StringHelperFunctions_js__WEBPACK_IMPORTED_MODULE_4__["formatNumber"])(_Player_js__WEBPACK_IMPORTED_MODULE_26__["Player"].hacking_grow_mult * 100, 2) + '%
' +
- 'Hacking Level multiplier: ' + Object(_utils_StringHelperFunctions_js__WEBPACK_IMPORTED_MODULE_4__["formatNumber"])(_Player_js__WEBPACK_IMPORTED_MODULE_26__["Player"].hacking_mult * 100, 2) + '%
' +
- 'Hacking Experience multiplier: ' + Object(_utils_StringHelperFunctions_js__WEBPACK_IMPORTED_MODULE_4__["formatNumber"])(_Player_js__WEBPACK_IMPORTED_MODULE_26__["Player"].hacking_exp_mult * 100, 2) + '%
' +
- 'Strength Level multiplier: ' + Object(_utils_StringHelperFunctions_js__WEBPACK_IMPORTED_MODULE_4__["formatNumber"])(_Player_js__WEBPACK_IMPORTED_MODULE_26__["Player"].strength_mult * 100, 2) + '%
' +
- 'Strength Experience multiplier: ' + Object(_utils_StringHelperFunctions_js__WEBPACK_IMPORTED_MODULE_4__["formatNumber"])(_Player_js__WEBPACK_IMPORTED_MODULE_26__["Player"].strength_exp_mult * 100, 2) + '%
' +
- 'Defense Level multiplier: ' + Object(_utils_StringHelperFunctions_js__WEBPACK_IMPORTED_MODULE_4__["formatNumber"])(_Player_js__WEBPACK_IMPORTED_MODULE_26__["Player"].defense_mult * 100, 2) + '%
' +
- 'Defense Experience multiplier: ' + Object(_utils_StringHelperFunctions_js__WEBPACK_IMPORTED_MODULE_4__["formatNumber"])(_Player_js__WEBPACK_IMPORTED_MODULE_26__["Player"].defense_exp_mult * 100, 2) + '%
' +
- 'Dexterity Level multiplier: ' + Object(_utils_StringHelperFunctions_js__WEBPACK_IMPORTED_MODULE_4__["formatNumber"])(_Player_js__WEBPACK_IMPORTED_MODULE_26__["Player"].dexterity_mult * 100, 2) + '%
' +
- 'Dexterity Experience multiplier: ' + Object(_utils_StringHelperFunctions_js__WEBPACK_IMPORTED_MODULE_4__["formatNumber"])(_Player_js__WEBPACK_IMPORTED_MODULE_26__["Player"].dexterity_exp_mult * 100, 2) + '%
' +
- 'Agility Level multiplier: ' + Object(_utils_StringHelperFunctions_js__WEBPACK_IMPORTED_MODULE_4__["formatNumber"])(_Player_js__WEBPACK_IMPORTED_MODULE_26__["Player"].agility_mult * 100, 2) + '%
' +
- 'Agility Experience multiplier: ' + Object(_utils_StringHelperFunctions_js__WEBPACK_IMPORTED_MODULE_4__["formatNumber"])(_Player_js__WEBPACK_IMPORTED_MODULE_26__["Player"].agility_exp_mult * 100, 2) + '%
' +
- 'Charisma Level multiplier: ' + Object(_utils_StringHelperFunctions_js__WEBPACK_IMPORTED_MODULE_4__["formatNumber"])(_Player_js__WEBPACK_IMPORTED_MODULE_26__["Player"].charisma_mult * 100, 2) + '%
' +
- 'Charisma Experience multiplier: ' + Object(_utils_StringHelperFunctions_js__WEBPACK_IMPORTED_MODULE_4__["formatNumber"])(_Player_js__WEBPACK_IMPORTED_MODULE_26__["Player"].charisma_exp_mult * 100, 2) + '%
' +
- 'Hacknet Node production multiplier: ' + Object(_utils_StringHelperFunctions_js__WEBPACK_IMPORTED_MODULE_4__["formatNumber"])(_Player_js__WEBPACK_IMPORTED_MODULE_26__["Player"].hacknet_node_money_mult * 100, 2) + '%
' +
- 'Hacknet Node purchase cost multiplier: ' + Object(_utils_StringHelperFunctions_js__WEBPACK_IMPORTED_MODULE_4__["formatNumber"])(_Player_js__WEBPACK_IMPORTED_MODULE_26__["Player"].hacknet_node_purchase_cost_mult * 100, 2) + '%
' +
- 'Hacknet Node RAM upgrade cost multiplier: ' + Object(_utils_StringHelperFunctions_js__WEBPACK_IMPORTED_MODULE_4__["formatNumber"])(_Player_js__WEBPACK_IMPORTED_MODULE_26__["Player"].hacknet_node_ram_cost_mult * 100, 2) + '%
' +
- 'Hacknet Node Core purchase cost multiplier: ' + Object(_utils_StringHelperFunctions_js__WEBPACK_IMPORTED_MODULE_4__["formatNumber"])(_Player_js__WEBPACK_IMPORTED_MODULE_26__["Player"].hacknet_node_core_cost_mult * 100, 2) + '%
' +
- 'Hacknet Node level upgrade cost multiplier: ' + Object(_utils_StringHelperFunctions_js__WEBPACK_IMPORTED_MODULE_4__["formatNumber"])(_Player_js__WEBPACK_IMPORTED_MODULE_26__["Player"].hacknet_node_level_cost_mult * 100, 2) + '%
' +
- 'Company reputation gain multiplier: ' + Object(_utils_StringHelperFunctions_js__WEBPACK_IMPORTED_MODULE_4__["formatNumber"])(_Player_js__WEBPACK_IMPORTED_MODULE_26__["Player"].company_rep_mult * 100, 2) + '%
' +
- 'Faction reputation gain multiplier: ' + Object(_utils_StringHelperFunctions_js__WEBPACK_IMPORTED_MODULE_4__["formatNumber"])(_Player_js__WEBPACK_IMPORTED_MODULE_26__["Player"].faction_rep_mult * 100, 2) + '%
' +
- 'Salary multiplier: ' + Object(_utils_StringHelperFunctions_js__WEBPACK_IMPORTED_MODULE_4__["formatNumber"])(_Player_js__WEBPACK_IMPORTED_MODULE_26__["Player"].work_money_mult * 100, 2) + '%
' +
- 'Crime success multiplier: ' + Object(_utils_StringHelperFunctions_js__WEBPACK_IMPORTED_MODULE_4__["formatNumber"])(_Player_js__WEBPACK_IMPORTED_MODULE_26__["Player"].crime_success_mult * 100, 2) + '%
' +
- 'Crime money multiplier: ' + Object(_utils_StringHelperFunctions_js__WEBPACK_IMPORTED_MODULE_4__["formatNumber"])(_Player_js__WEBPACK_IMPORTED_MODULE_26__["Player"].crime_money_mult * 100, 2) + '%
' +
- 'Misc
' +
- 'Servers owned: ' + _Player_js__WEBPACK_IMPORTED_MODULE_26__["Player"].purchasedServers.length + '
' +
- 'Hacknet Nodes owned: ' + _Player_js__WEBPACK_IMPORTED_MODULE_26__["Player"].hacknetNodes.length + '
' +
- 'Augmentations installed: ' + _Player_js__WEBPACK_IMPORTED_MODULE_26__["Player"].augmentations.length + '
' +
- 'Time played since last Augmentation: ' + Object(_utils_StringHelperFunctions_js__WEBPACK_IMPORTED_MODULE_4__["convertTimeMsToTimeElapsedString"])(_Player_js__WEBPACK_IMPORTED_MODULE_26__["Player"].playtimeSinceLastAug) + '
' +
- 'Time played: ' + Object(_utils_StringHelperFunctions_js__WEBPACK_IMPORTED_MODULE_4__["convertTimeMsToTimeElapsedString"])(_Player_js__WEBPACK_IMPORTED_MODULE_26__["Player"].totalPlaytime),
- }));
-
- if (_Player_js__WEBPACK_IMPORTED_MODULE_26__["Player"].sourceFiles.length !== 0) {
- var index = "BitNode" + _Player_js__WEBPACK_IMPORTED_MODULE_26__["Player"].bitNodeN;
-
- Engine.Display.characterInfo.appendChild(Object(_utils_HelperFunctions_js__WEBPACK_IMPORTED_MODULE_2__["createElement"])("p", {
- width:"60%",
- innerHTML:
- "
Current BitNode: " + _Player_js__WEBPACK_IMPORTED_MODULE_26__["Player"].bitNodeN + " (" + _BitNode_js__WEBPACK_IMPORTED_MODULE_8__["BitNodes"][index].name + ")
",
- }));
-
- Engine.Display.characterInfo.appendChild(Object(_utils_HelperFunctions_js__WEBPACK_IMPORTED_MODULE_2__["createElement"])("p", {
- width:"60%", fontSize: "13px", marginLeft:"4%",
- innerHTML:_BitNode_js__WEBPACK_IMPORTED_MODULE_8__["BitNodes"][index].info,
- }))
- }
- },
-
- /* Display locations in the world*/
- aevumLocationsList: null,
- chongqingLocationsList: null,
- sector12LocationsList: null,
- newTokyoLocationsList: null,
- ishimaLocationsList: null,
- volhavenLocationsList: null,
-
- displayWorldInfo: function() {
- Engine.aevumLocationsList.style.display = "none";
- Engine.chongqingLocationsList.style.display = "none";
- Engine.sector12LocationsList.style.display = "none";
- Engine.newTokyoLocationsList.style.display = "none";
- Engine.ishimaLocationsList.style.display = "none";
- Engine.volhavenLocationsList.style.display = "none";
-
- document.getElementById("world-city-name").innerHTML = _Player_js__WEBPACK_IMPORTED_MODULE_26__["Player"].city;
- var cityDesc = document.getElementById("world-city-desc"); //TODO
- switch(_Player_js__WEBPACK_IMPORTED_MODULE_26__["Player"].city) {
- case _Location_js__WEBPACK_IMPORTED_MODULE_17__["Locations"].Aevum:
- Engine.aevumLocationsList.style.display = "inline";
- break;
- case _Location_js__WEBPACK_IMPORTED_MODULE_17__["Locations"].Chongqing:
- Engine.chongqingLocationsList.style.display = "inline";
- break;
- case _Location_js__WEBPACK_IMPORTED_MODULE_17__["Locations"].Sector12:
- Engine.sector12LocationsList.style.display = "inline";
-
- //City hall only in BitNode-3/with Source-File 3
- if ((_Player_js__WEBPACK_IMPORTED_MODULE_26__["Player"].bitNodeN === 3 || _NetscriptFunctions_js__WEBPACK_IMPORTED_MODULE_24__["hasCorporationSF"]) && _Player_js__WEBPACK_IMPORTED_MODULE_26__["Player"].bitNodeN !== 8) {
- document.getElementById("sector12-cityhall-li").style.display = "block";
- } else {
- document.getElementById("sector12-cityhall-li").style.display = "none";
- }
- break;
- case _Location_js__WEBPACK_IMPORTED_MODULE_17__["Locations"].NewTokyo:
- Engine.newTokyoLocationsList.style.display = "inline";
- break;
- case _Location_js__WEBPACK_IMPORTED_MODULE_17__["Locations"].Ishima:
- Engine.ishimaLocationsList.style.display = "inline";
- break;
- case _Location_js__WEBPACK_IMPORTED_MODULE_17__["Locations"].Volhaven:
- Engine.volhavenLocationsList.style.display = "inline";
- break;
- default:
- console.log("Invalid city value in Player object!");
- break;
- }
-
- //Generic Locations (common to every city):
- // World Stock Exchange
- // Corporation (if applicable)
- var genericLocationsList = document.getElementById("generic-locations-list");
- genericLocationsList.style.display = "inline";
- Object(_utils_HelperFunctions_js__WEBPACK_IMPORTED_MODULE_2__["removeChildrenFromElement"])(genericLocationsList);
- var li = Object(_utils_HelperFunctions_js__WEBPACK_IMPORTED_MODULE_2__["createElement"])("li");
- li.appendChild(Object(_utils_HelperFunctions_js__WEBPACK_IMPORTED_MODULE_2__["createElement"])("a", {
- innerText:"World Stock Exchange", class:"a-link-button",
- clickListener:()=>{
- _Player_js__WEBPACK_IMPORTED_MODULE_26__["Player"].location = _Location_js__WEBPACK_IMPORTED_MODULE_17__["Locations"].WorldStockExchange;
- Engine.loadStockMarketContent();
- return false;
- }
- }));
- genericLocationsList.appendChild(li);
-
- if (_Player_js__WEBPACK_IMPORTED_MODULE_26__["Player"].corporation instanceof _CompanyManagement_js__WEBPACK_IMPORTED_MODULE_12__["Corporation"] && document.getElementById("location-corporation-button") == null) {
- var li = Object(_utils_HelperFunctions_js__WEBPACK_IMPORTED_MODULE_2__["createElement"])("li");
- li.appendChild(Object(_utils_HelperFunctions_js__WEBPACK_IMPORTED_MODULE_2__["createElement"])("a", {
- innerText:_Player_js__WEBPACK_IMPORTED_MODULE_26__["Player"].corporation.name, id:"location-corporation-button",
- class:"a-link-button",
- clickListener:()=>{
- Engine.loadCorporationContent();
- return false;
- }
- }));
- genericLocationsList.appendChild(li);
- }
- },
-
- displayFactionsInfo: function() {
- Object(_utils_HelperFunctions_js__WEBPACK_IMPORTED_MODULE_2__["removeChildrenFromElement"])(Engine.Display.factionsContent);
-
- //Factions
- Engine.Display.factionsContent.appendChild(Object(_utils_HelperFunctions_js__WEBPACK_IMPORTED_MODULE_2__["createElement"])("h1", {
- innerText:"Factions"
- }));
- Engine.Display.factionsContent.appendChild(Object(_utils_HelperFunctions_js__WEBPACK_IMPORTED_MODULE_2__["createElement"])("p", {
- innerText:"Lists all factions you have joined"
- }));
- var factionsList = Object(_utils_HelperFunctions_js__WEBPACK_IMPORTED_MODULE_2__["createElement"])("ul");
- Engine.Display.factionsContent.appendChild(Object(_utils_HelperFunctions_js__WEBPACK_IMPORTED_MODULE_2__["createElement"])("br"));
-
- //Add a button for each faction you are a member of
- for (var i = 0; i < _Player_js__WEBPACK_IMPORTED_MODULE_26__["Player"].factions.length; ++i) {
- (function () {
- var factionName = _Player_js__WEBPACK_IMPORTED_MODULE_26__["Player"].factions[i];
-
- factionsList.appendChild(Object(_utils_HelperFunctions_js__WEBPACK_IMPORTED_MODULE_2__["createElement"])("a", {
- class:"a-link-button", innerText:factionName, padding:"4px", margin:"4px",
- display:"inline-block",
- clickListener:()=>{
- Engine.loadFactionContent();
- Object(_Faction_js__WEBPACK_IMPORTED_MODULE_15__["displayFactionContent"])(factionName);
- return false;
- }
- }));
- factionsList.appendChild(Object(_utils_HelperFunctions_js__WEBPACK_IMPORTED_MODULE_2__["createElement"])("br"));
- }()); //Immediate invocation
- }
- Engine.Display.factionsContent.appendChild(factionsList);
- Engine.Display.factionsContent.appendChild(Object(_utils_HelperFunctions_js__WEBPACK_IMPORTED_MODULE_2__["createElement"])("br"));
-
- //Invited Factions
- Engine.Display.factionsContent.appendChild(Object(_utils_HelperFunctions_js__WEBPACK_IMPORTED_MODULE_2__["createElement"])("h1", {
- innerText:"Outstanding Faction Invitations"
- }));
- Engine.Display.factionsContent.appendChild(Object(_utils_HelperFunctions_js__WEBPACK_IMPORTED_MODULE_2__["createElement"])("p", {
- width:"70%",
- innerText:"Lists factions you have been invited to, as well as " +
- "factions you have previously rejected. You can accept " +
- "these faction invitations at any time."
- }));
- var invitationsList = Object(_utils_HelperFunctions_js__WEBPACK_IMPORTED_MODULE_2__["createElement"])("ul");
-
- //Add a button to accept for each faction you have invitiations for
- for (var i = 0; i < _Player_js__WEBPACK_IMPORTED_MODULE_26__["Player"].factionInvitations.length; ++i) {
- (function () {
- var factionName = _Player_js__WEBPACK_IMPORTED_MODULE_26__["Player"].factionInvitations[i];
-
- var item = Object(_utils_HelperFunctions_js__WEBPACK_IMPORTED_MODULE_2__["createElement"])("li", {padding:"6px", margin:"6px"});
- item.appendChild(Object(_utils_HelperFunctions_js__WEBPACK_IMPORTED_MODULE_2__["createElement"])("p", {
- innerText:factionName, display:"inline", margin:"4px", padding:"4px"
- }));
- item.appendChild(Object(_utils_HelperFunctions_js__WEBPACK_IMPORTED_MODULE_2__["createElement"])("a", {
- innerText:"Accept Faction Invitation",
- class:"a-link-button", display:"inline", margin:"4px", padding:"4px",
- clickListener:()=>{
- Object(_Faction_js__WEBPACK_IMPORTED_MODULE_15__["joinFaction"])(_Faction_js__WEBPACK_IMPORTED_MODULE_15__["Factions"][factionName]);
- for (var i = 0; i < _Player_js__WEBPACK_IMPORTED_MODULE_26__["Player"].factionInvitations.length; ++i) {
- if (_Player_js__WEBPACK_IMPORTED_MODULE_26__["Player"].factionInvitations[i] == factionName) {
- _Player_js__WEBPACK_IMPORTED_MODULE_26__["Player"].factionInvitations.splice(i, 1);
- break;
- }
- }
- Engine.displayFactionsInfo();
- return false;
- }
- }));
-
- invitationsList.appendChild(item);
- }());
- }
-
- Engine.Display.factionsContent.appendChild(invitationsList);
- },
-
- displayTutorialContent: function() {
- document.getElementById("tutorial-getting-started-link").style.display = "block";
- Engine.Clickables.tutorialNetworkingButton.style.display = "block";
- Engine.Clickables.tutorialHackingButton.style.display = "block";
- Engine.Clickables.tutorialScriptsButton.style.display = "block";
- Engine.Clickables.tutorialNetscriptButton.style.display = "block";
- Engine.Clickables.tutorialTravelingButton.style.display = "block";
- Engine.Clickables.tutorialCompaniesButton.style.display = "block";
- Engine.Clickables.tutorialFactionsButton.style.display = "block";
- Engine.Clickables.tutorialAugmentationsButton.style.display = "block";
- document.getElementById("tutorial-shortcuts-link").style.display = "block";
-
- Engine.Clickables.tutorialBackButton.style.display = "none";
- document.getElementById("tutorial-text").style.display = "none";
- },
-
- //Displays the text when a section of the Tutorial is opened
- displayTutorialPage: function(text) {
- document.getElementById("tutorial-getting-started-link").style.display = "none";
- Engine.Clickables.tutorialNetworkingButton.style.display = "none";
- Engine.Clickables.tutorialHackingButton.style.display = "none";
- Engine.Clickables.tutorialScriptsButton.style.display = "none";
- Engine.Clickables.tutorialNetscriptButton.style.display = "none";
- Engine.Clickables.tutorialTravelingButton.style.display = "none";
- Engine.Clickables.tutorialCompaniesButton.style.display = "none";
- Engine.Clickables.tutorialFactionsButton.style.display = "none";
- Engine.Clickables.tutorialAugmentationsButton.style.display = "none";
- document.getElementById("tutorial-shortcuts-link").style.display = "none";
-
- Engine.Clickables.tutorialBackButton.style.display = "inline-block";
- document.getElementById("tutorial-text").style.display = "block";
- document.getElementById("tutorial-text").innerHTML = text;
- },
-
- /* Main Event Loop */
- idleTimer: function() {
- //Get time difference
- var _thisUpdate = new Date().getTime();
- var diff = _thisUpdate - Engine._lastUpdate;
- var offset = diff % Engine._idleSpeed;
-
- //Divide this by cycle time to determine how many cycles have elapsed since last update
- diff = Math.floor(diff / Engine._idleSpeed);
-
- if (diff > 0) {
- //Update the game engine by the calculated number of cycles
- Engine._lastUpdate = _thisUpdate - offset;
- _Player_js__WEBPACK_IMPORTED_MODULE_26__["Player"].lastUpdate = _thisUpdate - offset;
- Engine.updateGame(diff);
- }
-
- window.requestAnimationFrame(Engine.idleTimer);
- },
-
- updateGame: function(numCycles = 1) {
- //Update total playtime
- var time = numCycles * Engine._idleSpeed;
- if (_Player_js__WEBPACK_IMPORTED_MODULE_26__["Player"].totalPlaytime == null) {_Player_js__WEBPACK_IMPORTED_MODULE_26__["Player"].totalPlaytime = 0;}
- if (_Player_js__WEBPACK_IMPORTED_MODULE_26__["Player"].playtimeSinceLastAug == null) {_Player_js__WEBPACK_IMPORTED_MODULE_26__["Player"].playtimeSinceLastAug = 0;}
- _Player_js__WEBPACK_IMPORTED_MODULE_26__["Player"].totalPlaytime += time;
- _Player_js__WEBPACK_IMPORTED_MODULE_26__["Player"].playtimeSinceLastAug += time;
-
- //Start Manual hack
- if (_Player_js__WEBPACK_IMPORTED_MODULE_26__["Player"].startAction == true) {
- Engine._totalActionTime = _Player_js__WEBPACK_IMPORTED_MODULE_26__["Player"].actionTime;
- Engine._actionTimeLeft = _Player_js__WEBPACK_IMPORTED_MODULE_26__["Player"].actionTime;
- Engine._actionInProgress = true;
- Engine._actionProgressBarCount = 1;
- Engine._actionProgressStr = "[ ]";
- Engine._actionTimeStr = "Time left: ";
- _Player_js__WEBPACK_IMPORTED_MODULE_26__["Player"].startAction = false;
- }
-
- //Working
- if (_Player_js__WEBPACK_IMPORTED_MODULE_26__["Player"].isWorking) {
- if (_Player_js__WEBPACK_IMPORTED_MODULE_26__["Player"].workType == _Constants_js__WEBPACK_IMPORTED_MODULE_13__["CONSTANTS"].WorkTypeFaction) {
- _Player_js__WEBPACK_IMPORTED_MODULE_26__["Player"].workForFaction(numCycles);
- } else if (_Player_js__WEBPACK_IMPORTED_MODULE_26__["Player"].workType == _Constants_js__WEBPACK_IMPORTED_MODULE_13__["CONSTANTS"].WorkTypeCreateProgram) {
- _Player_js__WEBPACK_IMPORTED_MODULE_26__["Player"].createProgramWork(numCycles);
- } else if (_Player_js__WEBPACK_IMPORTED_MODULE_26__["Player"].workType == _Constants_js__WEBPACK_IMPORTED_MODULE_13__["CONSTANTS"].WorkTypeStudyClass) {
- _Player_js__WEBPACK_IMPORTED_MODULE_26__["Player"].takeClass(numCycles);
- } else if (_Player_js__WEBPACK_IMPORTED_MODULE_26__["Player"].workType == _Constants_js__WEBPACK_IMPORTED_MODULE_13__["CONSTANTS"].WorkTypeCrime) {
- _Player_js__WEBPACK_IMPORTED_MODULE_26__["Player"].commitCrime(numCycles);
- } else if (_Player_js__WEBPACK_IMPORTED_MODULE_26__["Player"].workType == _Constants_js__WEBPACK_IMPORTED_MODULE_13__["CONSTANTS"].WorkTypeCompanyPartTime) {
- _Player_js__WEBPACK_IMPORTED_MODULE_26__["Player"].workPartTime(numCycles);
- } else {
- _Player_js__WEBPACK_IMPORTED_MODULE_26__["Player"].work(numCycles);
- }
- }
-
- //Gang, if applicable
- if (_Player_js__WEBPACK_IMPORTED_MODULE_26__["Player"].bitNodeN == 2 && _Player_js__WEBPACK_IMPORTED_MODULE_26__["Player"].inGang()) {
- _Player_js__WEBPACK_IMPORTED_MODULE_26__["Player"].gang.process(numCycles);
- }
-
- //Mission
- if (_Missions_js__WEBPACK_IMPORTED_MODULE_23__["inMission"] && _Missions_js__WEBPACK_IMPORTED_MODULE_23__["currMission"]) {
- _Missions_js__WEBPACK_IMPORTED_MODULE_23__["currMission"].process(numCycles);
- }
-
- //Corporation
- if (_Player_js__WEBPACK_IMPORTED_MODULE_26__["Player"].corporation instanceof _CompanyManagement_js__WEBPACK_IMPORTED_MODULE_12__["Corporation"]) {
- //Stores cycles in a "buffer". Processed separately using Engine Counters
- //This is to avoid constant DOM redraws when Corporation is catching up
- _Player_js__WEBPACK_IMPORTED_MODULE_26__["Player"].corporation.storeCycles(numCycles);
- }
-
- if (_Player_js__WEBPACK_IMPORTED_MODULE_26__["Player"].bladeburner instanceof _Bladeburner_js__WEBPACK_IMPORTED_MODULE_9__["Bladeburner"]) {
- _Player_js__WEBPACK_IMPORTED_MODULE_26__["Player"].bladeburner.storeCycles(numCycles);
- }
-
- //Counters
- Engine.decrementAllCounters(numCycles);
- Engine.checkCounters();
-
- //Manual hacks
- if (Engine._actionInProgress == true) {
- Engine.updateHackProgress(numCycles);
- }
-
- //Update the running time of all active scripts
- Object(_NetscriptWorker_js__WEBPACK_IMPORTED_MODULE_25__["updateOnlineScriptTimes"])(numCycles);
-
- //Hacknet Nodes
- Object(_HacknetNode_js__WEBPACK_IMPORTED_MODULE_19__["processAllHacknetNodeEarnings"])(numCycles);
- },
-
- //Counters for the main event loop. Represent the number of game cycles are required
- //for something to happen.
- Counters: {
- autoSaveCounter: 300, //Autosave every minute
- updateSkillLevelsCounter: 10, //Only update skill levels every 2 seconds. Might improve performance
- updateDisplays: 3,
- updateDisplaysMed: 9,
- updateDisplaysLong: 15,
- updateActiveScriptsDisplay: 5,
- createProgramNotifications: 10, //Checks whether any programs can be created and notifies
- checkFactionInvitations: 100, //Check whether you qualify for any faction invitations
- passiveFactionGrowth: 600,
- messages: 150,
- stockTick: 30, //Update stock prices
- sCr: 1500,
- mechanicProcess: 5, //Processes certain mechanics (Corporation, Bladeburner)
- },
-
- decrementAllCounters: function(numCycles = 1) {
- for (var counter in Engine.Counters) {
- if (Engine.Counters.hasOwnProperty(counter)) {
- Engine.Counters[counter] = Engine.Counters[counter] - numCycles;
- }
- }
- },
-
- //Checks if any counters are 0 and if they are, executes whatever
- //is necessary and then resets the counter
- checkCounters: function() {
- if (Engine.Counters.autoSaveCounter <= 0) {
- _SaveObject_js__WEBPACK_IMPORTED_MODULE_29__["saveObject"].saveGame(indexedDb);
- if (_Settings_js__WEBPACK_IMPORTED_MODULE_32__["Settings"].AutosaveInterval == null) {
- _Settings_js__WEBPACK_IMPORTED_MODULE_32__["Settings"].AutosaveInterval = 60;
- }
- if (_Settings_js__WEBPACK_IMPORTED_MODULE_32__["Settings"].AutosaveInterval === 0) {
- Engine.Counters.autoSaveCounter = Infinity;
- } else {
- Engine.Counters.autoSaveCounter = _Settings_js__WEBPACK_IMPORTED_MODULE_32__["Settings"].AutosaveInterval * 5;
- }
- }
-
- if (Engine.Counters.updateSkillLevelsCounter <= 0) {
- _Player_js__WEBPACK_IMPORTED_MODULE_26__["Player"].updateSkillLevels();
- Engine.Counters.updateSkillLevelsCounter = 10;
- }
-
- if (Engine.Counters.updateActiveScriptsDisplay <= 0) {
- //Always update, but make the interval longer if the page isn't active
- Object(_ActiveScriptsUI_js__WEBPACK_IMPORTED_MODULE_6__["updateActiveScriptsItems"])();
- if (Engine.currentPage === Engine.Page.ActiveScripts) {
- Engine.Counters.updateActiveScriptsDisplay = 5;
- } else {
- Engine.Counters.updateActiveScriptsDisplay = 15;
- }
- }
-
- if (Engine.Counters.updateDisplays <= 0) {
- Engine.displayCharacterOverviewInfo();
- if (Engine.currentPage == Engine.Page.CharacterInfo) {
- Engine.displayCharacterInfo();
- } else if (Engine.currentPage == Engine.Page.HacknetNodes) {
- Object(_HacknetNode_js__WEBPACK_IMPORTED_MODULE_19__["updateHacknetNodesContent"])();
- } else if (Engine.currentPage == Engine.Page.CreateProgram) {
- Object(_CreateProgram_js__WEBPACK_IMPORTED_MODULE_14__["displayCreateProgramContent"])();
- }
-
- if (_utils_LogBox_js__WEBPACK_IMPORTED_MODULE_5__["logBoxOpened"]) {
- Object(_utils_LogBox_js__WEBPACK_IMPORTED_MODULE_5__["logBoxUpdateText"])();
- }
-
- Engine.Counters.updateDisplays = 3;
- }
-
- if (Engine.Counters.updateDisplaysMed <= 0) {
- if (Engine.currentPage === Engine.Page.Corporation) {
- _Player_js__WEBPACK_IMPORTED_MODULE_26__["Player"].corporation.updateUIContent();
- }
- Engine.Counters.updateDisplaysMed = 9;
- }
-
- if (Engine.Counters.updateDisplaysLong <= 0) {
- if (Engine.currentPage === Engine.Page.Gang) {
- Object(_Gang_js__WEBPACK_IMPORTED_MODULE_18__["updateGangContent"])();
- } else if (Engine.currentPage === Engine.Page.ScriptEditor) {
- Object(_Script_js__WEBPACK_IMPORTED_MODULE_30__["updateScriptEditorContent"])();
- }
- Engine.Counters.updateDisplaysLong = 15;
- }
-
- if (Engine.Counters.createProgramNotifications <= 0) {
- var num = Object(_CreateProgram_js__WEBPACK_IMPORTED_MODULE_14__["getNumAvailableCreateProgram"])();
- var elem = document.getElementById("create-program-notification");
- if (num > 0) {
- elem.innerHTML = num;
- elem.setAttribute("class", "notification-on");
- } else {
- elem.innerHTML = "";
- elem.setAttribute("class", "notification-off");
- }
- Engine.Counters.createProgramNotifications = 10;
- }
-
- if (Engine.Counters.checkFactionInvitations <= 0) {
- var invitedFactions = _Player_js__WEBPACK_IMPORTED_MODULE_26__["Player"].checkForFactionInvitations();
- if (invitedFactions.length > 0) {
- if (_Player_js__WEBPACK_IMPORTED_MODULE_26__["Player"].firstFacInvRecvd === false) {
- _Player_js__WEBPACK_IMPORTED_MODULE_26__["Player"].firstFacInvRecvd = true;
- document.getElementById("factions-tab").style.display = "list-item";
- document.getElementById("character-menu-header").click();
- document.getElementById("character-menu-header").click();
- }
-
- var randFaction = invitedFactions[Math.floor(Math.random() * invitedFactions.length)];
- Object(_Faction_js__WEBPACK_IMPORTED_MODULE_15__["inviteToFaction"])(randFaction);
- }
- Engine.Counters.checkFactionInvitations = 100;
- }
-
- if (Engine.Counters.passiveFactionGrowth <= 0) {
- var adjustedCycles = Math.floor((600 - Engine.Counters.passiveFactionGrowth));
- Object(_Faction_js__WEBPACK_IMPORTED_MODULE_15__["processPassiveFactionRepGain"])(adjustedCycles);
- Engine.Counters.passiveFactionGrowth = 600;
- }
-
- if (Engine.Counters.messages <= 0) {
- Object(_Message_js__WEBPACK_IMPORTED_MODULE_22__["checkForMessagesToSend"])();
- if (_Augmentations_js__WEBPACK_IMPORTED_MODULE_7__["Augmentations"][_Augmentations_js__WEBPACK_IMPORTED_MODULE_7__["AugmentationNames"].TheRedPill].owned) {
- Engine.Counters.messages = 4500; //15 minutes for Red pill message
- } else {
- Engine.Counters.messages = 150;
- }
- }
-
- if (Engine.Counters.stockTick <= 0) {
- if (_Player_js__WEBPACK_IMPORTED_MODULE_26__["Player"].hasWseAccount) {
- Object(_StockMarket_js__WEBPACK_IMPORTED_MODULE_35__["updateStockPrices"])();
- }
- Engine.Counters.stockTick = 30;
- }
-
- if (Engine.Counters.sCr <= 0) {
- if (_Player_js__WEBPACK_IMPORTED_MODULE_26__["Player"].hasWseAccount) {
- Object(_StockMarket_js__WEBPACK_IMPORTED_MODULE_35__["stockMarketCycle"])();
- }
- Engine.Counters.sCr = 1500;
- }
-
- if (Engine.Counters.mechanicProcess <= 0) {
- if (_Player_js__WEBPACK_IMPORTED_MODULE_26__["Player"].corporation instanceof _CompanyManagement_js__WEBPACK_IMPORTED_MODULE_12__["Corporation"]) {
- _Player_js__WEBPACK_IMPORTED_MODULE_26__["Player"].corporation.process();
- }
- if (_Player_js__WEBPACK_IMPORTED_MODULE_26__["Player"].bladeburner instanceof _Bladeburner_js__WEBPACK_IMPORTED_MODULE_9__["Bladeburner"]) {
- try {
- _Player_js__WEBPACK_IMPORTED_MODULE_26__["Player"].bladeburner.process();
- } catch(e) {
- Object(_utils_HelperFunctions_js__WEBPACK_IMPORTED_MODULE_2__["exceptionAlert"])("Exception caught in Bladeburner.process(): " + e);
- }
-
- }
- Engine.Counters.mechanicProcess = 5;
- }
- },
-
- /* Calculates the hack progress for a manual (non-scripted) hack and updates the progress bar/time accordingly */
- _totalActionTime: 0,
- _actionTimeLeft: 0,
- _actionTimeStr: "Time left: ",
- _actionProgressStr: "[ ]",
- _actionProgressBarCount: 1,
- _actionInProgress: false,
- updateHackProgress: function(numCycles = 1) {
- var timeElapsedMilli = numCycles * Engine._idleSpeed;
- Engine._actionTimeLeft -= (timeElapsedMilli/ 1000); //Substract idle speed (ms)
- Engine._actionTimeLeft = Math.max(Engine._actionTimeLeft, 0);
-
- //Calculate percent filled
- var percent = Math.round((1 - Engine._actionTimeLeft / Engine._totalActionTime) * 100);
-
- //Update progress bar
- while (Engine._actionProgressBarCount * 2 <= percent) {
- Engine._actionProgressStr = Engine._actionProgressStr.replaceAt(Engine._actionProgressBarCount, "|");
- Engine._actionProgressBarCount += 1;
- }
-
- //Update hack time remaining
- Engine._actionTimeStr = "Time left: " + Math.max(0, Math.round(Engine._actionTimeLeft)).toString() + "s";
- document.getElementById("hack-progress").innerHTML = Engine._actionTimeStr;
-
- //Dynamically update progress bar
- document.getElementById("hack-progress-bar").innerHTML = Engine._actionProgressStr.replace( / /g, " " );
-
- //Once percent is 100, the hack is completed
- if (percent >= 100) {
- Engine._actionInProgress = false;
- _Terminal_js__WEBPACK_IMPORTED_MODULE_36__["Terminal"].finishAction();
- }
- },
-
- _prevTimeout: null,
- createStatusText: function(txt) {
- if (Engine._prevTimeout != null) {
- clearTimeout(Engine._prevTimeout);
- Engine._prevTimeout = null;
- }
- var statusText = document.getElementById("status-text")
- statusText.style.display = "inline-block";
- statusText.setAttribute("class", "status-text");
- statusText.innerHTML = txt;
- Engine._prevTimeout = setTimeout(function() {
- statusText.style.display = "none";
- statusText.removeAttribute("class");
- statusText.innerHTML = "";
- }, 3000);
- },
-
- removeLoadingScreen: function() {
- var loader = document.getElementById("loader");
- if (!loader) {return;}
- while(loader.firstChild) {
- loader.removeChild(loader.firstChild);
- }
- loader.parentNode.removeChild(loader);
- document.getElementById("entire-game-container").style.visibility = "visible";
- },
-
- //Used when initializing a game
- //elems should be an array of all DOM elements under the header
- closeMainMenuHeader: function(elems) {
- for (var i = 0; i < elems.length; ++i) {
- elems[i].style.maxHeight = null;
- elems[i].style.opacity = 0;
- elems[i].style.pointerEvents = "none";
- }
- },
-
- //Used when initializing the game
- //elems should be an array of all DOM elements under the header
- openMainMenuHeader: function(elems) {
- for (var i = 0; i < elems.length; ++i) {
- elems[i].style.maxHeight = elems[i].scrollHeight + "px";
- elems[i].style.display = "block";
- }
- },
-
- //Used in game when clicking on a main menu header (NOT FOR INITIALIZATION)
- //open is a boolean specifying whether its being opened or closed
- //elems is an array of DOM elements for main menu tabs (li)
- //links is an array of DOM elements for main menu links (a)
- toggleMainMenuHeader: function(open, elems, links) {
- for (var i = 0; i < elems.length; ++i) {
- if (open) {
- elems[i].style.opacity = 1;
- elems[i].style.maxHeight = elems[i].scrollHeight + "px";
- } else {
- elems[i].style.opacity = 0;
- elems[i].style.maxHeight = null;
- }
- }
-
- for (var i = 0; i < links.length; ++i) {
- if (open) {
- links[i].style.opacity = 1;
- links[i].style.maxHeight = links[i].scrollHeight + "px";
- links[i].style.pointerEvents = "auto";
- } else {
- links[i].style.opacity = 0;
- links[i].style.maxHeight = null;
- links[i].style.pointerEvents = "none";
- }
- }
- },
-
- load: function(saveString) {
- //Initialize main menu accordion panels to all start as "open"
- var terminal = document.getElementById("terminal-tab");
- var createScript = document.getElementById("create-script-tab");
- var activeScripts = document.getElementById("active-scripts-tab");
- var createProgram = document.getElementById("create-program-tab");
- var stats = document.getElementById("stats-tab");
- var factions = document.getElementById("factions-tab");
- var augmentations = document.getElementById("augmentations-tab");
- var hacknetnodes = document.getElementById("hacknet-nodes-tab");
- var city = document.getElementById("city-tab");
- var travel = document.getElementById("travel-tab");
- var job = document.getElementById("job-tab");
- var tutorial = document.getElementById("tutorial-tab");
- var options = document.getElementById("options-tab");
-
- //Load game from save or create new game
- if (Object(_SaveObject_js__WEBPACK_IMPORTED_MODULE_29__["loadGame"])(saveString)) {
- console.log("Loaded game from save");
- Object(_BitNode_js__WEBPACK_IMPORTED_MODULE_8__["initBitNodes"])();
- Object(_BitNode_js__WEBPACK_IMPORTED_MODULE_8__["initBitNodeMultipliers"])();
- Object(_SourceFile_js__WEBPACK_IMPORTED_MODULE_33__["initSourceFiles"])();
- Engine.setDisplayElements(); //Sets variables for important DOM elements
- Engine.init(); //Initialize buttons, work, etc.
- _Company_js__WEBPACK_IMPORTED_MODULE_11__["CompanyPositions"].init();
- Object(_Augmentations_js__WEBPACK_IMPORTED_MODULE_7__["initAugmentations"])(); //Also calls Player.reapplyAllAugmentations()
- _Player_js__WEBPACK_IMPORTED_MODULE_26__["Player"].reapplyAllSourceFiles();
- Object(_StockMarket_js__WEBPACK_IMPORTED_MODULE_35__["initStockSymbols"])();
- if (_Player_js__WEBPACK_IMPORTED_MODULE_26__["Player"].hasWseAccount) {
- Object(_StockMarket_js__WEBPACK_IMPORTED_MODULE_35__["initSymbolToStockMap"])();
- }
- Object(_Literature_js__WEBPACK_IMPORTED_MODULE_21__["initLiterature"])();
- Object(_NetscriptFunctions_js__WEBPACK_IMPORTED_MODULE_24__["initSingularitySFFlags"])();
-
- console.log(_Player_js__WEBPACK_IMPORTED_MODULE_26__["Player"].intelligence_exp);
-
- //Calculate the number of cycles have elapsed while offline
- Engine._lastUpdate = new Date().getTime();
- var lastUpdate = _Player_js__WEBPACK_IMPORTED_MODULE_26__["Player"].lastUpdate;
- var numCyclesOffline = Math.floor((Engine._lastUpdate - lastUpdate) / Engine._idleSpeed);
-
- /* Process offline progress */
- var offlineProductionFromScripts = Object(_Script_js__WEBPACK_IMPORTED_MODULE_30__["loadAllRunningScripts"])(); //This also takes care of offline production for those scripts
- if (_Player_js__WEBPACK_IMPORTED_MODULE_26__["Player"].isWorking) {
- console.log("work() called in load() for " + numCyclesOffline * Engine._idleSpeed + " milliseconds");
- if (_Player_js__WEBPACK_IMPORTED_MODULE_26__["Player"].workType == _Constants_js__WEBPACK_IMPORTED_MODULE_13__["CONSTANTS"].WorkTypeFaction) {
- _Player_js__WEBPACK_IMPORTED_MODULE_26__["Player"].workForFaction(numCyclesOffline);
- } else if (_Player_js__WEBPACK_IMPORTED_MODULE_26__["Player"].workType == _Constants_js__WEBPACK_IMPORTED_MODULE_13__["CONSTANTS"].WorkTypeCreateProgram) {
- _Player_js__WEBPACK_IMPORTED_MODULE_26__["Player"].createProgramWork(numCyclesOffline);
- } else if (_Player_js__WEBPACK_IMPORTED_MODULE_26__["Player"].workType == _Constants_js__WEBPACK_IMPORTED_MODULE_13__["CONSTANTS"].WorkTypeStudyClass) {
- _Player_js__WEBPACK_IMPORTED_MODULE_26__["Player"].takeClass(numCyclesOffline);
- } else if (_Player_js__WEBPACK_IMPORTED_MODULE_26__["Player"].workType == _Constants_js__WEBPACK_IMPORTED_MODULE_13__["CONSTANTS"].WorkTypeCrime) {
- _Player_js__WEBPACK_IMPORTED_MODULE_26__["Player"].commitCrime(numCyclesOffline);
- } else if (_Player_js__WEBPACK_IMPORTED_MODULE_26__["Player"].workType == _Constants_js__WEBPACK_IMPORTED_MODULE_13__["CONSTANTS"].WorkTypeCompanyPartTime) {
- _Player_js__WEBPACK_IMPORTED_MODULE_26__["Player"].workPartTime(numCyclesOffline);
- } else {
- _Player_js__WEBPACK_IMPORTED_MODULE_26__["Player"].work(numCyclesOffline);
- }
- }
-
- //Hacknet Nodes offline progress
- var offlineProductionFromHacknetNodes = Object(_HacknetNode_js__WEBPACK_IMPORTED_MODULE_19__["processAllHacknetNodeEarnings"])(numCyclesOffline);
-
- //Passive faction rep gain offline
- Object(_Faction_js__WEBPACK_IMPORTED_MODULE_15__["processPassiveFactionRepGain"])(numCyclesOffline);
-
- //Gang progress for BitNode 2
- if (_Player_js__WEBPACK_IMPORTED_MODULE_26__["Player"].bitNodeN != null && _Player_js__WEBPACK_IMPORTED_MODULE_26__["Player"].bitNodeN === 2 && _Player_js__WEBPACK_IMPORTED_MODULE_26__["Player"].inGang()) {
- _Player_js__WEBPACK_IMPORTED_MODULE_26__["Player"].gang.process(numCyclesOffline);
- }
-
- //Bladeburner offline progress
- if (_Player_js__WEBPACK_IMPORTED_MODULE_26__["Player"].bladeburner instanceof _Bladeburner_js__WEBPACK_IMPORTED_MODULE_9__["Bladeburner"]) {
- _Player_js__WEBPACK_IMPORTED_MODULE_26__["Player"].bladeburner.storeCycles(numCyclesOffline);
- }
-
- //Update total playtime
- var time = numCyclesOffline * Engine._idleSpeed;
- if (_Player_js__WEBPACK_IMPORTED_MODULE_26__["Player"].totalPlaytime == null) {_Player_js__WEBPACK_IMPORTED_MODULE_26__["Player"].totalPlaytime = 0;}
- if (_Player_js__WEBPACK_IMPORTED_MODULE_26__["Player"].playtimeSinceLastAug == null) {_Player_js__WEBPACK_IMPORTED_MODULE_26__["Player"].playtimeSinceLastAug = 0;}
- _Player_js__WEBPACK_IMPORTED_MODULE_26__["Player"].totalPlaytime += time;
- _Player_js__WEBPACK_IMPORTED_MODULE_26__["Player"].playtimeSinceLastAug += time;
-
- _Player_js__WEBPACK_IMPORTED_MODULE_26__["Player"].lastUpdate = Engine._lastUpdate;
- Engine.start(); //Run main game loop and Scripts loop
- Engine.removeLoadingScreen();
- Object(_utils_DialogBox_js__WEBPACK_IMPORTED_MODULE_0__["dialogBoxCreate"])("While you were offline, your scripts generated $" +
- Object(_utils_StringHelperFunctions_js__WEBPACK_IMPORTED_MODULE_4__["formatNumber"])(offlineProductionFromScripts, 2) + " and your Hacknet Nodes generated $" +
- Object(_utils_StringHelperFunctions_js__WEBPACK_IMPORTED_MODULE_4__["formatNumber"])(offlineProductionFromHacknetNodes, 2));
- //Close main menu accordions for loaded game
- var visibleMenuTabs = [terminal, createScript, activeScripts, stats,
- hacknetnodes, city, tutorial, options];
- if (_Player_js__WEBPACK_IMPORTED_MODULE_26__["Player"].firstFacInvRecvd) {visibleMenuTabs.push(factions);}
- else {factions.style.display = "none";}
- if (_Player_js__WEBPACK_IMPORTED_MODULE_26__["Player"].firstAugPurchased) {visibleMenuTabs.push(augmentations);}
- else {augmentations.style.display = "none";}
- if (_Player_js__WEBPACK_IMPORTED_MODULE_26__["Player"].firstJobRecvd) {visibleMenuTabs.push(job);}
- else {job.style.display = "none";}
- if (_Player_js__WEBPACK_IMPORTED_MODULE_26__["Player"].firstTimeTraveled) {visibleMenuTabs.push(travel);}
- else {travel.style.display = "none";}
- if (_Player_js__WEBPACK_IMPORTED_MODULE_26__["Player"].firstProgramAvailable) {visibleMenuTabs.push(createProgram);}
- else {createProgram.style.display = "none";}
-
- Engine.closeMainMenuHeader(visibleMenuTabs);
- } else {
- //No save found, start new game
- console.log("Initializing new game");
- Object(_BitNode_js__WEBPACK_IMPORTED_MODULE_8__["initBitNodes"])();
- Object(_BitNode_js__WEBPACK_IMPORTED_MODULE_8__["initBitNodeMultipliers"])();
- Object(_SourceFile_js__WEBPACK_IMPORTED_MODULE_33__["initSourceFiles"])();
- Object(_SpecialServerIps_js__WEBPACK_IMPORTED_MODULE_34__["initSpecialServerIps"])();
- Engine.setDisplayElements(); //Sets variables for important DOM elements
- Engine.start(); //Run main game loop and Scripts loop
- _Player_js__WEBPACK_IMPORTED_MODULE_26__["Player"].init();
- Object(_Server_js__WEBPACK_IMPORTED_MODULE_31__["initForeignServers"])();
- Object(_Company_js__WEBPACK_IMPORTED_MODULE_11__["initCompanies"])();
- Object(_Faction_js__WEBPACK_IMPORTED_MODULE_15__["initFactions"])();
- _Company_js__WEBPACK_IMPORTED_MODULE_11__["CompanyPositions"].init();
- Object(_Augmentations_js__WEBPACK_IMPORTED_MODULE_7__["initAugmentations"])();
- Object(_Message_js__WEBPACK_IMPORTED_MODULE_22__["initMessages"])();
- Object(_StockMarket_js__WEBPACK_IMPORTED_MODULE_35__["initStockSymbols"])();
- Object(_Literature_js__WEBPACK_IMPORTED_MODULE_21__["initLiterature"])();
- Object(_NetscriptFunctions_js__WEBPACK_IMPORTED_MODULE_24__["initSingularitySFFlags"])();
-
- //Open main menu accordions for new game
- //Main menu accordions
- var hackingHdr = document.getElementById("hacking-menu-header");
- hackingHdr.classList.toggle("opened");
- var characterHdr = document.getElementById("character-menu-header");
- characterHdr.classList.toggle("opened");
- var worldHdr = document.getElementById("world-menu-header");
- worldHdr.classList.toggle("opened");
- var helpHdr = document.getElementById("help-menu-header");
- helpHdr.classList.toggle("opened");
-
- //Hide tabs that wont be revealed until later
- factions.style.display = "none";
- augmentations.style.display = "none";
- job.style.display = "none";
- travel.style.display = "none";
- createProgram.style.display = "none";
-
- Engine.openMainMenuHeader(
- [terminal, createScript, activeScripts, stats,
- hacknetnodes, city,
- tutorial, options]
- );
-
- //Start interactive tutorial
- Object(_InteractiveTutorial_js__WEBPACK_IMPORTED_MODULE_20__["iTutorialStart"])();
- Engine.removeLoadingScreen();
- }
- //Initialize labels on game settings
- Object(_Settings_js__WEBPACK_IMPORTED_MODULE_32__["setSettingsLabels"])();
- Object(_Script_js__WEBPACK_IMPORTED_MODULE_30__["scriptEditorInit"])();
- _Terminal_js__WEBPACK_IMPORTED_MODULE_36__["Terminal"].resetTerminalInput();
- },
-
- setDisplayElements: function() {
- //Content elements
- Engine.Display.terminalContent = document.getElementById("terminal-container");
- Engine.currentPage = Engine.Page.Terminal;
-
- Engine.Display.characterContent = document.getElementById("character-container");
- Engine.Display.characterContent.style.display = "none";
-
- Engine.Display.scriptEditorContent = document.getElementById("script-editor-container");
- Engine.Display.scriptEditorContent.style.display = "none";
-
- Engine.Display.activeScriptsContent = document.getElementById("active-scripts-container");
- Engine.Display.activeScriptsContent.style.display = "none";
-
- Engine.Display.hacknetNodesContent = document.getElementById("hacknet-nodes-container");
- Engine.Display.hacknetNodesContent.style.display = "none";
-
- Engine.Display.worldContent = document.getElementById("world-container");
- Engine.Display.worldContent.style.display = "none";
-
- Engine.Display.createProgramContent = document.getElementById("create-program-container");
- Engine.Display.createProgramContent.style.display = "none";
-
- Engine.Display.factionsContent = document.getElementById("factions-container");
- Engine.Display.factionsContent.style.display = "none";
-
-
- Engine.Display.factionContent = document.getElementById("faction-container");
- Engine.Display.factionContent.style.display = "none";
-
- Engine.Display.factionAugmentationsContent = document.getElementById("faction-augmentations-container");
- Engine.Display.factionAugmentationsContent.style.display = "none";
-
- Engine.Display.augmentationsContent = document.getElementById("augmentations-container");
- Engine.Display.augmentationsContent.style.display = "none";
-
-
- Engine.Display.tutorialContent = document.getElementById("tutorial-container");
- Engine.Display.tutorialContent.style.display = "none";
-
- Engine.Display.infiltrationContent = document.getElementById("infiltration-container");
- Engine.Display.infiltrationContent.style.display = "none";
-
- Engine.Display.stockMarketContent = document.getElementById("stock-market-container");
- Engine.Display.stockMarketContent.style.display = "none";
-
- Engine.Display.missionContent = document.getElementById("mission-container");
- Engine.Display.missionContent.style.display = "none";
-
- //Character info
- Engine.Display.characterInfo = document.getElementById("character-content");
-
- //Location lists
- Engine.aevumLocationsList = document.getElementById("aevum-locations-list");
- Engine.chongqingLocationsList = document.getElementById("chongqing-locations-list");
- Engine.sector12LocationsList = document.getElementById("sector12-locations-list");
- Engine.newTokyoLocationsList = document.getElementById("newtokyo-locations-list");
- Engine.ishimaLocationsList = document.getElementById("ishima-locations-list");
- Engine.volhavenLocationsList = document.getElementById("volhaven-locations-list");
-
- //Location page (page that shows up when you visit a specific location in World)
- Engine.Display.locationContent = document.getElementById("location-container");
- //Engine.Display.locationContent.style.visibility = "hidden";
- Engine.Display.locationContent.style.display = "none";
-
- //Work In Progress
- Engine.Display.workInProgressContent = document.getElementById("work-in-progress-container");
- //Engine.Display.workInProgressContent.style.visibility = "hidden";
- Engine.Display.workInProgressContent.style.display = "none";
-
- //Red Pill / Hack World Daemon
- Engine.Display.redPillContent = document.getElementById("red-pill-container");
- Engine.Display.redPillContent.style.display = "none";
-
- //Cinematic Text
- Engine.Display.cinematicTextContent = document.getElementById("cinematic-text-container");
- Engine.Display.cinematicTextContent.style.display = "none";
-
- //Init Location buttons
- Object(_Location_js__WEBPACK_IMPORTED_MODULE_17__["initLocationButtons"])();
-
- //Tutorial buttons
- Engine.Clickables.tutorialNetworkingButton = document.getElementById("tutorial-networking-link");
- Engine.Clickables.tutorialNetworkingButton.addEventListener("click", function() {
- Engine.displayTutorialPage(_Constants_js__WEBPACK_IMPORTED_MODULE_13__["CONSTANTS"].TutorialNetworkingText);
- });
-
- Engine.Clickables.tutorialHackingButton = document.getElementById("tutorial-hacking-link");
- Engine.Clickables.tutorialHackingButton.addEventListener("click", function() {
- Engine.displayTutorialPage(_Constants_js__WEBPACK_IMPORTED_MODULE_13__["CONSTANTS"].TutorialHackingText);
- });
-
- Engine.Clickables.tutorialScriptsButton = document.getElementById("tutorial-scripts-link");
- Engine.Clickables.tutorialScriptsButton.addEventListener("click", function() {
- Engine.displayTutorialPage(_Constants_js__WEBPACK_IMPORTED_MODULE_13__["CONSTANTS"].TutorialScriptsText);
- });
-
- Engine.Clickables.tutorialNetscriptButton = document.getElementById("tutorial-netscript-link");
- Engine.Clickables.tutorialNetscriptButton.addEventListener("click", function() {
- Engine.displayTutorialPage(_Constants_js__WEBPACK_IMPORTED_MODULE_13__["CONSTANTS"].TutorialNetscriptText);
- });
-
- Engine.Clickables.tutorialTravelingButton = document.getElementById("tutorial-traveling-link");
- Engine.Clickables.tutorialTravelingButton.addEventListener("click", function() {
- Engine.displayTutorialPage(_Constants_js__WEBPACK_IMPORTED_MODULE_13__["CONSTANTS"].TutorialTravelingText);
- });
-
- Engine.Clickables.tutorialCompaniesButton = document.getElementById("tutorial-jobs-link");
- Engine.Clickables.tutorialCompaniesButton.addEventListener("click", function() {
- Engine.displayTutorialPage(_Constants_js__WEBPACK_IMPORTED_MODULE_13__["CONSTANTS"].TutorialCompaniesText);
- });
-
- Engine.Clickables.tutorialFactionsButton = document.getElementById("tutorial-factions-link");
- Engine.Clickables.tutorialFactionsButton.addEventListener("click", function() {
- Engine.displayTutorialPage(_Constants_js__WEBPACK_IMPORTED_MODULE_13__["CONSTANTS"].TutorialFactionsText);
- });
-
- Engine.Clickables.tutorialAugmentationsButton = document.getElementById("tutorial-augmentations-link");
- Engine.Clickables.tutorialAugmentationsButton.addEventListener("click", function() {
- Engine.displayTutorialPage(_Constants_js__WEBPACK_IMPORTED_MODULE_13__["CONSTANTS"].TutorialAugmentationsText);
- });
-
- Engine.Clickables.tutorialBackButton = document.getElementById("tutorial-back-button");
- Engine.Clickables.tutorialBackButton.addEventListener("click", function() {
- Engine.displayTutorialContent();
- });
-
- //If DarkWeb already purchased, disable the button
- if (_SpecialServerIps_js__WEBPACK_IMPORTED_MODULE_34__["SpecialServerIps"].hasOwnProperty("Darkweb Server")) {
- document.getElementById("location-purchase-tor").setAttribute("class", "a-link-button-inactive");
- }
- },
-
- /* Initialization */
- init: function() {
- //Import game link
- document.getElementById("import-game-link").onclick = function() {
- _SaveObject_js__WEBPACK_IMPORTED_MODULE_29__["saveObject"].importGame();
- };
-
- //Main menu accordions
- var hackingHdr = document.getElementById("hacking-menu-header");
- var characterHdr = document.getElementById("character-menu-header");
- var worldHdr = document.getElementById("world-menu-header");
- var helpHdr = document.getElementById("help-menu-header");
-
- hackingHdr.onclick = function() {
- var terminal = document.getElementById("terminal-tab");
- var terminalLink = document.getElementById("terminal-menu-link");
- var createScript = document.getElementById("create-script-tab");
- var createScriptLink = document.getElementById("create-script-menu-link");
- var activeScripts = document.getElementById("active-scripts-tab");
- var activeScriptsLink = document.getElementById("active-scripts-menu-link");
- var createProgram = document.getElementById("create-program-tab");
- var createProgramLink = document.getElementById("create-program-menu-link");
- var createProgramNot = document.getElementById("create-program-notification");
- this.classList.toggle("opened");
- if (terminal.style.maxHeight) {
- Engine.toggleMainMenuHeader(false,
- [terminal, createScript, activeScripts, createProgram],
- [terminalLink, createScriptLink, activeScriptsLink, createProgramLink]
- );
-
- createProgramNot.style.display = "none";
- } else {
- Engine.toggleMainMenuHeader(true,
- [terminal, createScript, activeScripts, createProgram],
- [terminalLink, createScriptLink, activeScriptsLink, createProgramLink]
- );
-
- createProgramNot.style.display = "block"
- }
- }
-
- characterHdr.onclick = function() {
- var stats = document.getElementById("stats-tab");
- var statsLink = document.getElementById("stats-menu-link");
- var factions = document.getElementById("factions-tab");
- var factionsLink = document.getElementById("factions-menu-link");
- var augmentations = document.getElementById("augmentations-tab");
- var augmentationsLink = document.getElementById("augmentations-menu-link");
- var hacknetnodes = document.getElementById("hacknet-nodes-tab");
- var hacknetnodesLink = document.getElementById("hacknet-nodes-menu-link");
- this.classList.toggle("opened");
- if (stats.style.maxHeight) {
- Engine.toggleMainMenuHeader(false,
- [stats, factions, augmentations, hacknetnodes],
- [statsLink, factionsLink, augmentationsLink, hacknetnodesLink]
- );
- } else {
- Engine.toggleMainMenuHeader(true,
- [stats, factions, augmentations, hacknetnodes],
- [statsLink, factionsLink, augmentationsLink, hacknetnodesLink]
- );
- }
- }
-
- worldHdr.onclick = function() {
- var city = document.getElementById("city-tab");
- var cityLink = document.getElementById("city-menu-link");
- var travel = document.getElementById("travel-tab");
- var travelLink = document.getElementById("travel-menu-link");
- var job = document.getElementById("job-tab");
- var jobLink = document.getElementById("job-menu-link");
- this.classList.toggle("opened");
- if (city.style.maxHeight) {
- Engine.toggleMainMenuHeader(false,
- [city, travel, job],
- [cityLink, travelLink, jobLink]
- );
- } else {
- Engine.toggleMainMenuHeader(true,
- [city, travel, job],
- [cityLink, travelLink, jobLink]
- );
- }
- }
-
- helpHdr.onclick = function() {
- var tutorial = document.getElementById("tutorial-tab");
- var tutorialLink = document.getElementById("tutorial-menu-link");
- var options = document.getElementById("options-tab");
- var optionsLink = document.getElementById("options-menu-link");
- this.classList.toggle("opened");
- if (tutorial.style.maxHeight) {
- Engine.toggleMainMenuHeader(false,
- [tutorial, options],
- [tutorialLink, optionsLink]
- );
- } else {
- Engine.toggleMainMenuHeader(true,
- [tutorial, options],
- [tutorialLink, optionsLink]
- );
- }
- }
-
- //Main menu buttons and content
- Engine.Clickables.terminalMainMenuButton = Object(_utils_HelperFunctions_js__WEBPACK_IMPORTED_MODULE_2__["clearEventListeners"])("terminal-menu-link");
- Engine.Clickables.terminalMainMenuButton.addEventListener("click", function() {
- Engine.loadTerminalContent();
- return false;
- });
-
- Engine.Clickables.characterMainMenuButton = Object(_utils_HelperFunctions_js__WEBPACK_IMPORTED_MODULE_2__["clearEventListeners"])("stats-menu-link");
- Engine.Clickables.characterMainMenuButton.addEventListener("click", function() {
- Engine.loadCharacterContent();
- return false;
- });
-
- Engine.Clickables.scriptEditorMainMenuButton = Object(_utils_HelperFunctions_js__WEBPACK_IMPORTED_MODULE_2__["clearEventListeners"])("create-script-menu-link");
- Engine.Clickables.scriptEditorMainMenuButton.addEventListener("click", function() {
- Engine.loadScriptEditorContent();
- return false;
- });
-
- Engine.Clickables.activeScriptsMainMenuButton = Object(_utils_HelperFunctions_js__WEBPACK_IMPORTED_MODULE_2__["clearEventListeners"])("active-scripts-menu-link");
- Engine.Clickables.activeScriptsMainMenuButton.addEventListener("click", function() {
- Engine.loadActiveScriptsContent();
- return false;
- });
-
- Engine.Clickables.hacknetNodesMainMenuButton = Object(_utils_HelperFunctions_js__WEBPACK_IMPORTED_MODULE_2__["clearEventListeners"])("hacknet-nodes-menu-link");
- Engine.Clickables.hacknetNodesMainMenuButton.addEventListener("click", function() {
- Engine.loadHacknetNodesContent();
- return false;
- });
-
- Engine.Clickables.worldMainMenuButton = Object(_utils_HelperFunctions_js__WEBPACK_IMPORTED_MODULE_2__["clearEventListeners"])("city-menu-link");
- Engine.Clickables.worldMainMenuButton.addEventListener("click", function() {
- Engine.loadWorldContent();
- return false;
- });
-
- Engine.Clickables.travelMainMenuButton = Object(_utils_HelperFunctions_js__WEBPACK_IMPORTED_MODULE_2__["clearEventListeners"])("travel-menu-link");
- Engine.Clickables.travelMainMenuButton.addEventListener("click", function() {
- Engine.loadTravelContent();
- return false;
- });
-
- Engine.Clickables.jobMainMenuButton = Object(_utils_HelperFunctions_js__WEBPACK_IMPORTED_MODULE_2__["clearEventListeners"])("job-menu-link");
- Engine.Clickables.jobMainMenuButton.addEventListener("click", function() {
- Engine.loadJobContent();
- return false;
- });
-
-
- Engine.Clickables.createProgramMainMenuButton = Object(_utils_HelperFunctions_js__WEBPACK_IMPORTED_MODULE_2__["clearEventListeners"])("create-program-menu-link");
- Engine.Clickables.createProgramMainMenuButton.addEventListener("click", function() {
- Engine.loadCreateProgramContent();
- return false;
- });
-
- Engine.Clickables.factionsMainMenuButton = Object(_utils_HelperFunctions_js__WEBPACK_IMPORTED_MODULE_2__["clearEventListeners"])("factions-menu-link");
- Engine.Clickables.factionsMainMenuButton.addEventListener("click", function() {
- Engine.loadFactionsContent();
- return false;
- });
-
- Engine.Clickables.augmentationsMainMenuButton = Object(_utils_HelperFunctions_js__WEBPACK_IMPORTED_MODULE_2__["clearEventListeners"])("augmentations-menu-link");
- Engine.Clickables.augmentationsMainMenuButton.addEventListener("click", function() {
- Engine.loadAugmentationsContent();
- return false;
- });
-
- Engine.Clickables.tutorialMainMenuButton = Object(_utils_HelperFunctions_js__WEBPACK_IMPORTED_MODULE_2__["clearEventListeners"])("tutorial-menu-link");
- Engine.Clickables.tutorialMainMenuButton.addEventListener("click", function() {
- Engine.loadTutorialContent();
- return false;
- });
-
- //Active scripts list
- Engine.ActiveScriptsList = document.getElementById("active-scripts-list");
-
- //Save, Delete, Import/Export buttons
- Engine.Clickables.saveMainMenuButton = document.getElementById("save-game-link");
- Engine.Clickables.saveMainMenuButton.addEventListener("click", function() {
- _SaveObject_js__WEBPACK_IMPORTED_MODULE_29__["saveObject"].saveGame(indexedDb);
- return false;
- });
-
- Engine.Clickables.deleteMainMenuButton = document.getElementById("delete-game-link");
- Engine.Clickables.deleteMainMenuButton.addEventListener("click", function() {
- _SaveObject_js__WEBPACK_IMPORTED_MODULE_29__["saveObject"].deleteGame(indexedDb);
- return false;
- });
-
- document.getElementById("export-game-link").addEventListener("click", function() {
- _SaveObject_js__WEBPACK_IMPORTED_MODULE_29__["saveObject"].exportGame();
- return false;
- });
-
- //Character Overview buttons
- document.getElementById("character-overview-save-button").addEventListener("click", function() {
- _SaveObject_js__WEBPACK_IMPORTED_MODULE_29__["saveObject"].saveGame(indexedDb);
- return false;
- });
-
- document.getElementById("character-overview-options-button").addEventListener("click", function() {
- Object(_utils_GameOptions_js__WEBPACK_IMPORTED_MODULE_1__["gameOptionsBoxOpen"])();
- return false;
- });
-
- //Create Program buttons
- Object(_CreateProgram_js__WEBPACK_IMPORTED_MODULE_14__["initCreateProgramButtons"])();
-
- //Message at the top of terminal
- Object(_Terminal_js__WEBPACK_IMPORTED_MODULE_36__["postNetburnerText"])();
-
- //Player was working cancel button
- if (_Player_js__WEBPACK_IMPORTED_MODULE_26__["Player"].isWorking) {
- var cancelButton = document.getElementById("work-in-progress-cancel-button");
- cancelButton.addEventListener("click", function() {
- if (_Player_js__WEBPACK_IMPORTED_MODULE_26__["Player"].workType == _Constants_js__WEBPACK_IMPORTED_MODULE_13__["CONSTANTS"].WorkTypeFaction) {
- var fac = _Faction_js__WEBPACK_IMPORTED_MODULE_15__["Factions"][_Player_js__WEBPACK_IMPORTED_MODULE_26__["Player"].currentWorkFactionName];
- _Player_js__WEBPACK_IMPORTED_MODULE_26__["Player"].finishFactionWork(true);
- } else if (_Player_js__WEBPACK_IMPORTED_MODULE_26__["Player"].workType == _Constants_js__WEBPACK_IMPORTED_MODULE_13__["CONSTANTS"].WorkTypeCreateProgram) {
- _Player_js__WEBPACK_IMPORTED_MODULE_26__["Player"].finishCreateProgramWork(true);
- } else if (_Player_js__WEBPACK_IMPORTED_MODULE_26__["Player"].workType == _Constants_js__WEBPACK_IMPORTED_MODULE_13__["CONSTANTS"].WorkTypeStudyClass) {
- _Player_js__WEBPACK_IMPORTED_MODULE_26__["Player"].finishClass();
- } else if (_Player_js__WEBPACK_IMPORTED_MODULE_26__["Player"].workType == _Constants_js__WEBPACK_IMPORTED_MODULE_13__["CONSTANTS"].WorkTypeCrime) {
- _Player_js__WEBPACK_IMPORTED_MODULE_26__["Player"].finishCrime(true);
- } else if (_Player_js__WEBPACK_IMPORTED_MODULE_26__["Player"].workType == _Constants_js__WEBPACK_IMPORTED_MODULE_13__["CONSTANTS"].WorkTypeCompanyPartTime) {
- _Player_js__WEBPACK_IMPORTED_MODULE_26__["Player"].finishWorkPartTime();
- } else {
- _Player_js__WEBPACK_IMPORTED_MODULE_26__["Player"].finishWork(true);
- }
- });
- Engine.loadWorkInProgressContent();
- }
-
- //character overview screen
- document.getElementById("character-overview-container").style.display = "block";
-
- //Remove classes from links (they might be set from tutorial)
- document.getElementById("terminal-menu-link").removeAttribute("class");
- document.getElementById("stats-menu-link").removeAttribute("class");
- document.getElementById("create-script-menu-link").removeAttribute("class");
- document.getElementById("active-scripts-menu-link").removeAttribute("class");
- document.getElementById("hacknet-nodes-menu-link").removeAttribute("class");
- document.getElementById("city-menu-link").removeAttribute("class");
- document.getElementById("tutorial-menu-link").removeAttribute("class");
-
- //DEBUG Delete active Scripts on home
- document.getElementById("debug-delete-scripts-link").addEventListener("click", function() {
- console.log("Deleting running scripts on home computer");
- _Player_js__WEBPACK_IMPORTED_MODULE_26__["Player"].getHomeComputer().runningScripts = [];
- Object(_utils_DialogBox_js__WEBPACK_IMPORTED_MODULE_0__["dialogBoxCreate"])("Forcefully deleted all running scripts on home computer. Please save and refresh page");
- Object(_utils_GameOptions_js__WEBPACK_IMPORTED_MODULE_1__["gameOptionsBoxClose"])();
- return false;
- });
-
- //DEBUG Soft Reset
- document.getElementById("debug-soft-reset").addEventListener("click", function() {
- Object(_utils_DialogBox_js__WEBPACK_IMPORTED_MODULE_0__["dialogBoxCreate"])("Soft Reset!");
- Object(_Prestige_js__WEBPACK_IMPORTED_MODULE_27__["prestigeAugmentation"])();
- Object(_utils_GameOptions_js__WEBPACK_IMPORTED_MODULE_1__["gameOptionsBoxClose"])();
- return false;
- });
- },
-
- start: function() {
- //Run main loop
- Engine.idleTimer();
-
- //Scripts
- Object(_NetscriptWorker_js__WEBPACK_IMPORTED_MODULE_25__["runScriptsLoop"])();
- }
-};
-
-var indexedDb, indexedDbRequest;
-window.onload = function() {
- if (!window.indexedDB) {
- return Engine.load(null); //Will try to load from localstorage
- }
-
- //DB is called bitburnerSave
- //Object store is called savestring
- //key for the Object store is called save
- indexedDbRequest = window.indexedDB.open("bitburnerSave", 1);
-
- indexedDbRequest.onerror = function(e) {
- console.log("Error opening indexedDB: ");
- console.log(e);
- return Engine.load(null); //Try to load from localstorage
- };
-
- indexedDbRequest.onsuccess = function(e) {
- console.log("Opening bitburnerSave database successful!");
- indexedDb = e.target.result;
- var transaction = indexedDb.transaction(["savestring"]);
- var objectStore = transaction.objectStore("savestring");
- var request = objectStore.get("save");
- request.onerror = function(e) {
- console.log("Error in Database request to get savestring: " + e);
- return Engine.load(null); //Try to load from localstorage
- }
-
- request.onsuccess = function(e) {
- Engine.load(request.result); //Is this right?
- }
- };
-
- indexedDbRequest.onupgradeneeded = function(e) {
- var db = e.target.result;
- var objectStore = db.createObjectStore("savestring");
- }
-};
-
-
-
-/* WEBPACK VAR INJECTION */}.call(this, __webpack_require__(/*! jquery */ 39)))
-
-/***/ }),
-/* 6 */
-/*!***********************************!*\
- !*** ./src/NetscriptEvaluator.js ***!
- \***********************************/
-/***/ (function(module, __webpack_exports__, __webpack_require__) {
-
-"use strict";
-__webpack_require__.r(__webpack_exports__);
-/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "makeRuntimeRejectMsg", function() { return makeRuntimeRejectMsg; });
-/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "netscriptDelay", function() { return netscriptDelay; });
-/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "runScriptFromScript", function() { return runScriptFromScript; });
-/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "scriptCalculateHackingChance", function() { return scriptCalculateHackingChance; });
-/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "scriptCalculateHackingTime", function() { return scriptCalculateHackingTime; });
-/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "scriptCalculateExpGain", function() { return scriptCalculateExpGain; });
-/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "scriptCalculatePercentMoneyHacked", function() { return scriptCalculatePercentMoneyHacked; });
-/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "scriptCalculateGrowTime", function() { return scriptCalculateGrowTime; });
-/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "scriptCalculateWeakenTime", function() { return scriptCalculateWeakenTime; });
-/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "evaluate", function() { return evaluate; });
-/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "isScriptErrorMessage", function() { return isScriptErrorMessage; });
-/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "killNetscriptDelay", function() { return killNetscriptDelay; });
-/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "evaluateImport", function() { return evaluateImport; });
-/* harmony import */ var _BitNode_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./BitNode.js */ 15);
-/* harmony import */ var _Constants_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./Constants.js */ 3);
-/* harmony import */ var _Player_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./Player.js */ 0);
-/* harmony import */ var _NetscriptEnvironment_js__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./NetscriptEnvironment.js */ 69);
-/* harmony import */ var _NetscriptWorker_js__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ./NetscriptWorker.js */ 21);
-/* harmony import */ var _Server_js__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ./Server.js */ 10);
-/* harmony import */ var _Settings_js__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! ./Settings.js */ 23);
-/* harmony import */ var _Script_js__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! ./Script.js */ 26);
-/* harmony import */ var _utils_acorn_js__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! ../utils/acorn.js */ 36);
-/* harmony import */ var _utils_acorn_js__WEBPACK_IMPORTED_MODULE_8___default = /*#__PURE__*/__webpack_require__.n(_utils_acorn_js__WEBPACK_IMPORTED_MODULE_8__);
-/* harmony import */ var _utils_HelperFunctions_js__WEBPACK_IMPORTED_MODULE_9__ = __webpack_require__(/*! ../utils/HelperFunctions.js */ 1);
-/* harmony import */ var _utils_IPAddress_js__WEBPACK_IMPORTED_MODULE_10__ = __webpack_require__(/*! ../utils/IPAddress.js */ 16);
-/* harmony import */ var _utils_StringHelperFunctions_js__WEBPACK_IMPORTED_MODULE_11__ = __webpack_require__(/*! ../utils/StringHelperFunctions.js */ 2);
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-var Promise = __webpack_require__(/*! bluebird */ 129);
-
-Promise.config({
- warnings: false,
- longStackTraces: false,
- cancellation: true,
- monitoring: false
-});
-/* Evaluator
- * Evaluates/Interprets the Abstract Syntax Tree generated by Acorns parser
- *
- * Returns a promise
- */
-function evaluate(exp, workerScript) {
- return Promise.delay(_Settings_js__WEBPACK_IMPORTED_MODULE_6__["Settings"].CodeInstructionRunTime).then(function() {
- var env = workerScript.env;
- if (env.stopFlag) {return Promise.reject(workerScript);}
- if (exp == null) {
- return Promise.reject(makeRuntimeRejectMsg(workerScript, "Error: NULL expression", exp));
- }
- if (env.stopFlag) {return Promise.reject(workerScript);}
- switch (exp.type) {
- case "BlockStatement":
- case "Program":
- var evaluateProgPromise = evaluateProg(exp, workerScript, 0); //TODO: make every block/program use individual enviroment
- return evaluateProgPromise.then(function(w) {
- return Promise.resolve(workerScript);
- }).catch(function(e) {
- if (e.constructor === Array && e.length === 2 && e[0] === "RETURNSTATEMENT") {
- return Promise.reject(e);
- } else if (Object(_utils_StringHelperFunctions_js__WEBPACK_IMPORTED_MODULE_11__["isString"])(e)) {
- workerScript.errorMessage = e;
- return Promise.reject(workerScript);
- } else if (e instanceof _NetscriptWorker_js__WEBPACK_IMPORTED_MODULE_4__["WorkerScript"]) {
- return Promise.reject(e);
- } else {
- return Promise.reject(workerScript);
- }
- });
- break;
- case "Literal":
- return Promise.resolve(exp.value);
- break;
- case "Identifier":
- //Javascript constructor() method can be used as an exploit to run arbitrary code
- if (exp.name == "constructor") {
- return Promise.reject(makeRuntimeRejectMsg(workerScript, "Illegal usage of constructor() method. If you have your own function named 'constructor', you must re-name it.", exp));
- }
-
- if (!(exp.name in env.vars)){
- return Promise.reject(makeRuntimeRejectMsg(workerScript, "variable " + exp.name + " not defined", exp));
- }
- return Promise.resolve(env.get(exp.name))
- break;
- case "ExpressionStatement":
- return evaluate(exp.expression, workerScript);
- break;
- case "ArrayExpression":
- var argPromises = exp.elements.map(function(arg) {
- return evaluate(arg, workerScript);
- });
- return Promise.all(argPromises).then(function(array) {
- return Promise.resolve(array)
- });
- break;
- case "CallExpression":
- return evaluate(exp.callee, workerScript).then(function(func) {
- return Promise.map(exp.arguments, function(arg) {
- return evaluate(arg, workerScript);
- }).then(function(args) {
- if (func instanceof _utils_acorn_js__WEBPACK_IMPORTED_MODULE_8__["Node"]) { //Player-defined function
- //Create new Environment for the function
- //Should be automatically garbage collected...
- var funcEnv = env.extend();
-
- //Define function arguments in this new environment
- for (var i = 0; i < func.params.length; ++i) {
- var arg;
- if (i >= args.length) {
- arg = null;
- } else {
- arg = args[i];
- }
- funcEnv.def(func.params[i].name, arg);
- }
-
- //Create a new WorkerScript for this function evaluation
- var funcWorkerScript = new _NetscriptWorker_js__WEBPACK_IMPORTED_MODULE_4__["WorkerScript"](workerScript.scriptRef);
- funcWorkerScript.serverIp = workerScript.serverIp;
- funcWorkerScript.env = funcEnv;
- workerScript.fnWorker = funcWorkerScript;
-
- return evaluate(func.body, funcWorkerScript).then(function(res) {
- //If the function finished successfuly, that means there
- //was no return statement since a return statement rejects. So resolve to null
- workerScript.fnWorker = null;
- return Promise.resolve(null);
- }).catch(function(e) {
- if (e.constructor === Array && e.length === 2 && e[0] === "RETURNSTATEMENT") {
- //Return statement from function
- return Promise.resolve(e[1]);
- workerScript.fnWorker = null;
- } else if (Object(_utils_StringHelperFunctions_js__WEBPACK_IMPORTED_MODULE_11__["isString"])(e)) {
- return Promise.reject(makeRuntimeRejectMsg(workerScript, e));
- } else if (e instanceof _NetscriptWorker_js__WEBPACK_IMPORTED_MODULE_4__["WorkerScript"]) {
- //Parse out the err message from the WorkerScript and re-reject
- var errorMsg = e.errorMessage;
- var errorTextArray = errorMsg.split("|");
- if (errorTextArray.length === 4) {
- errorMsg = errorTextArray[3];
- return Promise.reject(makeRuntimeRejectMsg(workerScript, errorMsg));
- } else {
- if (env.stopFlag) {
- return Promise.reject(workerScript);
- } else {
- return Promise.reject(makeRuntimeRejectMsg(workerScript, "Error in one of your functions. Could not identify which function"));
- }
- }
- } else if (e instanceof Error) {
- return Promise.reject(makeRuntimeRejectMsg(workerScript, e.toString()));
- }
- });
- } else if (exp.callee.type === "MemberExpression"){
- return evaluate(exp.callee.object, workerScript).then(function(object) {
- try {
- if (func === "NETSCRIPTFOREACH") {
- return evaluateForeach(object, args, workerScript).then(function(res) {
- return Promise.resolve(res);
- }).catch(function(e) {
- return Promise.reject(e);
- });
- }
- var res = func.apply(object,args);
- return Promise.resolve(res);
- } catch (e) {
- return Promise.reject(makeRuntimeRejectMsg(workerScript, e, exp));
- }
- });
- } else {
- try {
- var out = func.apply(null,args);
- if (out instanceof Promise){
- return out.then(function(res) {
- return Promise.resolve(res)
- }).catch(function(e) {
- if (isScriptErrorMessage(e)) {
- //Functions don't have line number appended in error message, so add it
- var num = getErrorLineNumber(exp, workerScript);
- e += " (Line " + num + ")";
- }
- return Promise.reject(e);
- });
- } else {
- return Promise.resolve(out);
- }
- } catch (e) {
- if (isScriptErrorMessage(e)) {
- if (isScriptErrorMessage(e)) {
- //Functions don't have line number appended in error message, so add it
- var num = getErrorLineNumber(exp, workerScript);
- e += " (Line " + num + ")";
- }
- return Promise.reject(e);
- } else {
- return Promise.reject(makeRuntimeRejectMsg(workerScript, e, exp));
- }
- }
- }
- });
- });
- break;
- case "MemberExpression":
- return evaluate(exp.object, workerScript).then(function(object) {
- if (exp.computed){
- return evaluate(exp.property, workerScript).then(function(index) {
- if (index >= object.length) {
- return Promise.reject(makeRuntimeRejectMsg(workerScript, "Invalid index for arrays", exp));
- }
- return Promise.resolve(object[index]);
- }).catch(function(e) {
- if (e instanceof _NetscriptWorker_js__WEBPACK_IMPORTED_MODULE_4__["WorkerScript"] || isScriptErrorMessage(e)) {
- return Promise.reject(e);
- } else {
- return Promise.reject(makeRuntimeRejectMsg(workerScript, "Invalid MemberExpression", exp));
- }
- });
- } else {
- if (exp.property.name === "constructor") {
- return Promise.reject(makeRuntimeRejectMsg(workerScript, "Illegal usage of constructor() method. If you have your own function named 'constructor', you must re-name it.", exp));
- }
- if (object != null && object instanceof Array && exp.property.name === "forEach") {
- return "NETSCRIPTFOREACH";
- }
- try {
- return Promise.resolve(object[exp.property.name])
- } catch (e) {
- return Promise.reject(makeRuntimeRejectMsg(workerScript, "Failed to get property: " + e.toString(), exp));
- }
- }
- });
- break;
- case "LogicalExpression":
- case "BinaryExpression":
- return evalBinary(exp, workerScript);
- break;
- case "UnaryExpression":
- return evalUnary(exp, workerScript);
- break;
- case "AssignmentExpression":
- return evalAssignment(exp, workerScript);
- break;
- case "UpdateExpression":
- if (exp.argument.type==="Identifier"){
- if (exp.argument.name in env.vars){
- if (exp.operator === "++" || exp.operator === "--") {
- switch (exp.operator) {
- case "++":
- env.set(exp.argument.name,env.get(exp.argument.name)+1);
- break;
- case "--":
- env.set(exp.argument.name,env.get(exp.argument.name)-1);
- break;
- default: break;
- }
- return Promise.resolve(env.get(exp.argument.name));
- }
- //Not sure what prefix UpdateExpressions there would be besides ++/--
- if (exp.prefix){
- return Promise.resolve(env.get(exp.argument.name))
- }
- switch (exp.operator){
- default:
- return Promise.reject(makeRuntimeRejectMsg(workerScript, "Unrecognized token: " + exp.type + ". You are trying to use code that is currently unsupported", exp));
- }
- return Promise.resolve(env.get(exp.argument.name))
- } else {
- return Promise.reject(makeRuntimeRejectMsg(workerScript, "variable " + exp.argument.name + " not defined", exp));
- }
- } else {
- return Promise.reject(makeRuntimeRejectMsg(workerScript, "argument must be an identifier", exp));
- }
- break;
- case "EmptyStatement":
- return Promise.resolve(false);
- break;
- case "ReturnStatement":
- return evaluate(exp.argument, workerScript).then(function(res) {
- return Promise.reject(["RETURNSTATEMENT", res]);
- });
- break;
- case "BreakStatement":
- return Promise.reject("BREAKSTATEMENT");
- break;
- case "ContinueStatement":
- return Promise.reject("CONTINUESTATEMENT");
- break;
- case "IfStatement":
- return evaluateIf(exp, workerScript);
- break;
- case "SwitchStatement":
- return Promise.reject(makeRuntimeRejectMsg(workerScript, "Switch statements are not yet implemented in Netscript", exp));
- break;
- case "WhileStatement":
- return evaluateWhile(exp, workerScript).then(function(res) {
- return Promise.resolve(res);
- }).catch(function(e) {
- if (e == "BREAKSTATEMENT" ||
- (e instanceof _NetscriptWorker_js__WEBPACK_IMPORTED_MODULE_4__["WorkerScript"] && e.errorMessage == "BREAKSTATEMENT")) {
- return Promise.resolve("whileLoopBroken");
- } else {
- return Promise.reject(e);
- }
- });
- break;
- case "ForStatement":
- return evaluate(exp.init, workerScript).then(function(expInit) {
- return evaluateFor(exp, workerScript);
- }).then(function(forLoopRes) {
- return Promise.resolve("forLoopDone");
- }).catch(function(e) {
- if (e == "BREAKSTATEMENT" ||
- (e instanceof _NetscriptWorker_js__WEBPACK_IMPORTED_MODULE_4__["WorkerScript"] && e.errorMessage == "BREAKSTATEMENT")) {
- return Promise.resolve("forLoopBroken");
- } else {
- return Promise.reject(e);
- }
- });
- break;
- case "FunctionDeclaration":
- if (exp.id && exp.id.name) {
- env.set(exp.id.name, exp);
- return Promise.resolve(true);
- } else {
- return Promise.reject(makeRuntimeRejectMsg(workerScript, "Invalid function declaration", exp));
- }
- break;
- case "ImportDeclaration":
- return evaluateImport(exp, workerScript).then(function(res) {
- return Promise.resolve(res);
- }).catch(function(e) {
- return Promise.reject(e);
- });
- break;
- case "ThrowStatement":
- return evaluate(exp.argument, workerScript).then(function(res) {
- return Promise.reject(makeRuntimeRejectMsg(workerScript, res));
- });
- break;
- default:
- return Promise.reject(makeRuntimeRejectMsg(workerScript, "Unrecognized token: " + exp.type + ". This is currently unsupported in Netscript", exp));
- break;
- } //End switch
- }).catch(function(e) {
- return Promise.reject(e);
- }); // End Promise
-}
-
-function evalBinary(exp, workerScript){
- return evaluate(exp.left, workerScript).then(function(expLeft) {
- //Short circuiting
- if (expLeft == true && exp.operator === "||") {
- return Promise.resolve(true);
- }
- if (expLeft == false && exp.operator === "&&") {
- return Promise.resolve(false);
- }
- return evaluate(exp.right, workerScript).then(function(expRight) {
- switch (exp.operator){
- case "===":
- case "==":
- return Promise.resolve(expLeft===expRight);
- break;
- case "!==":
- case "!=":
- return Promise.resolve(expLeft!==expRight);
- break;
- case "<":
- return Promise.resolve(expLeft
');
- }
-
- content.appendChild(closeButton);
- content.appendChild(textE);
- container.appendChild(content);
-
- document.body.appendChild(container);
- if (dialogBoxes.length >= 1) {
- container.style.visibility = "hidden";
- }
- dialogBoxes.push(container);
-
- setTimeout(function() {
- dialogBoxOpened = true;
- }, 400);
-}
-
-
-
-/* WEBPACK VAR INJECTION */}.call(this, __webpack_require__(/*! jquery */ 39)))
-
-/***/ }),
-/* 8 */
-/*!******************************!*\
- !*** ./utils/JSONReviver.js ***!
- \******************************/
-/***/ (function(module, __webpack_exports__, __webpack_require__) {
-
-"use strict";
-__webpack_require__.r(__webpack_exports__);
-/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "Reviver", function() { return Reviver; });
-/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "Generic_toJSON", function() { return Generic_toJSON; });
-/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "Generic_fromJSON", function() { return Generic_fromJSON; });
-/* Generic Reviver, toJSON, and fromJSON functions used for saving and loading objects */
-
-// A generic "smart reviver" function.
-// Looks for object values with a `ctor` property and
-// a `data` property. If it finds them, and finds a matching
-// constructor that has a `fromJSON` property on it, it hands
-// off to that `fromJSON` fuunction, passing in the value.
-function Reviver(key, value) {
- var ctor;
- if (value == null) {
- console.log("Reviver WRONGLY called with key: " + key + ", and value: " + value);
- return 0;
- }
- if (typeof value === "object" &&
- typeof value.ctor === "string" &&
- typeof value.data !== "undefined") {
- ctor = Reviver.constructors[value.ctor] || window[value.ctor];
- if (typeof ctor === "function" &&
- typeof ctor.fromJSON === "function") {
-
- return ctor.fromJSON(value);
- }
- }
- return value;
-}
-Reviver.constructors = {}; // A list of constructors the smart reviver should know about
-
-// A generic "toJSON" function that creates the data expected
-// by Reviver.
-// `ctorName` The name of the constructor to use to revive it
-// `obj` The object being serialized
-// `keys` (Optional) Array of the properties to serialize,
-// if not given then all of the objects "own" properties
-// that don't have function values will be serialized.
-// (Note: If you list a property in `keys`, it will be serialized
-// regardless of whether it's an "own" property.)
-// Returns: The structure (which will then be turned into a string
-// as part of the JSON.stringify algorithm)
-function Generic_toJSON(ctorName, obj, keys) {
- var data, index, key;
-
- if (!keys) {
- keys = Object.keys(obj); // Only "own" properties are included
- }
-
- data = {};
- for (index = 0; index < keys.length; ++index) {
- key = keys[index];
- data[key] = obj[key];
- }
- return {ctor: ctorName, data: data};
-}
-
-// A generic "fromJSON" function for use with Reviver: Just calls the
-// constructor function with no arguments, then applies all of the
-// key/value pairs from the raw data to the instance. Only useful for
-// constructors that can be reasonably called without arguments!
-// `ctor` The constructor to call
-// `data` The data to apply
-// Returns: The object
-function Generic_fromJSON(ctor, data) {
- var obj, name;
-
- obj = new ctor();
- for (name in data) {
- obj[name] = data[name];
- }
- return obj;
-}
-
-
-
-
-/***/ }),
-/* 9 */
-/*!************************!*\
- !*** ./src/Company.js ***!
- \************************/
-/***/ (function(module, __webpack_exports__, __webpack_require__) {
-
-"use strict";
-__webpack_require__.r(__webpack_exports__);
-/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "CompanyPositions", function() { return CompanyPositions; });
-/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "initCompanies", function() { return initCompanies; });
-/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "Companies", function() { return Companies; });
-/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "getJobRequirementText", function() { return getJobRequirementText; });
-/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "getNextCompanyPosition", function() { return getNextCompanyPosition; });
-/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "loadCompanies", function() { return loadCompanies; });
-/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "Company", function() { return Company; });
-/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "CompanyPosition", function() { return CompanyPosition; });
-/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "companyExists", function() { return companyExists; });
-/* harmony import */ var _Constants_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./Constants.js */ 3);
-/* harmony import */ var _Location_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./Location.js */ 4);
-/* harmony import */ var _Player_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./Player.js */ 0);
-/* harmony import */ var _utils_JSONReviver_js__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ../utils/JSONReviver.js */ 8);
-
-
-
-
-
-
-//Netburner Company class
-// Note: Company Positions can be loaded every time with init() but Company class needs
-// to be saved/loaded from localStorage
-function Company(name="", salaryMult=0, expMult=0, jobStatReqOffset=0) {
- this.companyName = name;
- this.info = "";
- this.companyPositions = []; //Names (only name, not object) of all company positions
- this.perks = []; //Available Perks
- this.salaryMultiplier = salaryMult; //Multiplier for base salary
- this.expMultiplier = expMult; //Multiplier for base exp gain
-
- //The additional levels you need in the relevant stat to qualify for a job.
- //E.g the offset for a megacorporation will be high, let's say 200, so the
- //stat level you'd need to get an intern job would be 200 instead of 1.
- this.jobStatReqOffset = jobStatReqOffset;
-
- //Player-related properties for company
- this.isPlayerEmployed = false;
- this.playerPosition = ""; //Name (only name, not object) of the current position player holds
- this.playerReputation = 1; //"Reputation" within company, gain reputation by working for company
- this.favor = 0;
- this.rolloverRep = 0;
-};
-
-Company.prototype.setInfo = function(inf) {
- this.info = inf;
-}
-
-Company.prototype.addPosition = function(pos) {
- this.companyPositions.push(pos.positionName); //Company object holds only name of positions
-}
-
-Company.prototype.addPositions = function(positions) {
- for (var i = 0; i < positions.length; i++) {
- this.addPosition(positions[i]);
- }
-}
-
-Company.prototype.hasPosition = function(pos) {
- for (var i = 0; i < this.companyPositions.length; ++i) {
- if (pos.positionName == this.companyPositions[i]) {
- return true;
- }
- }
- return false;
-}
-
-Company.prototype.gainFavor = function() {
- if (this.favor == null || this.favor == undefined) {this.favor = 0;}
- if (this.rolloverRep == null || this.rolloverRep == undefined) {this.rolloverRep = 0;}
- var res = this.getFavorGain();
- if (res.length != 2) {
- console.log("Error: invalid result from getFavorGain() function");
- return;
- }
- this.favor += res[0];
- this.rolloverRep = res[1];
-}
-
-Company.prototype.getFavorGain = function() {
- if (this.favor == null || this.favor == undefined) {this.favor = 0;}
- if (this.rolloverRep == null || this.rolloverRep == undefined) {this.rolloverRep = 0;}
- var favorGain = 0, rep = this.playerReputation + this.rolloverRep;
- var reqdRep = _Constants_js__WEBPACK_IMPORTED_MODULE_0__["CONSTANTS"].CompanyReputationToFavorBase *
- Math.pow(_Constants_js__WEBPACK_IMPORTED_MODULE_0__["CONSTANTS"].CompanyReputationToFavorMult, this.favor);
- while(rep > 0) {
- if (rep >= reqdRep) {
- ++favorGain;
- rep -= reqdRep;
- } else {
- break;
- }
- reqdRep *= _Constants_js__WEBPACK_IMPORTED_MODULE_0__["CONSTANTS"].FactionReputationToFavorMult;
- }
- return [favorGain, rep];
-}
-
-Company.prototype.toJSON = function() {
- return Object(_utils_JSONReviver_js__WEBPACK_IMPORTED_MODULE_3__["Generic_toJSON"])("Company", this);
-}
-
-Company.fromJSON = function(value) {
- return Object(_utils_JSONReviver_js__WEBPACK_IMPORTED_MODULE_3__["Generic_fromJSON"])(Company, value.data);
-}
-
-_utils_JSONReviver_js__WEBPACK_IMPORTED_MODULE_3__["Reviver"].constructors.Company = Company;
-
-//Object that defines a position within a Company and its requirements
-function CompanyPosition(name, reqHack, reqStr, reqDef, reqDex, reqAgi, reqCha, reqRep, salary) {
- this.positionName = name;
- this.requiredHacking = reqHack;
- this.requiredStrength = reqStr;
- this.requiredDefense = reqDef;
- this.requiredDexterity = reqDex;
- this.requiredAgility = reqAgi;
- this.requiredCharisma = reqCha;
- this.requiredReputation = reqRep;
-
- //Base salary for a position. This will be multiplied by a company-specific multiplier. Better companies will have
- //higher multipliers.
- //
- //NOTE: This salary denotes the $ gained every loop (200 ms)
- this.baseSalary = salary;
-};
-
-//Set the parameters that are used to determine how good/effective the Player is at a job.
-//The Player's "effectiveness" at a job determines how much reputation he gains when he works
-//
-//NOTE: These parameters should total to 100, such that each parameter represents a "weighting" of how
-// important that stat/skill is for the job
-CompanyPosition.prototype.setPerformanceParameters = function(hackEff, strEff, defEff, dexEff, agiEff, chaEff, posMult=1) {
- if (hackEff + strEff + defEff + dexEff + agiEff + chaEff != 100) {
- console.log("CompanyPosition.setPerformanceParameters() arguments do not total to 100");
- return;
- }
- this.hackingEffectiveness = hackEff;
- this.strengthEffectiveness = strEff;
- this.defenseEffectiveness = defEff;
- this.dexterityEffectiveness = dexEff;
- this.agilityEffectiveness = agiEff;
- this.charismaEffectiveness = chaEff;
- this.positionMultiplier = posMult; //Reputation multiplier for this position
-}
-
-//Set the stat/skill experience a Player should gain for working at a CompanyPosition. The experience is per game loop (200 ms)
-//These will be constant for a single position, but is affected by a company-specific multiplier
-CompanyPosition.prototype.setExperienceGains = function(hack, str, def, dex, agi, cha) {
- this.hackingExpGain = hack;
- this.strengthExpGain = str;
- this.defenseExpGain = def;
- this.dexterityExpGain = dex;
- this.agilityExpGain = agi;
- this.charismaExpGain = cha;
-}
-
-//Calculate a player's effectiveness at a certain job. Returns the amount of job reputation
-//that should be gained every game loop (200 ms)
-CompanyPosition.prototype.calculateJobPerformance = function(hacking, str, def, dex, agi, cha) {
- var hackRatio = this.hackingEffectiveness * hacking / _Constants_js__WEBPACK_IMPORTED_MODULE_0__["CONSTANTS"].MaxSkillLevel;
- var strRatio = this.strengthEffectiveness * str / _Constants_js__WEBPACK_IMPORTED_MODULE_0__["CONSTANTS"].MaxSkillLevel;
- var defRatio = this.defenseEffectiveness * def / _Constants_js__WEBPACK_IMPORTED_MODULE_0__["CONSTANTS"].MaxSkillLevel;
- var dexRatio = this.dexterityEffectiveness * dex / _Constants_js__WEBPACK_IMPORTED_MODULE_0__["CONSTANTS"].MaxSkillLevel;
- var agiRatio = this.agilityEffectiveness * agi / _Constants_js__WEBPACK_IMPORTED_MODULE_0__["CONSTANTS"].MaxSkillLevel;
- var chaRatio = this.charismaEffectiveness * cha / _Constants_js__WEBPACK_IMPORTED_MODULE_0__["CONSTANTS"].MaxSkillLevel;
-
- var reputationGain = this.positionMultiplier * (hackRatio + strRatio + defRatio + dexRatio + agiRatio + chaRatio) / 100;
- if (isNaN(reputationGain)) {
- console.log("ERROR: Code should not reach here");
- reputationGain = (hackRatio + strRatio + defRatio + dexRatio + agiRatio + chaRatio) / 100;
- }
- return reputationGain;
-}
-
-CompanyPosition.prototype.isSoftwareJob = function() {
- if (this.positionName == "Software Engineering Intern" ||
- this.positionName == "Junior Software Engineer" ||
- this.positionName == "Senior Software Engineer" ||
- this.positionName == "Lead Software Developer" ||
- this.positionName == "Head of Software" ||
- this.positionName == "Head of Engineering" ||
- this.positionName == "Vice President of Technology" ||
- this.positionName == "Chief Technology Officer") {
- return true;
- }
- return false;
-}
-
-CompanyPosition.prototype.isITJob = function() {
- if (this.positionName == "IT Intern" ||
- this.positionName == "IT Analyst" ||
- this.positionName == "IT Manager" ||
- this.positionName == "Systems Administrator") {
- return true;
- }
- return false;
-}
-
-CompanyPosition.prototype.isSecurityEngineerJob = function() {
- if (this.positionName == "Security Engineer") {
- return true;
- }
- return false;
-}
-
-CompanyPosition.prototype.isNetworkEngineerJob = function() {
- if (this.positionName == "Network Engineer" || this.positionName == "Network Administrator") {
- return true;
- }
- return false;
-}
-
-CompanyPosition.prototype.isBusinessJob = function() {
- if (this.positionName == "Business Intern" ||
- this.positionName == "Business Analyst" ||
- this.positionName == "Business Manager" ||
- this.positionName == "Operations Manager" ||
- this.positionName == "Chief Financial Officer" ||
- this.positionName == "Chief Executive Officer") {
- return true;
- }
- return false;
-}
-
-CompanyPosition.prototype.isSecurityJob = function() {
- if (this.positionName == "Security Guard" ||
- this.positionName == "Police Officer" ||
- this.positionName == "Security Officer" ||
- this.positionName == "Security Supervisor" ||
- this.positionName == "Head of Security") {
- return true;
- }
- return false;
-}
-
-CompanyPosition.prototype.isAgentJob = function() {
- if (this.positionName == "Field Agent" ||
- this.positionName == "Secret Agent" ||
- this.positionName == "Special Operative") {
- return true;
- }
- return false;
-}
-
-CompanyPosition.prototype.isSoftwareConsultantJob = function() {
- if (this.positionName == "Software Consultant" ||
- this.positionName == "Senior Software Consultant") {return true;}
- return false;
-}
-
-CompanyPosition.prototype.isBusinessConsultantJob = function() {
- if (this.positionName == "Business Consultant" ||
- this.positionName == "Senior Business Consultant") {return true;}
- return false;
-}
-
-CompanyPosition.prototype.isPartTimeJob = function() {
- if (this.isSoftwareConsultantJob() ||
- this.isBusinessConsultantJob() ||
- this.positionName == "Part-time Waiter" ||
- this.positionName == "Part-time Employee") {return true;}
- return false;
-}
-
-CompanyPosition.prototype.toJSON = function() {
- return Object(_utils_JSONReviver_js__WEBPACK_IMPORTED_MODULE_3__["Generic_toJSON"])("CompanyPosition", this);
-}
-
-CompanyPosition.fromJSON = function(value) {
- return Object(_utils_JSONReviver_js__WEBPACK_IMPORTED_MODULE_3__["Generic_fromJSON"])(CompanyPosition, value.data);
-}
-
-_utils_JSONReviver_js__WEBPACK_IMPORTED_MODULE_3__["Reviver"].constructors.CompanyPosition = CompanyPosition;
-
-let CompanyPositions = {
- //Constructor: CompanyPosition(name, reqHack, reqStr, reqDef, reqDex, reqAgi, reqCha, reqRep, salary)
-
- //Software
- SoftwareIntern: new CompanyPosition("Software Engineering Intern", 1, 0, 0, 0, 0, 0, 0, 33),
- JuniorDev: new CompanyPosition("Junior Software Engineer", 51, 0, 0, 0, 0, 0, 8000, 80),
- SeniorDev: new CompanyPosition("Senior Software Engineer", 251, 0, 0, 0, 0, 51, 40000, 165),
- LeadDev: new CompanyPosition("Lead Software Developer", 401, 0, 0, 0, 0, 151, 200000, 500),
-
- //TODO Through darkweb, maybe?
- FreelanceDeveloper: new CompanyPosition("Freelance Developer", 0, 0, 0, 0, 0, 0, 0, 0),
-
- SoftwareConsultant: new CompanyPosition("Software Consultant", 51, 0, 0, 0, 0, 0, 0, 66),
- SeniorSoftwareConsultant: new CompanyPosition("Senior Software Consultant", 251, 0, 0, 0, 0, 51, 0, 132),
-
- //IT
- ITIntern: new CompanyPosition("IT Intern", 1, 0, 0, 0, 0, 0, 0, 26),
- ITAnalyst: new CompanyPosition("IT Analyst", 26, 0, 0, 0, 0, 0, 7000, 66),
- ITManager: new CompanyPosition("IT Manager", 151, 0, 0, 0, 0, 51, 35000, 132),
- SysAdmin: new CompanyPosition("Systems Administrator", 251, 0, 0, 0, 0, 76, 175000, 410),
- SecurityEngineer: new CompanyPosition("Security Engineer", 151, 0, 0, 0, 0, 26, 35000, 121),
- NetworkEngineer: new CompanyPosition("Network Engineer", 151, 0, 0, 0, 0, 26, 35000, 121),
- NetworkAdministrator: new CompanyPosition("Network Administrator", 251, 0, 0, 0, 0, 76, 175000, 410),
-
- //Technology management
- HeadOfSoftware: new CompanyPosition("Head of Software", 501, 0, 0, 0, 0, 251, 400000, 800),
- HeadOfEngineering: new CompanyPosition("Head of Engineering", 501, 0, 0, 0, 0, 251, 800000, 1650),
- VicePresident: new CompanyPosition("Vice President of Technology", 601, 0, 0, 0, 0, 401, 1600000, 2310),
- CTO: new CompanyPosition("Chief Technology Officer", 751, 0, 0, 0, 0, 501, 3200000, 2640),
-
- //Business
- BusinessIntern: new CompanyPosition("Business Intern", 1, 0, 0, 0, 0, 1, 0, 46),
- BusinessAnalyst: new CompanyPosition("Business Analyst", 6, 0, 0, 0, 0, 51, 8000, 100),
- BusinessManager: new CompanyPosition("Business Manager", 51, 0, 0, 0, 0, 101, 40000, 200),
- OperationsManager: new CompanyPosition("Operations Manager", 51, 0, 0, 0, 0, 226, 200000, 660),
- CFO: new CompanyPosition("Chief Financial Officer", 76, 0, 0, 0, 0, 501, 800000, 1950),
- CEO: new CompanyPosition("Chief Executive Officer", 101, 0, 0, 0, 0, 751, 3200000, 3900),
-
- BusinessConsultant: new CompanyPosition("Business Consultant", 6, 0, 0, 0, 0, 51, 0, 88),
- SeniorBusinessConsultant: new CompanyPosition("Senior Business Consultant", 51, 0, 0, 0, 0, 226, 0, 525),
-
- //Non-tech/management jobs
- PartTimeWaiter: new CompanyPosition("Part-time Waiter", 0, 0, 0, 0, 0, 0, 0, 20),
- PartTimeEmployee: new CompanyPosition("Part-time Employee", 0, 0, 0, 0, 0, 0, 0, 20),
-
- Waiter: new CompanyPosition("Waiter", 0, 0, 0, 0, 0, 0, 0, 22),
- Employee: new CompanyPosition("Employee", 0, 0, 0, 0, 0, 0, 0, 22),
- PoliceOfficer: new CompanyPosition("Police Officer", 11, 101, 101, 101, 101, 51, 8000, 82),
- PoliceChief: new CompanyPosition("Police Chief", 101, 301, 301, 301, 301, 151, 36000, 460),
- SecurityGuard: new CompanyPosition("Security Guard", 0, 51, 51, 51, 51, 1, 0, 50),
- SecurityOfficer: new CompanyPosition("Security Officer", 26, 151, 151, 151, 151, 51, 8000, 195),
- SecuritySupervisor: new CompanyPosition("Security Supervisor", 26, 251, 251, 251, 251, 101, 36000, 660),
- HeadOfSecurity: new CompanyPosition("Head of Security", 51, 501, 501, 501, 501, 151, 144000, 1320),
- FieldAgent: new CompanyPosition("Field Agent", 101, 101, 101, 101, 101, 101, 8000, 330),
- SecretAgent: new CompanyPosition("Secret Agent", 201, 251, 251, 251, 251, 201, 32000, 990),
- SpecialOperative: new CompanyPosition("Special Operative", 251, 501, 501, 501, 501, 251, 162000, 2000),
-
- init: function() {
- //Argument order: hack, str, def, dex, agi, cha
- //Software
- CompanyPositions.SoftwareIntern.setPerformanceParameters(85, 0, 0, 0, 0, 15, 0.9);
- CompanyPositions.SoftwareIntern.setExperienceGains(.05, 0, 0, 0, 0, .02);
- CompanyPositions.JuniorDev.setPerformanceParameters(85, 0, 0, 0, 0, 15, 1.1);
- CompanyPositions.JuniorDev.setExperienceGains(.1, 0, 0, 0, 0, .05);
- CompanyPositions.SeniorDev.setPerformanceParameters(80, 0, 0, 0, 0, 20, 1.3);
- CompanyPositions.SeniorDev.setExperienceGains(.4, 0, 0, 0, 0, .08);
- CompanyPositions.LeadDev.setPerformanceParameters(75, 0, 0, 0, 0, 25, 1.5);
- CompanyPositions.LeadDev.setExperienceGains(.8, 0, 0, 0, 0, .1);
-
- CompanyPositions.SoftwareConsultant.setPerformanceParameters(80, 0, 0, 0, 0, 20, 1);
- CompanyPositions.SoftwareConsultant.setExperienceGains(.08, 0, 0, 0, 0, .03);
- CompanyPositions.SeniorSoftwareConsultant.setPerformanceParameters(75, 0, 0, 0, 0, 25, 1.2);
- CompanyPositions.SeniorSoftwareConsultant.setExperienceGains(.25, 0, 0, 0, 0, .06);
-
- //Security
- CompanyPositions.ITIntern.setPerformanceParameters(90, 0, 0, 0, 0, 10, 0.9);
- CompanyPositions.ITIntern.setExperienceGains(.04, 0, 0, 0, 0, .01);
- CompanyPositions.ITAnalyst.setPerformanceParameters(85, 0, 0, 0, 0, 15, 1.1);
- CompanyPositions.ITAnalyst.setExperienceGains(.08, 0, 0, 0, 0, .02);
- CompanyPositions.ITManager.setPerformanceParameters(80, 0, 0, 0, 0, 20, 1.3);
- CompanyPositions.ITManager.setExperienceGains(.3, 0, 0, 0, 0, .1);
- CompanyPositions.SysAdmin.setPerformanceParameters(80, 0, 0, 0, 0, 20, 1.4);
- CompanyPositions.SysAdmin.setExperienceGains(.5, 0, 0, 0, 0, .05);
- CompanyPositions.SecurityEngineer.setPerformanceParameters(85, 0, 0, 0, 0, 15, 1.2);
- CompanyPositions.SecurityEngineer.setExperienceGains(0.4, 0, 0, 0, 0, .05);
- CompanyPositions.NetworkEngineer.setPerformanceParameters(85, 0, 0, 0, 0, 15, 1.2);
- CompanyPositions.NetworkEngineer.setExperienceGains(0.4, 0, 0, 0, 0, .05);
- CompanyPositions.NetworkAdministrator.setPerformanceParameters(80, 0, 0, 0, 0, 20, 1.3);
- CompanyPositions.NetworkAdministrator.setExperienceGains(0.5, 0, 0, 0, 0, .1);
-
- //Technology management
- CompanyPositions.HeadOfSoftware.setPerformanceParameters(75, 0, 0, 0, 0, 25, 1.6);
- CompanyPositions.HeadOfSoftware.setExperienceGains(1, 0, 0, 0, 0, .5);
- CompanyPositions.HeadOfEngineering.setPerformanceParameters(75, 0, 0, 0, 0, 25, 1.6);
- CompanyPositions.HeadOfEngineering.setExperienceGains(1.1, 0, 0, 0, 0, .5);
- CompanyPositions.VicePresident.setPerformanceParameters(70, 0, 0, 0, 0, 30, 1.75);
- CompanyPositions.VicePresident.setExperienceGains(1.2, 0, 0, 0, 0, .6);
- CompanyPositions.CTO.setPerformanceParameters(65, 0, 0, 0, 0, 35, 2);
- CompanyPositions.CTO.setExperienceGains(1.5, 0, 0, 0, 0, 1);
-
- //Business
- CompanyPositions.BusinessIntern.setPerformanceParameters(10, 0, 0, 0, 0, 90, 0.9);
- CompanyPositions.BusinessIntern.setExperienceGains(.01, 0, 0, 0, 0, .08);
- CompanyPositions.BusinessAnalyst.setPerformanceParameters(15, 0, 0, 0, 0, 85, 1.1);
- CompanyPositions.BusinessAnalyst.setExperienceGains(.02, 0, 0, 0, 0, .15);
- CompanyPositions.BusinessManager.setPerformanceParameters(15, 0, 0, 0, 0, 85, 1.3);
- CompanyPositions.BusinessManager.setExperienceGains(.02, 0, 0, 0, 0, .3);
- CompanyPositions.OperationsManager.setPerformanceParameters(15, 0, 0, 0, 0, 85, 1.5);
- CompanyPositions.OperationsManager.setExperienceGains(.02, 0, 0, 0, 0, .4);
- CompanyPositions.CFO.setPerformanceParameters(10, 0, 0, 0, 0, 90, 1.6);
- CompanyPositions.CFO.setExperienceGains(.05, 0, 0, 0, 0, 1);
- CompanyPositions.CEO.setPerformanceParameters(10, 0, 0, 0, 0, 90, 1.75);
- CompanyPositions.CEO.setExperienceGains(.1, 0, 0, 0, 0, 1.5);
-
- CompanyPositions.BusinessConsultant.setPerformanceParameters(20, 0, 0, 0, 0, 80, 1);
- CompanyPositions.BusinessConsultant.setExperienceGains(.015, 0, 0, 0, 0, .15);
- CompanyPositions.SeniorBusinessConsultant.setPerformanceParameters(15, 0, 0, 0, 0, 85, 1.2);
- CompanyPositions.SeniorBusinessConsultant.setExperienceGains(.015, 0, 0, 0, 0, .3);
-
- //Non-tech/management jobs
- CompanyPositions.PartTimeWaiter.setPerformanceParameters(0, 10, 0, 10, 10, 70);
- CompanyPositions.PartTimeWaiter.setExperienceGains(0, .0075, .0075, .0075, .0075, .04);
- CompanyPositions.PartTimeEmployee.setPerformanceParameters(0, 10, 0, 10, 10, 70);
- CompanyPositions.PartTimeEmployee.setExperienceGains(0, .0075, .0075, .0075, .0075, .03);
-
- CompanyPositions.Waiter.setPerformanceParameters(0, 10, 0, 10, 10, 70);
- CompanyPositions.Waiter.setExperienceGains(0, .02, .02, .02, .02, .05);
- CompanyPositions.Employee.setPerformanceParameters(0, 10, 0, 10, 10, 70);
- CompanyPositions.Employee.setExperienceGains(0, .02, .02, .02, .02, .04);
- CompanyPositions.SecurityGuard.setPerformanceParameters(5, 20, 20, 20, 20, 15, 1);
- CompanyPositions.SecurityGuard.setExperienceGains(.01, .04, .04, .04, .04, .02);
- CompanyPositions.PoliceOfficer.setPerformanceParameters(5, 20, 20, 20, 20, 15, 1);
- CompanyPositions.PoliceOfficer.setExperienceGains(.02, .08, .08, .08, .08, .04);
- CompanyPositions.PoliceChief.setPerformanceParameters(5, 20, 20, 20, 20, 15, 1.25);
- CompanyPositions.PoliceChief.setExperienceGains(.02, .1, .1, .1, .1, .1);
- CompanyPositions.SecurityOfficer.setPerformanceParameters(10, 20, 20, 20, 20, 10, 1.1);
- CompanyPositions.SecurityOfficer.setExperienceGains(.02, .1, .1, .1, .1, .05);
- CompanyPositions.SecuritySupervisor.setPerformanceParameters(10, 15, 15, 15, 15, 30, 1.25);
- CompanyPositions.SecuritySupervisor.setExperienceGains(.02, .12, .12, .12, .12, .1);
- CompanyPositions.HeadOfSecurity.setPerformanceParameters(10, 15, 15, 15, 15, 30, 1.4);
- CompanyPositions.HeadOfSecurity.setExperienceGains(.05, .15, .15, .15, .15, .15);
- CompanyPositions.FieldAgent.setPerformanceParameters(10, 15, 15, 20, 20, 20, 1);
- CompanyPositions.FieldAgent.setExperienceGains(.04, .08, .08, .08, .08, .05);
- CompanyPositions.SecretAgent.setPerformanceParameters(15, 15, 15, 20, 20, 15, 1.25);
- CompanyPositions.SecretAgent.setExperienceGains(.1, .15, .15, .15, .15, .1);
- CompanyPositions.SpecialOperative.setPerformanceParameters(15, 15, 15, 20, 20, 15, 1.5);
- CompanyPositions.SpecialOperative.setExperienceGains(.15, .2, .2, .2, .2, .15);
- }
-}
-
-//Returns the next highest position in the company for the relevant career/field
-//I.E returns what your next job would be if you qualify for a promotion
-function getNextCompanyPosition(currPos) {
- if (currPos == null) {return null;}
- //Software
- if (currPos.positionName == CompanyPositions.SoftwareIntern.positionName) {
- return CompanyPositions.JuniorDev;
- }
- if (currPos.positionName == CompanyPositions.JuniorDev.positionName) {
- return CompanyPositions.SeniorDev;
- }
- if (currPos.positionName == CompanyPositions.SeniorDev.positionName) {
- return CompanyPositions.LeadDev;
- }
- if (currPos.positionName == CompanyPositions.LeadDev.positionName) {
- return CompanyPositions.HeadOfSoftware;
- }
-
- //Software Consultant
- if (currPos.positionName == CompanyPositions.SoftwareConsultant.positionName) {
- return CompanyPositions.SeniorSoftwareConsultant;
- }
-
- //IT
- if (currPos.positionName == CompanyPositions.ITIntern.positionName) {
- return CompanyPositions.ITAnalyst;
- }
- if (currPos.positionName == CompanyPositions.ITAnalyst.positionName) {
- return CompanyPositions.ITManager;
- }
- if (currPos.positionName == CompanyPositions.ITManager.positionName) {
- return CompanyPositions.SysAdmin;
- }
- if (currPos.positionName == CompanyPositions.SysAdmin.positionName) {
- return CompanyPositions.HeadOfEngineering;
- }
-
- //Security/Network Engineer
- if (currPos.positionName == CompanyPositions.SecurityEngineer.positionName) {
- return CompanyPositions.HeadOfEngineering;
- }
- if (currPos.positionName == CompanyPositions.NetworkEngineer.positionName) {
- return CompanyPositions.NetworkAdministrator;
- }
- if (currPos.positionName == CompanyPositions.NetworkAdministrator.positionName) {
- return CompanyPositions.HeadOfEngineering;
- }
-
- //Technology management
- if (currPos.positionName == CompanyPositions.HeadOfSoftware.positionName) {
- return CompanyPositions.HeadOfEngineering;
- }
- if (currPos.positionName == CompanyPositions.HeadOfEngineering.positionName) {
- return CompanyPositions.VicePresident;
- }
- if (currPos.positionName == CompanyPositions.VicePresident.positionName) {
- return CompanyPositions.CTO;
- }
-
- //Business
- if (currPos.positionName == CompanyPositions.BusinessIntern.positionName) {
- return CompanyPositions.BusinessAnalyst;
- }
- if (currPos.positionName == CompanyPositions.BusinessAnalyst.positionName) {
- return CompanyPositions.BusinessManager;
- }
- if (currPos.positionName == CompanyPositions.BusinessManager.positionName) {
- return CompanyPositions.OperationsManager;
- }
- if (currPos.positionName == CompanyPositions.OperationsManager.positionName) {
- return CompanyPositions.CFO;
- }
- if (currPos.positionName == CompanyPositions.CFO.positionName) {
- return CompanyPositions.CEO;
- }
-
- //Business consultant
- if (currPos.positionName == CompanyPositions.BusinessConsultant.positionName) {
- return CompanyPositions.SeniorBusinessConsultant;
- }
-
- //Police
- if (currPos.positionName == CompanyPositions.PoliceOfficer.positionName) {
- return CompanyPositions.PoliceChief;
- }
-
- //Security
- if (currPos.positionName == CompanyPositions.SecurityGuard.positionName) {
- return CompanyPositions.SecurityOfficer;
- }
- if (currPos.positionName == CompanyPositions.SecurityOfficer.positionName) {
- return CompanyPositions.SecuritySupervisor;
- }
- if (currPos.positionName == CompanyPositions.SecuritySupervisor.positionName) {
- return CompanyPositions.HeadOfSecurity;
- }
-
- //Agent
- if (currPos.positionName == CompanyPositions.FieldAgent.positionName) {
- return CompanyPositions.SecretAgent;
- }
- if (currPos.positionName == CompanyPositions.SecretAgent.positionName) {
- return CompanyPositions.SpecialOperative;
- }
-
- return null;
-}
-
-/* Initialize all companies. Only called when creating new game/prestiging. Otherwise companies are
- * usually loaded from localStorage */
-function initCompanies() {
- /* Companies that also have servers */
- //Megacorporations
- var ECorp = new Company(_Location_js__WEBPACK_IMPORTED_MODULE_1__["Locations"].AevumECorp, 3.0, 3.0, 249);
- ECorp.addPositions([
- CompanyPositions.SoftwareIntern, CompanyPositions.ITIntern, CompanyPositions.BusinessIntern,
- CompanyPositions.JuniorDev, CompanyPositions.SeniorDev, CompanyPositions.LeadDev,
- CompanyPositions.ITAnalyst, CompanyPositions.ITManager, CompanyPositions.SysAdmin,
- CompanyPositions.SecurityEngineer, CompanyPositions.NetworkEngineer, CompanyPositions.NetworkAdministrator,
- CompanyPositions.HeadOfSoftware, CompanyPositions.HeadOfEngineering,
- CompanyPositions.VicePresident, CompanyPositions.CTO, CompanyPositions.BusinessAnalyst,
- CompanyPositions.BusinessManager, CompanyPositions.OperationsManager, CompanyPositions.CFO,
- CompanyPositions.CEO, CompanyPositions.SecurityGuard, CompanyPositions.SecurityOfficer,
- CompanyPositions.SecuritySupervisor, CompanyPositions.HeadOfSecurity]);
- if (companyExists(_Location_js__WEBPACK_IMPORTED_MODULE_1__["Locations"].AevumECorp)) {
- ECorp.favor = Companies[_Location_js__WEBPACK_IMPORTED_MODULE_1__["Locations"].AevumECorp].favor;
- delete Companies[_Location_js__WEBPACK_IMPORTED_MODULE_1__["Locations"].AevumECorp];
- }
- AddToCompanies(ECorp);
-
- var MegaCorp = new Company(_Location_js__WEBPACK_IMPORTED_MODULE_1__["Locations"].Sector12MegaCorp, 3.0, 3.0, 249);
- MegaCorp.addPositions([
- CompanyPositions.SoftwareIntern, CompanyPositions.ITIntern, CompanyPositions.BusinessIntern,
- CompanyPositions.JuniorDev, CompanyPositions.SeniorDev, CompanyPositions.LeadDev,
- CompanyPositions.ITAnalyst, CompanyPositions.ITManager, CompanyPositions.SysAdmin,
- CompanyPositions.SecurityEngineer, CompanyPositions.NetworkEngineer, CompanyPositions.NetworkAdministrator,
- CompanyPositions.HeadOfSoftware, CompanyPositions.HeadOfEngineering,
- CompanyPositions.VicePresident, CompanyPositions.CTO, CompanyPositions.BusinessAnalyst,
- CompanyPositions.BusinessManager, CompanyPositions.OperationsManager, CompanyPositions.CFO,
- CompanyPositions.CEO, CompanyPositions.SecurityGuard, CompanyPositions.SecurityOfficer,
- CompanyPositions.SecuritySupervisor, CompanyPositions.HeadOfSecurity]);
- if (companyExists(_Location_js__WEBPACK_IMPORTED_MODULE_1__["Locations"].Sector12MegaCorp)) {
- MegaCorp.favor = Companies[_Location_js__WEBPACK_IMPORTED_MODULE_1__["Locations"].Sector12MegaCorp].favor;
- delete Companies[_Location_js__WEBPACK_IMPORTED_MODULE_1__["Locations"].Sector12MegaCorp];
- }
- AddToCompanies(MegaCorp);
-
- var BachmanAndAssociates = new Company(_Location_js__WEBPACK_IMPORTED_MODULE_1__["Locations"].AevumBachmanAndAssociates, 2.6, 2.6, 224);
- BachmanAndAssociates.addPositions([
- CompanyPositions.SoftwareIntern, CompanyPositions.ITIntern, CompanyPositions.BusinessIntern,
- CompanyPositions.JuniorDev, CompanyPositions.SeniorDev, CompanyPositions.LeadDev,
- CompanyPositions.ITAnalyst, CompanyPositions.ITManager, CompanyPositions.SysAdmin,
- CompanyPositions.SecurityEngineer, CompanyPositions.NetworkEngineer, CompanyPositions.NetworkAdministrator,
- CompanyPositions.HeadOfSoftware, CompanyPositions.HeadOfEngineering,
- CompanyPositions.VicePresident, CompanyPositions.CTO, CompanyPositions.BusinessAnalyst,
- CompanyPositions.BusinessManager, CompanyPositions.OperationsManager, CompanyPositions.CFO,
- CompanyPositions.CEO, CompanyPositions.SecurityGuard, CompanyPositions.SecurityOfficer,
- CompanyPositions.SecuritySupervisor, CompanyPositions.HeadOfSecurity]);
- if (companyExists(_Location_js__WEBPACK_IMPORTED_MODULE_1__["Locations"].AevumBachmanAndAssociates)) {
- BachmanAndAssociates.favor = Companies[_Location_js__WEBPACK_IMPORTED_MODULE_1__["Locations"].AevumBachmanAndAssociates].favor;
- delete Companies[_Location_js__WEBPACK_IMPORTED_MODULE_1__["Locations"].AevumBachmanAndAssociates];
- }
- AddToCompanies(BachmanAndAssociates);
-
- var BladeIndustries = new Company(_Location_js__WEBPACK_IMPORTED_MODULE_1__["Locations"].Sector12BladeIndustries, 2.75, 2.75, 224);
- BladeIndustries.addPositions([
- CompanyPositions.SoftwareIntern, CompanyPositions.ITIntern, CompanyPositions.BusinessIntern,
- CompanyPositions.JuniorDev, CompanyPositions.SeniorDev, CompanyPositions.LeadDev,
- CompanyPositions.ITAnalyst, CompanyPositions.ITManager, CompanyPositions.SysAdmin,
- CompanyPositions.SecurityEngineer, CompanyPositions.NetworkEngineer, CompanyPositions.NetworkAdministrator,
- CompanyPositions.HeadOfSoftware, CompanyPositions.HeadOfEngineering,
- CompanyPositions.VicePresident, CompanyPositions.CTO, CompanyPositions.BusinessAnalyst,
- CompanyPositions.BusinessManager, CompanyPositions.OperationsManager, CompanyPositions.CFO,
- CompanyPositions.CEO, CompanyPositions.SecurityGuard, CompanyPositions.SecurityOfficer,
- CompanyPositions.SecuritySupervisor, CompanyPositions.HeadOfSecurity]);
- if (companyExists(_Location_js__WEBPACK_IMPORTED_MODULE_1__["Locations"].Sector12BladeIndustries)) {
- BladeIndustries.favor = Companies[_Location_js__WEBPACK_IMPORTED_MODULE_1__["Locations"].Sector12BladeIndustries].favor;
- delete Companies[_Location_js__WEBPACK_IMPORTED_MODULE_1__["Locations"].Sector12BladeIndustries];
- }
- AddToCompanies(BladeIndustries);
-
- var NWO = new Company(_Location_js__WEBPACK_IMPORTED_MODULE_1__["Locations"].VolhavenNWO, 2.75, 2.75, 249);
- NWO.addPositions([
- CompanyPositions.SoftwareIntern, CompanyPositions.ITIntern, CompanyPositions.BusinessIntern,
- CompanyPositions.JuniorDev, CompanyPositions.SeniorDev, CompanyPositions.LeadDev,
- CompanyPositions.ITAnalyst, CompanyPositions.ITManager, CompanyPositions.SysAdmin,
- CompanyPositions.SecurityEngineer, CompanyPositions.NetworkEngineer, CompanyPositions.NetworkAdministrator,
- CompanyPositions.HeadOfSoftware, CompanyPositions.HeadOfEngineering,
- CompanyPositions.VicePresident, CompanyPositions.CTO, CompanyPositions.BusinessAnalyst,
- CompanyPositions.BusinessManager, CompanyPositions.OperationsManager, CompanyPositions.CFO,
- CompanyPositions.CEO, CompanyPositions.SecurityGuard, CompanyPositions.SecurityOfficer,
- CompanyPositions.SecuritySupervisor, CompanyPositions.HeadOfSecurity]);
- if (companyExists(_Location_js__WEBPACK_IMPORTED_MODULE_1__["Locations"].VolhavenNWO)) {
- NWO.favor = Companies[_Location_js__WEBPACK_IMPORTED_MODULE_1__["Locations"].VolhavenNWO].favor;
- delete Companies[_Location_js__WEBPACK_IMPORTED_MODULE_1__["Locations"].VolhavenNWO];
- }
- AddToCompanies(NWO);
-
- var ClarkeIncorporated = new Company(_Location_js__WEBPACK_IMPORTED_MODULE_1__["Locations"].AevumClarkeIncorporated, 2.25, 2.25, 224);
- ClarkeIncorporated.addPositions([
- CompanyPositions.SoftwareIntern, CompanyPositions.ITIntern, CompanyPositions.BusinessIntern,
- CompanyPositions.JuniorDev, CompanyPositions.SeniorDev, CompanyPositions.LeadDev,
- CompanyPositions.ITAnalyst, CompanyPositions.ITManager, CompanyPositions.SysAdmin,
- CompanyPositions.SecurityEngineer, CompanyPositions.NetworkEngineer, CompanyPositions.NetworkAdministrator,
- CompanyPositions.HeadOfSoftware, CompanyPositions.HeadOfEngineering,
- CompanyPositions.VicePresident, CompanyPositions.CTO, CompanyPositions.BusinessAnalyst,
- CompanyPositions.BusinessManager, CompanyPositions.OperationsManager, CompanyPositions.CFO,
- CompanyPositions.CEO, CompanyPositions.SecurityGuard, CompanyPositions.SecurityOfficer,
- CompanyPositions.SecuritySupervisor, CompanyPositions.HeadOfSecurity]);
- if (companyExists(_Location_js__WEBPACK_IMPORTED_MODULE_1__["Locations"].AevumClarkeIncorporated)) {
- ClarkeIncorporated.favor = Companies[_Location_js__WEBPACK_IMPORTED_MODULE_1__["Locations"].AevumClarkeIncorporated].favor;
- delete Companies[_Location_js__WEBPACK_IMPORTED_MODULE_1__["Locations"].AevumClarkeIncorporated];
- }
- AddToCompanies(ClarkeIncorporated);
-
- var OmniTekIncorporated = new Company(_Location_js__WEBPACK_IMPORTED_MODULE_1__["Locations"].VolhavenOmniTekIncorporated, 2.25, 2.25, 224);
- OmniTekIncorporated.addPositions([
- CompanyPositions.SoftwareIntern, CompanyPositions.ITIntern, CompanyPositions.BusinessIntern,
- CompanyPositions.JuniorDev, CompanyPositions.SeniorDev, CompanyPositions.LeadDev,
- CompanyPositions.ITAnalyst, CompanyPositions.ITManager, CompanyPositions.SysAdmin,
- CompanyPositions.SecurityEngineer, CompanyPositions.NetworkEngineer, CompanyPositions.NetworkAdministrator,
- CompanyPositions.HeadOfSoftware, CompanyPositions.HeadOfEngineering,
- CompanyPositions.VicePresident, CompanyPositions.CTO, CompanyPositions.BusinessAnalyst,
- CompanyPositions.BusinessManager, CompanyPositions.OperationsManager, CompanyPositions.CFO,
- CompanyPositions.CEO, CompanyPositions.SecurityGuard, CompanyPositions.SecurityOfficer,
- CompanyPositions.SecuritySupervisor, CompanyPositions.HeadOfSecurity]);
- if (companyExists(_Location_js__WEBPACK_IMPORTED_MODULE_1__["Locations"].VolhavenOmniTekIncorporated)) {
- OmniTekIncorporated.favor = Companies[_Location_js__WEBPACK_IMPORTED_MODULE_1__["Locations"].VolhavenOmniTekIncorporated].favor;
- delete Companies[_Location_js__WEBPACK_IMPORTED_MODULE_1__["Locations"].VolhavenOmniTekIncorporated];
- }
- AddToCompanies(OmniTekIncorporated);
-
- var FourSigma = new Company(_Location_js__WEBPACK_IMPORTED_MODULE_1__["Locations"].Sector12FourSigma, 2.5, 2.5, 224);
- FourSigma.addPositions([
- CompanyPositions.SoftwareIntern, CompanyPositions.ITIntern, CompanyPositions.BusinessIntern,
- CompanyPositions.JuniorDev, CompanyPositions.SeniorDev, CompanyPositions.LeadDev,
- CompanyPositions.ITAnalyst, CompanyPositions.ITManager, CompanyPositions.SysAdmin,
- CompanyPositions.SecurityEngineer, CompanyPositions.NetworkEngineer, CompanyPositions.NetworkAdministrator,
- CompanyPositions.HeadOfSoftware, CompanyPositions.HeadOfEngineering,
- CompanyPositions.VicePresident, CompanyPositions.CTO, CompanyPositions.BusinessAnalyst,
- CompanyPositions.BusinessManager, CompanyPositions.OperationsManager, CompanyPositions.CFO,
- CompanyPositions.CEO, CompanyPositions.SecurityGuard, CompanyPositions.SecurityOfficer,
- CompanyPositions.SecuritySupervisor, CompanyPositions.HeadOfSecurity]);
- if (companyExists(_Location_js__WEBPACK_IMPORTED_MODULE_1__["Locations"].Sector12FourSigma)) {
- FourSigma.favor = Companies[_Location_js__WEBPACK_IMPORTED_MODULE_1__["Locations"].Sector12FourSigma].favor;
- delete Companies[_Location_js__WEBPACK_IMPORTED_MODULE_1__["Locations"].Sector12FourSigma];
- }
- AddToCompanies(FourSigma);
-
- var KuaiGongInternational = new Company(_Location_js__WEBPACK_IMPORTED_MODULE_1__["Locations"].ChongqingKuaiGongInternational, 2.2, 2.2, 224);
- KuaiGongInternational.addPositions([
- CompanyPositions.SoftwareIntern, CompanyPositions.ITIntern, CompanyPositions.BusinessIntern,
- CompanyPositions.JuniorDev, CompanyPositions.SeniorDev, CompanyPositions.LeadDev,
- CompanyPositions.ITAnalyst, CompanyPositions.ITManager, CompanyPositions.SysAdmin,
- CompanyPositions.SecurityEngineer, CompanyPositions.NetworkEngineer, CompanyPositions.NetworkAdministrator,
- CompanyPositions.HeadOfSoftware, CompanyPositions.HeadOfEngineering,
- CompanyPositions.VicePresident, CompanyPositions.CTO, CompanyPositions.BusinessAnalyst,
- CompanyPositions.BusinessManager, CompanyPositions.OperationsManager, CompanyPositions.CFO,
- CompanyPositions.CEO, CompanyPositions.SecurityGuard, CompanyPositions.SecurityOfficer,
- CompanyPositions.SecuritySupervisor, CompanyPositions.HeadOfSecurity]);
- if (companyExists(_Location_js__WEBPACK_IMPORTED_MODULE_1__["Locations"].ChongqingKuaiGongInternational)) {
- KuaiGongInternational.favor = Companies[_Location_js__WEBPACK_IMPORTED_MODULE_1__["Locations"].ChongqingKuaiGongInternational].favor;
- delete Companies[_Location_js__WEBPACK_IMPORTED_MODULE_1__["Locations"].ChongqingKuaiGongInternational];
- }
- AddToCompanies(KuaiGongInternational);
-
- //Technology and communication companies ("Large" servers)
- var FulcrumTechnologies = new Company(_Location_js__WEBPACK_IMPORTED_MODULE_1__["Locations"].AevumFulcrumTechnologies, 2.0, 2.0, 224);
- FulcrumTechnologies.addPositions([
- CompanyPositions.SoftwareIntern, CompanyPositions.ITIntern, CompanyPositions.BusinessIntern,
- CompanyPositions.JuniorDev, CompanyPositions.SeniorDev, CompanyPositions.LeadDev,
- CompanyPositions.ITAnalyst, CompanyPositions.ITManager, CompanyPositions.SysAdmin,
- CompanyPositions.SecurityEngineer, CompanyPositions.NetworkEngineer, CompanyPositions.NetworkAdministrator,
- CompanyPositions.HeadOfSoftware, CompanyPositions.HeadOfEngineering,
- CompanyPositions.VicePresident, CompanyPositions.CTO, CompanyPositions.BusinessAnalyst,
- CompanyPositions.BusinessManager, CompanyPositions.OperationsManager, CompanyPositions.CFO,
- CompanyPositions.CEO]);
- if (companyExists(_Location_js__WEBPACK_IMPORTED_MODULE_1__["Locations"].AevumFulcrumTechnologies)) {
- FulcrumTechnologies.favor = Companies[_Location_js__WEBPACK_IMPORTED_MODULE_1__["Locations"].AevumFulcrumTechnologies].favor;
- delete Companies[_Location_js__WEBPACK_IMPORTED_MODULE_1__["Locations"].AevumFulcrumTechnologies];
- }
- AddToCompanies(FulcrumTechnologies);
-
- var StormTechnologies = new Company(_Location_js__WEBPACK_IMPORTED_MODULE_1__["Locations"].IshimaStormTechnologies, 1.8, 1.8, 199);
- StormTechnologies.addPositions([
- CompanyPositions.SoftwareIntern,
- CompanyPositions.JuniorDev, CompanyPositions.SeniorDev, CompanyPositions.LeadDev,
- CompanyPositions.SoftwareConsultant, CompanyPositions.SeniorSoftwareConsultant,
- CompanyPositions.ITAnalyst, CompanyPositions.ITManager, CompanyPositions.SysAdmin,
- CompanyPositions.SecurityEngineer, CompanyPositions.NetworkEngineer, CompanyPositions.NetworkAdministrator,
- CompanyPositions.HeadOfSoftware, CompanyPositions.HeadOfEngineering,
- CompanyPositions.VicePresident, CompanyPositions.CTO,
- CompanyPositions.BusinessIntern, CompanyPositions.BusinessAnalyst,
- CompanyPositions.BusinessManager, CompanyPositions.OperationsManager, CompanyPositions.CFO,
- CompanyPositions.CEO]);
- if (companyExists(_Location_js__WEBPACK_IMPORTED_MODULE_1__["Locations"].IshimaStormTechnologies)) {
- StormTechnologies.favor = Companies[_Location_js__WEBPACK_IMPORTED_MODULE_1__["Locations"].IshimaStormTechnologies].favor;
- delete Companies[_Location_js__WEBPACK_IMPORTED_MODULE_1__["Locations"].IshimaStormTechnologies];
- }
- AddToCompanies(StormTechnologies);
-
- var DefComm = new Company(_Location_js__WEBPACK_IMPORTED_MODULE_1__["Locations"].NewTokyoDefComm, 1.75, 1.75, 199);
- DefComm.addPositions([
- CompanyPositions.SoftwareIntern, CompanyPositions.JuniorDev, CompanyPositions.SeniorDev,
- CompanyPositions.LeadDev, CompanyPositions.SoftwareConsultant, CompanyPositions.SeniorSoftwareConsultant,
- CompanyPositions.ITIntern, CompanyPositions.ITAnalyst,
- CompanyPositions.ITManager, CompanyPositions.SysAdmin, CompanyPositions.SecurityEngineer,
- CompanyPositions.NetworkEngineer, CompanyPositions.NetworkAdministrator, CompanyPositions.HeadOfSoftware,
- CompanyPositions.HeadOfEngineering, CompanyPositions.CTO, CompanyPositions.CEO]);
- if (companyExists(_Location_js__WEBPACK_IMPORTED_MODULE_1__["Locations"].NewTokyoDefComm)) {
- DefComm.favor = Companies[_Location_js__WEBPACK_IMPORTED_MODULE_1__["Locations"].NewTokyoDefComm].favor;
- delete Companies[_Location_js__WEBPACK_IMPORTED_MODULE_1__["Locations"].NewTokyoDefComm];
- }
- AddToCompanies(DefComm);
-
- var HeliosLabs = new Company(_Location_js__WEBPACK_IMPORTED_MODULE_1__["Locations"].VolhavenHeliosLabs, 1.8, 1.8, 199);
- HeliosLabs.addPositions([
- CompanyPositions.SoftwareIntern, CompanyPositions.JuniorDev, CompanyPositions.SeniorDev,
- CompanyPositions.LeadDev, CompanyPositions.SoftwareConsultant, CompanyPositions.SeniorSoftwareConsultant,
- CompanyPositions.ITIntern, CompanyPositions.ITAnalyst,
- CompanyPositions.ITManager, CompanyPositions.SysAdmin, CompanyPositions.SecurityEngineer,
- CompanyPositions.NetworkEngineer, CompanyPositions.NetworkAdministrator, CompanyPositions.HeadOfSoftware,
- CompanyPositions.HeadOfEngineering, CompanyPositions.CTO, CompanyPositions.CEO]);
- if (companyExists(_Location_js__WEBPACK_IMPORTED_MODULE_1__["Locations"].VolhavenHeliosLabs)) {
- HeliosLabs.favor = Companies[_Location_js__WEBPACK_IMPORTED_MODULE_1__["Locations"].VolhavenHeliosLabs].favor;
- delete Companies[_Location_js__WEBPACK_IMPORTED_MODULE_1__["Locations"].VolhavenHeliosLabs];
- }
- AddToCompanies(HeliosLabs);
-
- var VitaLife = new Company(_Location_js__WEBPACK_IMPORTED_MODULE_1__["Locations"].NewTokyoVitaLife, 1.8, 1.8, 199);
- VitaLife.addPositions([
- CompanyPositions.SoftwareIntern, CompanyPositions.JuniorDev, CompanyPositions.SeniorDev,
- CompanyPositions.LeadDev, CompanyPositions.SoftwareConsultant, CompanyPositions.SeniorSoftwareConsultant,
- CompanyPositions.ITIntern, CompanyPositions.ITAnalyst,
- CompanyPositions.ITManager, CompanyPositions.SysAdmin, CompanyPositions.SecurityEngineer,
- CompanyPositions.NetworkEngineer, CompanyPositions.NetworkAdministrator, CompanyPositions.HeadOfSoftware,
- CompanyPositions.HeadOfEngineering, CompanyPositions.CTO,
- CompanyPositions.BusinessIntern, CompanyPositions.BusinessAnalyst, CompanyPositions.BusinessManager,
- CompanyPositions.OperationsManager, CompanyPositions.CFO, CompanyPositions.CEO]);
- if (companyExists(_Location_js__WEBPACK_IMPORTED_MODULE_1__["Locations"].NewTokyoVitaLife)) {
- VitaLife.favor = Companies[_Location_js__WEBPACK_IMPORTED_MODULE_1__["Locations"].NewTokyoVitaLife].favor;
- delete Companies[_Location_js__WEBPACK_IMPORTED_MODULE_1__["Locations"].NewTokyoVitaLife];
- }
- AddToCompanies(VitaLife);
-
- var IcarusMicrosystems = new Company(_Location_js__WEBPACK_IMPORTED_MODULE_1__["Locations"].Sector12IcarusMicrosystems, 1.9, 1.9, 199);
- IcarusMicrosystems.addPositions([
- CompanyPositions.SoftwareIntern, CompanyPositions.JuniorDev, CompanyPositions.SeniorDev,
- CompanyPositions.LeadDev, CompanyPositions.SoftwareConsultant, CompanyPositions.SeniorSoftwareConsultant,
- CompanyPositions.ITIntern, CompanyPositions.ITAnalyst,
- CompanyPositions.ITManager, CompanyPositions.SysAdmin, CompanyPositions.SecurityEngineer,
- CompanyPositions.NetworkEngineer, CompanyPositions.NetworkAdministrator, CompanyPositions.HeadOfSoftware,
- CompanyPositions.HeadOfEngineering, CompanyPositions.CTO,
- CompanyPositions.BusinessIntern, CompanyPositions.BusinessAnalyst, CompanyPositions.BusinessManager,
- CompanyPositions.OperationsManager, CompanyPositions.CFO, CompanyPositions.CEO]);
- if (companyExists(_Location_js__WEBPACK_IMPORTED_MODULE_1__["Locations"].Sector12IcarusMicrosystems)) {
- IcarusMicrosystems.favor = Companies[_Location_js__WEBPACK_IMPORTED_MODULE_1__["Locations"].Sector12IcarusMicrosystems].favor;
- delete Companies[_Location_js__WEBPACK_IMPORTED_MODULE_1__["Locations"].Sector12IcarusMicrosystems];
- }
- AddToCompanies(IcarusMicrosystems);
-
- var UniversalEnergy = new Company(_Location_js__WEBPACK_IMPORTED_MODULE_1__["Locations"].Sector12UniversalEnergy, 2.0, 2.0, 199);
- UniversalEnergy.addPositions([
- CompanyPositions.SoftwareIntern, CompanyPositions.JuniorDev, CompanyPositions.SeniorDev,
- CompanyPositions.LeadDev, CompanyPositions.SoftwareConsultant, CompanyPositions.SeniorSoftwareConsultant,
- CompanyPositions.ITIntern, CompanyPositions.ITAnalyst,
- CompanyPositions.ITManager, CompanyPositions.SysAdmin, CompanyPositions.SecurityEngineer,
- CompanyPositions.NetworkEngineer, CompanyPositions.NetworkAdministrator, CompanyPositions.HeadOfSoftware,
- CompanyPositions.HeadOfEngineering, CompanyPositions.CTO,
- CompanyPositions.BusinessIntern, CompanyPositions.BusinessAnalyst, CompanyPositions.BusinessManager,
- CompanyPositions.OperationsManager, CompanyPositions.CFO, CompanyPositions.CEO]);
- if (companyExists(_Location_js__WEBPACK_IMPORTED_MODULE_1__["Locations"].Sector12UniversalEnergy)) {
- UniversalEnergy.favor = Companies[_Location_js__WEBPACK_IMPORTED_MODULE_1__["Locations"].Sector12UniversalEnergy].favor;
- delete Companies[_Location_js__WEBPACK_IMPORTED_MODULE_1__["Locations"].Sector12UniversalEnergy];
- }
- AddToCompanies(UniversalEnergy);
-
- var GalacticCybersystems = new Company(_Location_js__WEBPACK_IMPORTED_MODULE_1__["Locations"].AevumGalacticCybersystems, 1.9, 1.9, 199);
- GalacticCybersystems.addPositions([
- CompanyPositions.SoftwareIntern, CompanyPositions.JuniorDev, CompanyPositions.SeniorDev,
- CompanyPositions.LeadDev, CompanyPositions.SoftwareConsultant, CompanyPositions.SeniorSoftwareConsultant,
- CompanyPositions.ITIntern, CompanyPositions.ITAnalyst,
- CompanyPositions.ITManager, CompanyPositions.SysAdmin, CompanyPositions.SecurityEngineer,
- CompanyPositions.NetworkEngineer, CompanyPositions.NetworkAdministrator, CompanyPositions.HeadOfSoftware,
- CompanyPositions.HeadOfEngineering, CompanyPositions.CTO,
- CompanyPositions.BusinessIntern, CompanyPositions.BusinessAnalyst, CompanyPositions.BusinessManager,
- CompanyPositions.OperationsManager, CompanyPositions.CFO, CompanyPositions.CEO]);
- if (companyExists(_Location_js__WEBPACK_IMPORTED_MODULE_1__["Locations"].AevumGalacticCybersystems)) {
- GalacticCybersystems.favor = Companies[_Location_js__WEBPACK_IMPORTED_MODULE_1__["Locations"].AevumGalacticCybersystems].favor;
- delete Companies[_Location_js__WEBPACK_IMPORTED_MODULE_1__["Locations"].AevumGalacticCybersystems];
- }
- AddToCompanies(GalacticCybersystems);
-
- //Defense Companies ("Large" Companies)
- var AeroCorp = new Company(_Location_js__WEBPACK_IMPORTED_MODULE_1__["Locations"].AevumAeroCorp, 1.7, 1.7, 199);
- AeroCorp.addPositions([
- CompanyPositions.SoftwareIntern, CompanyPositions.JuniorDev, CompanyPositions.SeniorDev,
- CompanyPositions.LeadDev, CompanyPositions.ITIntern, CompanyPositions.ITAnalyst,
- CompanyPositions.ITManager, CompanyPositions.SysAdmin, CompanyPositions.SecurityEngineer,
- CompanyPositions.NetworkEngineer, CompanyPositions.NetworkAdministrator, CompanyPositions.HeadOfSoftware,
- CompanyPositions.HeadOfEngineering, CompanyPositions.CTO,
- CompanyPositions.OperationsManager, CompanyPositions.CEO,
- CompanyPositions.SecurityGuard, CompanyPositions.SecurityOfficer, CompanyPositions.SecuritySupervisor,
- CompanyPositions.HeadOfSecurity]);
- if (companyExists(_Location_js__WEBPACK_IMPORTED_MODULE_1__["Locations"].AevumAeroCorp)) {
- AeroCorp.favor = Companies[_Location_js__WEBPACK_IMPORTED_MODULE_1__["Locations"].AevumAeroCorp].favor;
- delete Companies[_Location_js__WEBPACK_IMPORTED_MODULE_1__["Locations"].AevumAeroCorp];
- }
- AddToCompanies(AeroCorp);
-
- var OmniaCybersystems = new Company(_Location_js__WEBPACK_IMPORTED_MODULE_1__["Locations"].VolhavenOmniaCybersystems, 1.7, 1.7, 199);
- OmniaCybersystems.addPositions([
- CompanyPositions.SoftwareIntern, CompanyPositions.JuniorDev, CompanyPositions.SeniorDev,
- CompanyPositions.LeadDev, CompanyPositions.ITIntern, CompanyPositions.ITAnalyst,
- CompanyPositions.ITManager, CompanyPositions.SysAdmin, CompanyPositions.SecurityEngineer,
- CompanyPositions.NetworkEngineer, CompanyPositions.NetworkAdministrator, CompanyPositions.HeadOfSoftware,
- CompanyPositions.HeadOfEngineering, CompanyPositions.CTO,
- CompanyPositions.OperationsManager, CompanyPositions.CEO,
- CompanyPositions.SecurityGuard, CompanyPositions.SecurityOfficer, CompanyPositions.SecuritySupervisor,
- CompanyPositions.HeadOfSecurity]);
- if (companyExists(_Location_js__WEBPACK_IMPORTED_MODULE_1__["Locations"].VolhavenOmniaCybersystems)) {
- OmniaCybersystems.favor = Companies[_Location_js__WEBPACK_IMPORTED_MODULE_1__["Locations"].VolhavenOmniaCybersystems].favor;
- delete Companies[_Location_js__WEBPACK_IMPORTED_MODULE_1__["Locations"].VolhavenOmniaCybersystems];
- }
- AddToCompanies(OmniaCybersystems);
-
- var SolarisSpaceSystems = new Company(_Location_js__WEBPACK_IMPORTED_MODULE_1__["Locations"].ChongqingSolarisSpaceSystems, 1.7, 1.7, 199);
- SolarisSpaceSystems.addPositions([
- CompanyPositions.SoftwareIntern, CompanyPositions.JuniorDev, CompanyPositions.SeniorDev,
- CompanyPositions.LeadDev, CompanyPositions.ITIntern, CompanyPositions.ITAnalyst,
- CompanyPositions.ITManager, CompanyPositions.SysAdmin, CompanyPositions.SecurityEngineer,
- CompanyPositions.NetworkEngineer, CompanyPositions.NetworkAdministrator, CompanyPositions.HeadOfSoftware,
- CompanyPositions.HeadOfEngineering, CompanyPositions.CTO,
- CompanyPositions.OperationsManager, CompanyPositions.CEO,
- CompanyPositions.SecurityGuard, CompanyPositions.SecurityOfficer, CompanyPositions.SecuritySupervisor,
- CompanyPositions.HeadOfSecurity]);
- if (companyExists(_Location_js__WEBPACK_IMPORTED_MODULE_1__["Locations"].ChongqingSolarisSpaceSystems)) {
- SolarisSpaceSystems.favor = Companies[_Location_js__WEBPACK_IMPORTED_MODULE_1__["Locations"].ChongqingSolarisSpaceSystems].favor;
- delete Companies[_Location_js__WEBPACK_IMPORTED_MODULE_1__["Locations"].ChongqingSolarisSpaceSystems];
- }
- AddToCompanies(SolarisSpaceSystems);
-
- var DeltaOne = new Company(_Location_js__WEBPACK_IMPORTED_MODULE_1__["Locations"].Sector12DeltaOne, 1.6, 1.6, 199);
- DeltaOne.addPositions([
- CompanyPositions.SoftwareIntern, CompanyPositions.JuniorDev, CompanyPositions.SeniorDev,
- CompanyPositions.LeadDev, CompanyPositions.ITIntern, CompanyPositions.ITAnalyst,
- CompanyPositions.ITManager, CompanyPositions.SysAdmin, CompanyPositions.SecurityEngineer,
- CompanyPositions.NetworkEngineer, CompanyPositions.NetworkAdministrator, CompanyPositions.HeadOfSoftware,
- CompanyPositions.HeadOfEngineering, CompanyPositions.CTO,
- CompanyPositions.OperationsManager, CompanyPositions.CEO,
- CompanyPositions.SecurityGuard, CompanyPositions.SecurityOfficer, CompanyPositions.SecuritySupervisor,
- CompanyPositions.HeadOfSecurity]);
- if (companyExists(_Location_js__WEBPACK_IMPORTED_MODULE_1__["Locations"].Sector12DeltaOne)) {
- DeltaOne.favor = Companies[_Location_js__WEBPACK_IMPORTED_MODULE_1__["Locations"].Sector12DeltaOne].favor;
- delete Companies[_Location_js__WEBPACK_IMPORTED_MODULE_1__["Locations"].Sector12DeltaOne];
- }
- AddToCompanies(DeltaOne);
-
- //Health, medicine, pharmaceutical companies ("Large" servers)
- var GlobalPharmaceuticals = new Company(_Location_js__WEBPACK_IMPORTED_MODULE_1__["Locations"].NewTokyoGlobalPharmaceuticals, 1.8, 1.8, 224);
- GlobalPharmaceuticals.addPositions([
- CompanyPositions.SoftwareIntern, CompanyPositions.ITIntern, CompanyPositions.BusinessIntern,
- CompanyPositions.JuniorDev, CompanyPositions.SeniorDev, CompanyPositions.LeadDev,
- CompanyPositions.SoftwareConsultant, CompanyPositions.SeniorSoftwareConsultant,
- CompanyPositions.ITAnalyst, CompanyPositions.ITManager, CompanyPositions.SecurityEngineer,
- CompanyPositions.NetworkEngineer, CompanyPositions.NetworkAdministrator,
- CompanyPositions.HeadOfSoftware, CompanyPositions.CTO, CompanyPositions.BusinessAnalyst,
- CompanyPositions.BusinessManager, CompanyPositions.OperationsManager,
- CompanyPositions.CFO, CompanyPositions.CEO, CompanyPositions.SecurityGuard,
- CompanyPositions.SecuritySupervisor, CompanyPositions.HeadOfSecurity]);
- if (companyExists(_Location_js__WEBPACK_IMPORTED_MODULE_1__["Locations"].NewTokyoGlobalPharmaceuticals)) {
- GlobalPharmaceuticals.favor = Companies[_Location_js__WEBPACK_IMPORTED_MODULE_1__["Locations"].NewTokyoGlobalPharmaceuticals].favor;
- delete Companies[_Location_js__WEBPACK_IMPORTED_MODULE_1__["Locations"].NewTokyoGlobalPharmaceuticals];
- }
- AddToCompanies(GlobalPharmaceuticals);
-
- var NovaMedical = new Company(_Location_js__WEBPACK_IMPORTED_MODULE_1__["Locations"].IshimaNovaMedical, 1.75, 1.75, 199);
- NovaMedical.addPositions([
- CompanyPositions.SoftwareIntern, CompanyPositions.ITIntern, CompanyPositions.BusinessIntern,
- CompanyPositions.JuniorDev, CompanyPositions.SeniorDev, CompanyPositions.LeadDev,
- CompanyPositions.SoftwareConsultant, CompanyPositions.SeniorSoftwareConsultant,
- CompanyPositions.ITAnalyst, CompanyPositions.ITManager, CompanyPositions.SecurityEngineer,
- CompanyPositions.NetworkEngineer, CompanyPositions.NetworkAdministrator,
- CompanyPositions.HeadOfSoftware, CompanyPositions.CTO, CompanyPositions.BusinessAnalyst,
- CompanyPositions.BusinessManager, CompanyPositions.OperationsManager,
- CompanyPositions.CFO, CompanyPositions.CEO, CompanyPositions.SecurityGuard,
- CompanyPositions.SecuritySupervisor, CompanyPositions.HeadOfSecurity]);
- if (companyExists(_Location_js__WEBPACK_IMPORTED_MODULE_1__["Locations"].IshimaNovaMedical)) {
- NovaMedical.favor = Companies[_Location_js__WEBPACK_IMPORTED_MODULE_1__["Locations"].IshimaNovaMedical].favor;
- delete Companies[_Location_js__WEBPACK_IMPORTED_MODULE_1__["Locations"].IshimaNovaMedical];
- }
- AddToCompanies(NovaMedical);
-
- //Other large companies
- var CIA = new Company(_Location_js__WEBPACK_IMPORTED_MODULE_1__["Locations"].Sector12CIA, 2.0, 2.0, 149);
- CIA.addPositions([
- CompanyPositions.SoftwareIntern, CompanyPositions.JuniorDev, CompanyPositions.SeniorDev,
- CompanyPositions.LeadDev, CompanyPositions.ITIntern, CompanyPositions.ITAnalyst,
- CompanyPositions.ITManager, CompanyPositions.SysAdmin, CompanyPositions.SecurityEngineer,
- CompanyPositions.NetworkEngineer, CompanyPositions.NetworkAdministrator, CompanyPositions.HeadOfSoftware,
- CompanyPositions.HeadOfEngineering, CompanyPositions.SecurityGuard, CompanyPositions.SecurityOfficer,
- CompanyPositions.SecuritySupervisor, CompanyPositions.HeadOfSecurity, CompanyPositions.FieldAgent,
- CompanyPositions.SecretAgent, CompanyPositions.SpecialOperative]);
- if (companyExists(_Location_js__WEBPACK_IMPORTED_MODULE_1__["Locations"].Sector12CIA)) {
- CIA.favor = Companies[_Location_js__WEBPACK_IMPORTED_MODULE_1__["Locations"].Sector12CIA].favor;
- delete Companies[_Location_js__WEBPACK_IMPORTED_MODULE_1__["Locations"].Sector12CIA];
- }
- AddToCompanies(CIA);
-
- var NSA = new Company(_Location_js__WEBPACK_IMPORTED_MODULE_1__["Locations"].Sector12NSA, 2.0, 2.0, 149);
- NSA.addPositions([
- CompanyPositions.SoftwareIntern, CompanyPositions.JuniorDev, CompanyPositions.SeniorDev,
- CompanyPositions.LeadDev, CompanyPositions.ITIntern, CompanyPositions.ITAnalyst,
- CompanyPositions.ITManager, CompanyPositions.SysAdmin, CompanyPositions.SecurityEngineer,
- CompanyPositions.NetworkEngineer, CompanyPositions.NetworkAdministrator, CompanyPositions.HeadOfSoftware,
- CompanyPositions.HeadOfEngineering, CompanyPositions.SecurityGuard, CompanyPositions.SecurityOfficer,
- CompanyPositions.SecuritySupervisor, CompanyPositions.HeadOfSecurity, CompanyPositions.FieldAgent,
- CompanyPositions.SecretAgent, CompanyPositions.SpecialOperative]);
- if (companyExists(_Location_js__WEBPACK_IMPORTED_MODULE_1__["Locations"].Sector12NSA)) {
- NSA.favor = Companies[_Location_js__WEBPACK_IMPORTED_MODULE_1__["Locations"].Sector12NSA].favor;
- delete Companies[_Location_js__WEBPACK_IMPORTED_MODULE_1__["Locations"].Sector12NSA];
- }
- AddToCompanies(NSA);
-
- var WatchdogSecurity = new Company(_Location_js__WEBPACK_IMPORTED_MODULE_1__["Locations"].AevumWatchdogSecurity, 1.5, 1.5, 124);
- WatchdogSecurity.addPositions([
- CompanyPositions.SoftwareIntern, CompanyPositions.JuniorDev, CompanyPositions.SeniorDev,
- CompanyPositions.LeadDev, CompanyPositions.SoftwareConsultant, CompanyPositions.SeniorSoftwareConsultant,
- CompanyPositions.ITIntern, CompanyPositions.ITAnalyst,
- CompanyPositions.ITManager, CompanyPositions.SysAdmin, CompanyPositions.SecurityEngineer,
- CompanyPositions.NetworkEngineer, CompanyPositions.NetworkAdministrator, CompanyPositions.HeadOfSoftware,
- CompanyPositions.HeadOfEngineering, CompanyPositions.SecurityGuard, CompanyPositions.SecurityOfficer,
- CompanyPositions.SecuritySupervisor, CompanyPositions.HeadOfSecurity, CompanyPositions.FieldAgent,
- CompanyPositions.SecretAgent, CompanyPositions.SpecialOperative]);
- if (companyExists(_Location_js__WEBPACK_IMPORTED_MODULE_1__["Locations"].AevumWatchdogSecurity)) {
- WatchdogSecurity.favor = Companies[_Location_js__WEBPACK_IMPORTED_MODULE_1__["Locations"].AevumWatchdogSecurity].favor;
- delete Companies[_Location_js__WEBPACK_IMPORTED_MODULE_1__["Locations"].AevumWatchdogSecurity];
- }
- AddToCompanies(WatchdogSecurity);
-
- //"Medium level" companies
- var LexoCorp = new Company(_Location_js__WEBPACK_IMPORTED_MODULE_1__["Locations"].VolhavenLexoCorp, 1.4, 1.4, 99);
- LexoCorp.addPositions([
- CompanyPositions.SoftwareIntern, CompanyPositions.JuniorDev, CompanyPositions.SeniorDev,
- CompanyPositions.LeadDev, CompanyPositions.SoftwareConsultant, CompanyPositions.SeniorSoftwareConsultant,
- CompanyPositions.ITIntern, CompanyPositions.ITAnalyst,
- CompanyPositions.ITManager, CompanyPositions.SysAdmin, CompanyPositions.SecurityEngineer,
- CompanyPositions.NetworkEngineer, CompanyPositions.HeadOfSoftware, CompanyPositions.CTO,
- CompanyPositions.BusinessIntern, CompanyPositions.BusinessAnalyst,
- CompanyPositions.OperationsManager, CompanyPositions.CFO, CompanyPositions.CEO,
- CompanyPositions.SecurityGuard, CompanyPositions.SecurityOfficer, CompanyPositions.HeadOfSecurity]);
- if (companyExists(_Location_js__WEBPACK_IMPORTED_MODULE_1__["Locations"].VolhavenLexoCorp)) {
- LexoCorp.favor = Companies[_Location_js__WEBPACK_IMPORTED_MODULE_1__["Locations"].VolhavenLexoCorp].favor;
- delete Companies[_Location_js__WEBPACK_IMPORTED_MODULE_1__["Locations"].VolhavenLexoCorp];
- }
- AddToCompanies(LexoCorp);
-
- var RhoConstruction = new Company(_Location_js__WEBPACK_IMPORTED_MODULE_1__["Locations"].AevumRhoConstruction, 1.3, 1.3, 49);
- RhoConstruction.addPositions([
- CompanyPositions.SoftwareIntern, CompanyPositions.JuniorDev, CompanyPositions.SeniorDev,
- CompanyPositions.LeadDev, CompanyPositions.BusinessIntern, CompanyPositions.BusinessAnalyst,
- CompanyPositions.BusinessManager, CompanyPositions.OperationsManager]);
- if (companyExists(_Location_js__WEBPACK_IMPORTED_MODULE_1__["Locations"].AevumRhoConstruction)) {
- RhoConstruction.favor = Companies[_Location_js__WEBPACK_IMPORTED_MODULE_1__["Locations"].AevumRhoConstruction].favor;
- delete Companies[_Location_js__WEBPACK_IMPORTED_MODULE_1__["Locations"].AevumRhoConstruction];
- }
- AddToCompanies(RhoConstruction);
-
- var AlphaEnterprises = new Company(_Location_js__WEBPACK_IMPORTED_MODULE_1__["Locations"].Sector12AlphaEnterprises, 1.5, 1.5, 99);
- AlphaEnterprises.addPositions([
- CompanyPositions.SoftwareIntern, CompanyPositions.JuniorDev, CompanyPositions.SeniorDev,
- CompanyPositions.LeadDev, CompanyPositions.SoftwareConsultant, CompanyPositions.SeniorSoftwareConsultant,
- CompanyPositions.BusinessIntern, CompanyPositions.BusinessAnalyst,
- CompanyPositions.BusinessManager, CompanyPositions.OperationsManager]);
- if (companyExists(_Location_js__WEBPACK_IMPORTED_MODULE_1__["Locations"].Sector12AlphaEnterprises)) {
- AlphaEnterprises.favor = Companies[_Location_js__WEBPACK_IMPORTED_MODULE_1__["Locations"].Sector12AlphaEnterprises].favor;
- delete Companies[_Location_js__WEBPACK_IMPORTED_MODULE_1__["Locations"].Sector12AlphaEnterprises];
- }
- AddToCompanies(AlphaEnterprises);
-
- var AevumPolice = new Company(_Location_js__WEBPACK_IMPORTED_MODULE_1__["Locations"].AevumPolice, 1.3, 1.3, 99);
- AevumPolice.addPositions([
- CompanyPositions.SoftwareIntern, CompanyPositions.JuniorDev, CompanyPositions.SeniorDev,
- CompanyPositions.LeadDev, CompanyPositions.SecurityGuard, CompanyPositions.PoliceOfficer]);
- if (companyExists(_Location_js__WEBPACK_IMPORTED_MODULE_1__["Locations"].AevumPolice)) {
- AevumPolice.favor = Companies[_Location_js__WEBPACK_IMPORTED_MODULE_1__["Locations"].AevumPolice].favor;
- delete Companies[_Location_js__WEBPACK_IMPORTED_MODULE_1__["Locations"].AevumPolice];
- }
- AddToCompanies(AevumPolice);
-
- var SysCoreSecurities = new Company(_Location_js__WEBPACK_IMPORTED_MODULE_1__["Locations"].VolhavenSysCoreSecurities, 1.3, 1.3, 124);
- SysCoreSecurities.addPositions([
- CompanyPositions.SoftwareIntern, CompanyPositions.JuniorDev, CompanyPositions.SeniorDev,
- CompanyPositions.LeadDev, CompanyPositions.ITIntern, CompanyPositions.ITAnalyst,
- CompanyPositions.ITManager, CompanyPositions.SysAdmin, CompanyPositions.SecurityEngineer,
- CompanyPositions.NetworkEngineer, CompanyPositions.NetworkAdministrator, CompanyPositions.HeadOfSoftware,
- CompanyPositions.CTO]);
- if (companyExists(_Location_js__WEBPACK_IMPORTED_MODULE_1__["Locations"].VolhavenSysCoreSecurities)) {
- SysCoreSecurities.favor = Companies[_Location_js__WEBPACK_IMPORTED_MODULE_1__["Locations"].VolhavenSysCoreSecurities].favor;
- delete Companies[_Location_js__WEBPACK_IMPORTED_MODULE_1__["Locations"].VolhavenSysCoreSecurities];
- }
- AddToCompanies(SysCoreSecurities);
-
- var CompuTek = new Company(_Location_js__WEBPACK_IMPORTED_MODULE_1__["Locations"].VolhavenCompuTek, 1.2, 1.2, 74);
- CompuTek.addPositions([
- CompanyPositions.SoftwareIntern, CompanyPositions.JuniorDev, CompanyPositions.SeniorDev,
- CompanyPositions.LeadDev, CompanyPositions.SoftwareConsultant, CompanyPositions.SeniorSoftwareConsultant,
- CompanyPositions.ITIntern, CompanyPositions.ITAnalyst,
- CompanyPositions.ITManager, CompanyPositions.SysAdmin, CompanyPositions.SecurityEngineer,
- CompanyPositions.NetworkEngineer, CompanyPositions.NetworkAdministrator, CompanyPositions.HeadOfSoftware,
- CompanyPositions.CTO]);
- if (companyExists(_Location_js__WEBPACK_IMPORTED_MODULE_1__["Locations"].VolhavenCompuTek)) {
- CompuTek.favor = Companies[_Location_js__WEBPACK_IMPORTED_MODULE_1__["Locations"].VolhavenCompuTek].favor;
- delete Companies[_Location_js__WEBPACK_IMPORTED_MODULE_1__["Locations"].VolhavenCompuTek];
- }
- AddToCompanies(CompuTek);
-
- var NetLinkTechnologies = new Company(_Location_js__WEBPACK_IMPORTED_MODULE_1__["Locations"].AevumNetLinkTechnologies, 1.2, 1.2, 99);
- NetLinkTechnologies.addPositions([
- CompanyPositions.SoftwareIntern, CompanyPositions.JuniorDev, CompanyPositions.SeniorDev,
- CompanyPositions.LeadDev, CompanyPositions.SoftwareConsultant, CompanyPositions.SeniorSoftwareConsultant,
- CompanyPositions.ITIntern, CompanyPositions.ITAnalyst,
- CompanyPositions.ITManager, CompanyPositions.SysAdmin, CompanyPositions.SecurityEngineer,
- CompanyPositions.NetworkEngineer, CompanyPositions.NetworkAdministrator, CompanyPositions.HeadOfSoftware,
- CompanyPositions.CTO]);
- if (companyExists(_Location_js__WEBPACK_IMPORTED_MODULE_1__["Locations"].AevumNetLinkTechnologies)) {
- NetLinkTechnologies.favor = Companies[_Location_js__WEBPACK_IMPORTED_MODULE_1__["Locations"].AevumNetLinkTechnologies].favor;
- delete Companies[_Location_js__WEBPACK_IMPORTED_MODULE_1__["Locations"].AevumNetLinkTechnologies];
- }
- AddToCompanies(NetLinkTechnologies);
-
- var CarmichaelSecurity = new Company(_Location_js__WEBPACK_IMPORTED_MODULE_1__["Locations"].Sector12CarmichaelSecurity, 1.2, 1.2, 74);
- CarmichaelSecurity.addPositions([
- CompanyPositions.SoftwareIntern, CompanyPositions.JuniorDev, CompanyPositions.SeniorDev,
- CompanyPositions.LeadDev, CompanyPositions.SoftwareConsultant, CompanyPositions.SeniorSoftwareConsultant,
- CompanyPositions.ITIntern, CompanyPositions.ITAnalyst,
- CompanyPositions.ITManager, CompanyPositions.SysAdmin, CompanyPositions.SecurityEngineer,
- CompanyPositions.NetworkEngineer, CompanyPositions.NetworkAdministrator, CompanyPositions.HeadOfSoftware,
- CompanyPositions.HeadOfEngineering, CompanyPositions.SecurityGuard, CompanyPositions.SecurityOfficer,
- CompanyPositions.SecuritySupervisor, CompanyPositions.HeadOfSecurity, CompanyPositions.FieldAgent,
- CompanyPositions.SecretAgent, CompanyPositions.SpecialOperative]);
- if (companyExists(_Location_js__WEBPACK_IMPORTED_MODULE_1__["Locations"].Sector12CarmichaelSecurity)) {
- CarmichaelSecurity.favor = Companies[_Location_js__WEBPACK_IMPORTED_MODULE_1__["Locations"].Sector12CarmichaelSecurity].favor;
- delete Companies[_Location_js__WEBPACK_IMPORTED_MODULE_1__["Locations"].Sector12CarmichaelSecurity];
- }
- AddToCompanies(CarmichaelSecurity);
-
- //"Low level" companies
- var FoodNStuff = new Company(_Location_js__WEBPACK_IMPORTED_MODULE_1__["Locations"].Sector12FoodNStuff, 1, 1, 0);
- FoodNStuff.addPositions([CompanyPositions.Employee, CompanyPositions.PartTimeEmployee]);
- if (companyExists(_Location_js__WEBPACK_IMPORTED_MODULE_1__["Locations"].Sector12FoodNStuff)) {
- FoodNStuff.favor = Companies[_Location_js__WEBPACK_IMPORTED_MODULE_1__["Locations"].Sector12FoodNStuff].favor;
- delete Companies[_Location_js__WEBPACK_IMPORTED_MODULE_1__["Locations"].Sector12FoodNStuff];
- }
- AddToCompanies(FoodNStuff);
-
- var JoesGuns = new Company(_Location_js__WEBPACK_IMPORTED_MODULE_1__["Locations"].Sector12JoesGuns, 1, 1, 0);
- JoesGuns.addPositions([CompanyPositions.Employee, CompanyPositions.PartTimeEmployee]);
- if (companyExists(_Location_js__WEBPACK_IMPORTED_MODULE_1__["Locations"].Sector12JoesGuns)) {
- JoesGuns.favor = Companies[_Location_js__WEBPACK_IMPORTED_MODULE_1__["Locations"].Sector12JoesGuns].favor;
- delete Companies[_Location_js__WEBPACK_IMPORTED_MODULE_1__["Locations"].Sector12JoesGuns];
- }
- AddToCompanies(JoesGuns);
-
- var OmegaSoftware = new Company(_Location_js__WEBPACK_IMPORTED_MODULE_1__["Locations"].IshimaOmegaSoftware, 1.1, 1.1, 49);
- OmegaSoftware.addPositions([
- CompanyPositions.SoftwareIntern, CompanyPositions.JuniorDev, CompanyPositions.SeniorDev,
- CompanyPositions.LeadDev, CompanyPositions.SoftwareConsultant, CompanyPositions.SeniorSoftwareConsultant,
- CompanyPositions.ITIntern, CompanyPositions.ITAnalyst,
- CompanyPositions.ITManager, CompanyPositions.CTO, CompanyPositions.CEO]);
- if (companyExists(_Location_js__WEBPACK_IMPORTED_MODULE_1__["Locations"].IshimaOmegaSoftware)) {
- OmegaSoftware.favor = Companies[_Location_js__WEBPACK_IMPORTED_MODULE_1__["Locations"].IshimaOmegaSoftware].favor;
- delete Companies[_Location_js__WEBPACK_IMPORTED_MODULE_1__["Locations"].IshimaOmegaSoftware];
- }
- AddToCompanies(OmegaSoftware);
-
- /* Companies that do not have servers */
- var NoodleBar = new Company(_Location_js__WEBPACK_IMPORTED_MODULE_1__["Locations"].NewTokyoNoodleBar, 1, 1, 0);
- NoodleBar.addPositions([CompanyPositions.Waiter, CompanyPositions.PartTimeWaiter]);
- if (companyExists(_Location_js__WEBPACK_IMPORTED_MODULE_1__["Locations"].NewTokyoNoodleBar)) {
- NoodleBar.favor = Companies[_Location_js__WEBPACK_IMPORTED_MODULE_1__["Locations"].NewTokyoNoodleBar].favor;
- delete Companies[_Location_js__WEBPACK_IMPORTED_MODULE_1__["Locations"].NewTokyoNoodleBar];
- }
- AddToCompanies(NoodleBar);
-}
-
-//Map of all companies that exist in the game, indexed by their name
-let Companies = {}
-
-function loadCompanies(saveString) {
- Companies = JSON.parse(saveString, _utils_JSONReviver_js__WEBPACK_IMPORTED_MODULE_3__["Reviver"]);
-}
-
-//Add a Company object onto the map of all Companies in the game
-function AddToCompanies(company) {
- var name = company.companyName;
- Companies[name] = company;
-}
-
-function companyExists(name) {
- return Companies.hasOwnProperty(name);
-}
-
-function getJobRequirementText(company, pos, tooltiptext=false) {
- var reqText = "";
- var offset = company.jobStatReqOffset;
- var reqHacking = pos.requiredHacking > 0 ? pos.requiredHacking+offset : 0;
- var reqStrength = pos.requiredStrength > 0 ? pos.requiredStrength+offset : 0;
- var reqDefense = pos.requiredDefense > 0 ? pos.requiredDefense+offset : 0;
- var reqDexterity = pos.requiredDexterity > 0 ? pos.requiredDexterity+offset : 0;
- var reqAgility = pos.requiredDexterity > 0 ? pos.requiredDexterity+offset : 0;
- var reqCharisma = pos.requiredCharisma > 0 ? pos.requiredCharisma+offset : 0;
- var reqRep = pos.requiredReputation;
- if (tooltiptext) {
- reqText = "Requires:
";
- reqText += (reqHacking.toString() + " hacking
");
- reqText += (reqStrength.toString() + " strength
");
- reqText += (reqDefense.toString() + " defense
");
- reqText += (reqDexterity.toString() + " dexterity
");
- reqText += (reqAgility.toString() + " agility
");
- reqText += (reqCharisma.toString() + " charisma
");
- reqText += (reqRep.toString() + " reputation");
- } else {
- reqText = "(Requires ";
- if (reqHacking > 0) {reqText += (reqHacking + " hacking, ");}
- if (reqStrength > 0) {reqText += (reqStrength + " strength, ");}
- if (reqDefense > 0) {reqText += (reqDefense + " defense, ");}
- if (reqDexterity > 0) {reqText += (reqDexterity + " dexterity, ");}
- if (reqAgility > 0) {reqText += (reqAgility + " agility, ");}
- if (reqCharisma > 0) {reqText += (reqCharisma + " charisma, ");}
- if (reqRep > 1) {reqText += (reqRep + " reputation, ");}
- reqText = reqText.substring(0, reqText.length - 2);
- reqText += ")";
- }
- return reqText;
-}
-
-
-
-
-/***/ }),
-/* 10 */
-/*!***********************!*\
- !*** ./src/Server.js ***!
- \***********************/
-/***/ (function(module, __webpack_exports__, __webpack_require__) {
-
-"use strict";
-__webpack_require__.r(__webpack_exports__);
-/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "Server", function() { return Server; });
-/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "AllServers", function() { return AllServers; });
-/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "getServer", function() { return getServer; });
-/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "GetServerByHostname", function() { return GetServerByHostname; });
-/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "loadAllServers", function() { return loadAllServers; });
-/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "AddToAllServers", function() { return AddToAllServers; });
-/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "processSingleServerGrowth", function() { return processSingleServerGrowth; });
-/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "initForeignServers", function() { return initForeignServers; });
-/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "prestigeAllServers", function() { return prestigeAllServers; });
-/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "prestigeHomeComputer", function() { return prestigeHomeComputer; });
-/* harmony import */ var _BitNode_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./BitNode.js */ 15);
-/* harmony import */ var _Constants_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./Constants.js */ 3);
-/* harmony import */ var _CreateProgram_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./CreateProgram.js */ 14);
-/* harmony import */ var _Player_js__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./Player.js */ 0);
-/* harmony import */ var _Script_js__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ./Script.js */ 26);
-/* harmony import */ var _SpecialServerIps_js__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ./SpecialServerIps.js */ 17);
-/* harmony import */ var _utils_HelperFunctions_js__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! ../utils/HelperFunctions.js */ 1);
-/* harmony import */ var _utils_IPAddress_js__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! ../utils/IPAddress.js */ 16);
-/* harmony import */ var _utils_JSONReviver_js__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! ../utils/JSONReviver.js */ 8);
-
-
-
-
-
-
-
-
-
-
-function Server(params={ip:Object(_utils_IPAddress_js__WEBPACK_IMPORTED_MODULE_7__["createRandomIp"])(), hostname:""}) {
- /* Properties */
- //Connection information
- this.ip = params.ip ? params.ip : Object(_utils_IPAddress_js__WEBPACK_IMPORTED_MODULE_7__["createRandomIp"])();
-
- var hostname = params.hostname;
- var i = 0;
- var suffix = "";
- while (GetServerByHostname(hostname+suffix) != null) {
- //Server already exists
- suffix = "-" + i;
- ++i;
- }
- this.hostname = hostname + suffix;
- this.organizationName = params.organizationName != null ? params.organizationName : "";
- this.isConnectedTo = params.isConnectedTo != null ? params.isConnectedTo : false;
-
- //Access information
- this.hasAdminRights = params.adminRights != null ? params.adminRights : false;
- this.purchasedByPlayer = params.purchasedByPlayer != null ? params.purchasedByPlayer : false;
- this.manuallyHacked = false; //Flag that tracks whether or not the server has been hacked at least once
-
- //RAM, CPU speed and Scripts
- this.maxRam = params.maxRam != null ? params.maxRam : 0; //GB
- this.ramUsed = 0;
- this.cpuCores = 1; //Max of 8, affects hacking times and Hacking Mission starting Cores
-
- this.scripts = [];
- this.runningScripts = []; //Stores RunningScript objects
- this.programs = [];
- this.messages = [];
- this.textFiles = [];
- this.dir = 0; //new Directory(this, null, ""); TODO
-
- /* Hacking information (only valid for "foreign" aka non-purchased servers) */
- this.requiredHackingSkill = params.requiredHackingSkill != null ? params.requiredHackingSkill : 1;
- this.moneyAvailable = params.moneyAvailable != null ? params.moneyAvailable * _BitNode_js__WEBPACK_IMPORTED_MODULE_0__["BitNodeMultipliers"].ServerStartingMoney : 0;
- this.moneyMax = 25 * this.moneyAvailable * _BitNode_js__WEBPACK_IMPORTED_MODULE_0__["BitNodeMultipliers"].ServerMaxMoney;
-
- //Hack Difficulty is synonymous with server security. Base Difficulty = Starting difficulty
- this.hackDifficulty = params.hackDifficulty != null ? params.hackDifficulty * _BitNode_js__WEBPACK_IMPORTED_MODULE_0__["BitNodeMultipliers"].ServerStartingSecurity : 1;
- this.baseDifficulty = this.hackDifficulty;
- this.minDifficulty = Math.max(1, Math.round(this.hackDifficulty / 3));
- this.serverGrowth = params.serverGrowth != null ? params.serverGrowth : 1; //Integer from 0 to 100. Affects money increase from grow()
-
- //The IP's of all servers reachable from this one (what shows up if you run scan/netstat)
- // NOTE: Only contains IP and not the Server objects themselves
- this.serversOnNetwork = [];
-
- //Port information, required for porthacking servers to get admin rights
- this.numOpenPortsRequired = params.numOpenPortsRequired != null ? params.numOpenPortsRequired : 5;
- this.sshPortOpen = false; //Port 22
- this.ftpPortOpen = false; //Port 21
- this.smtpPortOpen = false; //Port 25
- this.httpPortOpen = false; //Port 80
- this.sqlPortOpen = false; //Port 1433
- this.openPortCount = 0;
-};
-
-Server.prototype.setMaxRam = function(ram) {
- this.maxRam = ram;
-}
-
-//The serverOnNetwork array holds the IP of all the servers. This function
-//returns the actual Server objects
-Server.prototype.getServerOnNetwork = function(i) {
- if (i > this.serversOnNetwork.length) {
- console.log("Tried to get server on network that was out of range");
- return;
- }
- return AllServers[this.serversOnNetwork[i]];
-}
-
-//Given the name of the script, returns the corresponding
-//script object on the server (if it exists)
-Server.prototype.getScript = function(scriptName) {
- for (var i = 0; i < this.scripts.length; i++) {
- if (this.scripts[i].filename == scriptName) {
- return this.scripts[i];
- }
- }
- return null;
-}
-
-//Strengthens a server's security level (difficulty) by the specified amount
-Server.prototype.fortify = function(amt) {
- this.hackDifficulty += amt;
- //Place some arbitrarily limit that realistically should never happen unless someone is
- //screwing around with the game
- if (this.hackDifficulty > 1000000) {this.hackDifficulty = 1000000;}
-}
-
-Server.prototype.weaken = function(amt) {
- this.hackDifficulty -= (amt * _BitNode_js__WEBPACK_IMPORTED_MODULE_0__["BitNodeMultipliers"].ServerWeakenRate);
- if (this.hackDifficulty < this.minDifficulty) {this.hackDifficulty = this.minDifficulty;}
- if (this.hackDifficulty < 1) {this.hackDifficulty = 1;}
-}
-
-//Functions for loading and saving a Server
-Server.prototype.toJSON = function() {
- return Object(_utils_JSONReviver_js__WEBPACK_IMPORTED_MODULE_8__["Generic_toJSON"])("Server", this);
-}
-
-Server.fromJSON = function(value) {
- return Object(_utils_JSONReviver_js__WEBPACK_IMPORTED_MODULE_8__["Generic_fromJSON"])(Server, value.data);
-}
-
-_utils_JSONReviver_js__WEBPACK_IMPORTED_MODULE_8__["Reviver"].constructors.Server = Server;
-
-function initForeignServers() {
- //MegaCorporations
- var ECorpServer = new Server({
- ip:Object(_utils_IPAddress_js__WEBPACK_IMPORTED_MODULE_7__["createRandomIp"])(), hostname:"ecorp", organizationName:"ECorp",
- requiredHackingSkill:Object(_utils_HelperFunctions_js__WEBPACK_IMPORTED_MODULE_6__["getRandomInt"])(1150, 1300), moneyAvailable:Object(_utils_HelperFunctions_js__WEBPACK_IMPORTED_MODULE_6__["getRandomInt"])(30e9, 70e9),
- hackDifficulty:99,serverGrowth:99, numOpenPortsRequired: 5,
- });
- AddToAllServers(ECorpServer);
-
- var MegaCorpServer = new Server({
- ip:Object(_utils_IPAddress_js__WEBPACK_IMPORTED_MODULE_7__["createRandomIp"])(), hostname:"megacorp", organizationName:"MegaCorp",
- requiredHackingSkill:Object(_utils_HelperFunctions_js__WEBPACK_IMPORTED_MODULE_6__["getRandomInt"])(1150, 1300), moneyAvailable:Object(_utils_HelperFunctions_js__WEBPACK_IMPORTED_MODULE_6__["getRandomInt"])(40e9, 60e9),
- hackDifficulty:99, serverGrowth:99, numOpenPortsRequired:5
- });
- AddToAllServers(MegaCorpServer);
-
- var BachmanAndAssociatesServer = new Server({
- ip:Object(_utils_IPAddress_js__WEBPACK_IMPORTED_MODULE_7__["createRandomIp"])(), hostname:"b-and-a", organizationName:"Bachman & Associates",
- requiredHackingSkill:Object(_utils_HelperFunctions_js__WEBPACK_IMPORTED_MODULE_6__["getRandomInt"])(1000, 1050), moneyAvailable:Object(_utils_HelperFunctions_js__WEBPACK_IMPORTED_MODULE_6__["getRandomInt"])(20e9, 25e9),
- hackDifficulty:Object(_utils_HelperFunctions_js__WEBPACK_IMPORTED_MODULE_6__["getRandomInt"])(75, 85), serverGrowth:Object(_utils_HelperFunctions_js__WEBPACK_IMPORTED_MODULE_6__["getRandomInt"])(65, 75), numOpenPortsRequired:5
- });
- AddToAllServers(BachmanAndAssociatesServer);
-
- var BladeIndustriesServer = new Server({
- ip:Object(_utils_IPAddress_js__WEBPACK_IMPORTED_MODULE_7__["createRandomIp"])(), hostname:"blade", organizationName:"Blade Industries", maxRam:128,
- requiredHackingSkill:Object(_utils_HelperFunctions_js__WEBPACK_IMPORTED_MODULE_6__["getRandomInt"])(1000, 1100), moneyAvailable:Object(_utils_HelperFunctions_js__WEBPACK_IMPORTED_MODULE_6__["getRandomInt"])(12e9, 20e9),
- hackDifficulty:Object(_utils_HelperFunctions_js__WEBPACK_IMPORTED_MODULE_6__["getRandomInt"])(90, 95), serverGrowth:Object(_utils_HelperFunctions_js__WEBPACK_IMPORTED_MODULE_6__["getRandomInt"])(60, 75), numOpenPortsRequired:5
- });
- BladeIndustriesServer.messages.push("beyond-man.lit");
- AddToAllServers(BladeIndustriesServer);
-
- var NWOServer = new Server({
- ip:Object(_utils_IPAddress_js__WEBPACK_IMPORTED_MODULE_7__["createRandomIp"])(), hostname:"nwo", organizationName:"New World Order",
- requiredHackingSkill:Object(_utils_HelperFunctions_js__WEBPACK_IMPORTED_MODULE_6__["getRandomInt"])(1000, 1200), moneyAvailable:Object(_utils_HelperFunctions_js__WEBPACK_IMPORTED_MODULE_6__["getRandomInt"])(25e9, 35e9),
- hackDifficulty:99, serverGrowth:Object(_utils_HelperFunctions_js__WEBPACK_IMPORTED_MODULE_6__["getRandomInt"])(75, 85), numOpenPortsRequired:5
- });
- NWOServer.messages.push("the-hidden-world.lit");
- AddToAllServers(NWOServer);
-
- var ClarkeIncorporatedServer = new Server({
- ip:Object(_utils_IPAddress_js__WEBPACK_IMPORTED_MODULE_7__["createRandomIp"])(), hostname:"clarkeinc", organizationName:"Clarke Incorporated",
- requiredHackingSkill:Object(_utils_HelperFunctions_js__WEBPACK_IMPORTED_MODULE_6__["getRandomInt"])(1000, 1200), moneyAvailable:Object(_utils_HelperFunctions_js__WEBPACK_IMPORTED_MODULE_6__["getRandomInt"])(15e9, 25e9),
- hackDifficulty:Object(_utils_HelperFunctions_js__WEBPACK_IMPORTED_MODULE_6__["getRandomInt"])(50, 60), serverGrowth:Object(_utils_HelperFunctions_js__WEBPACK_IMPORTED_MODULE_6__["getRandomInt"])(50, 70), numOpenPortsRequired:5
- });
- ClarkeIncorporatedServer.messages.push("beyond-man.lit");
- ClarkeIncorporatedServer.messages.push("cost-of-immortality.lit");
- AddToAllServers(ClarkeIncorporatedServer);
-
- var OmniTekIncorporatedServer = new Server({
- ip:Object(_utils_IPAddress_js__WEBPACK_IMPORTED_MODULE_7__["createRandomIp"])(), hostname:"omnitek", organizationName:"OmniTek Incorporated", maxRam:256,
- requiredHackingSkill:Object(_utils_HelperFunctions_js__WEBPACK_IMPORTED_MODULE_6__["getRandomInt"])(900, 1100), moneyAvailable:Object(_utils_HelperFunctions_js__WEBPACK_IMPORTED_MODULE_6__["getRandomInt"])(15e9, 20e9),
- hackDifficulty:Object(_utils_HelperFunctions_js__WEBPACK_IMPORTED_MODULE_6__["getRandomInt"])(90, 99), serverGrowth:Object(_utils_HelperFunctions_js__WEBPACK_IMPORTED_MODULE_6__["getRandomInt"])(95, 99), numOpenPortsRequired:5
- });
- OmniTekIncorporatedServer.messages.push("coded-intelligence.lit");
- OmniTekIncorporatedServer.messages.push("history-of-synthoids.lit");
- AddToAllServers(OmniTekIncorporatedServer);
-
- var FourSigmaServer = new Server({
- ip:Object(_utils_IPAddress_js__WEBPACK_IMPORTED_MODULE_7__["createRandomIp"])(), hostname:"4sigma", organizationName:"FourSigma",
- requiredHackingSkill:Object(_utils_HelperFunctions_js__WEBPACK_IMPORTED_MODULE_6__["getRandomInt"])(950, 1200), moneyAvailable:Object(_utils_HelperFunctions_js__WEBPACK_IMPORTED_MODULE_6__["getRandomInt"])(15e9, 25e9),
- hackDifficulty:Object(_utils_HelperFunctions_js__WEBPACK_IMPORTED_MODULE_6__["getRandomInt"])(60, 70), serverGrowth:Object(_utils_HelperFunctions_js__WEBPACK_IMPORTED_MODULE_6__["getRandomInt"])(75, 99), numOpenPortsRequired:5
- });
- AddToAllServers(FourSigmaServer);
-
- var KuaiGongInternationalServer = new Server({
- ip:Object(_utils_IPAddress_js__WEBPACK_IMPORTED_MODULE_7__["createRandomIp"])(), hostname:"kuai-gong", organizationName:"KuaiGong International",
- requiredHackingSkill:Object(_utils_HelperFunctions_js__WEBPACK_IMPORTED_MODULE_6__["getRandomInt"])(1000, 1250), moneyAvailable:Object(_utils_HelperFunctions_js__WEBPACK_IMPORTED_MODULE_6__["getRandomInt"])(20e9, 30e9),
- hackDifficulty:Object(_utils_HelperFunctions_js__WEBPACK_IMPORTED_MODULE_6__["getRandomInt"])(95, 99), serverGrowth:Object(_utils_HelperFunctions_js__WEBPACK_IMPORTED_MODULE_6__["getRandomInt"])(90, 99), numOpenPortsRequired:5,
- });
- AddToAllServers(KuaiGongInternationalServer);
-
- //Technology and communications companies (large targets)
- var FulcrumTechnologiesServer = new Server({
- ip:Object(_utils_IPAddress_js__WEBPACK_IMPORTED_MODULE_7__["createRandomIp"])(), hostname:"fulcrumtech", organizationName:"Fulcrum Technologies", maxRam:512,
- requiredHackingSkill:Object(_utils_HelperFunctions_js__WEBPACK_IMPORTED_MODULE_6__["getRandomInt"])(1000, 1200), moneyAvailable:Object(_utils_HelperFunctions_js__WEBPACK_IMPORTED_MODULE_6__["getRandomInt"])(1.4e9, 1.8e9),
- hackDifficulty:Object(_utils_HelperFunctions_js__WEBPACK_IMPORTED_MODULE_6__["getRandomInt"])(85, 95), serverGrowth:Object(_utils_HelperFunctions_js__WEBPACK_IMPORTED_MODULE_6__["getRandomInt"])(80, 99), numOpenPortsRequired:5
- });
- FulcrumTechnologiesServer.messages.push("simulated-reality.lit");
- AddToAllServers(FulcrumTechnologiesServer);
-
- var FulcrumSecretTechnologiesServer = new Server({
- ip:Object(_utils_IPAddress_js__WEBPACK_IMPORTED_MODULE_7__["createRandomIp"])(), hostname:"fulcrumassets", organizationName:"Fulcrum Technologies Assets",
- requiredHackingSkill:Object(_utils_HelperFunctions_js__WEBPACK_IMPORTED_MODULE_6__["getRandomInt"])(1200, 1500), moneyAvailable:1e6,
- hackDifficulty:99, serverGrowth:1, numOpenPortsRequired:5
- });
- AddToAllServers(FulcrumSecretTechnologiesServer);
- _SpecialServerIps_js__WEBPACK_IMPORTED_MODULE_5__["SpecialServerIps"].addIp(_SpecialServerIps_js__WEBPACK_IMPORTED_MODULE_5__["SpecialServerNames"].FulcrumSecretTechnologies, FulcrumSecretTechnologiesServer.ip);
-
- var StormTechnologiesServer = new Server({
- ip:Object(_utils_IPAddress_js__WEBPACK_IMPORTED_MODULE_7__["createRandomIp"])(), hostname:"stormtech", organizationName:"Storm Technologies",
- requiredHackingSkill:Object(_utils_HelperFunctions_js__WEBPACK_IMPORTED_MODULE_6__["getRandomInt"])(900, 1050), moneyAvailable:Object(_utils_HelperFunctions_js__WEBPACK_IMPORTED_MODULE_6__["getRandomInt"])(1e9, 1.2e9),
- hackDifficulty:Object(_utils_HelperFunctions_js__WEBPACK_IMPORTED_MODULE_6__["getRandomInt"])(80, 90), serverGrowth:Object(_utils_HelperFunctions_js__WEBPACK_IMPORTED_MODULE_6__["getRandomInt"])(70, 90), numOpenPortsRequired:5
- });
- AddToAllServers(StormTechnologiesServer);
-
- var DefCommServer = new Server({
- ip:Object(_utils_IPAddress_js__WEBPACK_IMPORTED_MODULE_7__["createRandomIp"])(), hostname:"defcomm", organizationName:"DefComm",
- requiredHackingSkill:Object(_utils_HelperFunctions_js__WEBPACK_IMPORTED_MODULE_6__["getRandomInt"])(900, 1000), moneyAvailable:Object(_utils_HelperFunctions_js__WEBPACK_IMPORTED_MODULE_6__["getRandomInt"])(800e6, 950e6),
- hackDifficulty:Object(_utils_HelperFunctions_js__WEBPACK_IMPORTED_MODULE_6__["getRandomInt"])(85, 95), serverGrowth:Object(_utils_HelperFunctions_js__WEBPACK_IMPORTED_MODULE_6__["getRandomInt"])(50, 70), numOpenPortsRequired:5
- });
- AddToAllServers(DefCommServer);
-
- var InfoCommServer = new Server({
- ip:Object(_utils_IPAddress_js__WEBPACK_IMPORTED_MODULE_7__["createRandomIp"])(), hostname:"infocomm", organizationName:"InfoComm",
- requiredHackingSkill:Object(_utils_HelperFunctions_js__WEBPACK_IMPORTED_MODULE_6__["getRandomInt"])(875, 950), moneyAvailable:Object(_utils_HelperFunctions_js__WEBPACK_IMPORTED_MODULE_6__["getRandomInt"])(600e6, 900e6),
- hackDifficulty:Object(_utils_HelperFunctions_js__WEBPACK_IMPORTED_MODULE_6__["getRandomInt"])(70, 90), serverGrowth:Object(_utils_HelperFunctions_js__WEBPACK_IMPORTED_MODULE_6__["getRandomInt"])(35, 75), numOpenPortsRequired:5
- });
- AddToAllServers(InfoCommServer);
-
- var HeliosLabsServer = new Server({
- ip:Object(_utils_IPAddress_js__WEBPACK_IMPORTED_MODULE_7__["createRandomIp"])(), hostname:"helios", organizationName:"Helios Labs", maxRam:128,
- requiredHackingSkill:Object(_utils_HelperFunctions_js__WEBPACK_IMPORTED_MODULE_6__["getRandomInt"])(800, 900), moneyAvailable:Object(_utils_HelperFunctions_js__WEBPACK_IMPORTED_MODULE_6__["getRandomInt"])(550e6, 750e6),
- hackDifficulty:Object(_utils_HelperFunctions_js__WEBPACK_IMPORTED_MODULE_6__["getRandomInt"])(85, 95), serverGrowth:Object(_utils_HelperFunctions_js__WEBPACK_IMPORTED_MODULE_6__["getRandomInt"])(70, 80), numOpenPortsRequired:5
- });
- HeliosLabsServer.messages.push("beyond-man.lit");
- AddToAllServers(HeliosLabsServer);
-
- var VitaLifeServer = new Server({
- ip:Object(_utils_IPAddress_js__WEBPACK_IMPORTED_MODULE_7__["createRandomIp"])(), hostname:"vitalife", organizationName:"VitaLife", maxRam:64,
- requiredHackingSkill:Object(_utils_HelperFunctions_js__WEBPACK_IMPORTED_MODULE_6__["getRandomInt"])(775, 900), moneyAvailable:Object(_utils_HelperFunctions_js__WEBPACK_IMPORTED_MODULE_6__["getRandomInt"])(700e6, 800e6),
- hackDifficulty:Object(_utils_HelperFunctions_js__WEBPACK_IMPORTED_MODULE_6__["getRandomInt"])(80, 90), serverGrowth:Object(_utils_HelperFunctions_js__WEBPACK_IMPORTED_MODULE_6__["getRandomInt"])(60, 80), numOpenPortsRequired:5
- });
- VitaLifeServer.messages.push("A-Green-Tomorrow.lit");
- AddToAllServers(VitaLifeServer);
-
- var IcarusMicrosystemsServer = new Server({
- ip:Object(_utils_IPAddress_js__WEBPACK_IMPORTED_MODULE_7__["createRandomIp"])(), hostname:"icarus", organizationName:"Icarus Microsystems",
- requiredHackingSkill:Object(_utils_HelperFunctions_js__WEBPACK_IMPORTED_MODULE_6__["getRandomInt"])(850, 925), moneyAvailable:Object(_utils_HelperFunctions_js__WEBPACK_IMPORTED_MODULE_6__["getRandomInt"])(900e6, 1000e6),
- hackDifficulty:Object(_utils_HelperFunctions_js__WEBPACK_IMPORTED_MODULE_6__["getRandomInt"])(85, 95), serverGrowth:Object(_utils_HelperFunctions_js__WEBPACK_IMPORTED_MODULE_6__["getRandomInt"])(85, 95), numOpenPortsRequired:5
- });
- AddToAllServers(IcarusMicrosystemsServer);
-
- var UniversalEnergyServer = new Server({
- ip:Object(_utils_IPAddress_js__WEBPACK_IMPORTED_MODULE_7__["createRandomIp"])(), hostname:"univ-energy", organizationName:"Universal Energy", maxRam:64,
- requiredHackingSkill:Object(_utils_HelperFunctions_js__WEBPACK_IMPORTED_MODULE_6__["getRandomInt"])(800, 900), moneyAvailable:Object(_utils_HelperFunctions_js__WEBPACK_IMPORTED_MODULE_6__["getRandomInt"])(1.1e9, 1.2e9),
- hackDifficulty:Object(_utils_HelperFunctions_js__WEBPACK_IMPORTED_MODULE_6__["getRandomInt"])(80, 90), serverGrowth:Object(_utils_HelperFunctions_js__WEBPACK_IMPORTED_MODULE_6__["getRandomInt"])(80, 90), numOpenPortsRequired:4
- });
- AddToAllServers(UniversalEnergyServer);
-
- var TitanLabsServer = new Server({
- ip:Object(_utils_IPAddress_js__WEBPACK_IMPORTED_MODULE_7__["createRandomIp"])(), hostname:"titan-labs", organizationName:"Titan Laboratories", maxRam:64,
- requiredHackingSkill:Object(_utils_HelperFunctions_js__WEBPACK_IMPORTED_MODULE_6__["getRandomInt"])(800, 875), moneyAvailable:Object(_utils_HelperFunctions_js__WEBPACK_IMPORTED_MODULE_6__["getRandomInt"])(750e6, 900e6),
- hackDifficulty:Object(_utils_HelperFunctions_js__WEBPACK_IMPORTED_MODULE_6__["getRandomInt"])(70, 80), serverGrowth:Object(_utils_HelperFunctions_js__WEBPACK_IMPORTED_MODULE_6__["getRandomInt"])(60, 80), numOpenPortsRequired:5
- });
- TitanLabsServer.messages.push("coded-intelligence.lit");
- AddToAllServers(TitanLabsServer);
-
- var MicrodyneTechnologiesServer = new Server({
- ip:Object(_utils_IPAddress_js__WEBPACK_IMPORTED_MODULE_7__["createRandomIp"])(), hostname:"microdyne", organizationName:"Microdyne Technologies", maxRam:32,
- requiredHackingSkill:Object(_utils_HelperFunctions_js__WEBPACK_IMPORTED_MODULE_6__["getRandomInt"])(800, 875), moneyAvailable:Object(_utils_HelperFunctions_js__WEBPACK_IMPORTED_MODULE_6__["getRandomInt"])(500e6, 700e6),
- hackDifficulty:Object(_utils_HelperFunctions_js__WEBPACK_IMPORTED_MODULE_6__["getRandomInt"])(65, 75), serverGrowth:Object(_utils_HelperFunctions_js__WEBPACK_IMPORTED_MODULE_6__["getRandomInt"])(70, 90), numOpenPortsRequired:5
- });
- MicrodyneTechnologiesServer.messages.push("synthetic-muscles.lit");
- AddToAllServers(MicrodyneTechnologiesServer);
-
- var TaiYangDigitalServer = new Server({
- ip:Object(_utils_IPAddress_js__WEBPACK_IMPORTED_MODULE_7__["createRandomIp"])(), hostname:"taiyang-digital", organizationName:"Taiyang Digital",
- requiredHackingSkill:Object(_utils_HelperFunctions_js__WEBPACK_IMPORTED_MODULE_6__["getRandomInt"])(850, 950), moneyAvailable:Object(_utils_HelperFunctions_js__WEBPACK_IMPORTED_MODULE_6__["getRandomInt"])(800e6, 900e6),
- hackDifficulty:Object(_utils_HelperFunctions_js__WEBPACK_IMPORTED_MODULE_6__["getRandomInt"])(70, 80), serverGrowth:Object(_utils_HelperFunctions_js__WEBPACK_IMPORTED_MODULE_6__["getRandomInt"])(70, 80), numOpenPortsRequired:5
- });
- TaiYangDigitalServer.messages.push("A-Green-Tomorrow.lit");
- TaiYangDigitalServer.messages.push("brighter-than-the-sun.lit");
- AddToAllServers(TaiYangDigitalServer);
-
- var GalacticCyberSystemsServer = new Server({
- ip:Object(_utils_IPAddress_js__WEBPACK_IMPORTED_MODULE_7__["createRandomIp"])(), hostname:"galactic-cyber", organizationName:"Galactic Cybersystems",
- requiredHackingSkill:Object(_utils_HelperFunctions_js__WEBPACK_IMPORTED_MODULE_6__["getRandomInt"])(825, 875), moneyAvailable:Object(_utils_HelperFunctions_js__WEBPACK_IMPORTED_MODULE_6__["getRandomInt"])(750e6, 850e6),
- hackDifficulty:Object(_utils_HelperFunctions_js__WEBPACK_IMPORTED_MODULE_6__["getRandomInt"])(55, 65), serverGrowth:Object(_utils_HelperFunctions_js__WEBPACK_IMPORTED_MODULE_6__["getRandomInt"])(70, 90), numOpenPortsRequired:5
- });
- AddToAllServers(GalacticCyberSystemsServer);
-
- //Defense Companies ("Large" Companies)
- var AeroCorpServer = new Server({
- ip:Object(_utils_IPAddress_js__WEBPACK_IMPORTED_MODULE_7__["createRandomIp"])(), hostname:"aerocorp", organizationName:"AeroCorp",
- requiredHackingSkill:Object(_utils_HelperFunctions_js__WEBPACK_IMPORTED_MODULE_6__["getRandomInt"])(850, 925), moneyAvailable:Object(_utils_HelperFunctions_js__WEBPACK_IMPORTED_MODULE_6__["getRandomInt"])(1e9, 1.2e9),
- hackDifficulty:Object(_utils_HelperFunctions_js__WEBPACK_IMPORTED_MODULE_6__["getRandomInt"])(80, 90), serverGrowth:Object(_utils_HelperFunctions_js__WEBPACK_IMPORTED_MODULE_6__["getRandomInt"])(55, 65), numOpenPortsRequired:5
- });
- AeroCorpServer.messages.push("man-and-machine.lit");
- AddToAllServers(AeroCorpServer);
-
- var OmniaCybersystemsServer = new Server({
- ip:Object(_utils_IPAddress_js__WEBPACK_IMPORTED_MODULE_7__["createRandomIp"])(), hostname:"omnia", organizationName:"Omnia Cybersystems", maxRam:64,
- requiredHackingSkill:Object(_utils_HelperFunctions_js__WEBPACK_IMPORTED_MODULE_6__["getRandomInt"])(850, 950), moneyAvailable:Object(_utils_HelperFunctions_js__WEBPACK_IMPORTED_MODULE_6__["getRandomInt"])(900e6, 1e9),
- hackDifficulty:Object(_utils_HelperFunctions_js__WEBPACK_IMPORTED_MODULE_6__["getRandomInt"])(85, 95), serverGrowth:Object(_utils_HelperFunctions_js__WEBPACK_IMPORTED_MODULE_6__["getRandomInt"])(60, 70), numOpenPortsRequired:5
- });
- OmniaCybersystemsServer.messages.push("history-of-synthoids.lit");
- AddToAllServers(OmniaCybersystemsServer);
-
- var ZBDefenseServer = new Server({
- ip:Object(_utils_IPAddress_js__WEBPACK_IMPORTED_MODULE_7__["createRandomIp"])(), hostname:"zb-def", organizationName:"ZB Defense Industries",
- requiredHackingSkill:Object(_utils_HelperFunctions_js__WEBPACK_IMPORTED_MODULE_6__["getRandomInt"])(775, 825), moneyAvailable:Object(_utils_HelperFunctions_js__WEBPACK_IMPORTED_MODULE_6__["getRandomInt"])(900e6, 1.1e9),
- hackDifficulty:Object(_utils_HelperFunctions_js__WEBPACK_IMPORTED_MODULE_6__["getRandomInt"])(55, 65), serverGrowth:Object(_utils_HelperFunctions_js__WEBPACK_IMPORTED_MODULE_6__["getRandomInt"])(65, 75), numOpenPortsRequired:4
- });
- ZBDefenseServer.messages.push("synthetic-muscles.lit");
- AddToAllServers(ZBDefenseServer);
-
- var AppliedEnergeticsServer = new Server({
- ip:Object(_utils_IPAddress_js__WEBPACK_IMPORTED_MODULE_7__["createRandomIp"])(), hostname:"applied-energetics", organizationName:"Applied Energetics",
- requiredHackingSkill:Object(_utils_HelperFunctions_js__WEBPACK_IMPORTED_MODULE_6__["getRandomInt"])(775, 850), moneyAvailable:Object(_utils_HelperFunctions_js__WEBPACK_IMPORTED_MODULE_6__["getRandomInt"])(700e6, 1e9),
- hackDifficulty:Object(_utils_HelperFunctions_js__WEBPACK_IMPORTED_MODULE_6__["getRandomInt"])(60, 80), serverGrowth:Object(_utils_HelperFunctions_js__WEBPACK_IMPORTED_MODULE_6__["getRandomInt"])(70, 75), numOpenPortsRequired:4
- });
- AddToAllServers(AppliedEnergeticsServer);
-
- var SolarisSpaceSystemsServer = new Server({
- ip:Object(_utils_IPAddress_js__WEBPACK_IMPORTED_MODULE_7__["createRandomIp"])(), hostname:"solaris", organizationName:"Solaris Space Systems", maxRam:64,
- requiredHackingSkill:Object(_utils_HelperFunctions_js__WEBPACK_IMPORTED_MODULE_6__["getRandomInt"])(750, 850), moneyAvailable:Object(_utils_HelperFunctions_js__WEBPACK_IMPORTED_MODULE_6__["getRandomInt"])(700e6, 900e6),
- hackDifficulty:Object(_utils_HelperFunctions_js__WEBPACK_IMPORTED_MODULE_6__["getRandomInt"])(70, 80), serverGrowth:Object(_utils_HelperFunctions_js__WEBPACK_IMPORTED_MODULE_6__["getRandomInt"])(70, 80), numOpenPortsRequired:5
- });
- SolarisSpaceSystemsServer.messages.push("A-Green-Tomorrow.lit");
- SolarisSpaceSystemsServer.messages.push("the-failed-frontier.lit");
- AddToAllServers(SolarisSpaceSystemsServer);
-
- var DeltaOneServer = new Server({
- ip:Object(_utils_IPAddress_js__WEBPACK_IMPORTED_MODULE_7__["createRandomIp"])(), hostname:"deltaone", organizationName:"Delta One",
- requiredHackingSkill:Object(_utils_HelperFunctions_js__WEBPACK_IMPORTED_MODULE_6__["getRandomInt"])(800, 900), moneyAvailable:Object(_utils_HelperFunctions_js__WEBPACK_IMPORTED_MODULE_6__["getRandomInt"])(1.3e9, 1.7e9),
- hackDifficulty:Object(_utils_HelperFunctions_js__WEBPACK_IMPORTED_MODULE_6__["getRandomInt"])(75, 85), serverGrowth:Object(_utils_HelperFunctions_js__WEBPACK_IMPORTED_MODULE_6__["getRandomInt"])(50, 70), numOpenPortsRequired:5
- });
- AddToAllServers(DeltaOneServer);
-
- //Health, medicine, pharmaceutical companies ("Large" targets)
- var GlobalPharmaceuticalsServer = new Server({
- ip:Object(_utils_IPAddress_js__WEBPACK_IMPORTED_MODULE_7__["createRandomIp"])(), hostname:"global-pharm", organizationName:"Global Pharmaceuticals", maxRam:32,
- requiredHackingSkill:Object(_utils_HelperFunctions_js__WEBPACK_IMPORTED_MODULE_6__["getRandomInt"])(750, 850), moneyAvailable:Object(_utils_HelperFunctions_js__WEBPACK_IMPORTED_MODULE_6__["getRandomInt"])(1.5e9, 1.75e9),
- hackDifficulty:Object(_utils_HelperFunctions_js__WEBPACK_IMPORTED_MODULE_6__["getRandomInt"])(75, 85), serverGrowth:Object(_utils_HelperFunctions_js__WEBPACK_IMPORTED_MODULE_6__["getRandomInt"])(80, 90), numOpenPortsRequired:4
- });
- GlobalPharmaceuticalsServer.messages.push("A-Green-Tomorrow.lit");
- AddToAllServers(GlobalPharmaceuticalsServer);
-
- var NovaMedicalServer = new Server({
- ip:Object(_utils_IPAddress_js__WEBPACK_IMPORTED_MODULE_7__["createRandomIp"])(), hostname:"nova-med", organizationName:"Nova Medical",
- requiredHackingSkill:Object(_utils_HelperFunctions_js__WEBPACK_IMPORTED_MODULE_6__["getRandomInt"])(775, 850), moneyAvailable:Object(_utils_HelperFunctions_js__WEBPACK_IMPORTED_MODULE_6__["getRandomInt"])(1.1e9, 1.25e9),
- hackDifficulty:Object(_utils_HelperFunctions_js__WEBPACK_IMPORTED_MODULE_6__["getRandomInt"])(60, 80), serverGrowth:Object(_utils_HelperFunctions_js__WEBPACK_IMPORTED_MODULE_6__["getRandomInt"])(65, 85), numOpenPortsRequired:4
- });
- AddToAllServers(NovaMedicalServer);
-
- var ZeusMedicalServer = new Server({
- ip:Object(_utils_IPAddress_js__WEBPACK_IMPORTED_MODULE_7__["createRandomIp"])(), hostname:"zeus-med", organizationName:"Zeus Medical",
- requiredHackingSkill:Object(_utils_HelperFunctions_js__WEBPACK_IMPORTED_MODULE_6__["getRandomInt"])(800, 850), moneyAvailable:Object(_utils_HelperFunctions_js__WEBPACK_IMPORTED_MODULE_6__["getRandomInt"])(1.3e9, 1.5e9),
- hackDifficulty:Object(_utils_HelperFunctions_js__WEBPACK_IMPORTED_MODULE_6__["getRandomInt"])(70, 90), serverGrowth:Object(_utils_HelperFunctions_js__WEBPACK_IMPORTED_MODULE_6__["getRandomInt"])(70, 80), numOpenPortsRequired:5
- });
- AddToAllServers(ZeusMedicalServer);
-
- var UnitaLifeGroupServer = new Server({
- ip:Object(_utils_IPAddress_js__WEBPACK_IMPORTED_MODULE_7__["createRandomIp"])(), hostname:"unitalife", organizationName:"UnitaLife Group", maxRam:32,
- requiredHackingSkill:Object(_utils_HelperFunctions_js__WEBPACK_IMPORTED_MODULE_6__["getRandomInt"])(775, 825), moneyAvailable:Object(_utils_HelperFunctions_js__WEBPACK_IMPORTED_MODULE_6__["getRandomInt"])(1e9, 1.1e9),
- hackDifficulty:Object(_utils_HelperFunctions_js__WEBPACK_IMPORTED_MODULE_6__["getRandomInt"])(70, 80), serverGrowth:Object(_utils_HelperFunctions_js__WEBPACK_IMPORTED_MODULE_6__["getRandomInt"])(70, 80), numOpenPortsRequired:4
- });
- AddToAllServers(UnitaLifeGroupServer);
-
- //"Medium level" targets
- var LexoCorpServer = new Server({
- ip:Object(_utils_IPAddress_js__WEBPACK_IMPORTED_MODULE_7__["createRandomIp"])(), hostname:"lexo-corp", organizationName:"Lexo Corporation", maxRam:32,
- requiredHackingSkill:Object(_utils_HelperFunctions_js__WEBPACK_IMPORTED_MODULE_6__["getRandomInt"])(650, 750), moneyAvailable:Object(_utils_HelperFunctions_js__WEBPACK_IMPORTED_MODULE_6__["getRandomInt"])(700e6, 800e6),
- hackDifficulty:Object(_utils_HelperFunctions_js__WEBPACK_IMPORTED_MODULE_6__["getRandomInt"])(60, 80), serverGrowth:Object(_utils_HelperFunctions_js__WEBPACK_IMPORTED_MODULE_6__["getRandomInt"])(55, 65), numOpenPortsRequired:4
- });
- AddToAllServers(LexoCorpServer);
-
- var RhoConstructionServer = new Server({
- ip:Object(_utils_IPAddress_js__WEBPACK_IMPORTED_MODULE_7__["createRandomIp"])(), hostname:"rho-construction", organizationName:"Rho Construction",
- requiredHackingSkill:Object(_utils_HelperFunctions_js__WEBPACK_IMPORTED_MODULE_6__["getRandomInt"])(475, 525), moneyAvailable:Object(_utils_HelperFunctions_js__WEBPACK_IMPORTED_MODULE_6__["getRandomInt"])(500e6, 700e6),
- hackDifficulty:Object(_utils_HelperFunctions_js__WEBPACK_IMPORTED_MODULE_6__["getRandomInt"])(40, 60), serverGrowth:Object(_utils_HelperFunctions_js__WEBPACK_IMPORTED_MODULE_6__["getRandomInt"])(40, 60), numOpenPortsRequired:3
- });
- AddToAllServers(RhoConstructionServer);
-
- var AlphaEnterprisesServer = new Server({
- ip:Object(_utils_IPAddress_js__WEBPACK_IMPORTED_MODULE_7__["createRandomIp"])(), hostname:"alpha-ent", organizationName:"Alpha Enterprises", maxRam:32,
- requiredHackingSkill:Object(_utils_HelperFunctions_js__WEBPACK_IMPORTED_MODULE_6__["getRandomInt"])(500, 600), moneyAvailable:Object(_utils_HelperFunctions_js__WEBPACK_IMPORTED_MODULE_6__["getRandomInt"])(600e6, 750e6),
- hackDifficulty:Object(_utils_HelperFunctions_js__WEBPACK_IMPORTED_MODULE_6__["getRandomInt"])(50, 70), serverGrowth:Object(_utils_HelperFunctions_js__WEBPACK_IMPORTED_MODULE_6__["getRandomInt"])(50, 60),numOpenPortsRequired:4
- });
- AlphaEnterprisesServer.messages.push("sector-12-crime.lit");
- AddToAllServers(AlphaEnterprisesServer);
-
- var AevumPoliceServer = new Server({
- ip:Object(_utils_IPAddress_js__WEBPACK_IMPORTED_MODULE_7__["createRandomIp"])(), hostname:"aevum-police", organizationName:"Aevum Police Network", maxRam:32,
- requiredHackingSkill:Object(_utils_HelperFunctions_js__WEBPACK_IMPORTED_MODULE_6__["getRandomInt"])(400, 450), moneyAvailable:Object(_utils_HelperFunctions_js__WEBPACK_IMPORTED_MODULE_6__["getRandomInt"])(200e6, 400e6),
- hackDifficulty:Object(_utils_HelperFunctions_js__WEBPACK_IMPORTED_MODULE_6__["getRandomInt"])(70, 80), serverGrowth:Object(_utils_HelperFunctions_js__WEBPACK_IMPORTED_MODULE_6__["getRandomInt"])(30, 50), numOpenPortsRequired:4
- });
- AddToAllServers(AevumPoliceServer);
-
- var RothmanUniversityServer = new Server({
- ip:Object(_utils_IPAddress_js__WEBPACK_IMPORTED_MODULE_7__["createRandomIp"])(), hostname:"rothman-uni", organizationName:"Rothman University Network", maxRam:64,
- requiredHackingSkill:Object(_utils_HelperFunctions_js__WEBPACK_IMPORTED_MODULE_6__["getRandomInt"])(370, 430), moneyAvailable:Object(_utils_HelperFunctions_js__WEBPACK_IMPORTED_MODULE_6__["getRandomInt"])(175e6, 250e6),
- hackDifficulty:Object(_utils_HelperFunctions_js__WEBPACK_IMPORTED_MODULE_6__["getRandomInt"])(45, 55), serverGrowth:Object(_utils_HelperFunctions_js__WEBPACK_IMPORTED_MODULE_6__["getRandomInt"])(35, 45), numOpenPortsRequired:3
- });
- RothmanUniversityServer.messages.push("secret-societies.lit");
- RothmanUniversityServer.messages.push("the-failed-frontier.lit");
- RothmanUniversityServer.messages.push("tensions-in-tech-race.lit");
- AddToAllServers(RothmanUniversityServer);
-
- var ZBInstituteOfTechnologyServer = new Server({
- ip:Object(_utils_IPAddress_js__WEBPACK_IMPORTED_MODULE_7__["createRandomIp"])(), hostname:"zb-institute", organizationName:"ZB Institute of Technology Network", maxRam:64,
- requiredHackingSkill:Object(_utils_HelperFunctions_js__WEBPACK_IMPORTED_MODULE_6__["getRandomInt"])(725, 775), moneyAvailable:Object(_utils_HelperFunctions_js__WEBPACK_IMPORTED_MODULE_6__["getRandomInt"])(800e6, 1.1e9),
- hackDifficulty:Object(_utils_HelperFunctions_js__WEBPACK_IMPORTED_MODULE_6__["getRandomInt"])(65, 85), serverGrowth:Object(_utils_HelperFunctions_js__WEBPACK_IMPORTED_MODULE_6__["getRandomInt"])(75, 85), numOpenPortsRequired:5
- });
- AddToAllServers(ZBInstituteOfTechnologyServer);
-
- var SummitUniversityServer = new Server({
- ip:Object(_utils_IPAddress_js__WEBPACK_IMPORTED_MODULE_7__["createRandomIp"])(), hostname:"summit-uni", organizationName:"Summit University Network", maxRam:32,
- requiredHackingSkill:Object(_utils_HelperFunctions_js__WEBPACK_IMPORTED_MODULE_6__["getRandomInt"])(425, 475), moneyAvailable:Object(_utils_HelperFunctions_js__WEBPACK_IMPORTED_MODULE_6__["getRandomInt"])(200e6, 350e6),
- hackDifficulty:Object(_utils_HelperFunctions_js__WEBPACK_IMPORTED_MODULE_6__["getRandomInt"])(45, 65), serverGrowth:Object(_utils_HelperFunctions_js__WEBPACK_IMPORTED_MODULE_6__["getRandomInt"])(40, 60), numOpenPortsRequired:3
- });
- SummitUniversityServer.messages.push("secret-societies.lit");
- SummitUniversityServer.messages.push("the-failed-frontier.lit");
- SummitUniversityServer.messages.push("synthetic-muscles.lit");
- AddToAllServers(SummitUniversityServer);
-
- var SysCoreSecuritiesServer = new Server({
- ip:Object(_utils_IPAddress_js__WEBPACK_IMPORTED_MODULE_7__["createRandomIp"])(), hostname:"syscore", organizationName:"SysCore Securities",
- requiredHackingSkill:Object(_utils_HelperFunctions_js__WEBPACK_IMPORTED_MODULE_6__["getRandomInt"])(550, 650), moneyAvailable:Object(_utils_HelperFunctions_js__WEBPACK_IMPORTED_MODULE_6__["getRandomInt"])(400e6, 600e6),
- hackDifficulty:Object(_utils_HelperFunctions_js__WEBPACK_IMPORTED_MODULE_6__["getRandomInt"])(60, 80), serverGrowth:Object(_utils_HelperFunctions_js__WEBPACK_IMPORTED_MODULE_6__["getRandomInt"])(60, 70), numOpenPortsRequired:4
- });
- AddToAllServers(SysCoreSecuritiesServer);
-
- var CatalystVenturesServer = new Server({
- ip:Object(_utils_IPAddress_js__WEBPACK_IMPORTED_MODULE_7__["createRandomIp"])(), hostname:"catalyst", organizationName:"Catalyst Ventures",
- requiredHackingSkill:Object(_utils_HelperFunctions_js__WEBPACK_IMPORTED_MODULE_6__["getRandomInt"])(400, 450), moneyAvailable:Object(_utils_HelperFunctions_js__WEBPACK_IMPORTED_MODULE_6__["getRandomInt"])(300e6, 550e6),
- hackDifficulty:Object(_utils_HelperFunctions_js__WEBPACK_IMPORTED_MODULE_6__["getRandomInt"])(60, 70), serverGrowth:Object(_utils_HelperFunctions_js__WEBPACK_IMPORTED_MODULE_6__["getRandomInt"])(25, 55), numOpenPortsRequired:3,
- });
- CatalystVenturesServer.messages.push("tensions-in-tech-race.lit");
- AddToAllServers(CatalystVenturesServer);
-
- var TheHubServer = new Server({
- ip:Object(_utils_IPAddress_js__WEBPACK_IMPORTED_MODULE_7__["createRandomIp"])(), hostname:"the-hub", organizationName:"The Hub",
- requiredHackingSkill:Object(_utils_HelperFunctions_js__WEBPACK_IMPORTED_MODULE_6__["getRandomInt"])(275, 325), moneyAvailable:Object(_utils_HelperFunctions_js__WEBPACK_IMPORTED_MODULE_6__["getRandomInt"])(150e6, 200e6),
- hackDifficulty:Object(_utils_HelperFunctions_js__WEBPACK_IMPORTED_MODULE_6__["getRandomInt"])(35, 45), serverGrowth:Object(_utils_HelperFunctions_js__WEBPACK_IMPORTED_MODULE_6__["getRandomInt"])(45, 55), numOpenPortsRequired:2
- });
- AddToAllServers(TheHubServer);
-
- var CompuTekServer = new Server({
- ip:Object(_utils_IPAddress_js__WEBPACK_IMPORTED_MODULE_7__["createRandomIp"])(), hostname:"comptek", organizationName:"CompuTek",
- requiredHackingSkill:Object(_utils_HelperFunctions_js__WEBPACK_IMPORTED_MODULE_6__["getRandomInt"])(300, 400), moneyAvailable:Object(_utils_HelperFunctions_js__WEBPACK_IMPORTED_MODULE_6__["getRandomInt"])(220e6, 250e6),
- hackDifficulty:Object(_utils_HelperFunctions_js__WEBPACK_IMPORTED_MODULE_6__["getRandomInt"])(55, 65), serverGrowth:Object(_utils_HelperFunctions_js__WEBPACK_IMPORTED_MODULE_6__["getRandomInt"])(45, 65), numOpenPortsRequired:3
- });
- CompuTekServer.messages.push("man-and-machine.lit");
- AddToAllServers(CompuTekServer);
-
- var NetLinkTechnologiesServer = new Server({
- ip:Object(_utils_IPAddress_js__WEBPACK_IMPORTED_MODULE_7__["createRandomIp"])(), hostname:"netlink", organizationName:"NetLink Technologies", maxRam:64,
- requiredHackingSkill:Object(_utils_HelperFunctions_js__WEBPACK_IMPORTED_MODULE_6__["getRandomInt"])(375, 425), moneyAvailable:275e6,
- hackDifficulty:Object(_utils_HelperFunctions_js__WEBPACK_IMPORTED_MODULE_6__["getRandomInt"])(60, 80), serverGrowth:Object(_utils_HelperFunctions_js__WEBPACK_IMPORTED_MODULE_6__["getRandomInt"])(45, 75), numOpenPortsRequired:3
- });
- NetLinkTechnologiesServer.messages.push("simulated-reality.lit");
- AddToAllServers(NetLinkTechnologiesServer);
-
- var JohnsonOrthopedicsServer = new Server({
- ip:Object(_utils_IPAddress_js__WEBPACK_IMPORTED_MODULE_7__["createRandomIp"])(), hostname:"johnson-ortho", organizationName:"Johnson Orthopedics",
- requiredHackingSkill:Object(_utils_HelperFunctions_js__WEBPACK_IMPORTED_MODULE_6__["getRandomInt"])(250, 300), moneyAvailable:Object(_utils_HelperFunctions_js__WEBPACK_IMPORTED_MODULE_6__["getRandomInt"])(70e6, 85e6),
- hackDifficulty:Object(_utils_HelperFunctions_js__WEBPACK_IMPORTED_MODULE_6__["getRandomInt"])(35, 65), serverGrowth:Object(_utils_HelperFunctions_js__WEBPACK_IMPORTED_MODULE_6__["getRandomInt"])(35, 65), numOpenPortsRequired:2
- });
- AddToAllServers(JohnsonOrthopedicsServer);
-
- //"Low level" targets
- var FoodNStuffServer = new Server({
- ip:Object(_utils_IPAddress_js__WEBPACK_IMPORTED_MODULE_7__["createRandomIp"])(), hostname:"foodnstuff", organizationName:"Food N Stuff Supermarket", maxRam:16,
- requiredHackingSkill:1, moneyAvailable:2e6,
- hackDifficulty:10, serverGrowth:5, numOpenPortsRequired:0
- });
- FoodNStuffServer.messages.push("sector-12-crime.lit");
- AddToAllServers(FoodNStuffServer);
-
- var SigmaCosmeticsServer = new Server({
- ip:Object(_utils_IPAddress_js__WEBPACK_IMPORTED_MODULE_7__["createRandomIp"])(), hostname:"sigma-cosmetics", organizationName:"Sigma Cosmetics", maxRam:16,
- requiredHackingSkill:5, moneyAvailable:2.3e6,
- hackDifficulty:10, serverGrowth:10, numOpenPortsRequired:0
- });
- AddToAllServers(SigmaCosmeticsServer);
-
- var JoesGunsServer = new Server({
- ip:Object(_utils_IPAddress_js__WEBPACK_IMPORTED_MODULE_7__["createRandomIp"])(), hostname:"joesguns", organizationName:"Joe's Guns", maxRam:16,
- requiredHackingSkill:10, moneyAvailable:2.5e6,
- hackDifficulty:15, serverGrowth:20, numOpenPortsRequired:0
- });
- AddToAllServers(JoesGunsServer);
-
- var Zer0NightclubServer = new Server({
- ip:Object(_utils_IPAddress_js__WEBPACK_IMPORTED_MODULE_7__["createRandomIp"])(), hostname:"zer0", organizationName:"ZER0 Nightclub", maxRam:32,
- requiredHackingSkill:75, moneyAvailable:7.5e6,
- hackDifficulty:25, serverGrowth:40, numOpenPortsRequired:1
- });
- AddToAllServers(Zer0NightclubServer);
-
- var NectarNightclubServer = new Server({
- ip:Object(_utils_IPAddress_js__WEBPACK_IMPORTED_MODULE_7__["createRandomIp"])(), hostname:"nectar-net", organizationName:"Nectar Nightclub Network", maxRam:16,
- requiredHackingSkill:20, moneyAvailable:2.75e6,
- hackDifficulty:20, serverGrowth:25, numOpenPortsRequired:0
- });
- AddToAllServers(NectarNightclubServer);
-
- var NeoNightclubServer = new Server({
- ip:Object(_utils_IPAddress_js__WEBPACK_IMPORTED_MODULE_7__["createRandomIp"])(), hostname:"neo-net", organizationName:"Neo Nightclub Network", maxRam:32,
- requiredHackingSkill:50, moneyAvailable:5e6,
- hackDifficulty:25, serverGrowth:25, numOpenPortsRequired:1
- });
- NeoNightclubServer.messages.push("the-hidden-world.lit");
- AddToAllServers(NeoNightclubServer);
-
- var SilverHelixServer = new Server({
- ip:Object(_utils_IPAddress_js__WEBPACK_IMPORTED_MODULE_7__["createRandomIp"])(), hostname:"silver-helix", organizationName:"Silver Helix", maxRam:64,
- requiredHackingSkill:150, moneyAvailable:45e6,
- hackDifficulty:30, serverGrowth:30, numOpenPortsRequired:2
- });
- SilverHelixServer.messages.push("new-triads.lit");
- AddToAllServers(SilverHelixServer);
-
- var HongFangTeaHouseServer = new Server({
- ip:Object(_utils_IPAddress_js__WEBPACK_IMPORTED_MODULE_7__["createRandomIp"])(), hostname:"hong-fang-tea", organizationName:"HongFang Teahouse", maxRam:16,
- requiredHackingSkill:30, moneyAvailable:3e6,
- hackDifficulty:15, serverGrowth:20, numOpenPortsRequired:0
- });
- HongFangTeaHouseServer.messages.push("brighter-than-the-sun.lit");
- AddToAllServers(HongFangTeaHouseServer);
-
- var HaraKiriSushiBarServer = new Server({
- ip:Object(_utils_IPAddress_js__WEBPACK_IMPORTED_MODULE_7__["createRandomIp"])(), hostname:"harakiri-sushi", organizationName:"HaraKiri Sushi Bar Network",maxRam:16,
- requiredHackingSkill:40, moneyAvailable:4e6,
- hackDifficulty:15, serverGrowth:40, numOpenPortsRequired:0
- });
- AddToAllServers(HaraKiriSushiBarServer);
-
- var PhantasyServer = new Server({
- ip:Object(_utils_IPAddress_js__WEBPACK_IMPORTED_MODULE_7__["createRandomIp"])(), hostname:"phantasy", organizationName:"Phantasy Club", maxRam:32,
- requiredHackingSkill:100, moneyAvailable:24e6,
- hackDifficulty:20, serverGrowth:35, numOpenPortsRequired:2
- });
- AddToAllServers(PhantasyServer);
-
- var MaxHardwareServer = new Server({
- ip:Object(_utils_IPAddress_js__WEBPACK_IMPORTED_MODULE_7__["createRandomIp"])(), hostname:"max-hardware", organizationName:"Max Hardware Store", maxRam:32,
- requiredHackingSkill:80, moneyAvailable:10e6,
- hackDifficulty:15, serverGrowth:30, numOpenPortsRequired:1,
- });
- AddToAllServers(MaxHardwareServer);
-
- var OmegaSoftwareServer = new Server({
- ip:Object(_utils_IPAddress_js__WEBPACK_IMPORTED_MODULE_7__["createRandomIp"])(), hostname:"omega-net", organizationName:"Omega Software", maxRam:32,
- requiredHackingSkill:Object(_utils_HelperFunctions_js__WEBPACK_IMPORTED_MODULE_6__["getRandomInt"])(180, 220), moneyAvailable:Object(_utils_HelperFunctions_js__WEBPACK_IMPORTED_MODULE_6__["getRandomInt"])(60e6, 70e6),
- hackDifficulty:Object(_utils_HelperFunctions_js__WEBPACK_IMPORTED_MODULE_6__["getRandomInt"])(25, 35), serverGrowth:Object(_utils_HelperFunctions_js__WEBPACK_IMPORTED_MODULE_6__["getRandomInt"])(30, 40), numOpenPortsRequired:2
- });
- OmegaSoftwareServer.messages.push("the-new-god.lit");
- AddToAllServers(OmegaSoftwareServer);
-
- //Gyms
- var CrushFitnessGymServer = new Server({
- ip:Object(_utils_IPAddress_js__WEBPACK_IMPORTED_MODULE_7__["createRandomIp"])(), hostname:"crush-fitness", organizationName:"Crush Fitness",
- requiredHackingSkill:Object(_utils_HelperFunctions_js__WEBPACK_IMPORTED_MODULE_6__["getRandomInt"])(225, 275), moneyAvailable:Object(_utils_HelperFunctions_js__WEBPACK_IMPORTED_MODULE_6__["getRandomInt"])(40e6, 60e6),
- hackDifficulty:Object(_utils_HelperFunctions_js__WEBPACK_IMPORTED_MODULE_6__["getRandomInt"])(35, 45), serverGrowth:Object(_utils_HelperFunctions_js__WEBPACK_IMPORTED_MODULE_6__["getRandomInt"])(27, 33), numOpenPortsRequired:2
- });
- AddToAllServers(CrushFitnessGymServer);
-
- var IronGymServer = new Server({
- ip:Object(_utils_IPAddress_js__WEBPACK_IMPORTED_MODULE_7__["createRandomIp"])(), hostname:"iron-gym", organizationName:"Iron Gym Network", maxRam:32,
- requiredHackingSkill:100, moneyAvailable:20e6,
- hackDifficulty:30, serverGrowth:20, numOpenPortsRequired:1
- });
- AddToAllServers(IronGymServer);
-
- var MilleniumFitnessGymServer = new Server({
- ip:Object(_utils_IPAddress_js__WEBPACK_IMPORTED_MODULE_7__["createRandomIp"])(), hostname:"millenium-fitness", organizationName:"Millenium Fitness Network",
- requiredHackingSkill:Object(_utils_HelperFunctions_js__WEBPACK_IMPORTED_MODULE_6__["getRandomInt"])(475, 525), moneyAvailable:250e6,
- hackDifficulty:Object(_utils_HelperFunctions_js__WEBPACK_IMPORTED_MODULE_6__["getRandomInt"])(45, 55), serverGrowth:Object(_utils_HelperFunctions_js__WEBPACK_IMPORTED_MODULE_6__["getRandomInt"])(25, 45), numOpenPortsRequired:3,
- });
- AddToAllServers(MilleniumFitnessGymServer);
-
- var PowerhouseGymServer = new Server({
- ip:Object(_utils_IPAddress_js__WEBPACK_IMPORTED_MODULE_7__["createRandomIp"])(), hostname:"powerhouse-fitness", organizationName:"Powerhouse Fitness",
- requiredHackingSkill:Object(_utils_HelperFunctions_js__WEBPACK_IMPORTED_MODULE_6__["getRandomInt"])(950, 1100), moneyAvailable:900e6,
- hackDifficulty:Object(_utils_HelperFunctions_js__WEBPACK_IMPORTED_MODULE_6__["getRandomInt"])(55, 65), serverGrowth:Object(_utils_HelperFunctions_js__WEBPACK_IMPORTED_MODULE_6__["getRandomInt"])(50, 60), numOpenPortsRequired:5,
- });
- AddToAllServers(PowerhouseGymServer);
-
- var SnapFitnessGymServer = new Server({
- ip:Object(_utils_IPAddress_js__WEBPACK_IMPORTED_MODULE_7__["createRandomIp"])(), hostname:"snap-fitness", organizationName:"Snap Fitness",
- requiredHackingSkill:Object(_utils_HelperFunctions_js__WEBPACK_IMPORTED_MODULE_6__["getRandomInt"])(675, 800), moneyAvailable:450e6,
- hackDifficulty:Object(_utils_HelperFunctions_js__WEBPACK_IMPORTED_MODULE_6__["getRandomInt"])(40, 60), serverGrowth:Object(_utils_HelperFunctions_js__WEBPACK_IMPORTED_MODULE_6__["getRandomInt"])(40, 60), numOpenPortsRequired:4
- });
- AddToAllServers(SnapFitnessGymServer);
-
- //Faction servers, cannot hack money from these
- var BitRunnersServer = new Server({
- ip:Object(_utils_IPAddress_js__WEBPACK_IMPORTED_MODULE_7__["createRandomIp"])(), hostname:"run4theh111z", organizationName:"The Runners", maxRam:128,
- requiredHackingSkill:Object(_utils_HelperFunctions_js__WEBPACK_IMPORTED_MODULE_6__["getRandomInt"])(505, 550), moneyAvailable:0,
- hackDifficulty:0, serverGrowth:0, numOpenPortsRequired:4
- });
- BitRunnersServer.messages.push("simulated-reality.lit");
- BitRunnersServer.messages.push("the-new-god.lit");
- AddToAllServers(BitRunnersServer);
- _SpecialServerIps_js__WEBPACK_IMPORTED_MODULE_5__["SpecialServerIps"].addIp(_SpecialServerIps_js__WEBPACK_IMPORTED_MODULE_5__["SpecialServerNames"].BitRunnersServer, BitRunnersServer.ip);
-
- var TheBlackHandServer = new Server({
- ip:Object(_utils_IPAddress_js__WEBPACK_IMPORTED_MODULE_7__["createRandomIp"])(), hostname:"I.I.I.I", organizationName:"I.I.I.I", maxRam:64,
- requiredHackingSkill:Object(_utils_HelperFunctions_js__WEBPACK_IMPORTED_MODULE_6__["getRandomInt"])(340, 365), moneyAvailable:0,
- hackDifficulty:0, serverGrowth:0, numOpenPortsRequired:3,
- });
- TheBlackHandServer.messages.push("democracy-is-dead.lit");
- AddToAllServers(TheBlackHandServer);
- _SpecialServerIps_js__WEBPACK_IMPORTED_MODULE_5__["SpecialServerIps"].addIp(_SpecialServerIps_js__WEBPACK_IMPORTED_MODULE_5__["SpecialServerNames"].TheBlackHandServer, TheBlackHandServer.ip);
-
- var NiteSecServer = new Server({
- ip:Object(_utils_IPAddress_js__WEBPACK_IMPORTED_MODULE_7__["createRandomIp"])(), hostname:"avmnite-02h", organizationName:"NiteSec", maxRam:32,
- requiredHackingSkill:Object(_utils_HelperFunctions_js__WEBPACK_IMPORTED_MODULE_6__["getRandomInt"])(202, 220), moneyAvailable:0,
- hackDifficulty:0, serverGrowth:0, numOpenPortsRequired:2
- });
- NiteSecServer.messages.push("democracy-is-dead.lit");
- AddToAllServers(NiteSecServer);
- _SpecialServerIps_js__WEBPACK_IMPORTED_MODULE_5__["SpecialServerIps"].addIp(_SpecialServerIps_js__WEBPACK_IMPORTED_MODULE_5__["SpecialServerNames"].NiteSecServer, NiteSecServer.ip);
-
- var DarkArmyServer = new Server({
- ip:Object(_utils_IPAddress_js__WEBPACK_IMPORTED_MODULE_7__["createRandomIp"])(), hostname:".", organizationName:".", maxRam:16,
- requiredHackingSkill:Object(_utils_HelperFunctions_js__WEBPACK_IMPORTED_MODULE_6__["getRandomInt"])(505, 550), moneyAvailable:0,
- hackDifficulty:0, serverGrowth:0, numOpenPortsRequired:4
- });
- AddToAllServers(DarkArmyServer);
- _SpecialServerIps_js__WEBPACK_IMPORTED_MODULE_5__["SpecialServerIps"].addIp(_SpecialServerIps_js__WEBPACK_IMPORTED_MODULE_5__["SpecialServerNames"].TheDarkArmyServer, DarkArmyServer.ip);
-
- var CyberSecServer = new Server({
- ip:Object(_utils_IPAddress_js__WEBPACK_IMPORTED_MODULE_7__["createRandomIp"])(), hostname:"CSEC", organizationName:"CyberSec", maxRam:8,
- requiredHackingSkill:Object(_utils_HelperFunctions_js__WEBPACK_IMPORTED_MODULE_6__["getRandomInt"])(51, 60), moneyAvailable:0,
- hackDifficulty:0, serverGrowth:0, numOpenPortsRequired:1
- });
- CyberSecServer.messages.push("democracy-is-dead.lit");
- AddToAllServers(CyberSecServer);
- _SpecialServerIps_js__WEBPACK_IMPORTED_MODULE_5__["SpecialServerIps"].addIp(_SpecialServerIps_js__WEBPACK_IMPORTED_MODULE_5__["SpecialServerNames"].CyberSecServer, CyberSecServer.ip);
-
- var DaedalusServer = new Server({
- ip:Object(_utils_IPAddress_js__WEBPACK_IMPORTED_MODULE_7__["createRandomIp"])(), hostname:"The-Cave", organizationName:"Helios",
- requiredHackingSkill:925, moneyAvailable:0,
- hackDifficulty:0, serverGrowth:0, numOpenPortsRequired:5
- });
- DaedalusServer.messages.push("alpha-omega.lit");
- AddToAllServers(DaedalusServer);
- _SpecialServerIps_js__WEBPACK_IMPORTED_MODULE_5__["SpecialServerIps"].addIp(_SpecialServerIps_js__WEBPACK_IMPORTED_MODULE_5__["SpecialServerNames"].DaedalusServer, DaedalusServer.ip);
-
- //Super special Servers
- var WorldDaemon = new Server({
- ip:Object(_utils_IPAddress_js__WEBPACK_IMPORTED_MODULE_7__["createRandomIp"])(), hostname:_SpecialServerIps_js__WEBPACK_IMPORTED_MODULE_5__["SpecialServerNames"].WorldDaemon, organizationName:_SpecialServerIps_js__WEBPACK_IMPORTED_MODULE_5__["SpecialServerNames"].WorldDaemon,
- requiredHackingSkill:3000, moneyAvailable:0,
- hackDifficulty:0, serverGrowth:0, numOpenPortsRequired:5
- });
- AddToAllServers(WorldDaemon);
- _SpecialServerIps_js__WEBPACK_IMPORTED_MODULE_5__["SpecialServerIps"].addIp(_SpecialServerIps_js__WEBPACK_IMPORTED_MODULE_5__["SpecialServerNames"].WorldDaemon, WorldDaemon.ip);
-
- /* Create a randomized network for all the foreign servers */
- //Groupings for creating a randomized network
- var NetworkGroup1 = [IronGymServer, FoodNStuffServer, SigmaCosmeticsServer, JoesGunsServer, HongFangTeaHouseServer, HaraKiriSushiBarServer];
- var NetworkGroup2 = [MaxHardwareServer, NectarNightclubServer, Zer0NightclubServer, CyberSecServer];
- var NetworkGroup3 = [OmegaSoftwareServer, PhantasyServer, SilverHelixServer, NeoNightclubServer];
- var NetworkGroup4 = [CrushFitnessGymServer, NetLinkTechnologiesServer, CompuTekServer, TheHubServer, JohnsonOrthopedicsServer, NiteSecServer];
- var NetworkGroup5 = [CatalystVenturesServer, SysCoreSecuritiesServer, SummitUniversityServer, ZBInstituteOfTechnologyServer, RothmanUniversityServer, TheBlackHandServer];
- var NetworkGroup6 = [LexoCorpServer, RhoConstructionServer, AlphaEnterprisesServer, AevumPoliceServer, MilleniumFitnessGymServer];
- var NetworkGroup7 = [GlobalPharmaceuticalsServer, AeroCorpServer, GalacticCyberSystemsServer, SnapFitnessGymServer];
- var NetworkGroup8 = [DeltaOneServer, UnitaLifeGroupServer, OmniaCybersystemsServer];
- var NetworkGroup9 = [ZeusMedicalServer, SolarisSpaceSystemsServer, UniversalEnergyServer, IcarusMicrosystemsServer, DefCommServer];
- var NetworkGroup10 = [NovaMedicalServer, ZBDefenseServer, TaiYangDigitalServer, InfoCommServer];
- var NetworkGroup11 = [AppliedEnergeticsServer, MicrodyneTechnologiesServer, TitanLabsServer, BitRunnersServer];
- var NetworkGroup12 = [VitaLifeServer, HeliosLabsServer, StormTechnologiesServer, FulcrumTechnologiesServer];
- var NetworkGroup13 = [KuaiGongInternationalServer, FourSigmaServer, OmniTekIncorporatedServer, DarkArmyServer];
- var NetworkGroup14 = [PowerhouseGymServer, ClarkeIncorporatedServer, NWOServer, BladeIndustriesServer, BachmanAndAssociatesServer];
- var NetworkGroup15 = [FulcrumSecretTechnologiesServer, MegaCorpServer, ECorpServer, DaedalusServer];
-
- for (var i = 0; i < NetworkGroup2.length; i++) {
- var randomServerFromPrevGroup = NetworkGroup1[Math.floor(Math.random() * NetworkGroup1.length)];
- NetworkGroup2[i].serversOnNetwork.push(randomServerFromPrevGroup.ip);
- randomServerFromPrevGroup.serversOnNetwork.push(NetworkGroup2[i].ip);
- }
-
- for (var i = 0; i < NetworkGroup3.length; i++) {
- var randomServerFromPrevGroup = NetworkGroup2[Math.floor(Math.random() * NetworkGroup2.length)];
- NetworkGroup3[i].serversOnNetwork.push(randomServerFromPrevGroup.ip);
- randomServerFromPrevGroup.serversOnNetwork.push(NetworkGroup3[i].ip);
- }
-
- for (var i = 0; i < NetworkGroup4.length; i++) {
- var randomServerFromPrevGroup = NetworkGroup3[Math.floor(Math.random() * NetworkGroup3.length)];
- NetworkGroup4[i].serversOnNetwork.push(randomServerFromPrevGroup.ip);
- randomServerFromPrevGroup.serversOnNetwork.push(NetworkGroup4[i].ip);
- }
-
- for (var i = 0; i < NetworkGroup5.length; i++) {
- var randomServerFromPrevGroup = NetworkGroup4[Math.floor(Math.random() * NetworkGroup4.length)];
- NetworkGroup5[i].serversOnNetwork.push(randomServerFromPrevGroup.ip);
- randomServerFromPrevGroup.serversOnNetwork.push(NetworkGroup5[i].ip);
- }
-
- for (var i = 0; i < NetworkGroup6.length; i++) {
- var randomServerFromPrevGroup = NetworkGroup5[Math.floor(Math.random() * NetworkGroup5.length)];
- NetworkGroup6[i].serversOnNetwork.push(randomServerFromPrevGroup.ip);
- randomServerFromPrevGroup.serversOnNetwork.push(NetworkGroup6[i].ip);
- }
-
- for (var i = 0; i < NetworkGroup7.length; i++) {
- var randomServerFromPrevGroup = NetworkGroup6[Math.floor(Math.random() * NetworkGroup6.length)];
- NetworkGroup7[i].serversOnNetwork.push(randomServerFromPrevGroup.ip);
- randomServerFromPrevGroup.serversOnNetwork.push(NetworkGroup7[i].ip);
- }
-
- for (var i = 0; i < NetworkGroup8.length; i++) {
- var randomServerFromPrevGroup = NetworkGroup7[Math.floor(Math.random() * NetworkGroup7.length)];
- NetworkGroup8[i].serversOnNetwork.push(randomServerFromPrevGroup.ip);
- randomServerFromPrevGroup.serversOnNetwork.push(NetworkGroup8[i].ip);
- }
-
- for (var i = 0; i < NetworkGroup9.length; i++) {
- var randomServerFromPrevGroup = NetworkGroup8[Math.floor(Math.random() * NetworkGroup8.length)];
- NetworkGroup9[i].serversOnNetwork.push(randomServerFromPrevGroup.ip);
- randomServerFromPrevGroup.serversOnNetwork.push(NetworkGroup9[i].ip);
- }
-
- for (var i = 0; i < NetworkGroup10.length; i++) {
- var randomServerFromPrevGroup = NetworkGroup9[Math.floor(Math.random() * NetworkGroup9.length)];
- NetworkGroup10[i].serversOnNetwork.push(randomServerFromPrevGroup.ip);
- randomServerFromPrevGroup.serversOnNetwork.push(NetworkGroup10[i].ip);
- }
-
- for (var i = 0; i < NetworkGroup11.length; i++) {
- var randomServerFromPrevGroup = NetworkGroup10[Math.floor(Math.random() * NetworkGroup10.length)];
- NetworkGroup11[i].serversOnNetwork.push(randomServerFromPrevGroup.ip);
- randomServerFromPrevGroup.serversOnNetwork.push(NetworkGroup11[i].ip);
- }
-
- for (var i = 0; i < NetworkGroup12.length; i++) {
- var randomServerFromPrevGroup = NetworkGroup11[Math.floor(Math.random() * NetworkGroup11.length)];
- NetworkGroup12[i].serversOnNetwork.push(randomServerFromPrevGroup.ip);
- randomServerFromPrevGroup.serversOnNetwork.push(NetworkGroup12[i].ip);
- }
-
- for (var i = 0; i < NetworkGroup13.length; i++) {
- var randomServerFromPrevGroup = NetworkGroup12[Math.floor(Math.random() * NetworkGroup12.length)];
- NetworkGroup13[i].serversOnNetwork.push(randomServerFromPrevGroup.ip);
- randomServerFromPrevGroup.serversOnNetwork.push(NetworkGroup13[i].ip);
- }
-
- for (var i = 0; i < NetworkGroup14.length; i++) {
- var randomServerFromPrevGroup = NetworkGroup13[Math.floor(Math.random() * NetworkGroup13.length)];
- NetworkGroup14[i].serversOnNetwork.push(randomServerFromPrevGroup.ip);
- randomServerFromPrevGroup.serversOnNetwork.push(NetworkGroup14[i].ip);
- }
-
- for (var i = 0; i < NetworkGroup15.length; i++) {
- var randomServerFromPrevGroup = NetworkGroup14[Math.floor(Math.random() * NetworkGroup14.length)];
- NetworkGroup15[i].serversOnNetwork.push(randomServerFromPrevGroup.ip);
- randomServerFromPrevGroup.serversOnNetwork.push(NetworkGroup15[i].ip);
- }
-
- //Connect the first tier of servers to the player's home computer
- for (var i = 0; i < NetworkGroup1.length; i++) {
- _Player_js__WEBPACK_IMPORTED_MODULE_3__["Player"].getHomeComputer().serversOnNetwork.push(NetworkGroup1[i].ip);
- NetworkGroup1[i].serversOnNetwork.push(_Player_js__WEBPACK_IMPORTED_MODULE_3__["Player"].homeComputer);
- }
-}
-
-//Applied server growth for a single server. Returns the percentage growth
-function processSingleServerGrowth(server, numCycles) {
- //Server growth processed once every 450 game cycles
- var numServerGrowthCycles = Math.max(Math.floor(numCycles / 450), 0);
-
- //Get adjusted growth rate, which accounts for server security
- var growthRate = _Constants_js__WEBPACK_IMPORTED_MODULE_1__["CONSTANTS"].ServerBaseGrowthRate;
- var adjGrowthRate = 1 + (growthRate - 1) / server.hackDifficulty;
- if (adjGrowthRate > _Constants_js__WEBPACK_IMPORTED_MODULE_1__["CONSTANTS"].ServerMaxGrowthRate) {adjGrowthRate = _Constants_js__WEBPACK_IMPORTED_MODULE_1__["CONSTANTS"].ServerMaxGrowthRate;}
-
- //Calculate adjusted server growth rate based on parameters
- var serverGrowthPercentage = server.serverGrowth / 100;
- var numServerGrowthCyclesAdjusted = numServerGrowthCycles * serverGrowthPercentage * _BitNode_js__WEBPACK_IMPORTED_MODULE_0__["BitNodeMultipliers"].ServerGrowthRate;
-
- //Apply serverGrowth for the calculated number of growth cycles
- var serverGrowth = Math.pow(adjGrowthRate, numServerGrowthCyclesAdjusted * _Player_js__WEBPACK_IMPORTED_MODULE_3__["Player"].hacking_grow_mult);
- if (serverGrowth < 1) {
- console.log("WARN: serverGrowth calculated to be less than 1");
- serverGrowth = 1;
- }
-
- var oldMoneyAvailable = server.moneyAvailable;
- server.moneyAvailable *= serverGrowth;
- if (server.moneyMax && isNaN(server.moneyAvailable)) {
- server.moneyAvailable = server.moneyMax;
- }
- if (server.moneyMax && server.moneyAvailable > server.moneyMax) {
- server.moneyAvailable = server.moneyMax;
- return server.moneyAvailable / oldMoneyAvailable;
- }
-
- //Growing increases server security twice as much as hacking
- server.fortify(2 * _Constants_js__WEBPACK_IMPORTED_MODULE_1__["CONSTANTS"].ServerFortifyAmount * numServerGrowthCycles);
- return serverGrowth;
-}
-
-function prestigeHomeComputer(homeComp) {
- homeComp.programs.length = 0; //Remove programs
- homeComp.runningScripts = [];
- homeComp.serversOnNetwork = [];
- homeComp.isConnectedTo = true;
- homeComp.ramUsed = 0;
- homeComp.programs.push(_CreateProgram_js__WEBPACK_IMPORTED_MODULE_2__["Programs"].NukeProgram);
-
- //Update RAM usage on all scripts
- homeComp.scripts.forEach(function(script) {
- script.updateRamUsage();
- });
-
- homeComp.messages.length = 0; //Remove .lit and .msg files
- homeComp.messages.push("hackers-starting-handbook.lit");
-}
-
-//List of all servers that exist in the game, indexed by their ip
-let AllServers = {};
-
-function prestigeAllServers() {
- for (var member in AllServers) {
- delete AllServers[member];
- }
- AllServers = {};
-}
-
-function loadAllServers(saveString) {
- AllServers = JSON.parse(saveString, _utils_JSONReviver_js__WEBPACK_IMPORTED_MODULE_8__["Reviver"]);
-}
-
-function SizeOfAllServers() {
- var size = 0, key;
- for (key in AllServers) {
- if (AllServers.hasOwnProperty(key)) size++;
- }
- return size;
-}
-
-//Add a server onto the map of all servers in the game
-function AddToAllServers(server) {
- var serverIp = server.ip;
- if (Object(_utils_IPAddress_js__WEBPACK_IMPORTED_MODULE_7__["ipExists"])(serverIp)) {
- console.log("IP of server that's being added: " + serverIp);
- console.log("Hostname of the server thats being added: " + server.hostname);
- console.log("The server that already has this IP is: " + AllServers[serverIp].hostname);
- throw new Error("Error: Trying to add a server with an existing IP");
- return;
- }
- AllServers[serverIp] = server;
-}
-
-//Returns server object with corresponding hostname
-// Relatively slow, would rather not use this a lot
-function GetServerByHostname(hostname) {
- for (var ip in AllServers) {
- if (AllServers.hasOwnProperty(ip)) {
- if (AllServers[ip].hostname == hostname) {
- return AllServers[ip];
- }
- }
- }
- return null;
-}
-
-//Get server by IP or hostname. Returns null if invalid
-function getServer(s) {
- if (!Object(_utils_IPAddress_js__WEBPACK_IMPORTED_MODULE_7__["isValidIPAddress"])(s)) {
- return GetServerByHostname(s);
- } else {
- return AllServers[s];
- }
-}
-
-//Debugging tool
-function PrintAllServers() {
- for (var ip in AllServers) {
- if (AllServers.hasOwnProperty(ip)) {
- console.log("Ip: " + ip + ", hostname: " + AllServers[ip].hostname);
- }
- }
-}
-
-// Directory object (folders)
-function Directory(server, parent, name) {
- this.s = server; //Ref to server
- this.p = parent; //Ref to parent directory
- this.c = []; //Subdirs
- this.n = name;
- this.d = parent.d + 1; //We'll only have a maximum depth of 3 or something
- this.scrs = []; //Holds references to the scripts in server.scripts
- this.pgms = [];
- this.msgs = [];
-}
-
-Directory.prototype.createSubdir = function(name) {
- var subdir = new Directory(this.s, this, name);
-
-}
-
-Directory.prototype.getPath = function(name) {
- var res = [];
- var i = this;
- while (i !== null) {
- res.unshift(i.n, "/");
- i = i.parent;
- }
- res.unshift("/");
- return res.join("");
-}
-
-
-
-
-/***/ }),
-/* 11 */
-/*!************************!*\
- !*** ./src/Faction.js ***!
- \************************/
-/***/ (function(module, __webpack_exports__, __webpack_require__) {
-
-"use strict";
-__webpack_require__.r(__webpack_exports__);
-/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "getNextNeurofluxLevel", function() { return getNextNeurofluxLevel; });
-/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "Factions", function() { return Factions; });
-/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "initFactions", function() { return initFactions; });
-/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "inviteToFaction", function() { return inviteToFaction; });
-/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "joinFaction", function() { return joinFaction; });
-/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "displayFactionContent", function() { return displayFactionContent; });
-/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "processPassiveFactionRepGain", function() { return processPassiveFactionRepGain; });
-/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "loadFactions", function() { return loadFactions; });
-/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "Faction", function() { return Faction; });
-/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "purchaseAugmentation", function() { return purchaseAugmentation; });
-/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "factionExists", function() { return factionExists; });
-/* harmony import */ var _Augmentations_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./Augmentations.js */ 19);
-/* harmony import */ var _BitNode_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./BitNode.js */ 15);
-/* harmony import */ var _Constants_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./Constants.js */ 3);
-/* harmony import */ var _engine_js__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./engine.js */ 5);
-/* harmony import */ var _FactionInfo_js__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ./FactionInfo.js */ 28);
-/* harmony import */ var _Location_js__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ./Location.js */ 4);
-/* harmony import */ var _Missions_js__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! ./Missions.js */ 34);
-/* harmony import */ var _Player_js__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! ./Player.js */ 0);
-/* harmony import */ var _Settings_js__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! ./Settings.js */ 23);
-/* harmony import */ var _utils_DialogBox_js__WEBPACK_IMPORTED_MODULE_9__ = __webpack_require__(/*! ../utils/DialogBox.js */ 7);
-/* harmony import */ var _utils_FactionInvitationBox_js__WEBPACK_IMPORTED_MODULE_10__ = __webpack_require__(/*! ../utils/FactionInvitationBox.js */ 116);
-/* harmony import */ var _utils_HelperFunctions_js__WEBPACK_IMPORTED_MODULE_11__ = __webpack_require__(/*! ../utils/HelperFunctions.js */ 1);
-/* harmony import */ var _utils_JSONReviver_js__WEBPACK_IMPORTED_MODULE_12__ = __webpack_require__(/*! ../utils/JSONReviver.js */ 8);
-/* harmony import */ var _utils_numeral_min_js__WEBPACK_IMPORTED_MODULE_13__ = __webpack_require__(/*! ../utils/numeral.min.js */ 13);
-/* harmony import */ var _utils_numeral_min_js__WEBPACK_IMPORTED_MODULE_13___default = /*#__PURE__*/__webpack_require__.n(_utils_numeral_min_js__WEBPACK_IMPORTED_MODULE_13__);
-/* harmony import */ var _utils_StringHelperFunctions_js__WEBPACK_IMPORTED_MODULE_14__ = __webpack_require__(/*! ../utils/StringHelperFunctions.js */ 2);
-/* harmony import */ var _utils_YesNoBox_js__WEBPACK_IMPORTED_MODULE_15__ = __webpack_require__(/*! ../utils/YesNoBox.js */ 12);
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-function Faction(name="") {
- this.name = name;
- this.augmentations = []; //Name of augmentation only
- this.info = ""; //Introductory/informational text about the faction
-
- //Player-related properties for faction
- this.isMember = false; //Whether player is member
- this.isBanned = false; //Whether or not player is banned from joining this faction
- this.playerReputation = 0; //"Reputation" within faction
- this.alreadyInvited = false;
-
- //Multipliers for unlocking and purchasing augmentations
- this.augmentationPriceMult = 1;
- this.augmentationRepRequirementMult = 1;
-
- //Faction favor
- this.favor = 0;
- this.rolloverRep = 0;
-};
-
-Faction.prototype.setAugmentationMultipliers = function(price, rep) {
- this.augmentationPriceMult = price;
- this.augmentationRepRequirementMult = rep;
-}
-
-Faction.prototype.setInfo = function(inf) {
- this.info = inf;
-}
-
-Faction.prototype.gainFavor = function() {
- if (this.favor == null || this.favor == undefined) {this.favor = 0;}
- if (this.rolloverRep == null || this.rolloverRep == undefined) {this.rolloverRep = 0;}
- var res = this.getFavorGain();
- if (res.length != 2) {
- console.log("Error: invalid result from getFavorGain() function");
- return;
- }
- this.favor += res[0];
- this.rolloverRep = res[1];
-}
-
-//Returns an array with [How much favor would be gained, how much favor would be left over]
-Faction.prototype.getFavorGain = function() {
- if (this.favor == null || this.favor == undefined) {this.favor = 0;}
- if (this.rolloverRep == null || this.rolloverRep == undefined) {this.rolloverRep = 0;}
- var favorGain = 0, rep = this.playerReputation + this.rolloverRep;
- var reqdRep = _Constants_js__WEBPACK_IMPORTED_MODULE_2__["CONSTANTS"].FactionReputationToFavorBase *
- Math.pow(_Constants_js__WEBPACK_IMPORTED_MODULE_2__["CONSTANTS"].FactionReputationToFavorMult, this.favor);
- while(rep > 0) {
- if (rep >= reqdRep) {
- ++favorGain;
- rep -= reqdRep;
- } else {
- break;
- }
- reqdRep *= _Constants_js__WEBPACK_IMPORTED_MODULE_2__["CONSTANTS"].FactionReputationToFavorMult;
- }
- return [favorGain, rep];
-}
-
-//Adds all Augmentations to this faction.
-Faction.prototype.addAllAugmentations = function() {
- this.augmentations.length = 0;
- for (var name in _Augmentations_js__WEBPACK_IMPORTED_MODULE_0__["Augmentations"]) {
- if (_Augmentations_js__WEBPACK_IMPORTED_MODULE_0__["Augmentations"].hasOwnProperty(name)) {
- this.augmentations.push(name);
- }
- }
-}
-
-Faction.prototype.toJSON = function() {
- return Object(_utils_JSONReviver_js__WEBPACK_IMPORTED_MODULE_12__["Generic_toJSON"])("Faction", this);
-}
-
-Faction.fromJSON = function(value) {
- return Object(_utils_JSONReviver_js__WEBPACK_IMPORTED_MODULE_12__["Generic_fromJSON"])(Faction, value.data);
-}
-
-_utils_JSONReviver_js__WEBPACK_IMPORTED_MODULE_12__["Reviver"].constructors.Faction = Faction;
-
-//Map of factions indexed by faction name
-let Factions = {}
-
-function loadFactions(saveString) {
- Factions = JSON.parse(saveString, _utils_JSONReviver_js__WEBPACK_IMPORTED_MODULE_12__["Reviver"]);
-}
-
-function AddToFactions(faction) {
- var name = faction.name;
- Factions[name] = faction;
-}
-
-function factionExists(name) {
- return Factions.hasOwnProperty(name);
-}
-
-//TODO Augmentation price and rep requirement mult are 1 for everything right now,
-// This might change in the future for balance
-function initFactions() {
- //Endgame
- var Illuminati = new Faction("Illuminati");
- Illuminati.setInfo(_FactionInfo_js__WEBPACK_IMPORTED_MODULE_4__["FactionInfo"].IlluminatiInfo);
- resetFaction(Illuminati);
-
- var Daedalus = new Faction("Daedalus");
- Daedalus.setInfo(_FactionInfo_js__WEBPACK_IMPORTED_MODULE_4__["FactionInfo"].DaedalusInfo);
- resetFaction(Daedalus);
-
- var Covenant = new Faction("The Covenant");
- Covenant.setInfo(_FactionInfo_js__WEBPACK_IMPORTED_MODULE_4__["FactionInfo"].CovenantInfo);
- resetFaction(Covenant);
-
- //Megacorporations, each forms its own faction
- var ECorp = new Faction("ECorp");
- ECorp.setInfo(_FactionInfo_js__WEBPACK_IMPORTED_MODULE_4__["FactionInfo"].ECorpInfo);
- resetFaction(ECorp);
-
- var MegaCorp = new Faction("MegaCorp");
- MegaCorp.setInfo(_FactionInfo_js__WEBPACK_IMPORTED_MODULE_4__["FactionInfo"].MegaCorpInfo);
- resetFaction(MegaCorp);
-
- var BachmanAndAssociates = new Faction("Bachman & Associates");
- BachmanAndAssociates.setInfo(_FactionInfo_js__WEBPACK_IMPORTED_MODULE_4__["FactionInfo"].BachmanAndAssociatesInfo);
- resetFaction(BachmanAndAssociates);
-
- var BladeIndustries = new Faction("Blade Industries");
- BladeIndustries.setInfo(_FactionInfo_js__WEBPACK_IMPORTED_MODULE_4__["FactionInfo"].BladeIndustriesInfo);
- resetFaction(BladeIndustries);
-
- var NWO = new Faction("NWO");
- NWO.setInfo(_FactionInfo_js__WEBPACK_IMPORTED_MODULE_4__["FactionInfo"].NWOInfo);
- resetFaction(NWO);
-
- var ClarkeIncorporated = new Faction("Clarke Incorporated");
- ClarkeIncorporated.setInfo(_FactionInfo_js__WEBPACK_IMPORTED_MODULE_4__["FactionInfo"].ClarkeIncorporatedInfo);
- resetFaction(ClarkeIncorporated);
-
- var OmniTekIncorporated = new Faction("OmniTek Incorporated");
- OmniTekIncorporated.setInfo(_FactionInfo_js__WEBPACK_IMPORTED_MODULE_4__["FactionInfo"].OmniTekIncorporatedInfo);
- resetFaction(OmniTekIncorporated);
-
- var FourSigma = new Faction("Four Sigma");
- FourSigma.setInfo(_FactionInfo_js__WEBPACK_IMPORTED_MODULE_4__["FactionInfo"].FourSigmaInfo);
- resetFaction(FourSigma);
-
- var KuaiGongInternational = new Faction("KuaiGong International");
- KuaiGongInternational.setInfo(_FactionInfo_js__WEBPACK_IMPORTED_MODULE_4__["FactionInfo"].KuaiGongInternationalInfo);
- resetFaction(KuaiGongInternational);
-
- //Other corporations
- var FulcrumTechnologies = new Faction("Fulcrum Secret Technologies");
- FulcrumTechnologies.setInfo(_FactionInfo_js__WEBPACK_IMPORTED_MODULE_4__["FactionInfo"].FulcrumSecretTechnologiesInfo);
- resetFaction(FulcrumTechnologies);
-
- //Hacker groups
- var BitRunners = new Faction("BitRunners");
- BitRunners.setInfo(_FactionInfo_js__WEBPACK_IMPORTED_MODULE_4__["FactionInfo"].BitRunnersInfo);
- resetFaction(BitRunners);
-
- var BlackHand = new Faction("The Black Hand");
- BlackHand.setInfo(_FactionInfo_js__WEBPACK_IMPORTED_MODULE_4__["FactionInfo"].BlackHandInfo);
- resetFaction(BlackHand);
-
- var NiteSec = new Faction("NiteSec");
- NiteSec.setInfo(_FactionInfo_js__WEBPACK_IMPORTED_MODULE_4__["FactionInfo"].NiteSecInfo);
- resetFaction(NiteSec);
-
- //City factions, essentially governments
- var Chongqing = new Faction("Chongqing");
- Chongqing.setInfo(_FactionInfo_js__WEBPACK_IMPORTED_MODULE_4__["FactionInfo"].ChongqingInfo);
- resetFaction(Chongqing);
-
- var Sector12 = new Faction("Sector-12");
- Sector12.setInfo(_FactionInfo_js__WEBPACK_IMPORTED_MODULE_4__["FactionInfo"].Sector12Info);
- resetFaction(Sector12);
-
- var NewTokyo = new Faction("New Tokyo");
- NewTokyo.setInfo(_FactionInfo_js__WEBPACK_IMPORTED_MODULE_4__["FactionInfo"].NewTokyoInfo);
- resetFaction(NewTokyo);
-
- var Aevum = new Faction("Aevum");
- Aevum.setInfo(_FactionInfo_js__WEBPACK_IMPORTED_MODULE_4__["FactionInfo"].AevumInfo);
- resetFaction(Aevum);
-
- var Ishima = new Faction("Ishima");
- Ishima.setInfo(_FactionInfo_js__WEBPACK_IMPORTED_MODULE_4__["FactionInfo"].Ishima);
- resetFaction(Ishima);
-
- var Volhaven = new Faction("Volhaven");
- Volhaven.setInfo(_FactionInfo_js__WEBPACK_IMPORTED_MODULE_4__["FactionInfo"].VolhavenInfo);
- resetFaction(Volhaven);
-
- //Criminal Organizations/Gangs
- var SpeakersForTheDead = new Faction("Speakers for the Dead");
- SpeakersForTheDead.setInfo(_FactionInfo_js__WEBPACK_IMPORTED_MODULE_4__["FactionInfo"].SpeakersForTheDeadInfo);
- resetFaction(SpeakersForTheDead);
-
- var DarkArmy = new Faction("The Dark Army");
- DarkArmy.setInfo(_FactionInfo_js__WEBPACK_IMPORTED_MODULE_4__["FactionInfo"].DarkArmyInfo);
- resetFaction(DarkArmy);
-
- var TheSyndicate = new Faction("The Syndicate");
- TheSyndicate.setInfo(_FactionInfo_js__WEBPACK_IMPORTED_MODULE_4__["FactionInfo"].TheSyndicateInfo);
- resetFaction(TheSyndicate);
-
- var Silhouette = new Faction("Silhouette");
- Silhouette.setInfo(_FactionInfo_js__WEBPACK_IMPORTED_MODULE_4__["FactionInfo"].SilhouetteInfo);
- resetFaction(Silhouette);
-
- var Tetrads = new Faction("Tetrads"); //Low-medium level asian crime gang
- Tetrads.setInfo(_FactionInfo_js__WEBPACK_IMPORTED_MODULE_4__["FactionInfo"].TetradsInfo);
- resetFaction(Tetrads);
-
- var SlumSnakes = new Faction("Slum Snakes"); //Low level crime gang
- SlumSnakes.setInfo(_FactionInfo_js__WEBPACK_IMPORTED_MODULE_4__["FactionInfo"].SlumSnakesInfo);
- resetFaction(SlumSnakes);
-
- //Earlygame factions - factions the player will prestige with early on that don't
- //belong in other categories
- var Netburners = new Faction("Netburners");
- Netburners.setInfo(_FactionInfo_js__WEBPACK_IMPORTED_MODULE_4__["FactionInfo"].NetburnersInfo);
- resetFaction(Netburners);
-
- var TianDiHui = new Faction("Tian Di Hui"); //Society of the Heaven and Earth
- TianDiHui.setInfo(_FactionInfo_js__WEBPACK_IMPORTED_MODULE_4__["FactionInfo"].TianDiHuiInfo);
- resetFaction(TianDiHui);
-
- var CyberSec = new Faction("CyberSec");
- CyberSec.setInfo(_FactionInfo_js__WEBPACK_IMPORTED_MODULE_4__["FactionInfo"].CyberSecInfo);
- resetFaction(CyberSec);
-
- //Special Factions
- var Bladeburners = new Faction("Bladeburners");
- Bladeburners.setInfo(_FactionInfo_js__WEBPACK_IMPORTED_MODULE_4__["FactionInfo"].BladeburnersInfo);
- resetFaction(Bladeburners);
-}
-
-//Resets a faction during (re-)initialization. Saves the favor in the new
-//Faction object and deletes the old Faction Object from "Factions". Then
-//reinserts the new Faction object
-function resetFaction(newFactionObject) {
- if (!(newFactionObject instanceof Faction)) {
- throw new Error("Invalid argument 'newFactionObject' passed into resetFaction()");
- }
- var factionName = newFactionObject.name;
- if (factionExists(factionName)) {
- newFactionObject.favor = Factions[factionName].favor;
- delete Factions[factionName];
- }
- AddToFactions(newFactionObject);
-}
-
-function inviteToFaction(faction) {
- if (_Settings_js__WEBPACK_IMPORTED_MODULE_8__["Settings"].SuppressFactionInvites) {
- faction.alreadyInvited = true;
- _Player_js__WEBPACK_IMPORTED_MODULE_7__["Player"].factionInvitations.push(faction.name);
- if (_engine_js__WEBPACK_IMPORTED_MODULE_3__["Engine"].currentPage === _engine_js__WEBPACK_IMPORTED_MODULE_3__["Engine"].Page.Factions) {
- _engine_js__WEBPACK_IMPORTED_MODULE_3__["Engine"].loadFactionsContent();
- }
- } else {
- Object(_utils_FactionInvitationBox_js__WEBPACK_IMPORTED_MODULE_10__["factionInvitationBoxCreate"])(faction);
- }
-}
-
-function joinFaction(faction) {
- faction.isMember = true;
- _Player_js__WEBPACK_IMPORTED_MODULE_7__["Player"].factions.push(faction.name);
-
- //Determine what factions you are banned from now that you have joined this faction
- if (faction.name == "Chongqing") {
- Factions["Sector-12"].isBanned = true;
- Factions["Aevum"].isBanned = true;
- Factions["Volhaven"].isBanned = true;
- } else if (faction.name == "Sector-12") {
- Factions["Chongqing"].isBanned = true;
- Factions["New Tokyo"].isBanned = true;
- Factions["Ishima"].isBanned = true;
- Factions["Volhaven"].isBanned = true;
- } else if (faction.name == "New Tokyo") {
- Factions["Sector-12"].isBanned = true;
- Factions["Aevum"].isBanned = true;
- Factions["Volhaven"].isBanned = true;
- } else if (faction.name == "Aevum") {
- Factions["Chongqing"].isBanned = true;
- Factions["New Tokyo"].isBanned = true;
- Factions["Ishima"].isBanned = true;
- Factions["Volhaven"].isBanned = true;
- } else if (faction.name == "Ishima") {
- Factions["Sector-12"].isBanned = true;
- Factions["Aevum"].isBanned = true;
- Factions["Volhaven"].isBanned = true;
- } else if (faction.name == "Volhaven") {
- Factions["Chongqing"].isBanned = true;
- Factions["Sector-12"].isBanned = true;
- Factions["New Tokyo"].isBanned = true;
- Factions["Aevum"].isBanned = true;
- Factions["Ishima"].isBanned = true;
- }
-}
-
-//Displays the HTML content for a specific faction
-function displayFactionContent(factionName) {
- var faction = Factions[factionName];
- if (faction == null) {
- throw new Error("Invalid factionName passed into displayFactionContent: " + factionName);
- }
- Object(_utils_HelperFunctions_js__WEBPACK_IMPORTED_MODULE_11__["removeChildrenFromElement"])(_engine_js__WEBPACK_IMPORTED_MODULE_3__["Engine"].Display.factionContent);
- var elements = [];
-
- //Header and faction info
- elements.push(Object(_utils_HelperFunctions_js__WEBPACK_IMPORTED_MODULE_11__["createElement"])("h1", {
- innerText:factionName
- }));
- elements.push(Object(_utils_HelperFunctions_js__WEBPACK_IMPORTED_MODULE_11__["createElement"])("pre", {
- innerHTML:"" + faction.info + ""
- }));
- elements.push(Object(_utils_HelperFunctions_js__WEBPACK_IMPORTED_MODULE_11__["createElement"])("p", {
- innerText:"---------------",
- }));
-
- //Faction reputation and favor
- var favorGain = faction.getFavorGain();
- if (favorGain.length != 2) {favorGain = 0;}
- favorGain = favorGain[0];
- elements.push(Object(_utils_HelperFunctions_js__WEBPACK_IMPORTED_MODULE_11__["createElement"])("p", {
- innerText: "Reputation: " + Object(_utils_StringHelperFunctions_js__WEBPACK_IMPORTED_MODULE_14__["formatNumber"])(faction.playerReputation, 4),
- tooltip:"You will earn " + Object(_utils_StringHelperFunctions_js__WEBPACK_IMPORTED_MODULE_14__["formatNumber"])(favorGain, 4) +
- " faction favor upon resetting after installing an Augmentation"
- }))
- elements.push(Object(_utils_HelperFunctions_js__WEBPACK_IMPORTED_MODULE_11__["createElement"])("p", {
- innerText:"---------------",
- }));
- elements.push(Object(_utils_HelperFunctions_js__WEBPACK_IMPORTED_MODULE_11__["createElement"])("p", {
- innerText:"Faction Favor: " + Object(_utils_StringHelperFunctions_js__WEBPACK_IMPORTED_MODULE_14__["formatNumber"])(faction.favor, 4),
- tooltip:"Faction favor increases the rate at which " +
- "you earn reputation for this faction by 1% per favor. Faction favor " +
- "is gained whenever you reset after installing an Augmentation. The amount of " +
- "favor you gain depends on how much reputation you have with the faction"
- }));
- elements.push(Object(_utils_HelperFunctions_js__WEBPACK_IMPORTED_MODULE_11__["createElement"])("p", {
- innerText:"---------------",
- }));
-
- //Faction Work Description Text
- elements.push(Object(_utils_HelperFunctions_js__WEBPACK_IMPORTED_MODULE_11__["createElement"])("pre", {
- id:"faction-work-description-text",
- innerText:"Perform work/carry out assignments for your faction to help further its cause! By doing so " +
- "you will earn reputation for your faction. You will also gain reputation passively over time, " +
- "although at a very slow rate. Earning reputation will allow you to purchase Augmentations " +
- "through this faction, which are powerful upgrades that enhance your abilities. Note that you cannot " +
- "use your terminal or create scripts when you are performing a task!"
- }));
- elements.push(Object(_utils_HelperFunctions_js__WEBPACK_IMPORTED_MODULE_11__["createElement"])("br"));
-
- //Hacking Mission Option
- var hackMissionDiv = Object(_utils_HelperFunctions_js__WEBPACK_IMPORTED_MODULE_11__["createElement"])("div", {
- id:"faction-hack-mission-div", class:"faction-work-div",
- });
- var hackMissionDivWrapper = Object(_utils_HelperFunctions_js__WEBPACK_IMPORTED_MODULE_11__["createElement"])("div", {class:"faction-work-div-wrapper"});
- hackMissionDiv.appendChild(hackMissionDivWrapper);
- hackMissionDivWrapper.appendChild(Object(_utils_HelperFunctions_js__WEBPACK_IMPORTED_MODULE_11__["createElement"])("a", {
- class:"a-link-button", innerText:"Hacking Mission",
- clickListener:()=>{
- _engine_js__WEBPACK_IMPORTED_MODULE_3__["Engine"].loadMissionContent();
- var mission = new _Missions_js__WEBPACK_IMPORTED_MODULE_6__["HackingMission"](faction.playerReputation, faction);
- Object(_Missions_js__WEBPACK_IMPORTED_MODULE_6__["setInMission"])(true, mission); //Sets inMission flag to true
- mission.init();
- return false;
- }
- }));
- hackMissionDivWrapper.appendChild(Object(_utils_HelperFunctions_js__WEBPACK_IMPORTED_MODULE_11__["createElement"])("p", {
- innerText:"Attempt a hacking mission for your faction. " +
- "A mission is a mini game that, if won, earns you " +
- "significant reputation with this faction. (Recommended hacking level: 200+)"
- }));
- elements.push(hackMissionDiv);
-
- //Hacking Contracts Option
- var hackDiv = Object(_utils_HelperFunctions_js__WEBPACK_IMPORTED_MODULE_11__["createElement"])("div", {
- id:"faction-hack-div", class:"faction-work-div",
- });
- var hackDivWrapper = Object(_utils_HelperFunctions_js__WEBPACK_IMPORTED_MODULE_11__["createElement"])("div", {class:"faction-work-div-wrapper"});
- hackDiv.appendChild(hackDivWrapper);
- hackDivWrapper.appendChild(Object(_utils_HelperFunctions_js__WEBPACK_IMPORTED_MODULE_11__["createElement"])("a", {
- class:"a-link-button", innerText:"Hacking Contracts",
- clickListener:()=>{
- _Player_js__WEBPACK_IMPORTED_MODULE_7__["Player"].startFactionHackWork(faction);
- return false;
- }
- }));
- hackDivWrapper.appendChild(Object(_utils_HelperFunctions_js__WEBPACK_IMPORTED_MODULE_11__["createElement"])("p", {
- innerText:"Complete hacking contracts for your faction. " +
- "Your effectiveness, which determines how much " +
- "reputation you gain for this faction, is based on your hacking skill. " +
- "You will gain hacking exp."
- }));
- elements.push(hackDiv);
-
- //Field Work Option
- var fieldWorkDiv = Object(_utils_HelperFunctions_js__WEBPACK_IMPORTED_MODULE_11__["createElement"])("div", {
- id:"faction-fieldwork-div", class:"faction-work-div"
- });
- var fieldWorkDivWrapper = Object(_utils_HelperFunctions_js__WEBPACK_IMPORTED_MODULE_11__["createElement"])("div", {class:"faction-work-div-wrapper"});
- fieldWorkDiv.appendChild(fieldWorkDivWrapper);
- fieldWorkDivWrapper.appendChild(Object(_utils_HelperFunctions_js__WEBPACK_IMPORTED_MODULE_11__["createElement"])("a", {
- class:"a-link-button", innerText:"Field Work",
- clickListener:()=>{
- _Player_js__WEBPACK_IMPORTED_MODULE_7__["Player"].startFactionFieldWork(faction);
- return false;
- }
- }));
- fieldWorkDivWrapper.appendChild(Object(_utils_HelperFunctions_js__WEBPACK_IMPORTED_MODULE_11__["createElement"])("p", {
- innerText:"Carry out field missions for your faction. " +
- "Your effectiveness, which determines how much " +
- "reputation you gain for this faction, is based on all of your stats. " +
- "You will gain exp for all stats."
- }));
- elements.push(fieldWorkDiv);
-
- //Security Work Option
- var securityWorkDiv = Object(_utils_HelperFunctions_js__WEBPACK_IMPORTED_MODULE_11__["createElement"])("div", {
- id:"faction-securitywork-div", class:"faction-work-div"
- });
- var securityWorkDivWrapper = Object(_utils_HelperFunctions_js__WEBPACK_IMPORTED_MODULE_11__["createElement"])("div", {class:"faction-work-div-wrapper"});
- securityWorkDiv.appendChild(securityWorkDivWrapper);
- securityWorkDivWrapper.appendChild(Object(_utils_HelperFunctions_js__WEBPACK_IMPORTED_MODULE_11__["createElement"])("a", {
- class:"a-link-button", innerText:"Security Work",
- clickListener:()=>{
- _Player_js__WEBPACK_IMPORTED_MODULE_7__["Player"].startFactionSecurityWork(faction);
- return false;
- }
- }));
- securityWorkDivWrapper.appendChild(Object(_utils_HelperFunctions_js__WEBPACK_IMPORTED_MODULE_11__["createElement"])("p", {
- innerText:"Serve in a security detail for your faction. " +
- "Your effectiveness, which determines how much " +
- "reputation you gain for this faction, is based on your combat stats. " +
- "You will gain exp for all combat stats."
- }));
- elements.push(securityWorkDiv);
-
- //Donate for reputation
- var donateDiv = Object(_utils_HelperFunctions_js__WEBPACK_IMPORTED_MODULE_11__["createElement"])("div", {
- id:"faction-donate-div", class:"faction-work-div"
- });
- var donateDivWrapper = Object(_utils_HelperFunctions_js__WEBPACK_IMPORTED_MODULE_11__["createElement"])("div", {class:"faction-work-div-wrapper"});
- donateDiv.appendChild(donateDivWrapper);
- var donateRepGain = Object(_utils_HelperFunctions_js__WEBPACK_IMPORTED_MODULE_11__["createElement"])("p", {
- innerText:"This donation will result in 0 reputation gain"
- });
- var donateAmountInput = Object(_utils_HelperFunctions_js__WEBPACK_IMPORTED_MODULE_11__["createElement"])("input", {
- placeholder:"Donation amount",
- inputListener:()=>{
- var amt = parseFloat(donateAmountInput.value);
- if (isNaN(amt) || amt < 0) {
- donateRepGain.innerText = "Invalid donate amount entered!";
- } else {
- var repGain = amt / 1e6 * _Player_js__WEBPACK_IMPORTED_MODULE_7__["Player"].faction_rep_mult;
- donateRepGain.innerText = "This donation will result in " +
- Object(_utils_StringHelperFunctions_js__WEBPACK_IMPORTED_MODULE_14__["formatNumber"])(repGain, 3) + " reputation gain";
- }
- },
- });
- donateDivWrapper.appendChild(Object(_utils_HelperFunctions_js__WEBPACK_IMPORTED_MODULE_11__["createElement"])("a", {
- class:"a-link-button", innerText:"Donate Money",
- clickListener:()=>{
- var amt = parseFloat(donateAmountInput.value);
- if (isNaN(amt) || amt < 0) {
- Object(_utils_DialogBox_js__WEBPACK_IMPORTED_MODULE_9__["dialogBoxCreate"])("Invalid amount entered!");
- } else if (_Player_js__WEBPACK_IMPORTED_MODULE_7__["Player"].money.lt(amt)) {
- Object(_utils_DialogBox_js__WEBPACK_IMPORTED_MODULE_9__["dialogBoxCreate"])("You cannot afford to donate this much money!");
- } else {
- _Player_js__WEBPACK_IMPORTED_MODULE_7__["Player"].loseMoney(amt);
- var repGain = amt / 1e6 * _Player_js__WEBPACK_IMPORTED_MODULE_7__["Player"].faction_rep_mult;
- faction.playerReputation += repGain;
- Object(_utils_DialogBox_js__WEBPACK_IMPORTED_MODULE_9__["dialogBoxCreate"])("You just donated " + _utils_numeral_min_js__WEBPACK_IMPORTED_MODULE_13___default()(amt).format("$0.000a") + " to " +
- faction.name + " to gain " + Object(_utils_StringHelperFunctions_js__WEBPACK_IMPORTED_MODULE_14__["formatNumber"])(repGain, 3) + " reputation");
- displayFactionContent(factionName);
- }
- }
- }));
- donateDivWrapper.appendChild(donateAmountInput);
- donateDivWrapper.appendChild(donateRepGain);
- elements.push(donateDiv);
-
- //Purchase Augmentations
- elements.push(Object(_utils_HelperFunctions_js__WEBPACK_IMPORTED_MODULE_11__["createElement"])("pre", {
- innerHTML: "
As your reputation with this faction rises, you will " +
- "unlock Augmentations, which you can purchase to enhance " +
- "your abilities.
"
- }));
- elements.push(Object(_utils_HelperFunctions_js__WEBPACK_IMPORTED_MODULE_11__["createElement"])("a", {
- class:"a-link-button", innerText:"Purchase Augmentations",
- clickListener:()=>{
- _engine_js__WEBPACK_IMPORTED_MODULE_3__["Engine"].hideAllContent();
- _engine_js__WEBPACK_IMPORTED_MODULE_3__["Engine"].Display.factionAugmentationsContent.style.display = "block";
-
-
- displayFactionAugmentations(factionName);
- return false;
- }
- }));
-
- //Gang (BitNode-2)
- if (_Player_js__WEBPACK_IMPORTED_MODULE_7__["Player"].bitNodeN == 2 && (factionName == "Slum Snakes" || factionName == "Tetrads" ||
- factionName == "The Syndicate" || factionName == "The Dark Army" || factionName == "Speakers for the Dead" ||
- factionName == "NiteSec" || factionName == "The Black Hand")) {
- //Set everything else to invisible
- hackMissionDiv.style.display = "none";
- hackDiv.style.display = "none";
- fieldWorkDiv.style.display = "none";
- securityWorkDiv.style.display = "none";
- donateDiv.style.display = "none";
-
- //Create the 'Manage Gang' button
- var gangDiv = Object(_utils_HelperFunctions_js__WEBPACK_IMPORTED_MODULE_11__["createElement"])("div", {
- id:"faction-gang-div", class:"faction-work-div", display:"inline"
- });
- var gangDivWrapper = Object(_utils_HelperFunctions_js__WEBPACK_IMPORTED_MODULE_11__["createElement"])("div", {class:"faction-work-div-wrapper"});
- gangDiv.appendChild(gangDivWrapper);
- gangDivWrapper.appendChild(Object(_utils_HelperFunctions_js__WEBPACK_IMPORTED_MODULE_11__["createElement"])("a", {
- class:"a-link-button", innerText:"Manage Gang",
- clickListener:()=>{
- if (!_Player_js__WEBPACK_IMPORTED_MODULE_7__["Player"].inGang()) {
- var yesBtn = Object(_utils_YesNoBox_js__WEBPACK_IMPORTED_MODULE_15__["yesNoBoxGetYesButton"])(), noBtn = Object(_utils_YesNoBox_js__WEBPACK_IMPORTED_MODULE_15__["yesNoBoxGetNoButton"])();
- yesBtn.innerHTML = "Create Gang";
- noBtn.innerHTML = "Cancel";
- yesBtn.addEventListener("click", () => {
- var hacking = false;
- if (factionName === "NiteSec" || factionName === "The Black Hand") {hacking = true;}
- _Player_js__WEBPACK_IMPORTED_MODULE_7__["Player"].startGang(factionName, hacking);
- _engine_js__WEBPACK_IMPORTED_MODULE_3__["Engine"].loadGangContent();
- Object(_utils_YesNoBox_js__WEBPACK_IMPORTED_MODULE_15__["yesNoBoxClose"])();
- });
- noBtn.addEventListener("click", () => {
- Object(_utils_YesNoBox_js__WEBPACK_IMPORTED_MODULE_15__["yesNoBoxClose"])();
- });
- Object(_utils_YesNoBox_js__WEBPACK_IMPORTED_MODULE_15__["yesNoBoxCreate"])("Would you like to create a new Gang with " + factionName + "?
" +
- "Note that this will prevent you from creating a Gang with any other Faction until " +
- "this BitNode is destroyed. There are NO differences between the Factions you can " +
- "create a Gang with and each of these Factions have all Augmentations available");
- } else {
- _engine_js__WEBPACK_IMPORTED_MODULE_3__["Engine"].loadGangContent();
- }
- }
- }));
- gangDivWrapper.appendChild(Object(_utils_HelperFunctions_js__WEBPACK_IMPORTED_MODULE_11__["createElement"])("p", {
- innerText:"Create and manage a gang for this Faction. " +
- "Gangs will earn you money and faction reputation."
- }));
- //Manage Gang button goes before Faction work stuff
- elements.splice(7, 1, gangDiv);
-
- if (_Player_js__WEBPACK_IMPORTED_MODULE_7__["Player"].inGang() && _Player_js__WEBPACK_IMPORTED_MODULE_7__["Player"].gang.facName != factionName) {
- //If the player has a gang but its not for this faction
- gangDiv.style.display = "none";
- }
- //Display all elements
- for (var i = 0; i < elements.length; ++i) {
- _engine_js__WEBPACK_IMPORTED_MODULE_3__["Engine"].Display.factionContent.appendChild(elements[i]);
- }
- return;
- }
-
- if (faction.isMember) {
- if (faction.favor >= (150 * _BitNode_js__WEBPACK_IMPORTED_MODULE_1__["BitNodeMultipliers"].RepToDonateToFaction)) {
- donateDiv.style.display = "inline";
- } else {
- donateDiv.style.display = "none";
- }
-
- switch(faction.name) {
- case "Illuminati":
- hackMissionDiv.style.display = "inline";
- hackDiv.style.display = "inline";
- fieldWorkDiv.style.display = "inline";
- securityWorkDiv.style.display = "none";
- break;
- case "Daedalus":
- hackMissionDiv.style.display = "inline";
- hackDiv.style.display = "inline";
- fieldWorkDiv.style.display = "inline";
- securityWorkDiv.style.display = "none";
- break;
- case "The Covenant":
- hackMissionDiv.style.display = "inline";
- hackDiv.style.display = "inline";
- fieldWorkDiv.style.display = "inline";
- securityWorkDiv.style.display = "none";
- break;
- case "ECorp":
- hackMissionDiv.style.display = "inline";
- hackDiv.style.display = "inline";
- fieldWorkDiv.style.display = "inline";
- securityWorkDiv.style.display = "inline";
- break;
- case "MegaCorp":
- hackMissionDiv.style.display = "inline";
- hackDiv.style.display = "inline";
- fieldWorkDiv.style.display = "inline";
- securityWorkDiv.style.display = "inline";
- break;
- case "Bachman & Associates":
- hackMissionDiv.style.display = "inline";
- hackDiv.style.display = "inline";
- fieldWorkDiv.style.display = "inline";
- securityWorkDiv.style.display = "inline";
- break;
- case "Blade Industries":
- hackMissionDiv.style.display = "inline";
- hackDiv.style.display = "inline";
- fieldWorkDiv.style.display = "inline";
- securityWorkDiv.style.display = "inline";
- break;
- case "NWO":
- hackMissionDiv.style.display = "inline";
- hackDiv.style.display = "inline";
- fieldWorkDiv.style.display = "inline";
- securityWorkDiv.style.display = "inline";
- break;
- case "Clarke Incorporated":
- hackMissionDiv.style.display = "inline";
- hackDiv.style.display = "inline";
- fieldWorkDiv.style.display = "inline";
- securityWorkDiv.style.display = "inline";
- break;
- case "OmniTek Incorporated":
- hackMissionDiv.style.display = "inline";
- hackDiv.style.display = "inline";
- fieldWorkDiv.style.display = "inline";
- securityWorkDiv.style.display = "inline";
- break;
- case "Four Sigma":
- hackMissionDiv.style.display = "inline";
- hackDiv.style.display = "inline";
- fieldWorkDiv.style.display = "inline";
- securityWorkDiv.style.display = "inline";
- break;
- case "KuaiGong International":
- hackMissionDiv.style.display = "inline";
- hackDiv.style.display = "inline";
- fieldWorkDiv.style.display = "inline";
- securityWorkDiv.style.display = "inline";
- break;
- case "Fulcrum Secret Technologies":
- hackMissionDiv.style.display = "inline";
- hackDiv.style.display = "inline";
- fieldWorkDiv.style.display = "none";
- securityWorkDiv.style.display = "inline";
- break;
- case "BitRunners":
- hackMissionDiv.style.display = "inline";
- hackDiv.style.display = "inline";
- fieldWorkDiv.style.display = "none";
- securityWorkDiv.style.display = "none";
- break;
- case "The Black Hand":
- hackMissionDiv.style.display = "inline";
- hackDiv.style.display = "inline";
- fieldWorkDiv.style.display = "inline";
- securityWorkDiv.style.display = "none";
- break;
- case "NiteSec":
- hackMissionDiv.style.display = "inline";
- hackDiv.style.display = "inline";
- fieldWorkDiv.style.display = "none";
- securityWorkDiv.style.display = "none";
- break;
- case "Chongqing":
- hackMissionDiv.style.display = "inline";
- hackDiv.style.display = "inline";
- fieldWorkDiv.style.display = "inline";
- securityWorkDiv.style.display = "inline";
- break;
- case "Sector-12":
- hackMissionDiv.style.display = "inline";
- hackDiv.style.display = "inline";
- fieldWorkDiv.style.display = "inline";
- securityWorkDiv.style.display = "inline";
- break;
- case "New Tokyo":
- hackMissionDiv.style.display = "inline";
- hackDiv.style.display = "inline";
- fieldWorkDiv.style.display = "inline";
- securityWorkDiv.style.display = "inline";
- break;
- case "Aevum":
- hackMissionDiv.style.display = "inline";
- hackDiv.style.display = "inline";
- fieldWorkDiv.style.display = "inline";
- securityWorkDiv.style.display = "inline";
- break;
- case "Ishima":
- hackMissionDiv.style.display = "inline";
- hackDiv.style.display = "inline";
- fieldWorkDiv.style.display = "inline";
- securityWorkDiv.style.display = "inline";
- break;
- case "Volhaven":
- hackMissionDiv.style.display = "inline";
- hackDiv.style.display = "inline";
- fieldWorkDiv.style.display = "inline";
- securityWorkDiv.style.display = "inline";
- break;
- case "Speakers for the Dead":
- hackMissionDiv.style.display = "inline";
- hackDiv.style.display = "inline";
- fieldWorkDiv.style.display = "inline";
- securityWorkDiv.style.display = "inline";
- break;
- case "The Dark Army":
- hackMissionDiv.style.display = "inline";
- hackDiv.style.display = "inline";
- fieldWorkDiv.style.display = "inline";
- securityWorkDiv.style.display = "none";
- break;
- case "The Syndicate":
- hackMissionDiv.style.display = "inline";
- hackDiv.style.display = "inline";
- fieldWorkDiv.style.display = "inline";
- securityWorkDiv.style.display = "inline";
- break;
- case "Silhouette":
- hackMissionDiv.style.display = "inline";
- hackDiv.style.display = "inline";
- fieldWorkDiv.style.display = "inline";
- securityWorkDiv.style.display = "none";
- break;
- case "Tetrads":
- hackMissionDiv.style.display = "none";
- hackDiv.style.display = "none";
- fieldWorkDiv.style.display = "inline";
- securityWorkDiv.style.display = "inline";
- break;
- case "Slum Snakes":
- hackMissionDiv.style.display = "none";
- hackDiv.style.display = "none";
- fieldWorkDiv.style.display = "inline";
- securityWorkDiv.style.display = "inline";
- break;
- case "Netburners":
- hackMissionDiv.style.display = "inline";
- hackDiv.style.display = "inline";
- fieldWorkDiv.style.display = "none";
- securityWorkDiv.style.display = "none";
- break;
- case "Tian Di Hui":
- hackMissionDiv.style.display = "inline";
- hackDiv.style.display = "inline";
- fieldWorkDiv.style.display = "none";
- securityWorkDiv.style.display = "inline";
- break;
- case "CyberSec":
- hackMissionDiv.style.display = "inline";
- hackDiv.style.display = "inline";
- fieldWorkDiv.style.display = "none";
- securityWorkDiv.style.display = "none";
- break;
- case "Bladeburners":
- hackMissionDiv.style.display = "none";
- hackDiv.style.display = "none";
- fieldWorkDiv.style.display = "none";
- securityWorkDiv.style.display = "none";
- break;
- default:
- console.log("Faction does not exist");
- break;
- }
- } else {
- throw new Error("Not a member of this faction, cannot display faction information");
- }
-
- //Display all elements
- for (var i = 0; i < elements.length; ++i) {
- _engine_js__WEBPACK_IMPORTED_MODULE_3__["Engine"].Display.factionContent.appendChild(elements[i]);
- }
-}
-
-var confirmingPurchases = true;
-var sortOption = null;
-function displayFactionAugmentations(factionName) {
- var faction = Factions[factionName];
- if (faction == null) {
- throw new Error("Could not find faction " + factionName + " in displayFactionAugmentations");
- }
-
- Object(_utils_HelperFunctions_js__WEBPACK_IMPORTED_MODULE_11__["removeChildrenFromElement"])(_engine_js__WEBPACK_IMPORTED_MODULE_3__["Engine"].Display.factionAugmentationsContent);
- var elements = [];
-
- //Back button
- elements.push(Object(_utils_HelperFunctions_js__WEBPACK_IMPORTED_MODULE_11__["createElement"])("a", {
- innerText:"Back", class:"a-link-button",
- clickListener:()=>{
- _engine_js__WEBPACK_IMPORTED_MODULE_3__["Engine"].loadFactionContent();
- displayFactionContent(factionName);
- return false;
- }
- }));
-
- //Header text
- elements.push(Object(_utils_HelperFunctions_js__WEBPACK_IMPORTED_MODULE_11__["createElement"])("h1", {innerText:"Faction Augmentations"}));
- elements.push(Object(_utils_HelperFunctions_js__WEBPACK_IMPORTED_MODULE_11__["createElement"])("p", {
- id:"faction-augmentations-page-desc",
- innerHTML:"Lists all Augmentations that are available to purchase from " + factionName + "
" +
- "Augmentations are powerful upgrades that will enhance your abilities."
- }));
-
- //Confirming not confirming button
- elements.push(Object(_utils_HelperFunctions_js__WEBPACK_IMPORTED_MODULE_11__["createElement"])("label", {
- for:"faction-augmentations-confirming-checkbox",innerText:"Confirm Purchases",
- color:"white", margin:"4px", padding:"4px",
- }));
- var confirmingPurchasesCheckbox = Object(_utils_HelperFunctions_js__WEBPACK_IMPORTED_MODULE_11__["createElement"])("input", {
- type:"checkbox", id:"faction-augmentations-confirming-checkbox", checked:confirmingPurchases,
- margin:"4px", padding:"4px",
- clickListener:()=>{
- confirmingPurchases = confirmingPurchasesCheckbox.checked;
- }
- });
- elements.push(confirmingPurchasesCheckbox);
- elements.push(Object(_utils_HelperFunctions_js__WEBPACK_IMPORTED_MODULE_11__["createElement"])("br"));
- elements.push(Object(_utils_HelperFunctions_js__WEBPACK_IMPORTED_MODULE_11__["createElement"])("br"));
-
- //Augmentations List
- var augmentationsList = Object(_utils_HelperFunctions_js__WEBPACK_IMPORTED_MODULE_11__["createElement"])("ul");
-
- //Sort buttons
- var sortByCostBtn = Object(_utils_HelperFunctions_js__WEBPACK_IMPORTED_MODULE_11__["createElement"])("a", {
- innerText:"Sort by Cost", class:"a-link-button",
- clickListener:()=>{
- sortOption = "cost";
- var augs = faction.augmentations.slice();
- augs.sort((augName1, augName2)=>{
- var aug1 = _Augmentations_js__WEBPACK_IMPORTED_MODULE_0__["Augmentations"][augName1], aug2 = _Augmentations_js__WEBPACK_IMPORTED_MODULE_0__["Augmentations"][augName2];
- if (aug1 == null || aug2 == null) {
- throw new Error("Invalid Augmentation Names");
- }
- return aug1.baseCost - aug2.baseCost;
- });
- Object(_utils_HelperFunctions_js__WEBPACK_IMPORTED_MODULE_11__["removeChildrenFromElement"])(augmentationsList);
- createFactionAugmentationDisplayElements(augmentationsList, augs, faction);
- }
- });
- var sortByRepBtn = Object(_utils_HelperFunctions_js__WEBPACK_IMPORTED_MODULE_11__["createElement"])("a", {
- innerText:"Sort by Reputation", class:"a-link-button",
- clickListener:()=>{
- sortOption = "reputation";
- var augs = faction.augmentations.slice();
- augs.sort((augName1, augName2)=>{
- var aug1 = _Augmentations_js__WEBPACK_IMPORTED_MODULE_0__["Augmentations"][augName1], aug2 = _Augmentations_js__WEBPACK_IMPORTED_MODULE_0__["Augmentations"][augName2];
- if (aug1 == null || aug2 == null) {
- throw new Error("Invalid Augmentation Names");
- }
- return aug1.baseRepRequirement - aug2.baseRepRequirement;
- });
- Object(_utils_HelperFunctions_js__WEBPACK_IMPORTED_MODULE_11__["removeChildrenFromElement"])(augmentationsList);
- createFactionAugmentationDisplayElements(augmentationsList, augs, faction);
- }
- });
- var defaultSortBtn = Object(_utils_HelperFunctions_js__WEBPACK_IMPORTED_MODULE_11__["createElement"])("a", {
- innerText:"Sort by Default Order", class:"a-link-button",
- clickListener:()=>{
- sortOption = "default";
- Object(_utils_HelperFunctions_js__WEBPACK_IMPORTED_MODULE_11__["removeChildrenFromElement"])(augmentationsList);
- createFactionAugmentationDisplayElements(augmentationsList, faction.augmentations, faction);
- }
- });
- elements.push(sortByCostBtn);
- elements.push(sortByRepBtn);
- elements.push(defaultSortBtn);
- switch(sortOption) {
- case "cost":
- sortByCostBtn.click();
- break;
- case "reputation":
- sortByRepBtn.click();
- break;
- default:
- defaultSortBtn.click();
- break;
- }
-
- elements.push(augmentationsList);
-
- for (var i = 0; i < elements.length; ++i) {
- _engine_js__WEBPACK_IMPORTED_MODULE_3__["Engine"].Display.factionAugmentationsContent.appendChild(elements[i]);
- }
-}
-
-//Takes in an array of Augmentation Names, constructs DOM elements
-//to list them on the faction page, and appends them to the given
-//DOM element
-// @augmentationsList DOM List to append Aug DOM elements to
-// @augs Array of Aug names
-// @faction Faction for which to display Augmentations
-function createFactionAugmentationDisplayElements(augmentationsList, augs, faction) {
- for (var i = 0; i < augs.length; ++i) {
- (function () {
- var aug = _Augmentations_js__WEBPACK_IMPORTED_MODULE_0__["Augmentations"][augs[i]];
- if (aug == null) {
- throw new Error("Invalid Augmentation when trying to create Augmentation display Elements");
- }
- var owned = false;
- for (var j = 0; j < _Player_js__WEBPACK_IMPORTED_MODULE_7__["Player"].queuedAugmentations.length; ++j) {
- if (_Player_js__WEBPACK_IMPORTED_MODULE_7__["Player"].queuedAugmentations[j].name == aug.name) {
- owned = true;
- break;
- }
- }
- for (var j = 0; j < _Player_js__WEBPACK_IMPORTED_MODULE_7__["Player"].augmentations.length; ++j) {
- if (_Player_js__WEBPACK_IMPORTED_MODULE_7__["Player"].augmentations[j].name == aug.name) {
- owned = true;
- break;
- }
- }
-
- var item = Object(_utils_HelperFunctions_js__WEBPACK_IMPORTED_MODULE_11__["createElement"])("li");
- var span = Object(_utils_HelperFunctions_js__WEBPACK_IMPORTED_MODULE_11__["createElement"])("span", {display:"inline-block"});
- var aDiv = Object(_utils_HelperFunctions_js__WEBPACK_IMPORTED_MODULE_11__["createElement"])("div", {tooltip:aug.info});
- var aElem = Object(_utils_HelperFunctions_js__WEBPACK_IMPORTED_MODULE_11__["createElement"])("a", {
- innerText:aug.name, display:"inline",
- clickListener:()=>{
- if (confirmingPurchases) {
- purchaseAugmentationBoxCreate(aug, faction);
- } else {
- purchaseAugmentation(aug, faction);
- }
- return false;
- }
- });
- if (aug.name == _Augmentations_js__WEBPACK_IMPORTED_MODULE_0__["AugmentationNames"].NeuroFluxGovernor) {
- aElem.innerText += " - Level " + (getNextNeurofluxLevel());
- }
- var pElem = Object(_utils_HelperFunctions_js__WEBPACK_IMPORTED_MODULE_11__["createElement"])("p", {
- display:"inline",
- })
- var req = aug.baseRepRequirement * faction.augmentationRepRequirementMult;
- var hasPrereqs = hasAugmentationPrereqs(aug);
- if (!hasPrereqs) {
- aElem.setAttribute("class", "a-link-button-inactive");
- pElem.innerHTML = "LOCKED (Requires " + aug.prereqs.join(",") + " as prerequisite(s))";
- pElem.style.color = "red";
- } else if (aug.name != _Augmentations_js__WEBPACK_IMPORTED_MODULE_0__["AugmentationNames"].NeuroFluxGovernor && (aug.owned || owned)) {
- aElem.setAttribute("class", "a-link-button-inactive");
- pElem.innerHTML = "ALREADY OWNED";
- } else if (faction.playerReputation >= req) {
- aElem.setAttribute("class", "a-link-button");
- pElem.innerHTML = "UNLOCKED - " + _utils_numeral_min_js__WEBPACK_IMPORTED_MODULE_13___default()(aug.baseCost * faction.augmentationPriceMult).format("$0.000a");
- } else {
- aElem.setAttribute("class", "a-link-button-inactive");
- pElem.innerHTML = "LOCKED (Requires " + Object(_utils_StringHelperFunctions_js__WEBPACK_IMPORTED_MODULE_14__["formatNumber"])(req, 1) + " faction reputation) - " + _utils_numeral_min_js__WEBPACK_IMPORTED_MODULE_13___default()(aug.baseCost * faction.augmentationPriceMult).format("$0.000a");
- pElem.style.color = "red";
- }
- aDiv.appendChild(aElem);
- span.appendChild(aDiv);
- span.appendChild(pElem);
- item.appendChild(span);
- augmentationsList.appendChild(item);
- }()); //Immediate invocation closure
- }
-}
-
-function purchaseAugmentationBoxCreate(aug, fac) {
- var yesBtn = Object(_utils_YesNoBox_js__WEBPACK_IMPORTED_MODULE_15__["yesNoBoxGetYesButton"])(), noBtn = Object(_utils_YesNoBox_js__WEBPACK_IMPORTED_MODULE_15__["yesNoBoxGetNoButton"])();
- yesBtn.innerHTML = "Purchase";
- noBtn.innerHTML = "Cancel";
- yesBtn.addEventListener("click", function() {
- purchaseAugmentation(aug, fac);
- });
- noBtn.addEventListener("click", function() {
- Object(_utils_YesNoBox_js__WEBPACK_IMPORTED_MODULE_15__["yesNoBoxClose"])();
- });
-
- Object(_utils_YesNoBox_js__WEBPACK_IMPORTED_MODULE_15__["yesNoBoxCreate"])("" + aug.name + "
" +
- aug.info + "
" +
- "
Would you like to purchase the " + aug.name + " Augmentation for $" +
- Object(_utils_StringHelperFunctions_js__WEBPACK_IMPORTED_MODULE_14__["formatNumber"])(aug.baseCost * fac.augmentationPriceMult, 2) + "?");
-}
-
-//Returns a boolean indicating whether the player has the prerequisites for the
-//specified Augmentation
-function hasAugmentationPrereqs(aug) {
- var hasPrereqs = true;
- if (aug.prereqs && aug.prereqs.length > 0) {
- for (var i = 0; i < aug.prereqs.length; ++i) {
- var prereqAug = _Augmentations_js__WEBPACK_IMPORTED_MODULE_0__["Augmentations"][aug.prereqs[i]];
- if (prereqAug == null) {
- console.log("ERROR: Invalid prereq Augmentation: " + aug.prereqs[i]);
- continue;
- }
- if (prereqAug.owned === false) {
- hasPrereqs = false;
-
- //Check if the aug is purchased
- for (var j = 0; j < _Player_js__WEBPACK_IMPORTED_MODULE_7__["Player"].queuedAugmentations.length; ++j) {
- if (_Player_js__WEBPACK_IMPORTED_MODULE_7__["Player"].queuedAugmentations[j].name === prereqAug.name) {
- hasPrereqs = true;
- break;
- }
- }
- }
- }
- }
- return hasPrereqs;
-}
-
-function purchaseAugmentation(aug, fac, sing=false) {
- var hasPrereqs = hasAugmentationPrereqs(aug);
- if (!hasPrereqs) {
- var txt = "You must first purchase or install " + aug.prereqs.join(",") + " before you can " +
- "purchase this one.";
- if (sing) {return txt;} else {Object(_utils_DialogBox_js__WEBPACK_IMPORTED_MODULE_9__["dialogBoxCreate"])(txt);}
- } else if (_Player_js__WEBPACK_IMPORTED_MODULE_7__["Player"].money.lt(aug.baseCost * fac.augmentationPriceMult)) {
- let txt = "You don't have enough money to purchase " + aug.name;
- if (sing) {return txt;}
- Object(_utils_DialogBox_js__WEBPACK_IMPORTED_MODULE_9__["dialogBoxCreate"])(txt);
- } else if (fac.playerReputation < aug.baseRepRequirement) {
- let txt = "You don't have enough faction reputation to purchase " + aug.name;
- if (sing) {return txt;}
- Object(_utils_DialogBox_js__WEBPACK_IMPORTED_MODULE_9__["dialogBoxCreate"])(txt);
- } else if (_Player_js__WEBPACK_IMPORTED_MODULE_7__["Player"].money.gte(aug.baseCost * fac.augmentationPriceMult)) {
- if (_Player_js__WEBPACK_IMPORTED_MODULE_7__["Player"].firstAugPurchased === false) {
- _Player_js__WEBPACK_IMPORTED_MODULE_7__["Player"].firstAugPurchased = true;
- document.getElementById("augmentations-tab").style.display = "list-item";
- document.getElementById("character-menu-header").click();
- document.getElementById("character-menu-header").click();
- }
-
- var queuedAugmentation = new _Augmentations_js__WEBPACK_IMPORTED_MODULE_0__["PlayerOwnedAugmentation"](aug.name);
- if (aug.name == _Augmentations_js__WEBPACK_IMPORTED_MODULE_0__["AugmentationNames"].NeuroFluxGovernor) {
- queuedAugmentation.level = getNextNeurofluxLevel();
- }
- _Player_js__WEBPACK_IMPORTED_MODULE_7__["Player"].queuedAugmentations.push(queuedAugmentation);
-
- _Player_js__WEBPACK_IMPORTED_MODULE_7__["Player"].loseMoney((aug.baseCost * fac.augmentationPriceMult));
-
- //If you just purchased Neuroflux Governor, recalculate the cost
- if (aug.name == _Augmentations_js__WEBPACK_IMPORTED_MODULE_0__["AugmentationNames"].NeuroFluxGovernor) {
- var nextLevel = getNextNeurofluxLevel();
- --nextLevel;
- var mult = Math.pow(_Constants_js__WEBPACK_IMPORTED_MODULE_2__["CONSTANTS"].NeuroFluxGovernorLevelMult, nextLevel);
- aug.baseRepRequirement = 500 * mult * _Constants_js__WEBPACK_IMPORTED_MODULE_2__["CONSTANTS"].AugmentationRepMultiplier * _BitNode_js__WEBPACK_IMPORTED_MODULE_1__["BitNodeMultipliers"].AugmentationRepCost;
- aug.baseCost = 750e3 * mult * _Constants_js__WEBPACK_IMPORTED_MODULE_2__["CONSTANTS"].AugmentationCostMultiplier * _BitNode_js__WEBPACK_IMPORTED_MODULE_1__["BitNodeMultipliers"].AugmentationMoneyCost;
-
- for (var i = 0; i < _Player_js__WEBPACK_IMPORTED_MODULE_7__["Player"].queuedAugmentations.length-1; ++i) {
- aug.baseCost *= _Constants_js__WEBPACK_IMPORTED_MODULE_2__["CONSTANTS"].MultipleAugMultiplier;
- }
- }
-
- for (var name in _Augmentations_js__WEBPACK_IMPORTED_MODULE_0__["Augmentations"]) {
- if (_Augmentations_js__WEBPACK_IMPORTED_MODULE_0__["Augmentations"].hasOwnProperty(name)) {
- _Augmentations_js__WEBPACK_IMPORTED_MODULE_0__["Augmentations"][name].baseCost *= _Constants_js__WEBPACK_IMPORTED_MODULE_2__["CONSTANTS"].MultipleAugMultiplier;
- }
- }
-
- if (sing) {
- return "You purchased " + aug.name;
- } else {
- Object(_utils_DialogBox_js__WEBPACK_IMPORTED_MODULE_9__["dialogBoxCreate"])("You purchased " + aug.name + ". It's enhancements will not take " +
- "effect until they are installed. To install your augmentations, go to the " +
- "'Augmentations' tab on the left-hand navigation menu. Purchasing additional " +
- "augmentations will now be more expensive.");
- }
-
- displayFactionAugmentations(fac.name);
- } else {
- Object(_utils_DialogBox_js__WEBPACK_IMPORTED_MODULE_9__["dialogBoxCreate"])("Hmm, something went wrong when trying to purchase an Augmentation. " +
- "Please report this to the game developer with an explanation of how to " +
- "reproduce this.");
- }
- Object(_utils_YesNoBox_js__WEBPACK_IMPORTED_MODULE_15__["yesNoBoxClose"])();
-}
-
-function getNextNeurofluxLevel() {
- var aug = _Augmentations_js__WEBPACK_IMPORTED_MODULE_0__["Augmentations"][_Augmentations_js__WEBPACK_IMPORTED_MODULE_0__["AugmentationNames"].NeuroFluxGovernor];
- if (aug == null) {
- for (var i = 0; i < _Player_js__WEBPACK_IMPORTED_MODULE_7__["Player"].augmentations.length; ++i) {
- if (_Player_js__WEBPACK_IMPORTED_MODULE_7__["Player"].augmentations[i].name == _Augmentations_js__WEBPACK_IMPORTED_MODULE_0__["AugmentationNames"].NeuroFluxGovernor) {
- aug = _Player_js__WEBPACK_IMPORTED_MODULE_7__["Player"].augmentations[i];
- }
- }
- if (aug == null) {
- console.log("WARNING: Could not find NeuroFlux Governor aug. This is OK if " +
- "it happens during the loading/initialization of the game, but probably " +
- "indicates something seriously wrong at other times");
- return 1;
- }
- }
- var nextLevel = aug.level + 1;
- for (var i = 0; i < _Player_js__WEBPACK_IMPORTED_MODULE_7__["Player"].queuedAugmentations.length; ++i) {
- if (_Player_js__WEBPACK_IMPORTED_MODULE_7__["Player"].queuedAugmentations[i].name == _Augmentations_js__WEBPACK_IMPORTED_MODULE_0__["AugmentationNames"].NeuroFluxGovernor) {
- ++nextLevel;
- }
- }
- return nextLevel;
-}
-
-function processPassiveFactionRepGain(numCycles) {
- var numTimesGain = (numCycles / 600) * _Player_js__WEBPACK_IMPORTED_MODULE_7__["Player"].faction_rep_mult;
- for (var name in Factions) {
- if (Factions.hasOwnProperty(name)) {
- var faction = Factions[name];
-
- //TODO Get hard value of 1 rep per "rep gain cycle"" for now..
- //maybe later make this based on
- //a player's 'status' like how powerful they are and how much money they have
- if (faction.isMember) {faction.playerReputation += (numTimesGain * _BitNode_js__WEBPACK_IMPORTED_MODULE_1__["BitNodeMultipliers"].FactionPassiveRepGain);}
- }
- }
-}
-
-
-
-
-/***/ }),
-/* 12 */
-/*!***************************!*\
- !*** ./utils/YesNoBox.js ***!
- \***************************/
-/***/ (function(module, __webpack_exports__, __webpack_require__) {
-
-"use strict";
-__webpack_require__.r(__webpack_exports__);
-/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "yesNoBoxCreate", function() { return yesNoBoxCreate; });
-/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "yesNoTxtInpBoxCreate", function() { return yesNoTxtInpBoxCreate; });
-/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "yesNoBoxGetYesButton", function() { return yesNoBoxGetYesButton; });
-/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "yesNoBoxGetNoButton", function() { return yesNoBoxGetNoButton; });
-/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "yesNoTxtInpBoxGetYesButton", function() { return yesNoTxtInpBoxGetYesButton; });
-/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "yesNoTxtInpBoxGetNoButton", function() { return yesNoTxtInpBoxGetNoButton; });
-/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "yesNoTxtInpBoxGetInput", function() { return yesNoTxtInpBoxGetInput; });
-/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "yesNoBoxClose", function() { return yesNoBoxClose; });
-/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "yesNoTxtInpBoxClose", function() { return yesNoTxtInpBoxClose; });
-/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "yesNoBoxOpen", function() { return yesNoBoxOpen; });
-/* harmony import */ var _HelperFunctions_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./HelperFunctions.js */ 1);
-
-/* Generic Yes-No Pop-up box
- * Can be used to create pop-up boxes that require a yes/no response from player
- */
-var yesNoBoxOpen = false;
-function yesNoBoxClose() {
- var container = document.getElementById("yes-no-box-container");
- if (container) {
- container.style.display = "none";
- } else {
- console.log("ERROR: Container not found for YesNoBox");
- }
- yesNoBoxOpen = false;
- return false; //So that 'return yesNoBoxClose()' is return false in event listeners
-}
-
-function yesNoBoxGetYesButton() {
- return Object(_HelperFunctions_js__WEBPACK_IMPORTED_MODULE_0__["clearEventListeners"])("yes-no-box-yes");
-}
-
-function yesNoBoxGetNoButton() {
- return Object(_HelperFunctions_js__WEBPACK_IMPORTED_MODULE_0__["clearEventListeners"])("yes-no-box-no");
-}
-
-function yesNoBoxCreate(txt) {
- if (yesNoBoxOpen) {return false;} //Already open
- yesNoBoxOpen = true;
- var textElement = document.getElementById("yes-no-box-text");
- if (textElement) {
- textElement.innerHTML = txt;
- }
-
- var c = document.getElementById("yes-no-box-container");
- if (c) {
- c.style.display = "block";
- } else {
- console.log("ERROR: Container not found for YesNoBox");
- }
- return true;
-}
-
-/* Generic Yes-No POp-up Box with Text input */
-function yesNoTxtInpBoxClose() {
- var c = document.getElementById("yes-no-text-input-box-container");
- if (c) {
- c.style.display = "none";
- } else {
- console.log("ERROR: Container not found for YesNoTextInputBox");
- }
- yesNoBoxOpen = false;
- document.getElementById("yes-no-text-input-box-input").value = "";
- return false;
-}
-
-function yesNoTxtInpBoxGetYesButton() {
- return Object(_HelperFunctions_js__WEBPACK_IMPORTED_MODULE_0__["clearEventListeners"])("yes-no-text-input-box-yes");
-}
-
-function yesNoTxtInpBoxGetNoButton() {
- return Object(_HelperFunctions_js__WEBPACK_IMPORTED_MODULE_0__["clearEventListeners"])("yes-no-text-input-box-no");
-}
-
-function yesNoTxtInpBoxGetInput() {
- var val = document.getElementById("yes-no-text-input-box-input").value;
- val = val.replace(/\s+/g, '');
- return val;
-}
-
-function yesNoTxtInpBoxCreate(txt) {
- yesNoBoxOpen = true;
- var txtE = document.getElementById("yes-no-text-input-box-text");
- if (txtE) {
- txtE.innerHTML = txt;
- }
-
- var c = document.getElementById("yes-no-text-input-box-container");
- if (c) {
- c.style.display = "block";
- } else {
- console.log("ERROR: Container not found for YesNoTextInputBox");
- }
-
- document.getElementById("yes-no-text-input-box-input").focus();
-}
-
-
-
-
-/***/ }),
-/* 13 */
-/*!******************************!*\
- !*** ./utils/numeral.min.js ***!
- \******************************/
-/***/ (function(module, exports, __webpack_require__) {
-
-var __WEBPACK_AMD_DEFINE_FACTORY__, __WEBPACK_AMD_DEFINE_RESULT__;/*! @preserve
- * numeral.js
- * version : 2.0.6
- * author : Adam Draper
- * license : MIT
- * http://adamwdraper.github.com/Numeral-js/
- */
-!function(a,b){ true?!(__WEBPACK_AMD_DEFINE_FACTORY__ = (b),
- __WEBPACK_AMD_DEFINE_RESULT__ = (typeof __WEBPACK_AMD_DEFINE_FACTORY__ === 'function' ?
- (__WEBPACK_AMD_DEFINE_FACTORY__.call(exports, __webpack_require__, exports, module)) :
- __WEBPACK_AMD_DEFINE_FACTORY__),
- __WEBPACK_AMD_DEFINE_RESULT__ !== undefined && (module.exports = __WEBPACK_AMD_DEFINE_RESULT__)):undefined}(this,function(){function a(a,b){this._input=a,this._value=b}var b,c,d="2.0.6",e={},f={},g={currentLocale:"en",zeroFormat:null,nullFormat:null,defaultFormat:"0,0",scalePercentBy100:!0},h={currentLocale:g.currentLocale,zeroFormat:g.zeroFormat,nullFormat:g.nullFormat,defaultFormat:g.defaultFormat,scalePercentBy100:g.scalePercentBy100};return b=function(d){var f,g,i,j;if(b.isNumeral(d))f=d.value();else if(0===d||"undefined"==typeof d)f=0;else if(null===d||c.isNaN(d))f=null;else if("string"==typeof d)if(h.zeroFormat&&d===h.zeroFormat)f=0;else if(h.nullFormat&&d===h.nullFormat||!d.replace(/[^0-9]+/g,"").length)f=null;else{for(g in e)if(j="function"==typeof e[g].regexps.unformat?e[g].regexps.unformat():e[g].regexps.unformat,j&&d.match(j)){i=e[g].unformat;break}i=i||b._.stringToNumber,f=i(d)}else f=Number(d)||null;return new a(d,f)},b.version=d,b.isNumeral=function(b){return b instanceof a},b._=c={numberToFormat:function(a,c,d){var e,g,h,i,j,k,l,m=f[b.options.currentLocale],n=!1,o=!1,p=0,q="",r=1e12,s=1e9,t=1e6,u=1e3,v="",w=!1;if(a=a||0,g=Math.abs(a),b._.includes(c,"(")?(n=!0,c=c.replace(/[\(|\)]/g,"")):(b._.includes(c,"+")||b._.includes(c,"-"))&&(j=b._.includes(c,"+")?c.indexOf("+"):0>a?c.indexOf("-"):-1,c=c.replace(/[\+|\-]/g,"")),b._.includes(c,"a")&&(e=c.match(/a(k|m|b|t)?/),e=e?e[1]:!1,b._.includes(c," a")&&(q=" "),c=c.replace(new RegExp(q+"a[kmbt]?"),""),g>=r&&!e||"t"===e?(q+=m.abbreviations.trillion,a/=r):r>g&&g>=s&&!e||"b"===e?(q+=m.abbreviations.billion,a/=s):s>g&&g>=t&&!e||"m"===e?(q+=m.abbreviations.million,a/=t):(t>g&&g>=u&&!e||"k"===e)&&(q+=m.abbreviations.thousand,a/=u)),b._.includes(c,"[.]")&&(o=!0,c=c.replace("[.]",".")),h=a.toString().split(".")[0],i=c.split(".")[1],k=c.indexOf(","),p=(c.split(".")[0].split(",")[0].match(/0/g)||[]).length,i?(b._.includes(i,"[")?(i=i.replace("]",""),i=i.split("["),v=b._.toFixed(a,i[0].length+i[1].length,d,i[1].length)):v=b._.toFixed(a,i.length,d),h=v.split(".")[0],v=b._.includes(v,".")?m.delimiters.decimal+v.split(".")[1]:"",o&&0===Number(v.slice(1))&&(v="")):h=b._.toFixed(a,0,d),q&&!e&&Number(h)>=1e3&&q!==m.abbreviations.trillion)switch(h=String(Number(h)/1e3),q){case m.abbreviations.thousand:q=m.abbreviations.million;break;case m.abbreviations.million:q=m.abbreviations.billion;break;case m.abbreviations.billion:q=m.abbreviations.trillion}if(b._.includes(h,"-")&&(h=h.slice(1),w=!0),h.length
" +
- "This is the first BitNode that you play through. It has no special " +
- "modifications or mechanics.
" +
- "Destroying this BitNode will give you Source-File 1, or if you already have " +
- "this Source-File it will upgrade its level up to a maximum of 3. This Source-File " +
- "lets the player start with 32GB of RAM on his/her home computer when entering a " +
- "new BitNode, and also increases all of the player's multipliers by:
" +
- "Level 1: 16%
" +
- "Level 2: 24%
" +
- "Level 3: 28%");
- BitNodes["BitNode2"] = new BitNode(2, "Rise of the Underworld", "From the shadows, they rose", //Gangs
- "From the shadows, they rose.
Organized crime groups quickly filled the void of power " +
- "left behind from the collapse of Western government in the 2050's. As society and civlization broke down, " +
- "people quickly succumbed to the innate human impulse of evil and savagery. The organized crime " +
- "factions quickly rose to the top of the modern world.
" +
- "In this BitNode:
The maximum amount of money available on a server is significantly decreased
" +
- "The amount of money gained from crimes and Infiltration is tripled
" +
- "Certain Factions (Slum Snakes, Tetrads, The Syndicate, The Dark Army, Speakers for the Dead, " +
- "NiteSec, The Black Hand) give the player the ability to form and manage their own gangs. These gangs " +
- "will earn the player money and reputation with the corresponding Faction
" +
- "Every Augmentation in the game will be available through the Factions listed above
" +
- "For every Faction NOT listed above, reputation gains are halved
" +
- "You will no longer gain passive reputation with Factions
" +
- "Destroying this BitNode will give you Source-File 2, or if you already have this Source-File it will " +
- "upgrade its level up to a maximum of 3. This Source-File increases the player's crime success rate, " +
- "crime money, and charisma multipliers by:
" +
- "Level 1: 20%
" +
- "Level 2: 30%
" +
- "Level 3: 35%");
- BitNodes["BitNode3"] = new BitNode(3, "Corporatocracy", "The Price of Civilization",
- "Our greatest illusion is that a healthy society can revolve around a " +
- "single-minded pursuit of wealth.
" +
- "Sometime in the early 21st century economic and political globalization turned " +
- "the world into a corporatocracy, and it never looked back. Now, the privileged " +
- "elite will happily bankrupt their own countrymen, decimate their own community, " +
- "and evict their neighbors from houses in their desperate bid to increase their wealth.
" +
- "In this BitNode you can create and manage your own corporation. Running a successful corporation " +
- "has the potential of generating massive profits. All other forms of income are reduced by 75%. Furthermore:
" +
- "The price and reputation cost of all Augmentations is tripled
" +
- "The starting and maximum amount of money on servers is reduced by 75%
" +
- "Server growth rate is reduced by 80%
" +
- "You will start out with $150b so that you can start your corporation
" +
- "You now only need 75 reputation with a faction in order to donate to it, rather than 150
" +
- "Destroying this BitNode will give you Source-File 3, or if you already have this Source-File it will " +
- "upgrade its level up to a maximum of 3. This Source-File lets you create corporations on other BitNodes (although " +
- "some BitNodes will disable this mechanic). This Source-File also increases your charisma and company salary multipliers by:
" +
- "Level 1: 8%
" +
- "Level 2: 12%
" +
- "Level 3: 14%");
- BitNodes["BitNode4"] = new BitNode(4, "The Singularity", "The Man and the Machine", "The Singularity has arrived. The human race is gone, replaced " +
- "by artificially superintelligent beings that are more machine than man.
" +
- "In this BitNode, progressing is significantly harder. Experience gain rates " +
- "for all stats are reduced. Most methods of earning money will now give significantly less.
" +
- "In this BitNode you will gain access to a new set of Netscript Functions known as Singularity Functions. " +
- "These functions allow you to control most aspects of the game through scripts, including working for factions/companies, " +
- "purchasing/installing Augmentations, and creating programs.
" +
- "Destroying this BitNode will give you Source-File 4, or if you already have this Source-File it will " +
- "upgrade its level up to a maximum of 3. This Source-File lets you access and use the Singularity " +
- "Functions in other BitNodes. Each level of this Source-File will open up more Singularity Functions " +
- "that you can use.");
- BitNodes["BitNode5"] = new BitNode(5, "Artificial Intelligence", "Posthuman", "They said it couldn't be done. They said the human brain, " +
- "along with its consciousness and intelligence, couldn't be replicated. They said the complexity " +
- "of the brain results from unpredictable, nonlinear interactions that couldn't be modeled " +
- "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 remains the same
" +
- "Most methods of earning money now give significantly less
" +
- "Infiltration gives 50% more reputation and money
" +
- "Corporations have 50% lower valuations and are therefore less profitable
" +
- "Augmentations are more expensive
" +
- "Hacking experience gain rates are reduced
" +
- "Destroying this BitNode will give you Source-File 5, or if you already have this Source-File it will " +
- "upgrade its level up to a maximum of 3. This Source-File grants you a special new stat called Intelligence. " +
- "Intelligence is unique because it is permanent and persistent (it never gets reset back to 1). However " +
- "gaining Intelligence experience is much slower than other stats, and it is also hidden (you won't know " +
- "when you gain experience and how much). Higher Intelligence levels will boost your production for many actions " +
- "in the game.
" +
- "In addition, this Source-File will unlock the getBitNodeMultipliers() Netscript function, " +
- "and will also raise all of your hacking-related multipliers by:
" +
- "Level 1: 4%
" +
- "Level 2: 6%
" +
- "Level 3: 7%");
- BitNodes["BitNode6"] = new BitNode(6, "Bladeburners", "Like Tears in Rain",
- "In the middle of the 21st century, OmniTek Incorporated began designing and manufacturing advanced synthetic " +
- "androids, or Synthoids for short. They achieved a major technological breakthrough in the sixth generation " +
- "of their Synthoid design, called MK-VI, by developing a hyperintelligent AI. Many argue that this was " +
- "the first sentient AI ever created. This resulted in Synthoid models that were stronger, faster, and more intelligent " +
- "than the humans that had created them.
" +
- "In this BitNode you will be able to access the Bladeburner Division at the NSA, which provides a new mechanic " +
- "for progression. Furthermore:
" +
- "Hacking and Hacknet Nodes will be significantly less profitable
" +
- "Your hacking level is reduced by 50%
" +
- "Hacking experience gain from scripts is reduced by 75%
" +
- "Corporations have 80% lower valuations and are therefore less profitable
" +
- "Working for companies is 50% less profitable
" +
- "Crimes and Infiltration are 50% less profitable
" +
- "Destroying this BitNode will give you Source-File 6, or if you already have this Source-File it will upgrade " +
- "its level up to a maximum of 3. This Source-File allows you to access the NSA's Bladeburner Division in other " +
- "BitNodes. In addition, this Source-File will raise the experience gain rate of all your combat stats by:
" +
- "Level 1: 8%
" +
- "Level 2: 12%
" +
- "Level 3: 14%");
- BitNodes["BitNode7"] = new BitNode(7, "Hacktocracy", "COMING SOON"); //Healthy Hacknet balancing mechanic
- BitNodes["BitNode8"] = new BitNode(8, "Ghost of Wall Street", "Money never sleeps",
- "You are trying to make a name for yourself as an up-and-coming hedge fund manager on Wall Street.
" +
- "In this BitNode:
" +
- "You start with $100 million
" +
- "The only way to earn money is by trading on the stock market
" +
- "You start with a WSE membership and access to the TIX API
" +
- "You are able to short stocks and place different types of orders (limit/stop)
" +
- "You can immediately donate to factions to gain reputation
" +
- "Destroying this BitNode will give you Source-File 8, or if you already have this Source-File it will " +
- "upgrade its level up to a maximum of 3. This Source-File grants the following benefits:
" +
- "Level 1: Permanent access to WSE and TIX API
" +
- "Level 2: Ability to short stocks in other BitNodes
" +
- "Level 3: Ability to use limit/stop orders in other BitNodes
" +
- "This Source-File also increases your hacking growth multipliers by: " +
- "
Level 1: 8%
Level 2: 12%
Level 3: 14%");
- BitNodes["BitNode9"] = new BitNode(9, "Do Androids Dream?", "COMING SOON");
- BitNodes["BitNode10"] = new BitNode(10, "MegaCorp", "COMING SOON"); //Not sure yet
- BitNodes["BitNode11"] = new BitNode(11, "The Big Crash", "Okay. Sell it all.",
- "The 2050s was defined by the massive amounts of violent civil unrest and anarchic rebellion that rose all around the world. It was this period " +
- "of disorder that eventually lead to the governmental reformation of many global superpowers, most notably " +
- "the USA and China. But just as the world was slowly beginning to recover from these dark times, financial catastrophe hit.
" +
- "In many countries, the high cost of trying to deal with the civil disorder bankrupted the governments. In all of this chaos and confusion, hackers " +
- "were able to steal billions of dollars from the world's largest electronic banks, prompting an international banking crisis as " +
- "governments were unable to bail out insolvent banks. Now, the world is slowly crumbling in the middle of the biggest economic crisis of all time.
" +
- "In this BitNode:
" +
- "The starting and maximum amount of money available on servers is significantly decreased
" +
- "The growth rate of servers is halved
" +
- "Weakening a server is twice as effective
" +
- "Company wages are decreased by 50%
" +
- "Corporation valuations are 99% lower and are therefore significantly less profitable
" +
- "Hacknet Node production is significantly decreased
" +
- "Crime and Infiltration are more lucrative
" +
- "Augmentations are twice as expensive
" +
- "Destroying this BitNode will give you Source-File 11, or if you already have this Source-File it will " +
- "upgrade its level up to a maximum of 3. This Source-File makes it so that company favor increases BOTH " +
- "the player's salary and reputation gain rate at that company by 1% per favor (rather than just the reputation gain). " +
- "This Source-File also increases the player's company salary and reputation gain multipliers by:
" +
- "Level 1: 24%
" +
- "Level 2: 36%
" +
- "Level 3: 42%");
-
- //Books: Frontera, Shiner
- BitNodes["BitNode12"] = new BitNode(12, "fOS", "COMING SOON"); //Unlocks the new game mode and the rest of the BitNodes
- BitNodes["BitNode13"] = new BitNode(13, "", "COMING SOON");
- BitNodes["BitNode14"] = new BitNode(14, "", "COMING SOON");
- BitNodes["BitNode15"] = new BitNode(15, "", "COMING SOON");
- BitNodes["BitNode16"] = new BitNode(16, "", "COMING SOON");
- BitNodes["BitNode17"] = new BitNode(17, "", "COMING SOON");
- BitNodes["BitNode18"] = new BitNode(18, "", "COMING SOON");
- BitNodes["BitNode19"] = new BitNode(19, "", "COMING SOON");
- BitNodes["BitNode20"] = new BitNode(20, "", "COMING SOON");
- BitNodes["BitNode21"] = new BitNode(21, "", "COMING SOON");
- BitNodes["BitNode22"] = new BitNode(22, "", "COMING SOON");
- BitNodes["BitNode23"] = new BitNode(23, "", "COMING SOON");
- BitNodes["BitNode24"] = new BitNode(24, "", "COMING SOON");
-}
-
-let BitNodeMultipliers = {
- HackingLevelMultiplier: 1,
-
- ServerMaxMoney: 1,
- ServerStartingMoney: 1,
- ServerGrowthRate: 1,
- ServerWeakenRate: 1,
- ServerStartingSecurity: 1,
-
- ManualHackMoney: 1,
- ScriptHackMoney: 1,
- CompanyWorkMoney: 1,
- CrimeMoney: 1,
- HacknetNodeMoney: 1,
-
- CompanyWorkExpGain: 1,
- ClassGymExpGain: 1,
- FactionWorkExpGain: 1,
- HackExpGain: 1,
- CrimeExpGain: 1,
-
- FactionWorkRepGain: 1,
- FactionPassiveRepGain: 1,
- RepToDonateToFaction: 1,
-
- AugmentationRepCost: 1,
- AugmentationMoneyCost: 1,
-
- InfiltrationMoney: 1,
- InfiltrationRep: 1,
-
- CorporationValuation: 1,
-}
-
-function initBitNodeMultipliers() {
- if (_Player_js__WEBPACK_IMPORTED_MODULE_0__["Player"].bitNodeN == null) {
- _Player_js__WEBPACK_IMPORTED_MODULE_0__["Player"].bitNodeN = 1;
- }
- for (var mult in BitNodeMultipliers) {
- if (BitNodeMultipliers.hasOwnProperty(mult)) {
- BitNodeMultipliers[mult] = 1;
- }
- }
-
- switch (_Player_js__WEBPACK_IMPORTED_MODULE_0__["Player"].bitNodeN) {
- case 1: //Source Genesis (every multiplier is 1)
- break;
- case 2: //Rise of the Underworld
- BitNodeMultipliers.ServerMaxMoney = 0.2;
- BitNodeMultipliers.ServerStartingMoney = 0.4;
- BitNodeMultipliers.CrimeMoney = 3;
- BitNodeMultipliers.InfiltrationMoney = 3;
- BitNodeMultipliers.FactionWorkRepGain = 0.5;
- BitNodeMultipliers.FactionPassiveRepGain = 0;
- break;
- case 3: //Corporatocracy
- BitNodeMultipliers.RepToDonateToFaction = 0.5;
- BitNodeMultipliers.AugmentationRepCost = 3;
- BitNodeMultipliers.AugmentationMoneyCost = 3;
- BitNodeMultipliers.ServerMaxMoney = 0.25;
- BitNodeMultipliers.ServerStartingMoney = 0.25;
- BitNodeMultipliers.ServerGrowthRate = 0.20;
- BitNodeMultipliers.ScriptHackMoney = 0.25;
- BitNodeMultipliers.CompanyWorkMoney = 0.25;
- BitNodeMultipliers.CrimeMoney = 0.25;
- BitNodeMultipliers.HacknetNodeMoney = 0.25;
- break;
- case 4: //The Singularity
- BitNodeMultipliers.ServerMaxMoney = 0.15;
- BitNodeMultipliers.ServerStartingMoney = 0.75;
- BitNodeMultipliers.ScriptHackMoney = 0.2;
- BitNodeMultipliers.CompanyWorkMoney = 0.1;
- BitNodeMultipliers.CrimeMoney = 0.2;
- BitNodeMultipliers.HacknetNodeMoney = 0.05;
- BitNodeMultipliers.CompanyWorkExpGain = 0.5;
- BitNodeMultipliers.ClassGymExpGain = 0.5;
- BitNodeMultipliers.FactionWorkExpGain = 0.5;
- BitNodeMultipliers.HackExpGain = 0.4;
- BitNodeMultipliers.CrimeExpGain = 0.5;
- BitNodeMultipliers.FactionWorkRepGain = 0.75;
- break;
- case 5: //Artificial intelligence
- BitNodeMultipliers.ServerMaxMoney = 2;
- BitNodeMultipliers.ServerStartingSecurity = 2;
- BitNodeMultipliers.ServerStartingMoney = 0.5;
- BitNodeMultipliers.ScriptHackMoney = 0.15;
- BitNodeMultipliers.HacknetNodeMoney = 0.2;
- BitNodeMultipliers.CrimeMoney = 0.5;
- BitNodeMultipliers.InfiltrationRep = 1.5;
- BitNodeMultipliers.InfiltrationMoney = 1.5;
- BitNodeMultipliers.AugmentationMoneyCost = 2;
- BitNodeMultipliers.HackExpGain = 0.5;
- BitNodeMultipliers.CorporationValuation = 0.5;
- break;
- case 6: //Bladeburner
- BitNodeMultipliers.HackingLevelMultiplier = 0.5;
- BitNodeMultipliers.ServerMaxMoney = 0.5;
- BitNodeMultipliers.ServerStartingMoney = 0.5;
- BitNodeMultipliers.ServerStartingSecurity = 1.5;
- BitNodeMultipliers.ScriptHackMoney = 0.5;
- BitNodeMultipliers.CompanyWorkMoney = 0.5;
- BitNodeMultipliers.CrimeMoney = 0.5;
- BitNodeMultipliers.InfiltrationMoney = 0.5;
- BitNodeMultipliers.CorporationValuation = 0.2;
- BitNodeMultipliers.HacknetNodeMoney = 0.2;
- BitNodeMultipliers.FactionPassiveRepGain = 0;
- BitNodeMultipliers.HackExpGain = 0.25;
- break;
- case 8: //Ghost of Wall Street
- BitNodeMultipliers.ScriptHackMoney = 0;
- BitNodeMultipliers.ManualHackMoney = 0;
- BitNodeMultipliers.CompanyWorkMoney = 0;
- BitNodeMultipliers.CrimeMoney = 0;
- BitNodeMultipliers.HacknetNodeMoney = 0;
- BitNodeMultipliers.InfiltrationMoney = 0;
- BitNodeMultipliers.RepToDonateToFaction = 0;
- BitNodeMultipliers.CorporationValuation = 0;
- break;
- case 11: //The Big Crash
- BitNodeMultipliers.ServerMaxMoney = 0.1;
- BitNodeMultipliers.ServerStartingMoney = 0.1;
- BitNodeMultipliers.ServerGrowthRate = 0.5;
- BitNodeMultipliers.ServerWeakenRate = 2;
- BitNodeMultipliers.CrimeMoney = 3;
- BitNodeMultipliers.CompanyWorkMoney = 0.5;
- BitNodeMultipliers.HacknetNodeMoney = 0.1;
- BitNodeMultipliers.AugmentationMoneyCost = 2;
- BitNodeMultipliers.InfiltrationMoney = 2.5;
- BitNodeMultipliers.InfiltrationRep = 2.5;
- BitNodeMultipliers.CorporationValuation = 0.01;
- break;
- default:
- console.log("WARNING: Player.bitNodeN invalid");
- break;
- }
-}
-
-
-
-
-/***/ }),
-/* 16 */
-/*!****************************!*\
- !*** ./utils/IPAddress.js ***!
- \****************************/
-/***/ (function(module, __webpack_exports__, __webpack_require__) {
-
-"use strict";
-__webpack_require__.r(__webpack_exports__);
-/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "createRandomIp", function() { return createRandomIp; });
-/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "ipExists", function() { return ipExists; });
-/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "isValidIPAddress", function() { return isValidIPAddress; });
-/* harmony import */ var _src_Server_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../src/Server.js */ 10);
-
-/* Functions to deal with manipulating IP addresses*/
-
-//Generate a random IP address
-//Will not return an IP address that already exists in the AllServers array
-function createRandomIp() {
- var ip = createRandomByte(99) +'.' +
- createRandomByte(9) +'.' +
- createRandomByte(9) +'.' +
- createRandomByte(9);
-
- //If the Ip already exists, recurse to create a new one
- if (ipExists(ip)) {
- return createRandomIp();
- }
- return ip;
-}
-
-//Returns true if the IP already exists in one of the game's servers
-function ipExists(ip) {
- for (var property in _src_Server_js__WEBPACK_IMPORTED_MODULE_0__["AllServers"]) {
- if (_src_Server_js__WEBPACK_IMPORTED_MODULE_0__["AllServers"].hasOwnProperty(property)) {
- if (property == ip) {
- return true;
- }
- }
- }
- return false;
-}
-
-function createRandomByte(n=9) {
- return Math.round(Math.random()*n);
-}
-
-function isValidIPAddress(ipaddress) {
- if (/^(25[0-6]|2[0-4][0-9]|[01]?[0-9][0-9]?)\.(25[0-6]|2[0-4][0-9]|[01]?[0-9][0-9]?)\.(25[0-6]|2[0-4][0-9]|[01]?[0-9][0-9]?)\.(25[0-6]|2[0-4][0-9]|[01]?[0-9][0-9]?)$/.test(ipaddress))
- {
- return true;
- }
- return false;
-}
-
-
-
-
-/***/ }),
-/* 17 */
-/*!*********************************!*\
- !*** ./src/SpecialServerIps.js ***!
- \*********************************/
-/***/ (function(module, __webpack_exports__, __webpack_require__) {
-
-"use strict";
-__webpack_require__.r(__webpack_exports__);
-/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "SpecialServerNames", function() { return SpecialServerNames; });
-/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "SpecialServerIps", function() { return SpecialServerIps; });
-/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "SpecialServerIpsMap", function() { return SpecialServerIpsMap; });
-/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "loadSpecialServerIps", function() { return loadSpecialServerIps; });
-/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "prestigeSpecialServerIps", function() { return prestigeSpecialServerIps; });
-/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "initSpecialServerIps", function() { return initSpecialServerIps; });
-/* harmony import */ var _utils_JSONReviver_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../utils/JSONReviver.js */ 8);
-
-
-/* Holds IP of Special Servers */
-let SpecialServerNames = {
- FulcrumSecretTechnologies: "Fulcrum Secret Technologies Server",
- CyberSecServer: "CyberSec Server",
- NiteSecServer: "NiteSec Server",
- TheBlackHandServer: "The Black Hand Server",
- BitRunnersServer: "BitRunners Server",
- TheDarkArmyServer: "The Dark Army Server",
- DaedalusServer: "Daedalus Server",
- WorldDaemon: "w0r1d_d43m0n",
-}
-function SpecialServerIpsMap() {}
-
-SpecialServerIpsMap.prototype.addIp = function(name, ip) {
- this[name] = ip;
-}
-
-SpecialServerIpsMap.prototype.toJSON = function() {
- return Object(_utils_JSONReviver_js__WEBPACK_IMPORTED_MODULE_0__["Generic_toJSON"])("SpecialServerIpsMap", this);
-}
-
-SpecialServerIpsMap.fromJSON = function(value) {
- return Object(_utils_JSONReviver_js__WEBPACK_IMPORTED_MODULE_0__["Generic_fromJSON"])(SpecialServerIpsMap, value.data);
-}
-
-_utils_JSONReviver_js__WEBPACK_IMPORTED_MODULE_0__["Reviver"].constructors.SpecialServerIpsMap = SpecialServerIpsMap;
-
-let SpecialServerIps = new SpecialServerIpsMap();
-
-function prestigeSpecialServerIps() {
- for (var member in SpecialServerIps) {
- delete SpecialServerIps[member];
- }
- SpecialServerIps = null;
- SpecialServerIps = new SpecialServerIpsMap();
-}
-
-function loadSpecialServerIps(saveString) {
- SpecialServerIps = JSON.parse(saveString, _utils_JSONReviver_js__WEBPACK_IMPORTED_MODULE_0__["Reviver"]);
-}
-
-function initSpecialServerIps() {
- SpecialServerIps = new SpecialServerIpsMap();
-}
-
-
-
-
-/***/ }),
-/* 18 */
-/*!*************************!*\
- !*** ./src/Terminal.js ***!
- \*************************/
-/***/ (function(module, __webpack_exports__, __webpack_require__) {
-
-"use strict";
-__webpack_require__.r(__webpack_exports__);
-/* WEBPACK VAR INJECTION */(function($) {/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "postNetburnerText", function() { return postNetburnerText; });
-/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "post", function() { return post; });
-/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "Terminal", function() { return Terminal; });
-/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "KEY", function() { return KEY; });
-/* harmony import */ var _Alias_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./Alias.js */ 30);
-/* harmony import */ var _Constants_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./Constants.js */ 3);
-/* harmony import */ var _CreateProgram_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./CreateProgram.js */ 14);
-/* harmony import */ var _DarkWeb_js__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./DarkWeb.js */ 35);
-/* harmony import */ var _engine_js__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ./engine.js */ 5);
-/* harmony import */ var _Fconf_js__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ./Fconf.js */ 33);
-/* harmony import */ var _HelpText_js__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! ./HelpText.js */ 71);
-/* harmony import */ var _InteractiveTutorial_js__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! ./InteractiveTutorial.js */ 25);
-/* harmony import */ var _Literature_js__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! ./Literature.js */ 53);
-/* harmony import */ var _Message_js__WEBPACK_IMPORTED_MODULE_9__ = __webpack_require__(/*! ./Message.js */ 29);
-/* harmony import */ var _NetscriptEvaluator_js__WEBPACK_IMPORTED_MODULE_10__ = __webpack_require__(/*! ./NetscriptEvaluator.js */ 6);
-/* harmony import */ var _NetscriptWorker_js__WEBPACK_IMPORTED_MODULE_11__ = __webpack_require__(/*! ./NetscriptWorker.js */ 21);
-/* harmony import */ var _Player_js__WEBPACK_IMPORTED_MODULE_12__ = __webpack_require__(/*! ./Player.js */ 0);
-/* harmony import */ var _RedPill_js__WEBPACK_IMPORTED_MODULE_13__ = __webpack_require__(/*! ./RedPill.js */ 45);
-/* harmony import */ var _Script_js__WEBPACK_IMPORTED_MODULE_14__ = __webpack_require__(/*! ./Script.js */ 26);
-/* harmony import */ var _Server_js__WEBPACK_IMPORTED_MODULE_15__ = __webpack_require__(/*! ./Server.js */ 10);
-/* harmony import */ var _Settings_js__WEBPACK_IMPORTED_MODULE_16__ = __webpack_require__(/*! ./Settings.js */ 23);
-/* harmony import */ var _SpecialServerIps_js__WEBPACK_IMPORTED_MODULE_17__ = __webpack_require__(/*! ./SpecialServerIps.js */ 17);
-/* harmony import */ var _TextFile_js__WEBPACK_IMPORTED_MODULE_18__ = __webpack_require__(/*! ./TextFile.js */ 43);
-/* harmony import */ var _utils_StringHelperFunctions_js__WEBPACK_IMPORTED_MODULE_19__ = __webpack_require__(/*! ../utils/StringHelperFunctions.js */ 2);
-/* harmony import */ var _utils_HelperFunctions_js__WEBPACK_IMPORTED_MODULE_20__ = __webpack_require__(/*! ../utils/HelperFunctions.js */ 1);
-/* harmony import */ var _utils_LogBox_js__WEBPACK_IMPORTED_MODULE_21__ = __webpack_require__(/*! ../utils/LogBox.js */ 51);
-/* harmony import */ var _utils_YesNoBox_js__WEBPACK_IMPORTED_MODULE_22__ = __webpack_require__(/*! ../utils/YesNoBox.js */ 12);
-/* harmony import */ var jszip__WEBPACK_IMPORTED_MODULE_23__ = __webpack_require__(/*! jszip */ 120);
-/* harmony import */ var jszip__WEBPACK_IMPORTED_MODULE_23___default = /*#__PURE__*/__webpack_require__.n(jszip__WEBPACK_IMPORTED_MODULE_23__);
-/* harmony import */ var file_saver__WEBPACK_IMPORTED_MODULE_24__ = __webpack_require__(/*! file-saver */ 119);
-/* harmony import */ var file_saver__WEBPACK_IMPORTED_MODULE_24___default = /*#__PURE__*/__webpack_require__.n(file_saver__WEBPACK_IMPORTED_MODULE_24__);
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-/* Write text to terminal */
-//If replace is true then spaces are replaced with " "
-function post(input) {
- $("#terminal-input").before(' ');
- updateTerminalScroll();
-}
-
-//Same thing as post but the td cells have ids so they can be animated for the hack progress bar
-function hackProgressBarPost(input) {
- $("#terminal-input").before('' + input + ' ');
- updateTerminalScroll();
-}
-
-function hackProgressPost(input) {
- $("#terminal-input").before('' + input + ' ');
- updateTerminalScroll();
-}
-
-//Scroll to the bottom of the terminal's 'text area'
-function updateTerminalScroll() {
- var element = document.getElementById("terminal-container");
- element.scrollTop = element.scrollHeight;
-}
-
-function postNetburnerText() {
- post("Bitburner v" + _Constants_js__WEBPACK_IMPORTED_MODULE_1__["CONSTANTS"].Version);
-}
-
-
-//Key Codes
-var KEY = {
- TAB: 9,
- ENTER: 13,
- CTRL: 17,
- UPARROW: 38,
- DOWNARROW: 40,
- A: 65,
- B: 66,
- C: 67,
- D: 68,
- E: 69,
- F: 70,
- H: 72,
- J: 74,
- K: 75,
- L: 76,
- M: 77,
- N: 78,
- O: 79,
- P: 80,
- R: 82,
- S: 83,
- U: 85,
- W: 87,
-}
-
-//Defines key commands in terminal
-$(document).keydown(function(event) {
- //Terminal
- if (_engine_js__WEBPACK_IMPORTED_MODULE_4__["Engine"].currentPage == _engine_js__WEBPACK_IMPORTED_MODULE_4__["Engine"].Page.Terminal) {
- var terminalInput = document.getElementById("terminal-input-text-box");
- if (terminalInput != null && !event.ctrlKey && !event.shiftKey) {terminalInput.focus();}
-
- if (event.keyCode === KEY.ENTER) {
- event.preventDefault(); //Prevent newline from being entered in Script Editor
- var command = $('input[class=terminal-input]').val();
- if (command.length > 0) {
- post(
- "[" +
- (_Fconf_js__WEBPACK_IMPORTED_MODULE_5__["FconfSettings"].ENABLE_TIMESTAMPS ? Terminal.getTimestamp() + " " : "") +
- _Player_js__WEBPACK_IMPORTED_MODULE_12__["Player"].getCurrentServer().hostname +
- " ~]> " + command
- );
-
- Terminal.resetTerminalInput(); //Clear input first
- Terminal.executeCommand(command);
- }
- }
-
- if (event.keyCode === KEY.C && event.ctrlKey) {
- if (_engine_js__WEBPACK_IMPORTED_MODULE_4__["Engine"]._actionInProgress) {
- //Cancel action
- post("Cancelling...");
- _engine_js__WEBPACK_IMPORTED_MODULE_4__["Engine"]._actionInProgress = false;
- Terminal.finishAction(true);
- } else if (_Fconf_js__WEBPACK_IMPORTED_MODULE_5__["FconfSettings"].ENABLE_BASH_HOTKEYS) {
- //Dont prevent default so it still copies
- Terminal.resetTerminalInput(); //Clear Terminal
- }
- }
-
- if (event.keyCode === KEY.L && event.ctrlKey) {
- event.preventDefault();
- Terminal.executeCommand("clear"); //Clear screen
- }
-
- //Ctrl p same as up arrow
- //Ctrl n same as down arrow
-
- if (event.keyCode === KEY.UPARROW ||
- (_Fconf_js__WEBPACK_IMPORTED_MODULE_5__["FconfSettings"].ENABLE_BASH_HOTKEYS && event.keyCode === KEY.P && event.ctrlKey)) {
- if (_Fconf_js__WEBPACK_IMPORTED_MODULE_5__["FconfSettings"].ENABLE_BASH_HOTKEYS) {event.preventDefault();}
- //Cycle through past commands
- if (terminalInput == null) {return;}
- var i = Terminal.commandHistoryIndex;
- var len = Terminal.commandHistory.length;
-
- if (len == 0) {return;}
- if (i < 0 || i > len) {
- Terminal.commandHistoryIndex = len;
- }
-
- if (i != 0) {
- --Terminal.commandHistoryIndex;
- }
- var prevCommand = Terminal.commandHistory[Terminal.commandHistoryIndex];
- terminalInput.value = prevCommand;
- setTimeout(function(){terminalInput.selectionStart = terminalInput.selectionEnd = 10000; }, 0);
- }
-
- if (event.keyCode === KEY.DOWNARROW ||
- (_Fconf_js__WEBPACK_IMPORTED_MODULE_5__["FconfSettings"].ENABLE_BASH_HOTKEYS && event.keyCode === KEY.M && event.ctrlKey)) {
- if (_Fconf_js__WEBPACK_IMPORTED_MODULE_5__["FconfSettings"].ENABLE_BASH_HOTKEYS) {event.preventDefault();}
- //Cycle through past commands
- if (terminalInput == null) {return;}
- var i = Terminal.commandHistoryIndex;
- var len = Terminal.commandHistory.length;
-
- if (len == 0) {return;}
- if (i < 0 || i > len) {
- Terminal.commandHistoryIndex = len;
- }
-
- //Latest command, put nothing
- if (i == len || i == len-1) {
- Terminal.commandHistoryIndex = len;
- terminalInput.value = "";
- } else {
- ++Terminal.commandHistoryIndex;
- var prevCommand = Terminal.commandHistory[Terminal.commandHistoryIndex];
- terminalInput.value = prevCommand;
- }
- }
-
- if (event.keyCode === KEY.TAB) {
- //Autocomplete
- if (terminalInput == null) {return;}
- var input = terminalInput.value;
- if (input == "") {return;}
- input = input.trim();
- input = input.replace(/\s\s+/g, ' ');
-
- var commandArray = input.split(" ");
- var index = commandArray.length - 2;
- if (index < -1) {index = 0;}
- var allPos = determineAllPossibilitiesForTabCompletion(input, index);
- if (allPos.length == 0) {return;}
-
- var arg = "";
- var command = "";
- if (commandArray.length == 0) {return;}
- if (commandArray.length == 1) {command = commandArray[0];}
- else if (commandArray.length == 2) {
- command = commandArray[0];
- arg = commandArray[1];
- } else if (commandArray.length == 3) {
- command = commandArray[0] + " " + commandArray[1];
- arg = commandArray[2];
- } else {
- arg = commandArray.pop();
- command = commandArray.join(" ");
- }
-
- tabCompletion(command, arg, allPos);
- }
-
- //Extra Bash Emulation Hotkeys, must be enabled through .fconf
- if (_Fconf_js__WEBPACK_IMPORTED_MODULE_5__["FconfSettings"].ENABLE_BASH_HOTKEYS) {
- if (event.keyCode === KEY.A && event.ctrlKey) {
- event.preventDefault();
- Terminal.moveTextCursor("home");
- }
-
- if (event.keyCode === KEY.E && event.ctrlKey) {
- event.preventDefault();
- Terminal.moveTextCursor("end");
- }
-
- if (event.keyCode === KEY.B && event.ctrlKey) {
- event.preventDefault();
- Terminal.moveTextCursor("prevchar");
- }
-
- if (event.keyCode === KEY.B && event.altKey) {
- event.preventDefault();
- Terminal.moveTextCursor("prevword");
- }
-
- if (event.keyCode === KEY.F && event.ctrlKey) {
- event.preventDefault();
- Terminal.moveTextCursor("nextchar");
- }
-
- if (event.keyCode === KEY.F && event.altKey) {
- event.preventDefault();
- Terminal.moveTextCursor("nextword");
- }
-
-
- if ((event.keyCode === KEY.H || event.keyCode === KEY.D) && event.ctrlKey) {
- Terminal.modifyInput("backspace");
- event.preventDefault();
- }
-
- //TODO AFTER THIS:
-
- //alt + d deletes word after cursor
- //^w deletes word before cursor
- //^k clears line after cursor
- //^u clears line before cursor
- }
- }
-});
-
-//Keep terminal in focus
-let terminalCtrlPressed = false, shiftKeyPressed = false;
-$(document).ready(function() {
- if (_engine_js__WEBPACK_IMPORTED_MODULE_4__["Engine"].currentPage === _engine_js__WEBPACK_IMPORTED_MODULE_4__["Engine"].Page.Terminal) {
- $('.terminal-input').focus();
- }
-});
-$(document).keydown(function(e) {
- if (_engine_js__WEBPACK_IMPORTED_MODULE_4__["Engine"].currentPage == _engine_js__WEBPACK_IMPORTED_MODULE_4__["Engine"].Page.Terminal) {
- if (e.which == 17) {
- terminalCtrlPressed = true;
- } else if (e.shiftKey) {
- shiftKeyPressed = true;
- } else if (terminalCtrlPressed || shiftKeyPressed) {
- //Don't focus
- } else {
- var inputTextBox = document.getElementById("terminal-input-text-box");
- if (inputTextBox != null) {inputTextBox.focus();}
-
- terminalCtrlPressed = false;
- shiftKeyPressed = false;
- }
- }
-})
-$(document).keyup(function(e) {
- if (_engine_js__WEBPACK_IMPORTED_MODULE_4__["Engine"].currentPage == _engine_js__WEBPACK_IMPORTED_MODULE_4__["Engine"].Page.Terminal) {
- if (e.which == 17) {
- terminalCtrlPressed = false;
- }
- if (e.shiftKey) {
- shiftKeyPressed = false;
- }
- }
-})
-
-//Implements a tab completion feature for terminal
-// command - Command (first arg only)
-// 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
-// string can complete to
-// index - index of argument that is being "tab completed". By default is 0, the first argument
-function tabCompletion(command, arg, allPossibilities, index=0) {
- if (!(allPossibilities.constructor === Array)) {return;}
- if (!Object(_utils_StringHelperFunctions_js__WEBPACK_IMPORTED_MODULE_19__["containsAllStrings"])(allPossibilities)) {return;}
-
- if (!command.startsWith("./")) {
- command = command.toLowerCase();
- }
-
- //Remove all options in allPossibilities that do not match the current string
- //that we are attempting to autocomplete
- if (arg == "") {
- for (var i = allPossibilities.length-1; i >= 0; --i) {
- if (!allPossibilities[i].toLowerCase().startsWith(command.toLowerCase())) {
- allPossibilities.splice(i, 1);
- }
- }
- } else {
- for (var i = allPossibilities.length-1; i >= 0; --i) {
- if (!allPossibilities[i].toLowerCase().startsWith(arg.toLowerCase())) {
- allPossibilities.splice(i, 1);
- }
- }
- }
-
- var val = "";
- if (allPossibilities.length == 0) {
- return;
- } else if (allPossibilities.length == 1) {
- if (arg == "") {
- //Autocomplete command
- val = allPossibilities[0] + " ";
- } else {
- val = command + " " + allPossibilities[0];
- }
- document.getElementById("terminal-input-text-box").value = val;
- document.getElementById("terminal-input-text-box").focus();
- } else {
- var longestStartSubstr = Object(_utils_StringHelperFunctions_js__WEBPACK_IMPORTED_MODULE_19__["longestCommonStart"])(allPossibilities);
- //If the longest common starting substring of remaining possibilities is the same
- //as whatevers already in terminal, just list all possible options. Otherwise,
- //change the input in the terminal to the longest common starting substr
- var allOptionsStr = "";
- for (var i = 0; i < allPossibilities.length; ++i) {
- allOptionsStr += allPossibilities[i];
- allOptionsStr += " ";
- }
- if (arg == "") {
- if (longestStartSubstr == command) {
- post("> " + command);
- post(allOptionsStr);
- } else {
- document.getElementById("terminal-input-text-box").value = longestStartSubstr;
- document.getElementById("terminal-input-text-box").focus();
- }
- } else {
- if (longestStartSubstr == arg) {
- //List all possible options
- post("> " + command + " " + arg);
- post(allOptionsStr);
- } else {
- document.getElementById("terminal-input-text-box").value = command + " " + longestStartSubstr;
- document.getElementById("terminal-input-text-box").focus();
- }
- }
-
- }
-}
-
-function determineAllPossibilitiesForTabCompletion(input, index=0) {
- var allPos = [];
- allPos = allPos.concat(Object.keys(_Alias_js__WEBPACK_IMPORTED_MODULE_0__["GlobalAliases"]));
- var currServ = _Player_js__WEBPACK_IMPORTED_MODULE_12__["Player"].getCurrentServer();
- input = input.toLowerCase();
-
- //If the command starts with './' and the index == -1, then the user
- //has input ./partialexecutablename so autocomplete the script or program
- //Put './' in front of each script/executable
- if (input.startsWith("./") && index == -1) {
- //All programs and scripts
- for (var i = 0; i < currServ.scripts.length; ++i) {
- allPos.push("./" + currServ.scripts[i].filename);
- }
-
- //Programs are on home computer
- var homeComputer = _Player_js__WEBPACK_IMPORTED_MODULE_12__["Player"].getHomeComputer();
- for(var i = 0; i < homeComputer.programs.length; ++i) {
- allPos.push("./" + homeComputer.programs[i]);
- }
- return allPos;
- }
-
- //Autocomplete the command
- if (index == -1) {
- return ["alias", "analyze", "cat", "check", "clear", "cls", "connect", "download", "free",
- "hack", "help", "home", "hostname", "ifconfig", "kill", "killall",
- "ls", "lscpu", "mem", "nano", "ps", "rm", "run", "scan", "scan-analyze",
- "scp", "sudov", "tail", "theme", "top"].concat(Object.keys(_Alias_js__WEBPACK_IMPORTED_MODULE_0__["Aliases"])).concat(Object.keys(_Alias_js__WEBPACK_IMPORTED_MODULE_0__["GlobalAliases"]));
- }
-
- if (input.startsWith ("buy ")) {
- return [_CreateProgram_js__WEBPACK_IMPORTED_MODULE_2__["Programs"].BruteSSHProgram, _CreateProgram_js__WEBPACK_IMPORTED_MODULE_2__["Programs"].FTPCrackProgram, _CreateProgram_js__WEBPACK_IMPORTED_MODULE_2__["Programs"].RelaySMTPProgram,
- _CreateProgram_js__WEBPACK_IMPORTED_MODULE_2__["Programs"].HTTPWormProgram, _CreateProgram_js__WEBPACK_IMPORTED_MODULE_2__["Programs"].SQLInjectProgram, _CreateProgram_js__WEBPACK_IMPORTED_MODULE_2__["Programs"].DeepscanV1,
- _CreateProgram_js__WEBPACK_IMPORTED_MODULE_2__["Programs"].DeepscanV2].concat(Object.keys(_Alias_js__WEBPACK_IMPORTED_MODULE_0__["GlobalAliases"]));
- }
-
- if (input.startsWith("scp ") && index == 1) {
- for (var iphostname in _Server_js__WEBPACK_IMPORTED_MODULE_15__["AllServers"]) {
- if (_Server_js__WEBPACK_IMPORTED_MODULE_15__["AllServers"].hasOwnProperty(iphostname)) {
- allPos.push(_Server_js__WEBPACK_IMPORTED_MODULE_15__["AllServers"][iphostname].ip);
- allPos.push(_Server_js__WEBPACK_IMPORTED_MODULE_15__["AllServers"][iphostname].hostname);
- }
- }
- }
-
- if (input.startsWith("scp ") && index == 0) {
- //All Scripts and lit files
- for (var i = 0; i < currServ.scripts.length; ++i) {
- allPos.push(currServ.scripts[i].filename);
- }
- for (var i = 0; i < currServ.messages.length; ++i) {
- if (!(currServ.messages[i] instanceof _Message_js__WEBPACK_IMPORTED_MODULE_9__["Message"])) {
- allPos.push(currServ.messages[i]);
- }
- }
- for (var i = 0; i < currServ.textFiles.length; ++i) {
- allPos.push(currServ.textFiles[i].fn);
- }
- }
-
- if (input.startsWith("connect ") || input.startsWith("telnet ")) {
- //All network connections
- for (var i = 0; i < currServ.serversOnNetwork.length; ++i) {
- var serv = _Server_js__WEBPACK_IMPORTED_MODULE_15__["AllServers"][currServ.serversOnNetwork[i]];
- if (serv == null) {continue;}
- allPos.push(serv.ip); //IP
- allPos.push(serv.hostname); //Hostname
- }
- return allPos;
- }
-
- if (input.startsWith("kill ") || input.startsWith("tail ") ||
- input.startsWith("mem ") || input.startsWith("check ")) {
- //All Scripts
- for (var i = 0; i < currServ.scripts.length; ++i) {
- allPos.push(currServ.scripts[i].filename);
- }
- return allPos;
- }
-
- if (input.startsWith("nano ")) {
- //Scripts and text files and .fconf
- for (var i = 0; i < currServ.scripts.length; ++i) {
- allPos.push(currServ.scripts[i].filename);
- }
- for (var i = 0; i < currServ.textFiles.length; ++i) {
- allPos.push(currServ.textFiles[i].fn);
- }
- allPos.push(".fconf");
- return allPos;
- }
-
- if (input.startsWith("rm ")) {
- for (var i = 0; i < currServ.scripts.length; ++i) {
- allPos.push(currServ.scripts[i].filename);
- }
- for (var i = 0; i < currServ.programs.length; ++i) {
- allPos.push(currServ.programs[i]);
- }
- for (var i = 0; i < currServ.messages.length; ++i) {
- if (!(currServ.messages[i] instanceof _Message_js__WEBPACK_IMPORTED_MODULE_9__["Message"]) && Object(_utils_StringHelperFunctions_js__WEBPACK_IMPORTED_MODULE_19__["isString"])(currServ.messages[i]) &&
- currServ.messages[i].endsWith(".lit")) {
- allPos.push(currServ.messages[i]);
- }
- }
- for (var i = 0; i < currServ.textFiles.length; ++i) {
- allPos.push(currServ.textFiles[i].fn);
- }
- return allPos;
- }
-
- if (input.startsWith("run ")) {
- //All programs and scripts
- for (var i = 0; i < currServ.scripts.length; ++i) {
- allPos.push(currServ.scripts[i].filename);
- }
-
- //Programs are on home computer
- var homeComputer = _Player_js__WEBPACK_IMPORTED_MODULE_12__["Player"].getHomeComputer();
- for(var i = 0; i < homeComputer.programs.length; ++i) {
- allPos.push(homeComputer.programs[i]);
- }
- return allPos;
- }
-
- if (input.startsWith("cat ")) {
- for (var i = 0; i < currServ.messages.length; ++i) {
- if (currServ.messages[i] instanceof _Message_js__WEBPACK_IMPORTED_MODULE_9__["Message"]) {
- allPos.push(currServ.messages[i].filename);
- } else {
- allPos.push(currServ.messages[i]);
- }
- }
- for (var i = 0; i < currServ.textFiles.length; ++i) {
- allPos.push(currServ.textFiles[i].fn);
- }
- return allPos;
- }
-
- if (input.startsWith("download ")) {
- for (var i = 0; i < currServ.textFiles.length; ++i) {
- allPos.push(currServ.textFiles[i].fn);
- }
- for (var i = 0; i < currServ.scripts.length; ++i) {
- allPos.push(currServ.scripts[i].filename);
- }
- }
- return allPos;
-}
-
-let Terminal = {
- //Flags to determine whether the player is currently running a hack or an analyze
- hackFlag: false,
- analyzeFlag: false,
-
- commandHistory: [],
- commandHistoryIndex: 0,
-
- resetTerminalInput: function() {
- document.getElementById("terminal-input-td").innerHTML =
- "' + input + '
" +
- "Do you want to travel to the BitNode Nexus? This allows you to reset the current BitNode " +
- "and select a new one.");
-
- break;
- default:
- post("Invalid executable. Cannot be run");
- return;
- }
- },
-
- runScript: function(scriptName) {
- var server = _Player_js__WEBPACK_IMPORTED_MODULE_12__["Player"].getCurrentServer();
-
- var numThreads = 1;
- var args = [];
- var results = scriptName.split(" ");
- if (results.length <= 0) {
- post("This is a bug. Please contact developer");
- }
- scriptName = results[0];
- if (results.length > 1) {
- if (results.length >= 3 && results[1] == "-t") {
- numThreads = Math.round(Number(results[2]));
- if (isNaN(numThreads) || numThreads < 1) {
- post("Invalid number of threads specified. Number of threads must be greater than 0");
- return;
- }
- for (var i = 3; i < results.length; ++i) {
- var arg = results[i];
-
- //Forced string
- if ((arg.startsWith("'") && arg.endsWith("'")) ||
- (arg.startsWith('"') && arg.endsWith('"'))) {
- args.push(arg.slice(1, -1));
- continue;
- }
- //Number
- var tempNum = Number(arg);
- if (!isNaN(tempNum)) {
- args.push(tempNum);
- continue;
- }
- //Otherwise string
- args.push(arg);
- }
- } else {
- for (var i = 1; i < results.length; ++i) {
- var arg = results[i];
-
- //Forced string
- if ((arg.startsWith("'") && arg.endsWith("'")) ||
- (arg.startsWith('"') && arg.endsWith('"'))) {
- args.push(arg.slice(1, -1));
- continue;
- }
- //Number
- var tempNum = Number(arg);
- if (!isNaN(tempNum)) {
- args.push(tempNum);
- continue;
- }
- //Otherwise string
- args.push(arg);
- }
- }
- }
-
-
- //Check if this script is already running
- if (Object(_Script_js__WEBPACK_IMPORTED_MODULE_14__["findRunningScript"])(scriptName, args, server) != null) {
- post("ERROR: This script is already running. Cannot run multiple instances");
- return;
- }
-
- //Check if the script exists and if it does run it
- for (var i = 0; i < server.scripts.length; i++) {
- if (server.scripts[i].filename == scriptName) {
- //Check for admin rights and that there is enough RAM availble to run
- var script = server.scripts[i];
- var ramUsage = script.ramUsage * numThreads * Math.pow(_Constants_js__WEBPACK_IMPORTED_MODULE_1__["CONSTANTS"].MultithreadingRAMCost, numThreads-1);
- var ramAvailable = server.maxRam - server.ramUsed;
-
- if (server.hasAdminRights == false) {
- post("Need root access to run script");
- return;
- } else if (ramUsage > ramAvailable){
- post("This machine does not have enough RAM to run this script with " +
- numThreads + " threads. Script requires " + ramUsage + "GB of RAM");
- return;
- } else {
- //Able to run script
- post("Running script with " + numThreads + " thread(s) and args: " + Object(_utils_HelperFunctions_js__WEBPACK_IMPORTED_MODULE_20__["printArray"])(args) + ".");
- post("May take a few seconds to start up the process...");
- var runningScriptObj = new _Script_js__WEBPACK_IMPORTED_MODULE_14__["RunningScript"](script, args);
- runningScriptObj.threads = numThreads;
- server.runningScripts.push(runningScriptObj);
-
- Object(_NetscriptWorker_js__WEBPACK_IMPORTED_MODULE_11__["addWorkerScript"])(runningScriptObj, server);
- return;
- }
- }
- }
-
- post("ERROR: No such script");
- }
-};
-
-
-
-/* WEBPACK VAR INJECTION */}.call(this, __webpack_require__(/*! jquery */ 39)))
-
-/***/ }),
-/* 19 */
-/*!******************************!*\
- !*** ./src/Augmentations.js ***!
- \******************************/
-/***/ (function(module, __webpack_exports__, __webpack_require__) {
-
-"use strict";
-__webpack_require__.r(__webpack_exports__);
-/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "AugmentationNames", function() { return AugmentationNames; });
-/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "Augmentations", function() { return Augmentations; });
-/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "PlayerOwnedAugmentation", function() { return PlayerOwnedAugmentation; });
-/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "installAugmentations", function() { return installAugmentations; });
-/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "initAugmentations", function() { return initAugmentations; });
-/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "applyAugmentation", function() { return applyAugmentation; });
-/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "augmentationExists", function() { return augmentationExists; });
-/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "Augmentation", function() { return Augmentation; });
-/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "displayAugmentationsContent", function() { return displayAugmentationsContent; });
-/* harmony import */ var _BitNode_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./BitNode.js */ 15);
-/* harmony import */ var _Constants_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./Constants.js */ 3);
-/* harmony import */ var _engine_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./engine.js */ 5);
-/* harmony import */ var _Faction_js__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./Faction.js */ 11);
-/* harmony import */ var _NetscriptFunctions_js__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ./NetscriptFunctions.js */ 31);
-/* harmony import */ var _NetscriptWorker_js__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ./NetscriptWorker.js */ 21);
-/* harmony import */ var _Player_js__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! ./Player.js */ 0);
-/* harmony import */ var _Prestige_js__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! ./Prestige.js */ 57);
-/* harmony import */ var _SaveObject_js__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! ./SaveObject.js */ 47);
-/* harmony import */ var _Script_js__WEBPACK_IMPORTED_MODULE_9__ = __webpack_require__(/*! ./Script.js */ 26);
-/* harmony import */ var _Server_js__WEBPACK_IMPORTED_MODULE_10__ = __webpack_require__(/*! ./Server.js */ 10);
-/* harmony import */ var _SourceFile_js__WEBPACK_IMPORTED_MODULE_11__ = __webpack_require__(/*! ./SourceFile.js */ 44);
-/* harmony import */ var _utils_DialogBox_js__WEBPACK_IMPORTED_MODULE_12__ = __webpack_require__(/*! ../utils/DialogBox.js */ 7);
-/* harmony import */ var _utils_HelperFunctions_js__WEBPACK_IMPORTED_MODULE_13__ = __webpack_require__(/*! ../utils/HelperFunctions.js */ 1);
-/* harmony import */ var _utils_JSONReviver_js__WEBPACK_IMPORTED_MODULE_14__ = __webpack_require__(/*! ../utils/JSONReviver.js */ 8);
-/* harmony import */ var _utils_StringHelperFunctions_js__WEBPACK_IMPORTED_MODULE_15__ = __webpack_require__(/*! ../utils/StringHelperFunctions.js */ 2);
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-//Augmentations
-function Augmentation(params) {
- if (params.name == null || params.info == null || params.moneyCost == null || params.repCost == null) {
- Object(_utils_DialogBox_js__WEBPACK_IMPORTED_MODULE_12__["dialogBoxCreate"])("ERROR Creating Augmentations. This is a bug please contact game dev");
- return;
- }
- this.name = params.name;
- this.info = params.info;
- this.owned = false;
- this.prereqs = params.prereqs ? params.prereqs : [];
-
- //Price and reputation base requirements (can change based on faction multipliers)
- this.baseRepRequirement = params.repCost * _Constants_js__WEBPACK_IMPORTED_MODULE_1__["CONSTANTS"].AugmentationRepMultiplier * _BitNode_js__WEBPACK_IMPORTED_MODULE_0__["BitNodeMultipliers"].AugmentationRepCost;
- this.baseCost = params.moneyCost * _Constants_js__WEBPACK_IMPORTED_MODULE_1__["CONSTANTS"].AugmentationCostMultiplier * _BitNode_js__WEBPACK_IMPORTED_MODULE_0__["BitNodeMultipliers"].AugmentationMoneyCost;
-
- //Level - Only applicable for some augmentations
- // NeuroFlux Governor
- this.level = 0;
-}
-
-//Takes in an array of faction names and adds this augmentation to all of those factions
-Augmentation.prototype.addToFactions = function(factionList) {
- for (var i = 0; i < factionList.length; ++i) {
- var faction = _Faction_js__WEBPACK_IMPORTED_MODULE_3__["Factions"][factionList[i]];
- if (faction == null) {
- throw new Error("In Augmentation.addToFactions(), could not find faction with this name:" + factionList[i]);
- continue;
- }
- faction.augmentations.push(this.name);
- }
-}
-
-Augmentation.prototype.addToAllFactions = function() {
- for (var fac in _Faction_js__WEBPACK_IMPORTED_MODULE_3__["Factions"]) {
- if (_Faction_js__WEBPACK_IMPORTED_MODULE_3__["Factions"].hasOwnProperty(fac)) {
- var facObj = _Faction_js__WEBPACK_IMPORTED_MODULE_3__["Factions"][fac];
- if (facObj == null) {
- console.log("ERROR: Invalid faction object");
- continue;
- }
- facObj.augmentations.push(this.name);
- }
- }
-}
-
-Augmentation.prototype.toJSON = function() {
- return Object(_utils_JSONReviver_js__WEBPACK_IMPORTED_MODULE_14__["Generic_toJSON"])("Augmentation", this);
-}
-
-Augmentation.fromJSON = function(value) {
- return Object(_utils_JSONReviver_js__WEBPACK_IMPORTED_MODULE_14__["Generic_fromJSON"])(Augmentation, value.data);
-}
-
-_utils_JSONReviver_js__WEBPACK_IMPORTED_MODULE_14__["Reviver"].constructors.Augmentation = Augmentation;
-
-let Augmentations = {}
-
-function AddToAugmentations(aug) {
- var name = aug.name;
- Augmentations[name] = aug;
-}
-
-let AugmentationNames = {
- Targeting1: "Augmented Targeting I",
- Targeting2: "Augmented Targeting II",
- Targeting3: "Augmented Targeting III",
- SyntheticHeart: "Synthetic Heart",
- SynfibrilMuscle: "Synfibril Muscle",
- CombatRib1: "Combat Rib I",
- CombatRib2: "Combat Rib II",
- CombatRib3: "Combat Rib III",
- NanofiberWeave: "Nanofiber Weave",
- SubdermalArmor: "NEMEAN Subdermal Weave",
- WiredReflexes: "Wired Reflexes",
- GrapheneBoneLacings: "Graphene Bone Lacings",
- BionicSpine: "Bionic Spine",
- GrapheneBionicSpine: "Graphene Bionic Spine Upgrade",
- BionicLegs: "Bionic Legs",
- GrapheneBionicLegs: "Graphene Bionic Legs Upgrade",
- SpeechProcessor: "Speech Processor Implant",
- TITN41Injection: "TITN-41 Gene-Modification Injection",
- EnhancedSocialInteractionImplant: "Enhanced Social Interaction Implant",
- BitWire: "BitWire",
- ArtificialBioNeuralNetwork: "Artificial Bio-neural Network Implant",
- ArtificialSynapticPotentiation: "Artificial Synaptic Potentiation",
- EnhancedMyelinSheathing: "Enhanced Myelin Sheathing",
- SynapticEnhancement: "Synaptic Enhancement Implant",
- NeuralRetentionEnhancement: "Neural-Retention Enhancement",
- DataJack: "DataJack",
- ENM: "Embedded Netburner Module",
- ENMCore: "Embedded Netburner Module Core Implant",
- ENMCoreV2: "Embedded Netburner Module Core V2 Upgrade",
- ENMCoreV3: "Embedded Netburner Module Core V3 Upgrade",
- ENMAnalyzeEngine: "Embedded Netburner Module Analyze Engine",
- ENMDMA: "Embedded Netburner Module Direct Memory Access Upgrade",
- Neuralstimulator: "Neuralstimulator",
- NeuralAccelerator: "Neural Accelerator",
- CranialSignalProcessorsG1: "Cranial Signal Processors - Gen I",
- CranialSignalProcessorsG2: "Cranial Signal Processors - Gen II",
- CranialSignalProcessorsG3: "Cranial Signal Processors - Gen III",
- CranialSignalProcessorsG4: "Cranial Signal Processors - Gen IV",
- CranialSignalProcessorsG5: "Cranial Signal Processors - Gen V",
- NeuronalDensification: "Neuronal Densification",
- NuoptimalInjectorImplant: "Nuoptimal Nootropic Injector Implant",
- SpeechEnhancement: "Speech Enhancement",
- FocusWire: "FocusWire",
- PCDNI: "PC Direct-Neural Interface",
- PCDNIOptimizer: "PC Direct-Neural Interface Optimization Submodule",
- PCDNINeuralNetwork: "PC Direct-Neural Interface NeuroNet Injector",
- ADRPheromone1: "ADR-V1 Pheromone Gene",
- ADRPheromone2: "ADR-V2 Pheromone Gene",
- HacknetNodeCPUUpload: "Hacknet Node CPU Architecture Neural-Upload",
- HacknetNodeCacheUpload: "Hacknet Node Cache Architecture Neural-Upload",
- HacknetNodeNICUpload: "Hacknet Node NIC Architecture Neural-Upload",
- HacknetNodeKernelDNI: "Hacknet Node Kernel Direct-Neural Interface",
- HacknetNodeCoreDNI: "Hacknet Node Core Direct-Neural Interface",
- NeuroFluxGovernor: "NeuroFlux Governor",
- Neurotrainer1: "Neurotrainer I",
- Neurotrainer2: "Neurotrainer II",
- Neurotrainer3: "Neurotrainer III",
- Hypersight: "HyperSight Corneal Implant",
- LuminCloaking1: "LuminCloaking-V1 Skin Implant",
- LuminCloaking2: "LuminCloaking-V2 Skin Implant",
- HemoRecirculator: "HemoRecirculator",
- SmartSonar: "SmartSonar Implant",
- PowerRecirculator: "Power Recirculation Core",
- QLink: "QLink",
- TheRedPill: "The Red Pill",
- SPTN97: "SPTN-97 Gene Modification",
- HiveMind: "ECorp HVMind Implant",
- CordiARCReactor: "CordiARC Fusion Reactor",
- SmartJaw: "SmartJaw",
- Neotra: "Neotra",
- Xanipher: "Xanipher",
- nextSENS: "nextSENS Gene Modification",
- OmniTekInfoLoad: "OmniTek InfoLoad",
- PhotosyntheticCells: "Photosynthetic Cells",
- Neurolink: "BitRunners Neurolink",
- TheBlackHand: "The Black Hand",
- CRTX42AA: "CRTX42-AA Gene Modification",
- Neuregen: "Neuregen Gene Modification",
- CashRoot: "CashRoot Starter Kit",
- NutriGen: "NutriGen Implant",
- INFRARet: "INFRARET Enhancement",
- DermaForce: "DermaForce Particle Barrier",
- GrapheneBrachiBlades: "Graphene BranchiBlades Upgrade",
- GrapheneBionicArms: "Graphene Bionic Arms Upgrade",
- BrachiBlades: "BrachiBlades",
- BionicArms: "Bionic Arms",
- SNA: "Social Negotiation Assistant (S.N.A)",
- EsperEyewear: "EsperTech Bladeburner Eyewear",
- EMS4Recombination: "EMS-4 Recombination",
- OrionShoulder: "ORION-MKIV Shoulder",
- HyperionV1: "Hyperion Plasma Cannon V1",
- HyperionV2: "Hyperion Plasma Cannon V2",
- GolemSerum: "GOLEM Serum",
- VangelisVirus: "Vangelis Virus",
- VangelisVirus3: "Vangelis Virus 3.0",
- INTERLINKED: "I.N.T.E.R.L.I.N.K.E.D",
- BladeRunner: "Blade's Runners",
- BladeArmor: "BLADE-51b Tesla Armor",
- BladeArmorPowerCells: "BLADE-51b Tesla Armor: Power Cells Upgrade",
- BladeArmorEnergyShielding: "BLADE-51b Tesla Armor: Energy Shielding Upgrade",
- BladeArmorUnibeam: "BLADE-51b Tesla Armor: Unibeam Upgrade",
- BladeArmorOmnibeam: "BLADE-51b Tesla Armor: Omnibeam Upgrade",
- BladeArmorIPU: "BLADE-51b Tesla Armor: IPU Upgrade",
-
- //Wasteland Augs
- //PepBoy: "P.E.P-Boy", Plasma Energy Projection System
- //PepBoyForceField Generates plasma force fields
- //PepBoyBlasts Generate high density plasma concussive blasts
- //PepBoyDataStorage STore more data on pep boy,
-}
-
-function initAugmentations() {
- for (var name in _Faction_js__WEBPACK_IMPORTED_MODULE_3__["Factions"]) {
- if (_Faction_js__WEBPACK_IMPORTED_MODULE_3__["Factions"].hasOwnProperty(name)) {
- _Faction_js__WEBPACK_IMPORTED_MODULE_3__["Factions"][name].augmentations = [];
- }
- }
-
- //Reset Augmentations
- Object(_utils_HelperFunctions_js__WEBPACK_IMPORTED_MODULE_13__["clearObject"])(Augmentations);
-
- //Combat stat augmentations
- var HemoRecirculator = new Augmentation({
- name:AugmentationNames.HemoRecirculator, moneyCost: 9e6, repCost:4e3,
- info:"A heart implant that greatly increases the body's ability to effectively use and pump " +
- "blood.
This augmentation increases all of the player's combat stats by 8%."
- });
- HemoRecirculator.addToFactions(["Tetrads", "The Dark Army", "The Syndicate"]);
- if (augmentationExists(AugmentationNames.HemoRecirculator)) {
- delete Augmentations[AugmentationNames.HemoRecirculator];
- }
- AddToAugmentations(HemoRecirculator);
-
- var Targeting1 = new Augmentation({
- name:AugmentationNames.Targeting1, moneyCost:3e6, repCost:2e3,
- info:"This cranial implant is embedded within the player's inner ear structure and optic nerves. It regulates and enhances the user's " +
- "balance and hand-eye coordination. It is also capable of augmenting reality by projecting digital information " +
- "directly onto the retina. These enhancements allow the player to better lock-on and keep track of enemies.
" +
- "This augmentation increases the player's dexterity by 10%."
- });
- Targeting1.addToFactions(["Slum Snakes", "The Dark Army", "The Syndicate", "Sector-12", "Volhaven", "Ishima",
- "OmniTek Incorporated", "KuaiGong International", "Blade Industries"]);
- if (augmentationExists(AugmentationNames.Targeting1)) {
- delete Augmentations[AugmentationNames.Targeting1];
- }
- AddToAugmentations(Targeting1);
-
- var Targeting2 = new Augmentation({
- name:AugmentationNames.Targeting2, moneyCost:8.5e6, repCost:3.5e3,
- info:"This is an upgrade of the Augmented Targeting I cranial implant, which is capable of augmenting reality " +
- "and enhances the user's balance and hand-eye coordination.
This upgrade increases the player's dexterity " +
- "by an additional 20%.",
- prereqs:[AugmentationNames.Targeting1]
- });
- Targeting2.addToFactions(["The Dark Army", "The Syndicate", "Sector-12", "Volhaven", "Ishima",
- "OmniTek Incorporated", "KuaiGong International", "Blade Industries"]);
- if (augmentationExists(AugmentationNames.Targeting2)) {
- delete Augmentations[AugmentationNames.Targeting2];
- }
- AddToAugmentations(Targeting2);
-
- var Targeting3 = new Augmentation({
- name:AugmentationNames.Targeting3, moneyCost:23e6, repCost:11e3,
- info:"This is an upgrade of the Augmented Targeting II cranial implant, which is capable of augmenting reality " +
- "and enhances the user's balance and hand-eye coordination.
This upgrade increases the player's dexterity " +
- "by an additional 30%.",
- prereqs:[AugmentationNames.Targeting2]
- });
- Targeting3.addToFactions(["The Dark Army", "The Syndicate", "OmniTek Incorporated",
- "KuaiGong International", "Blade Industries", "The Covenant"]);
- if (augmentationExists(AugmentationNames.Targeting3)) {
- delete Augmentations[AugmentationNames.Targeting3];
- }
- AddToAugmentations(Targeting3);
-
- var SyntheticHeart = new Augmentation({
- name:AugmentationNames.SyntheticHeart, moneyCost:575e6, repCost:300e3,
- info:"This advanced artificial heart, created from plasteel and graphene, is capable of pumping more blood " +
- "at much higher efficiencies than a normal human heart.
This augmentation increases the player's agility " +
- "and strength by 50%"
- });
- SyntheticHeart.addToFactions(["KuaiGong International", "Fulcrum Secret Technologies", "Speakers for the Dead",
- "NWO", "The Covenant", "Daedalus", "Illuminati"]);
- if (augmentationExists(AugmentationNames.SyntheticHeart)) {
- delete Augmentations[AugmentationNames.SyntheticHeart];
- }
- AddToAugmentations(SyntheticHeart);
-
- var SynfibrilMuscle = new Augmentation({
- name:AugmentationNames.SynfibrilMuscle, repCost:175e3, moneyCost:225e6,
- info:"The myofibrils in human muscles are injected with special chemicals that react with the proteins inside " +
- "the myofibrils, altering their underlying structure. The end result is muscles that are stronger and more elastic. " +
- "Scientists have named these artificially enhanced units 'synfibrils'.
This augmentation increases the player's " +
- "strength and defense by 30%."
- });
- SynfibrilMuscle.addToFactions(["KuaiGong International", "Fulcrum Secret Technologies", "Speakers for the Dead",
- "NWO", "The Covenant", "Daedalus", "Illuminati", "Blade Industries"]);
- if (augmentationExists(AugmentationNames.SynfibrilMuscle)) {
- delete Augmentations[AugmentationNames.SynfibrilMuscle];
- }
- AddToAugmentations(SynfibrilMuscle)
-
- var CombatRib1 = new Augmentation({
- name:AugmentationNames.CombatRib1, repCost:3e3, moneyCost:4750000,
- info:"The human body's ribs are replaced with artificial ribs that automatically and continuously release cognitive " +
- "and performance-enhancing drugs into the bloodstream, improving the user's abilities in combat.
" +
- "This augmentation increases the player's strength and defense by 10%."
- });
- CombatRib1.addToFactions(["Slum Snakes", "The Dark Army", "The Syndicate", "Sector-12", "Volhaven", "Ishima",
- "OmniTek Incorporated", "KuaiGong International", "Blade Industries"]);
- if (augmentationExists(AugmentationNames.CombatRib1)) {
- delete Augmentations[AugmentationNames.CombatRib1];
- }
- AddToAugmentations(CombatRib1);
-
- var CombatRib2 = new Augmentation({
- name:AugmentationNames.CombatRib2, repCost:7.5e3, moneyCost:13e6,
- info:"This is an upgrade to the Combat Rib I augmentation, and is capable of releasing even more potent combat-enhancing " +
- "drugs into the bloodstream.
This upgrade increases the player's strength and defense by an additional 14%.",
- prereqs:[AugmentationNames.CombatRib1]
- });
- CombatRib2.addToFactions(["The Dark Army", "The Syndicate", "Sector-12", "Volhaven", "Ishima",
- "OmniTek Incorporated", "KuaiGong International", "Blade Industries"]);
- if (augmentationExists(AugmentationNames.CombatRib2)) {
- delete Augmentations[AugmentationNames.CombatRib2];
- }
- AddToAugmentations(CombatRib2);
-
- var CombatRib3 = new Augmentation({
- name:AugmentationNames.CombatRib3, repCost:14e3, moneyCost:24e6,
- info:"This is an upgrade to the Combat Rib II augmentation, and is capable of releasing even more potent combat-enhancing " +
- "drugs into the bloodstream
. This upgrade increases the player's strength and defense by an additional 18%.",
- prereqs:[AugmentationNames.CombatRib2],
- });
- CombatRib3.addToFactions(["The Dark Army", "The Syndicate", "OmniTek Incorporated",
- "KuaiGong International", "Blade Industries", "The Covenant"]);
- if (augmentationExists(AugmentationNames.CombatRib3)) {
- delete Augmentations[AugmentationNames.CombatRib3];
- }
- AddToAugmentations(CombatRib3);
-
- var NanofiberWeave = new Augmentation({
- name:AugmentationNames.NanofiberWeave, repCost:15e3, moneyCost:25e6,
- info:"Synthetic nanofibers are woven into the skin's extracellular matrix using electrospinning. " +
- "This improves the skin's ability to regenerate itself and protect the body from external stresses and forces.
" +
- "This augmentation increases the player's strength and defense by 20%."
- });
- NanofiberWeave.addToFactions(["Tian Di Hui", "The Syndicate", "The Dark Army", "Speakers for the Dead",
- "Blade Industries", "Fulcrum Secret Technologies", "OmniTek Incorporated"]);
- if (augmentationExists(AugmentationNames.NanofiberWeave)) {
- delete Augmentations[AugmentationNames.NanofiberWeave];
- }
- AddToAugmentations(NanofiberWeave);
-
- var SubdermalArmor = new Augmentation({
- name:AugmentationNames.SubdermalArmor, repCost:350e3, moneyCost:650e6,
- info:"The NEMEAN Subdermal Weave is a thin, light-weight, graphene plating that houses a dilatant fluid. " +
- "The material is implanted underneath the skin, and is the most advanced form of defensive enhancement " +
- "that has ever been created. The dilatant fluid, despite being thin and light, is extremely effective " +
- "at stopping piercing blows and reducing blunt trauma. The properties of graphene allow the plating to " +
- "mitigate damage from any fire-related or electrical traumas.
" +
- "This augmentation increases the player's defense by 120%."
- });
- SubdermalArmor.addToFactions(["The Syndicate", "Fulcrum Secret Technologies", "Illuminati", "Daedalus",
- "The Covenant"]);
- if (augmentationExists(AugmentationNames.SubdermalArmor)) {
- delete Augmentations[AugmentationNames.SubdermalArmor];
- }
- AddToAugmentations(SubdermalArmor);
-
- var WiredReflexes = new Augmentation({
- name:AugmentationNames.WiredReflexes, repCost:500, moneyCost:500e3,
- info:"Synthetic nerve-enhancements are injected into all major parts of the somatic nervous system, " +
- "supercharging the body's ability to send signals through neurons. This results in increased reflex speed.
" +
- "This augmentation increases the player's agility and dexterity by 5%."
- });
- WiredReflexes.addToFactions(["Tian Di Hui", "Slum Snakes", "Sector-12", "Volhaven", "Aevum", "Ishima",
- "The Syndicate", "The Dark Army", "Speakers for the Dead"]);
- if (augmentationExists(AugmentationNames.WiredReflexes)) {
- delete Augmentations[AugmentationNames.WiredReflexes];
- }
- AddToAugmentations(WiredReflexes);
-
- var GrapheneBoneLacings = new Augmentation({
- name:AugmentationNames.GrapheneBoneLacings, repCost:450e3, moneyCost:850e6,
- info:"A graphene-based material is grafted and fused into the user's bones, significantly increasing " +
- "their density and tensile strength.
" +
- "This augmentation increases the player's strength and defense by 70%."
- });
- GrapheneBoneLacings.addToFactions(["Fulcrum Secret Technologies", "The Covenant"]);
- if (augmentationExists(AugmentationNames.GrapheneBoneLacings)) {
- delete Augmentations[AugmentationNames.GrapheneBoneLacings];
- }
- AddToAugmentations(GrapheneBoneLacings);
-
- var BionicSpine = new Augmentation({
- name:AugmentationNames.BionicSpine, repCost:18e3, moneyCost:25e6,
- info:"An artificial spine created from plasteel and carbon fibers that completely replaces the organic spine. " +
- "Not only is the Bionic Spine physically stronger than a human spine, but it is also capable of digitally " +
- "stimulating and regulating the neural signals that are sent and received by the spinal cord. This results in " +
- "greatly improved senses and reaction speeds.
" +
- "This augmentation increases all of the player's combat stats by 15%."
- });
- BionicSpine.addToFactions(["Speakers for the Dead", "The Syndicate", "KuaiGong International",
- "OmniTek Incorporated", "Blade Industries"]);
- if (augmentationExists(AugmentationNames.BionicSpine)) {
- delete Augmentations[AugmentationNames.BionicSpine];
- }
- AddToAugmentations(BionicSpine);
-
- var GrapheneBionicSpine = new Augmentation({
- name:AugmentationNames.GrapheneBionicSpine, repCost:650e3, moneyCost:1200e6,
- info:"An upgrade to the Bionic Spine augmentation. It fuses the implant with an advanced graphene " +
- "material to make it much stronger and lighter.
" +
- "This augmentation increases all of the player's combat stats by 60%.",
- prereqs:[AugmentationNames.BionicSpine],
- });
- GrapheneBionicSpine.addToFactions(["Fulcrum Secret Technologies", "ECorp"]);
- if (augmentationExists(AugmentationNames.GrapheneBionicSpine)) {
- delete Augmentations[AugmentationNames.GrapheneBionicSpine];
- }
- AddToAugmentations(GrapheneBionicSpine);
-
- var BionicLegs = new Augmentation({
- name:AugmentationNames.BionicLegs, repCost:60e3, moneyCost:75e6,
- info:"Cybernetic legs created from plasteel and carbon fibers that completely replace the user's organic legs.
" +
- "This augmentation increases the player's agility by 60%."
- });
- BionicLegs.addToFactions(["Speakers for the Dead", "The Syndicate", "KuaiGong International",
- "OmniTek Incorporated", "Blade Industries"]);
- if (augmentationExists(AugmentationNames.BionicLegs)) {
- delete Augmentations[AugmentationNames.BionicLegs];
- }
- AddToAugmentations(BionicLegs);
-
- var GrapheneBionicLegs = new Augmentation({
- name:AugmentationNames.GrapheneBionicLegs, repCost:300e3, moneyCost:900e6,
- info:"An upgrade to the Bionic Legs augmentation. It fuses the implant with an advanced graphene " +
- "material to make it much stronger and lighter.
" +
- "This augmentation increases the player's agility by an additional 150%.",
- prereqs:[AugmentationNames.BionicLegs],
- });
- GrapheneBionicLegs.addToFactions(["MegaCorp", "ECorp", "Fulcrum Secret Technologies"]);
- if (augmentationExists(AugmentationNames.GrapheneBionicLegs)) {
- delete Augmentations[AugmentationNames.GrapheneBionicLegs];
- }
- AddToAugmentations(GrapheneBionicLegs);
-
- //Labor stat augmentations
- var SpeechProcessor = new Augmentation({
- name:AugmentationNames.SpeechProcessor, repCost:3e3, moneyCost:10e6,
- info:"A cochlear implant with an embedded computer that analyzes incoming speech. " +
- "The embedded computer processes characteristics of incoming speech, such as tone " +
- "and inflection, to pick up on subtle cues and aid in social interactions.
" +
- "This augmentation increases the player's charisma by 20%."
- });
- SpeechProcessor.addToFactions(["Tian Di Hui", "Chongqing", "Sector-12", "New Tokyo", "Aevum",
- "Ishima", "Volhaven", "Silhouette"]);
- if (augmentationExists(AugmentationNames.SpeechProcessor)) {
- delete Augmentations[AugmentationNames.SpeechProcessor];
- }
- AddToAugmentations(SpeechProcessor);
-
- let TITN41Injection = new Augmentation({
- name:AugmentationNames.TITN41Injection, repCost:10e3, moneyCost:38e6,
- info:"TITN is a series of viruses that targets and alters the sequences of human DNA in genes that " +
- "control personality. The TITN-41 strain alters these genes so that the subject becomes more " +
- "outgoing and socialable.
" +
- "This augmentation increases the player's charisma and charisma experience gain rate by 15%"
- });
- TITN41Injection.addToFactions(["Silhouette"]);
- if (augmentationExists(AugmentationNames.TITN41Injection)) {
- delete Augmentations[AugmentationNames.TITN41Injection];
- }
- AddToAugmentations(TITN41Injection);
-
- var EnhancedSocialInteractionImplant = new Augmentation({
- name:AugmentationNames.EnhancedSocialInteractionImplant, repCost:150e3, moneyCost:275e6,
- info:"A cranial implant that greatly assists in the user's ability to analyze social situations " +
- "and interactions. The system uses a wide variety of factors such as facial expression, body " +
- "language, and the voice's tone/inflection to determine the best course of action during social" +
- "situations. The implant also uses deep learning software to continuously learn new behavior" +
- "patterns and how to best respond.
" +
- "This augmentation increases the player's charisma and charisma experience gain rate by 60%."
- });
- EnhancedSocialInteractionImplant.addToFactions(["Bachman & Associates", "NWO", "Clarke Incorporated",
- "OmniTek Incorporated", "Four Sigma"]);
- if (augmentationExists(AugmentationNames.EnhancedSocialInteractionImplant)) {
- delete Augmentations[AugmentationNames.EnhancedSocialInteractionImplant];
- }
- AddToAugmentations(EnhancedSocialInteractionImplant);
-
- //Hacking augmentations
- var BitWire = new Augmentation({
- name:AugmentationNames.BitWire, repCost:1500, moneyCost:2e6,
- info: "A small brain implant embedded in the cerebrum. This regulates and improves the brain's computing " +
- "capabilities.
This augmentation increases the player's hacking skill by 5%"
- });
- BitWire.addToFactions(["CyberSec", "NiteSec"]);
- if (augmentationExists(AugmentationNames.BitWire)) {
- delete Augmentations[AugmentationNames.BitWire];
- }
- AddToAugmentations(BitWire);
-
- var ArtificialBioNeuralNetwork = new Augmentation({
- name:AugmentationNames.ArtificialBioNeuralNetwork, repCost:110e3, moneyCost:600e6,
- info:"A network consisting of millions of nanoprocessors is embedded into the brain. " +
- "The network is meant to mimick the way a biological brain solves a problem, which each " +
- "nanoprocessor acting similar to the way a neuron would in a neural network. However, these " +
- "nanoprocessors are programmed to perform computations much faster than organic neurons, " +
- "allowing its user to solve much more complex problems at a much faster rate.
" +
- "This augmentation:
" +
- "Increases the player's hacking speed by 3%
" +
- "Increases the amount of money the player's gains from hacking by 15%
" +
- "Increases the player's hacking skill by 12%"
- });
- ArtificialBioNeuralNetwork.addToFactions(["BitRunners", "Fulcrum Secret Technologies"]);
- if (augmentationExists(AugmentationNames.ArtificialBioNeuralNetwork)) {
- delete Augmentations[AugmentationNames.ArtificialBioNeuralNetwork];
- }
- AddToAugmentations(ArtificialBioNeuralNetwork);
-
- var ArtificialSynapticPotentiation = new Augmentation({
- name:AugmentationNames.ArtificialSynapticPotentiation, repCost:2500, moneyCost:16e6,
- info:"The body is injected with a chemical that artificially induces synaptic potentiation, " +
- "otherwise known as the strengthening of synapses. This results in a enhanced cognitive abilities.
" +
- "This augmentation:
" +
- "Increases the player's hacking speed by 2%
" +
- "Increases the player's hacking chance by 5%
" +
- "Increases the player's hacking experience gain rate by 5%"
- });
- ArtificialSynapticPotentiation.addToFactions(["The Black Hand", "NiteSec"]);
- if (augmentationExists(AugmentationNames.ArtificialSynapticPotentiation)) {
- delete Augmentations[AugmentationNames.ArtificialSynapticPotentiation];
- }
- AddToAugmentations(ArtificialSynapticPotentiation);
-
- var EnhancedMyelinSheathing = new Augmentation({
- name:AugmentationNames.EnhancedMyelinSheathing, repCost:40e3, moneyCost:275e6,
- info:"Electrical signals are used to induce a new, artificial form of myelinogensis in the human body. " +
- "This process results in the proliferation of new, synthetic myelin sheaths in the nervous " +
- "system. These myelin sheaths can propogate neuro-signals much faster than their organic " +
- "counterparts, leading to greater processing speeds and better brain function.
" +
- "This augmentation:
" +
- "Increases the player's hacking speed by 3%
" +
- "Increases the player's hacking skill by 8%
" +
- "Increases the player's hacking experience gain rate by 10%"
- });
- EnhancedMyelinSheathing.addToFactions(["Fulcrum Secret Technologies", "BitRunners", "The Black Hand"]);
- if (augmentationExists(AugmentationNames.EnhancedMyelinSheathing)) {
- delete Augmentations[AugmentationNames.EnhancedMyelinSheathing];
- }
- AddToAugmentations(EnhancedMyelinSheathing);
-
- var SynapticEnhancement = new Augmentation({
- name:AugmentationNames.SynapticEnhancement, repCost:800, moneyCost:1.5e6,
- info:"A small cranial implant that continuously uses weak electric signals to stimulate the brain and " +
- "induce stronger synaptic activity. This improves the user's cognitive abilities.
" +
- "This augmentation increases the player's hacking speed by 3%."
- });
- SynapticEnhancement.addToFactions(["CyberSec"]);
- if (augmentationExists(AugmentationNames.SynapticEnhancement)) {
- delete Augmentations[AugmentationNames.SynapticEnhancement];
- }
- AddToAugmentations(SynapticEnhancement);
-
- var NeuralRetentionEnhancement = new Augmentation({
- name:AugmentationNames.NeuralRetentionEnhancement, repCost:8e3, moneyCost:50e6,
- info:"Chemical injections are used to permanently alter and strengthen the brain's neuronal " +
- "circuits, strengthening its ability to retain information.
" +
- "This augmentation increases the player's hacking experience gain rate by 25%."
- });
- NeuralRetentionEnhancement.addToFactions(["NiteSec"]);
- if (augmentationExists(AugmentationNames.NeuralRetentionEnhancement)) {
- delete Augmentations[AugmentationNames.NeuralRetentionEnhancement];
- }
- AddToAugmentations(NeuralRetentionEnhancement);
-
- var DataJack = new Augmentation({
- name:AugmentationNames.DataJack, repCost:45e3, moneyCost:90e6,
- info:"A brain implant that provides an interface for direct, wireless communication between a computer's main " +
- "memory and the mind. This implant allows the user to not only access a computer's memory, but also alter " +
- "and delete it.
" +
- "This augmentation increases the amount of money the player gains from hacking by 25%"
- });
- DataJack.addToFactions(["BitRunners", "The Black Hand", "NiteSec", "Chongqing", "New Tokyo"]);
- if (augmentationExists(AugmentationNames.DataJack)) {
- delete Augmentations[AugmentationNames.DataJack];
- }
- AddToAugmentations(DataJack);
-
- var ENM = new Augmentation({
- name:AugmentationNames.ENM, repCost:6e3, moneyCost:50e6,
- info:"A thin device embedded inside the arm containing a wireless module capable of connecting " +
- "to nearby networks. Once connected, the Netburner Module is capable of capturing and " +
- "processing all of the traffic on that network. By itself, the Embedded Netburner Module does " +
- "not do much, but a variety of very powerful upgrades can be installed that allow you to fully " +
- "control the traffic on a network.
" +
- "This augmentation increases the player's hacking skill by 8%"
- });
- ENM.addToFactions(["BitRunners", "The Black Hand", "NiteSec", "ECorp", "MegaCorp",
- "Fulcrum Secret Technologies", "NWO", "Blade Industries"]);
- if (augmentationExists(AugmentationNames.ENM)) {
- delete Augmentations[AugmentationNames.ENM];
- }
- AddToAugmentations(ENM);
-
- var ENMCore = new Augmentation({
- name:AugmentationNames.ENMCore, repCost:100e3, moneyCost:500e6,
- info:"The Core library is an implant that upgrades the firmware of the Embedded Netburner Module. " +
- "This upgrade allows the Embedded Netburner Module to generate its own data on a network.
" +
- "This augmentation:
" +
- "Increases the player's hacking speed by 3%
" +
- "Increases the amount of money the player gains from hacking by 10%
" +
- "Increases the player's chance of successfully performing a hack by 3%
" +
- "Increases the player's hacking experience gain rate by 7%
" +
- "Increases the player's hacking skill by 7%",
- prereqs:[AugmentationNames.ENM]
- });
- ENMCore.addToFactions(["BitRunners", "The Black Hand", "ECorp", "MegaCorp",
- "Fulcrum Secret Technologies", "NWO", "Blade Industries"]);
- if (augmentationExists(AugmentationNames.ENMCore)) {
- delete Augmentations[AugmentationNames.ENMCore];
- }
- AddToAugmentations(ENMCore);
-
- var ENMCoreV2 = new Augmentation({
- name:AugmentationNames.ENMCoreV2, repCost:400e3, moneyCost:900e6,
- info:"The Core V2 library is an implant that upgrades the firmware of the Embedded Netburner Module. " +
- "This upgraded firmware allows the Embedded Netburner Module to control the information on " +
- "a network by re-routing traffic, spoofing IP addresses, or altering the data inside network " +
- "packets.
" +
- "This augmentation:
" +
- "Increases the player's hacking speed by 5%
" +
- "Increases the amount of money the player gains from hacking by 30%
" +
- "Increases the player's chance of successfully performing a hack by 5%
" +
- "Increases the player's hacking experience gain rate by 15%
" +
- "Increases the player's hacking skill by 8%",
- prereqs:[AugmentationNames.ENMCore]
- });
- ENMCoreV2.addToFactions(["BitRunners", "ECorp", "MegaCorp", "Fulcrum Secret Technologies", "NWO",
- "Blade Industries", "OmniTek Incorporated", "KuaiGong International"]);
- if (augmentationExists(AugmentationNames.ENMCoreV2)) {
- delete Augmentations[AugmentationNames.ENMCoreV2];
- }
- AddToAugmentations(ENMCoreV2);
-
- var ENMCoreV3 = new Augmentation({
- name:AugmentationNames.ENMCoreV3, repCost:700e3, moneyCost:1500e6,
- info:"The Core V3 library is an implant that upgrades the firmware of the Embedded Netburner Module. " +
- "This upgraded firmware allows the Embedded Netburner Module to seamlessly inject code into " +
- "any device on a network.
" +
- "This augmentation:
" +
- "Increases the player's hacking speed by 5%
" +
- "Increases the amount of money the player gains from hacking by 40%
" +
- "Increases the player's chance of successfully performing a hack by 10%
" +
- "Increases the player's hacking experience gain rate by 25%
" +
- "Increases the player's hacking skill by 10%",
- prereqs:[AugmentationNames.ENMCoreV2],
- });
- ENMCoreV3.addToFactions(["ECorp", "MegaCorp", "Fulcrum Secret Technologies", "NWO",
- "Daedalus", "The Covenant", "Illuminati"]);
- if (augmentationExists(AugmentationNames.ENMCoreV3)) {
- delete Augmentations[AugmentationNames.ENMCoreV3];
- }
- AddToAugmentations(ENMCoreV3);
-
- var ENMAnalyzeEngine = new Augmentation({
- name:AugmentationNames.ENMAnalyzeEngine, repCost:250e3, moneyCost:1200e6,
- info:"Installs the Analyze Engine for the Embedded Netburner Module, which is a CPU cluster " +
- "that vastly outperforms the Netburner Module's native single-core processor.
" +
- "This augmentation increases the player's hacking speed by 10%.",
- prereqs:[AugmentationNames.ENM],
- });
- ENMAnalyzeEngine.addToFactions(["ECorp", "MegaCorp", "Fulcrum Secret Technologies", "NWO",
- "Daedalus", "The Covenant", "Illuminati"]);
- if (augmentationExists(AugmentationNames.ENMAnalyzeEngine)) {
- delete Augmentations[AugmentationNames.ENMAnalyzeEngine];
- }
- AddToAugmentations(ENMAnalyzeEngine);
-
- var ENMDMA = new Augmentation({
- name:AugmentationNames.ENMDMA, repCost:400e3, moneyCost:1400e6,
- info:"This implant installs a Direct Memory Access (DMA) controller into the " +
- "Embedded Netburner Module. This allows the Module to send and receive data " +
- "directly to and from the main memory of devices on a network.
" +
- "This augmentation:
" +
- "Increases the amount of money the player gains from hacking by 40%
" +
- "Increases the player's chance of successfully performing a hack by 20%",
- prereqs:[AugmentationNames.ENM],
- });
- ENMDMA.addToFactions(["ECorp", "MegaCorp", "Fulcrum Secret Technologies", "NWO",
- "Daedalus", "The Covenant", "Illuminati"]);
- if (augmentationExists(AugmentationNames.ENMDMA)) {
- delete Augmentations[AugmentationNames.ENMDMA];
- }
- AddToAugmentations(ENMDMA);
-
- var Neuralstimulator = new Augmentation({
- name:AugmentationNames.Neuralstimulator, repCost:20e3, moneyCost:600e6,
- info:"A cranial implant that intelligently stimulates certain areas of the brain " +
- "in order to improve cognitive functions
" +
- "This augmentation:
" +
- "Increases the player's hacking speed by 2%
" +
- "Increases the player's chance of successfully performing a hack by 10%
" +
- "Increases the player's hacking experience gain rate by 12%"
- });
- Neuralstimulator.addToFactions(["The Black Hand", "Chongqing", "Sector-12", "New Tokyo", "Aevum",
- "Ishima", "Volhaven", "Bachman & Associates", "Clarke Incorporated",
- "Four Sigma"]);
- if (augmentationExists(AugmentationNames.Neuralstimulator)) {
- delete Augmentations[AugmentationNames.Neuralstimulator];
- }
- AddToAugmentations(Neuralstimulator);
-
- var NeuralAccelerator = new Augmentation({
- name:AugmentationNames.NeuralAccelerator, repCost:80e3, moneyCost:350e6,
- info:"A microprocessor that accelerates the processing " +
- "speed of biological neural networks. This is a cranial implant that is embedded inside the brain.
" +
- "This augmentation:
" +
- "Increases the player's hacking skill by 10%
" +
- "Increases the player's hacking experience gain rate by 15%
" +
- "Increases the amount of money the player gains from hacking by 20%"
- });
- NeuralAccelerator.addToFactions(["BitRunners"]);
- if (augmentationExists(AugmentationNames.NeuralAccelerator)) {
- delete Augmentations[AugmentationNames.NeuralAccelerator];
- }
- AddToAugmentations(NeuralAccelerator);
-
- var CranialSignalProcessorsG1 = new Augmentation({
- name:AugmentationNames.CranialSignalProcessorsG1, repCost:4e3, moneyCost:14e6,
- info:"The first generation of Cranial Signal Processors. Cranial Signal Processors " +
- "are a set of specialized microprocessors that are attached to " +
- "neurons in the brain. These chips process neural signals to quickly and automatically perform specific computations " +
- "so that the brain doesn't have to.
" +
- "This augmentation:
" +
- "Increases the player's hacking speed by 1%
" +
- "Increases the player's hacking skill by 5%"
- });
- CranialSignalProcessorsG1.addToFactions(["CyberSec"]);
- if (augmentationExists(AugmentationNames.CranialSignalProcessorsG1)) {
- delete Augmentations[AugmentationNames.CranialSignalProcessorsG1];
- }
- AddToAugmentations(CranialSignalProcessorsG1);
-
- var CranialSignalProcessorsG2 = new Augmentation({
- name:AugmentationNames.CranialSignalProcessorsG2, repCost:7500, moneyCost:25e6,
- info:"The second generation of Cranial Signal Processors. Cranial Signal Processors " +
- "are a set of specialized microprocessors that are attached to " +
- "neurons in the brain. These chips process neural signals to quickly and automatically perform specific computations " +
- "so that the brain doesn't have to.
" +
- "This augmentation:
" +
- "Increases the player's hacking speed by 2%
" +
- "Increases the player's chance of successfully performing a hack by 5%
" +
- "Increases the player's hacking skill by 7%"
- });
- CranialSignalProcessorsG2.addToFactions(["NiteSec"]);
- if (augmentationExists(AugmentationNames.CranialSignalProcessorsG2)) {
- delete Augmentations[AugmentationNames.CranialSignalProcessorsG2];
- }
- AddToAugmentations(CranialSignalProcessorsG2);
-
- var CranialSignalProcessorsG3 = new Augmentation({
- name:AugmentationNames.CranialSignalProcessorsG3, repCost:20e3, moneyCost:110e6,
- info:"The third generation of Cranial Signal Processors. Cranial Signal Processors " +
- "are a set of specialized microprocessors that are attached to " +
- "neurons in the brain. These chips process neural signals to quickly and automatically perform specific computations " +
- "so that the brain doesn't have to.
" +
- "This augmentation:
" +
- "Increases the player's hacking speed by 2%
" +
- "Increases the amount of money the player gains from hacking by 15%
" +
- "Increases the player's hacking skill by 9%"
- });
- CranialSignalProcessorsG3.addToFactions(["NiteSec", "The Black Hand"]);
- if (augmentationExists(AugmentationNames.CranialSignalProcessorsG3)) {
- delete Augmentations[AugmentationNames.CranialSignalProcessorsG3];
- }
- AddToAugmentations(CranialSignalProcessorsG3);
-
- var CranialSignalProcessorsG4 = new Augmentation({
- name:AugmentationNames.CranialSignalProcessorsG4, repCost:50e3, moneyCost:220e6,
- info:"The fourth generation of Cranial Signal Processors. Cranial Signal Processors " +
- "are a set of specialized microprocessors that are attached to " +
- "neurons in the brain. These chips process neural signals to quickly and automatically perform specific computations " +
- "so that the brain doesn't have to.
" +
- "This augmentation:
" +
- "Increases the player's hacking speed by 2%
" +
- "Increases the amount of money the player gains from hacking by 20%
" +
- "Increases the amount of money the player can inject into servers using grow() by 25%"
- });
- CranialSignalProcessorsG4.addToFactions(["The Black Hand"]);
- if (augmentationExists(AugmentationNames.CranialSignalProcessorsG4)) {
- delete Augmentations[AugmentationNames.CranialSignalProcessorsG4];
- }
- AddToAugmentations(CranialSignalProcessorsG4);
-
- var CranialSignalProcessorsG5 = new Augmentation({
- name:AugmentationNames.CranialSignalProcessorsG5, repCost:100e3, moneyCost:450e6,
- info:"The fifth generation of Cranial Signal Processors. Cranial Signal Processors " +
- "are a set of specialized microprocessors that are attached to " +
- "neurons in the brain. These chips process neural signals to quickly and automatically perform specific computations " +
- "so that the brain doesn't have to.
" +
- "This augmentation:
" +
- "Increases the player's hacking skill by 30%
" +
- "Increases the amount of money the player gains from hacking by 25%
" +
- "Increases the amount of money the player can inject into servers using grow() by 75%"
- });
- CranialSignalProcessorsG5.addToFactions(["BitRunners"]);
- if (augmentationExists(AugmentationNames.CranialSignalProcessorsG5)) {
- delete Augmentations[AugmentationNames.CranialSignalProcessorsG5];
- }
- AddToAugmentations(CranialSignalProcessorsG5);
-
- var NeuronalDensification = new Augmentation({
- name:AugmentationNames.NeuronalDensification, repCost:75e3, moneyCost:275e6,
- info:"The brain is surgically re-engineered to have increased neuronal density " +
- "by decreasing the neuron gap junction. Then, the body is genetically modified " +
- "to enhance the production and capabilities of its neural stem cells.
" +
- "This augmentation:
" +
- "Increases the player's hacking skill by 15%
" +
- "Increases the player's hacking experience gain rate by 10%
"+
- "Increases the player's hacking speed by 3%"
- });
- NeuronalDensification.addToFactions(["Clarke Incorporated"]);
- if (augmentationExists(AugmentationNames.NeuronalDensification)) {
- delete Augmentations[AugmentationNames.NeuronalDensification];
- }
- AddToAugmentations(NeuronalDensification);
-
- //Work Augmentations
- var NuoptimalInjectorImplant = new Augmentation({
- name:AugmentationNames.NuoptimalInjectorImplant, repCost:2e3, moneyCost:4e6,
- info:"This torso implant automatically injects nootropic supplements into " +
- "the bloodstream to improve memory, increase focus, and provide other " +
- "cognitive enhancements.
" +
- "This augmentation increases the amount of reputation the player gains " +
- "when working for a company by 20%."
- });
- NuoptimalInjectorImplant.addToFactions(["Tian Di Hui", "Volhaven", "New Tokyo", "Chongqing", "Ishima",
- "Clarke Incorporated", "Four Sigma", "Bachman & Associates"]);
- if (augmentationExists(AugmentationNames.NuoptimalInjectorImplant)) {
- delete Augmentations[AugmentationNames.NuoptimalInjectorImplant];
- }
- AddToAugmentations(NuoptimalInjectorImplant);
-
- var SpeechEnhancement = new Augmentation({
- name:AugmentationNames.SpeechEnhancement, repCost:1e3, moneyCost:2.5e6,
- info:"An advanced neural implant that improves your speaking abilities, making " +
- "you more convincing and likable in conversations and overall improving your " +
- "social interactions.
" +
- "This augmentation:
" +
- "Increases the player's charisma by 10%
" +
- "Increases the amount of reputation the player gains when working for a company by 10%"
- });
- SpeechEnhancement.addToFactions(["Tian Di Hui", "Speakers for the Dead", "Four Sigma", "KuaiGong International",
- "Clarke Incorporated", "Four Sigma", "Bachman & Associates"]);
- if (augmentationExists(AugmentationNames.SpeechEnhancement)) {
- delete Augmentations[AugmentationNames.SpeechEnhancement];
- }
- AddToAugmentations(SpeechEnhancement);
-
- var FocusWire = new Augmentation({
- name:AugmentationNames.FocusWire, repCost:30e3, moneyCost:180e6,
- info:"A cranial implant that stops procrastination by blocking specific neural pathways " +
- "in the brain.
" +
- "This augmentation:
" +
- "Increases all experience gains by 5%
" +
- "Increases the amount of money the player gains from working by 20%
" +
- "Increases the amount of reputation the player gains when working for a company by 10%"
- });
- FocusWire.addToFactions(["Bachman & Associates", "Clarke Incorporated", "Four Sigma", "KuaiGong International"]);
- if (augmentationExists(AugmentationNames.FocusWire)) {
- delete Augmentations[AugmentationNames.FocusWire];
- }
- AddToAugmentations(FocusWire)
-
- var PCDNI = new Augmentation({
- name:AugmentationNames.PCDNI, repCost:150e3, moneyCost:750e6,
- info:"Installs a Direct-Neural Interface jack into your arm that is compatible with most " +
- "computers. Connecting to a computer through this jack allows you to interface with " +
- "it using the brain's electrochemical signals.
" +
- "This augmentation:
" +
- "Increases the amount of reputation the player gains when working for a company by 30%
" +
- "Increases the player's hacking skill by 8%"
- });
- PCDNI.addToFactions(["Four Sigma", "OmniTek Incorporated", "ECorp", "Blade Industries"]);
- if (augmentationExists(AugmentationNames.PCDNI)) {
- delete Augmentations[AugmentationNames.PCDNI];
- }
- AddToAugmentations(PCDNI);
-
- var PCDNIOptimizer = new Augmentation({
- name:AugmentationNames.PCDNIOptimizer, repCost:200e3, moneyCost:900e6,
- info:"This is a submodule upgrade to the PC Direct-Neural Interface augmentation. It " +
- "improves the performance of the interface and gives the user more control options " +
- "to the connected computer.
" +
- "This augmentation:
" +
- "Increases the amount of reputation the player gains when working for a company by 75%
" +
- "Increases the player's hacking skill by 10%",
- prereqs:[AugmentationNames.PCDNI],
- });
- PCDNIOptimizer.addToFactions(["Fulcrum Secret Technologies", "ECorp", "Blade Industries"]);
- if (augmentationExists(AugmentationNames.PCDNIOptimizer)) {
- delete Augmentations[AugmentationNames.PCDNIOptimizer];
- }
- AddToAugmentations(PCDNIOptimizer);
-
- var PCDNINeuralNetwork = new Augmentation({
- name:AugmentationNames.PCDNINeuralNetwork, repCost:600e3, moneyCost:1500e6,
- info:"This is an additional installation that upgrades the functionality of the " +
- "PC Direct-Neural Interface augmentation. When connected to a computer, " +
- "The NeuroNet Injector upgrade allows the user to use his/her own brain's " +
- "processing power to aid the computer in computational tasks.
" +
- "This augmentation:
" +
- "Increases the amount of reputation the player gains when working for a company by 100%
" +
- "Increases the player's hacking skill by 10%
" +
- "Increases the player's hacking speed by 5%",
- prereqs:[AugmentationNames.PCDNI],
- });
- PCDNINeuralNetwork.addToFactions(["Fulcrum Secret Technologies"]);
- if (augmentationExists(AugmentationNames.PCDNINeuralNetwork)) {
- delete Augmentations[AugmentationNames.PCDNINeuralNetwork];
- }
- AddToAugmentations(PCDNINeuralNetwork);
-
- var ADRPheromone1 = new Augmentation({
- name:AugmentationNames.ADRPheromone1, repCost:1500, moneyCost:3.5e6,
- info:"The body is genetically re-engineered so that it produces the ADR-V1 pheromone, " +
- "an artificial pheromone discovered by scientists. The ADR-V1 pheromone, when excreted, " +
- "triggers feelings of admiration and approval in other people.
" +
- "This augmentation:
" +
- "Increases the amount of reputation the player gains when working for a company by 10%
" +
- "Increases the amount of reputation the player gains for a faction by 10%"
- });
- ADRPheromone1.addToFactions(["Tian Di Hui", "The Syndicate", "NWO", "MegaCorp", "Four Sigma"]);
- if (augmentationExists(AugmentationNames.ADRPheromone1)) {
- delete Augmentations[AugmentationNames.ADRPheromone1];
- }
- AddToAugmentations(ADRPheromone1);
-
- var ADRPheromone2 = new Augmentation({
- name:AugmentationNames.ADRPheromone2, repCost:25e3, moneyCost:110e6,
- info:"The body is genetically re-engineered so that it produces the ADR-V2 pheromone, " +
- "which is similar to but more potent than ADR-V1. This pheromone, when excreted, " +
- "triggers feelings of admiration, approval, and respect in others.
" +
- "This augmentation:
" +
- "Increases the amount of reputation the player gains for a faction and company by 20%."
- });
- ADRPheromone2.addToFactions(["Silhouette", "Four Sigma", "Bachman & Associates", "Clarke Incorporated"]);
- if (augmentationExists(AugmentationNames.ADRPheromone2)) {
- delete Augmentations[AugmentationNames.ADRPheromone2];
- }
- AddToAugmentations(ADRPheromone2);
-
- //HacknetNode Augmentations
- var HacknetNodeCPUUpload = new Augmentation({
- name:AugmentationNames.HacknetNodeCPUUpload, repCost:1500, moneyCost:2.2e6,
- info:"Uploads the architecture and design details of a Hacknet Node's CPU into " +
- "the brain. This allows the user to engineer custom hardware and software " +
- "for the Hacknet Node that provides better performance.
" +
- "This augmentation:
" +
- "Increases the amount of money produced by Hacknet Nodes by 15%
" +
- "Decreases the cost of purchasing a Hacknet Node by 15%"
- });
- HacknetNodeCPUUpload.addToFactions(["Netburners"]);
- if (augmentationExists(AugmentationNames.HacknetNodeCPUUpload)) {
- delete Augmentations[AugmentationNames.HacknetNodeCPUUpload];
- }
- AddToAugmentations(HacknetNodeCPUUpload);
-
- var HacknetNodeCacheUpload = new Augmentation({
- name:AugmentationNames.HacknetNodeCacheUpload, repCost:1e3, moneyCost:1.1e6,
- info:"Uploads the architecture and design details of a Hacknet Node's main-memory cache " +
- "into the brain. This allows the user to engineer custom cache hardware for the " +
- "Hacknet Node that offers better performance.
" +
- "This augmentation:
" +
- "Increases the amount of money produced by Hacknet Nodes by 10%
" +
- "Decreases the cost of leveling up a Hacknet Node by 15%"
- });
- HacknetNodeCacheUpload.addToFactions(["Netburners"]);
- if (augmentationExists(AugmentationNames.HacknetNodeCacheUpload)) {
- delete Augmentations[AugmentationNames.HacknetNodeCacheUpload];
- }
- AddToAugmentations(HacknetNodeCacheUpload);
-
- var HacknetNodeNICUpload = new Augmentation({
- name:AugmentationNames.HacknetNodeNICUpload, repCost:750, moneyCost:900e3,
- info:"Uploads the architecture and design details of a Hacknet Node's Network Interface Card (NIC) " +
- "into the brain. This allows the user to engineer a custom NIC for the Hacknet Node that " +
- "offers better performance.
" +
- "This augmentation:
" +
- "Increases the amount of money produced by Hacknet Nodes by 10%
" +
- "Decreases the cost of purchasing a Hacknet Node by 10%"
- });
- HacknetNodeNICUpload.addToFactions(["Netburners"]);
- if (augmentationExists(AugmentationNames.HacknetNodeNICUpload)) {
- delete Augmentations[AugmentationNames.HacknetNodeNICUpload];
- }
- AddToAugmentations(HacknetNodeNICUpload);
-
- var HacknetNodeKernelDNI = new Augmentation({
- name:AugmentationNames.HacknetNodeKernelDNI, repCost:3e3, moneyCost:8e6,
- info:"Installs a Direct-Neural Interface jack into the arm that is capable of connecting to a " +
- "Hacknet Node. This lets the user access and manipulate the Node's kernel using the mind's " +
- "electrochemical signals.
" +
- "This augmentation increases the amount of money produced by Hacknet Nodes by 25%."
- });
- HacknetNodeKernelDNI.addToFactions(["Netburners"]);
- if (augmentationExists(AugmentationNames.HacknetNodeKernelDNI)) {
- delete Augmentations[AugmentationNames.HacknetNodeKernelDNI];
- }
- AddToAugmentations(HacknetNodeKernelDNI);
-
- var HacknetNodeCoreDNI = new Augmentation({
- name:AugmentationNames.HacknetNodeCoreDNI, repCost:5e3, moneyCost:12e6,
- info:"Installs a Direct-Neural Interface jack into the arm that is capable of connecting " +
- "to a Hacknet Node. This lets the user access and manipulate the Node's processing logic using " +
- "the mind's electrochemical signals.
" +
- "This augmentation increases the amount of money produced by Hacknet Nodes by 45%."
- });
- HacknetNodeCoreDNI.addToFactions(["Netburners"]);
- if (augmentationExists(AugmentationNames.HacknetNodeCoreDNI)) {
- delete Augmentations[AugmentationNames.HacknetNodeCoreDNI];
- }
- AddToAugmentations(HacknetNodeCoreDNI);
-
- //Misc/Hybrid augmentations
- var NeuroFluxGovernor = new Augmentation({
- name:AugmentationNames.NeuroFluxGovernor, repCost:500, moneyCost: 750e3,
- info:"A device that is embedded in the back of the neck. The NeuroFlux Governor " +
- "monitors and regulates nervous impulses coming to and from the spinal column, " +
- "essentially 'governing' the body. By doing so, it improves the functionality of the " +
- "body's nervous system.
" +
- "This is a special augmentation because it can be leveled up infinitely. Each level of this augmentation " +
- "increases ALL of the player's multipliers by 1%"
- });
- var nextLevel = Object(_Faction_js__WEBPACK_IMPORTED_MODULE_3__["getNextNeurofluxLevel"])();
- NeuroFluxGovernor.level = nextLevel - 1;
- mult = Math.pow(_Constants_js__WEBPACK_IMPORTED_MODULE_1__["CONSTANTS"].NeuroFluxGovernorLevelMult, NeuroFluxGovernor.level);
- NeuroFluxGovernor.baseRepRequirement = 500 * mult * _Constants_js__WEBPACK_IMPORTED_MODULE_1__["CONSTANTS"].AugmentationRepMultiplier * _BitNode_js__WEBPACK_IMPORTED_MODULE_0__["BitNodeMultipliers"].AugmentationRepCost;
- NeuroFluxGovernor.baseCost = 750e3 * mult * _Constants_js__WEBPACK_IMPORTED_MODULE_1__["CONSTANTS"].AugmentationCostMultiplier * _BitNode_js__WEBPACK_IMPORTED_MODULE_0__["BitNodeMultipliers"].AugmentationMoneyCost;
- if (augmentationExists(AugmentationNames.NeuroFluxGovernor)) {
- delete Augmentations[AugmentationNames.NeuroFluxGovernor];
- }
- NeuroFluxGovernor.addToAllFactions();
- AddToAugmentations(NeuroFluxGovernor);
-
- var Neurotrainer1 = new Augmentation({
- name:AugmentationNames.Neurotrainer1, repCost:400, moneyCost:800e3,
- info:"A decentralized cranial implant that improves the brain's ability to learn. It is " +
- "installed by releasing millions of nanobots into the human brain, each of which " +
- "attaches to a different neural pathway to enhance the brain's ability to retain " +
- "and retrieve information.
" +
- "This augmentation increases the player's experience gain rate for all stats by 10%"
- });
- Neurotrainer1.addToFactions(["CyberSec"]);
- if (augmentationExists(AugmentationNames.Neurotrainer1)) {
- delete Augmentations[AugmentationNames.Neurotrainer1];
- }
- AddToAugmentations(Neurotrainer1);
-
- var Neurotrainer2 = new Augmentation({
- name:AugmentationNames.Neurotrainer2, repCost:4e3, moneyCost:9e6,
- info:"A decentralized cranial implant that improves the brain's ability to learn. This " +
- "is a more powerful version of the Neurotrainer I augmentation, but it does not " +
- "require Neurotrainer I to be installed as a prerequisite.
" +
- "This augmentation increases the player's experience gain rate for all stats by 15%"
- });
- Neurotrainer2.addToFactions(["BitRunners", "NiteSec"]);
- if (augmentationExists(AugmentationNames.Neurotrainer2)) {
- delete Augmentations[AugmentationNames.Neurotrainer2];
- }
- AddToAugmentations(Neurotrainer2);
-
- var Neurotrainer3 = new Augmentation({
- name:AugmentationNames.Neurotrainer3, repCost:10e3, moneyCost:26e6,
- info:"A decentralized cranial implant that improves the brain's ability to learn. This " +
- "is a more powerful version of the Neurotrainer I and Neurotrainer II augmentation, " +
- "but it does not require either of them to be installed as a prerequisite.
" +
- "This augmentation increases the player's experience gain rate for all stats by 20%"
- });
- Neurotrainer3.addToFactions(["NWO", "Four Sigma"]);
- if (augmentationExists(AugmentationNames.Neurotrainer3)) {
- delete Augmentations[AugmentationNames.Neurotrainer3];
- }
- AddToAugmentations(Neurotrainer3);
-
- var Hypersight = new Augmentation({
- name:AugmentationNames.Hypersight, repCost:60e3, moneyCost:550e6,
- info:"A bionic eye implant that grants sight capabilities far beyond those of a natural human. " +
- "Embedded circuitry within the implant provides the ability to detect heat and movement " +
- "through solid objects such as wells, thus providing 'x-ray vision'-like capabilities.
" +
- "This augmentation:
" +
- "Increases the player's dexterity by 40%
" +
- "Increases the player's hacking speed by 3%
" +
- "Increases the amount of money the player gains from hacking by 10%"
- });
- Hypersight.addToFactions(["Blade Industries", "KuaiGong International"]);
- if (augmentationExists(AugmentationNames.Hypersight)) {
- delete Augmentations[AugmentationNames.Hypersight];
- }
- AddToAugmentations(Hypersight);
-
- var LuminCloaking1 = new Augmentation({
- name:AugmentationNames.LuminCloaking1, repCost:600, moneyCost:1e6,
- info:"A skin implant that reinforces the skin with highly-advanced synthetic cells. These " +
- "cells, when powered, have a negative refractive index. As a result, they bend light " +
- "around the skin, making the user much harder to see from the naked eye.
" +
- "This augmentation:
" +
- "Increases the player's agility by 5%
" +
- "Increases the amount of money the player gains from crimes by 10%"
- });
- LuminCloaking1.addToFactions(["Slum Snakes", "Tetrads"]);
- if (augmentationExists(AugmentationNames.LuminCloaking1)) {
- delete Augmentations[AugmentationNames.LuminCloaking1];
- }
- AddToAugmentations(LuminCloaking1);
-
- var LuminCloaking2 = new Augmentation({
- name:AugmentationNames.LuminCloaking2, repCost:2e3, moneyCost:6e6,
- info:"This is a more advanced version of the LuminCloaking-V2 augmentation. This skin implant " +
- "reinforces the skin with highly-advanced synthetic cells. These " +
- "cells, when powered, are capable of not only bending light but also of bending heat, " +
- "making the user more resilient as well as stealthy.
" +
- "This augmentation:
" +
- "Increases the player's agility by 10%
" +
- "Increases the player's defense by 10%
" +
- "Increases the amount of money the player gains from crimes by 25%"
- });
- LuminCloaking2.addToFactions(["Slum Snakes", "Tetrads"]);
- if (augmentationExists(AugmentationNames.LuminCloaking2)) {
- delete Augmentations[AugmentationNames.LuminCloaking2];
- }
- AddToAugmentations(LuminCloaking2);
-
- var SmartSonar = new Augmentation({
- name:AugmentationNames.SmartSonar, repCost:9e3, moneyCost:15e6,
- info:"A cochlear implant that helps the player detect and locate enemies " +
- "using sound propagation.
" +
- "This augmentation:
" +
- "Increases the player's dexterity by 10%
" +
- "Increases the player's dexterity experience gain rate by 15%
" +
- "Increases the amount of money the player gains from crimes by 25%"
- });
- SmartSonar.addToFactions(["Slum Snakes"]);
- if (augmentationExists(AugmentationNames.SmartSonar)) {
- delete Augmentations[AugmentationNames.SmartSonar];
- }
- AddToAugmentations(SmartSonar);
-
- var PowerRecirculator = new Augmentation({
- name:AugmentationNames.PowerRecirculator, repCost:10e3, moneyCost:36e6,
- info:"The body's nerves are attached with polypyrrole nanocircuits that " +
- "are capable of capturing wasted energy (in the form of heat) " +
- "and converting it back into usable power.
" +
- "This augmentation:
" +
- "Increases all of the player's stats by 5%
" +
- "Increases the player's experience gain rate for all stats by 10%"
- });
- PowerRecirculator.addToFactions(["Tetrads", "The Dark Army", "The Syndicate", "NWO"]);
- if (augmentationExists(AugmentationNames.PowerRecirculator)) {
- delete Augmentations[AugmentationNames.PowerRecirculator];
- }
- AddToAugmentations(PowerRecirculator);
-
- //Unique AUGS (Each Faction gets one unique augmentation)
- //Factions that already have unique augs up to this point:
- // Slum Snakes, CyberSec, Netburners, Fulcrum Secret Technologies,
- // Silhouette
-
- //Illuminati
- var QLink = new Augmentation({
- name:AugmentationNames.QLink, repCost:750e3, moneyCost:1300e6,
- info:"A brain implant that wirelessly connects you to the Illuminati's " +
- "quantum supercomputer, allowing you to access and use its incredible " +
- "computing power.
" +
- "This augmentation:
" +
- "Increases the player's hacking speed by 10%
" +
- "Increases the player's chance of successfully performing a hack by 30%
" +
- "Increases the amount of money the player gains from hacking by 100%"
- });
- QLink.addToFactions(["Illuminati"]);
- if (augmentationExists(AugmentationNames.QLink)) {
- delete Augmentations[AugmentationNames.QLink];
- }
- AddToAugmentations(QLink);
-
- //Daedalus
- var RedPill = new Augmentation({
- name:AugmentationNames.TheRedPill, repCost:1e6, moneyCost:0,
- info:"It's time to leave the cave"
- });
- RedPill.addToFactions(["Daedalus"]);
- if (augmentationExists(AugmentationNames.TheRedPill)) {
- delete Augmentations[AugmentationNames.TheRedPill];
- }
- AddToAugmentations(RedPill);
-
- //Covenant
- var SPTN97 = new Augmentation({
- name:AugmentationNames.SPTN97, repCost:500e3, moneyCost:975e6,
- info:"The SPTN-97 gene is injected into the genome. The SPTN-97 gene is an " +
- "artificially-synthesized gene that was developed by DARPA to create " +
- "super-soldiers through genetic modification. The gene was outlawed in " +
- "2056.
" +
- "This augmentation:
" +
- "Increases all of the player's combat stats by 75%
" +
- "Increases the player's hacking skill by 15%"
- });
- SPTN97.addToFactions(["The Covenant"]);
- if (augmentationExists(AugmentationNames.SPTN97)) {
- delete Augmentations[AugmentationNames.SPTN97];
- }
- AddToAugmentations(SPTN97);
-
- //ECorp
- var HiveMind = new Augmentation({
- name:AugmentationNames.HiveMind, repCost:600e3, moneyCost:1100e6,
- info:"A brain implant developed by ECorp. They do not reveal what " +
- "exactly the implant does, but they promise that it will greatly " +
- "enhance your abilities."
- });
- HiveMind.addToFactions(["ECorp"]);
- if (augmentationExists(AugmentationNames.HiveMind)) {
- delete Augmentations[AugmentationNames.HiveMind];
- }
- AddToAugmentations(HiveMind);
-
- //MegaCorp
- var CordiARCReactor = new Augmentation({
- name:AugmentationNames.CordiARCReactor, repCost:450e3, moneyCost:1000e6,
- info:"The thoracic cavity is equipped with a small chamber designed " +
- "to hold and sustain hydrogen plasma. The plasma is used to generate " +
- "fusion power through nuclear fusion, providing limitless amount of clean " +
- "energy for the body.
" +
- "This augmentation:
" +
- "Increases all of the player's combat stats by 35%
" +
- "Increases all of the player's combat stat experience gain rate by 35%"
- });
- CordiARCReactor.addToFactions(["MegaCorp"]);
- if (augmentationExists(AugmentationNames.CordiARCReactor)) {
- delete Augmentations[AugmentationNames.CordiARCReactor];
- }
- AddToAugmentations(CordiARCReactor);
-
- //BachmanAndAssociates
- var SmartJaw = new Augmentation({
- name:AugmentationNames.SmartJaw, repCost:150e3, moneyCost:550e6,
- info:"A bionic jaw that contains advanced hardware and software " +
- "capable of psychoanalyzing and profiling the personality of " +
- "others using optical imaging software.
" +
- "This augmentation:
" +
- "Increases the player's charisma by 50%.
" +
- "Increases the player's charisma experience gain rate by 50%
" +
- "Increases the amount of reputation the player gains for a company by 25%
" +
- "Increases the amount of reputation the player gains for a faction by 25%"
- });
- SmartJaw.addToFactions(["Bachman & Associates"]);
- if (augmentationExists(AugmentationNames.SmartJaw)) {
- delete Augmentations[AugmentationNames.SmartJaw];
- }
- AddToAugmentations(SmartJaw);
-
- //BladeIndustries
- var Neotra = new Augmentation({
- name:AugmentationNames.Neotra, repCost:225e3, moneyCost:575e6,
- info:"A highly-advanced techno-organic drug that is injected into the skeletal " +
- "and integumentary system. The drug permanently modifies the DNA of the " +
- "body's skin and bone cells, granting them the ability to repair " +
- "and restructure themselves.
" +
- "This augmentation increases the player's strength and defense by 55%"
- });
- Neotra.addToFactions(["Blade Industries"]);
- if (augmentationExists(AugmentationNames.Neotra)) {
- delete Augmentations[AugmentationNames.Neotra];
- }
- AddToAugmentations(Neotra);
-
- //NWO
- var Xanipher = new Augmentation({
- name:AugmentationNames.Xanipher, repCost:350e3, moneyCost:850e6,
- info:"A concoction of advanced nanobots that is orally ingested into the " +
- "body. These nanobots induce physiological change and significantly " +
- "improve the body's functionining in all aspects.
" +
- "This augmentation:
" +
- "Increases all of the player's stats by 20%
" +
- "Increases the player's experience gain rate for all stats by 15%"
- });
- Xanipher.addToFactions(["NWO"]);
- if (augmentationExists(AugmentationNames.Xanipher)) {
- delete Augmentations[AugmentationNames.Xanipher];
- }
- AddToAugmentations(Xanipher);
-
- //ClarkeIncorporated
- var nextSENS = new Augmentation({
- name:AugmentationNames.nextSENS, repCost:175e3, moneyCost:385e6,
- info:"The body is genetically re-engineered to maintain a state " +
- "of negligible senescence, preventing the body from " +
- "deteriorating with age.
" +
- "This augmentation increases all of the player's stats by 20%"
- });
- nextSENS.addToFactions(["Clarke Incorporated"]);
- if (augmentationExists(AugmentationNames.nextSENS)) {
- delete Augmentations[AugmentationNames.nextSENS];
- }
- AddToAugmentations(nextSENS);
-
- //OmniTekIncorporated
- var OmniTekInfoLoad = new Augmentation({
- name:AugmentationNames.OmniTekInfoLoad, repCost:250e3, moneyCost:575e6,
- info:"OmniTek's data and information repository is uploaded " +
- "into your brain, enhancing your programming and " +
- "hacking abilities.
" +
- "This augmentation:
" +
- "Increases the player's hacking skill by 20%
" +
- "Increases the player's hacking experience gain rate by 25%"
- });
- OmniTekInfoLoad.addToFactions(["OmniTek Incorporated"]);
- if (augmentationExists(AugmentationNames.OmniTekInfoLoad)) {
- delete Augmentations[AugmentationNames.OmniTekInfoLoad];
- }
- AddToAugmentations(OmniTekInfoLoad);
-
- //FourSigma
- //TODO Later when Intelligence is added in . Some aug that greatly increases int
-
- //KuaiGongInternational
- var PhotosyntheticCells = new Augmentation({
- name:AugmentationNames.PhotosyntheticCells, repCost:225e3, moneyCost:550e6,
- info:"Chloroplasts are added to epidermal stem cells and are applied " +
- "to the body using a skin graft. The result is photosynthetic " +
- "skin cells, allowing users to generate their own energy " +
- "and nutrition using solar power.
" +
- "This augmentation increases the player's strength, defense, and agility by 40%"
- });
- PhotosyntheticCells.addToFactions(["KuaiGong International"]);
- if (augmentationExists(AugmentationNames.PhotosyntheticCells)) {
- delete Augmentations[AugmentationNames.PhotosyntheticCells];
- }
- AddToAugmentations(PhotosyntheticCells);
-
- //BitRunners
- var Neurolink = new Augmentation({
- name:AugmentationNames.Neurolink, repCost:350e3, moneyCost:875e6,
- info:"A brain implant that provides a high-bandwidth, direct neural link between your " +
- "mind and BitRunners' data servers, which reportedly contain " +
- "the largest database of hacking tools and information in the world.
" +
- "This augmentation:
" +
- "Increases the player's hacking skill by 15%
" +
- "Increases the player's hacking experience gain rate by 20%
" +
- "Increases the player's chance of successfully performing a hack by 10%
" +
- "Increases the player's hacking speed by 5%
" +
- "Lets the player start with the FTPCrack.exe and relaySMTP.exe programs after a reset"
- });
- Neurolink.addToFactions(["BitRunners"]);
- if (augmentationExists(AugmentationNames.Neurolink)) {
- delete Augmentations[AugmentationNames.Neurolink];
- }
- AddToAugmentations(Neurolink);
-
- //BlackHand
- var TheBlackHand = new Augmentation({
- name:AugmentationNames.TheBlackHand, repCost:40e3, moneyCost:110e6,
- info:"A highly advanced bionic hand. This prosthetic not only " +
- "enhances strength and dexterity but it is also embedded " +
- "with hardware and firmware that lets the user connect to, access and hack " +
- "devices and machines just by touching them.
" +
- "This augmentation:
" +
- "Increases the player's strength and dexterity by 15%
" +
- "Increases the player's hacking skill by 10%
" +
- "Increases the player's hacking speed by 2%
" +
- "Increases the amount of money the player gains from hacking by 10%"
- });
- TheBlackHand.addToFactions(["The Black Hand"]);
- if (augmentationExists(AugmentationNames.TheBlackHand)) {
- delete Augmentations[AugmentationNames.TheBlackHand];
- }
- AddToAugmentations(TheBlackHand);
-
- //NiteSec
- var CRTX42AA = new Augmentation({
- name:AugmentationNames.CRTX42AA, repCost:18e3, moneyCost:45e6,
- info:"The CRTX42-AA gene is injected into the genome. " +
- "The CRTX42-AA is an artificially-synthesized gene that targets the visual and prefrontal " +
- "cortex and improves cognitive abilities.
" +
- "This augmentation:
" +
- "Improves the player's hacking skill by 8%
" +
- "Improves the player's hacking experience gain rate by 15%"
- });
- CRTX42AA.addToFactions(["NiteSec"]);
- if (augmentationExists(AugmentationNames.CRTX42AA)) {
- delete Augmentations[AugmentationNames.CRTX42AA];
- }
- AddToAugmentations(CRTX42AA);
-
- //Chongqing
- var Neuregen = new Augmentation({
- name:AugmentationNames.Neuregen, repCost:15e3, moneyCost:75e6,
- info:"A drug that genetically modifies the neurons in the brain. " +
- "The result is that these neurons never die and continuously " +
- "regenerate and strengthen themselves.
" +
- "This augmentation increases the player's hacking experience gain rate by 40%"
- });
- Neuregen.addToFactions(["Chongqing"]);
- if (augmentationExists(AugmentationNames.Neuregen)) {
- delete Augmentations[AugmentationNames.Neuregen];
- }
- AddToAugmentations(Neuregen);
-
- //Sector12
- var CashRoot = new Augmentation({
- name:AugmentationNames.CashRoot, repCost:5e3, moneyCost:25e6,
- info:"A collection of digital assets saved on a small chip. The chip is implanted " +
- "into your wrist. A small jack in the chip allows you to connect it to a computer " +
- "and upload the assets.
" +
- "This augmentation:
" +
- "Lets the player start with $1,000,000 after a reset
" +
- "Lets the player start with the BruteSSH.exe program after a reset"
- });
- CashRoot.addToFactions(["Sector-12"]);
- if (augmentationExists(AugmentationNames.CashRoot)) {
- delete Augmentations[AugmentationNames.CashRoot];
- }
- AddToAugmentations(CashRoot);
-
- //NewTokyo
- var NutriGen = new Augmentation({
- name:AugmentationNames.NutriGen, repCost:2500, moneyCost:500e3,
- info:"A thermo-powered artificial nutrition generator. Endogenously " +
- "synthesizes glucose, amino acids, and vitamins and redistributes them " +
- "across the body. The device is powered by the body's naturally wasted " +
- "energy in the form of heat.
" +
- "This augmentation:
" +
- "Increases the player's experience gain rate for all combat stats by 20%"
- });
- NutriGen.addToFactions(["New Tokyo"]);
- if (augmentationExists(AugmentationNames.NutriGen)) {
- delete Augmentations[AugmentationNames.NutriGen];
- }
- AddToAugmentations(NutriGen);
-
- //Aevum
- //TODO Later Something that lets you learn advanced math...this increases int
- //and profits as a trader/from trading
-
- //Ishima
- var INFRARet = new Augmentation({
- name:AugmentationNames.INFRARet, repCost:3e3, moneyCost:6e6,
- info:"A retina implant consisting of a tiny chip that sits behind the " +
- "retina. This implant lets people visually detect infrared radiation.
" +
- "This augmentation:
" +
- "Increases the player's crime success rate by 25%
" +
- "Increases the amount of money the player gains from crimes by 10%
" +
- "Increases the player's dexterity by 10%"
- });
- INFRARet.addToFactions(["Ishima"]);
- if (augmentationExists(AugmentationNames.INFRARet)) {
- delete Augmentations[AugmentationNames.INFRARet];
- }
- AddToAugmentations(INFRARet);
-
- //Volhaven
- var DermaForce = new Augmentation({
- name:AugmentationNames.DermaForce, repCost:6e3, moneyCost:10e6,
- info:"A synthetic skin is grafted onto the body. The skin consists of " +
- "millions of nanobots capable of projecting high-density muon beams, " +
- "creating an energy barrier around the user.
" +
- "This augmentation increases the player's defense by 40%"
- });
- DermaForce.addToFactions(["Volhaven"]);
- if (augmentationExists(AugmentationNames.DermaForce)) {
- delete Augmentations[AugmentationNames.DermaForce];
- }
- AddToAugmentations(DermaForce);
-
- //SpeakersForTheDead
- var GrapheneBrachiBlades = new Augmentation({
- name:AugmentationNames.GrapheneBrachiBlades, repCost:90e3, moneyCost:500e6,
- info:"An upgrade to the BrachiBlades augmentation. It infuses " +
- "the retractable blades with an advanced graphene material " +
- "to make them much stronger and lighter.
" +
- "This augmentation:
" +
- "Increases the player's strength and defense by 40%
" +
- "Increases the player's crime success rate by 10%
" +
- "Increases the amount of money the player gains from crimes by 30%",
- prereqs:[AugmentationNames.BrachiBlades],
- });
- GrapheneBrachiBlades.addToFactions(["Speakers for the Dead"]);
- if (augmentationExists(AugmentationNames.GrapheneBrachiBlades)) {
- delete Augmentations[AugmentationNames.GrapheneBrachiBlades];
- }
- AddToAugmentations(GrapheneBrachiBlades);
-
- //DarkArmy
- var GrapheneBionicArms = new Augmentation({
- name:AugmentationNames.GrapheneBionicArms, repCost:200e3, moneyCost:750e6,
- info:"An upgrade to the Bionic Arms augmentation. It infuses the " +
- "prosthetic arms with an advanced graphene material " +
- "to make them much stronger and lighter.
" +
- "This augmentation increases the player's strength and dexterity by 85%",
- prereqs:[AugmentationNames.BionicArms],
- });
- GrapheneBionicArms.addToFactions(["The Dark Army"]);
- if (augmentationExists(AugmentationNames.GrapheneBionicArms)) {
- delete Augmentations[AugmentationNames.GrapheneBionicArms];
- }
- AddToAugmentations(GrapheneBionicArms);
-
- //TheSyndicate
- var BrachiBlades = new Augmentation({
- name:AugmentationNames.BrachiBlades, repCost:5e3, moneyCost:18e6,
- info:"A set of retractable plasteel blades are implanted in the arm, underneath the skin. " +
- "
This augmentation:
" +
- "Increases the player's strength and defense by 15%
" +
- "Increases the player's crime success rate by 10%
" +
- "Increases the amount of money the player gains from crimes by 15%"
- });
- BrachiBlades.addToFactions(["The Syndicate"]);
- if (augmentationExists(AugmentationNames.BrachiBlades)) {
- delete Augmentations[AugmentationNames.BrachiBlades];
- }
- AddToAugmentations(BrachiBlades);
-
- //Tetrads
- var BionicArms = new Augmentation({
- name:AugmentationNames.BionicArms, repCost:25e3, moneyCost:55e6,
- info:"Cybernetic arms created from plasteel and carbon fibers that completely replace " +
- "the user's organic arms.
" +
- "This augmentation increases the user's strength and dexterity by 30%"
- });
- BionicArms.addToFactions(["Tetrads"]);
- if (augmentationExists(AugmentationNames.BionicArms)) {
- delete Augmentations[AugmentationNames.BionicArms];
- }
- AddToAugmentations(BionicArms);
-
- //TianDiHui
- var SNA = new Augmentation({
- name:AugmentationNames.SNA, repCost:2500, moneyCost:6e6,
- info:"A cranial implant that affects the user's personality, making them better " +
- "at negotiation in social situations.
" +
- "This augmentation:
" +
- "Increases the amount of money the player earns at a company by 10%
" +
- "Increases the amount of reputation the player gains when working for a " +
- "company or faction by 15%"
- });
- SNA.addToFactions(["Tian Di Hui"]);
- if (augmentationExists(AugmentationNames.SNA)) {
- delete Augmentations[AugmentationNames.SNA];
- }
- AddToAugmentations(SNA);
-
- //For BitNode-2, add all Augmentations to crime/evil factions.
- //Do this before adding special Augmentations that become available in later BitNodes
- if (_Player_js__WEBPACK_IMPORTED_MODULE_6__["Player"].bitNodeN === 2) {
- console.log("Adding all augmentations to crime factions for Bit node 2");
- _Faction_js__WEBPACK_IMPORTED_MODULE_3__["Factions"]["Slum Snakes"].addAllAugmentations();
- _Faction_js__WEBPACK_IMPORTED_MODULE_3__["Factions"]["Tetrads"].addAllAugmentations();
- _Faction_js__WEBPACK_IMPORTED_MODULE_3__["Factions"]["The Syndicate"].addAllAugmentations();
- _Faction_js__WEBPACK_IMPORTED_MODULE_3__["Factions"]["The Dark Army"].addAllAugmentations();
- _Faction_js__WEBPACK_IMPORTED_MODULE_3__["Factions"]["Speakers for the Dead"].addAllAugmentations();
- _Faction_js__WEBPACK_IMPORTED_MODULE_3__["Factions"]["NiteSec"].addAllAugmentations();
- _Faction_js__WEBPACK_IMPORTED_MODULE_3__["Factions"]["The Black Hand"].addAllAugmentations();
- }
-
- //Special Bladeburner Augmentations
- var BladeburnersFactionName = "Bladeburners";
- if (Object(_Faction_js__WEBPACK_IMPORTED_MODULE_3__["factionExists"])(BladeburnersFactionName)) {
- var EsperEyewear = new Augmentation({
- name:AugmentationNames.EsperEyewear, repCost:400, moneyCost:30e6,
- info:"Ballistic-grade protective and retractable eyewear that was designed specially " +
- "for Bladeburner units. This " +
- "is implanted by installing a mechanical frame in the skull's orbit. " +
- "This frame interfaces with the brain and allows the user to " +
- "automatically extrude and extract the eyewear. The eyewear protects " +
- "against debris, shrapnel, laser, flash, and gas. It is also " +
- "embedded with a data processing chip that can be programmed to display an " +
- "AR HUD and assist the user in field missions.
" +
- "This augmentation:
" +
- "Increases the player's success chance in Bladeburner contracts/operations by 3%
" +
- "Increases the player's dexterity by 3%"
- });
- EsperEyewear.addToFactions([BladeburnersFactionName]);
- resetAugmentation(EsperEyewear);
-
- var EMS4Recombination = new Augmentation({
- name:AugmentationNames.EMS4Recombination, repCost: 800, moneyCost:50e6,
- info:"A DNA recombination of the EMS-4 Gene. This genetic engineering " +
- "technique was originally used on Bladeburners during the Synthoid uprising " +
- "to induce wakefulness and concentration, suppress fear, reduce empathy, and " +
- "improve reflexes and memory-recall among other things.
" +
- "This augmentation:
" +
- "Increases the player's sucess chance in Bladeburner contracts/operations by 3%
" +
- "Increases the player's effectiveness in Bladeburner Field Analysis by 5%
" +
- "Increases the player's Bladeburner stamina gain rate by 1%"
- });
- EMS4Recombination.addToFactions([BladeburnersFactionName]);
- resetAugmentation(EMS4Recombination);
-
- var OrionShoulder = new Augmentation({
- name:AugmentationNames.OrionShoulder, repCost:2e3, moneyCost:100e6,
- info:"A bionic shoulder augmentation for the right shoulder. Using cybernetics, " +
- "the ORION-MKIV shoulder enhances the strength and dexterity " +
- "of the user's right arm. It also provides protection due to its " +
- "crystallized graphene plating.
" +
- "This augmentation:
" +
- "Increases the player's defense by 5%.
" +
- "Increases the player's strength and dexterity by 3%
" +
- "Increases the player's success chance in Bladeburner contracts/operations by 4%"
- });
- OrionShoulder.addToFactions([BladeburnersFactionName]);
- resetAugmentation(OrionShoulder);
-
- var HyperionV1 = new Augmentation({
- name:AugmentationNames.HyperionV1, repCost: 4e3, moneyCost:500e6,
- info:"A pair of mini plasma cannons embedded into the hands. The Hyperion is capable " +
- "of rapidly firing bolts of high-density plasma. The weapon is meant to " +
- "be used against augmented enemies as the ionized " +
- "nature of the plasma disrupts the electrical systems of Augmentations. However, " +
- "it can also be effective against non-augmented enemies due to its high temperature " +
- "and concussive force.
" +
- "This augmentation:
" +
- "Increases the player's success chance in Bladeburner contracts/operations by 5%"
- });
- HyperionV1.addToFactions([BladeburnersFactionName]);
- resetAugmentation(HyperionV1);
-
- var HyperionV2 = new Augmentation({
- name:AugmentationNames.HyperionV2, repCost:8e3, moneyCost:1e9,
- info:"A pair of mini plasma cannons embedded into the hands. This augmentation " +
- "is more advanced and powerful than the original V1 model. This V2 model is " +
- "more power-efficiency, more accurate, and can fire plasma bolts at a much " +
- "higher velocity than the V1 model.
" +
- "This augmentation:
" +
- "Increases the player's success chance in Bladeburner contracts/operations by 7%",
- prereqs:[AugmentationNames.HyperionV1]
- });
- HyperionV2.addToFactions([BladeburnersFactionName]);
- resetAugmentation(HyperionV2);
-
- var GolemSerum = new Augmentation({
- name:AugmentationNames.GolemSerum, repCost:10e3, moneyCost:2e9,
- info:"A serum that permanently enhances many aspects of a human's capabilities, " +
- "including strength, speed, immune system performance, and mitochondrial efficiency. The " +
- "serum was originally developed by the Chinese military in an attempt to " +
- "create super soldiers.
" +
- "This augmentation:
" +
- "Increases all of the player's combat stats by 5%
" +
- "Increases the player's Bladeburner stamina gain rate by 5%
"
- });
- GolemSerum.addToFactions([BladeburnersFactionName]);
- resetAugmentation(GolemSerum);
-
- var VangelisVirus = new Augmentation({
- name:AugmentationNames.VangelisVirus, repCost:6e3, moneyCost:500e6,
- info:"A synthetic symbiotic virus that is injected into the human brain tissue. The Vangelis virus " +
- "heightens the senses and focus of its host, and also enhances its intuition.
" +
- "This augmentation:
" +
- "Increases the player's effectiveness in Bladeburner Field Analysis by 10%
" +
- "Increases the player's success chance in Bladeburner contracts/operations by 4%
" +
- "Increases the player's dexterity experience gain rate by 5%"
- });
- VangelisVirus.addToFactions([BladeburnersFactionName]);
- resetAugmentation(VangelisVirus);
-
- var VangelisVirus3 = new Augmentation({
- name:AugmentationNames.VangelisVirus3, repCost:12e3, moneyCost:2e9,
- info:"An improved version of Vangelis, a synthetic symbiotic virus that is " +
- "injected into the human brain tissue. On top of the benefits of the original " +
- "virus, this also grants an accelerated healing factor and enhanced " +
- "agility/reflexes.
" +
- "This augmentation:
" +
- "Increases the player's effectiveness in Bladeburner Field Analysis by 15%
" +
- "Increases the player's defense and dexterity experience gain rate by 5%
" +
- "Increases the player's success chance in Bladeburner contracts/operations by 5%",
- prereqs:[AugmentationNames.VangelisVirus]
- });
- VangelisVirus3.addToFactions([BladeburnersFactionName]);
- resetAugmentation(VangelisVirus3);
-
- var INTERLINKED = new Augmentation({
- name:AugmentationNames.INTERLINKED, repCost:8e3, moneyCost:1e9,
- info:"The DNA is genetically modified to enhance the human's body " +
- "extracellular matrix (ECM). This improves the ECM's ability to " +
- "structurally support the body and grants heightened strength and " +
- "durability.
" +
- "This augmentation:
" +
- "Increases the player's experience gain rate for all combat stats by 4%
" +
- "Increases the player's Bladeburner max stamina by 10%"
- });
- INTERLINKED.addToFactions([BladeburnersFactionName]);
- resetAugmentation(INTERLINKED);
-
- var BladeRunner = new Augmentation({
- name:AugmentationNames.BladeRunner, repCost:8e3, moneyCost:1.5e9,
- info:"A cybernetic foot augmentation that was specially created for Bladeburners " +
- "during the Synthoid Uprising. The organic musculature of the human foot " +
- "is enhanced with flexible carbon nanotube matrices that are controlled by " +
- "intelligent servo-motors.
" +
- "This augmentation:
" +
- "Increases the player's agility by 5%
" +
- "Increases the player's Bladeburner max stamina by 5%
" +
- "Increases the player's Bladeburner stamina gain rate by 5%
"
- });
- BladeRunner.addToFactions([BladeburnersFactionName]);
- resetAugmentation(BladeRunner);
-
- var BladeArmor = new Augmentation({
- name:AugmentationNames.BladeArmor, repCost:4e3, moneyCost:250e6,
- info:"A powered exoskeleton suit (exosuit) designed as armor for Bladeburner units. This " +
- "exoskeleton is incredibly adaptable and can protect the wearer from blunt, piercing, " +
- "concussive, thermal, chemical, and electric trauma. It also enhances the user's " +
- "strength and agility.
" +
- "This augmentation:
" +
- "Increases all of the player's combat stats by 2%
" +
- "Increases the player's Bladeburner stamina gain rate by 2%
" +
- "Increases the player's success chance in Bladeburner contracts/operations by 3%",
- });
- BladeArmor.addToFactions([BladeburnersFactionName]);
- resetAugmentation(BladeArmor);
-
- var BladeArmorPowerCells = new Augmentation({
- name:AugmentationNames.BladeArmorPowerCells, repCost:6e3, moneyCost:500e6,
- info:"Upgrades the BLADE-51b Tesla Armor with Ion Power Cells, which are capable of " +
- "more efficiently storing and using power.
" +
- "This augmentation:
" +
- "Increases the player's success chance in Bladeburner contracts/operations by 5%" +
- "Increases the player's Bladeburner stamina gain rate by 2%
" +
- "Increases the player's Bladeburner max stamina by 5%
",
- prereqs:[AugmentationNames.BladeArmor]
- });
- BladeArmorPowerCells.addToFactions([BladeburnersFactionName]);
- resetAugmentation(BladeArmorPowerCells);
-
- var BladeArmorEnergyShielding = new Augmentation({
- name:AugmentationNames.BladeArmorEnergyShielding, repCost:7e3, moneyCost:1e9,
- info:"Upgrades the BLADE-51b Tesla Armor with a plasma energy propulsion system " +
- "that is capable of projecting an energy shielding force field.
" +
- "This augmentation:
" +
- "Increases the player's defense by 5%
" +
- "Increases the player's success chance in Bladeburner contracts/operations by 6%",
- prereqs:[AugmentationNames.BladeArmor]
- });
- BladeArmorEnergyShielding.addToFactions([BladeburnersFactionName]);
- resetAugmentation(BladeArmorEnergyShielding);
-
- var BladeArmorUnibeam = new Augmentation({
- name:AugmentationNames.BladeArmorUnibeam, repCost:10e3, moneyCost:3e9,
- info:"Upgrades the BLADE-51b Tesla Armor with a concentrated deuterium-fluoride laser " +
- "weapon. It's precision an accuracy makes it useful for quickly neutralizing " +
- "threats while keeping casualties to a minimum.
" +
- "This augmentation:
" +
- "Increases the player's success chance in Bladeburner contracts/operations by 8%",
- prereqs:[AugmentationNames.BladeArmor]
- });
- BladeArmorUnibeam.addToFactions([BladeburnersFactionName]);
- resetAugmentation(BladeArmorUnibeam);
-
- var BladeArmorOmnibeam = new Augmentation({
- name:AugmentationNames.BladeArmorOmnibeam, repCost:20e3, moneyCost:5e9,
- info:"Upgrades the BLADE-51b Tesla Armor Unibeam augmentation to use " +
- "multiple-fiber system. The upgraded weapon uses multiple fiber laser " +
- "modules that combine together to form a single, more powerful beam of up to " +
- "2000MW.
" +
- "This augmentation:
" +
- "Increases the player's success chance in Bladeburner contracts/operations by 10%",
- prereqs:[AugmentationNames.BladeArmorUnibeam]
- });
- BladeArmorOmnibeam.addToFactions([BladeburnersFactionName]);
- resetAugmentation(BladeArmorOmnibeam);
-
- var BladeArmorIPU = new Augmentation({
- name:AugmentationNames.BladeArmorIPU, repCost: 5e3, moneyCost:200e6,
- info:"Upgrades the BLADE-51b Tesla Armor with an AI Information Processing " +
- "Unit that was specially designed to analyze Synthoid related data and " +
- "information.
" +
- "This augmentation:
" +
- "Increases the player's effectiveness in Bladeburner Field Analysis by 15%
" +
- "Increases the player's success chance in Bladeburner contracts/operations by 2%",
- prereqs:[AugmentationNames.BladeArmor]
- });
- BladeArmorIPU.addToFactions([BladeburnersFactionName]);
- resetAugmentation(BladeArmorIPU);
- }
-
- //Update costs based on how many have been purchased
- var mult = Math.pow(_Constants_js__WEBPACK_IMPORTED_MODULE_1__["CONSTANTS"].MultipleAugMultiplier, _Player_js__WEBPACK_IMPORTED_MODULE_6__["Player"].queuedAugmentations.length);
- for (var name in Augmentations) {
- if (Augmentations.hasOwnProperty(name)) {
- Augmentations[name].baseCost *= mult;
- }
- }
-
- _Player_js__WEBPACK_IMPORTED_MODULE_6__["Player"].reapplyAllAugmentations();
-
-
-}
-
-//Resets an Augmentation during (re-initizliation)
-function resetAugmentation(newAugObject) {
- if (!(newAugObject instanceof Augmentation)) {
- throw new Error("Invalid argument 'newAugObject' passed into resetAugmentation");
- }
- var name = newAugObject.name;
- if (augmentationExists(name)) {
- delete Augmentations[name];
- }
- AddToAugmentations(newAugObject);
-}
-
-function applyAugmentation(aug, reapply=false) {
- Augmentations[aug.name].owned = true;
- switch(aug.name) {
- //Combat stat augmentations
- case AugmentationNames.Targeting1:
- _Player_js__WEBPACK_IMPORTED_MODULE_6__["Player"].dexterity_mult *= 1.10;
- break;
- case AugmentationNames.Targeting2:
- _Player_js__WEBPACK_IMPORTED_MODULE_6__["Player"].dexterity_mult *= 1.20;
- break;
- case AugmentationNames.Targeting3:
- _Player_js__WEBPACK_IMPORTED_MODULE_6__["Player"].dexterity_mult *= 1.30;
- break;
- case AugmentationNames.SyntheticHeart: //High level
- _Player_js__WEBPACK_IMPORTED_MODULE_6__["Player"].agility_mult *= 1.5;
- _Player_js__WEBPACK_IMPORTED_MODULE_6__["Player"].strength_mult *= 1.5;
- break;
- case AugmentationNames.SynfibrilMuscle: //Medium-high level
- _Player_js__WEBPACK_IMPORTED_MODULE_6__["Player"].strength_mult *= 1.3;
- _Player_js__WEBPACK_IMPORTED_MODULE_6__["Player"].defense_mult *= 1.3;
- break;
- case AugmentationNames.CombatRib1:
- _Player_js__WEBPACK_IMPORTED_MODULE_6__["Player"].strength_mult *= 1.1;
- _Player_js__WEBPACK_IMPORTED_MODULE_6__["Player"].defense_mult *= 1.1;
- break;
- case AugmentationNames.CombatRib2:
- _Player_js__WEBPACK_IMPORTED_MODULE_6__["Player"].strength_mult *= 1.14;
- _Player_js__WEBPACK_IMPORTED_MODULE_6__["Player"].defense_mult *= 1.14;
- break;
- case AugmentationNames.CombatRib3:
- _Player_js__WEBPACK_IMPORTED_MODULE_6__["Player"].strength_mult *= 1.18;
- _Player_js__WEBPACK_IMPORTED_MODULE_6__["Player"].defense_mult *= 1.18;
- break;
- case AugmentationNames.NanofiberWeave: //Med level
- _Player_js__WEBPACK_IMPORTED_MODULE_6__["Player"].strength_mult *= 1.2;
- _Player_js__WEBPACK_IMPORTED_MODULE_6__["Player"].defense_mult *= 1.2;
- break;
- case AugmentationNames.SubdermalArmor: //High level
- _Player_js__WEBPACK_IMPORTED_MODULE_6__["Player"].defense_mult *= 2.2;
- break;
- case AugmentationNames.WiredReflexes: //Low level
- _Player_js__WEBPACK_IMPORTED_MODULE_6__["Player"].agility_mult *= 1.05;
- _Player_js__WEBPACK_IMPORTED_MODULE_6__["Player"].dexterity_mult *= 1.05;
- break;
- case AugmentationNames.GrapheneBoneLacings: //High level
- _Player_js__WEBPACK_IMPORTED_MODULE_6__["Player"].strength_mult *= 1.7;
- _Player_js__WEBPACK_IMPORTED_MODULE_6__["Player"].defense_mult *= 1.7;
- break;
- case AugmentationNames.BionicSpine: //Med level
- _Player_js__WEBPACK_IMPORTED_MODULE_6__["Player"].strength_mult *= 1.15;
- _Player_js__WEBPACK_IMPORTED_MODULE_6__["Player"].defense_mult *= 1.15;
- _Player_js__WEBPACK_IMPORTED_MODULE_6__["Player"].agility_mult *= 1.15;
- _Player_js__WEBPACK_IMPORTED_MODULE_6__["Player"].dexterity_mult *= 1.15;
- break;
- case AugmentationNames.GrapheneBionicSpine: //High level
- _Player_js__WEBPACK_IMPORTED_MODULE_6__["Player"].strength_mult *= 1.6;
- _Player_js__WEBPACK_IMPORTED_MODULE_6__["Player"].defense_mult *= 1.6;
- _Player_js__WEBPACK_IMPORTED_MODULE_6__["Player"].agility_mult *= 1.6;
- _Player_js__WEBPACK_IMPORTED_MODULE_6__["Player"].dexterity_mult *= 1.6;
- break;
- case AugmentationNames.BionicLegs: //Med level
- _Player_js__WEBPACK_IMPORTED_MODULE_6__["Player"].agility_mult *= 1.6;
- break;
- case AugmentationNames.GrapheneBionicLegs: //High level
- _Player_js__WEBPACK_IMPORTED_MODULE_6__["Player"].agility_mult *= 2.5;
- break;
-
- //Labor stats augmentations
- case AugmentationNames.EnhancedSocialInteractionImplant: //Med-high level
- _Player_js__WEBPACK_IMPORTED_MODULE_6__["Player"].charisma_mult *= 1.6;
- _Player_js__WEBPACK_IMPORTED_MODULE_6__["Player"].charisma_exp_mult *= 1.6;
- break;
- case AugmentationNames.TITN41Injection:
- _Player_js__WEBPACK_IMPORTED_MODULE_6__["Player"].charisma_mult *= 1.15;
- _Player_js__WEBPACK_IMPORTED_MODULE_6__["Player"].charisma_exp_mult *= 1.15;
- break;
- case AugmentationNames.SpeechProcessor: //Med level
- _Player_js__WEBPACK_IMPORTED_MODULE_6__["Player"].charisma_mult *= 1.2;
- break;
-
- //Hacking augmentations
- case AugmentationNames.BitWire:
- _Player_js__WEBPACK_IMPORTED_MODULE_6__["Player"].hacking_mult *= 1.05;
- break;
- case AugmentationNames.ArtificialBioNeuralNetwork: //Med level
- _Player_js__WEBPACK_IMPORTED_MODULE_6__["Player"].hacking_speed_mult *= 1.03;
- _Player_js__WEBPACK_IMPORTED_MODULE_6__["Player"].hacking_money_mult *= 1.15;
- _Player_js__WEBPACK_IMPORTED_MODULE_6__["Player"].hacking_mult *= 1.12;
- break;
- case AugmentationNames.ArtificialSynapticPotentiation: //Med level
- _Player_js__WEBPACK_IMPORTED_MODULE_6__["Player"].hacking_speed_mult *= 1.02;
- _Player_js__WEBPACK_IMPORTED_MODULE_6__["Player"].hacking_chance_mult *= 1.05;
- _Player_js__WEBPACK_IMPORTED_MODULE_6__["Player"].hacking_exp_mult *= 1.05;
- break;
- case AugmentationNames.EnhancedMyelinSheathing: //Med level
- _Player_js__WEBPACK_IMPORTED_MODULE_6__["Player"].hacking_speed_mult *= 1.03;
- _Player_js__WEBPACK_IMPORTED_MODULE_6__["Player"].hacking_exp_mult *= 1.1;
- _Player_js__WEBPACK_IMPORTED_MODULE_6__["Player"].hacking_mult *= 1.08;
- break;
- case AugmentationNames.SynapticEnhancement: //Low Level
- _Player_js__WEBPACK_IMPORTED_MODULE_6__["Player"].hacking_speed_mult *= 1.03;
- break;
- case AugmentationNames.NeuralRetentionEnhancement: //Med level
- _Player_js__WEBPACK_IMPORTED_MODULE_6__["Player"].hacking_exp_mult *= 1.25;
- break;
- case AugmentationNames.DataJack: //Med low level
- _Player_js__WEBPACK_IMPORTED_MODULE_6__["Player"].hacking_money_mult *= 1.25;
- break;
- case AugmentationNames.ENM: //Medium level
- _Player_js__WEBPACK_IMPORTED_MODULE_6__["Player"].hacking_mult *= 1.08;
- break;
- case AugmentationNames.ENMCore: //Medium level
- _Player_js__WEBPACK_IMPORTED_MODULE_6__["Player"].hacking_speed_mult *= 1.03;
- _Player_js__WEBPACK_IMPORTED_MODULE_6__["Player"].hacking_money_mult *= 1.1;
- _Player_js__WEBPACK_IMPORTED_MODULE_6__["Player"].hacking_chance_mult *= 1.03;
- _Player_js__WEBPACK_IMPORTED_MODULE_6__["Player"].hacking_exp_mult *= 1.07;
- _Player_js__WEBPACK_IMPORTED_MODULE_6__["Player"].hacking_mult *= 1.07;
- break;
- case AugmentationNames.ENMCoreV2: //Medium high level
- _Player_js__WEBPACK_IMPORTED_MODULE_6__["Player"].hacking_speed_mult *= 1.05;
- _Player_js__WEBPACK_IMPORTED_MODULE_6__["Player"].hacking_money_mult *= 1.3;
- _Player_js__WEBPACK_IMPORTED_MODULE_6__["Player"].hacking_chance_mult *= 1.05;
- _Player_js__WEBPACK_IMPORTED_MODULE_6__["Player"].hacking_exp_mult *= 1.15;
- _Player_js__WEBPACK_IMPORTED_MODULE_6__["Player"].hacking_mult *= 1.08;
- break;
- case AugmentationNames.ENMCoreV3: //High level
- _Player_js__WEBPACK_IMPORTED_MODULE_6__["Player"].hacking_speed_mult *= 1.05;
- _Player_js__WEBPACK_IMPORTED_MODULE_6__["Player"].hacking_money_mult *= 1.4;
- _Player_js__WEBPACK_IMPORTED_MODULE_6__["Player"].hacking_chance_mult *= 1.1;
- _Player_js__WEBPACK_IMPORTED_MODULE_6__["Player"].hacking_exp_mult *= 1.25;
- _Player_js__WEBPACK_IMPORTED_MODULE_6__["Player"].hacking_mult *= 1.1;
- break;
- case AugmentationNames.ENMAnalyzeEngine: //High level
- _Player_js__WEBPACK_IMPORTED_MODULE_6__["Player"].hacking_speed_mult *= 1.1;
- break;
- case AugmentationNames.ENMDMA: //High level
- _Player_js__WEBPACK_IMPORTED_MODULE_6__["Player"].hacking_money_mult *= 1.4;
- _Player_js__WEBPACK_IMPORTED_MODULE_6__["Player"].hacking_chance_mult *= 1.2;
- break;
- case AugmentationNames.Neuralstimulator: //Medium Level
- _Player_js__WEBPACK_IMPORTED_MODULE_6__["Player"].hacking_speed_mult *= 1.02;
- _Player_js__WEBPACK_IMPORTED_MODULE_6__["Player"].hacking_chance_mult *= 1.1;
- _Player_js__WEBPACK_IMPORTED_MODULE_6__["Player"].hacking_exp_mult *= 1.12;
- break;
- case AugmentationNames.NeuralAccelerator:
- _Player_js__WEBPACK_IMPORTED_MODULE_6__["Player"].hacking_mult *= 1.1;
- _Player_js__WEBPACK_IMPORTED_MODULE_6__["Player"].hacking_exp_mult *= 1.15;
- _Player_js__WEBPACK_IMPORTED_MODULE_6__["Player"].hacking_money_mult *= 1.2;
- break;
- case AugmentationNames.CranialSignalProcessorsG1:
- _Player_js__WEBPACK_IMPORTED_MODULE_6__["Player"].hacking_speed_mult *= 1.01;
- _Player_js__WEBPACK_IMPORTED_MODULE_6__["Player"].hacking_mult *= 1.05;
- break;
- case AugmentationNames.CranialSignalProcessorsG2:
- _Player_js__WEBPACK_IMPORTED_MODULE_6__["Player"].hacking_speed_mult *= 1.02;
- _Player_js__WEBPACK_IMPORTED_MODULE_6__["Player"].hacking_chance_mult *= 1.05;
- _Player_js__WEBPACK_IMPORTED_MODULE_6__["Player"].hacking_mult *= 1.07;
- break;
- case AugmentationNames.CranialSignalProcessorsG3:
- _Player_js__WEBPACK_IMPORTED_MODULE_6__["Player"].hacking_speed_mult *= 1.02;
- _Player_js__WEBPACK_IMPORTED_MODULE_6__["Player"].hacking_money_mult *= 1.15;
- _Player_js__WEBPACK_IMPORTED_MODULE_6__["Player"].hacking_mult *= 1.09;
- break;
- case AugmentationNames.CranialSignalProcessorsG4:
- _Player_js__WEBPACK_IMPORTED_MODULE_6__["Player"].hacking_speed_mult *= 1.02;
- _Player_js__WEBPACK_IMPORTED_MODULE_6__["Player"].hacking_money_mult *= 1.2;
- _Player_js__WEBPACK_IMPORTED_MODULE_6__["Player"].hacking_grow_mult *= 1.25;
- break;
- case AugmentationNames.CranialSignalProcessorsG5:
- _Player_js__WEBPACK_IMPORTED_MODULE_6__["Player"].hacking_mult *= 1.3;
- _Player_js__WEBPACK_IMPORTED_MODULE_6__["Player"].hacking_money_mult *= 1.25;
- _Player_js__WEBPACK_IMPORTED_MODULE_6__["Player"].hacking_grow_mult *= 1.75;
- break;
- case AugmentationNames.NeuronalDensification:
- _Player_js__WEBPACK_IMPORTED_MODULE_6__["Player"].hacking_mult *= 1.15;
- _Player_js__WEBPACK_IMPORTED_MODULE_6__["Player"].hacking_exp_mult *= 1.1;
- _Player_js__WEBPACK_IMPORTED_MODULE_6__["Player"].hacking_speed_mult *= 1.03;
- break;
-
- //Work augmentations
- case AugmentationNames.NuoptimalInjectorImplant: //Low medium level
- _Player_js__WEBPACK_IMPORTED_MODULE_6__["Player"].company_rep_mult *= 1.2;
- break;
- case AugmentationNames.SpeechEnhancement: //Low level
- _Player_js__WEBPACK_IMPORTED_MODULE_6__["Player"].company_rep_mult *= 1.1;
- _Player_js__WEBPACK_IMPORTED_MODULE_6__["Player"].charisma_mult *= 1.1;
- break;
- case AugmentationNames.FocusWire: //Med level
- _Player_js__WEBPACK_IMPORTED_MODULE_6__["Player"].hacking_exp_mult *= 1.05;
- _Player_js__WEBPACK_IMPORTED_MODULE_6__["Player"].strength_exp_mult *= 1.05;
- _Player_js__WEBPACK_IMPORTED_MODULE_6__["Player"].defense_exp_mult *= 1.05;
- _Player_js__WEBPACK_IMPORTED_MODULE_6__["Player"].dexterity_exp_mult *= 1.05;
- _Player_js__WEBPACK_IMPORTED_MODULE_6__["Player"].agility_exp_mult *= 1.05;
- _Player_js__WEBPACK_IMPORTED_MODULE_6__["Player"].charisma_exp_mult *= 1.05;
- _Player_js__WEBPACK_IMPORTED_MODULE_6__["Player"].company_rep_mult *= 1.1;
- _Player_js__WEBPACK_IMPORTED_MODULE_6__["Player"].work_money_mult *= 1.2;
- break;
- case AugmentationNames.PCDNI: //Med level
- _Player_js__WEBPACK_IMPORTED_MODULE_6__["Player"].company_rep_mult *= 1.3;
- _Player_js__WEBPACK_IMPORTED_MODULE_6__["Player"].hacking_mult *= 1.08;
- break;
- case AugmentationNames.PCDNIOptimizer: //High level
- _Player_js__WEBPACK_IMPORTED_MODULE_6__["Player"].company_rep_mult *= 1.75;
- _Player_js__WEBPACK_IMPORTED_MODULE_6__["Player"].hacking_mult *= 1.1;
- break;
- case AugmentationNames.PCDNINeuralNetwork: //High level
- _Player_js__WEBPACK_IMPORTED_MODULE_6__["Player"].company_rep_mult *= 2;
- _Player_js__WEBPACK_IMPORTED_MODULE_6__["Player"].hacking_mult *= 1.1;
- _Player_js__WEBPACK_IMPORTED_MODULE_6__["Player"].hacking_speed_mult *= 1.05;
- break;
- case AugmentationNames.ADRPheromone1:
- _Player_js__WEBPACK_IMPORTED_MODULE_6__["Player"].company_rep_mult *= 1.1;
- _Player_js__WEBPACK_IMPORTED_MODULE_6__["Player"].faction_rep_mult *= 1.1;
- break;
- case AugmentationNames.ADRPheromone2:
- _Player_js__WEBPACK_IMPORTED_MODULE_6__["Player"].company_rep_mult *= 1.2;
- _Player_js__WEBPACK_IMPORTED_MODULE_6__["Player"].faction_rep_mult *= 1.2;
- break;
-
- //Hacknet Node Augmentations
- case AugmentationNames.HacknetNodeCPUUpload:
- _Player_js__WEBPACK_IMPORTED_MODULE_6__["Player"].hacknet_node_money_mult *= 1.15;
- _Player_js__WEBPACK_IMPORTED_MODULE_6__["Player"].hacknet_node_purchase_cost_mult *= 0.85;
- break;
- case AugmentationNames.HacknetNodeCacheUpload:
- _Player_js__WEBPACK_IMPORTED_MODULE_6__["Player"].hacknet_node_money_mult *= 1.10;
- _Player_js__WEBPACK_IMPORTED_MODULE_6__["Player"].hacknet_node_level_cost_mult *= 0.85;
- break;
- case AugmentationNames.HacknetNodeNICUpload:
- _Player_js__WEBPACK_IMPORTED_MODULE_6__["Player"].hacknet_node_money_mult *= 1.1;
- _Player_js__WEBPACK_IMPORTED_MODULE_6__["Player"].hacknet_node_purchase_cost_mult *= 0.9;
- break;
- case AugmentationNames.HacknetNodeKernelDNI:
- _Player_js__WEBPACK_IMPORTED_MODULE_6__["Player"].hacknet_node_money_mult *= 1.25;
- break;
- case AugmentationNames.HacknetNodeCoreDNI:
- _Player_js__WEBPACK_IMPORTED_MODULE_6__["Player"].hacknet_node_money_mult *= 1.45;
- break;
-
- //Misc augmentations
- case AugmentationNames.NeuroFluxGovernor:
- _Player_js__WEBPACK_IMPORTED_MODULE_6__["Player"].hacking_chance_mult *= 1.01;
- _Player_js__WEBPACK_IMPORTED_MODULE_6__["Player"].hacking_speed_mult *= 1.01;
- _Player_js__WEBPACK_IMPORTED_MODULE_6__["Player"].hacking_money_mult *= 1.01;
- _Player_js__WEBPACK_IMPORTED_MODULE_6__["Player"].hacking_grow_mult *= 1.01;
- _Player_js__WEBPACK_IMPORTED_MODULE_6__["Player"].hacking_mult *= 1.01;
-
- _Player_js__WEBPACK_IMPORTED_MODULE_6__["Player"].strength_mult *= 1.01;
- _Player_js__WEBPACK_IMPORTED_MODULE_6__["Player"].defense_mult *= 1.01;
- _Player_js__WEBPACK_IMPORTED_MODULE_6__["Player"].dexterity_mult *= 1.01;
- _Player_js__WEBPACK_IMPORTED_MODULE_6__["Player"].agility_mult *= 1.01;
- _Player_js__WEBPACK_IMPORTED_MODULE_6__["Player"].charisma_mult *= 1.01;
-
- _Player_js__WEBPACK_IMPORTED_MODULE_6__["Player"].hacking_exp_mult *= 1.01;
- _Player_js__WEBPACK_IMPORTED_MODULE_6__["Player"].strength_exp_mult *= 1.01;
- _Player_js__WEBPACK_IMPORTED_MODULE_6__["Player"].defense_exp_mult *= 1.01;
- _Player_js__WEBPACK_IMPORTED_MODULE_6__["Player"].dexterity_exp_mult *= 1.01;
- _Player_js__WEBPACK_IMPORTED_MODULE_6__["Player"].agility_exp_mult *= 1.01;
- _Player_js__WEBPACK_IMPORTED_MODULE_6__["Player"].charisma_exp_mult *= 1.01;
-
- _Player_js__WEBPACK_IMPORTED_MODULE_6__["Player"].company_rep_mult *= 1.01;
- _Player_js__WEBPACK_IMPORTED_MODULE_6__["Player"].faction_rep_mult *= 1.01;
-
- _Player_js__WEBPACK_IMPORTED_MODULE_6__["Player"].crime_money_mult *= 1.01;
- _Player_js__WEBPACK_IMPORTED_MODULE_6__["Player"].crime_success_mult *= 1.01;
-
- _Player_js__WEBPACK_IMPORTED_MODULE_6__["Player"].hacknet_node_money_mult *= 1.01;
- _Player_js__WEBPACK_IMPORTED_MODULE_6__["Player"].hacknet_node_purchase_cost_mult *= 0.99;
- _Player_js__WEBPACK_IMPORTED_MODULE_6__["Player"].hacknet_node_ram_cost_mult *= 0.99;
- _Player_js__WEBPACK_IMPORTED_MODULE_6__["Player"].hacknet_node_core_cost_mult *= 0.99;
- _Player_js__WEBPACK_IMPORTED_MODULE_6__["Player"].hacknet_node_level_cost_mult *= 0.99;
-
- _Player_js__WEBPACK_IMPORTED_MODULE_6__["Player"].work_money_mult *= 1.01;
-
- if (!reapply) {
- Augmentations[aug.name].level = aug.level;
- for (var i = 0; i < _Player_js__WEBPACK_IMPORTED_MODULE_6__["Player"].augmentations.length; ++i) {
- if (_Player_js__WEBPACK_IMPORTED_MODULE_6__["Player"].augmentations[i].name == AugmentationNames.NeuroFluxGovernor) {
- _Player_js__WEBPACK_IMPORTED_MODULE_6__["Player"].augmentations[i].level = aug.level;
- break;
- }
- }
- }
- break;
- case AugmentationNames.Neurotrainer1: //Low Level
- _Player_js__WEBPACK_IMPORTED_MODULE_6__["Player"].hacking_exp_mult *= 1.1;
- _Player_js__WEBPACK_IMPORTED_MODULE_6__["Player"].strength_exp_mult *= 1.1;
- _Player_js__WEBPACK_IMPORTED_MODULE_6__["Player"].defense_exp_mult *= 1.1;
- _Player_js__WEBPACK_IMPORTED_MODULE_6__["Player"].dexterity_exp_mult *= 1.1;
- _Player_js__WEBPACK_IMPORTED_MODULE_6__["Player"].agility_exp_mult *= 1.1;
- _Player_js__WEBPACK_IMPORTED_MODULE_6__["Player"].charisma_exp_mult *= 1.1;
- break;
- case AugmentationNames.Neurotrainer2: //Medium level
- _Player_js__WEBPACK_IMPORTED_MODULE_6__["Player"].hacking_exp_mult *= 1.15;
- _Player_js__WEBPACK_IMPORTED_MODULE_6__["Player"].strength_exp_mult *= 1.15;
- _Player_js__WEBPACK_IMPORTED_MODULE_6__["Player"].defense_exp_mult *= 1.15;
- _Player_js__WEBPACK_IMPORTED_MODULE_6__["Player"].dexterity_exp_mult *= 1.15;
- _Player_js__WEBPACK_IMPORTED_MODULE_6__["Player"].agility_exp_mult *= 1.15;
- _Player_js__WEBPACK_IMPORTED_MODULE_6__["Player"].charisma_exp_mult *= 1.15;
- break;
- case AugmentationNames.Neurotrainer3: //High Level
- _Player_js__WEBPACK_IMPORTED_MODULE_6__["Player"].hacking_exp_mult *= 1.2;
- _Player_js__WEBPACK_IMPORTED_MODULE_6__["Player"].strength_exp_mult *= 1.2;
- _Player_js__WEBPACK_IMPORTED_MODULE_6__["Player"].defense_exp_mult *= 1.2;
- _Player_js__WEBPACK_IMPORTED_MODULE_6__["Player"].dexterity_exp_mult *= 1.2;
- _Player_js__WEBPACK_IMPORTED_MODULE_6__["Player"].agility_exp_mult *= 1.2;
- _Player_js__WEBPACK_IMPORTED_MODULE_6__["Player"].charisma_exp_mult *= 1.2;
- break;
- case AugmentationNames.Hypersight: //Medium high level
- _Player_js__WEBPACK_IMPORTED_MODULE_6__["Player"].dexterity_mult *= 1.4;
- _Player_js__WEBPACK_IMPORTED_MODULE_6__["Player"].hacking_speed_mult *= 1.03;
- _Player_js__WEBPACK_IMPORTED_MODULE_6__["Player"].hacking_money_mult *= 1.1;
- break;
- case AugmentationNames.LuminCloaking1:
- _Player_js__WEBPACK_IMPORTED_MODULE_6__["Player"].agility_mult *= 1.05;
- _Player_js__WEBPACK_IMPORTED_MODULE_6__["Player"].crime_money_mult *= 1.1;
- break;
- case AugmentationNames.LuminCloaking2:
- _Player_js__WEBPACK_IMPORTED_MODULE_6__["Player"].agility_mult *= 1.1;
- _Player_js__WEBPACK_IMPORTED_MODULE_6__["Player"].defense_mult *= 1.1;
- _Player_js__WEBPACK_IMPORTED_MODULE_6__["Player"].crime_money_mult *= 1.25;
- break;
- case AugmentationNames.HemoRecirculator:
- _Player_js__WEBPACK_IMPORTED_MODULE_6__["Player"].strength_mult *= 1.08;
- _Player_js__WEBPACK_IMPORTED_MODULE_6__["Player"].defense_mult *= 1.08;
- _Player_js__WEBPACK_IMPORTED_MODULE_6__["Player"].agility_mult *= 1.08;
- _Player_js__WEBPACK_IMPORTED_MODULE_6__["Player"].dexterity_mult *= 1.08;
- break;
- case AugmentationNames.SmartSonar:
- _Player_js__WEBPACK_IMPORTED_MODULE_6__["Player"].dexterity_mult *= 1.1;
- _Player_js__WEBPACK_IMPORTED_MODULE_6__["Player"].dexterity_exp_mult *= 1.15;
- _Player_js__WEBPACK_IMPORTED_MODULE_6__["Player"].crime_money_mult *= 1.25;
- break;
- case AugmentationNames.PowerRecirculator:
- _Player_js__WEBPACK_IMPORTED_MODULE_6__["Player"].hacking_mult *= 1.05;
- _Player_js__WEBPACK_IMPORTED_MODULE_6__["Player"].strength_mult *= 1.05;
- _Player_js__WEBPACK_IMPORTED_MODULE_6__["Player"].defense_mult *= 1.05;
- _Player_js__WEBPACK_IMPORTED_MODULE_6__["Player"].dexterity_mult *= 1.05;
- _Player_js__WEBPACK_IMPORTED_MODULE_6__["Player"].agility_mult *= 1.05;
- _Player_js__WEBPACK_IMPORTED_MODULE_6__["Player"].charisma_mult *= 1.05;
- _Player_js__WEBPACK_IMPORTED_MODULE_6__["Player"].hacking_exp_mult *= 1.1;
- _Player_js__WEBPACK_IMPORTED_MODULE_6__["Player"].strength_exp_mult *= 1.1;
- _Player_js__WEBPACK_IMPORTED_MODULE_6__["Player"].defense_exp_mult *= 1.1;
- _Player_js__WEBPACK_IMPORTED_MODULE_6__["Player"].dexterity_exp_mult *= 1.1;
- _Player_js__WEBPACK_IMPORTED_MODULE_6__["Player"].agility_exp_mult *= 1.1;
- _Player_js__WEBPACK_IMPORTED_MODULE_6__["Player"].charisma_exp_mult *= 1.1;
- break;
- //Unique augmentations (for factions)
- case AugmentationNames.QLink:
- _Player_js__WEBPACK_IMPORTED_MODULE_6__["Player"].hacking_speed_mult *= 1.1;
- _Player_js__WEBPACK_IMPORTED_MODULE_6__["Player"].hacking_chance_mult *= 1.3;
- _Player_js__WEBPACK_IMPORTED_MODULE_6__["Player"].hacking_money_mult *= 2;
- break;
- case AugmentationNames.TheRedPill:
- break;
- case AugmentationNames.SPTN97:
- _Player_js__WEBPACK_IMPORTED_MODULE_6__["Player"].strength_mult *= 1.75;
- _Player_js__WEBPACK_IMPORTED_MODULE_6__["Player"].defense_mult *= 1.75;
- _Player_js__WEBPACK_IMPORTED_MODULE_6__["Player"].dexterity_mult *= 1.75;
- _Player_js__WEBPACK_IMPORTED_MODULE_6__["Player"].agility_mult *= 1.75;
- _Player_js__WEBPACK_IMPORTED_MODULE_6__["Player"].hacking_mult *= 1.15;
- break;
- case AugmentationNames.HiveMind:
- _Player_js__WEBPACK_IMPORTED_MODULE_6__["Player"].hacking_grow_mult *= 3;
- break;
- case AugmentationNames.CordiARCReactor:
- _Player_js__WEBPACK_IMPORTED_MODULE_6__["Player"].strength_mult *= 1.35;
- _Player_js__WEBPACK_IMPORTED_MODULE_6__["Player"].defense_mult *= 1.35;
- _Player_js__WEBPACK_IMPORTED_MODULE_6__["Player"].dexterity_mult *= 1.35;
- _Player_js__WEBPACK_IMPORTED_MODULE_6__["Player"].agility_mult *= 1.35;
- _Player_js__WEBPACK_IMPORTED_MODULE_6__["Player"].strength_exp_mult *= 1.35;
- _Player_js__WEBPACK_IMPORTED_MODULE_6__["Player"].defense_exp_mult *= 1.35;
- _Player_js__WEBPACK_IMPORTED_MODULE_6__["Player"].dexterity_exp_mult *= 1.35;
- _Player_js__WEBPACK_IMPORTED_MODULE_6__["Player"].agility_exp_mult *= 1.35;
- break;
- case AugmentationNames.SmartJaw:
- _Player_js__WEBPACK_IMPORTED_MODULE_6__["Player"].charisma_mult *= 1.5;
- _Player_js__WEBPACK_IMPORTED_MODULE_6__["Player"].charisma_exp_mult *= 1.5;
- _Player_js__WEBPACK_IMPORTED_MODULE_6__["Player"].company_rep_mult *= 1.25;
- _Player_js__WEBPACK_IMPORTED_MODULE_6__["Player"].faction_rep_mult *= 1.25;
- break;
- case AugmentationNames.Neotra:
- _Player_js__WEBPACK_IMPORTED_MODULE_6__["Player"].strength_mult *= 1.55;
- _Player_js__WEBPACK_IMPORTED_MODULE_6__["Player"].defense_mult *= 1.55;
- break;
- case AugmentationNames.Xanipher:
- _Player_js__WEBPACK_IMPORTED_MODULE_6__["Player"].hacking_mult *= 1.2;
- _Player_js__WEBPACK_IMPORTED_MODULE_6__["Player"].strength_mult *= 1.2;
- _Player_js__WEBPACK_IMPORTED_MODULE_6__["Player"].defense_mult *= 1.2;
- _Player_js__WEBPACK_IMPORTED_MODULE_6__["Player"].dexterity_mult *= 1.2;
- _Player_js__WEBPACK_IMPORTED_MODULE_6__["Player"].agility_mult *= 1.2;
- _Player_js__WEBPACK_IMPORTED_MODULE_6__["Player"].charisma_mult *= 1.2;
- _Player_js__WEBPACK_IMPORTED_MODULE_6__["Player"].hacking_exp_mult *= 1.15;
- _Player_js__WEBPACK_IMPORTED_MODULE_6__["Player"].strength_exp_mult *= 1.15;
- _Player_js__WEBPACK_IMPORTED_MODULE_6__["Player"].defense_exp_mult *= 1.15;
- _Player_js__WEBPACK_IMPORTED_MODULE_6__["Player"].dexterity_exp_mult *= 1.15;
- _Player_js__WEBPACK_IMPORTED_MODULE_6__["Player"].agility_exp_mult *= 1.15;
- _Player_js__WEBPACK_IMPORTED_MODULE_6__["Player"].charisma_exp_mult *= 1.15;
- break;
- case AugmentationNames.nextSENS:
- _Player_js__WEBPACK_IMPORTED_MODULE_6__["Player"].hacking_mult *= 1.2;
- _Player_js__WEBPACK_IMPORTED_MODULE_6__["Player"].strength_mult *= 1.2;
- _Player_js__WEBPACK_IMPORTED_MODULE_6__["Player"].defense_mult *= 1.2;
- _Player_js__WEBPACK_IMPORTED_MODULE_6__["Player"].dexterity_mult *= 1.2;
- _Player_js__WEBPACK_IMPORTED_MODULE_6__["Player"].agility_mult *= 1.2;
- _Player_js__WEBPACK_IMPORTED_MODULE_6__["Player"].charisma_mult *= 1.2;
- break;
- case AugmentationNames.OmniTekInfoLoad:
- _Player_js__WEBPACK_IMPORTED_MODULE_6__["Player"].hacking_mult *= 1.2;
- _Player_js__WEBPACK_IMPORTED_MODULE_6__["Player"].hacking_exp_mult *= 1.25;
- break;
- case AugmentationNames.PhotosyntheticCells:
- _Player_js__WEBPACK_IMPORTED_MODULE_6__["Player"].strength_mult *= 1.4;
- _Player_js__WEBPACK_IMPORTED_MODULE_6__["Player"].defense_mult *= 1.4;
- _Player_js__WEBPACK_IMPORTED_MODULE_6__["Player"].agility_mult *= 1.4;
- break;
- case AugmentationNames.Neurolink:
- _Player_js__WEBPACK_IMPORTED_MODULE_6__["Player"].hacking_mult *= 1.15;
- _Player_js__WEBPACK_IMPORTED_MODULE_6__["Player"].hacking_exp_mult *= 1.2;
- _Player_js__WEBPACK_IMPORTED_MODULE_6__["Player"].hacking_chance_mult *= 1.1;
- _Player_js__WEBPACK_IMPORTED_MODULE_6__["Player"].hacking_speed_mult *= 1.05;
- break;
- case AugmentationNames.TheBlackHand:
- _Player_js__WEBPACK_IMPORTED_MODULE_6__["Player"].strength_mult *= 1.15;
- _Player_js__WEBPACK_IMPORTED_MODULE_6__["Player"].dexterity_mult *= 1.15;
- _Player_js__WEBPACK_IMPORTED_MODULE_6__["Player"].hacking_mult *= 1.1;
- _Player_js__WEBPACK_IMPORTED_MODULE_6__["Player"].hacking_speed_mult *= 1.02;
- _Player_js__WEBPACK_IMPORTED_MODULE_6__["Player"].hacking_money_mult *= 1.1;
- break;
- case AugmentationNames.CRTX42AA:
- _Player_js__WEBPACK_IMPORTED_MODULE_6__["Player"].hacking_mult *= 1.08;
- _Player_js__WEBPACK_IMPORTED_MODULE_6__["Player"].hacking_exp_mult *= 1.15;
- break;
- case AugmentationNames.Neuregen:
- _Player_js__WEBPACK_IMPORTED_MODULE_6__["Player"].hacking_exp_mult *= 1.4;
- break;
- case AugmentationNames.CashRoot:
- break;
- case AugmentationNames.NutriGen:
- _Player_js__WEBPACK_IMPORTED_MODULE_6__["Player"].strength_exp_mult *= 1.2;
- _Player_js__WEBPACK_IMPORTED_MODULE_6__["Player"].defense_exp_mult *= 1.2;
- _Player_js__WEBPACK_IMPORTED_MODULE_6__["Player"].dexterity_exp_mult *= 1.2;
- _Player_js__WEBPACK_IMPORTED_MODULE_6__["Player"].agility_exp_mult *= 1.2;
- break;
- case AugmentationNames.INFRARet:
- _Player_js__WEBPACK_IMPORTED_MODULE_6__["Player"].crime_success_mult *= 1.25;
- _Player_js__WEBPACK_IMPORTED_MODULE_6__["Player"].crime_money_mult *= 1.1;
- _Player_js__WEBPACK_IMPORTED_MODULE_6__["Player"].dexterity_mult *= 1.1;
- break;
- case AugmentationNames.DermaForce:
- _Player_js__WEBPACK_IMPORTED_MODULE_6__["Player"].defense_mult *= 1.4;
- break;
- case AugmentationNames.GrapheneBrachiBlades:
- _Player_js__WEBPACK_IMPORTED_MODULE_6__["Player"].strength_mult *= 1.4;
- _Player_js__WEBPACK_IMPORTED_MODULE_6__["Player"].defense_mult *= 1.4;
- _Player_js__WEBPACK_IMPORTED_MODULE_6__["Player"].crime_success_mult *= 1.1;
- _Player_js__WEBPACK_IMPORTED_MODULE_6__["Player"].crime_money_mult *= 1.3;
- break;
- case AugmentationNames.GrapheneBionicArms:
- _Player_js__WEBPACK_IMPORTED_MODULE_6__["Player"].strength_mult *= 1.85;
- _Player_js__WEBPACK_IMPORTED_MODULE_6__["Player"].dexterity_mult *= 1.85;
- break;
- case AugmentationNames.BrachiBlades:
- _Player_js__WEBPACK_IMPORTED_MODULE_6__["Player"].strength_mult *= 1.15;
- _Player_js__WEBPACK_IMPORTED_MODULE_6__["Player"].defense_mult *= 1.15;
- _Player_js__WEBPACK_IMPORTED_MODULE_6__["Player"].crime_success_mult *= 1.1;
- _Player_js__WEBPACK_IMPORTED_MODULE_6__["Player"].crime_money_mult *= 1.15;
- break;
- case AugmentationNames.BionicArms:
- _Player_js__WEBPACK_IMPORTED_MODULE_6__["Player"].strength_mult *= 1.3;
- _Player_js__WEBPACK_IMPORTED_MODULE_6__["Player"].dexterity_mult *= 1.3;
- break;
- case AugmentationNames.SNA:
- _Player_js__WEBPACK_IMPORTED_MODULE_6__["Player"].work_money_mult *= 1.1;
- _Player_js__WEBPACK_IMPORTED_MODULE_6__["Player"].company_rep_mult *= 1.15;
- _Player_js__WEBPACK_IMPORTED_MODULE_6__["Player"].faction_rep_mult *= 1.15;
- break;
-
- //Bladeburner augmentations
- case AugmentationNames.EsperEyewear:
- _Player_js__WEBPACK_IMPORTED_MODULE_6__["Player"].bladeburner_success_chance_mult *= 1.03;
- _Player_js__WEBPACK_IMPORTED_MODULE_6__["Player"].dexterity_mult *= 1.03;
- break;
- case AugmentationNames.EMS4Recombination:
- _Player_js__WEBPACK_IMPORTED_MODULE_6__["Player"].bladeburner_success_chance_mult *= 1.03;
- _Player_js__WEBPACK_IMPORTED_MODULE_6__["Player"].bladeburner_analysis_mult *= 1.05;
- _Player_js__WEBPACK_IMPORTED_MODULE_6__["Player"].bladeburner_stamina_gain_mult *= 1.01;
- break;
- case AugmentationNames.OrionShoulder:
- _Player_js__WEBPACK_IMPORTED_MODULE_6__["Player"].defense_mult *= 1.05;
- _Player_js__WEBPACK_IMPORTED_MODULE_6__["Player"].strength_mult *= 1.03;
- _Player_js__WEBPACK_IMPORTED_MODULE_6__["Player"].dexterity_mult *= 1.03;
- _Player_js__WEBPACK_IMPORTED_MODULE_6__["Player"].bladeburner_success_chance_mult *= 1.04;
- break;
- case AugmentationNames.HyperionV1:
- _Player_js__WEBPACK_IMPORTED_MODULE_6__["Player"].bladeburner_success_chance_mult *= 1.05;
- break;
- case AugmentationNames.HyperionV2:
- _Player_js__WEBPACK_IMPORTED_MODULE_6__["Player"].bladeburner_success_chance_mult *= 1.07;
- break;
- case AugmentationNames.GolemSerum:
- _Player_js__WEBPACK_IMPORTED_MODULE_6__["Player"].strength_mult *= 1.05;
- _Player_js__WEBPACK_IMPORTED_MODULE_6__["Player"].defense_mult *= 1.05;
- _Player_js__WEBPACK_IMPORTED_MODULE_6__["Player"].dexterity_mult *= 1.05;
- _Player_js__WEBPACK_IMPORTED_MODULE_6__["Player"].agility_mult *= 1.05;
- _Player_js__WEBPACK_IMPORTED_MODULE_6__["Player"].bladeburner_stamina_gain_mult *= 1.05;
- break;
- case AugmentationNames.VangelisVirus:
- _Player_js__WEBPACK_IMPORTED_MODULE_6__["Player"].dexterity_exp_mult *= 1.05;
- _Player_js__WEBPACK_IMPORTED_MODULE_6__["Player"].bladeburner_analysis_mult *= 1.1;
- _Player_js__WEBPACK_IMPORTED_MODULE_6__["Player"].bladeburner_success_chance_mult *= 1.04;
- break;
- case AugmentationNames.VangelisVirus3:
- _Player_js__WEBPACK_IMPORTED_MODULE_6__["Player"].defense_exp_mult *= 1.05;
- _Player_js__WEBPACK_IMPORTED_MODULE_6__["Player"].dexterity_exp_mult *= 1.05;
- _Player_js__WEBPACK_IMPORTED_MODULE_6__["Player"].bladeburner_analysis_mult *= 1.15;
- _Player_js__WEBPACK_IMPORTED_MODULE_6__["Player"].bladeburner_success_chance_mult *= 1.05;
- break;
- case AugmentationNames.INTERLINKED:
- _Player_js__WEBPACK_IMPORTED_MODULE_6__["Player"].strength_exp_mult *= 1.04;
- _Player_js__WEBPACK_IMPORTED_MODULE_6__["Player"].defense_exp_mult *= 1.04;
- _Player_js__WEBPACK_IMPORTED_MODULE_6__["Player"].dexterity_exp_mult *= 1.04;
- _Player_js__WEBPACK_IMPORTED_MODULE_6__["Player"].agility_exp_mult *= 1.04;
- _Player_js__WEBPACK_IMPORTED_MODULE_6__["Player"].bladeburner_max_stamina_mult *= 1.1;
- break;
- case AugmentationNames.BladeRunner:
- _Player_js__WEBPACK_IMPORTED_MODULE_6__["Player"].agility_mult *= 1.05;
- _Player_js__WEBPACK_IMPORTED_MODULE_6__["Player"].bladeburner_max_stamina_mult *= 1.05;
- _Player_js__WEBPACK_IMPORTED_MODULE_6__["Player"].bladeburner_stamina_gain_mult *= 1.05;
- break;
- case AugmentationNames.BladeArmor:
- _Player_js__WEBPACK_IMPORTED_MODULE_6__["Player"].strength_mult *= 1.02;
- _Player_js__WEBPACK_IMPORTED_MODULE_6__["Player"].defense_mult *= 1.02;
- _Player_js__WEBPACK_IMPORTED_MODULE_6__["Player"].dexterity_mult *= 1.02;
- _Player_js__WEBPACK_IMPORTED_MODULE_6__["Player"].agility_mult *= 1.02;
- _Player_js__WEBPACK_IMPORTED_MODULE_6__["Player"].bladeburner_stamina_gain_mult *= 1.02;
- _Player_js__WEBPACK_IMPORTED_MODULE_6__["Player"].bladeburner_success_chance_mult *= 1.03;
- break;
- case AugmentationNames.BladeArmorPowerCells:
- _Player_js__WEBPACK_IMPORTED_MODULE_6__["Player"].bladeburner_success_chance_mult *= 1.05;
- _Player_js__WEBPACK_IMPORTED_MODULE_6__["Player"].bladeburner_stamina_gain_mult *= 1.02;
- _Player_js__WEBPACK_IMPORTED_MODULE_6__["Player"].bladeburner_max_stamina_mult *= 1.05;
- break;
- case AugmentationNames.BladeArmorEnergyShielding:
- _Player_js__WEBPACK_IMPORTED_MODULE_6__["Player"].defense_mult *= 1.05;
- _Player_js__WEBPACK_IMPORTED_MODULE_6__["Player"].bladeburner_success_chance_mult *= 1.06;
- break;
- case AugmentationNames.BladeArmorUnibeam:
- _Player_js__WEBPACK_IMPORTED_MODULE_6__["Player"].bladeburner_success_chance_mult *= 1.08;
- break;
- case AugmentationNames.BladeArmorOmnibeam:
- _Player_js__WEBPACK_IMPORTED_MODULE_6__["Player"].bladeburner_success_chance_mult *= 1.1;
- break;
- case AugmentationNames.BladeArmorIPU:
- _Player_js__WEBPACK_IMPORTED_MODULE_6__["Player"].bladeburner_analysis_mult *= 1.15;
- _Player_js__WEBPACK_IMPORTED_MODULE_6__["Player"].bladeburner_success_chance_mult *= 1.02;
- break;
- default:
- throw new Error("ERROR: No such augmentation!");
- return;
- }
-
- if (aug.name == AugmentationNames.NeuroFluxGovernor) {
- for (var i = 0; i < _Player_js__WEBPACK_IMPORTED_MODULE_6__["Player"].augmentations.length; ++i) {
- if (_Player_js__WEBPACK_IMPORTED_MODULE_6__["Player"].augmentations[i].name == AugmentationNames.NeuroFluxGovernor) {
- //Already have this aug, just upgrade the level
- return;
- }
- }
- }
-
- if (!reapply) {
- var ownedAug = new PlayerOwnedAugmentation(aug.name);
- _Player_js__WEBPACK_IMPORTED_MODULE_6__["Player"].augmentations.push(ownedAug);
- }
-}
-
-function PlayerOwnedAugmentation(name) {
- this.name = name;
- this.level = 1;
-}
-
-function installAugmentations(cbScript=null) {
- if (_Player_js__WEBPACK_IMPORTED_MODULE_6__["Player"].queuedAugmentations.length == 0) {
- Object(_utils_DialogBox_js__WEBPACK_IMPORTED_MODULE_12__["dialogBoxCreate"])("You have not purchased any Augmentations to install!");
- return false;
- }
- var augmentationList = "";
- for (var i = 0; i < _Player_js__WEBPACK_IMPORTED_MODULE_6__["Player"].queuedAugmentations.length; ++i) {
- var aug = Augmentations[_Player_js__WEBPACK_IMPORTED_MODULE_6__["Player"].queuedAugmentations[i].name];
- if (aug == null) {
- console.log("ERROR. Invalid augmentation");
- continue;
- }
- applyAugmentation(_Player_js__WEBPACK_IMPORTED_MODULE_6__["Player"].queuedAugmentations[i]);
- augmentationList += (aug.name + "
");
- }
- _Player_js__WEBPACK_IMPORTED_MODULE_6__["Player"].queuedAugmentations = [];
- Object(_utils_DialogBox_js__WEBPACK_IMPORTED_MODULE_12__["dialogBoxCreate"])("You slowly drift to sleep as scientists put you under in order " +
- "to install the following Augmentations:
" + augmentationList +
- "
You wake up in your home...you feel different...");
- Object(_Prestige_js__WEBPACK_IMPORTED_MODULE_7__["prestigeAugmentation"])();
-
- //Run a script after prestiging
- if (cbScript && Object(_utils_StringHelperFunctions_js__WEBPACK_IMPORTED_MODULE_15__["isString"])(cbScript)) {
- var home = _Player_js__WEBPACK_IMPORTED_MODULE_6__["Player"].getHomeComputer();
- for (var i = 0; i < home.scripts.length; ++i) {
- if (home.scripts[i].filename === cbScript) {
- var script = home.scripts[i];
- var ramUsage = script.ramUsage;
- var ramAvailable = home.maxRam - home.ramUsed;
- if (ramUsage > ramAvailable) {
- return; //Not enough RAM
- }
- var runningScriptObj = new _Script_js__WEBPACK_IMPORTED_MODULE_9__["RunningScript"](script, []); //No args
- runningScriptObj.threads = 1; //Only 1 thread
- home.runningScripts.push(runningScriptObj);
- Object(_NetscriptWorker_js__WEBPACK_IMPORTED_MODULE_5__["addWorkerScript"])(runningScriptObj, home);
- }
- }
- }
-}
-
-function augmentationExists(name) {
- return Augmentations.hasOwnProperty(name);
-}
-
-//Used for testing balance
-function giveAllAugmentations() {
- for (var name in Augmentations) {
- var aug = Augmentations[name];
- if (aug == null) {continue;}
- var ownedAug = new PlayerOwnedAugmentation(name);
- _Player_js__WEBPACK_IMPORTED_MODULE_6__["Player"].augmentations.push(ownedAug);
- }
- _Player_js__WEBPACK_IMPORTED_MODULE_6__["Player"].reapplyAllAugmentations();
-}
-
-function displayAugmentationsContent() {
- Object(_utils_HelperFunctions_js__WEBPACK_IMPORTED_MODULE_13__["removeChildrenFromElement"])(_engine_js__WEBPACK_IMPORTED_MODULE_2__["Engine"].Display.augmentationsContent);
- _engine_js__WEBPACK_IMPORTED_MODULE_2__["Engine"].Display.augmentationsContent.appendChild(Object(_utils_HelperFunctions_js__WEBPACK_IMPORTED_MODULE_13__["createElement"])("h1", {
- innerText:"Purchased Augmentations",
- }));
-
- //Bladeburner text, once mechanic is unlocked
- var bladeburnerText = "\n";
- if (_Player_js__WEBPACK_IMPORTED_MODULE_6__["Player"].bitNodeN === 6 || _NetscriptFunctions_js__WEBPACK_IMPORTED_MODULE_4__["hasBladeburnerSF"]) {
- bladeburnerText = "Bladeburner Progress\n\n";
- }
-
- _engine_js__WEBPACK_IMPORTED_MODULE_2__["Engine"].Display.augmentationsContent.appendChild(Object(_utils_HelperFunctions_js__WEBPACK_IMPORTED_MODULE_13__["createElement"])("pre", {
- width:"70%", whiteSpace:"pre-wrap", display:"block",
- innerText:"Below is a list of all Augmentations you have purchased but not yet installed. Click the button below to install them.\n" +
- "WARNING: Installing your Augmentations resets most of your progress, including:\n\n" +
- "Stats/Skill levels and Experience\n" +
- "Money\n" +
- "Scripts on every computer but your home computer\n" +
- "Purchased servers\n" +
- "Hacknet Nodes\n" +
- "Faction/Company reputation\n" +
- "Stocks\n" +
- bladeburnerText +
- "Installing Augmentations lets you start over with the perks and benefits granted by all " +
- "of the Augmentations you have ever installed. Also, you will keep any scripts and RAM/Core upgrades " +
- "on your home computer (but you will lose all programs besides NUKE.exe)."
- }));
-
- //Install Augmentations button
- _engine_js__WEBPACK_IMPORTED_MODULE_2__["Engine"].Display.augmentationsContent.appendChild(Object(_utils_HelperFunctions_js__WEBPACK_IMPORTED_MODULE_13__["createElement"])("a", {
- class:"a-link-button", innerText:"Install Augmentations",
- tooltip:"'I never asked for this'",
- clickListener:()=>{
- installAugmentations();
- return false;
- }
- }));
-
- //Backup button
- _engine_js__WEBPACK_IMPORTED_MODULE_2__["Engine"].Display.augmentationsContent.appendChild(Object(_utils_HelperFunctions_js__WEBPACK_IMPORTED_MODULE_13__["createElement"])("a", {
- class:"a-link-button flashing-button", innerText:"Backup Save (Export)",
- tooltip:"It's always a good idea to backup/export your save!",
- clickListener:()=>{
- _SaveObject_js__WEBPACK_IMPORTED_MODULE_8__["saveObject"].exportGame();
- return false;
- }
- }));
-
- //Purchased/queued augmentations list
- var queuedAugmentationsList = Object(_utils_HelperFunctions_js__WEBPACK_IMPORTED_MODULE_13__["createElement"])("ul", {class:"augmentations-list"});
-
- for (var i = 0; i < _Player_js__WEBPACK_IMPORTED_MODULE_6__["Player"].queuedAugmentations.length; ++i) {
- var augName = _Player_js__WEBPACK_IMPORTED_MODULE_6__["Player"].queuedAugmentations[i].name;
- var aug = Augmentations[augName];
-
- var displayName = augName;
- if (augName === AugmentationNames.NeuroFluxGovernor) {
- displayName += " - Level " + (_Player_js__WEBPACK_IMPORTED_MODULE_6__["Player"].queuedAugmentations[i].level);
- }
-
- var accordion = Object(_utils_HelperFunctions_js__WEBPACK_IMPORTED_MODULE_13__["createAccordionElement"])({hdrText:displayName, panelText:aug.info});
- queuedAugmentationsList.appendChild(accordion[0]);
- }
- _engine_js__WEBPACK_IMPORTED_MODULE_2__["Engine"].Display.augmentationsContent.appendChild(queuedAugmentationsList);
-
- //Installed augmentations list
- _engine_js__WEBPACK_IMPORTED_MODULE_2__["Engine"].Display.augmentationsContent.appendChild(Object(_utils_HelperFunctions_js__WEBPACK_IMPORTED_MODULE_13__["createElement"])("h1", {
- innerText:"Installed Augmentations", marginTop:"8px",
- }));
- _engine_js__WEBPACK_IMPORTED_MODULE_2__["Engine"].Display.augmentationsContent.appendChild(Object(_utils_HelperFunctions_js__WEBPACK_IMPORTED_MODULE_13__["createElement"])("p", {
- width:"70%", whiteSpace:"pre-wrap",
- innerText:"List of all Augmentations (including Source Files) that have been " +
- "installed. You have gained the effects of these Augmentations."
- }));
-
- var augmentationsList = Object(_utils_HelperFunctions_js__WEBPACK_IMPORTED_MODULE_13__["createElement"])("ul", {class:"augmentations-list"});
-
- //Expand/Collapse All buttons
- _engine_js__WEBPACK_IMPORTED_MODULE_2__["Engine"].Display.augmentationsContent.appendChild(Object(_utils_HelperFunctions_js__WEBPACK_IMPORTED_MODULE_13__["createElement"])("a", {
- class:"a-link-button", fontSize:"14px", innerText:"Expand All", display:"inline-block",
- clickListener:()=>{
- var allHeaders = augmentationsList.getElementsByClassName("accordion-header");
- for (var i = 0; i < allHeaders.length; ++i) {
- if (!allHeaders[i].classList.contains("active")) {allHeaders[i].click();}
- }
- }
- }));
- _engine_js__WEBPACK_IMPORTED_MODULE_2__["Engine"].Display.augmentationsContent.appendChild(Object(_utils_HelperFunctions_js__WEBPACK_IMPORTED_MODULE_13__["createElement"])("a", {
- class:"a-link-button", fontSize:"14px", innerText:"Collapse All", display:"inline-block",
- clickListener:()=>{
- var allHeaders = augmentationsList.getElementsByClassName("accordion-header");
- for (var i = 0; i < allHeaders.length; ++i) {
- if (allHeaders[i].classList.contains("active")) {allHeaders[i].click();}
- }
- }
- }));
-
- //Sort Buttons
- _engine_js__WEBPACK_IMPORTED_MODULE_2__["Engine"].Display.augmentationsContent.appendChild(Object(_utils_HelperFunctions_js__WEBPACK_IMPORTED_MODULE_13__["createElement"])("a", {
- class:"a-link-button", fontSize:"14px", innerText:"Sort in Order",
- tooltip:"Sorts the Augmentations alphabetically and Source Files in numerical order (1, 2, 3,...)",
- clickListener:()=>{
- Object(_utils_HelperFunctions_js__WEBPACK_IMPORTED_MODULE_13__["removeChildrenFromElement"])(augmentationsList);
-
- //Create a copy of Player's Source Files and augs array and sort them
- var sourceFiles = _Player_js__WEBPACK_IMPORTED_MODULE_6__["Player"].sourceFiles.slice();
- var augs = _Player_js__WEBPACK_IMPORTED_MODULE_6__["Player"].augmentations.slice();
- sourceFiles.sort((sf1, sf2)=>{
- return sf1.n - sf2.n;
- });
- augs.sort((aug1, aug2)=>{
- return aug1.name <= aug2.name ? -1 : 1;
- });
- displaySourceFiles(augmentationsList, sourceFiles);
- displayAugmentations(augmentationsList, augs);
- }
- }));
-
- _engine_js__WEBPACK_IMPORTED_MODULE_2__["Engine"].Display.augmentationsContent.appendChild(Object(_utils_HelperFunctions_js__WEBPACK_IMPORTED_MODULE_13__["createElement"])("a", {
- class:"a-link-button", fontSize:"14px", innerText:"Sort by Acquirement Time",
- tooltip:"Sorts the Augmentations and Source Files based on when you acquired them (same as default)",
- clickListener:()=>{
- Object(_utils_HelperFunctions_js__WEBPACK_IMPORTED_MODULE_13__["removeChildrenFromElement"])(augmentationsList);
- displaySourceFiles(augmentationsList, _Player_js__WEBPACK_IMPORTED_MODULE_6__["Player"].sourceFiles);
- displayAugmentations(augmentationsList, _Player_js__WEBPACK_IMPORTED_MODULE_6__["Player"].augmentations);
- }
- }));
-
- //Source Files - Temporary...Will probably put in a separate pane Later
- displaySourceFiles(augmentationsList, _Player_js__WEBPACK_IMPORTED_MODULE_6__["Player"].sourceFiles);
- displayAugmentations(augmentationsList, _Player_js__WEBPACK_IMPORTED_MODULE_6__["Player"].augmentations);
- _engine_js__WEBPACK_IMPORTED_MODULE_2__["Engine"].Display.augmentationsContent.appendChild(augmentationsList);
-}
-
-//Creates the accordion elements to display Augmentations
-// @listElement - List DOM element to append accordion elements to
-// @augs - Array of Augmentation objects
-function displayAugmentations(listElement, augs) {
- for (var i = 0; i < augs.length; ++i) {
- var augName = augs[i].name;
- var aug = Augmentations[augName];
-
- var displayName = augName;
- if (augName === AugmentationNames.NeuroFluxGovernor) {
- displayName += " - Level " + (augs[i].level);
- }
- var accordion = Object(_utils_HelperFunctions_js__WEBPACK_IMPORTED_MODULE_13__["createAccordionElement"])({hdrText:displayName, panelText:aug.info});
- listElement.appendChild(accordion[0]);
- }
-}
-
-//Creates the accordion elements to display Source Files
-// @listElement - List DOM element to append accordion elements to
-// @sourceFiles - Array of Source File objects
-function displaySourceFiles(listElement, sourceFiles) {
- for (var i = 0; i < sourceFiles.length; ++i) {
- var srcFileKey = "SourceFile" + sourceFiles[i].n;
- var sourceFileObject = _SourceFile_js__WEBPACK_IMPORTED_MODULE_11__["SourceFiles"][srcFileKey];
- if (sourceFileObject == null) {
- console.log("ERROR: Invalid source file number: " + sourceFiles[i].n);
- continue;
- }
- var accordion = Object(_utils_HelperFunctions_js__WEBPACK_IMPORTED_MODULE_13__["createAccordionElement"])({
- hdrText:sourceFileObject.name + "
" + "Level " + (sourceFiles[i].lvl) + " / 3",
- panelText:sourceFileObject.info
- });
-
- listElement.appendChild(accordion[0]);
- }
-}
-
-
-
-
-
-/***/ }),
-/* 20 */
-/*!***********************!*\
- !*** ./src/Crimes.js ***!
- \***********************/
-/***/ (function(module, __webpack_exports__, __webpack_require__) {
-
-"use strict";
-__webpack_require__.r(__webpack_exports__);
-/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "commitShopliftCrime", function() { return commitShopliftCrime; });
-/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "commitRobStoreCrime", function() { return commitRobStoreCrime; });
-/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "commitMugCrime", function() { return commitMugCrime; });
-/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "commitLarcenyCrime", function() { return commitLarcenyCrime; });
-/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "commitDealDrugsCrime", function() { return commitDealDrugsCrime; });
-/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "commitBondForgeryCrime", function() { return commitBondForgeryCrime; });
-/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "commitTraffickArmsCrime", function() { return commitTraffickArmsCrime; });
-/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "commitHomicideCrime", function() { return commitHomicideCrime; });
-/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "commitGrandTheftAutoCrime", function() { return commitGrandTheftAutoCrime; });
-/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "commitKidnapCrime", function() { return commitKidnapCrime; });
-/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "commitAssassinationCrime", function() { return commitAssassinationCrime; });
-/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "commitHeistCrime", function() { return commitHeistCrime; });
-/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "determineCrimeSuccess", function() { return determineCrimeSuccess; });
-/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "determineCrimeChanceShoplift", function() { return determineCrimeChanceShoplift; });
-/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "determineCrimeChanceRobStore", function() { return determineCrimeChanceRobStore; });
-/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "determineCrimeChanceMug", function() { return determineCrimeChanceMug; });
-/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "determineCrimeChanceLarceny", function() { return determineCrimeChanceLarceny; });
-/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "determineCrimeChanceDealDrugs", function() { return determineCrimeChanceDealDrugs; });
-/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "determineCrimeChanceBondForgery", function() { return determineCrimeChanceBondForgery; });
-/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "determineCrimeChanceTraffickArms", function() { return determineCrimeChanceTraffickArms; });
-/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "determineCrimeChanceHomicide", function() { return determineCrimeChanceHomicide; });
-/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "determineCrimeChanceGrandTheftAuto", function() { return determineCrimeChanceGrandTheftAuto; });
-/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "determineCrimeChanceKidnap", function() { return determineCrimeChanceKidnap; });
-/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "determineCrimeChanceAssassination", function() { return determineCrimeChanceAssassination; });
-/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "determineCrimeChanceHeist", function() { return determineCrimeChanceHeist; });
-/* harmony import */ var _Constants_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./Constants.js */ 3);
-/* harmony import */ var _Player_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./Player.js */ 0);
-/* harmony import */ var _utils_DialogBox_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../utils/DialogBox.js */ 7);
-
-
-
-
-/* Crimes.js */
-function commitShopliftCrime(div=1, singParams=null) {
- if (div <= 0) {div = 1;}
- _Player_js__WEBPACK_IMPORTED_MODULE_1__["Player"].crimeType = _Constants_js__WEBPACK_IMPORTED_MODULE_0__["CONSTANTS"].CrimeShoplift;
- var time = 2000;
- _Player_js__WEBPACK_IMPORTED_MODULE_1__["Player"].startCrime(0, 0, 0, 2/div, 2/div, 0, 15000/div, time, singParams); //$7500/s, 1 exp/s
- return time;
-}
-
-function commitRobStoreCrime(div=1, singParams=null) {
- if (div <= 0) {div = 1;}
- _Player_js__WEBPACK_IMPORTED_MODULE_1__["Player"].crimeType = _Constants_js__WEBPACK_IMPORTED_MODULE_0__["CONSTANTS"].CrimeRobStore;
- var time = 60000;
- _Player_js__WEBPACK_IMPORTED_MODULE_1__["Player"].startCrime(30/div, 0, 0, 45/div, 45/div, 0, 400000/div, time, singParams); //$6666,6/2, 0.5exp/s, 0.75exp/s
- return time;
-}
-
-function commitMugCrime(div=1, singParams=null) {
- if (div <= 0) {div = 1;}
- _Player_js__WEBPACK_IMPORTED_MODULE_1__["Player"].crimeType = _Constants_js__WEBPACK_IMPORTED_MODULE_0__["CONSTANTS"].CrimeMug;
- var time = 4000;
- _Player_js__WEBPACK_IMPORTED_MODULE_1__["Player"].startCrime(0, 3/div, 3/div, 3/div, 3/div, 0, 36000/div, time, singParams); //$9000/s, .66 exp/s
- return time;
-}
-
-function commitLarcenyCrime(div=1, singParams=null) {
- if (div <= 0) {div = 1;}
- _Player_js__WEBPACK_IMPORTED_MODULE_1__["Player"].crimeType = _Constants_js__WEBPACK_IMPORTED_MODULE_0__["CONSTANTS"].CrimeLarceny;
- var time = 90000;
- _Player_js__WEBPACK_IMPORTED_MODULE_1__["Player"].startCrime(45/div, 0, 0, 60/div, 60/div, 0, 800000/div, time, singParams) // $8888.88/s, .5 exp/s, .66 exp/s
- return time;
-}
-
-function commitDealDrugsCrime(div=1, singParams=null) {
- if (div <= 0) {div = 1;}
- _Player_js__WEBPACK_IMPORTED_MODULE_1__["Player"].crimeType = _Constants_js__WEBPACK_IMPORTED_MODULE_0__["CONSTANTS"].CrimeDrugs;
- var time = 10000;
- _Player_js__WEBPACK_IMPORTED_MODULE_1__["Player"].startCrime(0, 0, 0, 5/div, 5/div, 10/div, 120000/div, time, singParams); //$12000/s, .5 exp/s, 1 exp/s
- return time;
-}
-
-function commitBondForgeryCrime(div=1, singParams=null) {
- if (div <= 0) {div = 1;}
- _Player_js__WEBPACK_IMPORTED_MODULE_1__["Player"].crimeType = _Constants_js__WEBPACK_IMPORTED_MODULE_0__["CONSTANTS"].CrimeBondForgery;
- var time = 300000;
- _Player_js__WEBPACK_IMPORTED_MODULE_1__["Player"].startCrime(100/div, 0, 0, 150/div, 0, 15/div, 4500000/div, time, singParams); //$15000/s, 0.33 hack exp/s, .5 dex exp/s, .05 cha exp
- return time;
-}
-
-function commitTraffickArmsCrime(div=1, singParams=null) {
- if (div <= 0) {div = 1;}
- _Player_js__WEBPACK_IMPORTED_MODULE_1__["Player"].crimeType = _Constants_js__WEBPACK_IMPORTED_MODULE_0__["CONSTANTS"].CrimeTraffickArms;
- var time = 40000;
- _Player_js__WEBPACK_IMPORTED_MODULE_1__["Player"].startCrime(0, 20/div, 20/div, 20/div, 20/div, 40/div, 600000/div, time, singParams); //$15000/s, .5 combat exp/s, 1 cha exp/s
- return time;
-}
-
-function commitHomicideCrime(div=1, singParams=null) {
- if (div <= 0) {div = 1;}
- _Player_js__WEBPACK_IMPORTED_MODULE_1__["Player"].crimeType = _Constants_js__WEBPACK_IMPORTED_MODULE_0__["CONSTANTS"].CrimeHomicide;
- var time = 3000;
- _Player_js__WEBPACK_IMPORTED_MODULE_1__["Player"].startCrime(0, 2/div, 2/div, 2/div, 2/div, 0, 45000/div, time, singParams); //$15000/s, 0.66 combat exp/s
- return time;
-}
-
-function commitGrandTheftAutoCrime(div=1, singParams=null) {
- if (div <= 0) {div = 1;}
- _Player_js__WEBPACK_IMPORTED_MODULE_1__["Player"].crimeType = _Constants_js__WEBPACK_IMPORTED_MODULE_0__["CONSTANTS"].CrimeGrandTheftAuto;
- var time = 80000;
- _Player_js__WEBPACK_IMPORTED_MODULE_1__["Player"].startCrime(0, 20/div, 20/div, 20/div, 80/div, 40/div, 1600000/div, time, singParams); //$20000/s, .25 exp/s, 1 exp/s, .5 exp/s
- return time;
-}
-
-function commitKidnapCrime(div=1, singParams=null) {
- if (div <= 0) {div = 1;}
- _Player_js__WEBPACK_IMPORTED_MODULE_1__["Player"].crimeType = _Constants_js__WEBPACK_IMPORTED_MODULE_0__["CONSTANTS"].CrimeKidnap;
- var time = 120000;
- _Player_js__WEBPACK_IMPORTED_MODULE_1__["Player"].startCrime(0, 80/div, 80/div, 80/div, 80/div, 80/div, 3600000/div, time, singParams); //$30000/s. .66 exp/s
- return time;
-}
-
-function commitAssassinationCrime(div=1, singParams=null) {
- if (div <= 0) {div = 1;}
- _Player_js__WEBPACK_IMPORTED_MODULE_1__["Player"].crimeType = _Constants_js__WEBPACK_IMPORTED_MODULE_0__["CONSTANTS"].CrimeAssassination;
- var time = 300000;
- _Player_js__WEBPACK_IMPORTED_MODULE_1__["Player"].startCrime(0, 300/div, 300/div, 300/div, 300/div, 0, 12000000/div, time, singParams); //$40000/s, 1 exp/s
- return time;
-}
-
-function commitHeistCrime(div=1, singParams=null) {
- if (div <= 0) {div = 1;}
- _Player_js__WEBPACK_IMPORTED_MODULE_1__["Player"].crimeType = _Constants_js__WEBPACK_IMPORTED_MODULE_0__["CONSTANTS"].CrimeHeist;
- var time = 600000;
- _Player_js__WEBPACK_IMPORTED_MODULE_1__["Player"].startCrime(450/div, 450/div, 450/div, 450/div, 450/div, 450/div, 120000000/div, time, singParams); //$200000/s, .75exp/s
- return time;
-}
-
-function determineCrimeSuccess(crime, moneyGained) {
- var chance = 0;
- switch (crime) {
- case _Constants_js__WEBPACK_IMPORTED_MODULE_0__["CONSTANTS"].CrimeShoplift:
- chance = determineCrimeChanceShoplift();
- break;
- case _Constants_js__WEBPACK_IMPORTED_MODULE_0__["CONSTANTS"].CrimeRobStore:
- chance = determineCrimeChanceRobStore();
- break;
- case _Constants_js__WEBPACK_IMPORTED_MODULE_0__["CONSTANTS"].CrimeMug:
- chance = determineCrimeChanceMug();
- break;
- case _Constants_js__WEBPACK_IMPORTED_MODULE_0__["CONSTANTS"].CrimeLarceny:
- chance = determineCrimeChanceLarceny();
- break;
- case _Constants_js__WEBPACK_IMPORTED_MODULE_0__["CONSTANTS"].CrimeDrugs:
- chance = determineCrimeChanceDealDrugs();
- break;
- case _Constants_js__WEBPACK_IMPORTED_MODULE_0__["CONSTANTS"].CrimeBondForgery:
- chance = determineCrimeChanceBondForgery();
- break;
- case _Constants_js__WEBPACK_IMPORTED_MODULE_0__["CONSTANTS"].CrimeTraffickArms:
- chance = determineCrimeChanceTraffickArms();
- break;
- case _Constants_js__WEBPACK_IMPORTED_MODULE_0__["CONSTANTS"].CrimeHomicide:
- chance = determineCrimeChanceHomicide();
- break;
- case _Constants_js__WEBPACK_IMPORTED_MODULE_0__["CONSTANTS"].CrimeGrandTheftAuto:
- chance = determineCrimeChanceGrandTheftAuto();
- break;
- case _Constants_js__WEBPACK_IMPORTED_MODULE_0__["CONSTANTS"].CrimeKidnap:
- chance = determineCrimeChanceKidnap();
- break;
- case _Constants_js__WEBPACK_IMPORTED_MODULE_0__["CONSTANTS"].CrimeAssassination:
- chance = determineCrimeChanceAssassination();
- break;
- case _Constants_js__WEBPACK_IMPORTED_MODULE_0__["CONSTANTS"].CrimeHeist:
- chance = determineCrimeChanceHeist();
- break;
- default:
- console.log(crime);
- Object(_utils_DialogBox_js__WEBPACK_IMPORTED_MODULE_2__["dialogBoxCreate"])("ERR: Unrecognized crime type. This is probably a bug please contact the developer");
- return;
- }
-
- if (Math.random() <= chance) {
- //Success
- _Player_js__WEBPACK_IMPORTED_MODULE_1__["Player"].gainMoney(moneyGained);
- return true;
- } else {
- //Failure
- return false;
- }
-}
-
-let intWgt = _Constants_js__WEBPACK_IMPORTED_MODULE_0__["CONSTANTS"].IntelligenceCrimeWeight;
-let maxLvl = _Constants_js__WEBPACK_IMPORTED_MODULE_0__["CONSTANTS"].MaxSkillLevel;
-
-function determineCrimeChanceShoplift() {
- var chance = (_Player_js__WEBPACK_IMPORTED_MODULE_1__["Player"].dexterity / maxLvl +
- _Player_js__WEBPACK_IMPORTED_MODULE_1__["Player"].agility / maxLvl +
- intWgt * _Player_js__WEBPACK_IMPORTED_MODULE_1__["Player"].intelligence / maxLvl) * 20;
- chance *= _Player_js__WEBPACK_IMPORTED_MODULE_1__["Player"].crime_success_mult;
- return Math.min(chance, 1);
-}
-
-function determineCrimeChanceRobStore() {
- var chance = (0.5 * _Player_js__WEBPACK_IMPORTED_MODULE_1__["Player"].hacking_skill / maxLvl +
- 2 * _Player_js__WEBPACK_IMPORTED_MODULE_1__["Player"].dexterity / maxLvl +
- 1 * _Player_js__WEBPACK_IMPORTED_MODULE_1__["Player"].agility / maxLvl +
- intWgt * _Player_js__WEBPACK_IMPORTED_MODULE_1__["Player"].intelligence / maxLvl) * 5;
- chance *= _Player_js__WEBPACK_IMPORTED_MODULE_1__["Player"].crime_success_mult;
- return Math.min(chance, 1);
-}
-
-function determineCrimeChanceMug() {
- var chance = (1.5 * _Player_js__WEBPACK_IMPORTED_MODULE_1__["Player"].strength / maxLvl +
- 0.5 * _Player_js__WEBPACK_IMPORTED_MODULE_1__["Player"].defense / maxLvl +
- 1.5 * _Player_js__WEBPACK_IMPORTED_MODULE_1__["Player"].dexterity / maxLvl +
- 0.5 * _Player_js__WEBPACK_IMPORTED_MODULE_1__["Player"].agility / maxLvl +
- intWgt * _Player_js__WEBPACK_IMPORTED_MODULE_1__["Player"].intelligence / maxLvl) * 5;
- chance *= _Player_js__WEBPACK_IMPORTED_MODULE_1__["Player"].crime_success_mult;
- return Math.min(chance, 1);
-}
-
-function determineCrimeChanceLarceny() {
- var chance = (0.5 * _Player_js__WEBPACK_IMPORTED_MODULE_1__["Player"].hacking_skill / maxLvl +
- _Player_js__WEBPACK_IMPORTED_MODULE_1__["Player"].dexterity / maxLvl +
- _Player_js__WEBPACK_IMPORTED_MODULE_1__["Player"].agility / maxLvl +
- intWgt * _Player_js__WEBPACK_IMPORTED_MODULE_1__["Player"].intelligence / maxLvl) * 3;
- chance *= _Player_js__WEBPACK_IMPORTED_MODULE_1__["Player"].crime_success_mult;
- return Math.min(chance, 1);
-}
-
-function determineCrimeChanceDealDrugs() {
- var chance = (3*_Player_js__WEBPACK_IMPORTED_MODULE_1__["Player"].charisma / maxLvl +
- 2*_Player_js__WEBPACK_IMPORTED_MODULE_1__["Player"].dexterity / maxLvl +
- _Player_js__WEBPACK_IMPORTED_MODULE_1__["Player"].agility / maxLvl +
- intWgt * _Player_js__WEBPACK_IMPORTED_MODULE_1__["Player"].intelligence / maxLvl);
- chance *= _Player_js__WEBPACK_IMPORTED_MODULE_1__["Player"].crime_success_mult;
- return Math.min(chance, 1);
-}
-
-function determineCrimeChanceBondForgery() {
- var chance = (0.1*_Player_js__WEBPACK_IMPORTED_MODULE_1__["Player"].hacking_skill / maxLvl +
- 2.5*_Player_js__WEBPACK_IMPORTED_MODULE_1__["Player"].dexterity / maxLvl +
- 2*intWgt*_Player_js__WEBPACK_IMPORTED_MODULE_1__["Player"].intelligence / maxLvl);
- chance *= _Player_js__WEBPACK_IMPORTED_MODULE_1__["Player"].crime_success_mult;
- return Math.min(chance, 1);
-}
-
-function determineCrimeChanceTraffickArms() {
- var chance = (_Player_js__WEBPACK_IMPORTED_MODULE_1__["Player"].charisma / maxLvl +
- _Player_js__WEBPACK_IMPORTED_MODULE_1__["Player"].strength / maxLvl +
- _Player_js__WEBPACK_IMPORTED_MODULE_1__["Player"].defense / maxLvl +
- _Player_js__WEBPACK_IMPORTED_MODULE_1__["Player"].dexterity / maxLvl +
- _Player_js__WEBPACK_IMPORTED_MODULE_1__["Player"].agility / maxLvl +
- intWgt * _Player_js__WEBPACK_IMPORTED_MODULE_1__["Player"].intelligence / maxLvl) / 2;
- chance *= _Player_js__WEBPACK_IMPORTED_MODULE_1__["Player"].crime_success_mult;
- return Math.min(chance, 1);
-}
-
-function determineCrimeChanceHomicide() {
- var chance = (2 * _Player_js__WEBPACK_IMPORTED_MODULE_1__["Player"].strength / maxLvl +
- 2 * _Player_js__WEBPACK_IMPORTED_MODULE_1__["Player"].defense / maxLvl +
- 0.5 * _Player_js__WEBPACK_IMPORTED_MODULE_1__["Player"].dexterity / maxLvl +
- 0.5 * _Player_js__WEBPACK_IMPORTED_MODULE_1__["Player"].agility / maxLvl +
- intWgt * _Player_js__WEBPACK_IMPORTED_MODULE_1__["Player"].intelligence / maxLvl);
- chance *= _Player_js__WEBPACK_IMPORTED_MODULE_1__["Player"].crime_success_mult;
- return Math.min(chance, 1);
-}
-
-function determineCrimeChanceGrandTheftAuto() {
- var chance = (_Player_js__WEBPACK_IMPORTED_MODULE_1__["Player"].hacking_skill / maxLvl +
- _Player_js__WEBPACK_IMPORTED_MODULE_1__["Player"].strength / maxLvl +
- 4 * _Player_js__WEBPACK_IMPORTED_MODULE_1__["Player"].dexterity / maxLvl +
- 2 * _Player_js__WEBPACK_IMPORTED_MODULE_1__["Player"].agility / maxLvl +
- 2 * _Player_js__WEBPACK_IMPORTED_MODULE_1__["Player"].charisma / maxLvl +
- intWgt * _Player_js__WEBPACK_IMPORTED_MODULE_1__["Player"].intelligence / maxLvl) / 8;
- chance *= _Player_js__WEBPACK_IMPORTED_MODULE_1__["Player"].crime_success_mult;
- return Math.min(chance, 1);
-}
-
-function determineCrimeChanceKidnap() {
- var chance = (_Player_js__WEBPACK_IMPORTED_MODULE_1__["Player"].charisma / maxLvl +
- _Player_js__WEBPACK_IMPORTED_MODULE_1__["Player"].strength / maxLvl +
- _Player_js__WEBPACK_IMPORTED_MODULE_1__["Player"].dexterity / maxLvl +
- _Player_js__WEBPACK_IMPORTED_MODULE_1__["Player"].agility / maxLvl +
- intWgt * _Player_js__WEBPACK_IMPORTED_MODULE_1__["Player"].intelligence / maxLvl) / 5;
- chance *= _Player_js__WEBPACK_IMPORTED_MODULE_1__["Player"].crime_success_mult;
- return Math.min(chance, 1);
-}
-
-function determineCrimeChanceAssassination() {
- var chance = (_Player_js__WEBPACK_IMPORTED_MODULE_1__["Player"].strength / maxLvl +
- 2 * _Player_js__WEBPACK_IMPORTED_MODULE_1__["Player"].dexterity / maxLvl +
- _Player_js__WEBPACK_IMPORTED_MODULE_1__["Player"].agility / maxLvl +
- intWgt * _Player_js__WEBPACK_IMPORTED_MODULE_1__["Player"].intelligence / maxLvl) / 8;
- chance *= _Player_js__WEBPACK_IMPORTED_MODULE_1__["Player"].crime_success_mult;
- return Math.min(chance, 1);
-}
-
-function determineCrimeChanceHeist() {
- var chance = (_Player_js__WEBPACK_IMPORTED_MODULE_1__["Player"].hacking_skill / maxLvl +
- _Player_js__WEBPACK_IMPORTED_MODULE_1__["Player"].strength / maxLvl +
- _Player_js__WEBPACK_IMPORTED_MODULE_1__["Player"].defense / maxLvl +
- _Player_js__WEBPACK_IMPORTED_MODULE_1__["Player"].dexterity / maxLvl +
- _Player_js__WEBPACK_IMPORTED_MODULE_1__["Player"].agility / maxLvl +
- _Player_js__WEBPACK_IMPORTED_MODULE_1__["Player"].charisma / maxLvl +
- intWgt * _Player_js__WEBPACK_IMPORTED_MODULE_1__["Player"].intelligence / maxLvl) / 18;
- chance *= _Player_js__WEBPACK_IMPORTED_MODULE_1__["Player"].crime_success_mult;
- return Math.min(chance, 1);
-}
-
-
-
-
-/***/ }),
-/* 21 */
-/*!********************************!*\
- !*** ./src/NetscriptWorker.js ***!
- \********************************/
-/***/ (function(module, __webpack_exports__, __webpack_require__) {
-
-"use strict";
-__webpack_require__.r(__webpack_exports__);
-/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "WorkerScript", function() { return WorkerScript; });
-/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "workerScripts", function() { return workerScripts; });
-/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "NetscriptPorts", function() { return NetscriptPorts; });
-/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "runScriptsLoop", function() { return runScriptsLoop; });
-/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "killWorkerScript", function() { return killWorkerScript; });
-/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "addWorkerScript", function() { return addWorkerScript; });
-/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "updateOnlineScriptTimes", function() { return updateOnlineScriptTimes; });
-/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "prestigeWorkerScripts", function() { return prestigeWorkerScripts; });
-/* harmony import */ var _ActiveScriptsUI_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./ActiveScriptsUI.js */ 41);
-/* harmony import */ var _Constants_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./Constants.js */ 3);
-/* harmony import */ var _engine_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./engine.js */ 5);
-/* harmony import */ var _NetscriptEnvironment_js__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./NetscriptEnvironment.js */ 69);
-/* harmony import */ var _NetscriptEvaluator_js__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ./NetscriptEvaluator.js */ 6);
-/* harmony import */ var _NetscriptJSEvaluator_js__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ./NetscriptJSEvaluator.js */ 63);
-/* harmony import */ var _NetscriptPort_js__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! ./NetscriptPort.js */ 46);
-/* harmony import */ var _Server_js__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! ./Server.js */ 10);
-/* harmony import */ var _Settings_js__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! ./Settings.js */ 23);
-/* harmony import */ var _utils_acorn_js__WEBPACK_IMPORTED_MODULE_9__ = __webpack_require__(/*! ../utils/acorn.js */ 36);
-/* harmony import */ var _utils_acorn_js__WEBPACK_IMPORTED_MODULE_9___default = /*#__PURE__*/__webpack_require__.n(_utils_acorn_js__WEBPACK_IMPORTED_MODULE_9__);
-/* harmony import */ var _utils_DialogBox_js__WEBPACK_IMPORTED_MODULE_10__ = __webpack_require__(/*! ../utils/DialogBox.js */ 7);
-/* harmony import */ var _utils_HelperFunctions_js__WEBPACK_IMPORTED_MODULE_11__ = __webpack_require__(/*! ../utils/HelperFunctions.js */ 1);
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-function WorkerScript(runningScriptObj) {
- this.name = runningScriptObj.filename;
- this.running = false;
- this.serverIp = null;
- this.code = runningScriptObj.scriptRef.code;
- this.env = new _NetscriptEnvironment_js__WEBPACK_IMPORTED_MODULE_3__["Environment"](this);
- this.env.set("args", runningScriptObj.args.slice());
- this.output = "";
- this.ramUsage = 0;
- this.scriptRef = runningScriptObj;
- this.errorMessage = "";
- this.args = runningScriptObj.args.slice();
- this.delay = null;
- this.fnWorker = null; //Workerscript for a function call
- this.checkingRam = false;
- this.loadedFns = {}; //Stores names of fns that are "loaded" by this script, thus using RAM
- this.disableLogs = {}; //Stores names of fns that should have logs disabled
-}
-
-//Returns the server on which the workerScript is running
-WorkerScript.prototype.getServer = function() {
- return _Server_js__WEBPACK_IMPORTED_MODULE_7__["AllServers"][this.serverIp];
-}
-
-//Returns the Script object for the underlying script
-WorkerScript.prototype.getScript = function() {
- let server = this.getServer();
- for (var i = 0; i < server.scripts.length; ++i) {
- if (server.scripts[i].filename === this.name) {
- return server.scripts[i];
- }
- }
- console.log("ERROR: Failed to find underlying Script object in WorkerScript.getScript(). This probably means somethings wrong");
- return null;
-}
-
-//Array containing all scripts that are running across all servers, to easily run them all
-let workerScripts = [];
-
-var NetscriptPorts = [];
-for (var i = 0; i < _Constants_js__WEBPACK_IMPORTED_MODULE_1__["CONSTANTS"].NumNetscriptPorts; ++i) {
- NetscriptPorts.push(new _NetscriptPort_js__WEBPACK_IMPORTED_MODULE_6__["NetscriptPort"]());
-}
-
-function prestigeWorkerScripts() {
- for (var i = 0; i < workerScripts.length; ++i) {
- Object(_ActiveScriptsUI_js__WEBPACK_IMPORTED_MODULE_0__["deleteActiveScriptsItem"])(workerScripts[i]);
- workerScripts[i].env.stopFlag = true;
- }
- Object(_ActiveScriptsUI_js__WEBPACK_IMPORTED_MODULE_0__["updateActiveScriptsItems"])(5000); //Force UI to update
- workerScripts.length = 0;
-}
-
-// JS script promises need a little massaging to have the same guarantees as netscript
-// promises. This does said massaging and kicks the script off. It returns a promise
-// that resolves or rejects when the corresponding worker script is done.
-function startJsScript(workerScript) {
- workerScript.running = true;
-
- // The name of the currently running netscript function, to prevent concurrent
- // calls to hack, grow, etc.
- let runningFn = null;
-
- // We need to go through the environment and wrap each function in such a way that it
- // can be called at most once at a time. This will prevent situations where multiple
- // hack promises are outstanding, for example.
- function wrap(propName, f) {
- // This function unfortunately cannot be an async function, because we don't
- // know if the original one was, and there's no way to tell.
- return function (...args) {
- // Wrap every netscript function with a check for the stop flag.
- // This prevents cases where we never stop because we are only calling
- // netscript functions that don't check this.
- // This is not a problem for legacy Netscript because it also checks the
- // stop flag in the evaluator.
- if (workerScript.env.stopFlag) {throw workerScript;}
-
- if (propName === "sleep") return f(...args); // OK for multiple simultaneous calls to sleep.
-
- const msg = "Concurrent calls to Netscript functions not allowed! " +
- "Did you forget to await hack(), grow(), or some other " +
- "promise-returning function? (Currently running: %s tried to run: %s)"
- if (runningFn) {
- workerScript.errorMessage = Object(_NetscriptEvaluator_js__WEBPACK_IMPORTED_MODULE_4__["makeRuntimeRejectMsg"])(workerScript, sprintf(msg, runningFn, propName), null)
- throw workerScript;
- }
- runningFn = propName;
- let result = f(...args);
- if (result && result.finally !== undefined) {
- return result.finally(function () {
- runningFn = null;
- });
- } else {
- runningFn = null;
- return result;
- }
- }
- };
-
- for (let prop in workerScript.env.vars) {
- if (typeof workerScript.env.vars[prop] !== "function") continue;
- workerScript.env.vars[prop] = wrap(prop, workerScript.env.vars[prop]);
- }
-
- // Note: the environment that we pass to the JS script only needs to contain the functions visible
- // to that script, which env.vars does at this point.
- return Object(_NetscriptJSEvaluator_js__WEBPACK_IMPORTED_MODULE_5__["executeJSScript"])(workerScript.getServer().scripts,
- workerScript).then(function (mainReturnValue) {
- if (mainReturnValue === undefined) return workerScript;
- return [mainReturnValue, workerScript];
- }).catch(e => {
- if (e instanceof Error) {
- workerScript.errorMessage = Object(_NetscriptEvaluator_js__WEBPACK_IMPORTED_MODULE_4__["makeRuntimeRejectMsg"])(
- workerScript, e.message + (e.stack && ("\nstack:\n" + e.stack.toString()) || ""));
- throw workerScript;
- } else if (Object(_NetscriptEvaluator_js__WEBPACK_IMPORTED_MODULE_4__["isScriptErrorMessage"])(e)) {
- workerScript.errorMessage = e;
- throw workerScript;
- }
- throw e; // Don't know what to do with it, let's rethrow.
- });
-}
-
-//Loop through workerScripts and run every script that is not currently running
-function runScriptsLoop() {
- var scriptDeleted = false;
-
- //Delete any scripts that finished or have been killed. Loop backwards bc removing items screws up indexing
- for (var i = workerScripts.length - 1; i >= 0; i--) {
- if (workerScripts[i].running == false && workerScripts[i].env.stopFlag == true) {
- scriptDeleted = true;
- //Delete script from the runningScripts array on its host serverIp
- var ip = workerScripts[i].serverIp;
- var name = workerScripts[i].name;
-
- //Free RAM
- _Server_js__WEBPACK_IMPORTED_MODULE_7__["AllServers"][ip].ramUsed -= workerScripts[i].ramUsage;
-
- //Delete script from Active Scripts
- Object(_ActiveScriptsUI_js__WEBPACK_IMPORTED_MODULE_0__["deleteActiveScriptsItem"])(workerScripts[i]);
-
- for (var j = 0; j < _Server_js__WEBPACK_IMPORTED_MODULE_7__["AllServers"][ip].runningScripts.length; j++) {
- if (_Server_js__WEBPACK_IMPORTED_MODULE_7__["AllServers"][ip].runningScripts[j].filename == name &&
- Object(_utils_HelperFunctions_js__WEBPACK_IMPORTED_MODULE_11__["compareArrays"])(_Server_js__WEBPACK_IMPORTED_MODULE_7__["AllServers"][ip].runningScripts[j].args, workerScripts[i].args)) {
- _Server_js__WEBPACK_IMPORTED_MODULE_7__["AllServers"][ip].runningScripts.splice(j, 1);
- break;
- }
- }
-
- //Delete script from workerScripts
- workerScripts.splice(i, 1);
- }
- }
- if (scriptDeleted) {Object(_ActiveScriptsUI_js__WEBPACK_IMPORTED_MODULE_0__["updateActiveScriptsItems"])();} //Force Update
-
-
- //Run any scripts that haven't been started
- for (var i = 0; i < workerScripts.length; i++) {
- //If it isn't running, start the script
- if (workerScripts[i].running == false && workerScripts[i].env.stopFlag == false) {
- let p = null; // p is the script's result promise.
- if (workerScripts[i].name.endsWith(".js") || workerScripts[i].name.endsWith(".ns")) {
- p = startJsScript(workerScripts[i]);
- } else {
- try {
- var ast = Object(_utils_acorn_js__WEBPACK_IMPORTED_MODULE_9__["parse"])(workerScripts[i].code, {sourceType:"module"});
- //console.log(ast);
- } catch (e) {
- console.log("Error parsing script: " + workerScripts[i].name);
- Object(_utils_DialogBox_js__WEBPACK_IMPORTED_MODULE_10__["dialogBoxCreate"])("Syntax ERROR in " + workerScripts[i].name + ":
" + e);
- workerScripts[i].env.stopFlag = true;
- continue;
- }
- workerScripts[i].running = true;
- p = Object(_NetscriptEvaluator_js__WEBPACK_IMPORTED_MODULE_4__["evaluate"])(ast, workerScripts[i]);
- }
-
- //Once the code finishes (either resolved or rejected, doesnt matter), set its
- //running status to false
- p.then(function(w) {
- console.log("Stopping script " + w.name + " because it finished running naturally");
- w.running = false;
- w.env.stopFlag = true;
- w.scriptRef.log("Script finished running");
- }).catch(function(w) {
- if (w instanceof Error) {
- Object(_utils_DialogBox_js__WEBPACK_IMPORTED_MODULE_10__["dialogBoxCreate"])("Script runtime unknown error. This is a bug please contact game developer");
- console.log("ERROR: Evaluating workerscript returns an Error. THIS SHOULDN'T HAPPEN: " + w.toString());
- return;
- } else if (w.constructor === Array && w.length === 2 && w[0] === "RETURNSTATEMENT") {
- //Script ends with a return statement
- console.log("Script returning with value: " + w[1]);
- //TODO maybe do something with this in the future
- return;
- } else if (w instanceof WorkerScript) {
- if (Object(_NetscriptEvaluator_js__WEBPACK_IMPORTED_MODULE_4__["isScriptErrorMessage"])(w.errorMessage)) {
- var errorTextArray = w.errorMessage.split("|");
- if (errorTextArray.length != 4) {
- console.log("ERROR: Something wrong with Error text in evaluator...");
- console.log("Error text: " + errorText);
- return;
- }
- var serverIp = errorTextArray[1];
- var scriptName = errorTextArray[2];
- var errorMsg = errorTextArray[3];
-
- Object(_utils_DialogBox_js__WEBPACK_IMPORTED_MODULE_10__["dialogBoxCreate"])("Script runtime error:
Server Ip: " + serverIp +
- "
Script name: " + scriptName +
- "
Args:" + Object(_utils_HelperFunctions_js__WEBPACK_IMPORTED_MODULE_11__["printArray"])(w.args) + "
" + errorMsg);
- w.scriptRef.log("Script crashed with runtime error");
- } else {
- w.scriptRef.log("Script killed");
- }
- w.running = false;
- w.env.stopFlag = true;
-
- } else if (Object(_NetscriptEvaluator_js__WEBPACK_IMPORTED_MODULE_4__["isScriptErrorMessage"])(w)) {
- Object(_utils_DialogBox_js__WEBPACK_IMPORTED_MODULE_10__["dialogBoxCreate"])("Script runtime unknown error. This is a bug please contact game developer");
- console.log("ERROR: Evaluating workerscript returns only error message rather than WorkerScript object. THIS SHOULDN'T HAPPEN: " + w.toString());
- return;
- } else {
- Object(_utils_DialogBox_js__WEBPACK_IMPORTED_MODULE_10__["dialogBoxCreate"])("An unknown script died for an unknown reason. This is a bug please contact game dev");
- console.log(w);
- }
- });
- }
- }
-
- setTimeout(runScriptsLoop, 6000);
-}
-
-//Queues a script to be killed by settings its stop flag to true. Then, the code will reject
-//all of its promises recursively, and when it does so it will no longer be running.
-//The runScriptsLoop() will then delete the script from worker scripts
-function killWorkerScript(runningScriptObj, serverIp) {
- for (var i = 0; i < workerScripts.length; i++) {
- if (workerScripts[i].name == runningScriptObj.filename && workerScripts[i].serverIp == serverIp &&
- Object(_utils_HelperFunctions_js__WEBPACK_IMPORTED_MODULE_11__["compareArrays"])(workerScripts[i].args, runningScriptObj.args)) {
- workerScripts[i].env.stopFlag = true;
- Object(_NetscriptEvaluator_js__WEBPACK_IMPORTED_MODULE_4__["killNetscriptDelay"])(workerScripts[i]);
- //Recursively kill all functions
- var curr = workerScripts[i];
- while (curr.fnWorker) {
- curr.fnWorker.env.stopFlag = true;
- Object(_NetscriptEvaluator_js__WEBPACK_IMPORTED_MODULE_4__["killNetscriptDelay"])(curr.fnWorker);
- curr = curr.fnWorker;
- }
- return true;
- }
- }
- return false;
-}
-
-//Queues a script to be run
-function addWorkerScript(runningScriptObj, server) {
- var filename = runningScriptObj.filename;
-
- //Update server's ram usage
- var threads = 1;
- if (runningScriptObj.threads && !isNaN(runningScriptObj.threads)) {
- threads = runningScriptObj.threads;
- } else {
- runningScriptObj.threads = 1;
- }
- var ramUsage = runningScriptObj.scriptRef.ramUsage * threads
- * Math.pow(_Constants_js__WEBPACK_IMPORTED_MODULE_1__["CONSTANTS"].MultithreadingRAMCost, threads-1);
- var ramAvailable = server.maxRam - server.ramUsed;
- if (ramUsage > ramAvailable) {
- Object(_utils_DialogBox_js__WEBPACK_IMPORTED_MODULE_10__["dialogBoxCreate"])("Not enough RAM to run script " + runningScriptObj.filename + " with args " +
- Object(_utils_HelperFunctions_js__WEBPACK_IMPORTED_MODULE_11__["printArray"])(runningScriptObj.args) + ". This likely occurred because you re-loaded " +
- "the game and the script's RAM usage increased (either because of an update to the game or " +
- "your changes to the script.)");
- return;
- }
- server.ramUsed += ramUsage;
-
- //Create the WorkerScript
- var s = new WorkerScript(runningScriptObj);
- s.serverIp = server.ip;
- s.ramUsage = ramUsage;
-
- //Add the WorkerScript to the Active Scripts list
- Object(_ActiveScriptsUI_js__WEBPACK_IMPORTED_MODULE_0__["addActiveScriptsItem"])(s);
-
- //Add the WorkerScript
- workerScripts.push(s);
- return;
-}
-
-//Updates the online running time stat of all running scripts
-function updateOnlineScriptTimes(numCycles = 1) {
- var time = (numCycles * _engine_js__WEBPACK_IMPORTED_MODULE_2__["Engine"]._idleSpeed) / 1000; //seconds
- for (var i = 0; i < workerScripts.length; ++i) {
- workerScripts[i].scriptRef.onlineRunningTime += time;
- }
-}
-
-
-
-
-/***/ }),
-/* 22 */
-/*!****************************!*\
- !*** ./src/StockMarket.js ***!
- \****************************/
-/***/ (function(module, __webpack_exports__, __webpack_require__) {
-
-"use strict";
-__webpack_require__.r(__webpack_exports__);
-/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "StockMarket", function() { return StockMarket; });
-/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "StockSymbols", function() { return StockSymbols; });
-/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "SymbolToStockMap", function() { return SymbolToStockMap; });
-/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "initStockSymbols", function() { return initStockSymbols; });
-/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "initStockMarket", function() { return initStockMarket; });
-/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "initSymbolToStockMap", function() { return initSymbolToStockMap; });
-/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "stockMarketCycle", function() { return stockMarketCycle; });
-/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "buyStock", function() { return buyStock; });
-/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "sellStock", function() { return sellStock; });
-/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "shortStock", function() { return shortStock; });
-/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "sellShort", function() { return sellShort; });
-/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "updateStockPrices", function() { return updateStockPrices; });
-/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "displayStockMarketContent", function() { return displayStockMarketContent; });
-/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "updateStockTicker", function() { return updateStockTicker; });
-/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "updateStockPlayerPosition", function() { return updateStockPlayerPosition; });
-/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "loadStockMarket", function() { return loadStockMarket; });
-/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "setStockMarketContentCreated", function() { return setStockMarketContentCreated; });
-/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "placeOrder", function() { return placeOrder; });
-/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "cancelOrder", function() { return cancelOrder; });
-/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "Order", function() { return Order; });
-/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "OrderTypes", function() { return OrderTypes; });
-/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "PositionTypes", function() { return PositionTypes; });
-/* harmony import */ var _Constants_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./Constants.js */ 3);
-/* harmony import */ var _engine_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./engine.js */ 5);
-/* harmony import */ var _Location_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./Location.js */ 4);
-/* harmony import */ var _NetscriptFunctions_js__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./NetscriptFunctions.js */ 31);
-/* harmony import */ var _NetscriptWorker_js__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ./NetscriptWorker.js */ 21);
-/* harmony import */ var _Player_js__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ./Player.js */ 0);
-/* harmony import */ var _utils_DialogBox_js__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! ../utils/DialogBox.js */ 7);
-/* harmony import */ var _utils_HelperFunctions_js__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! ../utils/HelperFunctions.js */ 1);
-/* harmony import */ var _utils_JSONReviver_js__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! ../utils/JSONReviver.js */ 8);
-/* harmony import */ var _utils_numeral_min_js__WEBPACK_IMPORTED_MODULE_9__ = __webpack_require__(/*! ../utils/numeral.min.js */ 13);
-/* harmony import */ var _utils_numeral_min_js__WEBPACK_IMPORTED_MODULE_9___default = /*#__PURE__*/__webpack_require__.n(_utils_numeral_min_js__WEBPACK_IMPORTED_MODULE_9__);
-/* harmony import */ var _utils_StringHelperFunctions_js__WEBPACK_IMPORTED_MODULE_10__ = __webpack_require__(/*! ../utils/StringHelperFunctions.js */ 2);
-/* harmony import */ var _utils_YesNoBox_js__WEBPACK_IMPORTED_MODULE_11__ = __webpack_require__(/*! ../utils/YesNoBox.js */ 12);
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-let StockPriceCap = 1e9; //Put a limit on how high a price can go
-
-function Stock(name, symbol, mv, b, otlkMag, initPrice=10000) {
- this.symbol = symbol;
- this.name = name;
- this.price = initPrice;
-
- this.playerShares = 0;
- this.playerAvgPx = 0;
- this.playerShortShares = 0;
- this.playerAvgShortPx = 0;
- this.mv = mv;
- this.b = b;
- this.otlkMag = otlkMag;
-
- this.posTxtEl = null;
-}
-
-Stock.prototype.toJSON = function() {
- return Object(_utils_JSONReviver_js__WEBPACK_IMPORTED_MODULE_8__["Generic_toJSON"])("Stock", this);
-}
-
-Stock.fromJSON = function(value) {
- return Object(_utils_JSONReviver_js__WEBPACK_IMPORTED_MODULE_8__["Generic_fromJSON"])(Stock, value.data);
-}
-
-_utils_JSONReviver_js__WEBPACK_IMPORTED_MODULE_8__["Reviver"].constructors.Stock = Stock;
-
-var OrderTypes = {
- LimitBuy: "Limit Buy Order",
- LimitSell: "Limit Sell Order",
- StopBuy: "Stop Buy Order",
- StopSell: "Stop Sell Order"
-}
-
-var PositionTypes = {
- Long: "L",
- Short: "S"
-}
-
-function placeOrder(stock, shares, price, type, position, workerScript=null) {
- var tixApi = (workerScript instanceof _NetscriptWorker_js__WEBPACK_IMPORTED_MODULE_4__["WorkerScript"]);
- var order = new Order(stock, shares, price, type, position);
- if (isNaN(shares) || isNaN(price)) {
- if (tixApi) {
- workerScript.scriptRef.log("ERROR: Invalid numeric value provided for either 'shares' or 'price' argument");
- } else {
- Object(_utils_DialogBox_js__WEBPACK_IMPORTED_MODULE_6__["dialogBoxCreate"])("ERROR: Invalid numeric value provided for either 'shares' or 'price' argument");
- }
- return false;
- }
- if (StockMarket["Orders"] == null) {
- var orders = {};
- for (var name in StockMarket) {
- if (StockMarket.hasOwnProperty(name)) {
- var stock = StockMarket[name];
- if (!(stock instanceof Stock)) {continue;}
- orders[stock.symbol] = [];
- }
- }
- StockMarket["Orders"] = orders;
- }
- StockMarket["Orders"][stock.symbol].push(order);
- //Process to see if it should be executed immediately
- processOrders(order.stock, order.type, order.pos);
- updateStockOrderList(order.stock);
- return true;
-}
-
-//Returns true if successfully cancels an order, false otherwise
-function cancelOrder(params, workerScript=null) {
- var tixApi = (workerScript instanceof _NetscriptWorker_js__WEBPACK_IMPORTED_MODULE_4__["WorkerScript"]);
- if (StockMarket["Orders"] == null) {return false;}
- if (params.order && params.order instanceof Order) {
- var order = params.order;
- //An 'Order' object is passed in
- var stockOrders = StockMarket["Orders"][order.stock.symbol];
- for (var i = 0; i < stockOrders.length; ++i) {
- if (order == stockOrders[i]) {
- stockOrders.splice(i, 1);
- updateStockOrderList(order.stock);
- return true;
- }
- }
- return false;
- } else if (params.stock && params.shares && params.price && params.type &&
- params.pos && params.stock instanceof Stock) {
- //Order properties are passed in. Need to look for the order
- var stockOrders = StockMarket["Orders"][params.stock.symbol];
- var orderTxt = params.stock.symbol + " - " + params.shares + " @ " +
- _utils_numeral_min_js__WEBPACK_IMPORTED_MODULE_9___default()(params.price).format('$0.000a');
- for (var i = 0; i < stockOrders.length; ++i) {
- var order = stockOrders[i];
- if (params.shares === order.shares &&
- params.price === order.price &&
- params.type === order.type &&
- params.pos === order.pos) {
- stockOrders.splice(i, 1);
- updateStockOrderList(order.stock);
- if (tixApi) {
- workerScript.scriptRef.log("Successfully cancelled order: " + orderTxt);
- }
- return true;
- }
- }
- if (tixApi) {
- workerScript.scriptRef.log("Failed to cancel order: " + orderTxt);
- }
- return false;
- }
- return false;
-}
-
-function executeOrder(order) {
- var stock = order.stock;
- var orderBook = StockMarket["Orders"];
- var stockOrders = orderBook[stock.symbol];
- var res = true;
- console.log("Executing the following order:");
- console.log(order);
- switch (order.type) {
- case OrderTypes.LimitBuy:
- case OrderTypes.StopBuy:
- if (order.pos === PositionTypes.Long) {
- res = buyStock(order.stock, order.shares) && res;
- } else if (order.pos === PositionTypes.Short) {
- res = shortStock(order.stock, order.shares) && res;
- }
- break;
- case OrderTypes.LimitSell:
- case OrderTypes.StopSell:
- if (order.pos === PositionTypes.Long) {
- res = sellStock(order.stock, order.shares) && res;
- } else if (order.pos === PositionTypes.Short) {
- res = sellShort(order.stock, order.shares) && res;
- }
- break;
- }
- if (res) {
- //Remove order from order book
- for (var i = 0; i < stockOrders.length; ++i) {
- if (order == stockOrders[i]) {
- stockOrders.splice(i, 1);
- updateStockOrderList(order.stock);
- return;
- }
- }
- console.log("ERROR: Could not find the following Order in Order Book: ");
- console.log(order);
- } else {
- console.log("Order failed to execute");
- }
-}
-
-function Order(stock, shares, price, type, position) {
- this.stock = stock;
- this.shares = shares;
- this.price = price;
- this.type = type;
- this.pos = position;
-}
-
-Order.prototype.toJSON = function() {
- return Object(_utils_JSONReviver_js__WEBPACK_IMPORTED_MODULE_8__["Generic_toJSON"])("Order", this);
-}
-
-Order.fromJSON = function(value) {
- return Object(_utils_JSONReviver_js__WEBPACK_IMPORTED_MODULE_8__["Generic_fromJSON"])(Order, value.data);
-}
-
-_utils_JSONReviver_js__WEBPACK_IMPORTED_MODULE_8__["Reviver"].constructors.Order = Order;
-
-let StockMarket = {} //Full name to stock object
-let StockSymbols = {} //Full name to symbol
-let SymbolToStockMap = {}; //Symbol to Stock object
-
-function loadStockMarket(saveString) {
- if (saveString === "") {
- StockMarket = {};
- } else {
- StockMarket = JSON.parse(saveString, _utils_JSONReviver_js__WEBPACK_IMPORTED_MODULE_8__["Reviver"]);
- }
-}
-
-function initStockSymbols() {
- //Stocks for companies at which you can work
- StockSymbols[_Location_js__WEBPACK_IMPORTED_MODULE_2__["Locations"].AevumECorp] = "ECP";
- StockSymbols[_Location_js__WEBPACK_IMPORTED_MODULE_2__["Locations"].Sector12MegaCorp] = "MGCP";
- StockSymbols[_Location_js__WEBPACK_IMPORTED_MODULE_2__["Locations"].Sector12BladeIndustries] = "BLD";
- StockSymbols[_Location_js__WEBPACK_IMPORTED_MODULE_2__["Locations"].AevumClarkeIncorporated] = "CLRK";
- StockSymbols[_Location_js__WEBPACK_IMPORTED_MODULE_2__["Locations"].VolhavenOmniTekIncorporated] = "OMTK";
- StockSymbols[_Location_js__WEBPACK_IMPORTED_MODULE_2__["Locations"].Sector12FourSigma] = "FSIG";
- StockSymbols[_Location_js__WEBPACK_IMPORTED_MODULE_2__["Locations"].ChongqingKuaiGongInternational] = "KGI";
- StockSymbols[_Location_js__WEBPACK_IMPORTED_MODULE_2__["Locations"].AevumFulcrumTechnologies] = "FLCM";
- StockSymbols[_Location_js__WEBPACK_IMPORTED_MODULE_2__["Locations"].IshimaStormTechnologies] = "STM";
- StockSymbols[_Location_js__WEBPACK_IMPORTED_MODULE_2__["Locations"].NewTokyoDefComm] = "DCOMM";
- StockSymbols[_Location_js__WEBPACK_IMPORTED_MODULE_2__["Locations"].VolhavenHeliosLabs] = "HLS";
- StockSymbols[_Location_js__WEBPACK_IMPORTED_MODULE_2__["Locations"].NewTokyoVitaLife] = "VITA";
- StockSymbols[_Location_js__WEBPACK_IMPORTED_MODULE_2__["Locations"].Sector12IcarusMicrosystems] = "ICRS";
- StockSymbols[_Location_js__WEBPACK_IMPORTED_MODULE_2__["Locations"].Sector12UniversalEnergy] = "UNV";
- StockSymbols[_Location_js__WEBPACK_IMPORTED_MODULE_2__["Locations"].AevumAeroCorp] = "AERO";
- StockSymbols[_Location_js__WEBPACK_IMPORTED_MODULE_2__["Locations"].VolhavenOmniaCybersystems] = "OMN";
- StockSymbols[_Location_js__WEBPACK_IMPORTED_MODULE_2__["Locations"].ChongqingSolarisSpaceSystems] = "SLRS";
- StockSymbols[_Location_js__WEBPACK_IMPORTED_MODULE_2__["Locations"].NewTokyoGlobalPharmaceuticals] = "GPH";
- StockSymbols[_Location_js__WEBPACK_IMPORTED_MODULE_2__["Locations"].IshimaNovaMedical] = "NVMD";
- StockSymbols[_Location_js__WEBPACK_IMPORTED_MODULE_2__["Locations"].AevumWatchdogSecurity] = "WDS";
- StockSymbols[_Location_js__WEBPACK_IMPORTED_MODULE_2__["Locations"].VolhavenLexoCorp] = "LXO";
- StockSymbols[_Location_js__WEBPACK_IMPORTED_MODULE_2__["Locations"].AevumRhoConstruction] = "RHOC";
- StockSymbols[_Location_js__WEBPACK_IMPORTED_MODULE_2__["Locations"].Sector12AlphaEnterprises] = "APHE";
- StockSymbols[_Location_js__WEBPACK_IMPORTED_MODULE_2__["Locations"].VolhavenSysCoreSecurities] = "SYSC";
- StockSymbols[_Location_js__WEBPACK_IMPORTED_MODULE_2__["Locations"].VolhavenCompuTek] = "CTK";
- StockSymbols[_Location_js__WEBPACK_IMPORTED_MODULE_2__["Locations"].AevumNetLinkTechnologies] = "NTLK";
- StockSymbols[_Location_js__WEBPACK_IMPORTED_MODULE_2__["Locations"].IshimaOmegaSoftware] = "OMGA";
- StockSymbols[_Location_js__WEBPACK_IMPORTED_MODULE_2__["Locations"].Sector12FoodNStuff] = "FNS";
-
- //Stocks for other companies
- StockSymbols["Sigma Cosmetics"] = "SGC";
- StockSymbols["Joes Guns"] = "JGN";
- StockSymbols["Catalyst Ventures"] = "CTYS";
- StockSymbols["Microdyne Technologies"] = "MDYN";
- StockSymbols["Titan Laboratories"] = "TITN";
-}
-
-function initStockMarket() {
- for (var stk in StockMarket) {
- if (StockMarket.hasOwnProperty(stk)) {
- delete StockMarket[stk];
- }
- }
-
- var ecorp = _Location_js__WEBPACK_IMPORTED_MODULE_2__["Locations"].AevumECorp;
- var ecorpStk = new Stock(ecorp, StockSymbols[ecorp], 0.45, true, 19, Object(_utils_HelperFunctions_js__WEBPACK_IMPORTED_MODULE_7__["getRandomInt"])(20000, 25000));
- StockMarket[ecorp] = ecorpStk;
-
- var megacorp = _Location_js__WEBPACK_IMPORTED_MODULE_2__["Locations"].Sector12MegaCorp;
- var megacorpStk = new Stock(megacorp, StockSymbols[megacorp], 0.45, true, 19, Object(_utils_HelperFunctions_js__WEBPACK_IMPORTED_MODULE_7__["getRandomInt"])(25000, 33000));
- StockMarket[megacorp] = megacorpStk;
-
- var blade = _Location_js__WEBPACK_IMPORTED_MODULE_2__["Locations"].Sector12BladeIndustries;
- var bladeStk = new Stock(blade, StockSymbols[blade], 0.75, true, 13, Object(_utils_HelperFunctions_js__WEBPACK_IMPORTED_MODULE_7__["getRandomInt"])(15000, 22000));
- StockMarket[blade] = bladeStk;
-
- var clarke = _Location_js__WEBPACK_IMPORTED_MODULE_2__["Locations"].AevumClarkeIncorporated;
- var clarkeStk = new Stock(clarke, StockSymbols[clarke], 0.7, true, 12, Object(_utils_HelperFunctions_js__WEBPACK_IMPORTED_MODULE_7__["getRandomInt"])(15000, 20000));
- StockMarket[clarke] = clarkeStk;
-
- var omnitek = _Location_js__WEBPACK_IMPORTED_MODULE_2__["Locations"].VolhavenOmniTekIncorporated;
- var omnitekStk = new Stock(omnitek, StockSymbols[omnitek], 0.65, true, 12, Object(_utils_HelperFunctions_js__WEBPACK_IMPORTED_MODULE_7__["getRandomInt"])(35000, 40000));
- StockMarket[omnitek] = omnitekStk;
-
- var foursigma = _Location_js__WEBPACK_IMPORTED_MODULE_2__["Locations"].Sector12FourSigma;
- var foursigmaStk = new Stock(foursigma, StockSymbols[foursigma], 1.05, true, 17, Object(_utils_HelperFunctions_js__WEBPACK_IMPORTED_MODULE_7__["getRandomInt"])(60000, 70000));
- StockMarket[foursigma] = foursigmaStk;
-
- var kuaigong = _Location_js__WEBPACK_IMPORTED_MODULE_2__["Locations"].ChongqingKuaiGongInternational;
- var kuaigongStk = new Stock(kuaigong, StockSymbols[kuaigong], 0.8, true, 10, Object(_utils_HelperFunctions_js__WEBPACK_IMPORTED_MODULE_7__["getRandomInt"])(20000, 24000));
- StockMarket[kuaigong] = kuaigongStk;
-
- var fulcrum = _Location_js__WEBPACK_IMPORTED_MODULE_2__["Locations"].AevumFulcrumTechnologies;
- var fulcrumStk = new Stock(fulcrum, StockSymbols[fulcrum], 1.25, true, 16, Object(_utils_HelperFunctions_js__WEBPACK_IMPORTED_MODULE_7__["getRandomInt"])(30000, 35000));
- StockMarket[fulcrum] = fulcrumStk;
-
- var storm = _Location_js__WEBPACK_IMPORTED_MODULE_2__["Locations"].IshimaStormTechnologies;
- var stormStk = new Stock(storm, StockSymbols[storm], 0.85, true, 7, Object(_utils_HelperFunctions_js__WEBPACK_IMPORTED_MODULE_7__["getRandomInt"])(21000, 24000));
- StockMarket[storm] = stormStk;
-
- var defcomm = _Location_js__WEBPACK_IMPORTED_MODULE_2__["Locations"].NewTokyoDefComm;
- var defcommStk = new Stock(defcomm, StockSymbols[defcomm], 0.65, true, 10, Object(_utils_HelperFunctions_js__WEBPACK_IMPORTED_MODULE_7__["getRandomInt"])(10000, 15000));
- StockMarket[defcomm] = defcommStk;
-
- var helios = _Location_js__WEBPACK_IMPORTED_MODULE_2__["Locations"].VolhavenHeliosLabs;
- var heliosStk = new Stock(helios, StockSymbols[helios], 0.6, true, 9, Object(_utils_HelperFunctions_js__WEBPACK_IMPORTED_MODULE_7__["getRandomInt"])(12000, 16000));
- StockMarket[helios] = heliosStk;
-
- var vitalife = _Location_js__WEBPACK_IMPORTED_MODULE_2__["Locations"].NewTokyoVitaLife;
- var vitalifeStk = new Stock(vitalife, StockSymbols[vitalife], 0.75, true, 7, Object(_utils_HelperFunctions_js__WEBPACK_IMPORTED_MODULE_7__["getRandomInt"])(10000, 12000));
- StockMarket[vitalife] = vitalifeStk;
-
- var icarus = _Location_js__WEBPACK_IMPORTED_MODULE_2__["Locations"].Sector12IcarusMicrosystems;
- var icarusStk = new Stock(icarus, StockSymbols[icarus], 0.65, true, 7.5, Object(_utils_HelperFunctions_js__WEBPACK_IMPORTED_MODULE_7__["getRandomInt"])(16000, 20000));
- StockMarket[icarus] = icarusStk;
-
- var universalenergy = _Location_js__WEBPACK_IMPORTED_MODULE_2__["Locations"].Sector12UniversalEnergy;
- var universalenergyStk = new Stock(universalenergy, StockSymbols[universalenergy], 0.55, true, 10, Object(_utils_HelperFunctions_js__WEBPACK_IMPORTED_MODULE_7__["getRandomInt"])(20000, 25000));
- StockMarket[universalenergy] = universalenergyStk;
-
- var aerocorp = _Location_js__WEBPACK_IMPORTED_MODULE_2__["Locations"].AevumAeroCorp;
- var aerocorpStk = new Stock(aerocorp, StockSymbols[aerocorp], 0.6, true, 6, Object(_utils_HelperFunctions_js__WEBPACK_IMPORTED_MODULE_7__["getRandomInt"])(10000, 15000));
- StockMarket[aerocorp] = aerocorpStk;
-
- var omnia = _Location_js__WEBPACK_IMPORTED_MODULE_2__["Locations"].VolhavenOmniaCybersystems;
- var omniaStk = new Stock(omnia, StockSymbols[omnia], 0.7, true, 4.5, Object(_utils_HelperFunctions_js__WEBPACK_IMPORTED_MODULE_7__["getRandomInt"])(9000, 12000));
- StockMarket[omnia] = omniaStk;
-
- var solaris = _Location_js__WEBPACK_IMPORTED_MODULE_2__["Locations"].ChongqingSolarisSpaceSystems;
- var solarisStk = new Stock(solaris, StockSymbols[solaris], 0.75, true, 8.5, Object(_utils_HelperFunctions_js__WEBPACK_IMPORTED_MODULE_7__["getRandomInt"])(18000, 24000));
- StockMarket[solaris] = solarisStk;
-
- var globalpharm = _Location_js__WEBPACK_IMPORTED_MODULE_2__["Locations"].NewTokyoGlobalPharmaceuticals;
- var globalpharmStk = new Stock(globalpharm, StockSymbols[globalpharm], 0.6, true, 10.5, Object(_utils_HelperFunctions_js__WEBPACK_IMPORTED_MODULE_7__["getRandomInt"])(18000, 24000));
- StockMarket[globalpharm] = globalpharmStk;
-
- var nova = _Location_js__WEBPACK_IMPORTED_MODULE_2__["Locations"].IshimaNovaMedical;
- var novaStk = new Stock(nova, StockSymbols[nova], 0.75, true, 5, Object(_utils_HelperFunctions_js__WEBPACK_IMPORTED_MODULE_7__["getRandomInt"])(18000, 24000));
- StockMarket[nova] = novaStk;
-
- var watchdog = _Location_js__WEBPACK_IMPORTED_MODULE_2__["Locations"].AevumWatchdogSecurity;
- var watchdogStk = new Stock(watchdog, StockSymbols[watchdog], 2.5, true, 1.5, Object(_utils_HelperFunctions_js__WEBPACK_IMPORTED_MODULE_7__["getRandomInt"])(5000, 7500));
- StockMarket[watchdog] = watchdogStk;
-
- var lexocorp = _Location_js__WEBPACK_IMPORTED_MODULE_2__["Locations"].VolhavenLexoCorp;
- var lexocorpStk = new Stock(lexocorp, StockSymbols[lexocorp], 1.25, true, 6, Object(_utils_HelperFunctions_js__WEBPACK_IMPORTED_MODULE_7__["getRandomInt"])(5000, 7500));
- StockMarket[lexocorp] = lexocorpStk;
-
- var rho = _Location_js__WEBPACK_IMPORTED_MODULE_2__["Locations"].AevumRhoConstruction;
- var rhoStk = new Stock(rho, StockSymbols[rho], 0.6, true, 1, Object(_utils_HelperFunctions_js__WEBPACK_IMPORTED_MODULE_7__["getRandomInt"])(3000, 6000));
- StockMarket[rho] = rhoStk;
-
- var alpha = _Location_js__WEBPACK_IMPORTED_MODULE_2__["Locations"].Sector12AlphaEnterprises;
- var alphaStk = new Stock(alpha, StockSymbols[alpha], 1.9, true, 10, Object(_utils_HelperFunctions_js__WEBPACK_IMPORTED_MODULE_7__["getRandomInt"])(5000, 7500));
- StockMarket[alpha] = alphaStk;
-
- var syscore = _Location_js__WEBPACK_IMPORTED_MODULE_2__["Locations"].VolhavenSysCoreSecurities;
- var syscoreStk = new Stock(syscore, StockSymbols[syscore], 1.6, true, 3, Object(_utils_HelperFunctions_js__WEBPACK_IMPORTED_MODULE_7__["getRandomInt"])(4000, 7000))
- StockMarket[syscore] = syscoreStk;
-
- var computek = _Location_js__WEBPACK_IMPORTED_MODULE_2__["Locations"].VolhavenCompuTek;
- var computekStk = new Stock(computek, StockSymbols[computek], 0.9, true, 4, Object(_utils_HelperFunctions_js__WEBPACK_IMPORTED_MODULE_7__["getRandomInt"])(2000, 5000));
- StockMarket[computek] = computekStk;
-
- var netlink = _Location_js__WEBPACK_IMPORTED_MODULE_2__["Locations"].AevumNetLinkTechnologies;
- var netlinkStk = new Stock(netlink, StockSymbols[netlink], 4.2, true, 1, Object(_utils_HelperFunctions_js__WEBPACK_IMPORTED_MODULE_7__["getRandomInt"])(2000, 4000));
- StockMarket[netlink] = netlinkStk;
-
- var omega = _Location_js__WEBPACK_IMPORTED_MODULE_2__["Locations"].IshimaOmegaSoftware;
- var omegaStk = new Stock(omega, StockSymbols[omega], 1, true, 0.5, Object(_utils_HelperFunctions_js__WEBPACK_IMPORTED_MODULE_7__["getRandomInt"])(3000, 6000));
- StockMarket[omega] = omegaStk;
-
- var fns = _Location_js__WEBPACK_IMPORTED_MODULE_2__["Locations"].Sector12FoodNStuff;
- var fnsStk = new Stock(fns, StockSymbols[fns], 0.75, false, 1, Object(_utils_HelperFunctions_js__WEBPACK_IMPORTED_MODULE_7__["getRandomInt"])(1000, 4000));
- StockMarket[fns] = fnsStk;
-
- var sigmacosm = "Sigma Cosmetics";
- var sigmacosmStk = new Stock(sigmacosm, StockSymbols[sigmacosm], 2.8, true, 0, Object(_utils_HelperFunctions_js__WEBPACK_IMPORTED_MODULE_7__["getRandomInt"])(2000, 3000));
- StockMarket[sigmacosm] = sigmacosmStk;
-
- var joesguns = "Joes Guns";
- var joesgunsStk = new Stock(joesguns, StockSymbols[joesguns], 3.8, true, 1, Object(_utils_HelperFunctions_js__WEBPACK_IMPORTED_MODULE_7__["getRandomInt"])(500, 1000));
- StockMarket[joesguns] = joesgunsStk;
-
- var catalyst = "Catalyst Ventures";
- var catalystStk = new Stock(catalyst, StockSymbols[catalyst], 1.45, true, 13.5, Object(_utils_HelperFunctions_js__WEBPACK_IMPORTED_MODULE_7__["getRandomInt"])(500, 1000));
- StockMarket[catalyst] = catalystStk;
-
- var microdyne = "Microdyne Technologies";
- var microdyneStk = new Stock(microdyne, StockSymbols[microdyne], 0.75, true, 8, Object(_utils_HelperFunctions_js__WEBPACK_IMPORTED_MODULE_7__["getRandomInt"])(20000, 25000));
- StockMarket[microdyne] = microdyneStk;
-
- var titanlabs = "Titan Laboratories";
- var titanlabsStk = new Stock(titanlabs, StockSymbols[titanlabs], 0.6, true, 11, Object(_utils_HelperFunctions_js__WEBPACK_IMPORTED_MODULE_7__["getRandomInt"])(15000, 20000));
- StockMarket[titanlabs] = titanlabsStk;
-
- var orders = {};
- for (var name in StockMarket) {
- if (StockMarket.hasOwnProperty(name)) {
- var stock = StockMarket[name];
- if (!(stock instanceof Stock)) {continue;}
- orders[stock.symbol] = [];
- }
- }
- StockMarket["Orders"] = orders;
-}
-
-function initSymbolToStockMap() {
- for (var name in StockSymbols) {
- if (StockSymbols.hasOwnProperty(name)) {
- var stock = StockMarket[name];
- if (stock == null) {
- console.log("ERROR finding stock");
- continue;
- }
- var symbol = StockSymbols[name];
- SymbolToStockMap[symbol] = stock;
- }
- }
-}
-
-function stockMarketCycle() {
- for (var name in StockMarket) {
- if (StockMarket.hasOwnProperty(name)) {
- var stock = StockMarket[name];
- var thresh = 0.6;
- if (stock.b) {thresh = 0.4;}
- if (Math.random() < thresh) {
- stock.b = !stock.b;
- }
- }
- }
-}
-
-//Returns true if successful, false otherwise
-function buyStock(stock, shares) {
- if (stock == null || shares < 0 || isNaN(shares)) {
- Object(_utils_DialogBox_js__WEBPACK_IMPORTED_MODULE_6__["dialogBoxCreate"])("Failed to buy stock. This may be a bug, contact developer");
- return false;
- }
- shares = Math.round(shares);
- if (shares == 0) {return false;}
-
- var totalPrice = stock.price * shares;
- if (_Player_js__WEBPACK_IMPORTED_MODULE_5__["Player"].money.lt(totalPrice + _Constants_js__WEBPACK_IMPORTED_MODULE_0__["CONSTANTS"].StockMarketCommission)) {
- Object(_utils_DialogBox_js__WEBPACK_IMPORTED_MODULE_6__["dialogBoxCreate"])("You do not have enough money to purchase this. You need $" +
- Object(_utils_StringHelperFunctions_js__WEBPACK_IMPORTED_MODULE_10__["formatNumber"])(totalPrice + _Constants_js__WEBPACK_IMPORTED_MODULE_0__["CONSTANTS"].StockMarketCommission, 2).toString() + ".");
- return false;
- }
-
- var origTotal = stock.playerShares * stock.playerAvgPx;
- _Player_js__WEBPACK_IMPORTED_MODULE_5__["Player"].loseMoney(totalPrice + _Constants_js__WEBPACK_IMPORTED_MODULE_0__["CONSTANTS"].StockMarketCommission);
- var newTotal = origTotal + totalPrice;
- stock.playerShares += shares;
- stock.playerAvgPx = newTotal / stock.playerShares;
- updateStockPlayerPosition(stock);
- Object(_utils_DialogBox_js__WEBPACK_IMPORTED_MODULE_6__["dialogBoxCreate"])("Bought " + Object(_utils_StringHelperFunctions_js__WEBPACK_IMPORTED_MODULE_10__["formatNumber"])(shares, 0) + " shares of " + stock.symbol + " at $" +
- Object(_utils_StringHelperFunctions_js__WEBPACK_IMPORTED_MODULE_10__["formatNumber"])(stock.price, 2) + " per share. You also paid $" +
- Object(_utils_StringHelperFunctions_js__WEBPACK_IMPORTED_MODULE_10__["formatNumber"])(_Constants_js__WEBPACK_IMPORTED_MODULE_0__["CONSTANTS"].StockMarketCommission, 2) + " in commission fees.");
- return true;
-}
-
-//Returns true if successful and false otherwise
-function sellStock(stock, shares) {
- if (shares == 0) {return false;}
- if (stock == null || shares < 0 || isNaN(shares)) {
- Object(_utils_DialogBox_js__WEBPACK_IMPORTED_MODULE_6__["dialogBoxCreate"])("Failed to sell stock. This may be a bug, contact developer");
- return false;
- }
- shares = Math.round(shares);
- if (shares > stock.playerShares) {shares = stock.playerShares;}
- if (shares === 0) {return false;}
- var gains = stock.price * shares - _Constants_js__WEBPACK_IMPORTED_MODULE_0__["CONSTANTS"].StockMarketCommission;
- _Player_js__WEBPACK_IMPORTED_MODULE_5__["Player"].gainMoney(gains);
- stock.playerShares -= shares;
- if (stock.playerShares == 0) {
- stock.playerAvgPx = 0;
- }
- updateStockPlayerPosition(stock);
- Object(_utils_DialogBox_js__WEBPACK_IMPORTED_MODULE_6__["dialogBoxCreate"])("Sold " + Object(_utils_StringHelperFunctions_js__WEBPACK_IMPORTED_MODULE_10__["formatNumber"])(shares, 0) + " shares of " + stock.symbol + " at $" +
- Object(_utils_StringHelperFunctions_js__WEBPACK_IMPORTED_MODULE_10__["formatNumber"])(stock.price, 2) + " per share. After commissions, you gained " +
- "a total of $" + Object(_utils_StringHelperFunctions_js__WEBPACK_IMPORTED_MODULE_10__["formatNumber"])(gains, 2));
- return true;
-}
-
-//Returns true if successful and false otherwise
-function shortStock(stock, shares, workerScript=null) {
- var tixApi = (workerScript instanceof _NetscriptWorker_js__WEBPACK_IMPORTED_MODULE_4__["WorkerScript"]);
- if (stock == null || isNaN(shares) || shares < 0) {
- if (tixApi) {
- workerScript.scriptRef.log("ERROR: shortStock() failed because of invalid arguments.");
- } else {
- Object(_utils_DialogBox_js__WEBPACK_IMPORTED_MODULE_6__["dialogBoxCreate"])("Failed to initiate a short position in a stock. This is probably " +
- "due to an invalid quantity. Otherwise, this may be a bug, so contact developer");
- }
- return false;
- }
- shares = Math.round(shares);
- if (shares === 0) {return false;}
-
- var totalPrice = stock.price * shares;
- if (_Player_js__WEBPACK_IMPORTED_MODULE_5__["Player"].money.lt(totalPrice + _Constants_js__WEBPACK_IMPORTED_MODULE_0__["CONSTANTS"].StockMarketCommission)) {
- if (tixApi) {
- workerScript.scriptRef.log("ERROR: shortStock() failed because you do not have " +
- "money to purchase this short position. You need " +
- _utils_numeral_min_js__WEBPACK_IMPORTED_MODULE_9___default()(totalPrice + _Constants_js__WEBPACK_IMPORTED_MODULE_0__["CONSTANTS"].StockMarketCommission).format('($0.000a)'));
- } else {
- Object(_utils_DialogBox_js__WEBPACK_IMPORTED_MODULE_6__["dialogBoxCreate"])("You do not have enough money to purchase this short position. You need $" +
- Object(_utils_StringHelperFunctions_js__WEBPACK_IMPORTED_MODULE_10__["formatNumber"])(totalPrice + _Constants_js__WEBPACK_IMPORTED_MODULE_0__["CONSTANTS"].StockMarketCommission, 2) + ".");
- }
-
- return false;
- }
-
- var origTotal = stock.playerShortShares * stock.playerAvgShortPx;
- _Player_js__WEBPACK_IMPORTED_MODULE_5__["Player"].loseMoney(totalPrice + _Constants_js__WEBPACK_IMPORTED_MODULE_0__["CONSTANTS"].StockMarketCommission);
- var newTotal = origTotal + totalPrice;
- stock.playerShortShares += shares;
- stock.playerAvgShortPx = newTotal / stock.playerShortShares;
- updateStockPlayerPosition(stock);
- if (tixApi) {
- if (workerScript.disableLogs.ALL == null && workerScript.disableLogs.shortStock == null) {
- workerScript.scriptRef.log("Bought a short position of " + Object(_utils_StringHelperFunctions_js__WEBPACK_IMPORTED_MODULE_10__["formatNumber"])(shares, 0) + " shares of " + stock.symbol + " at " +
- _utils_numeral_min_js__WEBPACK_IMPORTED_MODULE_9___default()(stock.price).format('($0.000a)') + " per share. Paid " +
- _utils_numeral_min_js__WEBPACK_IMPORTED_MODULE_9___default()(_Constants_js__WEBPACK_IMPORTED_MODULE_0__["CONSTANTS"].StockMarketCommission).format('($0.000a)') + " in commission fees.");
- }
- } else {
- Object(_utils_DialogBox_js__WEBPACK_IMPORTED_MODULE_6__["dialogBoxCreate"])("Bought a short position of " + Object(_utils_StringHelperFunctions_js__WEBPACK_IMPORTED_MODULE_10__["formatNumber"])(shares, 0) + " shares of " + stock.symbol + " at $" +
- Object(_utils_StringHelperFunctions_js__WEBPACK_IMPORTED_MODULE_10__["formatNumber"])(stock.price, 2) + " per share. You also paid $" +
- Object(_utils_StringHelperFunctions_js__WEBPACK_IMPORTED_MODULE_10__["formatNumber"])(_Constants_js__WEBPACK_IMPORTED_MODULE_0__["CONSTANTS"].StockMarketCommission, 2) + " in commission fees.");
- }
- return true;
-}
-
-//Returns true if successful and false otherwise
-function sellShort(stock, shares, workerScript=null) {
- var tixApi = (workerScript instanceof _NetscriptWorker_js__WEBPACK_IMPORTED_MODULE_4__["WorkerScript"]);
- if (stock == null || isNaN(shares) || shares < 0) {
- if (tixApi) {
- workerScript.scriptRef.log("ERROR: sellShort() failed because of invalid arguments.");
- } else {
- Object(_utils_DialogBox_js__WEBPACK_IMPORTED_MODULE_6__["dialogBoxCreate"])("Failed to sell a short position in a stock. This is probably " +
- "due to an invalid quantity. Otherwise, this may be a bug, so contact developer");
- }
- return false;
- }
- shares = Math.round(shares);
- if (shares > stock.playerShortShares) {shares = stock.playerShortShares;}
- if (shares === 0) {return false;}
-
- var origCost = shares * stock.playerAvgShortPx;
- var profit = ((stock.playerAvgShortPx - stock.price) * shares) - _Constants_js__WEBPACK_IMPORTED_MODULE_0__["CONSTANTS"].StockMarketCommission;
- if (isNaN(profit)) {profit = 0;}
- _Player_js__WEBPACK_IMPORTED_MODULE_5__["Player"].gainMoney(origCost + profit);
- if (tixApi) {
- workerScript.scriptRef.onlineMoneyMade += profit;
- _Player_js__WEBPACK_IMPORTED_MODULE_5__["Player"].scriptProdSinceLastAug += profit;
- }
-
- stock.playerShortShares -= shares;
- if (stock.playerShortShares === 0) {
- stock.playerAvgShortPx = 0;
- }
- updateStockPlayerPosition(stock);
- if (tixApi) {
- if (workerScript.disableLogs.ALL == null && workerScript.disableLogs.sellShort == null) {
- workerScript.scriptRef.log("Sold your short position of " + shares + " shares of " + stock.symbol + " at " +
- _utils_numeral_min_js__WEBPACK_IMPORTED_MODULE_9___default()(stock.price).format('($0.000a)') + " per share. After commissions, you gained " +
- "a total of " + _utils_numeral_min_js__WEBPACK_IMPORTED_MODULE_9___default()(origCost + profit).format('($0.000a)'));
- }
- } else {
- Object(_utils_DialogBox_js__WEBPACK_IMPORTED_MODULE_6__["dialogBoxCreate"])("Sold your short position of " + Object(_utils_StringHelperFunctions_js__WEBPACK_IMPORTED_MODULE_10__["formatNumber"])(shares, 0) + " shares of " + stock.symbol + " at $" +
- Object(_utils_StringHelperFunctions_js__WEBPACK_IMPORTED_MODULE_10__["formatNumber"])(stock.price, 2) + " per share. After commissions, you gained " +
- "a total of $" + Object(_utils_StringHelperFunctions_js__WEBPACK_IMPORTED_MODULE_10__["formatNumber"])(origCost + profit, 2));
- }
-
- return true;
-}
-
-function updateStockPrices() {
- var v = Math.random();
- for (var name in StockMarket) {
- if (StockMarket.hasOwnProperty(name)) {
- var stock = StockMarket[name];
- if (!(stock instanceof Stock)) {continue;}
- var av = (v * stock.mv) / 100;
- if (isNaN(av)) {av = .02;}
-
- var chc = 50;
- if (stock.b) {
- chc = (chc + stock.otlkMag)/100;
- if (isNaN(chc)) {chc = 0.5;}
- } else {
- chc = (chc - stock.otlkMag)/100;
- if (isNaN(chc)) {chc = 0.5;}
- }
- if (stock.price >= StockPriceCap) {
- chc = -1; //Limit on stock price
- stock.b = false;
- }
-
- var c = Math.random();
- if (c < chc) {
- stock.price *= (1 + av);
- processOrders(stock, OrderTypes.LimitBuy, PositionTypes.Short);
- processOrders(stock, OrderTypes.LimitSell, PositionTypes.Long);
- processOrders(stock, OrderTypes.StopBuy, PositionTypes.Long);
- processOrders(stock, OrderTypes.StopSell, PositionTypes.Short);
- if (_engine_js__WEBPACK_IMPORTED_MODULE_1__["Engine"].currentPage == _engine_js__WEBPACK_IMPORTED_MODULE_1__["Engine"].Page.StockMarket) {
- updateStockTicker(stock, true);
- }
- } else {
- stock.price /= (1 + av);
- processOrders(stock, OrderTypes.LimitBuy, PositionTypes.Long);
- processOrders(stock, OrderTypes.LimitSell, PositionTypes.Short);
- processOrders(stock, OrderTypes.StopBuy, PositionTypes.Short);
- processOrders(stock, OrderTypes.StopSell, PositionTypes.Long);
- if (_engine_js__WEBPACK_IMPORTED_MODULE_1__["Engine"].currentPage == _engine_js__WEBPACK_IMPORTED_MODULE_1__["Engine"].Page.StockMarket) {
- updateStockTicker(stock, false);
- }
- }
-
- var otlkMagChange = stock.otlkMag * av;
- if (stock.otlkMag <= 0.1) {
- otlkMagChange = 1;
- }
- if (c < 0.5) {
- stock.otlkMag += otlkMagChange;
- } else {
- stock.otlkMag -= otlkMagChange;
- }
- if (stock.otlkMag < 0) {
- stock.otlkMag *= -1;
- stock.b = !stock.b;
- }
-
- }
- }
-}
-
-//Checks and triggers any orders for the specified stock
-function processOrders(stock, orderType, posType) {
- var orderBook = StockMarket["Orders"];
- if (orderBook == null) {
- var orders = {};
- for (var name in StockMarket) {
- if (StockMarket.hasOwnProperty(name)) {
- var stock = StockMarket[name];
- if (!(stock instanceof Stock)) {continue;}
- orders[stock.symbol] = [];
- }
- }
- StockMarket["Orders"] = orders;
- return; //Newly created, so no orders to process
- }
- var stockOrders = orderBook[stock.symbol];
- if (stockOrders == null || !(stockOrders.constructor === Array)) {
- console.log("ERROR: Invalid Order book for " + stock.symbol + " in processOrders()");
- stockOrders = [];
- return;
- }
- for (var i = 0; i < stockOrders.length; ++i) {
- var order = stockOrders[i];
- if (order.type === orderType && order.pos === posType) {
- switch(order.type) {
- case OrderTypes.LimitBuy:
- if (order.pos === PositionTypes.Long && stock.price <= order.price) {
- executeOrder/*66*/(order);
- } else if (order.pos === PositionTypes.Short && stock.price >= order.price) {
- executeOrder/*66*/(order);
- }
- break;
- case OrderTypes.LimitSell:
- if (order.pos === PositionTypes.Long && stock.price >= order.price) {
- executeOrder/*66*/(order);
- } else if (order.pos === PositionTypes.Short && stock.price <= order.price) {
- executeOrder/*66*/(order);
- }
- break;
- case OrderTypes.StopBuy:
- if (order.pos === PositionTypes.Long && stock.price >= order.price) {
- executeOrder/*66*/(order);
- } else if (order.pos === PositionTypes.Short && stock.price <= order.price) {
- executeOrder/*66*/(order);
- }
- break;
- case OrderTypes.StopSell:
- if (order.pos === PositionTypes.Long && stock.price <= order.price) {
- executeOrder/*66*/(order);
- } else if (order.pos === PositionTypes.Short && stock.price >= order.price) {
- executeOrder/*66*/(order);
- }
- break;
- default:
- console.log("Invalid order type: " + order.type);
- return;
- }
- }
- }
-}
-
-function setStockMarketContentCreated(b) {
- stockMarketContentCreated = b;
-}
-
-var stockMarketContentCreated = false;
-var stockMarketPortfolioMode = false;
-var COMM = _Constants_js__WEBPACK_IMPORTED_MODULE_0__["CONSTANTS"].StockMarketCommission;
-function displayStockMarketContent() {
- if (_Player_js__WEBPACK_IMPORTED_MODULE_5__["Player"].hasWseAccount == null) {_Player_js__WEBPACK_IMPORTED_MODULE_5__["Player"].hasWseAccount = false;}
- if (_Player_js__WEBPACK_IMPORTED_MODULE_5__["Player"].hasTixApiAccess == null) {_Player_js__WEBPACK_IMPORTED_MODULE_5__["Player"].hasTixApiAccess = false;}
-
- //Purchase WSE Account button
- var wseAccountButton = Object(_utils_HelperFunctions_js__WEBPACK_IMPORTED_MODULE_7__["clearEventListeners"])("stock-market-buy-account");
- wseAccountButton.innerText = "Buy WSE Account - $" + Object(_utils_StringHelperFunctions_js__WEBPACK_IMPORTED_MODULE_10__["formatNumber"])(_Constants_js__WEBPACK_IMPORTED_MODULE_0__["CONSTANTS"].WSEAccountCost, 2).toString();
- if (!_Player_js__WEBPACK_IMPORTED_MODULE_5__["Player"].hasWseAccount && _Player_js__WEBPACK_IMPORTED_MODULE_5__["Player"].money.gte(_Constants_js__WEBPACK_IMPORTED_MODULE_0__["CONSTANTS"].WSEAccountCost)) {
- wseAccountButton.setAttribute("class", "a-link-button");
- } else {
- wseAccountButton.setAttribute("class", "a-link-button-inactive");
- }
- wseAccountButton.addEventListener("click", function() {
- _Player_js__WEBPACK_IMPORTED_MODULE_5__["Player"].hasWseAccount = true;
- initStockMarket();
- initSymbolToStockMap();
- _Player_js__WEBPACK_IMPORTED_MODULE_5__["Player"].loseMoney(_Constants_js__WEBPACK_IMPORTED_MODULE_0__["CONSTANTS"].WSEAccountCost);
- displayStockMarketContent();
- return false;
- });
-
- //Purchase TIX API Access account
- var tixApiAccessButton = Object(_utils_HelperFunctions_js__WEBPACK_IMPORTED_MODULE_7__["clearEventListeners"])("stock-market-buy-tix-api");
- tixApiAccessButton.innerText = "Buy Trade Information eXchange (TIX) API Access - $" +
- Object(_utils_StringHelperFunctions_js__WEBPACK_IMPORTED_MODULE_10__["formatNumber"])(_Constants_js__WEBPACK_IMPORTED_MODULE_0__["CONSTANTS"].TIXAPICost, 2).toString();
- if (!_Player_js__WEBPACK_IMPORTED_MODULE_5__["Player"].hasTixApiAccess && _Player_js__WEBPACK_IMPORTED_MODULE_5__["Player"].money.gte(_Constants_js__WEBPACK_IMPORTED_MODULE_0__["CONSTANTS"].TIXAPICost)) {
- tixApiAccessButton.setAttribute("class", "a-link-button");
- } else {
- tixApiAccessButton.setAttribute("class", "a-link-button-inactive");
- }
- tixApiAccessButton.addEventListener("click", function() {
- _Player_js__WEBPACK_IMPORTED_MODULE_5__["Player"].hasTixApiAccess = true;
- _Player_js__WEBPACK_IMPORTED_MODULE_5__["Player"].loseMoney(_Constants_js__WEBPACK_IMPORTED_MODULE_0__["CONSTANTS"].TIXAPICost);
- displayStockMarketContent();
- return false;
- });
-
- var stockList = document.getElementById("stock-market-list");
- if (stockList == null) {return;}
-
- if (!_Player_js__WEBPACK_IMPORTED_MODULE_5__["Player"].hasWseAccount) {
- stockMarketContentCreated = false;
- while (stockList.firstChild) {
- stockList.removeChild(stockList.firstChild);
- }
- return;
- }
-
- //Create stock market content if you have an account
- if (!stockMarketContentCreated && _Player_js__WEBPACK_IMPORTED_MODULE_5__["Player"].hasWseAccount) {
- console.log("Creating Stock Market UI");
- document.getElementById("stock-market-commission").innerHTML =
- "Commission Fees: Every transaction you make has a $" +
- Object(_utils_StringHelperFunctions_js__WEBPACK_IMPORTED_MODULE_10__["formatNumber"])(_Constants_js__WEBPACK_IMPORTED_MODULE_0__["CONSTANTS"].StockMarketCommission, 2) + " commission fee.
" +
- "WARNING: When you reset after installing Augmentations, the Stock Market is reset. " +
- "This means all your positions are lost, so make sure to sell your stocks before installing " +
- "Augmentations!";
-
- var investopediaButton = Object(_utils_HelperFunctions_js__WEBPACK_IMPORTED_MODULE_7__["clearEventListeners"])("stock-market-investopedia");
- investopediaButton.addEventListener("click", function() {
- var txt = "When making a transaction on the stock market, there are two " +
- "types of positions: Long and Short. A Long position is the typical " +
- "scenario where you buy a stock and earn a profit if the price of that " +
- "stock increases. Meanwhile, a Short position is the exact opposite. " +
- "In a Short position you purchase shares of a stock and earn a profit " +
- "if the price of that stock decreases. This is also called 'shorting' a stock.
" +
- "NOTE: Shorting stocks is not available immediately, and must be unlocked later on in the game.
" +
- "There are three different types of orders you can make to buy or sell " +
- "stocks on the exchange: Market Order, Limit Order, and Stop Order. " +
- "Note that Limit Orders and Stop Orders are not available immediately, and must be unlocked " +
- "later on in the game.
" +
- "When you place a Market Order to buy or sell a stock, the order executes " +
- "immediately at whatever the current price of the stock is. For example " +
- "if you choose to short a stock with 5000 shares using a Market Order, " +
- "you immediately purchase those 5000 shares in a Short position at whatever " +
- "the current market price is for that stock.
" +
- "A Limit Order is an order that only executes under certain conditions. " +
- "A Limit Order is used to buy or sell a stock at a specified price or better. " +
- "For example, lets say you purchased a Long position of 100 shares of some stock " +
- "at a price of $10 per share. You can place a Limit Order to sell those 100 shares " +
- "at $50 or better. The Limit Order will execute when the price of the stock reaches a " +
- "value of $50 or higher.
" +
- "A Stop Order is the opposite of a Limit Order. It is used to buy or sell a stock " +
- "at a specified price (before the price gets 'worse'). For example, lets say you purchased " +
- "a Short position of 100 shares of some stock at a price of $100 per share. " +
- "The current price of the stock is $80 (a profit of $20 per share). You can place a " +
- "Stop Order to sell the Short position if the stock's price reaches $90 or higher. " +
- "This can be used to lock in your profits and limit any losses.
" +
- "Here is a summary of how each order works and when they execute:
" +
- "In a LONG Position:
" +
- "A Limit Order to buy will execute if the stock's price <= order's price
" +
- "A Limit Order to sell will execute if the stock's price >= order's price
" +
- "A Stop Order to buy will execute if the stock's price >= order's price
" +
- "A Stop Order to sell will execute if the stock's price <= order's price
" +
- "In a SHORT Position:
" +
- "A Limit Order to buy will execute if the stock's price >= order's price
" +
- "A Limit Order to sell will execute if the stock's price <= order's price
" +
- "A Stop Order to buy will execute if the stock's price <= order's price
" +
- "A Stop Order to sell will execute if the stock's price >= order's price.";
- Object(_utils_DialogBox_js__WEBPACK_IMPORTED_MODULE_6__["dialogBoxCreate"])(txt);
- return false;
- });
-
- //Switch to Portfolio Mode Button
- var modeBtn = Object(_utils_HelperFunctions_js__WEBPACK_IMPORTED_MODULE_7__["clearEventListeners"])("stock-market-mode");
- if (modeBtn) {
- modeBtn.innerHTML = "Switch to 'Portfolio' Mode" +
- "Displays only the stocks for which you have shares or orders";
- modeBtn.addEventListener("click", switchToPortfolioMode);
- }
-
- //Expand/Collapse tickers buttons
- var expandBtn = Object(_utils_HelperFunctions_js__WEBPACK_IMPORTED_MODULE_7__["clearEventListeners"])("stock-market-expand-tickers"),
- collapseBtn = Object(_utils_HelperFunctions_js__WEBPACK_IMPORTED_MODULE_7__["clearEventListeners"])("stock-market-collapse-tickers"),
- stockList = document.getElementById("stock-market-list");
- if (expandBtn) {
- expandBtn.addEventListener("click", ()=>{
- var tickerHdrs = stockList.getElementsByClassName("accordion-header");
- for (var i = 0; i < tickerHdrs.length; ++i) {
- if (!tickerHdrs[i].classList.contains("active")) {
- tickerHdrs[i].click();
- }
- }
- });
- }
- if (collapseBtn) {
- collapseBtn.addEventListener("click",()=>{
- var tickerHdrs = stockList.getElementsByClassName("accordion-header");
- for (var i = 0; i < tickerHdrs.length; ++i) {
- if (tickerHdrs[i].classList.contains("active")) {
- tickerHdrs[i].click();
- }
- }
- });
- }
-
- for (var name in StockMarket) {
- if (StockMarket.hasOwnProperty(name)) {
- var stock = StockMarket[name];
- if (!(stock instanceof Stock)) {continue;} //orders property is an array
- createStockTicker(stock);
- }
- }
- setStockTickerClickHandlers(); //Clicking headers opens/closes panels
- stockMarketContentCreated = true;
- }
-
- if (_Player_js__WEBPACK_IMPORTED_MODULE_5__["Player"].hasWseAccount) {
- for (var name in StockMarket) {
- if (StockMarket.hasOwnProperty(name)) {
- var stock = StockMarket[name];
- updateStockTicker(stock, null);
- updateStockOrderList(stock);
- }
- }
- }
-}
-
-//Displays only stocks you have position/order in
-function switchToPortfolioMode() {
- stockMarketPortfolioMode = true;
- var stockList = document.getElementById("stock-market-list");
- if (stockList == null) {return;}
- var modeBtn = Object(_utils_HelperFunctions_js__WEBPACK_IMPORTED_MODULE_7__["clearEventListeners"])("stock-market-mode");
- if (modeBtn) {
- modeBtn.innerHTML = "Switch to 'All stocks' Mode" +
- "Displays all stocks on the WSE";
- modeBtn.addEventListener("click", switchToDisplayAllMode);
- }
- while(stockList.firstChild) {stockList.removeChild(stockList.firstChild);}
-
- //Get Order book (create it if it hasn't been created)
- var orderBook = StockMarket["Orders"];
- if (orderBook == null) {
- var orders = {};
- for (var name in StockMarket) {
- if (StockMarket.hasOwnProperty(name)) {
- var stock = StockMarket[name];
- if (!(stock instanceof Stock)) {continue;}
- orders[stock.symbol] = [];
- }
- }
- StockMarket["Orders"] = orders;
- }
-
- for (var name in StockMarket) {
- if (StockMarket.hasOwnProperty(name)) {
- var stock = StockMarket[name];
- if (!(stock instanceof Stock)) {continue;} //orders property is an array
- var stockOrders = orderBook[stock.symbol];
- if (stock.playerShares === 0 && stock.playerShortShares === 0 &&
- stockOrders.length === 0) {continue;}
- createStockTicker(stock);
- }
- }
- setStockTickerClickHandlers();
-}
-
-//Displays all stocks
-function switchToDisplayAllMode() {
- stockMarketPortfolioMode = false;
- var stockList = document.getElementById("stock-market-list");
- if (stockList == null) {return;}
- var modeBtn = Object(_utils_HelperFunctions_js__WEBPACK_IMPORTED_MODULE_7__["clearEventListeners"])("stock-market-mode");
- if (modeBtn) {
- modeBtn.innerHTML = "Switch to 'Portfolio' Mode" +
- "Displays only the stocks for which you have shares or orders";
- modeBtn.addEventListener("click", switchToPortfolioMode);
- }
- while(stockList.firstChild) {stockList.removeChild(stockList.firstChild);}
- for (var name in StockMarket) {
- if (StockMarket.hasOwnProperty(name)) {
- var stock = StockMarket[name];
- if (!(stock instanceof Stock)) {continue;} //orders property is an array
- createStockTicker(stock);
- }
- }
- setStockTickerClickHandlers();
-}
-
-function createStockTicker(stock) {
- if (!(stock instanceof Stock)) {
- console.log("Invalid stock in createStockSticker()");
- return;
- }
- var tickerId = "stock-market-ticker-" + stock.symbol;
- var li = document.createElement("li"), hdr = document.createElement("button");
- hdr.classList.add("accordion-header");
- hdr.setAttribute("id", tickerId + "-hdr");
- hdr.innerHTML = stock.name + " - " + stock.symbol + " - $" + stock.price;
-
- //Div for entire panel
- var stockDiv = document.createElement("div");
- stockDiv.classList.add("accordion-panel");
- stockDiv.setAttribute("id", tickerId + "-panel");
-
- /* Create panel DOM */
- var qtyInput = document.createElement("input"),
- longShortSelect = document.createElement("select"),
- orderTypeSelect = document.createElement("select"),
- buyButton = document.createElement("span"),
- sellButton = document.createElement("span"),
- buyMaxButton = document.createElement("span"),
- sellAllButton = document.createElement("span"),
- positionTxt = document.createElement("p"),
- orderList = document.createElement("ul");
-
- qtyInput.classList.add("stock-market-input");
- qtyInput.placeholder = "Quantity (Shares)";
- qtyInput.setAttribute("id", tickerId + "-qty-input");
- qtyInput.setAttribute("onkeydown", "return ( event.ctrlKey || event.altKey " +
- " || (47Long Position: " +
- "Shares in the long position will increase " +
- "in value if the price of the corresponding stock increases
" +
- "
Shares: " + Object(_utils_StringHelperFunctions_js__WEBPACK_IMPORTED_MODULE_10__["formatNumber"])(stock.playerShares, 0) +
- "
Average Price: " + _utils_numeral_min_js__WEBPACK_IMPORTED_MODULE_9___default()(stock.playerAvgPx).format('$0.000a') +
- " (Total Cost: " + _utils_numeral_min_js__WEBPACK_IMPORTED_MODULE_9___default()(totalCost).format('$0.000a') + ")" +
- "
Profit: " + _utils_numeral_min_js__WEBPACK_IMPORTED_MODULE_9___default()(gains).format('$0.000a') +
- " (" + Object(_utils_StringHelperFunctions_js__WEBPACK_IMPORTED_MODULE_10__["formatNumber"])(percentageGains*100, 2) + "%)
";
- if (_Player_js__WEBPACK_IMPORTED_MODULE_5__["Player"].bitNodeN === 8 || (_NetscriptFunctions_js__WEBPACK_IMPORTED_MODULE_3__["hasWallStreetSF"] && _NetscriptFunctions_js__WEBPACK_IMPORTED_MODULE_3__["wallStreetSFLvl"] >= 2)) {
- stock.posTxtEl.innerHTML +=
- "Short Position: " +
- "Shares in short position will increase " +
- "in value if the price of the corresponding stock decreases
" +
- "
Shares: " + Object(_utils_StringHelperFunctions_js__WEBPACK_IMPORTED_MODULE_10__["formatNumber"])(stock.playerShortShares, 0) +
- "
Average Price: " + _utils_numeral_min_js__WEBPACK_IMPORTED_MODULE_9___default()(stock.playerAvgShortPx).format('$0.000a') +
- " (Total Cost: " + _utils_numeral_min_js__WEBPACK_IMPORTED_MODULE_9___default()(shortTotalCost).format('$0.000a') + ")" +
- "
Profit: " + _utils_numeral_min_js__WEBPACK_IMPORTED_MODULE_9___default()(shortGains).format('$0.000a') +
- " (" + Object(_utils_StringHelperFunctions_js__WEBPACK_IMPORTED_MODULE_10__["formatNumber"])(shortPercentageGains*100, 2) + "%)" +
- "Orders:
";
- }
-
-}
-
-function updateStockOrderList(stock) {
- if (_engine_js__WEBPACK_IMPORTED_MODULE_1__["Engine"].currentPage !== _engine_js__WEBPACK_IMPORTED_MODULE_1__["Engine"].Page.StockMarket) {return;}
- var tickerId = "stock-market-ticker-" + stock.symbol;
- var orderList = document.getElementById(tickerId + "-order-list");
- if (orderList == null) {
- if (!stockMarketPortfolioMode) {console.log("ERROR: Could not find order list for " + stock.symbol);}
- return;
- }
-
- var orderBook = StockMarket["Orders"];
- if (orderBook == null) {
- console.log("ERROR: Could not find order book in stock market");
- return;
- }
- var stockOrders = orderBook[stock.symbol];
- if (stockOrders == null) {
- console.log("ERROR: Could not find orders for: " + stock.symbol);
- return;
- }
-
- if (stockMarketPortfolioMode) {
- if (stock.playerShares === 0 && stock.playerShortShares === 0 &&
- StockMarket["Orders"] && StockMarket["Orders"][stock.symbol] &&
- StockMarket["Orders"][stock.symbol].length === 0) {
- Object(_utils_HelperFunctions_js__WEBPACK_IMPORTED_MODULE_7__["removeElementById"])(tickerId + "-hdr");
- Object(_utils_HelperFunctions_js__WEBPACK_IMPORTED_MODULE_7__["removeElementById"])(tickerId + "-panel");
- return;
- } else {
- //If the ticker hasn't been created, create it (handles updating)
- //If it has been created, continue normally
- if (document.getElementById(tickerId + "-hdr") == null) {
- createStockTicker(stock);
- setStockTickerClickHandlers();
- return;
- }
- }
- }
-
- //Remove everything from list
- while (orderList.firstChild) {
- orderList.removeChild(orderList.firstChild);
- }
-
- for (var i = 0; i < stockOrders.length; ++i) {
- (function() {
- var order = stockOrders[i];
- var li = document.createElement("li");
- li.style.padding = "4px";
- var posText = (order.pos === PositionTypes.Long ? "Long Position" : "Short Position");
- li.style.color = "white";
- li.innerText = order.type + " - " + posText + " - " +
- order.shares + " @ $" + Object(_utils_StringHelperFunctions_js__WEBPACK_IMPORTED_MODULE_10__["formatNumber"])(order.price, 2);
-
- var cancelButton = document.createElement("span");
- cancelButton.classList.add("stock-market-order-cancel-btn");
- cancelButton.classList.add("a-link-button");
- cancelButton.innerHTML = "Cancel Order";
- cancelButton.addEventListener("click", function() {
- cancelOrder({order: order}, null);
- return false;
- });
- li.appendChild(cancelButton);
- orderList.appendChild(li);
- }());
-
- }
-}
-
-
-
-
-/***/ }),
-/* 23 */
-/*!*************************!*\
- !*** ./src/Settings.js ***!
- \*************************/
-/***/ (function(module, __webpack_exports__, __webpack_require__) {
-
-"use strict";
-__webpack_require__.r(__webpack_exports__);
-/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "Settings", function() { return Settings; });
-/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "initSettings", function() { return initSettings; });
-/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "setSettingsLabels", function() { return setSettingsLabels; });
-/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "loadSettings", function() { return loadSettings; });
-/* harmony import */ var _engine_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./engine.js */ 5);
-
-
-/* Settings.js */
-let Settings = {
- CodeInstructionRunTime: 50,
- MaxLogCapacity: 50,
- MaxPortCapacity: 50,
- SuppressMessages: false,
- SuppressFactionInvites: false,
- AutosaveInterval: 60,
- DisableHotkeys: false,
- ThemeHighlightColor: "#ffffff",
- ThemeFontColor: "#66ff33",
- ThemeBackgroundColor: "#000000",
- EditorTheme: "Monokai",
- EditorKeybinding: "ace",
-}
-
-function loadSettings(saveString) {
- Settings = JSON.parse(saveString);
-}
-
-function initSettings() {
- Settings.CodeInstructionRunTime = 50;
- Settings.MaxLogCapacity = 50;
- Settings.MaxPortCapacity = 50;
- Settings.SuppressMessages = false;
- Settings.SuppressFactionInvites = false;
- Settings.AutosaveInterval = 60;
- Settings.DisableHotkeys = false;
-}
-
-function setSettingsLabels() {
- var nsExecTime = document.getElementById("settingsNSExecTimeRangeValLabel");
- var nsLogLimit = document.getElementById("settingsNSLogRangeValLabel");
- var nsPortLimit = document.getElementById("settingsNSPortRangeValLabel");
- var suppressMsgs = document.getElementById("settingsSuppressMessages");
- var suppressFactionInv = document.getElementById("settingsSuppressFactionInvites")
- var autosaveInterval = document.getElementById("settingsAutosaveIntervalValLabel");
- var disableHotkeys = document.getElementById("settingsDisableHotkeys");
-
- //Initialize values on labels
- nsExecTime.innerHTML = Settings.CodeInstructionRunTime + "ms";
- nsLogLimit.innerHTML = Settings.MaxLogCapacity;
- nsPortLimit.innerHTML = Settings.MaxPortCapacity;
- suppressMsgs.checked = Settings.SuppressMessages;
- suppressFactionInv.checked = Settings.SuppressFactionInvites;
- autosaveInterval.innerHTML = Settings.AutosaveInterval;
- disableHotkeys.checked = Settings.DisableHotkeys;
-
- //Set handlers for when input changes
- 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;
- };
-
- nsLogRangeInput.oninput = function() {
- nsLogLimit.innerHTML = this.value;
- Settings.MaxLogCapacity = this.value;
- };
-
- 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_js__WEBPACK_IMPORTED_MODULE_0__["Engine"].Counters.autoSaveCounter = Infinity;
- } else {
- _engine_js__WEBPACK_IMPORTED_MODULE_0__["Engine"].Counters.autoSaveCounter = Number(this.value) * 5;
- }
- };
-
- suppressMsgs.onclick = function() {
- Settings.SuppressMessages = this.checked;
- };
-
- suppressFactionInv.onclick = function() {
- Settings.SuppressFactionInvites = this.checked;
- };
-
- disableHotkeys.onclick = function() {
- Settings.DisableHotkeys = this.checked;
- }
-
- //Theme
- if (Settings.ThemeHighlightColor == null || Settings.ThemeFontColor == null || Settings.ThemeBackgroundColor == null) {
- console.log("ERROR: Cannot find Theme Settings");
- return;
- }
- if (/^#[0-9a-f]{3}(?:[0-9a-f]{3})?$/i.test(Settings.ThemeHighlightColor) &&
- /^#[0-9a-f]{3}(?:[0-9a-f]{3})?$/i.test(Settings.ThemeFontColor) &&
- /^#[0-9a-f]{3}(?:[0-9a-f]{3})?$/i.test(Settings.ThemeBackgroundColor)) {
- document.body.style.setProperty('--my-highlight-color', Settings.ThemeHighlightColor);
- document.body.style.setProperty('--my-font-color', Settings.ThemeFontColor);
- document.body.style.setProperty('--my-background-color', Settings.ThemeBackgroundColor);
- }
-}
-
-
-
-
-/***/ }),
-/* 24 */
-/*!************************************************!*\
- !*** ./node_modules/decimal.js/decimal.es6.js ***!
- \************************************************/
-/***/ (function(module, __webpack_exports__, __webpack_require__) {
-
-"use strict";
-__webpack_require__.r(__webpack_exports__);
-/*
- *
- * decimal.js v7.2.3
- * An arbitrary-precision Decimal type for JavaScript.
- * https://github.com/MikeMcl/decimal.js
- * Copyright (c) 2017 Michael Mclaughlin
" +
- "This tutorial will show you the basics of the game. " +
- "You may skip the tutorial at any time.");
- var next = Object(_utils_HelperFunctions_js__WEBPACK_IMPORTED_MODULE_3__["clearEventListeners"])("interactive-tutorial-next");
- next.style.display = "inline-block";
- next.addEventListener("click", function() {
- iTutorialNextStep();
- return false;
- });
- break;
- case iTutorialSteps.GoToCharacterPage:
- iTutorialSetText("Let's start by heading to the Stats page. Click the 'Stats' tab on " +
- "the main navigation menu (left-hand side of the screen)");
-
- //No next button
- var next = Object(_utils_HelperFunctions_js__WEBPACK_IMPORTED_MODULE_3__["clearEventListeners"])("interactive-tutorial-next");
- next.style.display = "none";
-
- //Flash Character tab
- document.getElementById("stats-menu-link").setAttribute("class", "flashing-button");
-
- //Initialize everything necessary to open the "Character" page
- var charaterMainMenuButton = document.getElementById("stats-menu-link");
- charaterMainMenuButton.addEventListener("click", function() {
- _engine_js__WEBPACK_IMPORTED_MODULE_0__["Engine"].loadCharacterContent();
- iTutorialNextStep(); //Opening the character page will go to the next step
- Object(_utils_HelperFunctions_js__WEBPACK_IMPORTED_MODULE_3__["clearEventListeners"])("stats-menu-link");
- return false;
- });
- break;
- case iTutorialSteps.CharacterPage:
- iTutorialSetText("The Stats page shows a lot of important information about your progress, " +
- "such as your skills, money, and bonuses/multipliers. ")
- var next = Object(_utils_HelperFunctions_js__WEBPACK_IMPORTED_MODULE_3__["clearEventListeners"])("interactive-tutorial-next");
- next.style.display = "inline-block";
- next.addEventListener("click", function() {
- iTutorialNextStep();
- return false;
- });
- break;
- case iTutorialSteps.CharacterGoToTerminalPage:
- iTutorialSetText("Let's head to your computer's terminal by clicking the 'Terminal' tab on the " +
- "main navigation menu.");
- //No next button
- var next = Object(_utils_HelperFunctions_js__WEBPACK_IMPORTED_MODULE_3__["clearEventListeners"])("interactive-tutorial-next");
- next.style.display = "none";
-
- document.getElementById("terminal-menu-link").setAttribute("class", "flashing-button");
-
- //Initialize everything necessary to open the 'Terminal' Page
- var terminalMainMenuButton = document.getElementById("terminal-menu-link");
- terminalMainMenuButton.addEventListener("click", function() {
- _engine_js__WEBPACK_IMPORTED_MODULE_0__["Engine"].loadTerminalContent();
- iTutorialNextStep();
- Object(_utils_HelperFunctions_js__WEBPACK_IMPORTED_MODULE_3__["clearEventListeners"])("terminal-menu-link");
- return false;
- });
- break;
- case iTutorialSteps.TerminalIntro:
- iTutorialSetText("The Terminal is used to interface with your home computer as well as " +
- "all of the other machines around the world.");
- var next = Object(_utils_HelperFunctions_js__WEBPACK_IMPORTED_MODULE_3__["clearEventListeners"])("interactive-tutorial-next");
- next.style.display = "inline-block";
- next.addEventListener("click", function() {
- iTutorialNextStep();
- return false;
- });
- break;
- case iTutorialSteps.TerminalHelp:
- iTutorialSetText("Let's try it out. Start by entering the 'help' command into the Terminal " +
- "(Don't forget to press Enter after typing the command)");
- var next = Object(_utils_HelperFunctions_js__WEBPACK_IMPORTED_MODULE_3__["clearEventListeners"])("interactive-tutorial-next");
- next.style.display = "none";
- //next step triggered by terminal command
- break;
- case iTutorialSteps.TerminalLs:
- iTutorialSetText("The 'help' command displays a list of all available Terminal commands, how to use them, " +
- "and a description of what they do.
Let's try another command. Enter the 'ls' command");
- //next step triggered by terminal command
- break;
- case iTutorialSteps.TerminalScan:
- iTutorialSetText("'ls' is a basic command that shows all of the contents (programs/scripts) " +
- "on the computer. Right now, it shows that you have a program called 'NUKE.exe' on your computer. " +
- "We'll get to what this does later.
Using your home computer's terminal, you can connect " +
- "to other machines throughout the world. Let's do that now by first entering " +
- "the 'scan' command. ");
- //next step triggered by terminal command
- break;
- case iTutorialSteps.TerminalScanAnalyze1:
- iTutorialSetText("The 'scan' command shows all available network connections. In other words, " +
- "it displays a list of all servers that can be connected to from your " +
- "current machine. A server is identified by either its IP or its hostname.
" +
- "That's great and all, but there's so many servers. Which one should you go to? " +
- "The 'scan-analyze' command gives some more detailed information about servers on the " +
- "network. Try it now");
- //next step triggered by terminal command
- break;
- case iTutorialSteps.TerminalScanAnalyze2:
- iTutorialSetText("You just ran 'scan-analyze' with a depth of one. This command shows more detailed " +
- "information about each server that you can connect to (servers that are a distance of " +
- "one node away).
It is also possible to run 'scan-analyze' with " +
- "a higher depth. Let's try a depth of two with the following command: 'scan-analyze 2'.")
- //next step triggered by terminal command
- break;
- case iTutorialSteps.TerminalConnect:
- iTutorialSetText("Now you can see information about all servers that are up to two nodes away, as well " +
- "as figure out how to navigate to those servers through the network. You can only connect to " +
- "a server that is one node away. To connect to a machine, use the 'connect [ip/hostname]' command. You can type in " +
- "the ip or the hostname, but dont use both.
" +
- "From the results of the 'scan-analyze' command, we can see that the 'foodnstuff' server is " +
- "only one node away. Let's connect so it now using: 'connect foodnstuff'");
- //next step triggered by terminal command
- break;
- case iTutorialSteps.TerminalAnalyze:
- iTutorialSetText("You are now connected to another machine! What can you do now? You can hack it!
In the year 2077, currency has " +
- "become digital and decentralized. People and corporations store their money " +
- "on servers and computers. Using your hacking abilities, you can hack servers " +
- "to steal money and gain experience.
" +
- "Before you try to hack a server, you should run diagnostics using the 'analyze' command");
- //next step triggered by terminal command
- break;
- case iTutorialSteps.TerminalNuke:
- iTutorialSetText("When the 'analyze' command finishes running it will show useful information " +
- "about hacking the server.
For this server, the required hacking skill is only 1, " +
- "which means you can hack it right now. However, in order to hack a server " +
- "you must first gain root access. The 'NUKE.exe' program that we saw earlier on your " +
- "home computer is a virus that will grant you root access to a machine if there are enough " +
- "open ports.
The 'analyze' results shows that there do not need to be any open ports " +
- "on this machine for the NUKE virus to work, so go ahead and run the virus using the " +
- "'run NUKE.exe' command.");
- //next step triggered by terminal command
- break;
- case iTutorialSteps.TerminalManualHack:
- iTutorialSetText("You now have root access! You can hack the server using the 'hack' command. " +
- "Try doing that now.");
- //next step triggered by terminal command
- break;
- case iTutorialSteps.TerminalHackingMechanics:
- iTutorialSetText("You are now attempting to hack the server. Note that performing a hack takes time and " +
- "only has a certain percentage chance " +
- "of success. This time and success chance is determined by a variety of factors, including " +
- "your hacking skill and the server's security level.
" +
- "If your attempt to hack the server is successful, you will steal a certain percentage " +
- "of the server's total money. This percentage is affected by your hacking skill and " +
- "the server's security level.
The amount of money on a server is not limitless. So, if " +
- "you constantly hack a server and deplete its money, then you will encounter " +
- "diminishing returns in your hacking.");
- var next = Object(_utils_HelperFunctions_js__WEBPACK_IMPORTED_MODULE_3__["clearEventListeners"])("interactive-tutorial-next");
- next.style.display = "inline-block";
- next.addEventListener("click", function() {
- iTutorialNextStep();
- return false;
- });
- break;
- case iTutorialSteps.TerminalCreateScript:
- iTutorialSetText("Hacking is the core mechanic of the game and is necessary for progressing. However, " +
- "you don't want to be hacking manually the entire time. You can automate your hacking " +
- "by writing scripts!
To create a new script or edit an existing one, you can use the 'nano' " +
- "command. Scripts must end with the '.script' extension. Let's make a script now by " +
- "entering 'nano foodnstuff.script' after the hack command finishes running (Sidenote: Pressing ctrl + c" +
- " will end a command like hack early)");
- var next = Object(_utils_HelperFunctions_js__WEBPACK_IMPORTED_MODULE_3__["clearEventListeners"])("interactive-tutorial-next");
- next.style.display = "none";
- //next step triggered by terminal command
- break;
- case iTutorialSteps.TerminalTypeScript:
- iTutorialSetText("This is the script editor. You can use it to program your scripts. Scripts are " +
- "written in the Netscript language, a programming language created for " +
- "this game. There are details about the Netscript language in the documentation, which " +
- "can be accessed in the 'Tutorial' tab on the main navigation menu. I highly suggest you check " +
- "it out after this tutorial. For now, just copy " +
- "and paste the following code into the script editor:
" +
- "while(true) {
" +
- " hack('foodnstuff');
" +
- "}
" +
- "For anyone with basic programming experience, this code should be straightforward. " +
- "This script will continuously hack the 'foodnstuff' server.
" +
- "To save and close the script editor, press the button in the bottom left, or press ctrl + b.");
- //next step triggered in saveAndCloseScriptEditor() (Script.js)
- break;
- case iTutorialSteps.TerminalFree:
- iTutorialSetText("Now we'll run the script. Scripts require a certain amount of RAM to run, and can be " +
- "run on any machine which you have root access to. Different servers have different " +
- "amounts of RAM. You can also purchase more RAM for your home server.
To check how much " +
- "RAM is available on this machine, enter the 'free' command.");
- //next step triggered by terminal commmand
- break;
- case iTutorialSteps.TerminalRunScript:
- 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;
- case iTutorialSteps.TerminalGoToActiveScriptsPage:
- iTutorialSetText("Your script is now running! The script might take a few seconds to 'fully start up'. " +
- "Your scripts will continuously run in the background and will automatically stop if " +
- "the code ever completes (the 'foodnstuff.script' will never complete because it " +
- "runs an infinite loop).
These scripts can passively earn you income and hacking experience. " +
- "Your scripts will also earn money and experience while you are offline, although at a " +
- "much slower rate.
" +
- "Let's check out some statistics for our running scripts by clicking the " +
- "'Active Scripts' link in the main navigation menu.");
- document.getElementById("active-scripts-menu-link").setAttribute("class", "flashing-button");
- var activeScriptsMainMenuButton = document.getElementById("active-scripts-menu-link");
- activeScriptsMainMenuButton.addEventListener("click", function() {
- _engine_js__WEBPACK_IMPORTED_MODULE_0__["Engine"].loadActiveScriptsContent();
- iTutorialNextStep();
- Object(_utils_HelperFunctions_js__WEBPACK_IMPORTED_MODULE_3__["clearEventListeners"])("active-scripts-menu-link");
- return false;
- });
- break;
- case iTutorialSteps.ActiveScriptsPage:
- iTutorialSetText("This page displays stats/information about all of your scripts that are " +
- "running across every existing server. You can use this to gauge how well " +
- "your scripts are doing. Let's go back to the Terminal now using the 'Terminal'" +
- "link.");
- document.getElementById("terminal-menu-link").setAttribute("class", "flashing-button");
- //Initialize everything necessary to open the 'Terminal' Page
- var terminalMainMenuButton = Object(_utils_HelperFunctions_js__WEBPACK_IMPORTED_MODULE_3__["clearEventListeners"])("terminal-menu-link");
- terminalMainMenuButton.addEventListener("click", function() {
- _engine_js__WEBPACK_IMPORTED_MODULE_0__["Engine"].loadTerminalContent();
- iTutorialNextStep();
- Object(_utils_HelperFunctions_js__WEBPACK_IMPORTED_MODULE_3__["clearEventListeners"])("terminal-menu-link");
- return false;
- });
- break;
- case iTutorialSteps.ActiveScriptsToTerminal:
- iTutorialSetText("One last thing about scripts, each active script contains logs that detail " +
- "what it's doing. We can check these logs using the 'tail' command. Do that " +
- "now for the script we just ran by typing 'tail foodnstuff.script'");
- //next step triggered by terminal command
- break;
- case iTutorialSteps.TerminalTailScript:
- iTutorialSetText("The log for this script won't show much right now (it might show nothing at all) because it " +
- "just started running...but check back again in a few minutes!
" +
- "This pretty much covers the basics of hacking. To learn more about writing " +
- "scripts using the Netscript language, select the 'Tutorial' link in the " +
- "main navigation menu to look at the documentation. For now, let's move on " +
- "to something else!");
- var next = Object(_utils_HelperFunctions_js__WEBPACK_IMPORTED_MODULE_3__["clearEventListeners"])("interactive-tutorial-next");
- next.style.display = "inline-block";
- next.addEventListener("click", function() {
- iTutorialNextStep();
- return false;
- });
- break;
- case iTutorialSteps.GoToHacknetNodesPage:
- iTutorialSetText("Hacking is not the only way to earn money. One other way to passively " +
- "earn money is by purchasing and upgrading Hacknet Nodes. Let's go to " +
- "the 'Hacknet Nodes' page through the main navigation menu now.");
- document.getElementById("hacknet-nodes-menu-link").setAttribute("class", "flashing-button");
- var hacknetNodesButton = Object(_utils_HelperFunctions_js__WEBPACK_IMPORTED_MODULE_3__["clearEventListeners"])("hacknet-nodes-menu-link");
- var next = Object(_utils_HelperFunctions_js__WEBPACK_IMPORTED_MODULE_3__["clearEventListeners"])("interactive-tutorial-next");
- next.style.display = "none";
- hacknetNodesButton.addEventListener("click", function() {
- _engine_js__WEBPACK_IMPORTED_MODULE_0__["Engine"].loadHacknetNodesContent();
- iTutorialNextStep();
- Object(_utils_HelperFunctions_js__WEBPACK_IMPORTED_MODULE_3__["clearEventListeners"])("hacknet-nodes-menu-link");
- return false;
- });
- break;
- case iTutorialSteps.HacknetNodesIntroduction:
- iTutorialSetText("From this page you can purchase new Hacknet Nodes and upgrade your " +
- "existing ones. Let's purchase a new one now.");
- //Next step triggered by purchaseHacknet() (HacknetNode.js)
- break;
- case iTutorialSteps.HacknetNodesGoToWorldPage:
- iTutorialSetText("You just purchased a Hacknet Node! This Hacknet Node will passively " +
- "earn you money over time, both online and offline. When you get enough " +
- " money, you can upgrade " +
- "your newly-purchased Hacknet Node below.
" +
- "Let's go to the 'City' page through the main navigation menu.");
- document.getElementById("city-menu-link").setAttribute("class", "flashing-button");
- var worldButton = Object(_utils_HelperFunctions_js__WEBPACK_IMPORTED_MODULE_3__["clearEventListeners"])("city-menu-link");
- worldButton.addEventListener("click", function() {
- _engine_js__WEBPACK_IMPORTED_MODULE_0__["Engine"].loadWorldContent();
- iTutorialNextStep();
- Object(_utils_HelperFunctions_js__WEBPACK_IMPORTED_MODULE_3__["clearEventListeners"])("city-menu-link");
- return false;
- });
- break;
- case iTutorialSteps.WorldDescription:
- iTutorialSetText("This page lists all of the different locations you can currently " +
- "travel to. Each location has something that you can do. " +
- "There's a lot of content out in the world, make sure " +
- "you explore and discover!
" +
- "Lastly, click on the 'Tutorial' link in the main navigation menu.");
- document.getElementById("tutorial-menu-link").setAttribute("class", "flashing-button");
- var tutorialButton = Object(_utils_HelperFunctions_js__WEBPACK_IMPORTED_MODULE_3__["clearEventListeners"])("tutorial-menu-link");
- tutorialButton.addEventListener("click", function() {
- _engine_js__WEBPACK_IMPORTED_MODULE_0__["Engine"].loadTutorialContent();
- iTutorialNextStep();
- Object(_utils_HelperFunctions_js__WEBPACK_IMPORTED_MODULE_3__["clearEventListeners"])("tutorial-menu-link");
- return false;
- });
- break;
-
- case iTutorialSteps.TutorialPageInfo:
- iTutorialSetText("This page contains a lot of different documentation about the game's " +
- "content and mechanics. I know it's a lot, but I highly suggest you read " +
- "(or at least skim) through this before you start playing. That's the end of the tutorial. " +
- "Hope you enjoy the game!");
- var next = Object(_utils_HelperFunctions_js__WEBPACK_IMPORTED_MODULE_3__["clearEventListeners"])("interactive-tutorial-next");
- next.style.display = "inline-block";
- next.innerHTML = "Finish Tutorial";
-
- var backButton = Object(_utils_HelperFunctions_js__WEBPACK_IMPORTED_MODULE_3__["clearEventListeners"])("interactive-tutorial-back");
- backButton.style.display = "none";
-
- next.addEventListener("click", function() {
- iTutorialNextStep();
- return false;
- });
- break;
- case iTutorialSteps.End:
- iTutorialEnd();
- break;
- default:
- throw new Error("Invalid tutorial step");
- }
-}
-
-//Go to the next step and evaluate it
-function iTutorialNextStep() {
- switch(currITutorialStep) {
- case iTutorialSteps.Start:
- currITutorialStep = iTutorialSteps.GoToCharacterPage;
- iTutorialEvaluateStep();
- break;
- case iTutorialSteps.GoToCharacterPage:
- document.getElementById("stats-menu-link").removeAttribute("class");
- currITutorialStep = iTutorialSteps.CharacterPage;
- iTutorialEvaluateStep();
- break;
- case iTutorialSteps.CharacterPage:
- currITutorialStep = iTutorialSteps.CharacterGoToTerminalPage;
- iTutorialEvaluateStep();
- break;
- case iTutorialSteps.CharacterGoToTerminalPage:
- document.getElementById("terminal-menu-link").removeAttribute("class");
- currITutorialStep = iTutorialSteps.TerminalIntro;
- iTutorialEvaluateStep();
- break;
- case iTutorialSteps.TerminalIntro:
- currITutorialStep = iTutorialSteps.TerminalHelp;
- iTutorialEvaluateStep();
- break;
- case iTutorialSteps.TerminalHelp:
- currITutorialStep = iTutorialSteps.TerminalLs;
- iTutorialEvaluateStep();
- break;
- case iTutorialSteps.TerminalLs:
- currITutorialStep = iTutorialSteps.TerminalScan;
- iTutorialEvaluateStep();
- break;
- case iTutorialSteps.TerminalScan:
- currITutorialStep = iTutorialSteps.TerminalScanAnalyze1;
- iTutorialEvaluateStep();
- break;
- case iTutorialSteps.TerminalScanAnalyze1:
- currITutorialStep = iTutorialSteps.TerminalScanAnalyze2;
- iTutorialEvaluateStep();
- break;
- case iTutorialSteps.TerminalScanAnalyze2:
- currITutorialStep = iTutorialSteps.TerminalConnect;
- iTutorialEvaluateStep();
- break;
- case iTutorialSteps.TerminalConnect:
- currITutorialStep = iTutorialSteps.TerminalAnalyze;
- iTutorialEvaluateStep();
- break;
- case iTutorialSteps.TerminalAnalyze:
- currITutorialStep = iTutorialSteps.TerminalNuke;
- iTutorialEvaluateStep();
- break;
- case iTutorialSteps.TerminalNuke:
- currITutorialStep = iTutorialSteps.TerminalManualHack;
- iTutorialEvaluateStep();
- break;
- case iTutorialSteps.TerminalManualHack:
- currITutorialStep = iTutorialSteps.TerminalHackingMechanics;
- iTutorialEvaluateStep();
- break;
- case iTutorialSteps.TerminalHackingMechanics:
- currITutorialStep = iTutorialSteps.TerminalCreateScript;
- iTutorialEvaluateStep();
- break;
- case iTutorialSteps.TerminalCreateScript:
- currITutorialStep = iTutorialSteps.TerminalTypeScript;
- iTutorialEvaluateStep();
- break;
- case iTutorialSteps.TerminalTypeScript:
- currITutorialStep = iTutorialSteps.TerminalFree;
- iTutorialEvaluateStep();
- break;
- case iTutorialSteps.TerminalFree:
- currITutorialStep = iTutorialSteps.TerminalRunScript;
- iTutorialEvaluateStep();
- break;
- case iTutorialSteps.TerminalRunScript:
- currITutorialStep = iTutorialSteps.TerminalGoToActiveScriptsPage;
- iTutorialEvaluateStep();
- break;
- case iTutorialSteps.TerminalGoToActiveScriptsPage:
- document.getElementById("active-scripts-menu-link").removeAttribute("class");
- currITutorialStep = iTutorialSteps.ActiveScriptsPage;
- iTutorialEvaluateStep();
- break;
- case iTutorialSteps.ActiveScriptsPage:
- document.getElementById("terminal-menu-link").removeAttribute("class");
- currITutorialStep = iTutorialSteps.ActiveScriptsToTerminal;
- iTutorialEvaluateStep();
- break;
- case iTutorialSteps.ActiveScriptsToTerminal:
- currITutorialStep = iTutorialSteps.TerminalTailScript;
- iTutorialEvaluateStep();
- break;
- case iTutorialSteps.TerminalTailScript:
- currITutorialStep = iTutorialSteps.GoToHacknetNodesPage;
- iTutorialEvaluateStep();
- break;
- case iTutorialSteps.GoToHacknetNodesPage:
- document.getElementById("hacknet-nodes-menu-link").removeAttribute("class");
- currITutorialStep = iTutorialSteps.HacknetNodesIntroduction;
- iTutorialEvaluateStep();
- break;
- case iTutorialSteps.HacknetNodesIntroduction:
- currITutorialStep = iTutorialSteps.HacknetNodesGoToWorldPage;
- iTutorialEvaluateStep();
- break;
- case iTutorialSteps.HacknetNodesGoToWorldPage:
- document.getElementById("city-menu-link").removeAttribute("class");
- currITutorialStep = iTutorialSteps.WorldDescription;
- iTutorialEvaluateStep();
- break;
- case iTutorialSteps.WorldDescription:
- document.getElementById("tutorial-menu-link").removeAttribute("class");
- currITutorialStep = iTutorialSteps.TutorialPageInfo;
- iTutorialEvaluateStep();
- break;
- case iTutorialSteps.TutorialPageInfo:
- currITutorialStep = iTutorialSteps.End;
- iTutorialEvaluateStep();
- break;
- case iTutorialSteps.End:
- break;
- default:
- throw new Error("Invalid tutorial step");
- }
-}
-
-//Go to previous step and evaluate
-function iTutorialPrevStep() {
- switch(currITutorialStep) {
- case iTutorialSteps.Start:
- currITutorialStep = iTutorialSteps.Start;
- iTutorialEvaluateStep();
- break;
- case iTutorialSteps.GoToCharacterPage:
- currITutorialStep = iTutorialSteps.Start;
- iTutorialEvaluateStep();
- break;
- case iTutorialSteps.CharacterPage:
- currITutorialStep = iTutorialSteps.GoToCharacterPage;
- iTutorialEvaluateStep();
- break;
- case iTutorialSteps.CharacterGoToTerminalPage:
- currITutorialStep = iTutorialSteps.CharacterPage;
- iTutorialEvaluateStep();
- break;
- case iTutorialSteps.TerminalIntro:
- currITutorialStep = iTutorialSteps.CharacterGoToTerminalPage;
- iTutorialEvaluateStep();
- break;
- case iTutorialSteps.TerminalHelp:
- currITutorialStep = iTutorialSteps.TerminalIntro;
- iTutorialEvaluateStep();
- break;
- case iTutorialSteps.TerminalLs:
- currITutorialStep = iTutorialSteps.TerminalHelp;
- iTutorialEvaluateStep();
- break;
- case iTutorialSteps.TerminalScan:
- currITutorialStep = iTutorialSteps.TerminalLs;
- iTutorialEvaluateStep();
- break;
- case iTutorialSteps.TerminalConnect:
- currITutorialStep = iTutorialSteps.TerminalScan;
- iTutorialEvaluateStep();
- break;
- case iTutorialSteps.TerminalAnalyze:
- currITutorialStep = iTutorialSteps.TerminalConnect;
- iTutorialEvaluateStep();
- break;
- case iTutorialSteps.TerminalNuke:
- currITutorialStep = iTutorialSteps.TerminalAnalyze;
- iTutorialEvaluateStep();
- break;
- case iTutorialSteps.TerminalManualHack:
- currITutorialStep = iTutorialSteps.TerminalNuke;
- iTutorialEvaluateStep();
- break;
- case iTutorialSteps.TerminalHackingMechanics:
- currITutorialStep = iTutorialSteps.TerminalManualHack;
- iTutorialEvaluateStep();
- break;
- case iTutorialSteps.TerminalCreateScript:
- currITutorialStep = iTutorialSteps.TerminalManualHack;
- iTutorialEvaluateStep();
- break;
- case iTutorialSteps.TerminalTypeScript:
- currITutorialStep = iTutorialSteps.TerminalCreateScript;
- iTutorialEvaluateStep();
- break;
- case iTutorialSteps.TerminalFree:
- currITutorialStep = iTutorialSteps.TerminalTypeScript;
- iTutorialEvaluateStep();
- break;
- case iTutorialSteps.TerminalRunScript:
- currITutorialStep = iTutorialSteps.TerminalFree;
- iTutorialEvaluateStep();
- break;
- case iTutorialSteps.TerminalGoToActiveScriptsPage:
- currITutorialStep = iTutorialSteps.TerminalRunScript;
- iTutorialEvaluateStep();
- break;
- case iTutorialSteps.ActiveScriptsPage:
- currITutorialStep = iTutorialSteps.TerminalGoToActiveScriptsPage;
- iTutorialEvaluateStep();
- break;
- case iTutorialSteps.ActiveScriptsToTerminal:
- currITutorialStep = iTutorialSteps.ActiveScriptsPage;
- iTutorialEvaluateStep();
- break;
- case iTutorialSteps.TerminalTailScript:
- currITutorialStep = iTutorialSteps.ActiveScriptsToTerminal;
- iTutorialEvaluateStep();
- break;
- case iTutorialSteps.GoToHacknetNodesPage:
- currITutorialStep = iTutorialSteps.TerminalTailScript;
- iTutorialEvaluateStep();
- break;
- case iTutorialSteps.HacknetNodesIntroduction:
- currITutorialStep = iTutorialSteps.GoToHacknetNodesPage;
- iTutorialEvaluateStep();
- break;
- case iTutorialSteps.HacknetNodesGoToWorldPage:
- currITutorialStep = iTutorialSteps.HacknetNodesIntroduction;
- iTutorialEvaluateStep();
- break;
- case iTutorialSteps.WorldDescription:
- currITutorialStep = iTutorialSteps.HacknetNodesGoToWorldPage;
- iTutorialEvaluateStep();
- break;
- case iTutorialSteps.TutorialPageInfo:
- currITutorialStep = iTutorialSteps.WorldDescription;
- iTutorialEvaluateStep();
- break;
- case iTutorialSteps.End:
- break;
- default:
- throw new Error("Invalid tutorial step");
- }
-}
-
-function iTutorialEnd() {
- //Re-enable auto save
- _engine_js__WEBPACK_IMPORTED_MODULE_0__["Engine"].Counters.autoSaveCounter = 300;
- console.log("Ending interactive tutorial");
- _engine_js__WEBPACK_IMPORTED_MODULE_0__["Engine"].init();
- currITutorialStep = iTutorialSteps.End;
- iTutorialIsRunning = false;
- document.getElementById("interactive-tutorial-container").style.display = "none";
- Object(_utils_DialogBox_js__WEBPACK_IMPORTED_MODULE_2__["dialogBoxCreate"])("If you are new to the game, the following links may be useful for you!
" +
- "Getting Started Guide" +
- "Wiki
" +
- "The Beginner's Guide to Hacking was added to your home computer! It contains some tips/pointers for starting out with the game. " +
- "To read it, go to Terminal and enter
cat hackers-starting-handbook.lit");
- _Player_js__WEBPACK_IMPORTED_MODULE_1__["Player"].getHomeComputer().messages.push("hackers-starting-handbook.lit");
-}
-
-function iTutorialSetText(txt) {
- var textBox = document.getElementById("interactive-tutorial-text");
- if (textBox == null) {throw new Error("Could not find text box"); return;}
- textBox.innerHTML = txt;
- textBox.parentElement.scrollTop = 0; // this resets scroll position
-}
-
-
-
-
-/***/ }),
-/* 26 */
-/*!***********************!*\
- !*** ./src/Script.js ***!
- \***********************/
-/***/ (function(module, __webpack_exports__, __webpack_require__) {
-
-"use strict";
-__webpack_require__.r(__webpack_exports__);
-/* WEBPACK VAR INJECTION */(function($) {/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "updateScriptEditorContent", function() { return updateScriptEditorContent; });
-/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "loadAllRunningScripts", function() { return loadAllRunningScripts; });
-/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "findRunningScript", function() { return findRunningScript; });
-/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "RunningScript", function() { return RunningScript; });
-/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "Script", function() { return Script; });
-/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "AllServersMap", function() { return AllServersMap; });
-/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "scriptEditorInit", function() { return scriptEditorInit; });
-/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "isScriptFilename", function() { return isScriptFilename; });
-/* harmony import */ var _Constants_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./Constants.js */ 3);
-/* harmony import */ var _engine_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./engine.js */ 5);
-/* harmony import */ var _Fconf_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./Fconf.js */ 33);
-/* harmony import */ var _InteractiveTutorial_js__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./InteractiveTutorial.js */ 25);
-/* harmony import */ var _NetscriptEvaluator_js__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ./NetscriptEvaluator.js */ 6);
-/* harmony import */ var _NetscriptFunctions_js__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ./NetscriptFunctions.js */ 31);
-/* harmony import */ var _NetscriptWorker_js__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! ./NetscriptWorker.js */ 21);
-/* harmony import */ var _Player_js__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! ./Player.js */ 0);
-/* harmony import */ var _Server_js__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! ./Server.js */ 10);
-/* harmony import */ var _Settings_js__WEBPACK_IMPORTED_MODULE_9__ = __webpack_require__(/*! ./Settings.js */ 23);
-/* harmony import */ var _Terminal_js__WEBPACK_IMPORTED_MODULE_10__ = __webpack_require__(/*! ./Terminal.js */ 18);
-/* harmony import */ var _TextFile_js__WEBPACK_IMPORTED_MODULE_11__ = __webpack_require__(/*! ./TextFile.js */ 43);
-/* harmony import */ var _utils_acorn_js__WEBPACK_IMPORTED_MODULE_12__ = __webpack_require__(/*! ../utils/acorn.js */ 36);
-/* harmony import */ var _utils_acorn_js__WEBPACK_IMPORTED_MODULE_12___default = /*#__PURE__*/__webpack_require__.n(_utils_acorn_js__WEBPACK_IMPORTED_MODULE_12__);
-/* harmony import */ var _utils_DialogBox_js__WEBPACK_IMPORTED_MODULE_13__ = __webpack_require__(/*! ../utils/DialogBox.js */ 7);
-/* harmony import */ var _utils_JSONReviver_js__WEBPACK_IMPORTED_MODULE_14__ = __webpack_require__(/*! ../utils/JSONReviver.js */ 8);
-/* harmony import */ var _utils_HelperFunctions_js__WEBPACK_IMPORTED_MODULE_15__ = __webpack_require__(/*! ../utils/HelperFunctions.js */ 1);
-/* harmony import */ var _utils_StringHelperFunctions_js__WEBPACK_IMPORTED_MODULE_16__ = __webpack_require__(/*! ../utils/StringHelperFunctions.js */ 2);
-var ace = __webpack_require__(/*! brace */ 196);
-__webpack_require__(/*! brace/mode/javascript */ 195);
-__webpack_require__(/*! ../netscript */ 194);
-__webpack_require__(/*! brace/theme/chaos */ 193);
-__webpack_require__(/*! brace/theme/chrome */ 192);
-__webpack_require__(/*! brace/theme/monokai */ 191);
-__webpack_require__(/*! brace/theme/solarized_dark */ 190);
-__webpack_require__(/*! brace/theme/solarized_light */ 189);
-__webpack_require__(/*! brace/theme/terminal */ 188);
-__webpack_require__(/*! brace/theme/twilight */ 187);
-__webpack_require__(/*! brace/theme/xcode */ 186);
-__webpack_require__(/*! brace/keybinding/vim */ 185);
-__webpack_require__(/*! brace/keybinding/emacs */ 184);
-__webpack_require__(/*! brace/ext/language_tools */ 183);
-
-// Importing this doesn't work for some reason.
-const walk = __webpack_require__(/*! acorn/dist/walk */ 182);
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-var keybindings = {
- ace: null,
- vim: "ace/keyboard/vim",
- emacs: "ace/keyboard/emacs",
-};
-
-function isScriptFilename(f) {
- return f.endsWith(".js") || f.endsWith(".script") || f.endsWith(".ns");
-}
-
-var scriptEditorRamCheck = null, scriptEditorRamText = null;
-function scriptEditorInit() {
- //Create buttons at the bottom of script editor
- var wrapper = document.getElementById("script-editor-buttons-wrapper");
- if (wrapper == null) {
- console.log("Error finding 'script-editor-buttons-wrapper'");
- return;
- }
- var closeButton = Object(_utils_HelperFunctions_js__WEBPACK_IMPORTED_MODULE_15__["createElement"])("a", {
- class:"a-link-button", display:"inline-block",
- innerText:"Save & Close (Ctrl/Cmd + b)",
- clickListener:()=>{
- saveAndCloseScriptEditor();
- return false;
- }
- });
-
- scriptEditorRamText = Object(_utils_HelperFunctions_js__WEBPACK_IMPORTED_MODULE_15__["createElement"])("p", {
- display:"inline-block", margin:"10px", id:"script-editor-status-text"
- });
-
- var checkboxLabel = Object(_utils_HelperFunctions_js__WEBPACK_IMPORTED_MODULE_15__["createElement"])("label", {
- for:"script-editor-ram-check", margin:"4px", marginTop: "8px",
- innerText:"Dynamic RAM Usage Checker", color:"white",
- tooltip:"Enable/Disable the dynamic RAM Usage display. You may " +
- "want to disable it for very long scripts because there may be " +
- "performance issues"
- });
-
- scriptEditorRamCheck = Object(_utils_HelperFunctions_js__WEBPACK_IMPORTED_MODULE_15__["createElement"])("input", {
- type:"checkbox", name:"script-editor-ram-check", id:"script-editor-ram-check",
- margin:"4px", marginTop: "8px",
- });
- scriptEditorRamCheck.checked = true;
-
- var documentationButton = Object(_utils_HelperFunctions_js__WEBPACK_IMPORTED_MODULE_15__["createElement"])("a", {
- display:"inline-block", class:"a-link-button", innerText:"Netscript Documentation",
- href:"https://bitburner.readthedocs.io/en/latest/index.html",
- target:"_blank"
- });
-
- wrapper.appendChild(closeButton);
- wrapper.appendChild(scriptEditorRamText);
- wrapper.appendChild(scriptEditorRamCheck);
- wrapper.appendChild(checkboxLabel);
- wrapper.appendChild(documentationButton);
-
- //Initialize ACE Script editor
- var editor = ace.edit('javascript-editor');
- editor.getSession().setMode('ace/mode/netscript');
- editor.setTheme('ace/theme/monokai');
- document.getElementById('javascript-editor').style.fontSize='16px';
- editor.setOption("showPrintMargin", false);
-
- /* Script editor options */
- //Theme
- var themeDropdown = document.getElementById("script-editor-option-theme");
- if (_Settings_js__WEBPACK_IMPORTED_MODULE_9__["Settings"].EditorTheme) {
- var initialIndex = 2;
- for (var i = 0; i < themeDropdown.options.length; ++i) {
- if (themeDropdown.options[i].value === _Settings_js__WEBPACK_IMPORTED_MODULE_9__["Settings"].EditorTheme) {
- initialIndex = i;
- break;
- }
- }
- themeDropdown.selectedIndex = initialIndex;
- } else {
- themeDropdown.selectedIndex = 2;
- }
-
- themeDropdown.onchange = function() {
- var val = themeDropdown.value;
- _Settings_js__WEBPACK_IMPORTED_MODULE_9__["Settings"].EditorTheme = val;
- var themePath = "ace/theme/" + val.toLowerCase();
- editor.setTheme(themePath);
- };
- themeDropdown.onchange();
-
- //Keybinding
- var keybindingDropdown = document.getElementById("script-editor-option-keybinding");
- if (_Settings_js__WEBPACK_IMPORTED_MODULE_9__["Settings"].EditorKeybinding) {
- var initialIndex = 0;
- for (var i = 0; i < keybindingDropdown.options.length; ++i) {
- if (keybindingDropdown.options[i].value === _Settings_js__WEBPACK_IMPORTED_MODULE_9__["Settings"].EditorKeybinding) {
- initialIndex = i;
- break;
- }
- }
- keybindingDropdown.selectedIndex = initialIndex;
- } else {
- keybindingDropdown.selectedIndex = 0;
- }
- keybindingDropdown.onchange = function() {
- var val = keybindingDropdown.value;
- _Settings_js__WEBPACK_IMPORTED_MODULE_9__["Settings"].EditorKeybinding = val;
- editor.setKeyboardHandler(keybindings[val.toLowerCase()]);
- };
- keybindingDropdown.onchange();
-
- //Highlight Active line
- var highlightActiveChkBox = document.getElementById("script-editor-option-highlightactiveline");
- highlightActiveChkBox.onchange = function() {
- editor.setHighlightActiveLine(highlightActiveChkBox.checked);
- };
-
- //Show Invisibles
- var showInvisiblesChkBox = document.getElementById("script-editor-option-showinvisibles");
- showInvisiblesChkBox.onchange = function() {
- editor.setShowInvisibles(showInvisiblesChkBox.checked);
- };
-
- //Use Soft Tab
- var softTabChkBox = document.getElementById("script-editor-option-usesofttab");
- softTabChkBox.onchange = function() {
- editor.getSession().setUseSoftTabs(softTabChkBox.checked);
- };
-
- //Jshint Maxerr
- var maxerr = document.getElementById("script-editor-option-maxerr");
- var maxerrLabel = document.getElementById("script-editor-option-maxerror-value-label");
- maxerrLabel.innerHTML = maxerr.value;
- maxerr.onchange = function() {
- editor.getSession().$worker.send("changeOptions", [{maxerr:maxerr.value}]);
- maxerrLabel.innerHTML = maxerr.value;
- }
-
- //Configure some of the VIM keybindings
- ace.config.loadModule('ace/keyboard/vim', function(module) {
- var VimApi = module.CodeMirror.Vim;
- VimApi.defineEx('write', 'w', function(cm, input) {
- saveAndCloseScriptEditor();
- });
- VimApi.defineEx('quit', 'q', function(cm, input) {
- _engine_js__WEBPACK_IMPORTED_MODULE_1__["Engine"].loadTerminalContent();
- });
- VimApi.defineEx('xwritequit', 'x', function(cm, input) {
- saveAndCloseScriptEditor();
- });
- VimApi.defineEx('wqwritequit', 'wq', function(cm, input) {
- saveAndCloseScriptEditor();
- });
- });
-
- //Function autocompleter
- editor.setOption("enableBasicAutocompletion", true);
- var autocompleter = {
- getCompletions: function(editor, session, pos, prefix, callback) {
- if (prefix.length === 0) {callback(null, []); return;}
- var words = [];
- var fns = Object(_NetscriptFunctions_js__WEBPACK_IMPORTED_MODULE_5__["NetscriptFunctions"])(null);
- for (var name in fns) {
- if (fns.hasOwnProperty(name)) {
- words.push({
- name: name,
- value: name,
- });
- }
- }
- callback(null, words);
- },
- }
- editor.completers = [autocompleter];
-}
-
-//Updates RAM usage in script
-function updateScriptEditorContent() {
- var filename = document.getElementById("script-editor-filename").value;
- if (scriptEditorRamCheck == null || !scriptEditorRamCheck.checked || !isScriptFilename(filename)) {
- scriptEditorRamText.innerText = "N/A";
- return;
- }
- var editor = ace.edit('javascript-editor');
- var code = editor.getValue();
- var codeCopy = code.repeat(1);
- var ramUsage = calculateRamUsage(codeCopy);
- if (ramUsage !== -1) {
- scriptEditorRamText.innerText = "RAM: " + Object(_utils_StringHelperFunctions_js__WEBPACK_IMPORTED_MODULE_16__["formatNumber"])(ramUsage, 2).toString() + "GB";
- } else {
- scriptEditorRamText.innerText = "RAM: Syntax Error";
- }
-}
-
-//Define key commands in script editor (ctrl o to save + close, etc.)
-$(document).keydown(function(e) {
- if (_Settings_js__WEBPACK_IMPORTED_MODULE_9__["Settings"].DisableHotkeys === true) {return;}
- if (_engine_js__WEBPACK_IMPORTED_MODULE_1__["Engine"].currentPage == _engine_js__WEBPACK_IMPORTED_MODULE_1__["Engine"].Page.ScriptEditor) {
- //Ctrl + b
- if (e.keyCode == 66 && (e.ctrlKey || e.metaKey)) {
- e.preventDefault();
- saveAndCloseScriptEditor();
- }
- }
-});
-
-function saveAndCloseScriptEditor() {
- var filename = document.getElementById("script-editor-filename").value;
- var editor = ace.edit('javascript-editor');
- var code = editor.getValue();
- if (_InteractiveTutorial_js__WEBPACK_IMPORTED_MODULE_3__["iTutorialIsRunning"] && _InteractiveTutorial_js__WEBPACK_IMPORTED_MODULE_3__["currITutorialStep"] == _InteractiveTutorial_js__WEBPACK_IMPORTED_MODULE_3__["iTutorialSteps"].TerminalTypeScript) {
- if (filename != "foodnstuff.script") {
- Object(_utils_DialogBox_js__WEBPACK_IMPORTED_MODULE_13__["dialogBoxCreate"])("Leave the script name as 'foodnstuff'!");
- return;
- }
- code = code.replace(/\s/g, "");
- if (code.indexOf("while(true){hack('foodnstuff');}") == -1) {
- Object(_utils_DialogBox_js__WEBPACK_IMPORTED_MODULE_13__["dialogBoxCreate"])("Please copy and paste the code from the tutorial!");
- return;
- }
- Object(_InteractiveTutorial_js__WEBPACK_IMPORTED_MODULE_3__["iTutorialNextStep"])();
- }
-
- if (filename == "") {
- Object(_utils_DialogBox_js__WEBPACK_IMPORTED_MODULE_13__["dialogBoxCreate"])("You must specify a filename!");
- return;
- }
-
- if (checkValidFilename(filename) == false) {
- Object(_utils_DialogBox_js__WEBPACK_IMPORTED_MODULE_13__["dialogBoxCreate"])("Script filename can contain only alphanumerics, hyphens, and underscores");
- return;
- }
-
- var s = _Player_js__WEBPACK_IMPORTED_MODULE_7__["Player"].getCurrentServer();
- if (filename === ".fconf") {
- try {
- Object(_Fconf_js__WEBPACK_IMPORTED_MODULE_2__["parseFconfSettings"])(code);
- } catch(e) {
- Object(_utils_DialogBox_js__WEBPACK_IMPORTED_MODULE_13__["dialogBoxCreate"])("Invalid .fconf file");
- return;
- }
- } else if (isScriptFilename(filename)) {
- //If the current script already exists on the server, overwrite it
- for (var i = 0; i < s.scripts.length; i++) {
- if (filename == s.scripts[i].filename) {
- s.scripts[i].saveScript();
- _engine_js__WEBPACK_IMPORTED_MODULE_1__["Engine"].loadTerminalContent();
- return;
- }
- }
-
- //If the current script does NOT exist, create a new one
- var script = new Script();
- script.saveScript();
- s.scripts.push(script);
- } else if (filename.endsWith(".txt")) {
- for (var i = 0; i < s.textFiles.length; ++i) {
- if (s.textFiles[i].fn === filename) {
- s.textFiles[i].write(code);
- _engine_js__WEBPACK_IMPORTED_MODULE_1__["Engine"].loadTerminalContent();
- return;
- }
- }
- var textFile = new _TextFile_js__WEBPACK_IMPORTED_MODULE_11__["TextFile"](filename, code);
- s.textFiles.push(textFile);
- } else {
- Object(_utils_DialogBox_js__WEBPACK_IMPORTED_MODULE_13__["dialogBoxCreate"])("Invalid filename. Must be either a script (.script) or " +
- " or text file (.txt)")
- return;
- }
- _engine_js__WEBPACK_IMPORTED_MODULE_1__["Engine"].loadTerminalContent();
-}
-
-//Checks that the string contains only valid characters for a filename, which are alphanumeric,
-// underscores, hyphens, and dots
-function checkValidFilename(filename) {
- var regex = /^[.a-zA-Z0-9_-]+$/;
-
- if (filename.match(regex)) {
- return true;
- }
- return false;
-}
-
-function Script() {
- this.filename = "";
- this.code = "";
- this.ramUsage = 0;
- this.server = ""; //IP of server this script is on
- this.module = "";
-};
-
-//Get the script data from the Script Editor and save it to the object
-Script.prototype.saveScript = function() {
- if (_engine_js__WEBPACK_IMPORTED_MODULE_1__["Engine"].currentPage == _engine_js__WEBPACK_IMPORTED_MODULE_1__["Engine"].Page.ScriptEditor) {
- //Update code and filename
- var editor = ace.edit('javascript-editor');
- var code = editor.getValue();
- this.code = code.replace(/^\s+|\s+$/g, '');
-
- var filename = document.getElementById("script-editor-filename").value;
- this.filename = filename;
-
- //Server
- this.server = _Player_js__WEBPACK_IMPORTED_MODULE_7__["Player"].currentServer;
-
- //Calculate/update ram usage, execution time, etc.
- this.updateRamUsage();
-
- this.module = "";
- }
-}
-
-//Updates how much RAM the script uses when it is running.
-Script.prototype.updateRamUsage = function() {
- var codeCopy = this.code.repeat(1);
- var res = calculateRamUsage(codeCopy);
- if (res !== -1) {
- this.ramUsage = res;
- }
-}
-
-// These special strings are used to reference the presence of a given logical
-// construct within a user script.
-const specialReferenceIF = "__SPECIAL_referenceIf";
-const specialReferenceFOR = "__SPECIAL_referenceFor";
-const specialReferenceWHILE = "__SPECIAL_referenceWhile";
-
-// The global scope of a script is registered under this key during parsing.
-const memCheckGlobalKey = ".__GLOBAL__";
-
-// Calcluates the amount of RAM a script uses. Uses parsing and AST walking only,
-// rather than NetscriptEvaluator. This is useful because NetscriptJS code does
-// not work under NetscriptEvaluator.
-function parseOnlyRamCalculate(server, code, workerScript) {
- try {
- // Maps dependent identifiers to their dependencies.
- //
- // The initial identifier is __SPECIAL_INITIAL_MODULE__.__GLOBAL__.
- // It depends on all the functions declared in the module, all the global scopes
- // of its imports, and any identifiers referenced in this global scope. Each
- // function depends on all the identifiers referenced internally.
- // We walk the dependency graph to calculate RAM usage, given that some identifiers
- // reference Netscript functions which have a RAM cost.
- let dependencyMap = {};
-
- // Scripts we've parsed.
- const completedParses = new Set();
-
- // Scripts we've discovered that need to be parsed.
- const parseQueue = [];
-
- // Parses a chunk of code with a given module name, and updates parseQueue and dependencyMap.
- function parseCode(code, moduleName) {
- const result = parseOnlyCalculateDeps(code, moduleName);
- completedParses.add(moduleName);
-
- // Add any additional modules to the parse queue;
- for (let i = 0; i < result.additionalModules.length; ++i) {
- if (!completedParses.has(result.additionalModules[i])) {
- parseQueue.push(result.additionalModules[i]);
- }
- }
-
- // Splice all the references in.
- dependencyMap = {...dependencyMap, ...result.dependencyMap};
- }
-
- const initialModule = "__SPECIAL_INITIAL_MODULE__";
- parseCode(code, initialModule);
-
- while (parseQueue.length > 0) {
- // Get the code from the server.
- const nextModule = parseQueue.shift();
-
- const script = server.getScript(nextModule);
- if (!script) return -1; // No such script on the server.
-
- // Not sure why we always take copies, but let's do that here too.
- parseCode(script.code.repeat(1), nextModule);
- }
-
- // Finally, walk the reference map and generate a ram cost. The initial set of keys to scan
- // are those that start with __SPECIAL_INITIAL_MODULE__.
- let ram = _Constants_js__WEBPACK_IMPORTED_MODULE_0__["CONSTANTS"].ScriptBaseRamCost;
- const unresolvedRefs = Object.keys(dependencyMap).filter(s => s.startsWith(initialModule));
- const resolvedRefs = new Set();
- while (unresolvedRefs.length > 0) {
- const ref = unresolvedRefs.shift();
- resolvedRefs.add(ref);
-
- if (ref.endsWith(".*")) {
- // A prefix reference. We need to find all matching identifiers.
- const prefix = ref.slice(0, ref.length - 2);
- for (let ident of Object.keys(dependencyMap).filter(k => k.startsWith(prefix))) {
- for (let dep of dependencyMap[ident] || []) {
- if (!resolvedRefs.has(dep)) unresolvedRefs.push(dep);
- }
- }
- } else {
- // An exact reference. Add all dependencies of this ref.
- for (let dep of dependencyMap[ref] || []) {
- if (!resolvedRefs.has(dep)) unresolvedRefs.push(dep);
- }
- }
-
- // Check if this is one of the special keys, and add the appropriate ram cost if so.
- if (ref == specialReferenceIF) ram += _Constants_js__WEBPACK_IMPORTED_MODULE_0__["CONSTANTS"].ScriptIfRamCost;
- if (ref == specialReferenceFOR) ram += _Constants_js__WEBPACK_IMPORTED_MODULE_0__["CONSTANTS"].ScriptForRamCost;
- if (ref == specialReferenceWHILE) ram += _Constants_js__WEBPACK_IMPORTED_MODULE_0__["CONSTANTS"].ScriptWhileRamCost;
- if (ref == "hacknetnodes") ram += _Constants_js__WEBPACK_IMPORTED_MODULE_0__["CONSTANTS"].ScriptHacknetNodesRamCost;
-
- // Check if this ident is a function in the workerscript env. If it is, then we need to
- // get its RAM cost. We do this by calling it, which works because the running script
- // is in checkingRam mode.
- //
- // TODO it would be simpler to just reference a dictionary.
- try {
- var func = workerScript.env.get(ref);
- if (typeof func === "function") {
- try {
- var res = func.apply(null, []);
- if (typeof res === "number") {
- ram += res;
- }
- } catch(e) {
- console.log("ERROR applying function: " + e);
- }
- }
- } catch (error) { continue; }
-
- }
- return ram;
-
- } catch (error) {
- console.info("parse or eval error: ", error);
- // This is not unexpected. The user may be editing a script, and it may be in
- // a transitory invalid state.
- return -1;
- }
-}
-
-// Parses one script and calculates its ram usage, for the global scope and each function.
-// Returns a cost map and a dependencyMap for the module. Returns a reference map to be joined
-// onto the main reference map, and a list of modules that need to be parsed.
-function parseOnlyCalculateDeps(code, currentModule) {
- const ast = Object(_utils_acorn_js__WEBPACK_IMPORTED_MODULE_12__["parse"])(code, {sourceType:"module", ecmaVersion: 8});
-
- // Everything from the global scope goes in ".". Everything else goes in ".function", where only
- // the outermost layer of functions counts.
- const globalKey = currentModule + memCheckGlobalKey;
- const dependencyMap = {};
- dependencyMap[globalKey] = new Set();
-
- // If we reference this internal name, we're really referencing that external name.
- // Filled when we import names from other modules.
- let internalToExternal = {};
-
- var additionalModules = [];
-
- // References get added pessimistically. They are added for thisModule.name, name, and for
- // any aliases.
- function addRef(key, name) {
- const s = dependencyMap[key] || (dependencyMap[key] = new Set());
- if (name in internalToExternal) {
- s.add(internalToExternal[name]);
- }
- s.add(currentModule + "." + name);
- s.add(name); // For builtins like hack.
- }
-
- // If we discover a dependency identifier, state.key is the dependent identifier.
- // walkDeeper is for doing recursive walks of expressions in composites that we handle.
- function commonVisitors() {
- return {
- Identifier: (node, st, walkDeeper) => {
- addRef(st.key, node.name);
- },
- WhileStatement: (node, st, walkDeeper) => {
- addRef(st.key, specialReferenceWHILE);
- node.test && walkDeeper(node.test, st);
- node.body && walkDeeper(node.body, st);
- },
- DoWhileStatement: (node, st, walkDeeper) => {
- addRef(st.key, specialReferenceWHILE);
- node.test && walkDeeper(node.test, st);
- node.body && walkDeeper(node.body, st);
- },
- ForStatement: (node, st, walkDeeper) => {
- addRef(st.key, specialReferenceFOR);
- node.init && walkDeeper(node.init, st);
- node.test && walkDeeper(node.test, st);
- node.update && walkDeeper(node.update, st);
- node.body && walkDeeper(node.body, st);
- },
- IfStatement: (node, st, walkDeeper) => {
- addRef(st.key, specialReferenceIF);
- node.test && walkDeeper(node.test, st);
- node.consequent && walkDeeper(node.consequent, st);
- node.alternate && walkDeeper(node.alternate, st);
- },
- MemberExpression: (node, st, walkDeeper) => {
- node.object && walkDeeper(node.object, st);
- node.property && walkDeeper(node.property, st);
- },
- }
- }
-
- walk.recursive(ast, {key: globalKey}, {
- ImportDeclaration: (node, st, walkDeeper) => {
- const importModuleName = node.source.value;
- additionalModules.push(importModuleName);
-
- // This module's global scope refers to that module's global scope, no matter how we
- // import it.
- dependencyMap[st.key].add(importModuleName + memCheckGlobalKey);
-
- for (let i = 0; i < node.specifiers.length; ++i) {
- const spec = node.specifiers[i];
- if (spec.imported !== undefined && spec.local !== undefined) {
- // We depend on specific things.
- internalToExternal[spec.local.name] = importModuleName + "." + spec.imported.name;
- } else {
- // We depend on everything.
- dependencyMap[st.key].add(importModuleName + ".*");
- }
- }
- },
- FunctionDeclaration: (node, st, walkDeeper) => {
- // Don't use walkDeeper, because we are changing the visitor set.
- const key = currentModule + "." + node.id.name;
- walk.recursive(node, {key: key}, commonVisitors());
- },
- ...commonVisitors()
- });
-
- return {dependencyMap: dependencyMap, additionalModules: additionalModules};
-}
-
-function calculateRamUsage(codeCopy) {
- //Create a temporary/mock WorkerScript and an AST from the code
- var currServ = _Player_js__WEBPACK_IMPORTED_MODULE_7__["Player"].getCurrentServer();
- var workerScript = new _NetscriptWorker_js__WEBPACK_IMPORTED_MODULE_6__["WorkerScript"]({
- filename:"foo",
- scriptRef: {code:""},
- args:[]
- });
- workerScript.checkingRam = true; //Netscript functions will return RAM usage
- workerScript.serverIp = currServ.ip;
-
- try {
- return parseOnlyRamCalculate(currServ, codeCopy, workerScript);
- } catch (e) {
- console.log("Failed to parse ram using new method. Falling back.", e);
- }
-
- // Try the old way.
-
- try {
- var ast = Object(_utils_acorn_js__WEBPACK_IMPORTED_MODULE_12__["parse"])(codeCopy, {sourceType:"module"});
- } catch(e) {
- return -1;
- }
-
- //Search through AST, scanning for any 'Identifier' nodes for functions, or While/For/If nodes
- var queue = [], ramUsage = _Constants_js__WEBPACK_IMPORTED_MODULE_0__["CONSTANTS"].ScriptBaseRamCost;
- var whileUsed = false, forUsed = false, ifUsed = false;
- queue.push(ast);
- while (queue.length != 0) {
- var exp = queue.shift();
- switch (exp.type) {
- case "ImportDeclaration":
- //Gets an array of all imported functions as AST expressions
- //and pushes them on the queue.
- var res = Object(_NetscriptEvaluator_js__WEBPACK_IMPORTED_MODULE_4__["evaluateImport"])(exp, workerScript, true);
- for (var i = 0; i < res.length; ++i) {
- queue.push(res[i]);
- }
- break;
- case "BlockStatement":
- case "Program":
- for (var i = 0; i < exp.body.length; ++i) {
- if (exp.body[i] instanceof _utils_acorn_js__WEBPACK_IMPORTED_MODULE_12__["Node"]) {
- queue.push(exp.body[i]);
- }
- }
- break;
- case "WhileStatement":
- if (!whileUsed) {
- ramUsage += _Constants_js__WEBPACK_IMPORTED_MODULE_0__["CONSTANTS"].ScriptWhileRamCost;
- whileUsed = true;
- }
- break;
- case "ForStatement":
- if (!forUsed) {
- ramUsage += _Constants_js__WEBPACK_IMPORTED_MODULE_0__["CONSTANTS"].ScriptForRamCost;
- forUsed = true;
- }
- break;
- case "IfStatement":
- if (!ifUsed) {
- ramUsage += _Constants_js__WEBPACK_IMPORTED_MODULE_0__["CONSTANTS"].ScriptIfRamCost;
- ifUsed = true;
- }
- break;
- case "Identifier":
- if (exp.name in workerScript.env.vars) {
- var func = workerScript.env.get(exp.name);
- if (typeof func === "function") {
- try {
- var res = func.apply(null, []);
- if (typeof res === "number") {
- ramUsage += res;
- }
- } catch(e) {
- console.log("ERROR applying function: " + e);
- }
- }
- }
- break;
- default:
- break;
- }
-
- for (var prop in exp) {
- if (exp.hasOwnProperty(prop)) {
- if (exp[prop] instanceof _utils_acorn_js__WEBPACK_IMPORTED_MODULE_12__["Node"]) {
- queue.push(exp[prop]);
- }
- }
- }
- }
-
- //Special case: hacknetnodes array
- if (codeCopy.includes("hacknetnodes")) {
- ramUsage += _Constants_js__WEBPACK_IMPORTED_MODULE_0__["CONSTANTS"].ScriptHacknetNodesRamCost;
- }
- return ramUsage;
-}
-
-Script.prototype.download = function() {
- var filename = this.filename + ".js";
- var file = new Blob([this.code], {type: 'text/plain'});
- if (window.navigator.msSaveOrOpenBlob) {// IE10+
- window.navigator.msSaveOrOpenBlob(file, filename);
- } else { // Others
- var a = document.createElement("a"),
- url = URL.createObjectURL(file);
- a.href = url;
- a.download = filename;
- document.body.appendChild(a);
- a.click();
- setTimeout(function() {
- document.body.removeChild(a);
- window.URL.revokeObjectURL(url);
- }, 0);
- }
-}
-
-Script.prototype.toJSON = function() {
- return Object(_utils_JSONReviver_js__WEBPACK_IMPORTED_MODULE_14__["Generic_toJSON"])("Script", this);
-}
-
-
-Script.fromJSON = function(value) {
- return Object(_utils_JSONReviver_js__WEBPACK_IMPORTED_MODULE_14__["Generic_fromJSON"])(Script, value.data);
-}
-
-_utils_JSONReviver_js__WEBPACK_IMPORTED_MODULE_14__["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
-function loadAllRunningScripts() {
- var count = 0;
- var total = 0;
- let skipScriptLoad = (window.location.href.toLowerCase().indexOf("?noscripts") !== -1);
- if (skipScriptLoad) {console.log("Skipping the load of any scripts during startup");}
- for (var property in _Server_js__WEBPACK_IMPORTED_MODULE_8__["AllServers"]) {
- if (_Server_js__WEBPACK_IMPORTED_MODULE_8__["AllServers"].hasOwnProperty(property)) {
- var server = _Server_js__WEBPACK_IMPORTED_MODULE_8__["AllServers"][property];
-
- //Reset each server's RAM usage to 0
- server.ramUsed = 0;
-
- //Reset modules on all scripts
- for (var i = 0; i < server.scripts.length; ++i) {
- server.scripts[i].module = "";
- }
-
- if (skipScriptLoad) {
- //Start game with no scripts
- server.runningScripts.length = 0;
- } else {
- for (var j = 0; j < server.runningScripts.length; ++j) {
- count++;
- server.runningScripts[j].scriptRef.module = "";
- Object(_NetscriptWorker_js__WEBPACK_IMPORTED_MODULE_6__["addWorkerScript"])(server.runningScripts[j], server);
-
- //Offline production
- total += scriptCalculateOfflineProduction(server.runningScripts[j]);
- }
- }
- }
- }
- return total;
- console.log("Loaded " + count.toString() + " running scripts");
-}
-
-function scriptCalculateOfflineProduction(runningScriptObj) {
- //The Player object stores the last update time from when we were online
- var thisUpdate = new Date().getTime();
- var lastUpdate = _Player_js__WEBPACK_IMPORTED_MODULE_7__["Player"].lastUpdate;
- var timePassed = (thisUpdate - lastUpdate) / 1000; //Seconds
- console.log("Offline for " + timePassed + " seconds");
-
- //Calculate the "confidence" rating of the script's true production. This is based
- //entirely off of time. We will arbitrarily say that if a script has been running for
- //4 hours (14400 sec) then we are completely confident in its ability
- var confidence = (runningScriptObj.onlineRunningTime) / 14400;
- if (confidence >= 1) {confidence = 1;}
-
- //Data map: [MoneyStolen, NumTimesHacked, NumTimesGrown, NumTimesWeaken]
-
- //Grow
- for (var ip in runningScriptObj.dataMap) {
- if (runningScriptObj.dataMap.hasOwnProperty(ip)) {
- if (runningScriptObj.dataMap[ip][2] == 0 || runningScriptObj.dataMap[ip][2] == null) {continue;}
- var serv = _Server_js__WEBPACK_IMPORTED_MODULE_8__["AllServers"][ip];
- if (serv == null) {continue;}
- var timesGrown = Math.round(0.5 * runningScriptObj.dataMap[ip][2] / runningScriptObj.onlineRunningTime * timePassed);
- 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(_Server_js__WEBPACK_IMPORTED_MODULE_8__["processSingleServerGrowth"])(serv, timesGrown * 450);
- runningScriptObj.log(serv.hostname + " grown by " + Object(_utils_StringHelperFunctions_js__WEBPACK_IMPORTED_MODULE_16__["formatNumber"])(growth * 100 - 100, 6) + "% from grow() calls made while offline");
- }
- }
-
- var totalOfflineProduction = 0;
- for (var ip in runningScriptObj.dataMap) {
- if (runningScriptObj.dataMap.hasOwnProperty(ip)) {
- if (runningScriptObj.dataMap[ip][0] == 0 || runningScriptObj.dataMap[ip][0] == null) {continue;}
- var serv = _Server_js__WEBPACK_IMPORTED_MODULE_8__["AllServers"][ip];
- if (serv == null) {continue;}
- var production = 0.5 * runningScriptObj.dataMap[ip][0] / runningScriptObj.onlineRunningTime * timePassed;
- production *= confidence;
- if (production > serv.moneyAvailable) {
- production = serv.moneyAvailable;
- }
- totalOfflineProduction += production;
- _Player_js__WEBPACK_IMPORTED_MODULE_7__["Player"].gainMoney(production);
- console.log(runningScriptObj.filename + " generated $" + production + " while offline by hacking " + serv.hostname);
- runningScriptObj.log(runningScriptObj.filename + " generated $" + production + " while offline by hacking " + serv.hostname);
- serv.moneyAvailable -= production;
- if (serv.moneyAvailable < 0) {serv.moneyAvailable = 0;}
- if (isNaN(serv.moneyAvailable)) {serv.moneyAvailable = 0;}
- }
- }
-
- //Offline EXP gain
- //A script's offline production will always be at most half of its online production.
- var expGain = 0.5 * (runningScriptObj.onlineExpGained / runningScriptObj.onlineRunningTime) * timePassed;
- expGain *= confidence;
-
- _Player_js__WEBPACK_IMPORTED_MODULE_7__["Player"].gainHackingExp(expGain);
-
- //Update script stats
- runningScriptObj.offlineMoneyMade += totalOfflineProduction;
- runningScriptObj.offlineRunningTime += timePassed;
- runningScriptObj.offlineExpGained += expGain;
-
- //Fortify a server's security based on how many times it was hacked
- for (var ip in runningScriptObj.dataMap) {
- if (runningScriptObj.dataMap.hasOwnProperty(ip)) {
- if (runningScriptObj.dataMap[ip][1] == 0 || runningScriptObj.dataMap[ip][1] == null) {continue;}
- var serv = _Server_js__WEBPACK_IMPORTED_MODULE_8__["AllServers"][ip];
- if (serv == null) {continue;}
- var timesHacked = Math.round(0.5 * runningScriptObj.dataMap[ip][1] / runningScriptObj.onlineRunningTime * timePassed);
- console.log(runningScriptObj.filename + " hacked " + serv.hostname + " " + timesHacked + " times while offline");
- runningScriptObj.log("Hacked " + serv.hostname + " " + timesHacked + " times while offline");
- serv.fortify(_Constants_js__WEBPACK_IMPORTED_MODULE_0__["CONSTANTS"].ServerFortifyAmount * timesHacked);
- }
- }
-
- //Weaken
- for (var ip in runningScriptObj.dataMap) {
- if (runningScriptObj.dataMap.hasOwnProperty(ip)) {
- if (runningScriptObj.dataMap[ip][3] == 0 || runningScriptObj.dataMap[ip][3] == null) {continue;}
- var serv = _Server_js__WEBPACK_IMPORTED_MODULE_8__["AllServers"][ip];
- if (serv == null) {continue;}
- var timesWeakened = Math.round(0.5 * runningScriptObj.dataMap[ip][3] / runningScriptObj.onlineRunningTime * timePassed);
- console.log(runningScriptObj.filename + " called weaken() on " + serv.hostname + " " + timesWeakened + " times while offline");
- runningScriptObj.log("Called weaken() on " + serv.hostname + " " + timesWeakened + " times while offline");
- serv.weaken(_Constants_js__WEBPACK_IMPORTED_MODULE_0__["CONSTANTS"].ServerWeakenAmount * timesWeakened);
- }
- }
-
- return totalOfflineProduction;
-}
-
-//Returns a RunningScript object matching the filename and arguments on the
-//designated server, and false otherwise
-function findRunningScript(filename, args, server) {
- for (var i = 0; i < server.runningScripts.length; ++i) {
- if (server.runningScripts[i].filename == filename &&
- Object(_utils_HelperFunctions_js__WEBPACK_IMPORTED_MODULE_15__["compareArrays"])(server.runningScripts[i].args, args)) {
- return server.runningScripts[i];
- }
- }
- return null;
-}
-
-function RunningScript(script, args) {
- if (script == null || script == undefined) {return;}
- this.filename = script.filename;
- this.args = args;
- this.scriptRef = script;
- this.server = script.server; //IP Address only
-
- this.logs = []; //Script logging. Array of strings, with each element being a log entry
- this.logUpd = false;
-
- //Stats to display on the Scripts menu, and used to determine offline progress
- this.offlineRunningTime = 0.01; //Seconds
- this.offlineMoneyMade = 0;
- this.offlineExpGained = 0;
- this.onlineRunningTime = 0.01; //Seconds
- this.onlineMoneyMade = 0;
- this.onlineExpGained = 0;
-
- this.threads = 1;
-
- //[MoneyStolen, NumTimesHacked, NumTimesGrown, NumTimesWeaken]
- this.dataMap = new AllServersMap([0, 0, 0, 0], true);
-}
-
-RunningScript.prototype.log = function(txt) {
- if (this.logs.length > _Settings_js__WEBPACK_IMPORTED_MODULE_9__["Settings"].MaxLogCapacity) {
- //Delete first element and add new log entry to the end.
- //TODO Eventually it might be better to replace this with circular array
- //to improve performance
- this.logs.shift();
- }
- let logEntry = txt;
- if (_Fconf_js__WEBPACK_IMPORTED_MODULE_2__["FconfSettings"].ENABLE_TIMESTAMPS) {
- logEntry = "[" + _Terminal_js__WEBPACK_IMPORTED_MODULE_10__["Terminal"].getTimestamp() + "] " + logEntry;
- }
- this.logs.push(logEntry);
- this.logUpd = true;
-}
-
-RunningScript.prototype.displayLog = function() {
- for (var i = 0; i < this.logs.length; ++i) {
- Object(_Terminal_js__WEBPACK_IMPORTED_MODULE_10__["post"])(this.logs[i]);
- }
-}
-
-RunningScript.prototype.clearLog = function() {
- this.logs.length = 0;
-}
-
-//Update the moneyStolen and numTimesHack maps when hacking
-RunningScript.prototype.recordHack = function(serverIp, moneyGained, n=1) {
- if (this.dataMap == null) {
- //[MoneyStolen, NumTimesHacked, NumTimesGrown, NumTimesWeaken]
- this.dataMap = new AllServersMap([0, 0, 0, 0], true);
- }
- this.dataMap[serverIp][0] += moneyGained;
- this.dataMap[serverIp][1] += n;
-}
-
-//Update the grow map when calling grow()
-RunningScript.prototype.recordGrow = function(serverIp, n=1) {
- if (this.dataMap == null) {
- //[MoneyStolen, NumTimesHacked, NumTimesGrown, NumTimesWeaken]
- this.dataMap = new AllServersMap([0, 0, 0, 0], true);
- }
- this.dataMap[serverIp][2] += n;
-}
-
-//Update the weaken map when calling weaken() {
-RunningScript.prototype.recordWeaken = function(serverIp, n=1) {
- if (this.dataMap == null) {
- //[MoneyStolen, NumTimesHacked, NumTimesGrown, NumTimesWeaken]
- this.dataMap = new AllServersMap([0, 0, 0, 0], true);
- }
- this.dataMap[serverIp][3] += n;
-}
-
-RunningScript.prototype.toJSON = function() {
- return Object(_utils_JSONReviver_js__WEBPACK_IMPORTED_MODULE_14__["Generic_toJSON"])("RunningScript", this);
-}
-
-
-RunningScript.fromJSON = function(value) {
- return Object(_utils_JSONReviver_js__WEBPACK_IMPORTED_MODULE_14__["Generic_fromJSON"])(RunningScript, value.data);
-}
-
-_utils_JSONReviver_js__WEBPACK_IMPORTED_MODULE_14__["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
-function AllServersMap(arr=false, filterOwned=false) {
- for (var ip in _Server_js__WEBPACK_IMPORTED_MODULE_8__["AllServers"]) {
- if (_Server_js__WEBPACK_IMPORTED_MODULE_8__["AllServers"].hasOwnProperty(ip)) {
- if (filterOwned && (_Server_js__WEBPACK_IMPORTED_MODULE_8__["AllServers"][ip].purchasedByPlayer || _Server_js__WEBPACK_IMPORTED_MODULE_8__["AllServers"][ip].hostname === "home")) {
- continue;
- }
- if (arr) {
- this[ip] = [0, 0, 0, 0];
- } else {
- this[ip] = 0;
- }
- }
- }
-}
-
-AllServersMap.prototype.toJSON = function() {
- return Object(_utils_JSONReviver_js__WEBPACK_IMPORTED_MODULE_14__["Generic_toJSON"])("AllServersMap", this);
-}
-
-
-AllServersMap.fromJSON = function(value) {
- return Object(_utils_JSONReviver_js__WEBPACK_IMPORTED_MODULE_14__["Generic_fromJSON"])(AllServersMap, value.data);
-}
-
-_utils_JSONReviver_js__WEBPACK_IMPORTED_MODULE_14__["Reviver"].constructors.AllServersMap = AllServersMap;
-
-
-
-/* WEBPACK VAR INJECTION */}.call(this, __webpack_require__(/*! jquery */ 39)))
-
-/***/ }),
-/* 27 */
-/*!****************************!*\
- !*** ./src/Bladeburner.js ***!
- \****************************/
-/***/ (function(module, __webpack_exports__, __webpack_require__) {
-
-"use strict";
-__webpack_require__.r(__webpack_exports__);
-/* WEBPACK VAR INJECTION */(function($) {/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "Bladeburner", function() { return Bladeburner; });
-/* harmony import */ var _Constants_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./Constants.js */ 3);
-/* harmony import */ var _engine_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./engine.js */ 5);
-/* harmony import */ var _Faction_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./Faction.js */ 11);
-/* harmony import */ var _Location_js__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./Location.js */ 4);
-/* harmony import */ var _Player_js__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ./Player.js */ 0);
-/* harmony import */ var _RedPill_js__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ./RedPill.js */ 45);
-/* harmony import */ var _Terminal_js__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! ./Terminal.js */ 18);
-/* harmony import */ var _utils_DialogBox_js__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! ../utils/DialogBox.js */ 7);
-/* harmony import */ var _utils_HelperFunctions_js__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! ../utils/HelperFunctions.js */ 1);
-/* harmony import */ var _utils_JSONReviver_js__WEBPACK_IMPORTED_MODULE_9__ = __webpack_require__(/*! ../utils/JSONReviver.js */ 8);
-/* harmony import */ var _utils_numeral_min_js__WEBPACK_IMPORTED_MODULE_10__ = __webpack_require__(/*! ../utils/numeral.min.js */ 13);
-/* harmony import */ var _utils_numeral_min_js__WEBPACK_IMPORTED_MODULE_10___default = /*#__PURE__*/__webpack_require__.n(_utils_numeral_min_js__WEBPACK_IMPORTED_MODULE_10__);
-/* harmony import */ var _utils_StringHelperFunctions_js__WEBPACK_IMPORTED_MODULE_11__ = __webpack_require__(/*! ../utils/StringHelperFunctions.js */ 2);
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-var CityNames = ["Aevum", "Chongqing", "Sector-12", "New Tokyo", "Ishima", "Volhaven"];
-
-var CyclesPerSecond = 5; //Game cycle is 200 ms
-
-var StaminaGainPerSecond = 0.0085;
-var BaseStaminaLoss = 0.285; //Base stamina loss per action. Increased based on difficulty
-var MaxStaminaToGainFactor = 70000; //Max Stamina is divided by this to get bonus stamina gain
-
-var DifficultyToTimeFactor = 10; //Action Difficulty divided by this to get base action time
-
-//The difficulty multiplier affects stamina loss and hp loss of an action. Its formula is:
-//difficulty ^ exponentialFactor + difficulty / linearFactor
-var DiffMultExponentialFactor = 0.28;
-var DiffMultLinearFactor = 670;
-
-var BaseRecruitmentTimeNeeded = 300; //Base time needed (s) to complete a Recruitment action
-
-var PopulationThreshold = 1e9; //Population at which success rates start being affected
-var ChaosThreshold = 50; //City chaos level after which it starts making tasks harder
-
-var BaseStatGain = 1; //Base stat gain per second
-var BaseIntGain = 0.001; //Base intelligence stat gain
-
-var ActionCountGrowthPeriod = 300; //Time (s) it takes for action count to grow by its specified value
-
-var RankToFactionRepFactor = 2; //Delta Faction Rep = this * Delta Rank
-
-var ContractSuccessesPerLevel = 15; //How many successes you need to level up a contract
-var OperationSuccessesPerLevel = 10; //How many successes you need to level up an op
-
-var RanksPerSkillPoint = 4; //How many ranks needed to get 1 Skill Point
-
-var ContractBaseMoneyGain = 5e3; //Base Money Gained per contract
-
-//DOM related variables
-var ActiveActionCssClass = "bladeburner-active-action";
-
-//Console related stuff
-var consoleHistory = []; //Console command history
-var consoleHistoryIndex = 0;
-var consoleHelpText = {
- helpList:"Use 'help [command]' to get more information about a particular Bladeburner console command.
" +
- "automate [var] [val] [hi/low] Configure simple automation for Bladeburner tasks
" +
- "clear/cls Clear the console
" +
- "help [cmd] Display this help text, or help text for a specific command
" +
- "log [en/dis] [type] Enable or disable logging for events and actions
" +
- "skill [action] [name] Level or display info about your Bladeburner skills
" +
- "start [type] [name] Start a Bladeburner action/task
" +
- "stop Stops your current Bladeburner action/task
",
- automate:"automate [var] [val] [hi/low]
" +
- "A simple way to automate your Bladeburner actions. This console command can be used " +
- "to automatically start an action when your stamina rises above a certain threshold, and " +
- "automatically switch to another action when your stamina drops below another threshold.
" +
- "automate status - Check the current status of your automation and get a brief description of what it'll do
" +
- "automate en - Enable the automation feature
" +
- "automate dis - Disable the automation feature
" +
- "There are four properties that must be set for this automation to work properly. Here is how to set them:
" +
- "automate stamina 100 high
" +
- "automate contract Tracking high
" +
- "automate stamina 50 low
" +
- 'automate general "Field Analysis" low
' +
- "Using the four console commands above will set the automation to perform Tracking contracts " +
- "if your stamina is 100 or higher, and then switch to Field Analysis if your stamina drops below " +
- "50. Note that when setting the action, the name of the action is CASE-SENSITIVE. It must " +
- "exactly match whatever the name is in the UI.",
- clear:"clear
Clears the console",
- cls:"cls
Clears the console",
- help:"help [command]
" +
- "Running 'help' with no arguments displays the general help text, which lists all console commands " +
- "and a brief description of what they do. A command can be specified to get more specific help text " +
- "about that particular command. For example:
" +
- "help automate
" +
- "will display specific information about using the automate console command",
- log:"log [en/dis] [type]
" +
- "Enable or disable logging. By default, the results of completing actions such as contracts/operations are logged " +
- "in the console. There are also random events that are logged in the console as well. The five categories of " +
- "things that get logged are:
" +
- "[general, contracts, ops, blackops, events]
" +
- "The logging for these categories can be enabled or disabled like so:
" +
- "log dis contracts - Disables logging that occurs when contracts are completed
" +
- "log en contracts - Enables logging that occurs when contracts are completed
" +
- "log dis events - Disables logging for Bladeburner random events
" +
- "Logging can be universally enabled/disabled using the 'all' keyword:
" +
- "log dis all
" +
- "log en all",
- skill:"skill [action] [name]
" +
- "Level or display information about your skills.
" +
- "To display information about all of your skills and your multipliers, use:
" +
- "skill list
" +
- "To display information about a specific skill, specify the name of the skill afterwards. " +
- "Note that the name of the skill is case-sensitive. Enter it exactly as seen in the UI. If " +
- "the name of the skill has whitespace, enclose the name of the skill in double quotation marks:
" +
- "skill list Reaper
" +
- 'skill list "Digital Observer"
' +
- "This console command can also be used to level up skills:
" +
- "skill level [skill name]",
- start:"start [type] [name]
" +
- "Start an action. An action is specified by its type and its name. The " +
- "name is case-sensitive. It must appear exactly as it does in the UI. If " +
- "the name of the action has whitespace, enclose it in double quotation marks. " +
- "Valid action types include:
" +
- "[general, contract, op, blackop]
" +
- "Examples:
" +
- 'start contract Tracking
' +
- 'start op "Undercover Operation"
',
- stop:"stop
" +
- "Stop your current action and go idle",
-}
-
-//Keypresses for Console
-$(document).keydown(function(event) {
- if (_engine_js__WEBPACK_IMPORTED_MODULE_1__["Engine"].currentPage === _engine_js__WEBPACK_IMPORTED_MODULE_1__["Engine"].Page.Bladeburner) {
- //if (DomElems.consoleInput && !event.ctrlKey && !event.shiftKey && !event.altKey) {
- // DomElems.consoleInput.focus();
- //}
-
- if (!(_Player_js__WEBPACK_IMPORTED_MODULE_4__["Player"].bladeburner instanceof Bladeburner)) {return;}
-
- //NOTE: Keycodes imported from Terminal.js
- if (event.keyCode === _Terminal_js__WEBPACK_IMPORTED_MODULE_6__["KEY"].ENTER) {
- event.preventDefault();
- var command = DomElems.consoleInput.value;
- if (command.length > 0) {
- _Player_js__WEBPACK_IMPORTED_MODULE_4__["Player"].bladeburner.postToConsole("> " + command);
- _Player_js__WEBPACK_IMPORTED_MODULE_4__["Player"].bladeburner.resetConsoleInput();
- _Player_js__WEBPACK_IMPORTED_MODULE_4__["Player"].bladeburner.executeConsoleCommands(command);
- }
- }
-
- if (event.keyCode === _Terminal_js__WEBPACK_IMPORTED_MODULE_6__["KEY"].UPARROW) {
- if (DomElems.consoleInput == null) {return;}
- var i = consoleHistoryIndex;
- var len = consoleHistory.length;
-
- if (len === 0) {return;}
- if (i < 0 || i > len) {
- consoleHistoryIndex = len;
- }
-
- if (i !== 0) {
- --consoleHistoryIndex;
- }
-
- var prevCommand = consoleHistory[consoleHistoryIndex];
- DomElems.consoleInput.value = prevCommand;
- setTimeout(function(){DomElems.consoleInput.selectionStart = DomElems.consoleInput.selectionEnd = 10000; }, 0);
- }
-
- if (event.keyCode === _Terminal_js__WEBPACK_IMPORTED_MODULE_6__["KEY"].DOWNARROW) {
- if (DomElems.consoleInput == null) {return;}
- var i = consoleHistoryIndex;
- var len = consoleHistory.length;
-
- if (len == 0) {return;}
- if (i < 0 || i > len) {
- consoleHistoryIndex = len;
- }
-
- //Latest command, put nothing
- if (i == len || i == len-1) {
- consoleHistoryIndex = len;
- DomElems.consoleInput.value = "";
- } else {
- ++consoleHistoryIndex;
- var prevCommand = consoleHistory[consoleHistoryIndex];
- DomElems.consoleInput.value = prevCommand;
- }
- }
- }
-});
-
-function City(params={}) {
- this.name = params.name ? params.name : _Location_js__WEBPACK_IMPORTED_MODULE_3__["Locations"].Sector12;
-
- //Synthoid population and estimate
- this.pop = params.pop ? params.pop : Object(_utils_HelperFunctions_js__WEBPACK_IMPORTED_MODULE_8__["getRandomInt"])(800e6, 1.2*PopulationThreshold);
- this.popEst = this.pop * (Math.random() + 0.5);
-
- //Number of Synthoid communities population and estimate
- this.comms = params.comms ? params.comms : Object(_utils_HelperFunctions_js__WEBPACK_IMPORTED_MODULE_8__["getRandomInt"])(1, 40);
- this.commsEst = this.comms + Object(_utils_HelperFunctions_js__WEBPACK_IMPORTED_MODULE_8__["getRandomInt"])(-2, 2);
- if (this.commsEst < 0) {this.commsEst = 0;}
- this.chaos = 0;
-}
-
-City.prototype.improvePopulationEstimateByCount = function(n) {
- if (isNaN(n)) {throw new Error("NaN passeed into City.improvePopulationEstimateByCount()");}
- if (this.popEst < this.pop) {
- this.popEst += n;
- if (this.popEst > this.pop) {this.popEst = this.pop;}
- } else if (this.popEst > this.pop) {
- this.popEst -= n;
- if (this.popEst < this.pop) {this.popEst = this.pop;}
- }
-}
-
-//@p is the percentage, not the multiplier. e.g. pass in p = 5 for 5%
-City.prototype.improvePopulationEstimateByPercentage = function(p, skillMult=1) {
- p = p*skillMult;
- if (isNaN(p)) {throw new Error("NaN passed into City.improvePopulationEstimateByPercentage()");}
- if (this.popEst < this.pop) {
- ++this.popEst; //In case estimate is 0
- this.popEst *= (1 + (p/100));
- if (this.popEst > this.pop) {this.popEst = this.pop;}
- } else if (this.popEst > this.pop) {
- this.popEst *= (1 - (p/100));
- if (this.popEst < this.pop) {this.popEst = this.pop;}
- }
-}
-
-City.prototype.improveCommunityEstimate = function(n=1) {
- if (isNaN(n)) {throw new Error("NaN passed into City.improveCommunityEstimate()");}
- if (this.commsEst < this.comms) {
- this.commsEst += n;
- if (this.commsEst > this.comms) {this.commsEst = this.comms;}
- } else if (this.commsEst > this.comms) {
- this.commsEst -= n;
- if (this.commsEst < this.comms) {this.commsEst = this.comms;}
- }
-}
-
-//@params options:
-// estChange(int): How much the estimate should change by
-// estOffset(int): Add offset to estimate (offset by percentage)
-City.prototype.changePopulationByCount = function(n, params={}) {
- if (isNaN(n)) {throw new Error("NaN passed into City.changePopulationByCount()");}
- this.pop += n;
- if (params.estChange && !isNaN(params.estChange)) {this.popEst += params.estChange;}
- if (params.estOffset) {
- this.popEst = Object(_utils_HelperFunctions_js__WEBPACK_IMPORTED_MODULE_8__["addOffset"])(this.popEst, params.estOffset);
- }
- this.popEst = Math.max(this.popEst, 0);
-}
-
-//@p is the percentage, not the multiplier. e.g. pass in p = 5 for 5%
-//@params options:
-// changeEstEqually(bool) - Change the population estimate by an equal amount
-// nonZero (bool) - Set to true to ensure that population always changes by at least 1
-City.prototype.changePopulationByPercentage = function(p, params={}) {
- if (isNaN(p)) {throw new Error("NaN passed into City.changePopulationByPercentage()");}
- if (p === 0) {return;}
- var change = Math.round(this.pop * (p/100));
-
- //Population always changes by at least 1
- if (params.nonZero && change === 0) {
- p > 0 ? change = 1 : change = -1;
- }
-
- this.pop += change;
- if (params.changeEstEqually) {
- this.popEst += change;
- if (this.popEst < 0) {this.popEst = 0;}
- }
- return change;
-}
-
-City.prototype.changeChaosByCount = function(n) {
- if (isNaN(n)) {throw new Error("NaN passed into City.changeChaosByCount()");}
- if (n === 0) {return;}
- this.chaos += n;
- if (this.chaos < 0) {this.chaos = 0;}
-}
-
-//@p is the percentage, not the multiplier (e.g. pass in p = 5 for 5%)
-City.prototype.changeChaosByPercentage = function(p) {
- if (isNaN(p)) {throw new Error("NaN passed into City.chaosChaosByPercentage()");}
- if (p === 0) {return;}
- var change = this.chaos * (p/100);
- this.chaos += change;
- if (this.chaos < 0) {this.chaos = 0;}
-}
-
-City.prototype.toJSON = function() {
- return Object(_utils_JSONReviver_js__WEBPACK_IMPORTED_MODULE_9__["Generic_toJSON"])("City", this);
-}
-City.fromJSON = function(value) {
- return Object(_utils_JSONReviver_js__WEBPACK_IMPORTED_MODULE_9__["Generic_fromJSON"])(City, value.data);
-}
-_utils_JSONReviver_js__WEBPACK_IMPORTED_MODULE_9__["Reviver"].constructors.City = City;
-
-function Skill(params={name:"foo", desc:"foo"}) {
- if (params.name) {
- this.name = params.name;
- } else {
- throw new Error("Failed to initialize Bladeburner Skill. No name was specified in ctor");
- }
- if (params.desc) {
- this.desc = params.desc;
- } else {
- throw new Error("Failed to initialize Bladeburner Skills. No desc was specified in ctor");
- }
- this.baseCost = params.baseCost ? params.baseCost : 1; //Cost is in Skill Points
- this.costInc = params.costInc ? params.costInc : 1; //Additive cost increase per level
-
- if (params.maxLvl) {this.maxLvl = params.maxLvl;}
-
- //These benefits are additive. So total multiplier will be level (handled externally) times the
- //effects below
- if (params.successChanceAll) {this.successChanceAll = params.successChanceAll;}
- if (params.successChanceStealth) {this.successChanceStealth = params.successChanceStealth;}
- if (params.successChanceKill) {this.successChanceKill = params.successChanceKill;}
- if (params.successChanceContract) {this.successChanceContract = params.successChanceContract;}
- if (params.successChanceOperation) {this.successChanceOperation = params.successChanceOperation;}
-
- //This multiplier affects everything that increases synthoid population/community estimate
- //e.g. Field analysis, Investigation Op, Undercover Op
- if (params.successChanceEstimate) {this.successChanceEstimate = params.successChanceEstimate;}
-
- if (params.actionTime) {this.actionTime = params.actionTime;}
- if (params.effHack) {this.effHack = params.effHack;}
- if (params.effStr) {this.effStr = params.effStr;}
- if (params.effDef) {this.effDef = params.effDef;}
- if (params.effDex) {this.effDex = params.effDex;}
- if (params.effAgi) {this.effAgi = params.effAgi;}
- if (params.effCha) {this.effCha = params.effCha;}
-
- if (params.stamina) {this.stamina = params.stamina;}
-
- //Equipment
- if (params.weaponAbility) {this.weaponAbility = params.weaponAbility;}
- if (params.gunAbility) {this.gunAbility = params.gunAbility;}
-}
-var Skills = {};
-var SkillNames = {
- BladesIntuition: "Blade's Intuition",
- Reaper: "Reaper",
- Cloak: "Cloak",
- Marksman: "Marksman",
- WeaponProficiency: "Weapon Proficiency",
- Overclock: "Overclock",
- EvasiveSystem: "Evasive System",
- ShortCircuit: "Short-Circuit",
- DigitalObserver: "Digital Observer",
- Datamancer: "Datamancer",
- Tracer: "Tracer",
- CybersEdge: "Cyber's Edge"
-}
-
-//Base Class for Contracts, Operations, and BlackOps
-function Action(params={}) {
- this.name = params.name ? params.name : "";
- this.desc = params.desc ? params.desc : "";
-
- //Difficulty scales with level
- //Exact formula is not set in stone
- //Initial design: baseDifficulty * (difficultyFac ^ level)?
- //difficulty Fac is slightly greater than 1
- this.level = 1;
- this.maxLevel = 1;
- this.autoLevel = true;
- this.baseDifficulty = params.baseDifficulty ? Object(_utils_HelperFunctions_js__WEBPACK_IMPORTED_MODULE_8__["addOffset"])(params.baseDifficulty, 10) : 100;
- this.difficultyFac = params.difficultyFac ? params.difficultyFac : 1.01;
-
- //Rank increase/decrease is affected by this exponent
- this.rewardFac = params.rewardFac ? params.rewardFac : 1.02;
-
- this.successes = 0;
- this.failures = 0;
-
- //All of these scale with level/difficulty
- this.rankGain = params.rankGain ? params.rankGain : 0;
- if (params.rankLoss) {this.rankLoss = params.rankLoss;}
- if (params.hpLoss) {
- this.hpLoss = params.hpLoss;
- this.hpLost = 0;
- }
-
- //Action Category. Current categories are stealth and kill
- this.isStealth = params.isStealth ? true : false;
- this.isKill = params.isKill ? true : false;
-
- //Number of this contract remaining, and its growth rate
- //Growth rate is an integer and the count will increase by that integer every "cycle"
- this.count = params.count ? params.count : Object(_utils_HelperFunctions_js__WEBPACK_IMPORTED_MODULE_8__["getRandomInt"])(1e3, 25e3);
- this.countGrowth = params.countGrowth ? params.countGrowth : Object(_utils_HelperFunctions_js__WEBPACK_IMPORTED_MODULE_8__["getRandomInt"])(1, 5);
-
- //Weighting of each stat in determining action success rate
- var defaultWeights = {hack:1/7,str:1/7,def:1/7,dex:1/7,agi:1/7,cha:1/7,int:1/7};
- this.weights = params.weights ? params.weights : defaultWeights;
-
- //Check to make sure weights are summed properly
- var sum = 0;
- for (var weight in this.weights) {
- if (this.weights.hasOwnProperty(weight)) {
- sum += this.weights[weight];
- }
- }
- if (sum - 1 >= 10 * Number.EPSILON) {
- throw new Error("Invalid weights when constructing Action " + this.name +
- ". The weights should sum up to 1. They sum up to :" + 1);
- }
-
- //Diminishing returns of stats (stat ^ decay where 0 <= decay <= 1)
- var defaultDecays = {hack:0.9,str:0.9,def:0.9,dex:0.9,agi:0.9,cha:0.9,int:0.9};
- this.decays = params.decays ? params.decays : defaultDecays;
- for (var decay in this.decays) {
- if (this.decays.hasOwnProperty(decay)) {
- if (this.decays[decay] > 1) {
- throw new Error("Invalid decays when constructing " +
- "Action " + this.name + ". " +
- "Decay value cannot be greater than 1");
- }
- }
- }
-}
-
-Action.prototype.getDifficulty = function() {
- var difficulty = this.baseDifficulty * Math.pow(this.difficultyFac, this.level-1);
- if (isNaN(difficulty)) {throw new Error("Calculated NaN in Action.getDifficulty()");}
- return difficulty;
-}
-
-//@inst - Bladeburner Object
-//@params - options:
-// est (bool): Get success chance estimate instead of real success chance
-Action.prototype.getSuccessChance = function(inst, params={}) {
- if (inst == null) {throw new Error("Invalid Bladeburner instance passed into Action.getSuccessChance");}
- var difficulty = this.getDifficulty();
- var competence = 0;
- for (var stat in this.weights) {
- if (this.weights.hasOwnProperty(stat)) {
- var playerStatLvl = _Player_js__WEBPACK_IMPORTED_MODULE_4__["Player"].queryStatFromString(stat);
- var key = "eff" + stat.charAt(0).toUpperCase() + stat.slice(1);
- var effMultiplier = inst.skillMultipliers[key];
- if (effMultiplier == null) {
- console.log("ERROR: Failed to find Bladeburner Skill multiplier for: " + stat);
- effMultiplier = 1;
- }
- competence += (this.weights[stat] * Math.pow(effMultiplier*playerStatLvl, this.decays[stat]));
- }
- }
- competence *= inst.calculateStaminaPenalty();
-
- //For Operations, factor in team members
- if (this instanceof Operation || this instanceof BlackOperation) {
- if (this.teamCount && this.teamCount > 0) {
- this.teamCount = Math.min(this.teamCount, inst.teamSize);
- var teamMultiplier = Math.pow(this.teamCount, 0.05);
- competence *= teamMultiplier;
- }
- }
-
- //Lower city population results in lower chances
- if (!(this instanceof BlackOperation)) {
- var city = inst.getCurrentCity();
- if (params.est) {
- competence *= (city.popEst / PopulationThreshold);
- } else {
- competence *= (city.pop / PopulationThreshold);
- }
-
- //Too high of a chaos results in lower chances
- if (city.chaos > ChaosThreshold) {
- var diff = 1 + (city.chaos - ChaosThreshold);
- var mult = Math.pow(diff, 0.1);
- difficulty *= mult;
- }
-
- //For Raid Operations, no communities = fail
- if (this instanceof Operation && this.name === "Raid") {
- if (city.comms <= 0) {return 0;}
- }
- }
-
- //Factor skill multipliers into success chance
- competence *= inst.skillMultipliers.successChanceAll;
- if (this instanceof Operation || this instanceof BlackOperation) {
- competence *= inst.skillMultipliers.successChanceOperation;
- }
- if (this instanceof Contract) {
- competence *= inst.skillMultipliers.successChanceContract;
- }
- if (this.isStealth) {
- competence *= inst.skillMultipliers.successChanceStealth;
- }
- if (this.isKill) {
- competence *= inst.skillMultipliers.successChanceKill;
- }
-
- //Augmentation multiplier
- competence *= _Player_js__WEBPACK_IMPORTED_MODULE_4__["Player"].bladeburner_success_chance_mult;
-
- if (isNaN(competence)) {throw new Error("Competence calculated as NaN in Action.getSuccessChance()");}
- return Math.min(1, competence / difficulty);
-}
-
-//Tests for success. Should be called when an action has completed
-// @inst - Bladeburner Object
-Action.prototype.attempt = function(inst) {
- return (Math.random() < this.getSuccessChance(inst));
-}
-
-Action.prototype.getActionTime = function(inst) {
- var difficulty = this.getDifficulty();
- var baseTime = difficulty / DifficultyToTimeFactor;
- var skillFac = inst.skillMultipliers.actionTime; //Always < 1
-
- var effAgility = _Player_js__WEBPACK_IMPORTED_MODULE_4__["Player"].agility * inst.skillMultipliers.effAgi;
- var effDexterity = _Player_js__WEBPACK_IMPORTED_MODULE_4__["Player"].dexterity * inst.skillMultipliers.effDex;
- var statFac = 0.5 * (Math.pow(effAgility, 0.03) + Math.pow(effDexterity, 0.03)); //Always > 1
-
- baseTime = Math.max(1, baseTime * skillFac / statFac);
-
- if (this instanceof Contract) {
- return Math.ceil(baseTime);
- } else if (this instanceof Operation) {
- return Math.ceil(baseTime);
- } else if (this instanceof BlackOperation) {
- return Math.ceil(baseTime * 1.5);
- } else {
- throw new Error("Unrecognized Action Type in Action.getActionTime(this). Must be either Contract, Operation, or BlackOperation");
- }
-}
-
-Action.prototype.toJSON = function() {
- return Object(_utils_JSONReviver_js__WEBPACK_IMPORTED_MODULE_9__["Generic_toJSON"])("Action", this);
-}
-Action.fromJSON = function(value) {
- return Object(_utils_JSONReviver_js__WEBPACK_IMPORTED_MODULE_9__["Generic_fromJSON"])(Action, value.data);
-}
-_utils_JSONReviver_js__WEBPACK_IMPORTED_MODULE_9__["Reviver"].constructors.Action = Action;
-var GeneralActions = {}; //Training, Field Analysis, Recruitment, etc.
-
-//Action Identifier
-var ActionTypes = Object.freeze({
- "Idle": 1,
- "Contract": 2,
- "Operation": 3,
- "BlackOp": 4,
- "BlackOperation": 4,
- "Training": 5,
- "Recruitment": 6,
- "FieldAnalysis": 7,
- "Field Analysis": 7
-});
-function ActionIdentifier(params={}) {
- if (params.name) {this.name = params.name;}
- if (params.type) {this.type = params.type;}
-}
-ActionIdentifier.prototype.toJSON = function() {
- return Object(_utils_JSONReviver_js__WEBPACK_IMPORTED_MODULE_9__["Generic_toJSON"])("ActionIdentifier", this);
-}
-ActionIdentifier.fromJSON = function(value) {
- return Object(_utils_JSONReviver_js__WEBPACK_IMPORTED_MODULE_9__["Generic_fromJSON"])(ActionIdentifier, value.data);
-}
-_utils_JSONReviver_js__WEBPACK_IMPORTED_MODULE_9__["Reviver"].constructors.ActionIdentifier = ActionIdentifier;
-
-//Contracts
-function Contract(params={}) {
- Action.call(this, params);
-}
-Contract.prototype = Object.create(Action.prototype);
-Contract.prototype.toJSON = function() {
- return Object(_utils_JSONReviver_js__WEBPACK_IMPORTED_MODULE_9__["Generic_toJSON"])("Contract", this);
-}
-Contract.fromJSON = function(value) {
- return Object(_utils_JSONReviver_js__WEBPACK_IMPORTED_MODULE_9__["Generic_fromJSON"])(Contract, value.data);
-}
-_utils_JSONReviver_js__WEBPACK_IMPORTED_MODULE_9__["Reviver"].constructors.Contract = Contract;
-
-//Operations
-function Operation(params={}) {
- Action.call(this, params);
- this.reqdRank = params.reqdRank ? params.reqdRank : 100;
- this.teamCount = params.teamCount ? params.teamCount : 0; //# of team members to use
-}
-Operation.prototype = Object.create(Action.prototype);
-Operation.prototype.toJSON = function() {
- return Object(_utils_JSONReviver_js__WEBPACK_IMPORTED_MODULE_9__["Generic_toJSON"])("Operation", this);
-}
-Operation.fromJSON = function(value) {
- return Object(_utils_JSONReviver_js__WEBPACK_IMPORTED_MODULE_9__["Generic_fromJSON"])(Operation, value.data);
-}
-_utils_JSONReviver_js__WEBPACK_IMPORTED_MODULE_9__["Reviver"].constructors.Operation = Operation;
-
-//Black Operations
-function BlackOperation(params={}) {
- Operation.call(this, params);
-
- //Black ops are one time missions
- this.count = 1;
- this.countGrowth = 0;
-}
-BlackOperation.prototype = Object.create(Action.prototype);
-BlackOperation.prototype.toJSON = function() {
- return Object(_utils_JSONReviver_js__WEBPACK_IMPORTED_MODULE_9__["Generic_toJSON"])("BlackOperation", this);
-}
-BlackOperation.fromJSON = function(value) {
- return Object(_utils_JSONReviver_js__WEBPACK_IMPORTED_MODULE_9__["Generic_fromJSON"])(BlackOperation, value.data);
-}
-_utils_JSONReviver_js__WEBPACK_IMPORTED_MODULE_9__["Reviver"].constructors.BlackOperation = BlackOperation;
-var BlackOperations = {};
-
-function Bladeburner(params={}) {
- this.numHosp = 0; //Number of hospitalizations
- this.moneyLost = 0; //Money lost due to hospitalizations
- this.rank = 0;
- this.maxRank = 0; //Used to determine skill points
-
- this.skillPoints = 0;
- this.totalSkillPoints = 0;
-
- this.teamSize = 0; //Number of team members
- this.teamLost = 0; //Number of team members lost
-
- this.storedCycles = 0;
-
- this.randomEventCounter = Object(_utils_HelperFunctions_js__WEBPACK_IMPORTED_MODULE_8__["getRandomInt"])(300, 600); //5-10 minutes
-
- //These times are in seconds
- this.actionTimeToComplete = 0; //0 or -1 is an infinite running action (like training)
- this.actionTimeCurrent = 0;
-
- //ActionIdentifier Object
- var idleActionType = ActionTypes["Idle"];
- this.action = new ActionIdentifier({type:idleActionType});
-
- this.cities = {};
- for (var i = 0; i < CityNames.length; ++i) {
- this.cities[CityNames[i]] = new City({name:CityNames[i]});
- }
- this.city = _Location_js__WEBPACK_IMPORTED_MODULE_3__["Locations"].Sector12;
-
- //Map of SkillNames -> level
- this.skills = {};
- this.skillMultipliers = {};
- this.updateSkillMultipliers(); //Calls resetSkillMultipliers()
-
- //Max Stamina is based on stats and Bladeburner-specific bonuses
- this.staminaBonus = 0; //Gained from training
- this.maxStamina = 0;
- this.calculateMaxStamina();
- this.stamina = this.maxStamina;
-
- //Contracts and Operations objects. These objects have unique
- //properties because they are randomized in each instance and have stats like
- //successes/failures, so they need to be saved/loaded by the game.
- this.contracts = {};
- this.operations = {};
-
- //Object that contains name of all Black Operations that have been completed
- this.blackops = {};
-
- //Flags for whether these actions should be logged to console
- this.logging = {
- general:true,
- contracts:true,
- ops:true,
- blackops:true,
- events:true,
- }
-
- //Simple automation values
- this.automateEnabled = false;
- this.automateActionHigh = 0;
- this.automateThreshHigh = 0; //Stamina Threshold
- this.automateActionLow = 0;
- this.automateThreshLow = 0; //Stamina Threshold
-
- //Initialization
- initBladeburner();
- this.initializeDomElementRefs();
- if (params.new) {this.create();}
-}
-
-Bladeburner.prototype.create = function() {
- this.contracts["Tracking"] = new Contract({
- name:"Tracking",
- desc:"Identify and locate Synthoids. This contract involves reconnaissance " +
- "and information-gathering ONLY. Do NOT engage. Stealth is of the utmost importance.
" +
- "Successfully completing Tracking contracts will slightly improve your Synthoid population estimate for " +
- "whatever city you are currently in.",
- baseDifficulty:125,difficultyFac:1.02,rewardFac:1.041,
- rankGain:0.3, hpLoss:0.5,
- count:Object(_utils_HelperFunctions_js__WEBPACK_IMPORTED_MODULE_8__["getRandomInt"])(300, 800), countGrowth:Object(_utils_HelperFunctions_js__WEBPACK_IMPORTED_MODULE_8__["getRandomInt"])(1, 5),
- weights:{hack:0,str:0.05,def:0.05,dex:0.35,agi:0.35,cha:0.1, int:0.05},
- decays:{hack:0,str:0.91,def:0.91,dex:0.91,agi:0.91,cha:0.9, int:1},
- isStealth:true
- });
- this.contracts["Bounty Hunter"] = new Contract({
- name:"Bounty Hunter",
- desc:"Hunt down and capture fugitive Synthoids. These Synthoids are wanted alive.
" +
- "Successfully completing a Bounty Hunter contract will lower the population in your " +
- "current city, and will also increase its chaos level.",
- baseDifficulty:250, difficultyFac:1.04,rewardFac:1.085,
- rankGain:0.9, hpLoss:1,
- count:Object(_utils_HelperFunctions_js__WEBPACK_IMPORTED_MODULE_8__["getRandomInt"])(200, 750), countGrowth:Object(_utils_HelperFunctions_js__WEBPACK_IMPORTED_MODULE_8__["getRandomInt"])(1, 3),
- weights:{hack:0,str:0.15,def:0.15,dex:0.25,agi:0.25,cha:0.1, int:0.1},
- decays:{hack:0,str:0.91,def:0.91,dex:0.91,agi:0.91,cha:0.8, int:0.9},
- isKill:true
- });
- this.contracts["Retirement"] = new Contract({
- name:"Retirement",
- desc:"Hunt down and retire (kill) rogue Synthoids.
" +
- "Successfully copmleting a Retirement contract will lower the population in your current " +
- "city, and will also increase its chaos level.",
- baseDifficulty:200, difficultyFac:1.03, rewardFac:1.065,
- rankGain:0.6, hpLoss:1,
- count:Object(_utils_HelperFunctions_js__WEBPACK_IMPORTED_MODULE_8__["getRandomInt"])(300, 900), countGrowth:Object(_utils_HelperFunctions_js__WEBPACK_IMPORTED_MODULE_8__["getRandomInt"])(1,4),
- weights:{hack:0,str:0.2,def:0.2,dex:0.2,agi:0.2,cha:0.1, int:0.1},
- decays:{hack:0,str:0.91,def:0.91,dex:0.91,agi:0.91,cha:0.8, int:0.9},
- isKill:true
- });
-
- this.operations["Investigation"] = new Operation({
- name:"Investigation",
- desc:"As a field agent, investigate and identify Synthoid " +
- "populations, movements, and operations.
Successful " +
- "Investigation ops will increase the accuracy of your " +
- "synthoid data.
" +
- "You will NOT lose HP from failed Investigation ops.",
- baseDifficulty:400, difficultyFac:1.03,rewardFac:1.07,reqdRank:25,
- rankGain:2, rankLoss:0.2,
- count:Object(_utils_HelperFunctions_js__WEBPACK_IMPORTED_MODULE_8__["getRandomInt"])(50, 400), countGrowth:1,
- weights:{hack:0.25,str:0.05,def:0.05,dex:0.2,agi:0.1,cha:0.25, int:0.1},
- decays:{hack:0.85,str:0.9,def:0.9,dex:0.9,agi:0.9,cha:0.7, int:0.9},
- isStealth:true
- });
- this.operations["Undercover Operation"] = new Operation({
- name:"Undercover Operation",
- desc:"Conduct undercover operations to identify hidden " +
- "and underground Synthoid communities and organizations.
" +
- "Successful Undercover ops will increase the accuracy of your synthoid " +
- "data.",
- baseDifficulty:500, difficultyFac:1.04, rewardFac:1.09, reqdRank:100,
- rankGain:4, rankLoss:0.4, hpLoss:2,
- count:Object(_utils_HelperFunctions_js__WEBPACK_IMPORTED_MODULE_8__["getRandomInt"])(50, 300), countGrowth:1,
- weights:{hack:0.2,str:0.05,def:0.05,dex:0.2,agi:0.2,cha:0.2, int:0.1},
- decays:{hack:0.8,str:0.9,def:0.9,dex:0.9,agi:0.9,cha:0.7, int:0.9},
- isStealth:true
- });
- this.operations["Sting Operation"] = new Operation({
- name:"Sting Operation",
- desc:"Conduct a sting operation to bait and capture particularly " +
- "notorious Synthoid criminals.",
- baseDifficulty:650, difficultyFac:1.04, rewardFac:1.095, reqdRank:500,
- rankGain:5, rankLoss:0.5, hpLoss:2.5,
- count:Object(_utils_HelperFunctions_js__WEBPACK_IMPORTED_MODULE_8__["getRandomInt"])(25,400), countGrowth:0.75,
- weights:{hack:0.25,str:0.05,def:0.05,dex:0.25,agi:0.1,cha:0.2, int:0.1},
- decays:{hack:0.8,str:0.85,def:0.85,dex:0.85,agi:0.85,cha:0.7, int:0.9},
- isStealth:true
- });
- this.operations["Raid"] = new Operation({
- name:"Raid",
- desc:"Lead an assault on a known Synthoid community. Note that " +
- "there must be an existing Synthoid community in your current city " +
- "in order for this Operation to be successful",
- baseDifficulty:800, difficultyFac:1.045, rewardFac:1.1, reqdRank:3000,
- rankGain:50,rankLoss:2.5,hpLoss:50,
- count:Object(_utils_HelperFunctions_js__WEBPACK_IMPORTED_MODULE_8__["getRandomInt"])(25, 150), countGrowth:0.2,
- weights:{hack:0.1,str:0.2,def:0.2,dex:0.2,agi:0.2,cha:0, int:0.1},
- decays:{hack:0.7,str:0.8,def:0.8,dex:0.8,agi:0.8,cha:0, int:0.9},
- isKill:true
- });
- this.operations["Stealth Retirement Operation"] = new Operation({
- name:"Stealth Retirement Operation",
- desc:"Lead a covert operation to retire Synthoids. The " +
- "objective is to complete the task without " +
- "drawing any attention. Stealth and discretion are key.",
- baseDifficulty:1000, difficultyFac:1.05, rewardFac:1.11, reqdRank:20e3,
- rankGain:20, rankLoss:2, hpLoss:10,
- count:Object(_utils_HelperFunctions_js__WEBPACK_IMPORTED_MODULE_8__["getRandomInt"])(25, 250), countGrowth:0.1,
- weights:{hack:0.1,str:0.1,def:0.1,dex:0.3,agi:0.3,cha:0, int:0.1},
- decays:{hack:0.7,str:0.8,def:0.8,dex:0.8,agi:0.8,cha:0, int:0.9},
- isStealth:true, isKill:true
- });
- this.operations["Assassination"] = new Operation({
- name:"Assassination",
- desc:"Assassinate Synthoids that have been identified as " +
- "important, high-profile social and political leaders " +
- "in the Synthoid communities.",
- baseDifficulty:1500, difficultyFac:1.06, rewardFac:1.14, reqdRank:50e3,
- rankGain:40, rankLoss:4, hpLoss:5,
- count:Object(_utils_HelperFunctions_js__WEBPACK_IMPORTED_MODULE_8__["getRandomInt"])(25, 200), countGrowth:0.1,
- weights:{hack:0.1,str:0.1,def:0.1,dex:0.3,agi:0.3,cha:0, int:0.1},
- decays:{hack:0.6,str:0.8,def:0.8,dex:0.8,agi:0.8,cha:0, int:0.8},
- isStealth:true, isKill:true
- });
-}
-
-Bladeburner.prototype.storeCycles = function(numCycles=1) {
- this.storedCycles += numCycles;
-}
-
-Bladeburner.prototype.process = function() {
- //If the Player starts doing some other actions, set action to idle and alert
- if (_Player_js__WEBPACK_IMPORTED_MODULE_4__["Player"].isWorking) {
- if (this.action.type !== ActionTypes["Idle"]) {
- Object(_utils_DialogBox_js__WEBPACK_IMPORTED_MODULE_7__["dialogBoxCreate"])("Your Bladeburner action was cancelled because you started " +
- "doing something else");
- }
- this.resetAction();
- }
-
- //A 'tick' for this mechanic is one second (= 5 game cycles)
- if (this.storedCycles >= CyclesPerSecond) {
- var seconds = Math.floor(this.storedCycles / CyclesPerSecond);
- seconds = Math.min(seconds, 5); //Max of 5 'ticks'
- this.storedCycles -= seconds * CyclesPerSecond;
-
- //Stamina
- this.calculateMaxStamina();
- this.stamina += (this.calculateStaminaGainPerSecond() * seconds);
- this.stamina = Math.min(this.maxStamina, this.stamina);
-
- //Count increase for contracts/operations
- for (var contractName in this.contracts) {
- if (this.contracts.hasOwnProperty(contractName)) {
- var contract = this.contracts[contractName];
- contract.count += (seconds * contract.countGrowth/ActionCountGrowthPeriod);
- }
- }
- for (var operationName in this.operations) {
- if (this.operations.hasOwnProperty(operationName)) {
- var op = this.operations[operationName];
- op.count += (seconds * op.countGrowth/ActionCountGrowthPeriod);
- }
- }
-
- //Chaos goes down very slowly
- for (var i = 0; i < CityNames.length; ++i) {
- var city = this.cities[CityNames[i]];
- if (!(city instanceof City)) {throw new Error("Invalid City object when processing passive chaos reduction in Bladeburner.process");}
- city.chaos -= (0.0001 * seconds);
- city.chaos = Math.max(0, city.chaos);
- }
-
- //Random Events
- this.randomEventCounter -= seconds;
- if (this.randomEventCounter <= 0) {
- this.randomEvent();
- this.randomEventCounter = Object(_utils_HelperFunctions_js__WEBPACK_IMPORTED_MODULE_8__["getRandomInt"])(300, 600);
- }
-
- this.processAction(seconds);
-
- //Automation
- if (this.automateEnabled) {
- if (this.stamina <= this.automateThreshLow) {
- if (this.action.name !== this.automateActionLow.name || this.action.type !== this.automateActionLow.type) {
- this.action = this.automateActionLow;
- this.startAction(this.action);
- }
- } else if (this.stamina >= this.automateThreshHigh) {
- if (this.action.name !== this.automateActionHigh.name || this.action.type !== this.automateActionHigh.type) {
- this.action = this.automateActionHigh;
- this.startAction(this.action);
- }
- }
- }
-
- if (_engine_js__WEBPACK_IMPORTED_MODULE_1__["Engine"].currentPage === _engine_js__WEBPACK_IMPORTED_MODULE_1__["Engine"].Page.Bladeburner) {
- this.updateContent();
- }
- }
-}
-
-Bladeburner.prototype.calculateMaxStamina = function() {
- var effAgility = _Player_js__WEBPACK_IMPORTED_MODULE_4__["Player"].agility * this.skillMultipliers.effAgi;
- var maxStamina = (Math.pow(effAgility, 0.8) + this.staminaBonus);
- maxStamina *= this.skillMultipliers.stamina;
- maxStamina *= _Player_js__WEBPACK_IMPORTED_MODULE_4__["Player"].bladeburner_max_stamina_mult;
- if (isNaN(maxStamina)) {throw new Error("Max Stamina calculated to be NaN in Bladeburner.calculateMaxStamina()");}
- this.maxStamina = maxStamina;
-}
-
-Bladeburner.prototype.calculateStaminaGainPerSecond = function() {
- var effAgility = _Player_js__WEBPACK_IMPORTED_MODULE_4__["Player"].agility * this.skillMultipliers.effAgi;
- var maxStaminaBonus = this.maxStamina / MaxStaminaToGainFactor;
- var gain = (StaminaGainPerSecond + maxStaminaBonus) * Math.pow(effAgility, 0.17);
- return gain * (this.skillMultipliers.stamina * _Player_js__WEBPACK_IMPORTED_MODULE_4__["Player"].bladeburner_stamina_gain_mult);
-}
-
-Bladeburner.prototype.calculateStaminaPenalty = function() {
- return Math.min(1, this.stamina / (0.5 * this.maxStamina));
-}
-
-Bladeburner.prototype.changeRank = function(change) {
- if (isNaN(change)) {throw new Error("NaN passed into Bladeburner.changeRank()");}
- this.rank += change;
- if (this.rank < 0) {this.rank = 0;}
- this.maxRank = Math.max(this.rank, this.maxRank);
-
- var bladeburnersFactionName = "Bladeburners";
- if (Object(_Faction_js__WEBPACK_IMPORTED_MODULE_2__["factionExists"])(bladeburnersFactionName)) {
- var bladeburnerFac = _Faction_js__WEBPACK_IMPORTED_MODULE_2__["Factions"][bladeburnersFactionName];
- if (!(bladeburnerFac instanceof _Faction_js__WEBPACK_IMPORTED_MODULE_2__["Faction"])) {
- throw new Error("Could not properly get Bladeburner Faction object in Bladeburner UI Overview Faction button");
- }
- if (bladeburnerFac.isMember) {
- bladeburnerFac.playerReputation += (RankToFactionRepFactor * change * _Player_js__WEBPACK_IMPORTED_MODULE_4__["Player"].faction_rep_mult);
- }
- }
-
- //Gain skill points. You get 1 every 4 ranks
- var rankNeededForSp = (this.totalSkillPoints+1) * RanksPerSkillPoint;
- if (this.maxRank >= rankNeededForSp) {
- //Calculate how many skill points to gain
- var gainedSkillPoints = Math.floor((this.maxRank - rankNeededForSp) / RanksPerSkillPoint + 1);
- this.skillPoints += gainedSkillPoints;
- this.totalSkillPoints += gainedSkillPoints;
- }
-}
-
-Bladeburner.prototype.getCurrentCity = function() {
- var city = this.cities[this.city];
- if (!(city instanceof City)) {
- throw new Error("Bladeburner.getCurrentCity() did not properly return a City object");
- }
- return city;
-}
-
-Bladeburner.prototype.resetSkillMultipliers = function() {
- this.skillMultipliers = {
- successChanceAll:1,
- successChanceStealth:1,
- successChanceKill:1,
- successChanceContract:1,
- successChanceOperation:1,
- successChanceEstimate:1,
- actionTime:1,
- effHack:1,
- effStr:1,
- effDef:1,
- effDex:1,
- effAgi:1,
- effCha:1,
- effInt:1,
- stamina:1,
- weaponAbility:1,
- gunAbility:1,
- };
-}
-
-Bladeburner.prototype.updateSkillMultipliers = function() {
- this.resetSkillMultipliers();
- for (var skillName in this.skills) {
- if (this.skills.hasOwnProperty(skillName)) {
- var skill = Skills[skillName];
- if (skill == null) {
- throw new Error("Could not find Skill Object for: " + skillName);
- }
- var level = this.skills[skillName];
- if (level == null || level <= 0) {continue;} //Not upgraded
-
- var multiplierNames = Object.keys(this.skillMultipliers);
- for (var i = 0; i < multiplierNames.length; ++i) {
- var multiplierName = multiplierNames[i];
- if (skill[multiplierName] != null && !isNaN(skill[multiplierName])) {
- var value = skill[multiplierName] * level;
- var multiplierValue = 1 + (value / 100);
- if (multiplierName === "actionTime") {
- multiplierValue = 1 - (value / 100);
- }
- this.skillMultipliers[multiplierName] *= multiplierValue;
- }
- }
- }
- }
-}
-
-Bladeburner.prototype.upgradeSkill = function(skill) {
- //This does NOT handle deduction of skill points
- var skillName = skill.name;
- if (this.skills[skillName]) {
- ++this.skills[skillName];
- } else {
- this.skills[skillName] = 1;
- }
- if (isNaN(this.skills[skillName]) || this.skills[skillName] < 0) {
- throw new Error("Level of Skill " + skillName + " is invalid: " + this.skills[skillName]);
- }
- this.updateSkillMultipliers();
-}
-
-Bladeburner.prototype.getActionObject = function(actionId) {
- //Given an ActionIdentifier object, returns the corresponding
- //Contract, Operation, or BlackOperation object
- switch (actionId.type) {
- case ActionTypes["Contract"]:
- return this.contracts[actionId.name];
- break;
- case ActionTypes["Operation"]:
- return this.operations[actionId.name];
- break;
- case ActionTypes["BlackOp"]:
- case ActionTypes["BlackOperation"]:
- return BlackOperations[actionId.name];
- break;
- default:
- return null;
- console.log("WARNING: Bladeburner.getActionObject() called with an unexpected " +
- "ActionIdentifier type: " + actionId.type);
- }
-}
-
-//Sets the player to the "IDLE" action
-Bladeburner.prototype.resetAction = function() {
- this.action = new ActionIdentifier({type:ActionTypes.Idle});
-}
-
-Bladeburner.prototype.startAction = function(actionId) {
- this.action = actionId;
- this.actionTimeCurrent = 0;
- switch (actionId.type) {
- case ActionTypes["Idle"]:
- this.actionTimeToComplete = 0;
- break;
- case ActionTypes["Contract"]:
- try {
- var action = this.getActionObject(actionId);
- if (action == null) {
- throw new Error("Failed to get Contract Object for: " + actionId.name);
- }
- if (action.count < 1) {return this.resetAction();}
- this.actionTimeToComplete = action.getActionTime(this);
- } catch(e) {
- Object(_utils_HelperFunctions_js__WEBPACK_IMPORTED_MODULE_8__["exceptionAlert"])(e);
- }
- break;
- case ActionTypes["Operation"]:
- try {
- var action = this.getActionObject(actionId);
- if (action == null) {
- throw new Error ("Failed to get Operation Object for: " + actionId.name);
- }
- if (action.count < 1) {return this.resetAction();}
- this.actionTimeToComplete = action.getActionTime(this);
- } catch(e) {
- Object(_utils_HelperFunctions_js__WEBPACK_IMPORTED_MODULE_8__["exceptionAlert"])(e);
- }
- break;
- case ActionTypes["BlackOp"]:
- case ActionTypes["BlackOperation"]:
- try {
- var action = this.getActionObject(actionId);
- if (action == null) {
- throw new Error("Failed to get BlackOperation object for: " + actionId.name);
- }
- this.actionTimeToComplete = action.getActionTime(this);
- } catch(e) {
- Object(_utils_HelperFunctions_js__WEBPACK_IMPORTED_MODULE_8__["exceptionAlert"])(e);
- }
- break;
- case ActionTypes["Training"]:
- this.actionTimeToComplete = 30;
- break;
- case ActionTypes["Recruitment"]:
- var effCharisma = _Player_js__WEBPACK_IMPORTED_MODULE_4__["Player"].charisma * this.skillMultipliers.effCha;
- var charismaFactor = Math.pow(effCharisma, 0.81) + effCharisma / 90;
- var time = Math.max(10, Math.round(BaseRecruitmentTimeNeeded - charismaFactor));
- this.actionTimeToComplete = time;
- break;
- case ActionTypes["FieldAnalysis"]:
- case ActionTypes["Field Analysis"]:
- this.actionTimeToComplete = 30;
- break;
- default:
- throw new Error("Invalid Action Type in Bladeburner.startAction(): " + actionId.type);
- break;
- }
-}
-
-Bladeburner.prototype.processAction = function(seconds) {
- if (this.action.type === ActionTypes["Idle"]) {return;}
- if (this.actionTimeToComplete <= 0) {
- console.log("action.type: " + this.action.type);
- throw new Error("Invalid actionTimeToComplete value: " + this.actionTimeToComplete);
- }
- if (!(this.action instanceof ActionIdentifier)) {
- throw new Error("Bladeburner.action is not an ActionIdentifier Object");
- }
-
- this.actionTimeCurrent += seconds;
- if (this.actionTimeCurrent >= this.actionTimeToComplete) {
- return this.completeAction();
- }
-}
-
-Bladeburner.prototype.completeAction = function() {
- switch (this.action.type) {
- case ActionTypes["Contract"]:
- case ActionTypes["Operation"]:
- try {
- var isOperation = (this.action.type === ActionTypes["Operation"]);
- var action = this.getActionObject(this.action);
- if (action == null) {
- throw new Error("Failed to get Contract/Operation Object for: " + this.action.name);
- }
- var difficulty = action.getDifficulty();
- var difficultyMultiplier = Math.pow(difficulty, DiffMultExponentialFactor) + difficulty / DiffMultLinearFactor;
- var rewardMultiplier = Math.pow(action.rewardFac, action.level-1);
-
- //Stamina loss is based on difficulty
- this.stamina -= (BaseStaminaLoss * difficultyMultiplier);
- if (this.stamina < 0) {this.stamina = 0;}
-
- //Process Contract/Operation success/failure
- if (action.attempt(this)) {
- this.gainActionStats(action, true);
- ++action.successes;
- --action.count;
-
- //Earn money for contracts
- var moneyGain = 0;
- if (!isOperation) {
- moneyGain = ContractBaseMoneyGain * rewardMultiplier;
- _Player_js__WEBPACK_IMPORTED_MODULE_4__["Player"].gainMoney(moneyGain);
- }
-
- if (isOperation) {
- action.maxLevel = Math.floor(action.successes / OperationSuccessesPerLevel) + 1;
- } else {
- action.maxLevel = Math.floor(action.successes / ContractSuccessesPerLevel) + 1;
- }
- if (action.rankGain) {
- var gain = Object(_utils_HelperFunctions_js__WEBPACK_IMPORTED_MODULE_8__["addOffset"])(action.rankGain * rewardMultiplier, 10);
- this.changeRank(gain);
- if (isOperation && this.logging.ops) {
- this.log(action.name + " successfully completed! Gained " + Object(_utils_StringHelperFunctions_js__WEBPACK_IMPORTED_MODULE_11__["formatNumber"])(gain, 3) + " rank");
- } else if (!isOperation && this.logging.contracts) {
- this.log(action.name + " contract successfully completed! Gained " + Object(_utils_StringHelperFunctions_js__WEBPACK_IMPORTED_MODULE_11__["formatNumber"])(gain, 3) + " rank and " + _utils_numeral_min_js__WEBPACK_IMPORTED_MODULE_10___default()(moneyGain).format("$0.000a"));
- }
- }
- isOperation ? this.completeOperation(true) : this.completeContract(true);
- } else {
- this.gainActionStats(action, false);
- ++action.failures;
- var loss = 0, damage = 0;
- if (action.rankLoss) {
- loss = Object(_utils_HelperFunctions_js__WEBPACK_IMPORTED_MODULE_8__["addOffset"])(action.rankLoss * rewardMultiplier, 10);
- this.changeRank(-1 * loss);
- }
- if (action.hpLoss) {
- damage = action.hpLoss * difficultyMultiplier;
- damage = Math.ceil(Object(_utils_HelperFunctions_js__WEBPACK_IMPORTED_MODULE_8__["addOffset"])(damage, 10));
- this.hpLost += damage;
- if (_Player_js__WEBPACK_IMPORTED_MODULE_4__["Player"].takeDamage(damage)) {
- ++this.numHosp;
- this.moneyLost += (_Constants_js__WEBPACK_IMPORTED_MODULE_0__["CONSTANTS"].HospitalCostPerHp * _Player_js__WEBPACK_IMPORTED_MODULE_4__["Player"].max_hp);
- }
- }
- var logLossText = "";
- if (loss > 0) {logLossText += "Lost " + Object(_utils_StringHelperFunctions_js__WEBPACK_IMPORTED_MODULE_11__["formatNumber"])(loss, 3) + " rank.";}
- if (damage > 0) {logLossText += "Took " + Object(_utils_StringHelperFunctions_js__WEBPACK_IMPORTED_MODULE_11__["formatNumber"])(damage, 0) + " damage.";}
- if (isOperation && this.logging.ops) {
- this.log(action.name + " failed! " + logLossText);
- } else if (!isOperation && this.logging.contracts) {
- this.log(action.name + " contract failed! " + logLossText);
- }
- isOperation ? this.completeOperation(false) : this.completeContract(false);
- }
- if (action.autoLevel) {action.level = action.maxLevel;} //Autolevel
- this.startAction(this.action); //Repeat action
- } catch(e) {
- Object(_utils_HelperFunctions_js__WEBPACK_IMPORTED_MODULE_8__["exceptionAlert"])(e);
- }
- break;
- case ActionTypes["BlackOp"]:
- case ActionTypes["BlackOperation"]:
- try {
- var action = this.getActionObject(this.action);
- if (action == null || !(action instanceof BlackOperation)) {
- throw new Error("Failed to get BlackOperation Object for: " + this.action.name);
- }
- var difficulty = action.getDifficulty();
- var difficultyMultiplier = Math.pow(difficulty, DiffMultExponentialFactor) + difficulty / DiffMultLinearFactor;
-
- //Stamina loss is based on difficulty
- this.stamina -= (BaseStaminaLoss * difficultyMultiplier);
- if (this.stamina < 0) {this.stamina = 0;}
-
- //Team loss variables
- var teamCount = action.teamCount, teamLossMax;
-
- if (action.attempt(this)) {
- this.gainActionStats(action, true);
- action.count = 0;
- this.blackops[action.name] = true;
- var rankGain = 0;
- if (action.rankGain) {
- rankGain = Object(_utils_HelperFunctions_js__WEBPACK_IMPORTED_MODULE_8__["addOffset"])(action.rankGain, 10);
- this.changeRank(rankGain);
- }
- teamLossMax = Math.ceil(teamCount/2);
-
- //Operation Daedalus
- if (action.name === "Operation Daedalus") {
- this.resetAction();
- return Object(_RedPill_js__WEBPACK_IMPORTED_MODULE_5__["hackWorldDaemon"])(_Player_js__WEBPACK_IMPORTED_MODULE_4__["Player"].bitNodeN);
- }
-
- if (_engine_js__WEBPACK_IMPORTED_MODULE_1__["Engine"].currentPage === _engine_js__WEBPACK_IMPORTED_MODULE_1__["Engine"].Page.Bladeburner) {
- this.createActionAndSkillsContent();
- }
-
- if (this.logging.blackops) {
- this.log(action.name + " successful! Gained " + Object(_utils_StringHelperFunctions_js__WEBPACK_IMPORTED_MODULE_11__["formatNumber"])(rankGain, 1) + " rank");
- }
- } else {
- this.gainActionStats(action, false);
- var rankLoss = 0, damage = 0;
- if (action.rankLoss) {
- rankLoss = Object(_utils_HelperFunctions_js__WEBPACK_IMPORTED_MODULE_8__["addOffset"])(action.rankLoss, 10);
- this.changeRank(-1 * rankLoss);
- }
- if (action.hpLoss) {
- damage = action.hpLoss * difficultyMultiplier;
- damage = Math.ceil(Object(_utils_HelperFunctions_js__WEBPACK_IMPORTED_MODULE_8__["addOffset"])(damage, 10));
- if (_Player_js__WEBPACK_IMPORTED_MODULE_4__["Player"].takeDamage(damage)) {
- ++this.numHosp;
- this.moneyLost += (_Constants_js__WEBPACK_IMPORTED_MODULE_0__["CONSTANTS"].HospitalCostPerHp * _Player_js__WEBPACK_IMPORTED_MODULE_4__["Player"].max_hp);
- }
- }
- teamLossMax = Math.floor(teamCount);
-
- if (this.logging.blackops) {
- this.log(action.name + " failed! Lost " + Object(_utils_StringHelperFunctions_js__WEBPACK_IMPORTED_MODULE_11__["formatNumber"])(rankLoss, 1) + " rank and took" + Object(_utils_StringHelperFunctions_js__WEBPACK_IMPORTED_MODULE_11__["formatNumber"])(damage, 0) + " damage");
- }
- }
-
- this.resetAction(); //Stop regardless of success or fail
-
- //Calculate team lossses
- if (teamCount >= 1) {
- var losses = Object(_utils_HelperFunctions_js__WEBPACK_IMPORTED_MODULE_8__["getRandomInt"])(1, teamLossMax);
- this.teamSize -= losses;
- this.teamLost += losses;
- if (this.logging.blackops) {
- this.log("You lost " + Object(_utils_StringHelperFunctions_js__WEBPACK_IMPORTED_MODULE_11__["formatNumber"])(losses, 0) + " team members during " + action.name);
- }
- }
- } catch(e) {
- Object(_utils_HelperFunctions_js__WEBPACK_IMPORTED_MODULE_8__["exceptionAlert"])(e);
- }
- break;
- case ActionTypes["Training"]:
- this.stamina -= (0.5 * BaseStaminaLoss);
- var strExpGain = 30 * _Player_js__WEBPACK_IMPORTED_MODULE_4__["Player"].strength_exp_mult,
- defExpGain = 30 * _Player_js__WEBPACK_IMPORTED_MODULE_4__["Player"].defense_exp_mult,
- dexExpGain = 30 * _Player_js__WEBPACK_IMPORTED_MODULE_4__["Player"].dexterity_exp_mult,
- agiExpGain = 30 * _Player_js__WEBPACK_IMPORTED_MODULE_4__["Player"].agility_exp_mult,
- staminaGain = 0.04 * this.skillMultipliers.stamina;
- _Player_js__WEBPACK_IMPORTED_MODULE_4__["Player"].gainStrengthExp(strExpGain);
- _Player_js__WEBPACK_IMPORTED_MODULE_4__["Player"].gainDefenseExp(defExpGain);
- _Player_js__WEBPACK_IMPORTED_MODULE_4__["Player"].gainDexterityExp(dexExpGain);
- _Player_js__WEBPACK_IMPORTED_MODULE_4__["Player"].gainAgilityExp(agiExpGain);
- this.staminaBonus += (staminaGain);
- if (this.logging.general) {
- this.log("Training completed. Gained: " +
- Object(_utils_StringHelperFunctions_js__WEBPACK_IMPORTED_MODULE_11__["formatNumber"])(strExpGain, 1) + " str exp, " +
- Object(_utils_StringHelperFunctions_js__WEBPACK_IMPORTED_MODULE_11__["formatNumber"])(defExpGain, 1) + " def exp, " +
- Object(_utils_StringHelperFunctions_js__WEBPACK_IMPORTED_MODULE_11__["formatNumber"])(dexExpGain, 1) + " dex exp, " +
- Object(_utils_StringHelperFunctions_js__WEBPACK_IMPORTED_MODULE_11__["formatNumber"])(agiExpGain, 1) + " agi exp, " +
- Object(_utils_StringHelperFunctions_js__WEBPACK_IMPORTED_MODULE_11__["formatNumber"])(staminaGain, 3) + " max stamina");
- }
- this.startAction(this.action); //Repeat action
- break;
- case ActionTypes["FieldAnalysis"]:
- case ActionTypes["Field Analysis"]:
- //Does not use stamina. Effectiveness depends on hacking, int, and cha
- var eff = 0.04 * Math.pow(_Player_js__WEBPACK_IMPORTED_MODULE_4__["Player"].hacking_skill, 0.3) +
- 0.04 * Math.pow(_Player_js__WEBPACK_IMPORTED_MODULE_4__["Player"].intelligence, 0.9) +
- 0.02 * Math.pow(_Player_js__WEBPACK_IMPORTED_MODULE_4__["Player"].charisma, 0.3);
- eff *= _Player_js__WEBPACK_IMPORTED_MODULE_4__["Player"].bladeburner_analysis_mult;
- if (isNaN(eff) || eff < 0) {
- throw new Error("Field Analysis Effectiveness calculated to be NaN or negative");
- }
- var hackingExpGain = 20 * _Player_js__WEBPACK_IMPORTED_MODULE_4__["Player"].hacking_exp_mult,
- charismaExpGain = 20 * _Player_js__WEBPACK_IMPORTED_MODULE_4__["Player"].charisma_exp_mult;
- _Player_js__WEBPACK_IMPORTED_MODULE_4__["Player"].gainHackingExp(hackingExpGain);
- _Player_js__WEBPACK_IMPORTED_MODULE_4__["Player"].gainIntelligenceExp(BaseIntGain);
- _Player_js__WEBPACK_IMPORTED_MODULE_4__["Player"].gainCharismaExp(charismaExpGain);
- this.changeRank(0.1);
- console.log("DEBUG: Field Analysis effectiveness is " + (eff * this.skillMultipliers.successChanceEstimate));
- this.getCurrentCity().improvePopulationEstimateByPercentage(eff * this.skillMultipliers.successChanceEstimate);
- if (this.logging.general) {
- this.log("Field analysis completed. Gained 0.1 rank, " + Object(_utils_StringHelperFunctions_js__WEBPACK_IMPORTED_MODULE_11__["formatNumber"])(hackingExpGain, 1) + " hacking exp, and " + Object(_utils_StringHelperFunctions_js__WEBPACK_IMPORTED_MODULE_11__["formatNumber"])(charismaExpGain, 1) + " charisma exp");
- }
- this.startAction(this.action); //Repeat action
- break;
- case ActionTypes["Recruitment"]:
- var successChance = Math.pow(_Player_js__WEBPACK_IMPORTED_MODULE_4__["Player"].charisma, 0.45) / (this.teamSize + 1);
- console.log("Bladeburner recruitment success chance: " + successChance);
- if (Math.random() < successChance) {
- var expGain = 2 * BaseStatGain * this.actionTimeToComplete;
- _Player_js__WEBPACK_IMPORTED_MODULE_4__["Player"].gainCharismaExp(expGain);
- ++this.teamSize;
- if (this.logging.general) {
- this.log("Successfully recruited a team member! Gained " + Object(_utils_StringHelperFunctions_js__WEBPACK_IMPORTED_MODULE_11__["formatNumber"])(expGain, 1) + " charisma exp");
- }
- } else {
- var expGain = BaseStatGain * this.actionTimeToComplete;
- _Player_js__WEBPACK_IMPORTED_MODULE_4__["Player"].gainCharismaExp(expGain);
- if (this.logging.general) {
- this.log("Failed to recruit a team member. Gained " + Object(_utils_StringHelperFunctions_js__WEBPACK_IMPORTED_MODULE_11__["formatNumber"])(expGain, 1) + " charisma exp");
- }
- }
- this.startAction(this.action); //Repeat action
- break;
- default:
- break;
- }
-}
-
-Bladeburner.prototype.completeContract = function(success) {
- if (this.action.type !== ActionTypes.Contract) {
- throw new Error("completeContract() called even though current action is not a Contract");
- }
- var city = this.getCurrentCity();
- if (success) {
- switch (this.action.name) {
- case "Tracking":
- //Increase estimate accuracy by a relatively small amount
- city.improvePopulationEstimateByCount(Object(_utils_HelperFunctions_js__WEBPACK_IMPORTED_MODULE_8__["getRandomInt"])(100, 1e3));
- break;
- case "Bounty Hunter":
- city.changePopulationByCount(-1, {estChange:-1});
- city.changeChaosByCount(0.02);
- break;
- case "Retirement":
- city.changePopulationByCount(-1, {estChange:-1});
- city.changeChaosByCount(0.04);
- break;
- default:
- throw new Error("Invalid Action name in completeContract: " + this.action.name);
- }
- }
-}
-
-Bladeburner.prototype.completeOperation = function(success) {
- if (this.action.type !== ActionTypes.Operation) {
- throw new Error("completeOperation() called even though current action is not an Operation");
- }
- var action = this.getActionObject(this.action);
- if (action == null) {
- throw new Error("Failed to get Contract/Operation Object for: " + this.action.name);
- }
-
- //Calculate team losses
- var teamCount = action.teamCount, max;
- if (teamCount >= 1) {
- if (success) {
- max = Math.ceil(teamCount/2);
- } else {
- max = Math.floor(teamCount)
- }
- var losses = Object(_utils_HelperFunctions_js__WEBPACK_IMPORTED_MODULE_8__["getRandomInt"])(0, max);
- this.teamSize -= losses;
- this.teamLost += losses;
- if (this.logging.ops && losses > 0) {
- this.log("Lost " + Object(_utils_StringHelperFunctions_js__WEBPACK_IMPORTED_MODULE_11__["formatNumber"])(losses, 0) + " team members during this " + action.name);
- }
- }
-
- var city = this.getCurrentCity();
- if (this.logging.ops) {
- if (success) {
- this.log(action.name + " completed successfully! ")
- } else {
-
- }
- }
- switch (action.name) {
- case "Investigation":
- if (success) {
- city.improvePopulationEstimateByPercentage(0.4 * this.skillMultipliers.successChanceEstimate);
- if (Math.random() < (0.02 * this.skillMultipliers.successChanceEstimate)) {
- city.improveCommunityEstimate(1);
- }
- } else {
- this.triggerPotentialMigration(this.city, 0.1);
- }
- break;
- case "Undercover Operation":
- if (success) {
- city.improvePopulationEstimateByPercentage(0.8 * this.skillMultipliers.successChanceEstimate);
- if (Math.random() < (0.02 * this.skillMultipliers.successChanceEstimate)) {
- city.improveCommunityEstimate(1);
- }
- } else {
- this.triggerPotentialMigration(this.city, 0.15);
- }
- break;
- case "Sting Operation":
- if (success) {
- city.changePopulationByPercentage(-0.1, {changeEstEqually:true, nonZero:true});
- }
- city.changeChaosByCount(0.1);
- break;
- case "Raid":
- if (success) {
- city.changePopulationByPercentage(-1, {changeEstEqually:true, nonZero:true});
- --city.comms;
- --city.commsEst;
- } else {
- var change = Object(_utils_HelperFunctions_js__WEBPACK_IMPORTED_MODULE_8__["getRandomInt"])(-3, -1);
- city.changePopulationByPercentage(change, {nonZero:true});
- }
- city.changeChaosByPercentage(Object(_utils_HelperFunctions_js__WEBPACK_IMPORTED_MODULE_8__["getRandomInt"])(1, 5));
- break;
- case "Stealth Retirement Operation":
- if (success) {
- city.changePopulationByPercentage(-0.5, {changeEstEqually:true,nonZero:true});
- }
- city.changeChaosByPercentage(Object(_utils_HelperFunctions_js__WEBPACK_IMPORTED_MODULE_8__["getRandomInt"])(-3, -1));
- break;
- case "Assassination":
- if (success) {
- city.changePopulationByCount(-1, {estChange:-1});
- }
- city.changeChaosByPercentage(Object(_utils_HelperFunctions_js__WEBPACK_IMPORTED_MODULE_8__["getRandomInt"])(-5, 5));
- break;
- default:
- throw new Error("Invalid Action name in completeOperation: " + this.action.name);
- }
-}
-
-//Process stat gains from Contracts, Operations, and Black Operations
-//@action(Action obj) - Derived action class
-//@success(bool) - Whether action was successful
-Bladeburner.prototype.gainActionStats = function(action, success) {
- var difficulty = action.getDifficulty();
-
- //Gain multiplier based on difficulty. If this changes then the
- //same variable calculated in completeAction() needs to change too
- var difficultyMult = Math.pow(difficulty, 0.21);
-
- var time = this.actionTimeToComplete;
- var successMult = success ? 1 : 0.5;
-
- var unweightedGain = time * BaseStatGain * successMult * difficultyMult;
- var unweightedIntGain = time * BaseIntGain * successMult * difficultyMult;
- _Player_js__WEBPACK_IMPORTED_MODULE_4__["Player"].gainHackingExp(unweightedGain * action.weights.hack * _Player_js__WEBPACK_IMPORTED_MODULE_4__["Player"].hacking_exp_mult);
- _Player_js__WEBPACK_IMPORTED_MODULE_4__["Player"].gainStrengthExp(unweightedGain * action.weights.str * _Player_js__WEBPACK_IMPORTED_MODULE_4__["Player"].strength_exp_mult);
- _Player_js__WEBPACK_IMPORTED_MODULE_4__["Player"].gainDefenseExp(unweightedGain * action.weights.def * _Player_js__WEBPACK_IMPORTED_MODULE_4__["Player"].defense_exp_mult);
- _Player_js__WEBPACK_IMPORTED_MODULE_4__["Player"].gainDexterityExp(unweightedGain * action.weights.dex * _Player_js__WEBPACK_IMPORTED_MODULE_4__["Player"].dexterity_exp_mult);
- _Player_js__WEBPACK_IMPORTED_MODULE_4__["Player"].gainAgilityExp(unweightedGain * action.weights.agi * _Player_js__WEBPACK_IMPORTED_MODULE_4__["Player"].agility_exp_mult);
- _Player_js__WEBPACK_IMPORTED_MODULE_4__["Player"].gainCharismaExp(unweightedGain * action.weights.cha * _Player_js__WEBPACK_IMPORTED_MODULE_4__["Player"].charisma_exp_mult);
- _Player_js__WEBPACK_IMPORTED_MODULE_4__["Player"].gainIntelligenceExp(unweightedIntGain * action.weights.int);
-}
-
-Bladeburner.prototype.randomEvent = function() {
- var chance = Math.random();
-
- //Choose random source/destination city for events
- var sourceCityName = CityNames[Object(_utils_HelperFunctions_js__WEBPACK_IMPORTED_MODULE_8__["getRandomInt"])(0, 5)];
- var sourceCity = this.cities[sourceCityName];
- if (!(sourceCity instanceof City)) {
- throw new Error("sourceCity was not a City object in Bladeburner.randomEvent()");
- }
-
- var destCityName = CityNames[Object(_utils_HelperFunctions_js__WEBPACK_IMPORTED_MODULE_8__["getRandomInt"])(0, 5)];
- while (destCityName === sourceCityName) {
- destCityName = CityNames[Object(_utils_HelperFunctions_js__WEBPACK_IMPORTED_MODULE_8__["getRandomInt"])(0, 5)];
- }
- var destCity = this.cities[destCityName];
-
- if (!(sourceCity instanceof City) || !(destCity instanceof City)) {
- throw new Error("sourceCity was not a City object in Bladeburner.randomEvent()");
- }
-
- if (chance <= 0.05) {
- //New Synthoid Community, 5%
- ++sourceCity.comms;
- var percentage = Object(_utils_HelperFunctions_js__WEBPACK_IMPORTED_MODULE_8__["getRandomInt"])(10, 20) / 100;
- var count = Math.round(sourceCity.pop * percentage);
- sourceCity.pop += count;
- if (this.logging.events) {
- this.log("Intelligence indicates that a new Synthoid community was formed in a city");
- }
- } else if (chance <= 0.1) {
- //Synthoid Community Migration, 5%
- if (sourceCity.comms <= 0) {
- //If no comms in source city, then instead trigger a new Synthoid community event
- ++sourceCity.comms;
- var percentage = Object(_utils_HelperFunctions_js__WEBPACK_IMPORTED_MODULE_8__["getRandomInt"])(10, 20) / 100;
- var count = Math.round(sourceCity.pop * percentage);
- sourceCity.pop += count;
- if (this.logging.events) {
- this.log("Intelligence indicates that a new Synthoid community was formed in a city");
- }
- } else {
- --sourceCity.comms;
- ++destCity.comms;
-
- //Change pop
- var percentage = Object(_utils_HelperFunctions_js__WEBPACK_IMPORTED_MODULE_8__["getRandomInt"])(10, 20) / 100;
- var count = Math.round(sourceCity.pop * percentage);
- sourceCity.pop -= count;
- destCity.pop += count;
-
- if (this.logging.events) {
- this.log("Intelligence indicates that a Synthoid community migrated from " + sourceCityName + " to some other city");
- }
- }
- } else if (chance <= 0.3) {
- //New Synthoids (non community), 20%
- var percentage = Object(_utils_HelperFunctions_js__WEBPACK_IMPORTED_MODULE_8__["getRandomInt"])(8, 24) / 100;
- var count = Math.round(sourceCity.pop * percentage);
- sourceCity.pop += count;
- if (this.logging.events) {
- this.log("Intelligence indicates that the Synthoid population of " + sourceCityName + " just changed significantly");
- }
- } else if (chance <= 0.5) {
- //Synthoid migration (non community) 20%
- this.triggerMigration(sourceCityName);
- if (this.logging.events) {
- this.log("Intelligence indicates that a large number of Synthoids migrated from " + sourceCityName + " to some other city");
- }
- } else if (chance <= 0.7) {
- //Synthoid Riots (+chaos), 20%
- sourceCity.chaos += 1;
- sourceCity.chaos *= (1 + Object(_utils_HelperFunctions_js__WEBPACK_IMPORTED_MODULE_8__["getRandomInt"])(5, 10) / 100);
- if (this.logging.events) {
- this.log("Tensions between Synthoids and humans lead to riots in " + sourceCityName + "! Chaos increased");
- }
- } else if (chance <= 0.9) {
- //Less Synthoids, 20%
- var percentage = Object(_utils_HelperFunctions_js__WEBPACK_IMPORTED_MODULE_8__["getRandomInt"])(5, 20) / 100;
- var count = Math.round(sourceCity.pop * percentage);
- sourceCity.pop -= count;
- if (this.logging.events) {
- this.log("Intelligence indicates that the Synthoid population of " + sourceCityName + " just changed significantly");
- }
- }
- //20% chance of nothing happening
-}
-
-Bladeburner.prototype.triggerPotentialMigration = function(sourceCityName, chance) {
- if (chance == null || isNaN(chance)) {
- console.log("ERROR: Invalid 'chance' parameter passed into Bladeburner.triggerPotentialMigration()");
- }
- if (chance > 1) {chance /= 100;}
- if (Math.random() < chance) {this.triggerMigration(sourceCityName);}
-}
-
-Bladeburner.prototype.triggerMigration = function(sourceCityName) {
- var destCityName = CityNames[Object(_utils_HelperFunctions_js__WEBPACK_IMPORTED_MODULE_8__["getRandomInt"])(0, 5)];
- while (destCityName === sourceCityName) {
- destCityName = CityNames[Object(_utils_HelperFunctions_js__WEBPACK_IMPORTED_MODULE_8__["getRandomInt"])(0, 5)];
- }
- var destCity = this.cities[destCityName];
- var sourceCity = this.cities[sourceCityName];
- if (destCity == null || sourceCity == null) {
- throw new Error("Failed to find City with name: " + destCityName);
- }
- var rand = Math.random(), percentage = Object(_utils_HelperFunctions_js__WEBPACK_IMPORTED_MODULE_8__["getRandomInt"])(3, 15) / 100;
-
- if (rand < 0.05 && sourceCity.comms > 0) { //5% chance for community migration
- percentage *= Object(_utils_HelperFunctions_js__WEBPACK_IMPORTED_MODULE_8__["getRandomInt"])(2, 4); //Migration increases population change
- --sourceCity.comms;
- ++destCity.comms;
- }
- var count = Math.round(sourceCity.pop * percentage);
- sourceCity.pop -= count;
- destCity.pop += count;
-}
-
-var DomElems = {};
-
-Bladeburner.prototype.initializeDomElementRefs = function() {
- DomElems = {
- bladeburnerDiv: null,
-
- //Main Divs
- overviewConsoleParentDiv: null,
-
- overviewDiv: null, //Overview of stats that stays fixed on left
- actionAndSkillsDiv: null, //Panel for different sections (contracts, ops, skills)
- currentTab: null, //Contracts, Operations, Black Ops, Skills
-
- consoleDiv: null,
- consoleTable: null,
- consoleInputRow: null, //tr
- consoleInputCell: null, //td
- consoleInputHeader: null, //"> "
- consoleInput: null, //Actual input element
-
- //Overview Content
- overviewRank: null,
- overviewStamina: null,
- overviewStaminaHelpTip: null,
- overviewGen1: null, //Stamina Penalty, Team, Hospitalized stats, current city
- overviewEstPop: null,
- overviewEstPopHelpTip: null,
- overviewEstComms: null,
- overviewChaos: null,
- overviewSkillPoints: null,
- overviewAugSuccessMult: null,
- overviewAugMaxStaminaMult: null,
- overviewAugStaminaGainMult: null,
- overviewAugAnalysisMult: null,
-
- //Actions and Skills Content
- actionsAndSkillsDesc: null,
- actionsAndSkillsList: null, //ul element of all UI elements in this panel
- generalActions: {},
- contracts: {},
- operations: {},
- blackops: {},
- skills: {},
- };
-}
-
-Bladeburner.prototype.createContent = function() {
- DomElems.bladeburnerDiv = Object(_utils_HelperFunctions_js__WEBPACK_IMPORTED_MODULE_8__["createElement"])("div", {
- id:"bladeburner-container", position:"fixed", class:"generic-menupage-container",
- });
-
- //Parent Div for Overview and Console
- DomElems.overviewConsoleParentDiv = Object(_utils_HelperFunctions_js__WEBPACK_IMPORTED_MODULE_8__["createElement"])("div", {
- height:"60%", display:"block", position:"relative",
- });
-
- //Overview and Action/Skill pane
- DomElems.overviewDiv = Object(_utils_HelperFunctions_js__WEBPACK_IMPORTED_MODULE_8__["createElement"])("div", {
- width:"30%", display:"inline-block", border:"1px solid white",
- });
-
- DomElems.actionAndSkillsDiv = Object(_utils_HelperFunctions_js__WEBPACK_IMPORTED_MODULE_8__["createElement"])("div", {
- height:"60%", width:"70%", display:"block",
- border:"1px solid white", margin:"6px", padding:"6px",
- });
-
- DomElems.currentTab = "general";
-
- this.createOverviewContent();
- this.createActionAndSkillsContent();
-
- //Console
- DomElems.consoleDiv = Object(_utils_HelperFunctions_js__WEBPACK_IMPORTED_MODULE_8__["createElement"])("div", {
- class:"bladeburner-console-div",
- clickListener:()=>{
- if (DomElems.consoleInput instanceof Element) {
- DomElems.consoleInput.focus();
- }
- return false;
- }
- });
- DomElems.consoleTable = Object(_utils_HelperFunctions_js__WEBPACK_IMPORTED_MODULE_8__["createElement"])("table", {class:"bladeburner-console-table"});
- DomElems.consoleInputRow = Object(_utils_HelperFunctions_js__WEBPACK_IMPORTED_MODULE_8__["createElement"])("tr", {class:"bladeburner-console-input-row", id:"bladeubrner-console-input-row"});
- DomElems.consoleInputCell = Object(_utils_HelperFunctions_js__WEBPACK_IMPORTED_MODULE_8__["createElement"])("td", {class:"bladeburner-console-input-cell"});
- DomElems.consoleInputHeader = Object(_utils_HelperFunctions_js__WEBPACK_IMPORTED_MODULE_8__["createElement"])("pre", {innerText:"> "});
- DomElems.consoleInput = Object(_utils_HelperFunctions_js__WEBPACK_IMPORTED_MODULE_8__["createElement"])("input", {
- type:"text", class:"bladeburner-console-input", tabIndex:1,
- onfocus:()=>{DomElems.consoleInput.value = DomElems.consoleInput.value}
- });
-
- DomElems.consoleInputCell.appendChild(DomElems.consoleInputHeader);
- DomElems.consoleInputCell.appendChild(DomElems.consoleInput);
- DomElems.consoleInputRow.appendChild(DomElems.consoleInputCell);
- DomElems.consoleTable.appendChild(DomElems.consoleInputRow);
- DomElems.consoleDiv.appendChild(DomElems.consoleTable);
-
- DomElems.overviewConsoleParentDiv.appendChild(DomElems.overviewDiv);
- DomElems.overviewConsoleParentDiv.appendChild(DomElems.consoleDiv);
- DomElems.bladeburnerDiv.appendChild(DomElems.overviewConsoleParentDiv);
- DomElems.bladeburnerDiv.appendChild(DomElems.actionAndSkillsDiv);
-
- document.getElementById("entire-game-container").appendChild(DomElems.bladeburnerDiv);
-
- this.postToConsole("Bladeburner Console BETA");
- DomElems.consoleInput.focus();
-}
-
-Bladeburner.prototype.clearContent = function() {
- if (DomElems.bladeburnerDiv instanceof Element) {
- Object(_utils_HelperFunctions_js__WEBPACK_IMPORTED_MODULE_8__["removeChildrenFromElement"])(DomElems.bladeburnerDiv);
- Object(_utils_HelperFunctions_js__WEBPACK_IMPORTED_MODULE_8__["removeElement"])(DomElems.bladeburnerDiv);
- }
- Object(_utils_HelperFunctions_js__WEBPACK_IMPORTED_MODULE_8__["clearObject"])(DomElems);
- this.initializeDomElementRefs();
-}
-
-Bladeburner.prototype.createOverviewContent = function() {
- if (DomElems.overviewDiv == null) {
- throw new Error("Bladeburner.createOverviewContent() called with DomElems.overviewDiv = null");
- }
-
- DomElems.overviewRank = Object(_utils_HelperFunctions_js__WEBPACK_IMPORTED_MODULE_8__["createElement"])("p", {
- innerText:"Rank: ",
- display:"inline-block",
- tooltip:"Your rank within the Bladeburner division",
- });
-
- DomElems.overviewStamina = Object(_utils_HelperFunctions_js__WEBPACK_IMPORTED_MODULE_8__["createElement"])("p", {
- display:"inline-block",
- });
-
- DomElems.overviewStaminaHelpTip = Object(_utils_HelperFunctions_js__WEBPACK_IMPORTED_MODULE_8__["createElement"])("div", {
- innerText:"?", class:"help-tip",
- clickListener:()=>{
- Object(_utils_DialogBox_js__WEBPACK_IMPORTED_MODULE_7__["dialogBoxCreate"])("Performing actions will use up your stamina.
" +
- "Your max stamina is determined primarily by your agility stat.
" +
- "Your stamina gain rate is determined by both your agility and your " +
- "max stamina. Higher max stamina leads to a higher gain rate.
" +
- "Once your " +
- "stamina falls below 50% of its max value, it begins to negatively " +
- "affect the success rate of your contracts/operations. This penalty " +
- "is shown in the overview panel. If the penalty is 15%, then this means " +
- "your success rate would be multipled by 85% (100 - 15).
" +
- "Your max stamina and stamina gain rate can also be increased by " +
- "training, or through skills and Augmentation upgrades.");
- }
- });
-
- DomElems.overviewGen1 = Object(_utils_HelperFunctions_js__WEBPACK_IMPORTED_MODULE_8__["createElement"])("p", {
- display:"block",
- });
-
- DomElems.overviewEstPop = Object(_utils_HelperFunctions_js__WEBPACK_IMPORTED_MODULE_8__["createElement"])("p", {
- innerText:"Est. Synthoid Population: ",
- display:"inline-block",
- tooltip:"This is your Bladeburner division's estimate of how many Synthoids exist " +
- "in your current city."
- });
-
- DomElems.overviewEstPopHelpTip = Object(_utils_HelperFunctions_js__WEBPACK_IMPORTED_MODULE_8__["createElement"])("div", {
- innerText:"?", class:"help-tip",
- clickListener:()=>{
- Object(_utils_DialogBox_js__WEBPACK_IMPORTED_MODULE_7__["dialogBoxCreate"])("The success rate of your contracts/operations depends on " +
- "the population of Synthoids in your current city. " +
- "The success rate that is shown to you is only an estimate, " +
- "and it is based on your Synthoid population estimate.
" +
- "Therefore, it is important that this Synthoid population estimate " +
- "is accurate so that you have a better idea of your " +
- "success rate for contracts/operations. Certain " +
- "actions will increase the accuracy of your population " +
- "estimate.
" +
- "The Synthoid populations of cities can change due to your " +
- "actions or random events. If random events occur, they will " +
- "be logged in the Bladeburner Console.");
- }
- });
-
- DomElems.overviewEstComms = Object(_utils_HelperFunctions_js__WEBPACK_IMPORTED_MODULE_8__["createElement"])("p", {
- innerText:"Est. Synthoid Communities: ",
- display:"inline-block",
- tooltip:"This is your Bladeburner divison's estimate of how many Synthoid " +
- "communities exist in your current city.",
- });
-
- DomElems.overviewChaos = Object(_utils_HelperFunctions_js__WEBPACK_IMPORTED_MODULE_8__["createElement"])("p", {
- innerText:"City Chaos: ",
- display:"inline-block",
- tooltip:"The city's chaos level due to tensions and conflicts between humans and Synthoids. " +
- "Having too high of a chaos level can make contracts and operations harder."
- });
-
- DomElems.overviewSkillPoints = Object(_utils_HelperFunctions_js__WEBPACK_IMPORTED_MODULE_8__["createElement"])("p", {display:"block"});
-
- DomElems.overviewAugSuccessMult = Object(_utils_HelperFunctions_js__WEBPACK_IMPORTED_MODULE_8__["createElement"])("p", {display:"block"});
- DomElems.overviewAugMaxStaminaMult = Object(_utils_HelperFunctions_js__WEBPACK_IMPORTED_MODULE_8__["createElement"])("p", {display:"block"});
- DomElems.overviewAugStaminaGainMult = Object(_utils_HelperFunctions_js__WEBPACK_IMPORTED_MODULE_8__["createElement"])("p", {display:"block"});
- DomElems.overviewAugAnalysisMult = Object(_utils_HelperFunctions_js__WEBPACK_IMPORTED_MODULE_8__["createElement"])("p", {display:"block"});
-
-
- DomElems.overviewDiv.appendChild(DomElems.overviewRank);
- Object(_utils_HelperFunctions_js__WEBPACK_IMPORTED_MODULE_8__["appendLineBreaks"])(DomElems.overviewDiv, 1);
- DomElems.overviewDiv.appendChild(DomElems.overviewStamina);
- DomElems.overviewDiv.appendChild(DomElems.overviewStaminaHelpTip);
- DomElems.overviewDiv.appendChild(DomElems.overviewGen1);
- DomElems.overviewDiv.appendChild(DomElems.overviewEstPop);
- DomElems.overviewDiv.appendChild(DomElems.overviewEstPopHelpTip);
- Object(_utils_HelperFunctions_js__WEBPACK_IMPORTED_MODULE_8__["appendLineBreaks"])(DomElems.overviewDiv, 1);
- DomElems.overviewDiv.appendChild(DomElems.overviewEstComms);
- Object(_utils_HelperFunctions_js__WEBPACK_IMPORTED_MODULE_8__["appendLineBreaks"])(DomElems.overviewDiv, 1);
- DomElems.overviewDiv.appendChild(DomElems.overviewChaos);
- Object(_utils_HelperFunctions_js__WEBPACK_IMPORTED_MODULE_8__["appendLineBreaks"])(DomElems.overviewDiv, 2);
- DomElems.overviewDiv.appendChild(DomElems.overviewSkillPoints);
- Object(_utils_HelperFunctions_js__WEBPACK_IMPORTED_MODULE_8__["appendLineBreaks"])(DomElems.overviewDiv, 1);
- DomElems.overviewDiv.appendChild(DomElems.overviewAugSuccessMult);
- DomElems.overviewDiv.appendChild(DomElems.overviewAugMaxStaminaMult);
- DomElems.overviewDiv.appendChild(DomElems.overviewAugStaminaGainMult);
- DomElems.overviewDiv.appendChild(DomElems.overviewAugAnalysisMult);
-
- //Travel to new city button
- Object(_utils_HelperFunctions_js__WEBPACK_IMPORTED_MODULE_8__["appendLineBreaks"])(DomElems.overviewDiv, 1);
- DomElems.overviewDiv.appendChild(Object(_utils_HelperFunctions_js__WEBPACK_IMPORTED_MODULE_8__["createElement"])("a", {
- innerHTML:"Travel", class:"a-link-button", display:"inline-block",
- clickListener:()=>{
- var popupId = "bladeburner-travel-popup-cancel-btn";
- var popupArguments = [];
- popupArguments.push(Object(_utils_HelperFunctions_js__WEBPACK_IMPORTED_MODULE_8__["createElement"])("a", { //Cancel Button
- innerText:"Cancel", class:"a-link-button",
- clickListener:()=>{
- Object(_utils_HelperFunctions_js__WEBPACK_IMPORTED_MODULE_8__["removeElementById"])(popupId); return false;
- }
- }))
- popupArguments.push(Object(_utils_HelperFunctions_js__WEBPACK_IMPORTED_MODULE_8__["createElement"])("p", { //Info Text
- innerText:"Travel to a different city for your Bladeburner " +
- "activities. This does not cost any money. The city you are " +
- "in for your Bladeburner duties does not affect " +
- "your location in the game otherwise",
- }));
- for (var i = 0; i < CityNames.length; ++i) {
- (function(inst, i) {
- popupArguments.push(Object(_utils_HelperFunctions_js__WEBPACK_IMPORTED_MODULE_8__["createElement"])("div", {
- //Reusing this css class...it adds a border and makes it
- //so that background color changes when you hover
- class:"cmpy-mgmt-find-employee-option",
- innerText:CityNames[i],
- clickListener:()=>{
- inst.city = CityNames[i];
- Object(_utils_HelperFunctions_js__WEBPACK_IMPORTED_MODULE_8__["removeElementById"])(popupId);
- inst.updateOverviewContent();
- return false;
- }
- }));
- })(this, i);
- }
- Object(_utils_HelperFunctions_js__WEBPACK_IMPORTED_MODULE_8__["createPopup"])(popupId, popupArguments);
- }
- }));
-
- //Faction button
- var bladeburnersFactionName = "Bladeburners";
- if (Object(_Faction_js__WEBPACK_IMPORTED_MODULE_2__["factionExists"])(bladeburnersFactionName)) {
- var bladeburnerFac = _Faction_js__WEBPACK_IMPORTED_MODULE_2__["Factions"][bladeburnersFactionName];
- if (!(bladeburnerFac instanceof _Faction_js__WEBPACK_IMPORTED_MODULE_2__["Faction"])) {
- throw new Error("Could not properly get Bladeburner Faction object in Bladeburner UI Overview Faction button");
- }
- DomElems.overviewDiv.appendChild(Object(_utils_HelperFunctions_js__WEBPACK_IMPORTED_MODULE_8__["createElement"])("a", {
- innerText:"Faction", class:"a-link-button", display:"inline-block",
- tooltip:"Apply to the Bladeburner Faction, or go to the faction page if you are already a member",
- clickListener:()=>{
- if (bladeburnerFac.isMember) {
- _engine_js__WEBPACK_IMPORTED_MODULE_1__["Engine"].loadFactionContent();
- Object(_Faction_js__WEBPACK_IMPORTED_MODULE_2__["displayFactionContent"])(bladeburnersFactionName);
- } else {
- if (this.rank >= 25) {
- Object(_Faction_js__WEBPACK_IMPORTED_MODULE_2__["joinFaction"])(bladeburnerFac);
- Object(_utils_DialogBox_js__WEBPACK_IMPORTED_MODULE_7__["dialogBoxCreate"])("Congratulations! You were accepted into the Bladeburners faction");
- Object(_utils_HelperFunctions_js__WEBPACK_IMPORTED_MODULE_8__["removeChildrenFromElement"])(DomElems.overviewDiv);
- this.createOverviewContent();
- } else {
- Object(_utils_DialogBox_js__WEBPACK_IMPORTED_MODULE_7__["dialogBoxCreate"])("You need a rank of 25 to join the Bladeburners Faction!")
- }
- }
- return false;
- }
- }));
- }
-
- DomElems.overviewDiv.appendChild(Object(_utils_HelperFunctions_js__WEBPACK_IMPORTED_MODULE_8__["createElement"])("br"));
- DomElems.overviewDiv.appendChild(Object(_utils_HelperFunctions_js__WEBPACK_IMPORTED_MODULE_8__["createElement"])("br"));
-
- this.updateOverviewContent();
-}
-
-Bladeburner.prototype.createActionAndSkillsContent = function() {
- if (DomElems.currentTab == null) {DomElems.currentTab = "general";}
-
- Object(_utils_HelperFunctions_js__WEBPACK_IMPORTED_MODULE_8__["removeChildrenFromElement"])(DomElems.actionAndSkillsDiv);
- Object(_utils_HelperFunctions_js__WEBPACK_IMPORTED_MODULE_8__["clearObject"])(DomElems.generalActions);
- Object(_utils_HelperFunctions_js__WEBPACK_IMPORTED_MODULE_8__["clearObject"])(DomElems.contracts);
- Object(_utils_HelperFunctions_js__WEBPACK_IMPORTED_MODULE_8__["clearObject"])(DomElems.operations);
- Object(_utils_HelperFunctions_js__WEBPACK_IMPORTED_MODULE_8__["clearObject"])(DomElems.blackops);
- Object(_utils_HelperFunctions_js__WEBPACK_IMPORTED_MODULE_8__["clearObject"])(DomElems.skills);
-
- //Navigation buttons
- var currTab = DomElems.currentTab.toLowerCase();
- var buttons = ["General", "Contracts", "Operations", "BlackOps", "Skills"];
- for (var i = 0; i < buttons.length; ++i) {
- (function(buttons, i, inst, currTab) {
-
- DomElems.actionAndSkillsDiv.appendChild(Object(_utils_HelperFunctions_js__WEBPACK_IMPORTED_MODULE_8__["createElement"])("a", {
- innerText:buttons[i],
- class:currTab === buttons[i].toLowerCase() ? "bladeburner-nav-button-inactive" : "bladeburner-nav-button",
- clickListener:()=>{
- DomElems.currentTab = buttons[i].toLowerCase();
- inst.createActionAndSkillsContent();
- return false;
- }
- }));
- }) (buttons, i, this, currTab);
- }
-
- //General info/description for each action
- DomElems.actionsAndSkillsDesc = Object(_utils_HelperFunctions_js__WEBPACK_IMPORTED_MODULE_8__["createElement"])("p", {
- display:"block", margin:"4px", padding:"4px"
- });
-
- //List for actions/skills
- Object(_utils_HelperFunctions_js__WEBPACK_IMPORTED_MODULE_8__["removeChildrenFromElement"])(DomElems.actionsAndSkillsList);
- DomElems.actionsAndSkillsList = Object(_utils_HelperFunctions_js__WEBPACK_IMPORTED_MODULE_8__["createElement"])("ul");
-
- switch(currTab) {
- case "general":
- this.createGeneralActionsContent();
- break;
- case "contracts":
- this.createContractsContent();
- break;
- case "operations":
- this.createOperationsContent();
- break;
- case "blackops":
- this.createBlackOpsContent();
- break;
- case "skills":
- this.createSkillsContent();
- break;
- default:
- throw new Error("Invalid value for DomElems.currentTab in Bladeburner.createActionAndSkillsContent");
- }
- this.updateContent();
-
- DomElems.actionAndSkillsDiv.appendChild(DomElems.actionsAndSkillsDesc);
- DomElems.actionAndSkillsDiv.appendChild(DomElems.actionsAndSkillsList);
-}
-
-Bladeburner.prototype.createGeneralActionsContent = function() {
- if (DomElems.actionsAndSkillsList == null || DomElems.actionsAndSkillsDesc == null) {
- throw new Error("Bladeburner.createGeneralActionsContent called with either " +
- "DomElems.actionsAndSkillsList or DomElems.actionsAndSkillsDesc = null");
- }
-
- DomElems.actionsAndSkillsDesc.innerText =
- "These are generic actions that will assist you in your Bladeburner " +
- "duties. They will not affect your Bladeburner rank in any way."
-
- for (var actionName in GeneralActions) {
- if (GeneralActions.hasOwnProperty(actionName)) {
- DomElems.generalActions[actionName] = Object(_utils_HelperFunctions_js__WEBPACK_IMPORTED_MODULE_8__["createElement"])("div", {
- class:"bladeburner-action", name:actionName
- });
- DomElems.actionsAndSkillsList.appendChild(DomElems.generalActions[actionName]);
- }
- }
-}
-
-Bladeburner.prototype.createContractsContent = function() {
- if (DomElems.actionsAndSkillsList == null || DomElems.actionsAndSkillsDesc == null) {
- throw new Error("Bladeburner.createContractsContent called with either " +
- "DomElems.actionsAndSkillsList or DomElems.actionsAndSkillsDesc = null");
- }
-
- DomElems.actionsAndSkillsDesc.innerHTML =
- "Complete contracts in order to increase your Bitburner rank and earn money. " +
- "Failing a contract will cause you to lose HP, which can lead to hospitalization.
" +
- "You can unlock higher-level contracts by successfully completing them. " +
- "Higher-level contracts are more difficult, but grant more rank, experience, and money.";
-
- for (var contractName in this.contracts) {
- if (this.contracts.hasOwnProperty(contractName)) {
- DomElems.contracts[contractName] = Object(_utils_HelperFunctions_js__WEBPACK_IMPORTED_MODULE_8__["createElement"])("div", {
- class:"bladeburner-action", name:contractName
- });
- DomElems.actionsAndSkillsList.appendChild(DomElems.contracts[contractName]);
- }
- }
-}
-
-Bladeburner.prototype.createOperationsContent = function() {
- if (DomElems.actionsAndSkillsList == null || DomElems.actionsAndSkillsDesc == null) {
- throw new Error("Bladeburner.createOperationsContent called with either " +
- "DomElems.actionsAndSkillsList or DomElems.actionsAndSkillsDesc = null");
- }
-
- DomElems.actionsAndSkillsDesc.innerHTML =
- "Carry out operations for the Bladeburner division. " +
- "Failing an operation will reduce your Bladeburner rank. It will also " +
- "cause you to lose HP, which can lead to hospitalization. In general, " +
- "operations are harder and more punishing than contracts, " +
- "but are also more rewarding.
" +
- "Operations can affect the chaos level and Synthoid population of your " +
- "current city. The exact effects vary between different Operations.
" +
- "For operations, you can use a team. You must first recruit team members. " +
- "Having a larger team will improves your chances of success.
" +
- "You can unlock higher-level operations by successfully completing them. " +
- "Higher-level operations are more difficult, but grant more rank and experience.";
-
- for (var operationName in this.operations) {
- if (this.operations.hasOwnProperty(operationName)) {
- DomElems.operations[operationName] = Object(_utils_HelperFunctions_js__WEBPACK_IMPORTED_MODULE_8__["createElement"])("div", {
- class:"bladeburner-action", name:operationName
- });
- DomElems.actionsAndSkillsList.appendChild(DomElems.operations[operationName]);
- }
- }
-}
-
-Bladeburner.prototype.createBlackOpsContent = function() {
- if (DomElems.actionsAndSkillsList == null || DomElems.actionsAndSkillsDesc == null) {
- throw new Error("Bladeburner.createBlackOpsContent called with either " +
- "DomElems.actionsAndSkillsList or DomElems.actionsAndSkillsDesc = null");
- }
-
- DomElems.actionsAndSkillsDesc.innerHTML =
- "Black Operations (Black Ops) are special, one-time covert operations. " +
- "Each Black Op must be unlocked successively by completing " +
- "the one before it.
" +
- "Like normal operations, you may use a team for Black Ops. Failing " +
- "a black op will incur heavy HP and rank losses.";
-
- //Put Black Operations in sequence of required rank
- var blackops = [];
- for (var blackopName in BlackOperations) {
- if (BlackOperations.hasOwnProperty(blackopName)) {
- blackops.push(BlackOperations[blackopName]);
- }
- }
- blackops.sort(function(a, b) {
- return (a.reqdRank - b.reqdRank);
- });
-
- for (var i = 0; i < blackops.length; ++i) {
- DomElems.blackops[blackops[i].name] = Object(_utils_HelperFunctions_js__WEBPACK_IMPORTED_MODULE_8__["createElement"])("div", {
- class:"bladeburner-action", name:blackops[i].name
- });
- DomElems.actionsAndSkillsList.appendChild(DomElems.blackops[blackops[i].name]);
- if (this.blackops[[blackops[i].name]] == null) {break;} //Can't be found in completed blackops
- }
-}
-
-Bladeburner.prototype.createSkillsContent = function() {
- if (DomElems.actionsAndSkillsList == null || DomElems.actionsAndSkillsDesc == null) {
- throw new Error("Bladeburner.createSkillsContent called with either " +
- "DomElems.actionsAndSkillsList or DomElems.actionsAndSkillsDesc = null");
- }
-
- //Display Current multipliers
- DomElems.actionsAndSkillsDesc.innerHTML =
- "You will gain one skill point every " + RanksPerSkillPoint + " ranks.
" +
- "Note that when upgrading a skill, the benefit for that skill is additive. " +
- "However, the effects of different skills with each other is multiplicative.
"
- var multKeys = Object.keys(this.skillMultipliers);
- for (var i = 0; i < multKeys.length; ++i) {
- var mult = this.skillMultipliers[multKeys[i]];
- if (mult && mult !== 1) {
- mult = Object(_utils_StringHelperFunctions_js__WEBPACK_IMPORTED_MODULE_11__["formatNumber"])(mult, 3);
- switch(multKeys[i]) {
- case "successChanceAll":
- DomElems.actionsAndSkillsDesc.innerHTML += "Total Success Chance: x" + mult + "
";
- break;
- case "successChanceStealth":
- DomElems.actionsAndSkillsDesc.innerHTML += "Stealth Success Chance: x" + mult + "
";
- break;
- case "successChanceKill":
- DomElems.actionsAndSkillsDesc.innerHTML += "Retirement Success Chance: x" + mult + "
";
- break;
- case "successChanceContract":
- DomElems.actionsAndSkillsDesc.innerHTML += "Contract Success Chance: x" + mult + "
";
- break;
- case "successChanceOperation":
- DomElems.actionsAndSkillsDesc.innerHTML += "Operation Success Chance: x" + mult + "
";
- break;
- case "successChanceEstimate":
- DomElems.actionsAndSkillsDesc.innerHTML += "Synthoid Data Estimate: x" + mult + "
";
- break;
- case "actionTime":
- DomElems.actionsAndSkillsDesc.innerHTML += "Action Time: x" + mult + "
";
- break;
- case "effHack":
- DomElems.actionsAndSkillsDesc.innerHTML += "Hacking Skill: x" + mult + "
";
- break;
- case "effStr":
- DomElems.actionsAndSkillsDesc.innerHTML += "Strength: x" + mult + "
";
- break;
- case "effDef":
- DomElems.actionsAndSkillsDesc.innerHTML += "Defense: x" + mult + "
";
- break;
- case "effDex":
- DomElems.actionsAndSkillsDesc.innerHTML += "Dexterity: x" + mult + "
";
- break;
- case "effAgi":
- DomElems.actionsAndSkillsDesc.innerHTML += "Agility: x" + mult + "
";
- break;
- case "effCha":
- DomElems.actionsAndSkillsDesc.innerHTML += "Charisma: x" + mult + "
";
- break;
- case "effInt":
- DomElems.actionsAndSkillsDesc.innerHTML += "Intelligence: x" + mult + "
";
- break;
- case "stamina":
- DomElems.actionsAndSkillsDesc.innerHTML += "Stamina: x" + mult + "
";
- break;
- case "weaponAbility":
- //DomElems.actionsAndSkillsDesc.innerHTML +=
- break;
- case "gunAbility":
- //DomElems.actionsAndSkillsDesc.innerHTML
- break;
- default:
- console.log("Warning: Unrecognized SkillMult Key: " + multKeys[i]);
- break;
- }
- }
- }
-
- //Skill Points
- DomElems.actionAndSkillsDiv.appendChild(Object(_utils_HelperFunctions_js__WEBPACK_IMPORTED_MODULE_8__["createElement"])("p", {
- innerHTML:"
Skill Points: " + Object(_utils_StringHelperFunctions_js__WEBPACK_IMPORTED_MODULE_11__["formatNumber"])(this.skillPoints, 0) + ""
- }));
-
- //UI Element for each skill
- for (var skillName in Skills) {
- if (Skills.hasOwnProperty(skillName)) {
- DomElems.skills[skillName] = Object(_utils_HelperFunctions_js__WEBPACK_IMPORTED_MODULE_8__["createElement"])("div", {
- class:"bladeburner-action", name:skillName
- });
- DomElems.actionsAndSkillsList.appendChild(DomElems.skills[skillName]);
- }
- }
-}
-
-Bladeburner.prototype.updateContent = function() {
- this.updateOverviewContent();
- this.updateActionAndSkillsContent();
-}
-
-Bladeburner.prototype.updateOverviewContent = function() {
- if (_engine_js__WEBPACK_IMPORTED_MODULE_1__["Engine"].currentPage !== _engine_js__WEBPACK_IMPORTED_MODULE_1__["Engine"].Page.Bladeburner) {return;}
- DomElems.overviewRank.childNodes[0].nodeValue = "Rank: " + Object(_utils_StringHelperFunctions_js__WEBPACK_IMPORTED_MODULE_11__["formatNumber"])(this.rank, 2);
- DomElems.overviewStamina.innerText = "Stamina: " + Object(_utils_StringHelperFunctions_js__WEBPACK_IMPORTED_MODULE_11__["formatNumber"])(this.stamina, 3) + " / " + Object(_utils_StringHelperFunctions_js__WEBPACK_IMPORTED_MODULE_11__["formatNumber"])(this.maxStamina, 3);
- DomElems.overviewGen1.innerHTML =
- "Stamina Penalty: " + Object(_utils_StringHelperFunctions_js__WEBPACK_IMPORTED_MODULE_11__["formatNumber"])((1-this.calculateStaminaPenalty())*100, 1) + "%
" +
- "Team Size: " + Object(_utils_StringHelperFunctions_js__WEBPACK_IMPORTED_MODULE_11__["formatNumber"])(this.teamSize, 0) + "
" +
- "Team Members Lost: " + Object(_utils_StringHelperFunctions_js__WEBPACK_IMPORTED_MODULE_11__["formatNumber"])(this.teamLost, 0) + "
" +
- "Num Times Hospitalized: " + this.numHosp + "
" +
- "Money Lost From Hospitalizations: " + _utils_numeral_min_js__WEBPACK_IMPORTED_MODULE_10___default()(this.moneyLost).format("$0.000a") + "
" +
- "Current City: " + this.city + "
";
-
- DomElems.overviewEstPop.childNodes[0].nodeValue = "Est. Synthoid Population: " + _utils_numeral_min_js__WEBPACK_IMPORTED_MODULE_10___default()(this.getCurrentCity().popEst).format("0.000a");
- DomElems.overviewEstComms.childNodes[0].nodeValue = "Est. Synthoid Communities: " + Object(_utils_StringHelperFunctions_js__WEBPACK_IMPORTED_MODULE_11__["formatNumber"])(this.getCurrentCity().comms, 0);
- DomElems.overviewChaos.childNodes[0].nodeValue = "City Chaos: " + Object(_utils_StringHelperFunctions_js__WEBPACK_IMPORTED_MODULE_11__["formatNumber"])(this.getCurrentCity().chaos);
- DomElems.overviewSkillPoints.innerText = "Skill Points: " + Object(_utils_StringHelperFunctions_js__WEBPACK_IMPORTED_MODULE_11__["formatNumber"])(this.skillPoints, 0);
- DomElems.overviewAugSuccessMult.innerText = "Aug. Success Chance Mult: " + Object(_utils_StringHelperFunctions_js__WEBPACK_IMPORTED_MODULE_11__["formatNumber"])(_Player_js__WEBPACK_IMPORTED_MODULE_4__["Player"].bladeburner_success_chance_mult*100, 1) + "%";
- DomElems.overviewAugMaxStaminaMult.innerText = "Aug. Max Stamina Mult: " + Object(_utils_StringHelperFunctions_js__WEBPACK_IMPORTED_MODULE_11__["formatNumber"])(_Player_js__WEBPACK_IMPORTED_MODULE_4__["Player"].bladeburner_max_stamina_mult*100, 1) + "%";
- DomElems.overviewAugStaminaGainMult.innerText = "Aug. Stamina Gain Mult: " + Object(_utils_StringHelperFunctions_js__WEBPACK_IMPORTED_MODULE_11__["formatNumber"])(_Player_js__WEBPACK_IMPORTED_MODULE_4__["Player"].bladeburner_stamina_gain_mult*100, 1) + "%";
- DomElems.overviewAugAnalysisMult.innerText = "Aug. Field Analysis Mult: " + Object(_utils_StringHelperFunctions_js__WEBPACK_IMPORTED_MODULE_11__["formatNumber"])(_Player_js__WEBPACK_IMPORTED_MODULE_4__["Player"].bladeburner_analysis_mult*100, 1) + "%";
-}
-
-Bladeburner.prototype.updateActionAndSkillsContent = function() {
- if (DomElems.currentTab == null) {DomElems.currentTab = "general";}
- switch(DomElems.currentTab.toLowerCase()) {
- case "general":
- var actionElems = Object.keys(DomElems.generalActions);
- for (var i = 0; i < actionElems.length; ++i) {
- var actionElem = DomElems.generalActions[actionElems[i]];
- var name = actionElem.name;
- var actionObj = GeneralActions[name];
- if (actionObj == null) {
- throw new Error("Could not find Object " + name + " in Bladeburner.updateActionAndSkillsContent()");
- }
- if (this.action.type === ActionTypes[name]) {
- actionElem.classList.add(ActiveActionCssClass);
- } else {
- actionElem.classList.remove(ActiveActionCssClass);
- }
- this.updateGeneralActionsUIElement(actionElem, actionObj);
- }
- break;
- case "contracts":
- var contractElems = Object.keys(DomElems.contracts);
- for (var i = 0; i < contractElems.length; ++i) {
- var contractElem = DomElems.contracts[contractElems[i]];
- var name = contractElem.name;
- if (this.action.type === ActionTypes["Contract"] && name === this.action.name) {
- contractElem.classList.add(ActiveActionCssClass);
- } else {
- contractElem.classList.remove(ActiveActionCssClass);
- }
- var contract = this.contracts[name];
- if (contract == null) {
- throw new Error("Could not find Contract " + name + " in Bladeburner.updateActionAndSkillsContent()");
- }
- this.updateContractsUIElement(contractElem, contract);
- }
- break;
- case "operations":
- var operationElems = Object.keys(DomElems.operations);
- for (var i = 0; i < operationElems.length; ++i) {
- var operationElem = DomElems.operations[operationElems[i]];
- var name = operationElem.name;
- if (this.action.type === ActionTypes["Operation"] && name === this.action.name) {
- operationElem.classList.add(ActiveActionCssClass);
- } else {
- operationElem.classList.remove(ActiveActionCssClass);
- }
- var operation = this.operations[name];
- if (operation == null) {
- throw new Error("Could not find Operation " + name + " in Bladeburner.updateActionAndSkillsContent()");
- }
- this.updateOperationsUIElement(operationElem, operation);
- }
- break;
- case "blackops":
- var blackopsElems = Object.keys(DomElems.blackops);
- for (var i = 0; i < blackopsElems.length; ++i) {
- var blackopElem = DomElems.blackops[blackopsElems[i]];
- var name = blackopElem.name;
- if (this.action.type === ActionTypes["BlackOperation"] && name === this.action.name) {
- blackopElem.classList.add(ActiveActionCssClass);
- } else {
- blackopElem.classList.remove(ActiveActionCssClass);
- }
- var blackop = BlackOperations[name];
- if (blackop == null) {
- throw new Error("Could not find BlackOperation " + name + " in Bladeburner.updateActionAndSkillsContent()");
- }
- this.updateBlackOpsUIElement(blackopElem, blackop);
- }
- break;
- case "skills":
- var skillElems = Object.keys(DomElems.skills);
- for (var i = 0; i < skillElems.length; ++i) {
- var skillElem = DomElems.skills[skillElems[i]];
- var name = skillElem.name;
- var skill = Skills[name];
- if (skill == null) {
- throw new Error("Could not find Skill " + name + " in Bladeburner.updateActionAndSkillsContent()");
- }
- this.updateSkillsUIElement(skillElem, skill);
- }
- break;
- default:
- throw new Error("Invalid value for DomElems.currentTab in Bladeburner.createActionAndSkillsContent");
- }
-}
-
-Bladeburner.prototype.updateGeneralActionsUIElement = function(el, action) {
- Object(_utils_HelperFunctions_js__WEBPACK_IMPORTED_MODULE_8__["removeChildrenFromElement"])(el);
- var isActive = el.classList.contains(ActiveActionCssClass);
-
- el.appendChild(Object(_utils_HelperFunctions_js__WEBPACK_IMPORTED_MODULE_8__["createElement"])("h2", { //Header
- innerText:isActive ? action.name + " (IN PROGRESS - " +
- Object(_utils_StringHelperFunctions_js__WEBPACK_IMPORTED_MODULE_11__["formatNumber"])(this.actionTimeCurrent, 0) + " / " +
- Object(_utils_StringHelperFunctions_js__WEBPACK_IMPORTED_MODULE_11__["formatNumber"])(this.actionTimeToComplete, 0) + ")"
- : action.name,
- display:"inline-block",
- }));
-
- if (isActive) { //Progress bar if its active
- var progress = this.actionTimeCurrent / this.actionTimeToComplete;
- el.appendChild(Object(_utils_HelperFunctions_js__WEBPACK_IMPORTED_MODULE_8__["createElement"])("p", {
- display:"block",
- innerText:Object(_utils_HelperFunctions_js__WEBPACK_IMPORTED_MODULE_8__["createProgressBarText"])({progress:progress})
- }));
- } else {
- //Start button
- el.appendChild(Object(_utils_HelperFunctions_js__WEBPACK_IMPORTED_MODULE_8__["createElement"])("a", {
- innerText:"Start", class: "a-link-button",
- margin:"3px", padding:"3px",
- clickListener:()=>{
- this.action.type = ActionTypes[action.name];
- this.action.name = action.name;
- this.startAction(this.action);
- this.updateActionAndSkillsContent();
- return false;
- }
- }));
- }
-
- Object(_utils_HelperFunctions_js__WEBPACK_IMPORTED_MODULE_8__["appendLineBreaks"])(el, 2);
- el.appendChild(Object(_utils_HelperFunctions_js__WEBPACK_IMPORTED_MODULE_8__["createElement"])("pre", { //Info
- innerHTML:action.desc, display:"inline-block"
- }));
-
-
-}
-
-Bladeburner.prototype.updateContractsUIElement = function(el, action) {
- Object(_utils_HelperFunctions_js__WEBPACK_IMPORTED_MODULE_8__["removeChildrenFromElement"])(el);
- var isActive = el.classList.contains(ActiveActionCssClass);
- var estimatedSuccessChance = action.getSuccessChance(this, {est:true});
-
- el.appendChild(Object(_utils_HelperFunctions_js__WEBPACK_IMPORTED_MODULE_8__["createElement"])("h2", { //Header
- innerText:isActive ? action.name + " (IN PROGRESS - " +
- Object(_utils_StringHelperFunctions_js__WEBPACK_IMPORTED_MODULE_11__["formatNumber"])(this.actionTimeCurrent, 0) + " / " +
- Object(_utils_StringHelperFunctions_js__WEBPACK_IMPORTED_MODULE_11__["formatNumber"])(this.actionTimeToComplete, 0) + ")"
- : action.name,
- display:"inline-block"
- }));
-
- if (isActive) { //Progress bar if its active
- var progress = this.actionTimeCurrent / this.actionTimeToComplete;
- el.appendChild(Object(_utils_HelperFunctions_js__WEBPACK_IMPORTED_MODULE_8__["createElement"])("p", {
- display:"block",
- innerText:Object(_utils_HelperFunctions_js__WEBPACK_IMPORTED_MODULE_8__["createProgressBarText"])({progress:progress})
- }));
- } else { //Start button
- el.appendChild(Object(_utils_HelperFunctions_js__WEBPACK_IMPORTED_MODULE_8__["createElement"])("a", {
- innerText:"Start", class: "a-link-button",
- padding:"3px", margin:"3px",
- clickListener:()=>{
- this.action.type = ActionTypes.Contract;
- this.action.name = action.name;
- this.startAction(this.action);
- this.updateActionAndSkillsContent();
- return false;
- }
- }));
- }
-
- //Level and buttons to change level
- var maxLevel = (action.level >= action.maxLevel);
- Object(_utils_HelperFunctions_js__WEBPACK_IMPORTED_MODULE_8__["appendLineBreaks"])(el, 2);
- el.appendChild(Object(_utils_HelperFunctions_js__WEBPACK_IMPORTED_MODULE_8__["createElement"])("pre", {
- display:"inline-block",
- innerText:"Level: " + action.level + " / " + action.maxLevel
- }));
- el.appendChild(Object(_utils_HelperFunctions_js__WEBPACK_IMPORTED_MODULE_8__["createElement"])("a", {
- class: maxLevel ? "a-link-button-inactive" : "a-link-button", innerHTML:"↑",
- padding:"2px", margin:"2px",
- tooltip: isActive ? "WARNING: changing the level will restart the contract" : "",
- display:"inline",
- clickListener:()=>{
- ++action.level;
- if (isActive) {this.startAction(this.action);} //Restart Action
- this.updateContractsUIElement(el, action);
- return false;
- }
- }));
- el.appendChild(Object(_utils_HelperFunctions_js__WEBPACK_IMPORTED_MODULE_8__["createElement"])("a", {
- class: (action.level <= 1) ? "a-link-button-inactive" : "a-link-button", innerHTML:"↓",
- padding:"2px", margin:"2px",
- tooltip: isActive ? "WARNING: changing the level will restart the contract" : "",
- display:"inline",
- clickListener:()=>{
- --action.level;
- if (isActive) {this.startAction(this.action);} //Restart Action
- this.updateContractsUIElement(el, action);
- return false;
- }
- }));
-
- var actionTime = action.getActionTime(this);
- Object(_utils_HelperFunctions_js__WEBPACK_IMPORTED_MODULE_8__["appendLineBreaks"])(el, 2);
- el.appendChild(Object(_utils_HelperFunctions_js__WEBPACK_IMPORTED_MODULE_8__["createElement"])("pre", { //Info
- display:"inline-block",
- innerHTML:action.desc + "\n\n" +
- "Estimated success chance: " + Object(_utils_StringHelperFunctions_js__WEBPACK_IMPORTED_MODULE_11__["formatNumber"])(estimatedSuccessChance*100, 1) + "%\n" +
- "Time Required (s): " + Object(_utils_StringHelperFunctions_js__WEBPACK_IMPORTED_MODULE_11__["formatNumber"])(actionTime, 0) + "\n" +
- "Contracts remaining: " + Math.floor(action.count) + "\n" +
- "Successes: " + action.successes + "\n" +
- "Failures: " + action.failures,
- }));
-
- //Autolevel Checkbox
- el.appendChild(Object(_utils_HelperFunctions_js__WEBPACK_IMPORTED_MODULE_8__["createElement"])("br"));
- var autolevelCheckboxId = "bladeburner-" + action.name + "-autolevel-checkbox";
- el.appendChild(Object(_utils_HelperFunctions_js__WEBPACK_IMPORTED_MODULE_8__["createElement"])("label", {
- for:autolevelCheckboxId, innerText:"Autolevel",color:"white",
- tooltip:"Automatically increase contract level when possible"
- }));
- var autolevelCheckbox = Object(_utils_HelperFunctions_js__WEBPACK_IMPORTED_MODULE_8__["createElement"])("input", {
- type:"checkbox", id:autolevelCheckboxId, margin:"4px",
- checked:action.autoLevel,
- changeListener:()=>{
- action.autoLevel = autolevelCheckbox.checked;
- }
- });
- el.appendChild(autolevelCheckbox);
-}
-
-Bladeburner.prototype.updateOperationsUIElement = function(el, action) {
- Object(_utils_HelperFunctions_js__WEBPACK_IMPORTED_MODULE_8__["removeChildrenFromElement"])(el);
- var isActive = el.classList.contains(ActiveActionCssClass);
- var estimatedSuccessChance = action.getSuccessChance(this, {est:true});
- el.appendChild(Object(_utils_HelperFunctions_js__WEBPACK_IMPORTED_MODULE_8__["createElement"])("h2", { //Header
- innerText:isActive ? action.name + " (IN PROGRESS - " +
- Object(_utils_StringHelperFunctions_js__WEBPACK_IMPORTED_MODULE_11__["formatNumber"])(this.actionTimeCurrent, 0) + " / " +
- Object(_utils_StringHelperFunctions_js__WEBPACK_IMPORTED_MODULE_11__["formatNumber"])(this.actionTimeToComplete, 0) + ")"
- : action.name,
- display:"inline-block"
- }));
-
- if (isActive) { //Progress bar if its active
- var progress = this.actionTimeCurrent / this.actionTimeToComplete;
- el.appendChild(Object(_utils_HelperFunctions_js__WEBPACK_IMPORTED_MODULE_8__["createElement"])("p", {
- display:"block",
- innerText:Object(_utils_HelperFunctions_js__WEBPACK_IMPORTED_MODULE_8__["createProgressBarText"])({progress:progress})
- }));
- } else { //Start button and set Team Size button
- el.appendChild(Object(_utils_HelperFunctions_js__WEBPACK_IMPORTED_MODULE_8__["createElement"])("a", {
- innerText:"Start", class: "a-link-button",
- margin:"3px", padding:"3px",
- clickListener:()=>{
- this.action.type = ActionTypes.Operation;
- this.action.name = action.name;
- this.startAction(this.action);
- this.updateActionAndSkillsContent();
- return false;
- }
- }));
- el.appendChild(Object(_utils_HelperFunctions_js__WEBPACK_IMPORTED_MODULE_8__["createElement"])("a", {
- innerText:"Set Team Size (Curr Size: " + Object(_utils_StringHelperFunctions_js__WEBPACK_IMPORTED_MODULE_11__["formatNumber"])(action.teamCount, 0) + ")", class:"a-link-button",
- margin:"3px", padding:"3px",
- clickListener:()=>{
- var popupId = "bladeburner-operation-set-team-size-popup";
- var txt = Object(_utils_HelperFunctions_js__WEBPACK_IMPORTED_MODULE_8__["createElement"])("p", {
- innerText:"Enter the amount of team members you would like to take on these " +
- "operations. If you do not have the specified number of team members, " +
- "then as many as possible will be used. Note that team members may " +
- "be lost during operations."
-
- });
- var input = Object(_utils_HelperFunctions_js__WEBPACK_IMPORTED_MODULE_8__["createElement"])("input", {
- type:"number", placeholder: "Team Members"
- });
- var setBtn = Object(_utils_HelperFunctions_js__WEBPACK_IMPORTED_MODULE_8__["createElement"])("a", {
- innerText:"Confirm", class:"a-link-button",
- clickListener:()=>{
- var num = Math.round(parseFloat(input.value));
- if (isNaN(num)) {
- Object(_utils_DialogBox_js__WEBPACK_IMPORTED_MODULE_7__["dialogBoxCreate"])("Invalid value entered for number of Team Members (must be numeric)")
- } else {
- action.teamCount = num;
- this.updateOperationsUIElement(el, action);
- }
- Object(_utils_HelperFunctions_js__WEBPACK_IMPORTED_MODULE_8__["removeElementById"])(popupId);
- return false;
- }
- });
- var cancelBtn = Object(_utils_HelperFunctions_js__WEBPACK_IMPORTED_MODULE_8__["createElement"])("a", {
- innerText:"Cancel", class:"a-link-button",
- clickListener:()=>{
- Object(_utils_HelperFunctions_js__WEBPACK_IMPORTED_MODULE_8__["removeElementById"])(popupId);
- return false;
- }
- });
- Object(_utils_HelperFunctions_js__WEBPACK_IMPORTED_MODULE_8__["createPopup"])(popupId, [txt, input, setBtn, cancelBtn]);
- }
- }));
- }
-
- //Level and buttons to change level
- var maxLevel = (action.level >= action.maxLevel);
- Object(_utils_HelperFunctions_js__WEBPACK_IMPORTED_MODULE_8__["appendLineBreaks"])(el, 2);
- el.appendChild(Object(_utils_HelperFunctions_js__WEBPACK_IMPORTED_MODULE_8__["createElement"])("pre", {
- display:"inline-block",
- innerText:"Level: " + action.level + " / " + action.maxLevel
- }));
- el.appendChild(Object(_utils_HelperFunctions_js__WEBPACK_IMPORTED_MODULE_8__["createElement"])("a", {
- class: maxLevel ? "a-link-button-inactive" : "a-link-button", innerHTML:"↑",
- padding:"2px", margin:"2px",
- tooltip: isActive ? "WARNING: changing the level will restart the Operation" : "",
- display:"inline",
- clickListener:()=>{
- ++action.level;
- if (isActive) {this.startAction(this.action);} //Restart Action
- this.updateOperationsUIElement(el, action);
- return false;
- }
- }));
- el.appendChild(Object(_utils_HelperFunctions_js__WEBPACK_IMPORTED_MODULE_8__["createElement"])("a", {
- class: (action.level <= 1) ? "a-link-button-inactive" : "a-link-button", innerHTML:"↓",
- padding:"2px", margin:"2px",
- tooltip: isActive ? "WARNING: changing the level will restart the Operation" : "",
- display:"inline",
- clickListener:()=>{
- --action.level;
- if (isActive) {this.startAction(this.action);} //Restart Action
- this.updateOperationsUIElement(el, action);
- return false;
- }
- }));
-
- //General Info
- var difficulty = action.getDifficulty();
- var actionTime = action.getActionTime(this);
- Object(_utils_HelperFunctions_js__WEBPACK_IMPORTED_MODULE_8__["appendLineBreaks"])(el, 2);
- el.appendChild(Object(_utils_HelperFunctions_js__WEBPACK_IMPORTED_MODULE_8__["createElement"])("pre", {
- display:"inline-block",
- innerHTML:action.desc + "\n\n" +
- "Estimated success chance: " + Object(_utils_StringHelperFunctions_js__WEBPACK_IMPORTED_MODULE_11__["formatNumber"])(estimatedSuccessChance*100, 1) + "%\n" +
- "Time Required(s): " + Object(_utils_StringHelperFunctions_js__WEBPACK_IMPORTED_MODULE_11__["formatNumber"])(actionTime, 1) + "\n" +
- "Operations remaining: " + Math.floor(action.count) + "\n" +
- "Successes: " + action.successes + "\n" +
- "Failures: " + action.failures,
- }));
-
- //Autolevel Checkbox
- el.appendChild(Object(_utils_HelperFunctions_js__WEBPACK_IMPORTED_MODULE_8__["createElement"])("br"));
- var autolevelCheckboxId = "bladeburner-" + action.name + "-autolevel-checkbox";
- el.appendChild(Object(_utils_HelperFunctions_js__WEBPACK_IMPORTED_MODULE_8__["createElement"])("label", {
- for:autolevelCheckboxId, innerText:"Autolevel",color:"white",
- tooltip:"Automatically increase operation level when possible"
- }));
- var autolevelCheckbox = Object(_utils_HelperFunctions_js__WEBPACK_IMPORTED_MODULE_8__["createElement"])("input", {
- type:"checkbox", id:autolevelCheckboxId, margin:"4px",
- checked:action.autoLevel,
- changeListener:()=>{
- action.autoLevel = autolevelCheckbox.checked;
- }
- });
- el.appendChild(autolevelCheckbox);
-}
-
-Bladeburner.prototype.updateBlackOpsUIElement = function(el, action) {
- Object(_utils_HelperFunctions_js__WEBPACK_IMPORTED_MODULE_8__["removeChildrenFromElement"])(el);
- var isActive = el.classList.contains(ActiveActionCssClass);
- var isCompleted = (this.blackops[action.name] != null);
- var estimatedSuccessChance = action.getSuccessChance(this, {est:true});
- var difficulty = action.getDifficulty();
- var actionTime = action.getActionTime(this);
- var hasReqdRank = this.rank >= action.reqdRank;
-
- //UI for Completed Black Op
- if (isCompleted) {
- el.appendChild(Object(_utils_HelperFunctions_js__WEBPACK_IMPORTED_MODULE_8__["createElement"])("h2", {
- innerText:action.name + " (COMPLETED)", display:"block",
- }));
- return;
- }
-
- el.appendChild(Object(_utils_HelperFunctions_js__WEBPACK_IMPORTED_MODULE_8__["createElement"])("h2", { //Header
- innerText:isActive ? action.name + " (IN PROGRESS - " +
- Object(_utils_StringHelperFunctions_js__WEBPACK_IMPORTED_MODULE_11__["formatNumber"])(this.actionTimeCurrent, 0) + " / " +
- Object(_utils_StringHelperFunctions_js__WEBPACK_IMPORTED_MODULE_11__["formatNumber"])(this.actionTimeToComplete, 0) + ")"
- : action.name,
- display:"inline-block",
- }));
-
- if (isActive) { //Progress bar if its active
- var progress = this.actionTimeCurrent / this.actionTimeToComplete;
- el.appendChild(Object(_utils_HelperFunctions_js__WEBPACK_IMPORTED_MODULE_8__["createElement"])("p", {
- display:"block",
- innerText:Object(_utils_HelperFunctions_js__WEBPACK_IMPORTED_MODULE_8__["createProgressBarText"])({progress:progress})
- }));
- } else {
- el.appendChild(Object(_utils_HelperFunctions_js__WEBPACK_IMPORTED_MODULE_8__["createElement"])("a", { //Start button
- innerText:"Start", margin:"3px", padding:"3px",
- class:hasReqdRank ? "a-link-button" : "a-link-button-inactive",
- clickListener:()=>{
- this.action.type = ActionTypes.BlackOperation;
- this.action.name = action.name;
- this.startAction(this.action);
- this.updateActionAndSkillsContent();
- return false;
- }
- }));
- el.appendChild(Object(_utils_HelperFunctions_js__WEBPACK_IMPORTED_MODULE_8__["createElement"])("a", { //Set Team Size Button
- innerText:"Set Team Size (Curr Size: " + Object(_utils_StringHelperFunctions_js__WEBPACK_IMPORTED_MODULE_11__["formatNumber"])(action.teamCount, 0) + ")", class:"a-link-button",
- margin:"3px", padding:"3px",
- clickListener:()=>{
- var popupId = "bladeburner-operation-set-team-size-popup";
- var txt = Object(_utils_HelperFunctions_js__WEBPACK_IMPORTED_MODULE_8__["createElement"])("p", {
- innerText:"Enter the amount of team members you would like to take on this " +
- "BlackOp. If you do not have the specified number of team members, " +
- "then as many as possible will be used. Note that team members may " +
- "be lost during operations."
-
- });
- var input = Object(_utils_HelperFunctions_js__WEBPACK_IMPORTED_MODULE_8__["createElement"])("input", {
- type:"number", placeholder: "Team Members"
- });
- var setBtn = Object(_utils_HelperFunctions_js__WEBPACK_IMPORTED_MODULE_8__["createElement"])("a", {
- innerText:"Confirm", class:"a-link-button",
- clickListener:()=>{
- var num = Math.round(parseFloat(input.value));
- if (isNaN(num)) {
- Object(_utils_DialogBox_js__WEBPACK_IMPORTED_MODULE_7__["dialogBoxCreate"])("Invalid value entered for number of Team Members (must be numeric)")
- } else {
- action.teamCount = num;
- this.updateBlackOpsUIElement(el, action);
- }
- Object(_utils_HelperFunctions_js__WEBPACK_IMPORTED_MODULE_8__["removeElementById"])(popupId);
- return false;
- }
- });
- var cancelBtn = Object(_utils_HelperFunctions_js__WEBPACK_IMPORTED_MODULE_8__["createElement"])("a", {
- innerText:"Cancel", class:"a-link-button",
- clickListener:()=>{
- Object(_utils_HelperFunctions_js__WEBPACK_IMPORTED_MODULE_8__["removeElementById"])(popupId);
- return false;
- }
- });
- Object(_utils_HelperFunctions_js__WEBPACK_IMPORTED_MODULE_8__["createPopup"])(popupId, [txt, input, setBtn, cancelBtn]);
- }
- }));
- }
-
- //Info
- Object(_utils_HelperFunctions_js__WEBPACK_IMPORTED_MODULE_8__["appendLineBreaks"])(el, 2);
- el.appendChild(Object(_utils_HelperFunctions_js__WEBPACK_IMPORTED_MODULE_8__["createElement"])("p", {
- display:"inline-block",
- innerHTML:"
" + action.desc + "
",
- }));
- el.appendChild(Object(_utils_HelperFunctions_js__WEBPACK_IMPORTED_MODULE_8__["createElement"])("p", {
- display:"block", color:hasReqdRank ? "white" : "red",
- innerHTML:"Required Rank: " + Object(_utils_StringHelperFunctions_js__WEBPACK_IMPORTED_MODULE_11__["formatNumber"])(action.reqdRank, 0) + "
"
- }));
- el.appendChild(Object(_utils_HelperFunctions_js__WEBPACK_IMPORTED_MODULE_8__["createElement"])("p", {
- display:"inline-block",
- innerHTML:"Estimated Success Chance: " + Object(_utils_StringHelperFunctions_js__WEBPACK_IMPORTED_MODULE_11__["formatNumber"])(estimatedSuccessChance*100, 1) + "%\n" +
- "Time Required(s): " + Object(_utils_StringHelperFunctions_js__WEBPACK_IMPORTED_MODULE_11__["formatNumber"])(actionTime, 1),
- }))
-}
-
-Bladeburner.prototype.updateSkillsUIElement = function(el, skill) {
- Object(_utils_HelperFunctions_js__WEBPACK_IMPORTED_MODULE_8__["removeChildrenFromElement"])(el);
- var skillName = skill.name;
- var currentLevel = 0;
- if (this.skills[skillName] && !isNaN(this.skills[skillName])) {
- currentLevel = this.skills[skillName];
- }
- var pointCost = skill.baseCost + (currentLevel * skill.costInc);
-
- el.appendChild(Object(_utils_HelperFunctions_js__WEBPACK_IMPORTED_MODULE_8__["createElement"])("h2", { //Header
- innerText:skill.name + " (Lvl " + currentLevel + ")", display:"inline-block"
- }));
-
- var canLevel = this.skillPoints >= pointCost;
- var maxLvl = skill.maxLvl ? currentLevel >= skill.maxLvl : false;
- el.appendChild(Object(_utils_HelperFunctions_js__WEBPACK_IMPORTED_MODULE_8__["createElement"])("a", { //Level up button
- innerText:"Level", display:"inline-block",
- class: canLevel && !maxLvl ? "a-link-button" : "a-link-button-inactive",
- margin:"3px", padding:"3px",
- clickListener:()=>{
- this.skillPoints -= pointCost;
- this.upgradeSkill(skill);
- this.createActionAndSkillsContent();
- return false;
- }
- }));
- Object(_utils_HelperFunctions_js__WEBPACK_IMPORTED_MODULE_8__["appendLineBreaks"])(el, 2);
- if (maxLvl) {
- el.appendChild(Object(_utils_HelperFunctions_js__WEBPACK_IMPORTED_MODULE_8__["createElement"])("p", {
- color:"red", display:"block",
- innerText:"MAX LEVEL"
- }));
- } else {
- el.appendChild(Object(_utils_HelperFunctions_js__WEBPACK_IMPORTED_MODULE_8__["createElement"])("p", {
- display:"block",
- innerText:"Skill Points required: " + Object(_utils_StringHelperFunctions_js__WEBPACK_IMPORTED_MODULE_11__["formatNumber"])(pointCost, 0),
- }));
- }
- el.appendChild(Object(_utils_HelperFunctions_js__WEBPACK_IMPORTED_MODULE_8__["createElement"])("p", { //Info/Description
- innerHTML:skill.desc, display:"inline-block",
- }));
-}
-
-//Bladeburner Console Window
-Bladeburner.prototype.postToConsole = function(input) {
- if (input == null || DomElems.consoleDiv == null) {return;}
- $("#bladeubrner-console-input-row").before(' ');
- if (DomElems.consoleTable.childNodes.length > 200) {
- DomElems.consoleTable.removeChild(DomElems.consoleTable.firstChild);
- }
- this.updateConsoleScroll();
-}
-
-Bladeburner.prototype.updateConsoleScroll = function() {
- DomElems.consoleDiv.scrollTop = DomElems.consoleDiv.scrollHeight;
-}
-
-Bladeburner.prototype.resetConsoleInput = function() {
- DomElems.consoleInput.value = "";
-}
-
-Bladeburner.prototype.clearConsole = function() {
- while (DomElems.consoleTable.childNodes.length > 1) {
- DomElems.consoleTable.removeChild(DomElems.consoleTable.firstChild);
- }
-}
-
-Bladeburner.prototype.log = function(input) {
- //Adds a timestamp and then just calls postToConsole
- var d = new Date();
- var timestamp = d.getMonth() + "/" + d.getDay() + " " + d.getHours() + ":" + d.getMinutes();
- this.postToConsole("[" + timestamp + "] " + input);
-}
-
-//Handles a potential series of commands (comm1; comm2; comm3;)
-Bladeburner.prototype.executeConsoleCommands = function(commands) {
- try {
- //Console History
- if (consoleHistory[consoleHistory.length-1] != commands) {
- consoleHistory.push(commands);
- if (consoleHistory.length > 50) {
- consoleHistory.splice(0, 1);
- }
- }
- consoleHistoryIndex = consoleHistory.length;
-
- var arrayOfCommands = commands.split(";");
- for (var i = 0; i < arrayOfCommands.length; ++i) {
- this.executeConsoleCommand(arrayOfCommands[i]);
- }
- } catch(e) {
- Object(_utils_HelperFunctions_js__WEBPACK_IMPORTED_MODULE_8__["exceptionAlert"])(e);
- }
-}
-
-//A single command
-Bladeburner.prototype.executeConsoleCommand = function(command) {
- command = command.trim();
- command = command.replace(/\s\s+/g, ' '); //Replace all whitespace w/ a single space
-
- var args = this.parseCommandArguments(command);
- if (args.length <= 0) {return;} //Log an error?
-
- switch(args[0].toLowerCase()) {
- case "automate":
- this.executeAutomateConsoleCommand(args);
- break;
- case "clear":
- case "cls":
- this.clearConsole();
- break;
- case "help":
- this.executeHelpConsoleCommand(args);
- break;
- case "log":
- this.executeLogConsoleCommand(args);
- break;
- case "skill":
- this.executeSkillConsoleCommand(args);
- break;
- case "start":
- this.executeStartConsoleCommand(args);
- break;
- case "stop":
- this.resetAction();
- break;
- default:
- this.postToConsole("Invalid console command");
- break;
- }
-}
-
-Bladeburner.prototype.parseCommandArguments = function(command) {
- //Returns an array with command and its arguments in each index.
- //e.g. skill "blade's intuition" foo returns [skill, blade's intuition, foo]
- //The input to this fn will be trimmed and will have all whitespace replaced w/ a single space
- var args = [];
- var start = 0, i = 0;
- while (i < command.length) {
- var c = command.charAt(i);
- if (c === '"') {
- var endQuote = command.indexOf('"', i+1);
- if (endQuote !== -1 && (endQuote === command.length-1 || command.charAt(endQuote+1) === " ")) {
- args.push(command.substr(i+1, (endQuote - i - 1)));
- if (endQuote === command.length-1) {
- start = i = endQuote+1;
- } else {
- start = i = endQuote+2; //Skip the space
- }
- continue;
- }
- } else if (c === " ") {
- args.push(command.substr(start, i-start));
- start = i+1;
- }
- ++i;
- }
- if (start !== i) {args.push(command.substr(start, i-start));}
- console.log("Bladeburner.parseCommandArguments returned: " + args);
- return args;
-}
-
-Bladeburner.prototype.executeAutomateConsoleCommand = function(args) {
- if (args.length !== 2 && args.length !== 4) {
- this.postToConsole("Invalid use of 'automate' command: automate [var] [val] [hi/low]. Use 'help automate' for more info");
- return;
- }
-
- //Enable/Disable
- if (args.length === 2) {
- var flag = args[1];
- if (flag.toLowerCase() === "status") {
- this.postToConsole("Automation: " + (this.automateEnabled ? "enabled" : "disabled"));
- if (this.automateEnabled) {
- this.postToConsole("When your stamina drops to " + Object(_utils_StringHelperFunctions_js__WEBPACK_IMPORTED_MODULE_11__["formatNumber"])(this.automateThreshLow, 0) +
- ", you will automatically switch to " + this.automateActionLow.name +
- ". When your stamina recovers to " +
- Object(_utils_StringHelperFunctions_js__WEBPACK_IMPORTED_MODULE_11__["formatNumber"])(this.automateThreshHigh, 0) + ", you will automatically " +
- "switch to " + this.automateActionHigh.name + ".");
- }
-
- } else if (flag.toLowerCase().includes("en")) {
- if (!(this.automateActionLow instanceof ActionIdentifier) ||
- !(this.automateActionHigh instanceof ActionIdentifier)) {
- return this.log("Failed to enable automation. Actions were not set");
- }
- this.automateEnabled = true;
- this.log("Bladeburner automation enabled");
- } else if (flag.toLowerCase().includes("d")) {
- this.automateEnabled = false;
- this.log("Bladeburner automation disabled");
- } else {
- this.log("Invalid argument for 'automate' console command: " + args[1]);
- }
- return;
- }
-
- //Set variables
- if (args.length === 4) {
- var variable = args[1], val = args[2];
-
- var highLow = false; //True for high, false for low
- if (args[3].toLowerCase().includes("hi")) {highLow = true;}
-
- switch (variable) {
- case "general":
- case "gen":
- if (GeneralActions[val] != null) {
- var action = new ActionIdentifier({
- type:ActionTypes[val], name:val
- });
- if (highLow) {
- this.automateActionHigh = action;
- } else {
- this.automateActionLow = action;
- }
- this.log("Automate (" + (highLow ? "HIGH" : "LOW") + ") action set to " + val);
- } else {
- this.postToConsole("Invalid action name specified: " + val);
- }
- break;
- case "contract":
- case "contracts":
- if (this.contracts[val] != null) {
- var action = new ActionIdentifier({
- type:ActionTypes.Contract, name:val
- });
- if (highLow) {
- this.automateActionHigh = action;
- } else {
- this.automateActionLow = action;
- }
- this.log("Automate (" + (highLow ? "HIGH" : "LOW") + ") action set to " + val);
- } else {
- this.postToConsole("Invalid contract name specified: " + val);
- }
- break;
- case "ops":
- case "op":
- case "operations":
- case "operation":
- if (this.operations[val] != null) {
- var action = new ActionIdentifier({
- type:ActionTypes.Operation, name:val
- });
- if (highLow) {
- this.automateActionHigh = action;
- } else {
- this.automateActionLow = action;
- }
- this.log("Automate (" + (highLow ? "HIGH" : "LOW") + ") action set to " + val);
- } else {
- this.postToConsole("Invalid Operation name specified: " + val);
- }
- break;
- case "stamina":
- if (isNaN(val)) {
- this.postToConsole("Invalid value specified for stamina threshold (must be numeric): " + val);
- } else {
- if (highLow) {
- this.automateThreshHigh = Number(val);
- } else {
- this.automateThreshLow = Number(val);
- }
- this.log("Automate (" + (highLow ? "HIGH" : "LOW") + ") stamina threshold set to " + val);
- }
- break;
- default:
- break;
- }
-
- return;
- }
-}
-
-Bladeburner.prototype.executeHelpConsoleCommand = function(args) {
- if (args.length === 1) {
- this.postToConsole(consoleHelpText.helpList);
- } else {
- for (var i = 1; i < args.length; ++i) {
- var commandText = consoleHelpText[args[i]];
- if (commandText != null) {
- this.postToConsole(commandText);
- this.postToConsole("' + input + '
");
- }
- }
- }
-}
-
-Bladeburner.prototype.executeLogConsoleCommand = function(args) {
- if (args.length < 3) {
- this.postToConsole("Invalid usage of log command: log [enable/disable] [action/event]");
- this.postToConsole("Use 'help log' for more details and examples");
- return;
- }
-
- var flag = true;
- if (args[1].toLowerCase().includes("d")) {flag = false;} //d for disable
-
- switch (args[2].toLowerCase()) {
- case "general":
- case "gen":
- this.logging.general = flag;
- this.log("Logging " + (flag ? "enabled" : "disabled") + " for general actions");
- break;
- case "contract":
- case "contracts":
- this.logging.contracts = flag;
- this.log("Logging " + (flag ? "enabled" : "disabled") + " for Contracts");
- break;
- case "ops":
- case "op":
- case "operations":
- case "operation":
- this.logging.ops = flag;
- this.log("Logging " + (flag ? "enabled" : "disabled") + " for Operations");
- break;
- case "blackops":
- case "blackop":
- case "black operations":
- case "black operation":
- this.logging.blackops = flag;
- this.log("Logging " + (flag ? "enabled" : "disabled") + " for BlackOps");
- break;
- case "event":
- case "events":
- this.logging.events = flag;
- this.log("Logging " + (flag ? "enabled" : "disabled") + " for events");
- break;
- case "all":
- this.logging.general = flag;
- this.logging.contracts = flag;
- this.logging.ops = flag;
- this.logging.blackops = flag;
- this.logging.events = flag;
- this.log("Logging " + (flag ? "enabled" : "disabled") + " for everything");
- break;
- default:
- this.postToConsole("Invalid action/event type specified: " + args[2]);
- this.postToConsole("Examples of valid action/event identifiers are: [general, contracts, ops, blackops, events]");
- break;
- }
-}
-
-Bladeburner.prototype.executeSkillConsoleCommand = function(args) {
- switch (args.length) {
- case 1:
- //Display Skill Help Command
- this.postToConsole("Invalid usage of 'skill' console command: skill [action] [name]");
- this.postToConsole("Use 'help skill' for more info");
- break;
- case 2:
- if (args[1].toLowerCase() === "list") {
- //List all skills and their level
- this.postToConsole("Skills: ");
- var skillNames = Object.keys(Skills);
- for(var i = 0; i < skillNames.length; ++i) {
- var skill = Skills[skillNames[i]];
- var level = 0;
- if (this.skills[skill.name] != null) {level = this.skills[skill.name];}
- this.postToConsole(skill.name + ": Level " + Object(_utils_StringHelperFunctions_js__WEBPACK_IMPORTED_MODULE_11__["formatNumber"])(level, 0));
- }
- this.postToConsole(" ");
- this.postToConsole("Effects: ");
- var multKeys = Object.keys(this.skillMultipliers);
- for (var i = 0; i < multKeys.length; ++i) {
- var mult = this.skillMultipliers[multKeys[i]];
- if (mult && mult !== 1) {
- mult = Object(_utils_StringHelperFunctions_js__WEBPACK_IMPORTED_MODULE_11__["formatNumber"])(mult, 3);
- switch(multKeys[i]) {
- case "successChanceAll":
- this.postToConsole("Total Success Chance: x" + mult);
- break;
- case "successChanceStealth":
- this.postToConsole("Stealth Success Chance: x" + mult);
- break;
- case "successChanceKill":
- this.postToConsole("Retirement Success Chance: x" + mult);
- break;
- case "successChanceContract":
- this.postToConsole("Contract Success Chance: x" + mult);
- break;
- case "successChanceOperation":
- this.postToConsole("Operation Success Chance: x" + mult);
- break;
- case "successChanceEstimate":
- this.postToConsole("Synthoid Data Estimate: x" + mult);
- break;
- case "actionTime":
- this.postToConsole("Action Time: x" + mult);
- break;
- case "effHack":
- this.postToConsole("Hacking Skill: x" + mult);
- break;
- case "effStr":
- this.postToConsole("Strength: x" + mult);
- break;
- case "effDef":
- this.postToConsole("Defense: x" + mult);
- break;
- case "effDex":
- this.postToConsole("Dexterity: x" + mult);
- break;
- case "effAgi":
- this.postToConsole("Agility: x" + mult);
- break;
- case "effCha":
- this.postToConsole("Charisma: x" + mult);
- break;
- case "effInt":
- this.postToConsole("Intelligence: x" + mult);
- break;
- case "stamina":
- this.postToConsole("Stamina: x" + mult);
- break;
- case "weaponAbility":
- //DomElems.actionsAndSkillsDesc.innerHTML +=
- break;
- case "gunAbility":
- //DomElems.actionsAndSkillsDesc.innerHTML
- break;
- default:
- console.log("Warning: Unrecognized SkillMult Key: " + multKeys[i]);
- break;
- }
- }
- }
- } else {
- this.postToConsole("Invalid usage of 'skill' console command: skill [action] [name]");
- this.postToConsole("Use 'help skill' for more info");
- }
- break;
- case 3:
- var skillName = args[2];
- var skill = Skills[skillName];
- if (skill == null || !(skill instanceof Skill)) {
- return this.postToConsole("Invalid skill name (Note that this is case-sensitive): " + skillName);
- }
- if (args[1].toLowerCase() === "list") {
- this.postToConsole(skill.name + ": Level " + Object(_utils_StringHelperFunctions_js__WEBPACK_IMPORTED_MODULE_11__["formatNumber"])(this.skills[skill.name]), 0);
- } else if (args[1].toLowerCase() === "level") {
- var currentLevel = 0;
- if (this.skills[skillName] && !isNaN(this.skills[skillName])) {
- currentLevel = this.skills[skillName];
- }
- var pointCost = skill.baseCost + (currentLevel * skill.costInc);
- if (this.skillPoints >= pointCost) {
- this.skillPoints -= pointCost;
- this.upgradeSkill(skill);
- this.log(skill.name + " upgraded to Level " + this.skills[skillName]);
- this.createActionAndSkillsContent();
- } else {
- this.postToConsole("You do not have enough Skill Points to upgrade this. You need " + Object(_utils_StringHelperFunctions_js__WEBPACK_IMPORTED_MODULE_11__["formatNumber"])(pointCost, 0));
- }
-
- } else {
- this.postToConsole("Invalid usage of 'skill' console command: skill [action] [name]");
- this.postToConsole("Use 'help skill' for more info");
- }
- break;
- default:
- this.postToConsole("Invalid usage of 'skill' console command: skill [action] [name]");
- this.postToConsole("Use 'help skill' for more info");
- break;
- }
-}
-
-Bladeburner.prototype.executeStartConsoleCommand = function(args) {
- if (args.length !== 3) {
- this.postToConsole("Invalid usage of 'start' console command: start [type] [name]");
- this.postToConsole("Use 'help start' for more info");
- return;
- }
- var name = args[2];
- switch (args[1].toLowerCase()) {
- case "general":
- case "gen":
- if (GeneralActions[name] != null) {
- this.action.type = ActionTypes[name];
- this.action.name = name;
- this.startAction(this.action);
- this.updateActionAndSkillsContent();
- } else {
- this.postToConsole("Invalid action name specified: " + args[2]);
- }
- break;
- case "contract":
- case "contracts":
- if (this.contracts[name] != null) {
- this.action.type = ActionTypes.Contract;
- this.action.name = name;
- this.startAction(this.action);
- this.updateActionAndSkillsContent();
- } else {
- this.postToConsole("Invalid contract name specified: " + args[2]);
- }
- break;
- case "ops":
- case "op":
- case "operations":
- case "operation":
- if (this.operations[name] != null) {
- this.action.type = ActionTypes.Operation;
- this.action.name = name;
- this.startAction(this.action);
- this.updateActionAndSkillsContent();
- } else {
- this.postToConsole("Invalid Operation name specified: " + args[2]);
- }
- break;
- case "blackops":
- case "blackop":
- case "black operations":
- case "black operation":
- if (BlackOperations[name] != null) {
- this.action.type = ActionTypes.BlackOperation;
- this.action.name = name;
- this.startAction(this.action);
- this.updateActionAndSkillsContent();
- } else {
- this.postToConsole("Invalid BlackOp name specified: " + args[2]);
- }
- break;
- default:
- this.postToConsole("Invalid action/event type specified: " + args[1]);
- this.postToConsole("Examples of valid action/event identifiers are: [general, contract, op, blackop]");
- break;
- }
-}
-
-
-Bladeburner.prototype.toJSON = function() {
- return Object(_utils_JSONReviver_js__WEBPACK_IMPORTED_MODULE_9__["Generic_toJSON"])("Bladeburner", this);
-}
-Bladeburner.fromJSON = function(value) {
- return Object(_utils_JSONReviver_js__WEBPACK_IMPORTED_MODULE_9__["Generic_fromJSON"])(Bladeburner, value.data);
-}
-_utils_JSONReviver_js__WEBPACK_IMPORTED_MODULE_9__["Reviver"].constructors.Bladeburner = Bladeburner;
-
-//This initialized Bladeburner-related data that is NOT saved/loaded
-// eg: Skill Objects, BLack Operations
-//Any data that is saved/loaded should go in Bladeburner object
-// eg: contracts, operations
-function initBladeburner() {
- //Skills
- Skills[SkillNames.BladesIntuition] = new Skill({
- name:SkillNames.BladesIntuition,
- desc:"Each level of this skill increases your success chance " +
- "for all contracts and operations by 3%",
- baseCost:5, costInc:2,
- successChanceAll:3
- });
- Skills[SkillNames.Reaper] = new Skill({
- name:SkillNames.Reaper,
- desc:"Each level of this skill increases your " +
- "effective combat stats for Bladeburner actions by 3%",
- baseCost:3, costInc:2,
- effStr:3, effDef:3, effDex:3, effAgi:3
- });
- Skills[SkillNames.Cloak] = new Skill({
- name:SkillNames.Cloak,
- desc:"Each level of this skill increases your " +
- "success chance in stealth-related contracts and operations by 5.5%",
- baseCost:3, costInc:1,
- successChanceStealth:5.5
- });
-
- //TODO Marksman
- //TODO Weapon Proficiency
-
- Skills[SkillNames.Overclock] = new Skill({
- name:SkillNames.Overclock,
- desc:"Each level of this skill decreases the time it takes " +
- "to attempt a contract or operation by 1% (Max Level: 99)",
- baseCost:5, costInc:1, maxLvl:95,
- actionTime:1
- });
- Skills[SkillNames.EvasiveSystem] = new Skill({
- name:SkillNames.EvasiveSystem,
- desc:"Each level of this skill increases your effective " +
- "dexterity and agility for Bladeburner actions by 5%",
- baseCost:2, costInc: 1,
- effDex:5, effAgi:5
- });
- Skills[SkillNames.ShortCircuit] = new Skill({
- name:SkillNames.ShortCircuit,
- desc:"Each level of this skill increases your success chance " +
- "in contracts and operations that involve retirement by 5.5%",
- baseCost:3, costInc:2,
- successChanceKill:5.5
- });
- Skills[SkillNames.DigitalObserver] = new Skill({
- name:SkillNames.DigitalObserver,
- desc:"Each level of this skill increases your success chance in " +
- "all operations by 4%",
- baseCost:5, costInc:2,
- successChanceOperation:4
- });
- Skills[SkillNames.Datamancer] = new Skill({
- name:SkillNames.Datamancer,
- desc:"Each level of this skill increases your effectiveness in " +
- "synthoid population analysis and investigation by 5%. " +
- "This affects all actions that can potentially increase " +
- "the accuracy of your synthoid population/community estimates.",
- baseCost:3,costInc:1,
- successChanceEstimate:5
- });
- Skills[SkillNames.Tracer] = new Skill({
- name:SkillNames.Tracer,
- desc:"Each level of this skill increases your success chance in " +
- "all contracts by 4%",
- baseCost:3, costInc:2,
- successChanceContract:4
- });
- Skills[SkillNames.CybersEdge] = new Skill({
- name:SkillNames.CybersEdge,
- desc:"Each level of this skill increases your max " +
- "stamina by 2%",
- baseCost:1, costInc:3,
- stamina:2
- });
-
- //General Actions
- var actionName = "Training";
- GeneralActions[actionName] = new Action({
- name:actionName,
- desc:"Improve your abilities at the Bladeburner unit's specialized training " +
- "center. Doing this gives experience for all combat stats and also " +
- "increases your max stamina."
- });
-
- var actionName = "Field Analysis";
- GeneralActions[actionName] = new Action({
- name:actionName,
- desc:"Mine and analyze Synthoid-related data. This improve the " +
- "Bladeburner's unit intelligence on Synthoid locations and " +
- "activities. Completing this action will improve the accuracy " +
- "of your Synthoid population estimated in the current city.
" +
- "Does NOT require stamina."
- });
-
- var actionName = "Recruitment";
- GeneralActions[actionName] = new Action({
- name:actionName,
- desc:"Attempt to recruit members for your Bladeburner team. These members " +
- "can help you conduct operations.
" +
- "Does NOT require stamina."
- });
-
- //Black Operations
- BlackOperations["Operation Typhoon"] = new BlackOperation({
- name:"Operation Typhoon",
- desc:"Obadiah Zenyatta is the leader of a RedWater PMC. It has long " +
- "been known among the intelligence community that Zenyatta, along " +
- "with the rest of the PMC, is a Synthoid.
" +
- "The goal of Operation Typhoon is to find and eliminate " +
- "Zenyatta and RedWater by any means necessary. After the task " +
- "is completed, the actions must be covered up from the general public.",
- baseDifficulty:2000, reqdRank:2.5e3,
- rankGain:25, rankLoss:10, hpLoss:100,
- weights:{hack:0.1,str:0.2,def:0.2,dex:0.2,agi:0.2,cha:0, int:0.1},
- decays:{hack:0.6,str:0.8,def:0.8,dex:0.8,agi:0.8,cha:0, int:0.75},
- isKill:true
- });
- BlackOperations["Operation Zero"] = new BlackOperation({
- name:"Operation Zero",
- desc:"AeroCorp is one of the world's largest defense contractors. " +
- "It's leader, Steve Watataki, is thought to be a supporter of " +
- "Synthoid rights. He must be removed.
" +
- "The goal of Operation Zero is to covertly infiltrate AeroCorp and " +
- "uncover any incriminating evidence or " +
- "information against Watataki that will cause him to be removed " +
- "from his position at AeroCorp. Incriminating evidence can be " +
- "fabricated as a last resort. Be warned that AeroCorp has some of " +
- "the most advanced security measures in the world.",
- baseDifficulty:2500, reqdRank:5e3,
- rankGain:30, rankLoss:15, hpLoss:50,
- weights:{hack:0.2,str:0.15,def:0.15,dex:0.2,agi:0.2,cha:0, int:0.1},
- decays:{hack:0.6,str:0.8,def:0.8,dex:0.8,agi:0.8,cha:0, int:0.75},
- isStealth:true
- });
- BlackOperations["Operation X"] = new BlackOperation({
- name:"Operation X",
- desc:"We have recently discovered an underground publication " +
- "group called Samizdat. Even though most of their publications " +
- "are nonsensical conspiracy theories, the average human is " +
- "gullible enough to believe them. Many of their works discuss " +
- "Synthoids and pose a threat to society. The publications are spreading " +
- "rapidly in China and other Eastern countries.
" +
- "Samizdat has done a good job of keeping hidden and anonymous. " +
- "However, we've just received intelligence that their base of " +
- "operations is in Ishima's underground sewer systems. Your task is to " +
- "investigate the sewer systems, and eliminate Samizdat. They must " +
- "never publish anything again.",
- baseDifficulty:3000, reqdRank:7.5e3,
- rankGain:30, rankLoss:15, hpLoss:100,
- weights:{hack:0.1,str:0.2,def:0.2,dex:0.2,agi:0.2,cha:0, int:0.1},
- decays:{hack:0.6,str:0.8,def:0.8,dex:0.8,agi:0.8,cha:0, int:0.75},
- isKill:true
- });
- BlackOperations["Operation Titan"] = new BlackOperation({
- name:"Operation Titan",
- desc:"Several months ago Titan Laboratories' Bioengineering department " +
- "was infiltrated by Synthoids. As far as we know, Titan Laboratories' " +
- "management has no knowledge about this. We don't know what the " +
- "Synthoids are up to, but the research that they could " +
- "be conducting using Titan Laboraties' vast resources is potentially " +
- "very dangerous.
" +
- "Your goal is to enter and destroy the Bioengineering department's " +
- "facility in Aevum. The task is not just to retire the Synthoids there, but " +
- "also to destroy any information or research at the facility that " +
- "is relevant to the Synthoids and their goals.",
- baseDifficulty:4000, reqdRank:10e3,
- rankGain:40, rankLoss:20, hpLoss:100,
- weights:{hack:0.1,str:0.2,def:0.2,dex:0.2,agi:0.2,cha:0, int:0.1},
- decays:{hack:0.6,str:0.8,def:0.8,dex:0.8,agi:0.8,cha:0, int:0.75},
- isKill:true
- });
- BlackOperations["Operation Ares"] = new BlackOperation({
- name:"Operation Ares",
- desc:"One of our undercover agents, Agent Carter, has informed us of a " +
- "massive weapons deal going down in Dubai between rogue Russian " +
- "militants and a radical Synthoid community. These weapons are next-gen " +
- "plasma and energy weapons. It is critical for the safety of humanity " +
- "that this deal does not happen.
" +
- "Your task is to intercept the deal. Leave no survivors.",
- baseDifficulty:5000, reqdRank:12.5e3,
- rankGain:40, rankLoss:20, hpLoss:200,
- weights:{hack:0,str:0.25,def:0.25,dex:0.25,agi:0.25,cha:0, int:0},
- decays:{hack:0,str:0.8,def:0.8,dex:0.8,agi:0.8,cha:0, int:0.75},
- isKill:true
- });
- BlackOperations["Operation Archangel"] = new BlackOperation({
- name:"Operation Archangel",
- desc:"Our analysts have discovered that the popular Red Rabbit brothel in " +
- "Amsterdam is run and 'staffed' by MK-VI Synthoids. Intelligence " +
- "suggests that the profit from this brothel is used to fund a large " +
- "black market arms trafficking operation.
" +
- "The goal of this operation is to take out the leaders that are running " +
- "the Red Rabbit brothel. Try to limit the number of other casualties, " +
- "but do what you must to complete the mission.",
- baseDifficulty:7500, reqdRank:15e3,
- rankGain:50, rankLoss:20, hpLoss:25,
- weights:{hack:0,str:0.2,def:0.2,dex:0.3,agi:0.3,cha:0, int:0},
- decays:{hack:0,str:0.8,def:0.8,dex:0.8,agi:0.8,cha:0, int:0.75},
- isKill:true,
- });
- BlackOperations["Operation Juggernaut"] = new BlackOperation({
- name:"Operation Juggernaut",
- desc:"The CIA has just encountered a new security threat. A new " +
- "criminal group, lead by a shadowy operative who calls himself " +
- "Juggernaut, has been smuggling drugs and weapons (including " +
- "suspected bioweapons) into Sector-12. We also have reason " +
- "to believe the tried to break into one of Universal Energy's " +
- "facilities in order to cause a city-wide blackout. The CIA " +
- "suspects that Juggernaut is a heavily-augmented Synthoid, and " +
- "have thus enlisted our help.
" +
- "Your mission is to eradicate Juggernaut and his followers.",
- baseDifficulty:10e3, reqdRank:20e3,
- rankGain:75, rankLoss:40, hpLoss:300,
- weights:{hack:0,str:0.25,def:0.25,dex:0.25,agi:0.25,cha:0, int:0},
- decays:{hack:0,str:0.8,def:0.8,dex:0.8,agi:0.8,cha:0, int:0.75},
- isKill:true,
- });
- BlackOperations["Operation Red Dragon"] = new BlackOperation({
- name:"Operation Red Dragon",
- desc:"The Tetrads criminal organization is suspected of " +
- "reverse-engineering the MK-VI Synthoid design. We believe " +
- "they altered and possibly improved the design and began " +
- "manufacturing their own Synthoid models in order to bolster " +
- "their criminal activities.
" +
- "Your task is to infiltrate and destroy the Tetrads' base of operations " +
- "in Los Angeles. Intelligence tells us that their base houses " +
- "one of their Synthoid manufacturing units.",
- baseDifficulty:12.5e3, reqdRank:25e3,
- rankGain:100, rankLoss:50, hpLoss:500,
- weights:{hack:0.05,str:0.2,def:0.2,dex:0.25,agi:0.25,cha:0, int:0.05},
- decays:{hack:0.6,str:0.8,def:0.8,dex:0.8,agi:0.8,cha:0, int:0.75},
- isKill:true,
- });
- BlackOperations["Operation K"] = new BlackOperation({
- name:"Operation K",
- desc:"CODE RED SITUATION. Our intelligence tells us that VitaLife " +
- "has discovered a new android cloning technology. This technology " +
- "is supposedly capable of cloning Synthoid, not only physically " +
- "but also their advanced AI modules. We do not believe that " +
- "VitaLife is trying to use this technology illegally or " +
- "maliciously, but if any Synthoids were able to infiltrate the " +
- "corporation and take advantage of this technology then the " +
- "results would be catastrophic.
" +
- "We do not have the power or jurisdiction to shutdown this down " +
- "through legal or political means, so we must resort to a covert " +
- "operation. Your goal is to destroy this technology and eliminate" +
- "anyone who was involved in its creation.",
- baseDifficulty:15e3, reqdRank:30e3,
- rankGain:120, rankLoss:60, hpLoss:1000,
- weights:{hack:0.05,str:0.2,def:0.2,dex:0.25,agi:0.25,cha:0, int:0.05},
- decays:{hack:0.6,str:0.8,def:0.8,dex:0.8,agi:0.8,cha:0, int:0.75},
- isKill:true
- });
- BlackOperations["Operation Deckard"] = new BlackOperation({
- name:"Operation Deckard",
- desc:"Despite your success in eliminating VitaLife's new android-replicating " +
- "technology in Operation K, we've discovered that a small group of " +
- "MK-VI Synthoids were able to make off with the schematics and design " +
- "of the technology before the Operation. It is almost a certainty that " +
- "these Synthoids are some of the rogue MK-VI ones from the Synthoid Uprising." +
- "The goal of Operation Deckard is to hunt down these Synthoids and retire " +
- "them. I don't need to tell you how critical this mission is.",
- baseDifficulty:20e3, reqdRank:40e3,
- rankGain:150, rankLoss:75, hpLoss:200,
- weights:{hack:0,str:0.24,def:0.24,dex:0.24,agi:0.24,cha:0, int:0.04},
- decays:{hack:0,str:0.8,def:0.8,dex:0.8,agi:0.8,cha:0, int:0.75},
- isKill:true,
- });
- BlackOperations["Operation Tyrell"] = new BlackOperation({
- name:"Operation Tyrell",
- desc:"A week ago Blade Industries reported a small break-in at one " +
- "of their Aevum Augmentation storage facitilities. We figured out " +
- "that The Dark Army was behind the heist, and didn't think any more " +
- "of it. However, we've just discovered that several known MK-VI Synthoids " +
- "were part of that break-in group.
" +
- "We cannot have Synthoids upgrading their already-enhanced abilities " +
- "with Augmentations. Your task is to hunt down the associated Dark Army " +
- "members and eliminate them.",
- baseDifficulty:25e3, reqdRank:50e3,
- rankGain:200, rankLoss:100, hpLoss:500,
- weights:{hack:0.1,str:0.2,def:0.2,dex:0.2,agi:0.2,cha:0, int:0.1},
- decays:{hack:0.6,str:0.8,def:0.8,dex:0.8,agi:0.8,cha:0, int:0.75},
- isKill:true,
- });
- BlackOperations["Operation Wallace"] = new BlackOperation({
- name:"Operation Wallace",
- desc:"Based on information gathered from Operation Tyrell, we've discovered " +
- "that The Dark Army was well aware that there were Synthoids amongst " +
- "their ranks. Even worse, we believe that The Dark Army is working " +
- "together with other criminal organizations such as The Syndicate and " +
- "that they are planning some sort of large-scale takeover of multiple major " +
- "cities, most notably Aevum. We suspect that Synthoids have infiltrated " +
- "the ranks of these criminal factions and are trying to stage another " +
- "Synthoid uprising.
" +
- "The best way to deal with this is to prevent it before it even happens. " +
- "The goal of Operation Wallace is to destroy the Dark Army and " +
- "Syndicate factions in Aevum immediately. Leave no survivors.",
- baseDifficulty:30e3, reqdRank:75e3,
- rankGain:500, rankLoss:150, hpLoss:1500,
- weights:{hack:0,str:0.24,def:0.24,dex:0.24,agi:0.24,cha:0, int:0.04},
- decays:{hack:0.6,str:0.8,def:0.8,dex:0.8,agi:0.8,cha:0, int:0.75},
- isKill:true
- });
- BlackOperations["Operation Shoulder of Orion"] = new BlackOperation({
- name:"Operation Shoulder of Orion",
- desc:"China's Solaris Space Systems is secretly launching the first " +
- "manned spacecraft in over a decade using Synthoids. We believe " +
- "China is trying to establish the first off-world colonies.
" +
- "The mission is to prevent this launch without instigating an " +
- "international conflict. When you accept this mission you will be " +
- "officially disavowed by the NSA and the national government until after you " +
- "successfully return. In the event of failure, all of the operation's " +
- "team members must not let themselves be captured alive.",
- baseDifficulty:35e3, reqdRank:100e3,
- rankGain:1e3, rankLoss:500, hpLoss:1500,
- weights:{hack:0.1,str:0.2,def:0.2,dex:0.2,agi:0.2,cha:0, int:0.1},
- decays:{hack:0.6,str:0.8,def:0.8,dex:0.8,agi:0.8,cha:0, int:0.75},
- isStealth:true
- });
- BlackOperations["Operation Hyron"] = new BlackOperation({
- name:"Operation Hyron",
- desc:"Our intelligence tells us that Fulcrum Technologies is developing " +
- "a quantum supercomputer using human brains as core " +
- "processors. This supercomputer " +
- "is rumored to be able to store vast amounts of data and " +
- "perform computations unmatched by any other supercomputer on the " +
- "planet. But more importantly, the use of organic human brains " +
- "means that the supercomputer may be able to reason abstractly " +
- "and become self-aware.
" +
- "I do not need to remind you why sentient-level AIs pose a serious " +
- "thread to all of mankind.
" +
- "The research for this project is being conducted at one of Fulcrum " +
- "Technologies secret facilities in Aevum, codenamed 'Alpha Ranch'. " +
- "Infiltrate the compound, delete and destroy the work, and then find and kill the " +
- "project lead.",
- baseDifficulty:40e3, reqdRank:125e3,
- rankGain:2e3, rankLoss:1e3, hpLoss:500,
- weights:{hack:0.1,str:0.2,def:0.2,dex:0.2,agi:0.2,cha:0, int:0.1},
- decays:{hack:0.6,str:0.8,def:0.8,dex:0.8,agi:0.8,cha:0, int:0.75},
- isKill:true
- });
- BlackOperations["Operation Morpheus"] = new BlackOperation({
- name:"Operation Morpheus",
- desc:"DreamSense Technologies is an advertising company that uses " +
- "special technology to transmit their ads into the peoples " +
- "dreams and subconcious. They do this using broadcast transmitter " +
- "towers. Based on information from our agents and informants in " +
- "Chonqging, we have reason to believe that one of the broadcast " +
- "towers there has been compromised by Synthoids and is being used " +
- "to spread pro-Synthoid propaganda.
" +
- "The mission is to destroy this broadcast tower. Speed and " +
- "stealth are of the upmost important for this.",
- baseDifficulty:45e3, reqdRank:150e3,
- rankGain:5e3, rankLoss:1e3, hpLoss:100,
- weights:{hack:0.05,str:0.15,def:0.15,dex:0.3,agi:0.3,cha:0, int:0.05},
- decays:{hack:0.6,str:0.8,def:0.8,dex:0.8,agi:0.8,cha:0, int:0.75},
- isStealth:true
- });
- BlackOperations["Operation Ion Storm"] = new BlackOperation({
- name:"Operation Ion Storm",
- desc:"Our analysts have uncovered a gathering of MK-VI Synthoids " +
- "that have taken up residence in the Sector-12 Slums. We " +
- "don't know if they are rogue Synthoids from the Uprising, " +
- "but we do know that they have been stockpiling " +
- "weapons, money, and other resources. This makes them dangerous.
" +
- "This is a full-scale assault operation to find and retire all of these " +
- "Synthoids in the Sector-12 Slums.",
- baseDifficulty:50e3, reqdRank:175e3,
- rankGain:5e3, rankLoss:1e3, hpLoss:5000,
- weights:{hack:0,str:0.24,def:0.24,dex:0.24,agi:0.24,cha:0, int:0.04},
- decays:{hack:0.6,str:0.8,def:0.8,dex:0.8,agi:0.8,cha:0, int:0.75},
- isKill:true
- });
- BlackOperations["Operation Annihilus"] = new BlackOperation({
- name:"Operation Annihilus",
- desc:"Our superiors have ordered us to eradicate everything and everyone " +
- "in an underground facility located in Aevum. They tell us " +
- "that the facility houses many dangerous Synthoids and " +
- "belongs to a terrorist organization called " +
- "'The Covenant'. We have no prior intelligence about this " +
- "organization, so you are going in blind.",
- baseDifficulty:55e3, reqdRank:200e3,
- rankGain:5e3, rankLoss:1e3, hpLoss:10e3,
- weights:{hack:0,str:0.24,def:0.24,dex:0.24,agi:0.24,cha:0, int:0.04},
- decays:{hack:0.6,str:0.8,def:0.8,dex:0.8,agi:0.8,cha:0, int:0.75},
- isKill:true
- });
- BlackOperations["Operation Ultron"] = new BlackOperation({
- name:"Operation Ultron",
- desc:"OmniTek Incorporated, the original designer and manufacturer of Synthoids, " +
- "has notified us of a malfunction in their AI design. This malfunction, " +
- "when triggered, causes MK-VI Synthoids to become radicalized and seek out " +
- "the destruction of humanity. They say that this bug affects all MK-VI Synthoids, " +
- "not just the rogue ones from the Uprising.
" +
- "OmniTek has also told us they they believe someone has triggered this " +
- "malfunction in a large group of MK-VI Synthoids, and that these newly-radicalized Synthoids " +
- "are now amassing in Volhaven to form a terrorist group called Ultron.
" +
- "Intelligence suggests Ultron is heavily armed and that their members are " +
- "augmented. We believe Ultron is making moves to take control of " +
- "and weaponize DeltaOne's Tactical High-Energy Satellite Laser Array (THESLA).
" +
- "Your task is to find and destroy Ultron.",
- baseDifficulty:60e3, reqdRank:250e3,
- rankGain:10e3, rankLoss:2e3, hpLoss:10e3,
- weights:{hack:0.1,str:0.2,def:0.2,dex:0.2,agi:0.2,cha:0, int:0.1},
- decays:{hack:0.6,str:0.8,def:0.8,dex:0.8,agi:0.8,cha:0, int:0.75},
- isKill:true
- });
- BlackOperations["Operation Centurion"] = new BlackOperation({
- name:"Operation Centurion",
- desc:"D)@#)($M)C0293c40($*)@#D0JUMP3Rm0C<*@#)*$)#02c94830c(#$*D)
" +
- "Throughout all of humanity's history, we have relied on " +
- "technology to survive, conquer, and progress. Its advancement became our primary goal. " +
- "And at the peak of human civilization technology turned into " +
- "power. Global, absolute power.
" +
- "It seems that the universe is not without a sense of irony.
" +
- "D)@#)($M)C0293c40($*)@#D0JUMP3Rm0C<*@#)*$)#02c94830c(#$*D)",
- baseDifficulty:70e3, reqdRank:300e3,
- rankGain:15e3, rankLoss:5e3, hpLoss:10e3,
- weights:{hack:0.1,str:0.2,def:0.2,dex:0.2,agi:0.2,cha:0, int:0.1},
- decays:{hack:0.6,str:0.8,def:0.8,dex:0.8,agi:0.8,cha:0, int:0.75},
- });
- BlackOperations["Operation Vindictus"] = new BlackOperation({
- name:"Operation Vindictus",
- desc:"D)@#)($M)C0293c40($*)@#D0JUMP3Rm0C<*@#)*$)#02c94830c(#$*D)
" +
- "The bits are all around us. The daemons that hold the Node " +
- "together can manifest themselves in many different ways.
" +
- "D)@#)($M)C0293c40($*)@#D0JUMP3Rm0C<*@#)*$)#02c94830c(#$*D)",
- baseDifficulty:75e3, reqdRank:350e3,
- rankGain:20e3, rankLoss:20e3, hpLoss:20e3,
- weights:{hack:0.1,str:0.2,def:0.2,dex:0.2,agi:0.2,cha:0, int:0.1},
- decays:{hack:0.6,str:0.8,def:0.8,dex:0.8,agi:0.8,cha:0, int:0.75},
- });
- BlackOperations["Operation Daedalus"] = new BlackOperation({
- name:"Operation Daedalus",
- desc:"Yesterday we obeyed kings and bent our neck to emperors. " +
- "Today we kneel only to truth.",
- baseDifficulty:80e3, reqdRank:400e3,
- rankGain:40e3, rankLoss:10e3, hpLoss:100e3,
- weights:{hack:0.1,str:0.2,def:0.2,dex:0.2,agi:0.2,cha:0, int:0.1},
- decays:{hack:0.6,str:0.8,def:0.8,dex:0.8,agi:0.8,cha:0, int:0.75},
- });
-}
-
-
-
-/* WEBPACK VAR INJECTION */}.call(this, __webpack_require__(/*! jquery */ 39)))
-
-/***/ }),
-/* 28 */
-/*!****************************!*\
- !*** ./src/FactionInfo.js ***!
- \****************************/
-/***/ (function(module, __webpack_exports__, __webpack_require__) {
-
-"use strict";
-__webpack_require__.r(__webpack_exports__);
-/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "FactionInfo", function() { return FactionInfo; });
-//Contains the "information" property for all the Factions, which is just a description
-//of each faction
-let FactionInfo = {
- //Endgame
- IlluminatiInfo: "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. ",
-
- DaedalusInfo: "Yesterday we obeyed kings and bent our necks to emperors. Today we kneel only to truth.",
-
- CovenantInfo: "Surrender yourself. Give up your empty individuality to become part of something great, something eternal. " +
- "Become a slave. Submit your mind, body, and soul. Only then can you set yourself free.
" +
- "Only then can you discover immortality.",
-
- //Megacorporations, each forms its own faction
- ECorpInfo: "ECorp's mission is simple: to connect the world of today with the technology of tomorrow. " +
- "With our wide range of Internet-related software and commercial hardware, ECorp makes the world's " +
- "information universally accessible.",
-
- MegaCorpInfo: "MegaCorp does things that others don't. We imagine. We create. We invent. We build things that " +
- "others have never even dreamed of. Our work fills the world's needs for food, water, power, and " +
- "transporation on an unprecendented scale, in ways that no other company can.
" +
- "In our labs and factories and on the ground with customers, MegaCorp is ushering in a new era for the world.",
-
- BachmanAndAssociatesInfo: "Where Law and Business meet - thats where we are.
" +
- "Legal Insight - Business Instinct - Experience Innovation",
-
- BladeIndustriesInfo: "Augmentation is salvation",
-
- NWOInfo: "The human being does not truly desire freedom. It wants " +
- "to be observed, understood, and judged. It wants to be given purpose and " +
- "direction in its life. That is why humans created God. " +
- "And that is why humans created civilization - " +
- "not because of willingness, " +
- "but because of a need to be incorporated into higher orders of structure and meaning.",
-
- ClarkeIncorporatedInfo: "Unlocking the power of the genome",
-
- OmniTekIncorporatedInfo: "Simply put, our mission is to design and build robots that make a difference",
-
- FourSigmaInfo: "The scientific method is the best way to approach investing. Big strategies backed up with big data. Driven by " +
- "deep learning and innovative ideas. And improved by iteration. That's Four Sigma.",
-
- KuaiGongInternationalInfo: "Dream big. Work hard. Make history.",
-
- //Other Corporations
- FulcrumSecretTechnologiesInfo: "The human organism has an innate desire to worship. " +
- "That is why they created gods. If there were no gods, " +
- "it would be necessary to create them. And now we can.",
-
- //Hacker groups
- BitRunnersInfo: "Our entire lives are controlled by bits. All of our actions, our thoughts, our personal information. "+
- "It's all transformed into bits, stored in bits, communicated through bits. It’s impossible for any person " +
- "to move, to live, to operate at any level without the use of bits. " +
- "And when a person moves, lives, and operates, they leave behind their bits, mere traces of seemingly " +
- "meaningless fragments of information. But these bits can be reconstructed. Transformed. Used.
" +
- "Those who run the bits, run the world",
-
-
- BlackHandInfo: "The world, so afraid of strong government, now has no government. Only power - Digital power. Financial power. " +
- "Technological power. " +
- "And those at the top rule with an invisible hand. They built a society where the rich get richer, " +
- "and everyone else suffers.
" +
- "So much pain. So many lives. Their darkness must end.",
-
- NiteSecInfo:
-" __..__
" +
-" _.nITESECNIt.
" +
-" .-'NITESECNITESEc.
" +
-" .' NITESECNITESECn
" +
-" / NITESECNITESEC;
" +
-" : :NITESECNITESEC;
" +
-" ; $ NITESECNITESECN
" +
-" : _, ,N'ITESECNITESEC
" +
-" : .+^^`, : `NITESECNIT
" +
-" ) /), `-,-=,NITESECNI
" +
-" / ^ ,-;|NITESECN;
" +
-" / _.' '-';NITESECN
" +
-" ( , ,-''`^NITE'
" +
-" )` :`. .'
" +
-" )-- ; `- /
" +
-" \' _.-' :
" +
-" ( _.-' \. \
" +
-" \------. \ \
" +
-" \. \ \
" +
-" \ _.nIt
" +
-" \ _.nITESECNi
" +
-" nITESECNIT^' \
" +
-" NITE^' ___ \
" +
-" / .gP''''Tp. \
" +
-" : d' . `b \
" +
-" ; d' o `b ;
" +
-" / d; `b|
" +
-" /, $; @ `:
" +
-" /' $$ ;
" +
-" .' $$b o |
" +
-" .' d$$$; :
" +
-" / .d$$$$; , ;
" +
-" d .dNITESEC $ |
" +
-" :bp.__.gNITESEC$$ :$ ;
" +
-" NITESECNITESECNIT $$b :
",
-
- //City factions, essentially governments
- ChongqingInfo: "Serve the people",
- Sector12Info: "The City of the Future",
- HongKongInfo: "Asia's World City",
- AevumInfo: "The Silicon City",
- IshimaInfo: "The East Asian Order of the Future",
- VolhavenInfo: "Benefit, Honour, and Glory",
-
- //Criminal Organizations/Gangs
- SpeakersForTheDeadInfo: "It is better to reign in hell than to serve in heaven.",
-
- DarkArmyInfo: "The World doesn't care about right or wrong. It's all about power.",
-
- TheSyndicateInfo: "Honor holds you back",
-
- SilhouetteInfo: "Corporations have filled the void of power left behind by the collapse of Western government. The issue is they've become so big " +
- "that you don't know who they're working for. And if you're employed at one of these corporations, you don't even know who you're working " +
- "for.\n\n" +
- "That's terror. Terror, fear, and corruption. All born into the system, all propagated by the system.",
-
- TetradsInfo: "Following the Mandate of Heaven and Carrying out the Way",
-
- SlumSnakesInfo: "Slum Snakes rule!",
-
- //Earlygame factions - factions the player will prestige with early on that don't
- //belong in other categories
- NetburnersInfo: "~~//*>H4CK|\|3T 8URN3R5**>?>\\~~",
-
- TianDiHuiInfo: "Obey Heaven and Work Righteousness",
-
- CyberSecInfo: "The Internet is the first thing that humanity has built that humanity doesn’t understand, " +
- "the largest experiment in anarchy that we have ever had. And as the world becomes increasingly " +
- "dominated by the internet, society approaches the brink of total chaos. " +
- "We serve only to protect society, to protect humanity, to protect the world from its imminent collapse.",
-
- //Special Factions
- BladeburnersInfo: "It's too bad they won't live. But then again, who does?
" +
- "Note that for this faction, reputation can only be gained through Bladeburner actions. Completing " +
- "Bladeburner contracts/operations will increase your reputation.",
-}
-
-
-
-
-/***/ }),
-/* 29 */
-/*!************************!*\
- !*** ./src/Message.js ***!
- \************************/
-/***/ (function(module, __webpack_exports__, __webpack_require__) {
-
-"use strict";
-__webpack_require__.r(__webpack_exports__);
-/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "Messages", function() { return Messages; });
-/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "checkForMessagesToSend", function() { return checkForMessagesToSend; });
-/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "sendMessage", function() { return sendMessage; });
-/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "showMessage", function() { return showMessage; });
-/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "loadMessages", function() { return loadMessages; });
-/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "initMessages", function() { return initMessages; });
-/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "Message", function() { return Message; });
-/* harmony import */ var _Augmentations_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./Augmentations.js */ 19);
-/* harmony import */ var _CreateProgram_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./CreateProgram.js */ 14);
-/* harmony import */ var _Missions_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./Missions.js */ 34);
-/* harmony import */ var _Player_js__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./Player.js */ 0);
-/* harmony import */ var _RedPill_js__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ./RedPill.js */ 45);
-/* harmony import */ var _Server_js__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ./Server.js */ 10);
-/* harmony import */ var _Settings_js__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! ./Settings.js */ 23);
-/* harmony import */ var _utils_DialogBox_js__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! ../utils/DialogBox.js */ 7);
-/* harmony import */ var _utils_JSONReviver_js__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! ../utils/JSONReviver.js */ 8);
-
-
-
-
-
-
-
-
-
-
-/* Message.js */
-function Message(filename="", msg="") {
- this.filename = filename;
- this.msg = msg;
- this.recvd = false;
-}
-
-Message.prototype.toJSON = function() {
- return Object(_utils_JSONReviver_js__WEBPACK_IMPORTED_MODULE_8__["Generic_toJSON"])("Message", this);
-}
-
-
-Message.fromJSON = function(value) {
- return Object(_utils_JSONReviver_js__WEBPACK_IMPORTED_MODULE_8__["Generic_fromJSON"])(Message, value.data);
-}
-
-_utils_JSONReviver_js__WEBPACK_IMPORTED_MODULE_8__["Reviver"].constructors.Message = Message;
-
-//Sends message to player, including a pop up
-function sendMessage(msg, forced=false) {
- console.log("sending message: " + msg.filename);
- msg.recvd = true;
- if (forced || !_Settings_js__WEBPACK_IMPORTED_MODULE_6__["Settings"].SuppressMessages) {
- showMessage(msg);
- }
- addMessageToServer(msg, "home");
-}
-
-function showMessage(msg) {
- var txt = "Message received from unknown sender:
" +
- "" + msg.msg + "
" +
- "This message was saved as " + msg.filename + " onto your home computer.";
- Object(_utils_DialogBox_js__WEBPACK_IMPORTED_MODULE_7__["dialogBoxCreate"])(txt);
-}
-
-//Adds a message to a server
-function addMessageToServer(msg, serverHostname) {
- var server = Object(_Server_js__WEBPACK_IMPORTED_MODULE_5__["GetServerByHostname"])(serverHostname);
- if (server == null) {
- console.log("WARNING: Did not locate " + serverHostname);
- return;
- }
- for (var i = 0; i < server.messages.length; ++i) {
- if (server.messages[i].filename === msg.filename) {
- return; //Already exists
- }
- }
- server.messages.push(msg);
-}
-
-//Checks if any of the 'timed' messages should be sent
-function checkForMessagesToSend() {
- var jumper0 = Messages[MessageFilenames.Jumper0];
- var jumper1 = Messages[MessageFilenames.Jumper1];
- var jumper2 = Messages[MessageFilenames.Jumper2];
- var jumper3 = Messages[MessageFilenames.Jumper3];
- var jumper4 = Messages[MessageFilenames.Jumper4];
- var cybersecTest = Messages[MessageFilenames.CyberSecTest];
- var nitesecTest = Messages[MessageFilenames.NiteSecTest];
- var bitrunnersTest = Messages[MessageFilenames.BitRunnersTest];
- var redpill = Messages[MessageFilenames.RedPill];
-
- var redpillOwned = false;
- if (_Augmentations_js__WEBPACK_IMPORTED_MODULE_0__["Augmentations"][_Augmentations_js__WEBPACK_IMPORTED_MODULE_0__["AugmentationNames"].TheRedPill].owned) {
- redpillOwned = true;
- }
-
- if (redpill && redpillOwned && _Player_js__WEBPACK_IMPORTED_MODULE_3__["Player"].sourceFiles.length === 0 && !_RedPill_js__WEBPACK_IMPORTED_MODULE_4__["redPillFlag"] && !_Missions_js__WEBPACK_IMPORTED_MODULE_2__["inMission"]) {
- if (!_utils_DialogBox_js__WEBPACK_IMPORTED_MODULE_7__["dialogBoxOpened"]) {
- sendMessage(redpill, true);
- }
- } else if (redpill && redpillOwned) {
- //If player has already destroyed a BitNode, message is not forced
- if (!_RedPill_js__WEBPACK_IMPORTED_MODULE_4__["redPillFlag"] && !_Missions_js__WEBPACK_IMPORTED_MODULE_2__["inMission"] && !_utils_DialogBox_js__WEBPACK_IMPORTED_MODULE_7__["dialogBoxOpened"]) {
- sendMessage(redpill);
- }
- } else if (jumper0 && !jumper0.recvd && _Player_js__WEBPACK_IMPORTED_MODULE_3__["Player"].hacking_skill >= 25) {
- sendMessage(jumper0);
- _Player_js__WEBPACK_IMPORTED_MODULE_3__["Player"].getHomeComputer().programs.push(_CreateProgram_js__WEBPACK_IMPORTED_MODULE_1__["Programs"].Flight);
- } else if (jumper1 && !jumper1.recvd && _Player_js__WEBPACK_IMPORTED_MODULE_3__["Player"].hacking_skill >= 40) {
- sendMessage(jumper1);
- } else if (cybersecTest && !cybersecTest.recvd && _Player_js__WEBPACK_IMPORTED_MODULE_3__["Player"].hacking_skill >= 50) {
- sendMessage(cybersecTest);
- } else if (jumper2 && !jumper2.recvd && _Player_js__WEBPACK_IMPORTED_MODULE_3__["Player"].hacking_skill >= 175) {
- sendMessage(jumper2);
- } else if (nitesecTest && !nitesecTest.recvd && _Player_js__WEBPACK_IMPORTED_MODULE_3__["Player"].hacking_skill >= 200) {
- sendMessage(nitesecTest);
- } else if (jumper3 && !jumper3.recvd && _Player_js__WEBPACK_IMPORTED_MODULE_3__["Player"].hacking_skill >= 350) {
- sendMessage(jumper3);
- } else if (jumper4 && !jumper4.recvd && _Player_js__WEBPACK_IMPORTED_MODULE_3__["Player"].hacking_skill >= 490) {
- sendMessage(jumper4);
- } else if (bitrunnersTest && !bitrunnersTest.recvd && _Player_js__WEBPACK_IMPORTED_MODULE_3__["Player"].hacking_skill >= 500) {
- sendMessage(bitrunnersTest);
- }
-}
-
-function AddToAllMessages(msg) {
- Messages[msg.filename] = msg;
-}
-
-let Messages = {}
-
-function loadMessages(saveString) {
- Messages = JSON.parse(saveString, _utils_JSONReviver_js__WEBPACK_IMPORTED_MODULE_8__["Reviver"]);
-}
-
-let MessageFilenames = {
- Jumper0: "j0.msg",
- Jumper1: "j1.msg",
- Jumper2: "j2.msg",
- Jumper3: "j3.msg",
- Jumper4: "j4.msg",
- CyberSecTest: "csec-test.msg",
- NiteSecTest: "nitesec-test.msg",
- BitRunnersTest: "19dfj3l1nd.msg",
- RedPill: "icarus.msg",
-}
-
-function initMessages() {
- //Reset
- Messages = {};
-
- //jump3R Messages
- AddToAllMessages(new Message(MessageFilenames.Jumper0,
- "I know you can sense it. I know you're searching for it. " +
- "It's why you spend night after " +
- "night at your computer.
It's real, I've seen it. And I can " +
- "help you find it. But not right now. You're not ready yet.
" +
- "Use this program to track your progress
" +
- "The fl1ght.exe program was added to your home computer
" +
- "-jump3R"));
- AddToAllMessages(new Message(MessageFilenames.Jumper1,
- "Soon you will be contacted by a hacking group known as CyberSec. " +
- "They can help you with your search.
" +
- "You should join them, garner their favor, and " +
- "exploit them for their Augmentations. But do not trust them. " +
- "They are not what they seem. No one is.
" +
- "-jump3R"));
- AddToAllMessages(new Message(MessageFilenames.Jumper2,
- "Do not try to save the world. There is no world to save. If " +
- "you want to find the truth, worry only about yourself. Ethics and " +
- "morals will get you killed.
Watch out for a hacking group known as NiteSec." +
- "
-jump3R"));
- AddToAllMessages(new Message(MessageFilenames.Jumper3,
- "You must learn to walk before you can run. And you must " +
- "run before you can fly. Look for the black hand.
" +
- "I.I.I.I
-jump3R"));
- AddToAllMessages(new Message(MessageFilenames.Jumper4,
- "To find what you are searching for, you must understand the bits. " +
- "The bits are all around us. The runners will help you.
" +
- "-jump3R"));
-
- //Messages from hacking factions
- AddToAllMessages(new Message(MessageFilenames.CyberSecTest,
- "We've been watching you. Your skills are very impressive. But you're wasting " +
- "your talents. If you join us, you can put your skills to good use and change " +
- "the world for the better. If you join us, we can unlock your full potential.
" +
- "But first, you must pass our test. Find and hack our server using the Terminal.
" +
- "-CyberSec"));
- AddToAllMessages(new Message(MessageFilenames.NiteSecTest,
- "People say that the corrupted governments and corporations rule the world. " +
- "Yes, maybe they do. But do you know who everyone really fears? People " +
- "like us. Because they can't hide from us. Because they can't fight shadows " +
- "and ideas with bullets.
" +
- "Join us, and people will fear you, too.
" +
- "Find and hack our hidden server using the Terminal. Then, we will contact you again." +
- "
-NiteSec"));
- AddToAllMessages(new Message(MessageFilenames.BitRunnersTest,
- "We know what you are doing. We know what drives you. We know " +
- "what you are looking for.
" +
- "We can help you find the answers.
" +
- "run4theh111z"));
-
- AddToAllMessages(new Message(MessageFilenames.RedPill,
- "@)(#V%*N)@(#*)*C)@#%*)*V)@#(*%V@)(#VN%*)@#(*%
" +
- ")@B(*#%)@)M#B*%V)____FIND___#$@)#%(B*)@#(*%B)
" +
- "@_#(%_@#M(BDSPOMB__THE-CAVE_#)$(*@#$)@#BNBEGB
" +
- "DFLSMFVMV)#@($*)@#*$MV)@#(*$V)M#(*$)M@(#*VM$)"));
-}
-
-
-
-
-/***/ }),
-/* 30 */
-/*!**********************!*\
- !*** ./src/Alias.js ***!
- \**********************/
-/***/ (function(module, __webpack_exports__, __webpack_require__) {
-
-"use strict";
-__webpack_require__.r(__webpack_exports__);
-/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "Aliases", function() { return Aliases; });
-/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "GlobalAliases", function() { return GlobalAliases; });
-/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "printAliases", function() { return printAliases; });
-/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "parseAliasDeclaration", function() { return parseAliasDeclaration; });
-/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "removeAlias", function() { return removeAlias; });
-/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "substituteAliases", function() { return substituteAliases; });
-/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "loadAliases", function() { return loadAliases; });
-/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "loadGlobalAliases", function() { return loadGlobalAliases; });
-/* harmony import */ var _Terminal_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./Terminal.js */ 18);
-
-
-let Aliases = {};
-let GlobalAliases = {};
-
-function loadAliases(saveString) {
- if (saveString === "") {
- Aliases = {};
- } else {
- Aliases = JSON.parse(saveString);
- }
-}
-
-function loadGlobalAliases(saveString) {
- if (saveString === "") {
- GlobalAliases = {};
- } else {
- GlobalAliases = JSON.parse(saveString);
- }
-}
-
-//Print all aliases to terminal
-function printAliases() {
- for (var name in Aliases) {
- if (Aliases.hasOwnProperty(name)) {
- Object(_Terminal_js__WEBPACK_IMPORTED_MODULE_0__["post"])("alias " + name + "=" + Aliases[name]);
- }
- }
- for (var name in GlobalAliases) {
- if (GlobalAliases.hasOwnProperty(name)) {
- Object(_Terminal_js__WEBPACK_IMPORTED_MODULE_0__["post"])("global alias " + name + "=" + GlobalAliases[name]);
- }
- }
-}
-
-//True if successful, false otherwise
-function parseAliasDeclaration(dec,global=false) {
- var re = /^([_|\w|!|%|,|@]+)="(.+)"$/;
- var matches = dec.match(re);
- if (matches == null || matches.length != 3) {return false;}
- if (global){
- addGlobalAlias(matches[1],matches[2]);
- } else {
- addAlias(matches[1], matches[2]);
- }
- return true;
-}
-
-function addAlias(name, value) {
- if (name in GlobalAliases){
- delete GlobalAliases[name];
- }
- Aliases[name] = value;
-}
-
-function addGlobalAlias(name, value) {
- if (name in Aliases){
- delete Aliases[name];
- }
- GlobalAliases[name] = value;
-}
-
-function getAlias(name) {
- if (Aliases.hasOwnProperty(name)) {
- return Aliases[name];
- }
- return null;
-}
-
-function getGlobalAlias(name) {
- if (GlobalAliases.hasOwnProperty(name)) {
- return GlobalAliases[name];
- }
- return null;
-}
-
-function removeAlias(name) {
- if (Aliases.hasOwnProperty(name)) {
- delete Aliases[name];
- return true;
- }
- if (GlobalAliases.hasOwnProperty(name)) {
- delete GlobalAliases[name];
- return true;
- }
- return false;
-}
-
-//Returns the original string with any aliases substituted in
-//Aliases only applied to "whole words", one level deep
-function substituteAliases(origCommand) {
- var commandArray = origCommand.split(" ");
- if (commandArray.length>0){
- var alias = getAlias(commandArray[0]);
- if (alias != null) {
- commandArray[0] = alias;
- } else {
- var alias = getGlobalAlias(commandArray[0]);
- if (alias != null) {
- commandArray[0] = alias;
- }
- }
- for (var i = 0; i < commandArray.length; ++i) {
- var alias = getGlobalAlias(commandArray[i]);
- if (alias != null) {
- commandArray[i] = alias;
- }
- }
- }
- return commandArray.join(" ");
-}
-
-
-
-
-/***/ }),
-/* 31 */
-/*!***********************************!*\
- !*** ./src/NetscriptFunctions.js ***!
- \***********************************/
-/***/ (function(module, __webpack_exports__, __webpack_require__) {
-
-"use strict";
-__webpack_require__.r(__webpack_exports__);
-/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "NetscriptFunctions", function() { return NetscriptFunctions; });
-/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "initSingularitySFFlags", function() { return initSingularitySFFlags; });
-/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "hasSingularitySF", function() { return hasSingularitySF; });
-/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "hasBn11SF", function() { return hasBn11SF; });
-/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "hasWallStreetSF", function() { return hasWallStreetSF; });
-/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "wallStreetSFLvl", function() { return wallStreetSFLvl; });
-/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "hasCorporationSF", function() { return hasCorporationSF; });
-/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "hasAISF", function() { return hasAISF; });
-/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "hasBladeburnerSF", function() { return hasBladeburnerSF; });
-/* harmony import */ var _ActiveScriptsUI_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./ActiveScriptsUI.js */ 41);
-/* harmony import */ var _Augmentations_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./Augmentations.js */ 19);
-/* harmony import */ var _BitNode_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./BitNode.js */ 15);
-/* harmony import */ var _Crimes_js__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./Crimes.js */ 20);
-/* harmony import */ var _Bladeburner_js__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ./Bladeburner.js */ 27);
-/* harmony import */ var _Company_js__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ./Company.js */ 9);
-/* harmony import */ var _Constants_js__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! ./Constants.js */ 3);
-/* harmony import */ var _CreateProgram_js__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! ./CreateProgram.js */ 14);
-/* harmony import */ var _DarkWeb_js__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! ./DarkWeb.js */ 35);
-/* harmony import */ var _engine_js__WEBPACK_IMPORTED_MODULE_9__ = __webpack_require__(/*! ./engine.js */ 5);
-/* harmony import */ var _Faction_js__WEBPACK_IMPORTED_MODULE_10__ = __webpack_require__(/*! ./Faction.js */ 11);
-/* harmony import */ var _HacknetNode_js__WEBPACK_IMPORTED_MODULE_11__ = __webpack_require__(/*! ./HacknetNode.js */ 40);
-/* harmony import */ var _Location_js__WEBPACK_IMPORTED_MODULE_12__ = __webpack_require__(/*! ./Location.js */ 4);
-/* harmony import */ var _Message_js__WEBPACK_IMPORTED_MODULE_13__ = __webpack_require__(/*! ./Message.js */ 29);
-/* harmony import */ var _Missions_js__WEBPACK_IMPORTED_MODULE_14__ = __webpack_require__(/*! ./Missions.js */ 34);
-/* harmony import */ var _Player_js__WEBPACK_IMPORTED_MODULE_15__ = __webpack_require__(/*! ./Player.js */ 0);
-/* harmony import */ var _Script_js__WEBPACK_IMPORTED_MODULE_16__ = __webpack_require__(/*! ./Script.js */ 26);
-/* harmony import */ var _Server_js__WEBPACK_IMPORTED_MODULE_17__ = __webpack_require__(/*! ./Server.js */ 10);
-/* harmony import */ var _Settings_js__WEBPACK_IMPORTED_MODULE_18__ = __webpack_require__(/*! ./Settings.js */ 23);
-/* harmony import */ var _SpecialServerIps_js__WEBPACK_IMPORTED_MODULE_19__ = __webpack_require__(/*! ./SpecialServerIps.js */ 17);
-/* harmony import */ var _StockMarket_js__WEBPACK_IMPORTED_MODULE_20__ = __webpack_require__(/*! ./StockMarket.js */ 22);
-/* harmony import */ var _Terminal_js__WEBPACK_IMPORTED_MODULE_21__ = __webpack_require__(/*! ./Terminal.js */ 18);
-/* harmony import */ var _TextFile_js__WEBPACK_IMPORTED_MODULE_22__ = __webpack_require__(/*! ./TextFile.js */ 43);
-/* harmony import */ var _NetscriptWorker_js__WEBPACK_IMPORTED_MODULE_23__ = __webpack_require__(/*! ./NetscriptWorker.js */ 21);
-/* harmony import */ var _NetscriptEvaluator_js__WEBPACK_IMPORTED_MODULE_24__ = __webpack_require__(/*! ./NetscriptEvaluator.js */ 6);
-/* harmony import */ var _NetscriptEnvironment_js__WEBPACK_IMPORTED_MODULE_25__ = __webpack_require__(/*! ./NetscriptEnvironment.js */ 69);
-/* harmony import */ var _NetscriptPort_js__WEBPACK_IMPORTED_MODULE_26__ = __webpack_require__(/*! ./NetscriptPort.js */ 46);
-/* harmony import */ var decimal_js__WEBPACK_IMPORTED_MODULE_27__ = __webpack_require__(/*! decimal.js */ 24);
-/* harmony import */ var _utils_DialogBox_js__WEBPACK_IMPORTED_MODULE_28__ = __webpack_require__(/*! ../utils/DialogBox.js */ 7);
-/* harmony import */ var _utils_HelperFunctions_js__WEBPACK_IMPORTED_MODULE_29__ = __webpack_require__(/*! ../utils/HelperFunctions.js */ 1);
-/* harmony import */ var _utils_IPAddress_js__WEBPACK_IMPORTED_MODULE_30__ = __webpack_require__(/*! ../utils/IPAddress.js */ 16);
-/* harmony import */ var _utils_StringHelperFunctions_js__WEBPACK_IMPORTED_MODULE_31__ = __webpack_require__(/*! ../utils/StringHelperFunctions.js */ 2);
-/* harmony import */ var _utils_YesNoBox_js__WEBPACK_IMPORTED_MODULE_32__ = __webpack_require__(/*! ../utils/YesNoBox.js */ 12);
-var sprintf = __webpack_require__(/*! sprintf-js */ 68).sprintf,
- vsprintf = __webpack_require__(/*! sprintf-js */ 68).vsprintf
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-var hasCorporationSF = false, //Source-File 3
- hasSingularitySF = false, //Source-File 4
- hasAISF = false, //Source-File 5
- hasBladeburnerSF = false, //Source-File 6
- hasBladeburner2079SF = false, //Source-File 7
- hasWallStreetSF = false, //Source-File 8
- hasBn11SF = false; //Source-File 11
-
-var singularitySFLvl=1, wallStreetSFLvl=1;
-
-var possibleLogs = {
- ALL: true,
- scan: true,
- hack: true,
- sleep: true,
- disableLog: true,
- enableLog: true,
- grow: true,
- weaken: true,
- nuke: true,
- brutessh: true,
- ftpcrack: true,
- relaysmtp: true,
- httpworm: true,
- sqlinject: true,
- spawn: true,
- kill: true,
- killall: true,
- scp: true,
- getHackingLevel: true,
- getServerMoneyAvailable: true,
- getServerSecurityLevel: true,
- getServerBaseSecurityLevel: true,
- getServerMinSecurityLevel: true,
- getServerRequiredHackingLevel: true,
- getServerMaxMoney: true,
- getServerGrowth: true,
- getServerNumPortsRequired: true,
- getServerRam: true,
- buyStock: true,
- sellStock: true,
- purchaseServer: true,
- deleteServer: true,
- universityCourse: true,
- gymWorkout: true,
- travelToCity: true,
- purchaseTor: true,
- purchaseProgram: true,
- stopAction: true,
- upgradeHomeRam: true,
- workForCompany: true,
- applyToCompany: true,
- joinFaction: true,
- workForFaction: true,
- createProgram: true,
- commitCrime: true,
- shortStock: true,
- sellShort: true,
-}
-
-//Used to check and set flags for every Source File, despite the name of the function
-function initSingularitySFFlags() {
- for (var i = 0; i < _Player_js__WEBPACK_IMPORTED_MODULE_15__["Player"].sourceFiles.length; ++i) {
- if (_Player_js__WEBPACK_IMPORTED_MODULE_15__["Player"].sourceFiles[i].n === 3) {hasCorporationSF = true;}
- if (_Player_js__WEBPACK_IMPORTED_MODULE_15__["Player"].sourceFiles[i].n === 4) {
- hasSingularitySF = true;
- singularitySFLvl = _Player_js__WEBPACK_IMPORTED_MODULE_15__["Player"].sourceFiles[i].lvl;
- }
- if (_Player_js__WEBPACK_IMPORTED_MODULE_15__["Player"].sourceFiles[i].n === 5) {hasAISF = true;}
- if (_Player_js__WEBPACK_IMPORTED_MODULE_15__["Player"].sourceFiles[i].n === 6) {hasBladeburnerSF = true;}
- if (_Player_js__WEBPACK_IMPORTED_MODULE_15__["Player"].sourceFiles[i].n === 7) {hasBladeburner2079SF = true;}
- if (_Player_js__WEBPACK_IMPORTED_MODULE_15__["Player"].sourceFiles[i].n === 8) {
- hasWallStreetSF = true;
- wallStreetSFLvl = _Player_js__WEBPACK_IMPORTED_MODULE_15__["Player"].sourceFiles[i].lvl;
- }
- if (_Player_js__WEBPACK_IMPORTED_MODULE_15__["Player"].sourceFiles[i].n === 11) {hasBn11SF = true;}
- }
-}
-
-function NetscriptFunctions(workerScript) {
- return {
- Math : Math,
- Date : Date,
- Number : Number,
- hacknetnodes : _Player_js__WEBPACK_IMPORTED_MODULE_15__["Player"].hacknetNodes,
- sprintf : sprintf,
- vsprintf: vsprintf,
- scan : function(ip=workerScript.serverIp, hostnames=true){
- if (workerScript.checkingRam) {
- if (workerScript.loadedFns.scan) {
- return 0;
- } else {
- workerScript.loadedFns.scan = true;
- return _Constants_js__WEBPACK_IMPORTED_MODULE_6__["CONSTANTS"].ScriptScanRamCost;
- }
- }
- var server = Object(_Server_js__WEBPACK_IMPORTED_MODULE_17__["getServer"])(ip);
- if (server == null) {
- throw Object(_NetscriptEvaluator_js__WEBPACK_IMPORTED_MODULE_24__["makeRuntimeRejectMsg"])(workerScript, 'Invalid IP or hostname passed into scan() command');
- }
- var out = [];
- for (var i = 0; i < server.serversOnNetwork.length; i++) {
- var entry;
- if (hostnames) {
- entry = server.getServerOnNetwork(i).hostname;
- } else {
- entry = server.getServerOnNetwork(i).ip;
- }
- if (entry == null) {
- continue;
- }
- out.push(entry);
- }
- if (workerScript.disableLogs.ALL == null && workerScript.disableLogs.scan == null) {
- workerScript.scriptRef.log('scan() returned ' + server.serversOnNetwork.length + ' connections for ' + server.hostname);
- }
- return out;
- },
- hack : function(ip){
- if (workerScript.checkingRam) {
- if (workerScript.loadedFns.hack) {
- return 0;
- } else {
- workerScript.loadedFns.hack = true;
- return _Constants_js__WEBPACK_IMPORTED_MODULE_6__["CONSTANTS"].ScriptHackRamCost;
- }
- }
- if (ip === undefined) {
- throw Object(_NetscriptEvaluator_js__WEBPACK_IMPORTED_MODULE_24__["makeRuntimeRejectMsg"])(workerScript, "Hack() call has incorrect number of arguments. Takes 1 argument");
- }
- var threads = workerScript.scriptRef.threads;
- if (isNaN(threads) || threads < 1) {threads = 1;}
- var server = Object(_Server_js__WEBPACK_IMPORTED_MODULE_17__["getServer"])(ip);
- if (server == null) {
- workerScript.scriptRef.log("hack() error. Invalid IP or hostname passed in: " + ip + ". Stopping...");
- throw Object(_NetscriptEvaluator_js__WEBPACK_IMPORTED_MODULE_24__["makeRuntimeRejectMsg"])(workerScript, "hack() error. Invalid IP or hostname passed in: " + ip + ". Stopping...");
- }
-
- //Calculate the hacking time
- var hackingTime = Object(_NetscriptEvaluator_js__WEBPACK_IMPORTED_MODULE_24__["scriptCalculateHackingTime"])(server); //This is in seconds
-
- //No root access or skill level too low
- if (server.hasAdminRights == false) {
- workerScript.scriptRef.log("Cannot hack this server (" + server.hostname + ") because user does not have root access");
- throw Object(_NetscriptEvaluator_js__WEBPACK_IMPORTED_MODULE_24__["makeRuntimeRejectMsg"])(workerScript, "Cannot hack this server (" + server.hostname + ") because user does not have root access");
- }
-
- if (server.requiredHackingSkill > _Player_js__WEBPACK_IMPORTED_MODULE_15__["Player"].hacking_skill) {
- workerScript.scriptRef.log("Cannot hack this server (" + server.hostname + ") because user's hacking skill is not high enough");
- throw Object(_NetscriptEvaluator_js__WEBPACK_IMPORTED_MODULE_24__["makeRuntimeRejectMsg"])(workerScript, "Cannot hack this server (" + server.hostname + ") because user's hacking skill is not high enough");
- }
-
- if (workerScript.disableLogs.ALL == null && workerScript.disableLogs.hack == null) {
- workerScript.scriptRef.log("Attempting to hack " + ip + " in " + hackingTime.toFixed(3) + " seconds (t=" + threads + ")");
- }
- return Object(_NetscriptEvaluator_js__WEBPACK_IMPORTED_MODULE_24__["netscriptDelay"])(hackingTime* 1000, workerScript).then(function() {
- if (workerScript.env.stopFlag) {return Promise.reject(workerScript);}
- var hackChance = Object(_NetscriptEvaluator_js__WEBPACK_IMPORTED_MODULE_24__["scriptCalculateHackingChance"])(server);
- var rand = Math.random();
- var expGainedOnSuccess = Object(_NetscriptEvaluator_js__WEBPACK_IMPORTED_MODULE_24__["scriptCalculateExpGain"])(server) * threads;
- var expGainedOnFailure = (expGainedOnSuccess / 4);
- if (rand < hackChance) { //Success!
- var moneyGained = Object(_NetscriptEvaluator_js__WEBPACK_IMPORTED_MODULE_24__["scriptCalculatePercentMoneyHacked"])(server);
- moneyGained = Math.floor(server.moneyAvailable * moneyGained) * threads;
-
- //Over-the-top safety checks
- if (moneyGained <= 0) {
- moneyGained = 0;
- expGainedOnSuccess = expGainedOnFailure;
- }
- if (moneyGained > server.moneyAvailable) {moneyGained = server.moneyAvailable;}
- server.moneyAvailable -= moneyGained;
- if (server.moneyAvailable < 0) {server.moneyAvailable = 0;}
-
- _Player_js__WEBPACK_IMPORTED_MODULE_15__["Player"].gainMoney(moneyGained);
- workerScript.scriptRef.onlineMoneyMade += moneyGained;
- _Player_js__WEBPACK_IMPORTED_MODULE_15__["Player"].scriptProdSinceLastAug += moneyGained;
- workerScript.scriptRef.recordHack(server.ip, moneyGained, threads);
- _Player_js__WEBPACK_IMPORTED_MODULE_15__["Player"].gainHackingExp(expGainedOnSuccess);
- workerScript.scriptRef.onlineExpGained += expGainedOnSuccess;
- if (workerScript.disableLogs.ALL == null && workerScript.disableLogs.hack == null) {
- workerScript.scriptRef.log("Script SUCCESSFULLY hacked " + server.hostname + " for $" + Object(_utils_StringHelperFunctions_js__WEBPACK_IMPORTED_MODULE_31__["formatNumber"])(moneyGained, 2) + " and " + Object(_utils_StringHelperFunctions_js__WEBPACK_IMPORTED_MODULE_31__["formatNumber"])(expGainedOnSuccess, 4) + " exp (t=" + threads + ")");
- }
- server.fortify(_Constants_js__WEBPACK_IMPORTED_MODULE_6__["CONSTANTS"].ServerFortifyAmount * threads);
- return Promise.resolve(moneyGained);
- } else {
- //Player only gains 25% exp for failure?
- _Player_js__WEBPACK_IMPORTED_MODULE_15__["Player"].gainHackingExp(expGainedOnFailure);
- workerScript.scriptRef.onlineExpGained += expGainedOnFailure;
- if (workerScript.disableLogs.ALL == null && workerScript.disableLogs.hack == null) {
- workerScript.scriptRef.log("Script FAILED to hack " + server.hostname + ". Gained " + Object(_utils_StringHelperFunctions_js__WEBPACK_IMPORTED_MODULE_31__["formatNumber"])(expGainedOnFailure, 4) + " exp (t=" + threads + ")");
- }
- return Promise.resolve(0);
- }
- });
- },
- sleep : function(time){
- if (workerScript.checkingRam) {return 0;}
- if (time === undefined) {
- throw Object(_NetscriptEvaluator_js__WEBPACK_IMPORTED_MODULE_24__["makeRuntimeRejectMsg"])(workerScript, "sleep() call has incorrect number of arguments. Takes 1 argument");
- }
- if (workerScript.disableLogs.ALL == null && workerScript.disableLogs.sleep == null) {
- workerScript.scriptRef.log("Sleeping for " + time + " milliseconds");
- }
- return Object(_NetscriptEvaluator_js__WEBPACK_IMPORTED_MODULE_24__["netscriptDelay"])(time, workerScript).then(function() {
- return Promise.resolve(true);
- });
- },
- grow : function(ip){
- if (workerScript.checkingRam) {
- if (workerScript.loadedFns.grow) {
- return 0;
- } else {
- workerScript.loadedFns.grow = true;
- return _Constants_js__WEBPACK_IMPORTED_MODULE_6__["CONSTANTS"].ScriptGrowRamCost;
- }
- }
- var threads = workerScript.scriptRef.threads;
- if (isNaN(threads) || threads < 1) {threads = 1;}
- if (ip === undefined) {
- throw Object(_NetscriptEvaluator_js__WEBPACK_IMPORTED_MODULE_24__["makeRuntimeRejectMsg"])(workerScript, "grow() call has incorrect number of arguments. Takes 1 argument");
- }
- var server = Object(_Server_js__WEBPACK_IMPORTED_MODULE_17__["getServer"])(ip);
- if (server == null) {
- workerScript.scriptRef.log("Cannot grow(). Invalid IP or hostname passed in: " + ip);
- throw Object(_NetscriptEvaluator_js__WEBPACK_IMPORTED_MODULE_24__["makeRuntimeRejectMsg"])(workerScript, "Cannot grow(). Invalid IP or hostname passed in: " + ip);
- }
-
- //No root access or skill level too low
- if (server.hasAdminRights == false) {
- workerScript.scriptRef.log("Cannot grow this server (" + server.hostname + ") because user does not have root access");
- throw Object(_NetscriptEvaluator_js__WEBPACK_IMPORTED_MODULE_24__["makeRuntimeRejectMsg"])(workerScript, "Cannot grow this server (" + server.hostname + ") because user does not have root access");
- }
-
- var growTime = Object(_NetscriptEvaluator_js__WEBPACK_IMPORTED_MODULE_24__["scriptCalculateGrowTime"])(server);
- if (workerScript.disableLogs.ALL == null && workerScript.disableLogs.grow == null) {
- workerScript.scriptRef.log("Executing grow() on server " + server.hostname + " in " + Object(_utils_StringHelperFunctions_js__WEBPACK_IMPORTED_MODULE_31__["formatNumber"])(growTime/1000, 3) + " seconds (t=" + threads + ")");
- }
- return Object(_NetscriptEvaluator_js__WEBPACK_IMPORTED_MODULE_24__["netscriptDelay"])(growTime, workerScript).then(function() {
- if (workerScript.env.stopFlag) {return Promise.reject(workerScript);}
- server.moneyAvailable += (1 * threads); //It can be grown even if it has no money
- var growthPercentage = Object(_Server_js__WEBPACK_IMPORTED_MODULE_17__["processSingleServerGrowth"])(server, 450 * threads);
- workerScript.scriptRef.recordGrow(server.ip, threads);
- var expGain = Object(_NetscriptEvaluator_js__WEBPACK_IMPORTED_MODULE_24__["scriptCalculateExpGain"])(server) * threads;
- if (growthPercentage == 1) {
- expGain = 0;
- }
- if (workerScript.disableLogs.ALL == null && workerScript.disableLogs.grow == null) {
- workerScript.scriptRef.log("Available money on " + server.hostname + " grown by " +
- Object(_utils_StringHelperFunctions_js__WEBPACK_IMPORTED_MODULE_31__["formatNumber"])(growthPercentage*100 - 100, 6) + "%. Gained " +
- Object(_utils_StringHelperFunctions_js__WEBPACK_IMPORTED_MODULE_31__["formatNumber"])(expGain, 4) + " hacking exp (t=" + threads +")");
- }
- workerScript.scriptRef.onlineExpGained += expGain;
- _Player_js__WEBPACK_IMPORTED_MODULE_15__["Player"].gainHackingExp(expGain);
- return Promise.resolve(growthPercentage);
- });
- },
- weaken : function(ip){
- if (workerScript.checkingRam) {
- if (workerScript.loadedFns.weaken) {
- return 0;
- } else {
- workerScript.loadedFns.weaken = true;
- return _Constants_js__WEBPACK_IMPORTED_MODULE_6__["CONSTANTS"].ScriptWeakenRamCost;
- }
- }
- var threads = workerScript.scriptRef.threads;
- if (isNaN(threads) || threads < 1) {threads = 1;}
- if (ip === undefined) {
- throw Object(_NetscriptEvaluator_js__WEBPACK_IMPORTED_MODULE_24__["makeRuntimeRejectMsg"])(workerScript, "weaken() call has incorrect number of arguments. Takes 1 argument");
- }
- var server = Object(_Server_js__WEBPACK_IMPORTED_MODULE_17__["getServer"])(ip);
- if (server == null) {
- workerScript.scriptRef.log("Cannot weaken(). Invalid IP or hostname passed in: " + ip);
- throw Object(_NetscriptEvaluator_js__WEBPACK_IMPORTED_MODULE_24__["makeRuntimeRejectMsg"])(workerScript, "Cannot weaken(). Invalid IP or hostname passed in: " + ip);
- }
-
- //No root access or skill level too low
- if (server.hasAdminRights == false) {
- workerScript.scriptRef.log("Cannot weaken this server (" + server.hostname + ") because user does not have root access");
- throw Object(_NetscriptEvaluator_js__WEBPACK_IMPORTED_MODULE_24__["makeRuntimeRejectMsg"])(workerScript, "Cannot weaken this server (" + server.hostname + ") because user does not have root access");
- }
-
- var weakenTime = Object(_NetscriptEvaluator_js__WEBPACK_IMPORTED_MODULE_24__["scriptCalculateWeakenTime"])(server);
- if (workerScript.disableLogs.ALL == null && workerScript.disableLogs.weaken == null) {
- workerScript.scriptRef.log("Executing weaken() on server " + server.hostname + " in " +
- Object(_utils_StringHelperFunctions_js__WEBPACK_IMPORTED_MODULE_31__["formatNumber"])(weakenTime/1000, 3) + " seconds (t=" + threads + ")");
- }
- return Object(_NetscriptEvaluator_js__WEBPACK_IMPORTED_MODULE_24__["netscriptDelay"])(weakenTime, workerScript).then(function() {
- if (workerScript.env.stopFlag) {return Promise.reject(workerScript);}
- server.weaken(_Constants_js__WEBPACK_IMPORTED_MODULE_6__["CONSTANTS"].ServerWeakenAmount * threads);
- workerScript.scriptRef.recordWeaken(server.ip, threads);
- var expGain = Object(_NetscriptEvaluator_js__WEBPACK_IMPORTED_MODULE_24__["scriptCalculateExpGain"])(server) * threads;
- if (workerScript.disableLogs.ALL == null && workerScript.disableLogs.weaken == null) {
- workerScript.scriptRef.log("Server security level on " + server.hostname + " weakened to " + server.hackDifficulty +
- ". Gained " + Object(_utils_StringHelperFunctions_js__WEBPACK_IMPORTED_MODULE_31__["formatNumber"])(expGain, 4) + " hacking exp (t=" + threads + ")");
- }
- workerScript.scriptRef.onlineExpGained += expGain;
- _Player_js__WEBPACK_IMPORTED_MODULE_15__["Player"].gainHackingExp(expGain);
- return Promise.resolve(_Constants_js__WEBPACK_IMPORTED_MODULE_6__["CONSTANTS"].ServerWeakenAmount * threads);
- });
- },
- print : function(args){
- if (workerScript.checkingRam) {return 0;}
- if (args === undefined) {
- throw Object(_NetscriptEvaluator_js__WEBPACK_IMPORTED_MODULE_24__["makeRuntimeRejectMsg"])(workerScript, "print() call has incorrect number of arguments. Takes 1 argument");
- }
- workerScript.scriptRef.log(args.toString());
- },
- tprint : function(args) {
- if (workerScript.checkingRam) {return 0;}
- if (args === undefined || args == null) {
- throw Object(_NetscriptEvaluator_js__WEBPACK_IMPORTED_MODULE_24__["makeRuntimeRejectMsg"])(workerScript, "tprint() call has incorrect number of arguments. Takes 1 argument");
- }
- var x = args.toString();
- if (Object(_utils_StringHelperFunctions_js__WEBPACK_IMPORTED_MODULE_31__["isHTML"])(x)) {
- _Player_js__WEBPACK_IMPORTED_MODULE_15__["Player"].takeDamage(1);
- Object(_utils_DialogBox_js__WEBPACK_IMPORTED_MODULE_28__["dialogBoxCreate"])("You suddenly feel a sharp shooting pain through your body as an angry voice in your head exclaims:
" +
- "DON'T USE TPRINT() TO OUTPUT HTML ELEMENTS TO YOUR TERMINAL!!!!
" +
- "(You lost 1 HP)");
- return;
- }
- Object(_Terminal_js__WEBPACK_IMPORTED_MODULE_21__["post"])(workerScript.scriptRef.filename + ": " + args.toString());
- },
- clearLog : function() {
- if (workerScript.checkingRam) {return 0;}
- workerScript.scriptRef.clearLog();
- },
- disableLog : function(fn) {
- if (workerScript.checkingRam) {return 0;}
- if(possibleLogs[fn]===undefined) {
- throw Object(_NetscriptEvaluator_js__WEBPACK_IMPORTED_MODULE_24__["makeRuntimeRejectMsg"])(workerScript, "Invalid argument to disableLog: "+fn);
- }
- workerScript.disableLogs[fn] = true;
- if (workerScript.disableLogs.ALL == null && workerScript.disableLogs.disableLog == null) {
- workerScript.scriptRef.log("Disabled logging for " + fn);
- }
- },
- enableLog : function(fn) {
- if (workerScript.checkingRam) {return 0;}
- if(possibleLogs[fn]===undefined) {
- throw Object(_NetscriptEvaluator_js__WEBPACK_IMPORTED_MODULE_24__["makeRuntimeRejectMsg"])(workerScript, "Invalid argument to enableLog: "+fn);
- }
- delete workerScript.disableLogs[fn];
- if (workerScript.disableLogs.ALL == null && workerScript.disableLogs.enableLog == null) {
- workerScript.scriptRef.log("Enabled logging for " + fn);
- }
- },
- nuke : function(ip){
- if (workerScript.checkingRam) {
- if (workerScript.loadedFns.nuke) {
- return 0;
- } else {
- workerScript.loadedFns.nuke = true;
- return _Constants_js__WEBPACK_IMPORTED_MODULE_6__["CONSTANTS"].ScriptPortProgramRamCost;
- }
- }
- if (ip === undefined) {
- throw Object(_NetscriptEvaluator_js__WEBPACK_IMPORTED_MODULE_24__["makeRuntimeRejectMsg"])(workerScript, "Program call has incorrect number of arguments. Takes 1 argument");
- }
- var server = Object(_Server_js__WEBPACK_IMPORTED_MODULE_17__["getServer"])(ip);
- if (server == null) {
- workerScript.scriptRef.log("Cannot call nuke(). Invalid IP or hostname passed in: " + ip);
- throw Object(_NetscriptEvaluator_js__WEBPACK_IMPORTED_MODULE_24__["makeRuntimeRejectMsg"])(workerScript, "Cannot call nuke(). Invalid IP or hostname passed in: " + ip);
- }
- if (!_Player_js__WEBPACK_IMPORTED_MODULE_15__["Player"].hasProgram(_CreateProgram_js__WEBPACK_IMPORTED_MODULE_7__["Programs"].NukeProgram)) {
- throw Object(_NetscriptEvaluator_js__WEBPACK_IMPORTED_MODULE_24__["makeRuntimeRejectMsg"])(workerScript, "You do not have the NUKE.exe virus!");
- }
- if (server.openPortCount < server.numOpenPortsRequired) {
- throw Object(_NetscriptEvaluator_js__WEBPACK_IMPORTED_MODULE_24__["makeRuntimeRejectMsg"])(workerScript, "Not enough ports opened to use NUKE.exe virus");
- }
- if (server.hasAdminRights) {
- if (workerScript.disableLogs.ALL == null && workerScript.disableLogs.nuke == null) {
- workerScript.scriptRef.log("Already have root access to " + server.hostname);
- }
- } else {
- server.hasAdminRights = true;
- if (workerScript.disableLogs.ALL == null && workerScript.disableLogs.nuke == null) {
- workerScript.scriptRef.log("Executed NUKE.exe virus on " + server.hostname + " to gain root access");
- }
- }
- return true;
- },
- brutessh : function(ip){
- if (workerScript.checkingRam) {
- if (workerScript.loadedFns.brutessh) {
- return 0;
- } else {
- workerScript.loadedFns.brutessh = true;
- return _Constants_js__WEBPACK_IMPORTED_MODULE_6__["CONSTANTS"].ScriptPortProgramRamCost;
- }
- }
- if (ip === undefined) {
- throw Object(_NetscriptEvaluator_js__WEBPACK_IMPORTED_MODULE_24__["makeRuntimeRejectMsg"])(workerScript, "Program call has incorrect number of arguments. Takes 1 argument");
- }
- var server = Object(_Server_js__WEBPACK_IMPORTED_MODULE_17__["getServer"])(ip);
- if (server == null) {
- workerScript.scriptRef.log("Cannot call brutessh(). Invalid IP or hostname passed in: " + ip);
- throw Object(_NetscriptEvaluator_js__WEBPACK_IMPORTED_MODULE_24__["makeRuntimeRejectMsg"])(workerScript, "Cannot call brutessh(). Invalid IP or hostname passed in: " + ip);
- }
- if (!_Player_js__WEBPACK_IMPORTED_MODULE_15__["Player"].hasProgram(_CreateProgram_js__WEBPACK_IMPORTED_MODULE_7__["Programs"].BruteSSHProgram)) {
- workerScript.scriptRef.log("You do not have the BruteSSH.exe program!");
- throw Object(_NetscriptEvaluator_js__WEBPACK_IMPORTED_MODULE_24__["makeRuntimeRejectMsg"])(workerScript, "You do not have the BruteSSH.exe program!");
- }
- if (!server.sshPortOpen) {
- if (workerScript.disableLogs.ALL == null && workerScript.disableLogs.brutessh == null) {
- workerScript.scriptRef.log("Executed BruteSSH.exe on " + server.hostname + " to open SSH port (22)");
- }
- server.sshPortOpen = true;
- ++server.openPortCount;
- } else {
- if (workerScript.disableLogs.ALL == null && workerScript.disableLogs.brutessh == null) {
- workerScript.scriptRef.log("SSH Port (22) already opened on " + server.hostname);
- }
- }
- return true;
- },
- ftpcrack : function(ip){
- if (workerScript.checkingRam) {
- if (workerScript.loadedFns.ftpcrack) {
- return 0;
- } else {
- workerScript.loadedFns.ftpcrack = true;
- return _Constants_js__WEBPACK_IMPORTED_MODULE_6__["CONSTANTS"].ScriptPortProgramRamCost;
- }
- }
- if (ip === undefined) {
- throw Object(_NetscriptEvaluator_js__WEBPACK_IMPORTED_MODULE_24__["makeRuntimeRejectMsg"])(workerScript, "Program call has incorrect number of arguments. Takes 1 argument");
- }
- var server = Object(_Server_js__WEBPACK_IMPORTED_MODULE_17__["getServer"])(ip);
- if (server == null) {
- workerScript.scriptRef.log("Cannot call ftpcrack(). Invalid IP or hostname passed in: " + ip);
- throw Object(_NetscriptEvaluator_js__WEBPACK_IMPORTED_MODULE_24__["makeRuntimeRejectMsg"])(workerScript, "Cannot call ftpcrack(). Invalid IP or hostname passed in: " + ip);
- }
- if (!_Player_js__WEBPACK_IMPORTED_MODULE_15__["Player"].hasProgram(_CreateProgram_js__WEBPACK_IMPORTED_MODULE_7__["Programs"].FTPCrackProgram)) {
- throw Object(_NetscriptEvaluator_js__WEBPACK_IMPORTED_MODULE_24__["makeRuntimeRejectMsg"])(workerScript, "You do not have the FTPCrack.exe program!");
- }
- if (!server.ftpPortOpen) {
- if (workerScript.disableLogs.ALL == null && workerScript.disableLogs.ftpcrack == null) {
- workerScript.scriptRef.log("Executed FTPCrack.exe on " + server.hostname + " to open FTP port (21)");
- }
- server.ftpPortOpen = true;
- ++server.openPortCount;
- } else {
- if (workerScript.disableLogs.ALL == null && workerScript.disableLogs.ftpcrack == null) {
- workerScript.scriptRef.log("FTP Port (21) already opened on " + server.hostname);
- }
- }
- return true;
- },
- relaysmtp : function(ip){
- if (workerScript.checkingRam) {
- if (workerScript.loadedFns.relaysmtp) {
- return 0;
- } else {
- workerScript.loadedFns.relaysmtp = true;
- return _Constants_js__WEBPACK_IMPORTED_MODULE_6__["CONSTANTS"].ScriptPortProgramRamCost;
- }
- }
- if (ip === undefined) {
- throw Object(_NetscriptEvaluator_js__WEBPACK_IMPORTED_MODULE_24__["makeRuntimeRejectMsg"])(workerScript, "Program call has incorrect number of arguments. Takes 1 argument");
- }
- var server = Object(_Server_js__WEBPACK_IMPORTED_MODULE_17__["getServer"])(ip);
- if (server == null) {
- workerScript.scriptRef.log("Cannot call relaysmtp(). Invalid IP or hostname passed in: " + ip);
- throw Object(_NetscriptEvaluator_js__WEBPACK_IMPORTED_MODULE_24__["makeRuntimeRejectMsg"])(workerScript, "Cannot call relaysmtp(). Invalid IP or hostname passed in: " + ip);
- }
- if (!_Player_js__WEBPACK_IMPORTED_MODULE_15__["Player"].hasProgram(_CreateProgram_js__WEBPACK_IMPORTED_MODULE_7__["Programs"].RelaySMTPProgram)) {
- throw Object(_NetscriptEvaluator_js__WEBPACK_IMPORTED_MODULE_24__["makeRuntimeRejectMsg"])(workerScript, "You do not have the relaySMTP.exe program!");
- }
- if (!server.smtpPortOpen) {
- if (workerScript.disableLogs.ALL == null && workerScript.disableLogs.relaysmtp == null) {
- workerScript.scriptRef.log("Executed relaySMTP.exe on " + server.hostname + " to open SMTP port (25)");
- }
- server.smtpPortOpen = true;
- ++server.openPortCount;
- } else {
- if (workerScript.disableLogs.ALL == null && workerScript.disableLogs.relaysmtp == null) {
- workerScript.scriptRef.log("SMTP Port (25) already opened on " + server.hostname);
- }
- }
- return true;
- },
- httpworm : function(ip){
- if (workerScript.checkingRam) {
- if (workerScript.loadedFns.httpworm) {
- return 0;
- } else {
- workerScript.loadedFns.httpworm = true;
- return _Constants_js__WEBPACK_IMPORTED_MODULE_6__["CONSTANTS"].ScriptPortProgramRamCost;
- }
- }
- if (ip === undefined) {
- throw Object(_NetscriptEvaluator_js__WEBPACK_IMPORTED_MODULE_24__["makeRuntimeRejectMsg"])(workerScript, "Program call has incorrect number of arguments. Takes 1 argument");
- }
- var server = Object(_Server_js__WEBPACK_IMPORTED_MODULE_17__["getServer"])(ip);
- if (server == null) {
- workerScript.scriptRef.log("Cannot call httpworm(). Invalid IP or hostname passed in: " + ip);
- throw Object(_NetscriptEvaluator_js__WEBPACK_IMPORTED_MODULE_24__["makeRuntimeRejectMsg"])(workerScript, "Cannot call httpworm(). Invalid IP or hostname passed in: " + ip);
- }
- if (!_Player_js__WEBPACK_IMPORTED_MODULE_15__["Player"].hasProgram(_CreateProgram_js__WEBPACK_IMPORTED_MODULE_7__["Programs"].HTTPWormProgram)) {
- throw Object(_NetscriptEvaluator_js__WEBPACK_IMPORTED_MODULE_24__["makeRuntimeRejectMsg"])(workerScript, "You do not have the HTTPWorm.exe program!");
- }
- if (!server.httpPortOpen) {
- if (workerScript.disableLogs.ALL == null && workerScript.disableLogs.httpworm == null) {
- workerScript.scriptRef.log("Executed HTTPWorm.exe on " + server.hostname + " to open HTTP port (80)");
- }
- server.httpPortOpen = true;
- ++server.openPortCount;
- } else {
- if (workerScript.disableLogs.ALL == null && workerScript.disableLogs.httpworm == null) {
- workerScript.scriptRef.log("HTTP Port (80) already opened on " + server.hostname);
- }
- }
- return true;
- },
- sqlinject : function(ip){
- if (workerScript.checkingRam) {
- if (workerScript.loadedFns.sqlinject) {
- return 0;
- } else {
- workerScript.loadedFns.sqlinject = true;
- return _Constants_js__WEBPACK_IMPORTED_MODULE_6__["CONSTANTS"].ScriptPortProgramRamCost;
- }
- }
- if (ip === undefined) {
- throw Object(_NetscriptEvaluator_js__WEBPACK_IMPORTED_MODULE_24__["makeRuntimeRejectMsg"])(workerScript, "Program call has incorrect number of arguments. Takes 1 argument");
- }
- var server = Object(_Server_js__WEBPACK_IMPORTED_MODULE_17__["getServer"])(ip);
- if (server == null) {
- workerScript.scriptRef.log("Cannot call sqlinject(). Invalid IP or hostname passed in: " + ip);
- throw Object(_NetscriptEvaluator_js__WEBPACK_IMPORTED_MODULE_24__["makeRuntimeRejectMsg"])(workerScript, "Cannot call sqlinject(). Invalid IP or hostname passed in: " + ip);
- }
- if (!_Player_js__WEBPACK_IMPORTED_MODULE_15__["Player"].hasProgram(_CreateProgram_js__WEBPACK_IMPORTED_MODULE_7__["Programs"].SQLInjectProgram)) {
- throw Object(_NetscriptEvaluator_js__WEBPACK_IMPORTED_MODULE_24__["makeRuntimeRejectMsg"])(workerScript, "You do not have the SQLInject.exe program!");
- }
- if (!server.sqlPortOpen) {
- if (workerScript.disableLogs.ALL == null && workerScript.disableLogs.sqlinject == null) {
- workerScript.scriptRef.log("Executed SQLInject.exe on " + server.hostname + " to open SQL port (1433)");
- }
- server.sqlPortOpen = true;
- ++server.openPortCount;
- } else {
- if (workerScript.disableLogs.ALL == null && workerScript.disableLogs.sqlinject == null) {
- workerScript.scriptRef.log("SQL Port (1433) already opened on " + server.hostname);
- }
- }
- return true;
- },
- run : function(scriptname,threads = 1){
- if (workerScript.checkingRam) {
- if (workerScript.loadedFns.run) {
- return 0;
- } else {
- workerScript.loadedFns.run = true;
- return _Constants_js__WEBPACK_IMPORTED_MODULE_6__["CONSTANTS"].ScriptRunRamCost;
- }
- }
- if (scriptname === undefined) {
- throw Object(_NetscriptEvaluator_js__WEBPACK_IMPORTED_MODULE_24__["makeRuntimeRejectMsg"])(workerScript, "run() call has incorrect number of arguments. Usage: run(scriptname, [numThreads], [arg1], [arg2]...)");
- }
- if (isNaN(threads) || threads < 1) {
- throw Object(_NetscriptEvaluator_js__WEBPACK_IMPORTED_MODULE_24__["makeRuntimeRejectMsg"])(workerScript, "Invalid argument for thread count passed into run(). Must be numeric and greater than 0");
- }
- var argsForNewScript = [];
- for (var i = 2; i < arguments.length; ++i) {
- argsForNewScript.push(arguments[i]);
- }
- var scriptServer = Object(_Server_js__WEBPACK_IMPORTED_MODULE_17__["getServer"])(workerScript.serverIp);
- if (scriptServer == null) {
- throw Object(_NetscriptEvaluator_js__WEBPACK_IMPORTED_MODULE_24__["makeRuntimeRejectMsg"])(workerScript, "Could not find server. This is a bug in the game. Report to game dev");
- }
-
- return Object(_NetscriptEvaluator_js__WEBPACK_IMPORTED_MODULE_24__["runScriptFromScript"])(scriptServer, scriptname, argsForNewScript, workerScript, threads);
- },
- exec : function(scriptname,ip,threads = 1) {
- if (workerScript.checkingRam) {
- if (workerScript.loadedFns.exec) {
- return 0;
- } else {
- workerScript.loadedFns.exec = true;
- return _Constants_js__WEBPACK_IMPORTED_MODULE_6__["CONSTANTS"].ScriptExecRamCost;
- }
- }
- if (scriptname === undefined || ip === undefined) {
- throw Object(_NetscriptEvaluator_js__WEBPACK_IMPORTED_MODULE_24__["makeRuntimeRejectMsg"])(workerScript, "exec() call has incorrect number of arguments. Usage: exec(scriptname, server, [numThreads], [arg1], [arg2]...)");
- }
- if (isNaN(threads) || threads < 1) {
- throw Object(_NetscriptEvaluator_js__WEBPACK_IMPORTED_MODULE_24__["makeRuntimeRejectMsg"])(workerScript, "Invalid argument for thread count passed into exec(). Must be numeric and greater than 0");
- }
- var argsForNewScript = [];
- for (var i = 3; i < arguments.length; ++i) {
- argsForNewScript.push(arguments[i]);
- }
- var server = Object(_Server_js__WEBPACK_IMPORTED_MODULE_17__["getServer"])(ip);
- if (server == null) {
- throw Object(_NetscriptEvaluator_js__WEBPACK_IMPORTED_MODULE_24__["makeRuntimeRejectMsg"])(workerScript, "Invalid hostname/ip passed into exec() command: " + ip);
- }
- return Object(_NetscriptEvaluator_js__WEBPACK_IMPORTED_MODULE_24__["runScriptFromScript"])(server, scriptname, argsForNewScript, workerScript, threads);
- },
- spawn : function(scriptname, threads) {
- if (workerScript.checkingRam) {
- if (workerScript.loadedFns.spawn) {
- return 0;
- } else {
- workerScript.loadedFns.spawn = true;
- return _Constants_js__WEBPACK_IMPORTED_MODULE_6__["CONSTANTS"].ScriptSpawnRamCost;
- }
- }
- if (scriptname == null || threads == null) {
- throw Object(_NetscriptEvaluator_js__WEBPACK_IMPORTED_MODULE_24__["makeRuntimeRejectMsg"])(workerScript, "Invalid scriptname or numThreads argument passed to spawn()");
- }
- setTimeout(()=>{
- NetscriptFunctions(workerScript).run.apply(this, arguments);
- }, 20000);
- if (workerScript.disableLogs.ALL == null && workerScript.disableLogs.spawn == null) {
- workerScript.scriptRef.log("spawn() will execute " + scriptname + " in 20 seconds");
- }
- NetscriptFunctions(workerScript).exit();
- },
- kill : function(filename,ip) {
- if (workerScript.checkingRam) {
- if (workerScript.loadedFns.kill) {
- return 0;
- } else {
- workerScript.loadedFns.kill = true;
- return _Constants_js__WEBPACK_IMPORTED_MODULE_6__["CONSTANTS"].ScriptKillRamCost;
- }
- }
-
- if (filename === undefined || ip === undefined) {
- throw Object(_NetscriptEvaluator_js__WEBPACK_IMPORTED_MODULE_24__["makeRuntimeRejectMsg"])(workerScript, "kill() call has incorrect number of arguments. Usage: kill(scriptname, server, [arg1], [arg2]...)");
- }
- var server = Object(_Server_js__WEBPACK_IMPORTED_MODULE_17__["getServer"])(ip);
- if (server == null) {
- workerScript.scriptRef.log("kill() failed. Invalid IP or hostname passed in: " + ip);
- throw Object(_NetscriptEvaluator_js__WEBPACK_IMPORTED_MODULE_24__["makeRuntimeRejectMsg"])(workerScript, "kill() failed. Invalid IP or hostname passed in: " + ip);
- }
- var argsForKillTarget = [];
- for (var i = 2; i < arguments.length; ++i) {
- argsForKillTarget.push(arguments[i]);
- }
- var runningScriptObj = Object(_Script_js__WEBPACK_IMPORTED_MODULE_16__["findRunningScript"])(filename, argsForKillTarget, server);
- if (runningScriptObj == null) {
- workerScript.scriptRef.log("kill() failed. No such script "+ filename + " on " + server.hostname + " with args: " + Object(_utils_HelperFunctions_js__WEBPACK_IMPORTED_MODULE_29__["printArray"])(argsForKillTarget));
- return false;
- }
- var res = Object(_NetscriptWorker_js__WEBPACK_IMPORTED_MODULE_23__["killWorkerScript"])(runningScriptObj, server.ip);
- if (res) {
- if (workerScript.disableLogs.ALL == null && workerScript.disableLogs.kill == null) {
- workerScript.scriptRef.log("Killing " + filename + " on " + server.hostname + " with args: " + Object(_utils_HelperFunctions_js__WEBPACK_IMPORTED_MODULE_29__["printArray"])(argsForKillTarget) + ". May take up to a few minutes for the scripts to die...");
- }
- return true;
- } else {
- if (workerScript.disableLogs.ALL == null && workerScript.disableLogs.kill == null) {
- workerScript.scriptRef.log("kill() failed. No such script "+ filename + " on " + server.hostname + " with args: " + Object(_utils_HelperFunctions_js__WEBPACK_IMPORTED_MODULE_29__["printArray"])(argsForKillTarget));
- }
- return false;
- }
- },
- killall : function(ip=workerScript.serverIp){
- if (workerScript.checkingRam) {
- if (workerScript.loadedFns.killall) {
- return 0;
- } else {
- workerScript.loadedFns.killall = true;
- return _Constants_js__WEBPACK_IMPORTED_MODULE_6__["CONSTANTS"].ScriptKillRamCost;
- }
- }
-
- if (ip === undefined) {
- throw Object(_NetscriptEvaluator_js__WEBPACK_IMPORTED_MODULE_24__["makeRuntimeRejectMsg"])(workerScript, "killall() call has incorrect number of arguments. Takes 1 argument");
- }
- var server = Object(_Server_js__WEBPACK_IMPORTED_MODULE_17__["getServer"])(ip);
- if (server == null) {
- workerScript.scriptRef.log("killall() failed. Invalid IP or hostname passed in: " + ip);
- throw Object(_NetscriptEvaluator_js__WEBPACK_IMPORTED_MODULE_24__["makeRuntimeRejectMsg"])(workerScript, "killall() failed. Invalid IP or hostname passed in: " + ip);
- }
- var scriptsRunning = (server.runningScripts.length > 0);
- for (var i = server.runningScripts.length-1; i >= 0; --i) {
- Object(_NetscriptWorker_js__WEBPACK_IMPORTED_MODULE_23__["killWorkerScript"])(server.runningScripts[i], server.ip);
- }
- if (workerScript.disableLogs.ALL == null && workerScript.disableLogs.killall == null) {
- workerScript.scriptRef.log("killall(): Killing all scripts on " + server.hostname + ". May take a few minutes for the scripts to die");
- }
- return scriptsRunning;
- },
- exit : function() {
- if (workerScript.checkingRam) {
- if (workerScript.loadedFns.exit) {
- return 0;
- } else {
- workerScript.loadedFns.exit = true;
- return _Constants_js__WEBPACK_IMPORTED_MODULE_6__["CONSTANTS"].ScriptKillRamCost;
- }
- }
- var server = Object(_Server_js__WEBPACK_IMPORTED_MODULE_17__["getServer"])(workerScript.serverIp);
- if (server == null) {
- throw Object(_NetscriptEvaluator_js__WEBPACK_IMPORTED_MODULE_24__["makeRuntimeRejectMsg"])(workerScript, "Error getting Server for this script in exit(). This is a bug please contact game dev");
- }
- if (Object(_NetscriptWorker_js__WEBPACK_IMPORTED_MODULE_23__["killWorkerScript"])(workerScript.scriptRef, server.ip)) {
- workerScript.scriptRef.log("Exiting...");
- } else {
- workerScript.scriptRef.log("Exit failed(). This is a bug please contact game developer");
- }
- },
- scp : function(scriptname, ip1, ip2) {
- if (workerScript.checkingRam) {
- if (workerScript.loadedFns.scp) {
- return 0;
- } else {
- workerScript.loadedFns.scp = true;
- return _Constants_js__WEBPACK_IMPORTED_MODULE_6__["CONSTANTS"].ScriptScpRamCost;
- }
- }
- if (arguments.length !== 2 && arguments.length !== 3) {
- throw Object(_NetscriptEvaluator_js__WEBPACK_IMPORTED_MODULE_24__["makeRuntimeRejectMsg"])(workerScript, "Error: scp() call has incorrect number of arguments. Takes 2 or 3 arguments");
- }
- if (scriptname && scriptname.constructor === Array) {
- //Recursively call scp on all elements of array
- var res = false;
- scriptname.forEach(function(script) {
- if (NetscriptFunctions(workerScript).scp(script, ip1, ip2)) {
- res = true;
- };
- });
- return res;
- }
- if (!scriptname.endsWith(".lit") && !Object(_Script_js__WEBPACK_IMPORTED_MODULE_16__["isScriptFilename"])(scriptname) &&
- !scriptname.endsWith("txt")) {
- throw Object(_NetscriptEvaluator_js__WEBPACK_IMPORTED_MODULE_24__["makeRuntimeRejectMsg"])(workerScript, "Error: scp() does not work with this file type. It only works for .script, .lit, and .txt files");
- }
-
- var destServer, currServ;
-
- if (arguments.length === 3) { //scriptname, source, destination
- if (scriptname === undefined || ip1 === undefined || ip2 === undefined) {
- throw Object(_NetscriptEvaluator_js__WEBPACK_IMPORTED_MODULE_24__["makeRuntimeRejectMsg"])(workerScript, "Error: scp() call has incorrect number of arguments. Takes 2 or 3 arguments");
- }
- destServer = Object(_Server_js__WEBPACK_IMPORTED_MODULE_17__["getServer"])(ip2);
- if (destServer == null) {
- throw Object(_NetscriptEvaluator_js__WEBPACK_IMPORTED_MODULE_24__["makeRuntimeRejectMsg"])(workerScript, "Error: Invalid hostname/ip passed into scp() command: " + ip);
- }
-
- currServ = Object(_Server_js__WEBPACK_IMPORTED_MODULE_17__["getServer"])(ip1);
- if (currServ == null) {
- throw Object(_NetscriptEvaluator_js__WEBPACK_IMPORTED_MODULE_24__["makeRuntimeRejectMsg"])(workerScript, "Could not find server ip for this script. This is a bug please contact game developer");
- }
- } else if (arguments.length === 2) { //scriptname, destination
- if (scriptname === undefined || ip1 === undefined) {
- throw Object(_NetscriptEvaluator_js__WEBPACK_IMPORTED_MODULE_24__["makeRuntimeRejectMsg"])(workerScript, "Error: scp() call has incorrect number of arguments. Takes 2 or 3 arguments");
- }
- destServer = Object(_Server_js__WEBPACK_IMPORTED_MODULE_17__["getServer"])(ip1);
- if (destServer == null) {
- throw Object(_NetscriptEvaluator_js__WEBPACK_IMPORTED_MODULE_24__["makeRuntimeRejectMsg"])(workerScript, "Error: Invalid hostname/ip passed into scp() command: " + ip);
- }
-
- currServ = Object(_Server_js__WEBPACK_IMPORTED_MODULE_17__["getServer"])(workerScript.serverIp);
- if (currServ == null) {
- throw Object(_NetscriptEvaluator_js__WEBPACK_IMPORTED_MODULE_24__["makeRuntimeRejectMsg"])(workerScript, "Could not find server ip for this script. This is a bug please contact game developer");
- }
- }
-
- //Scp for lit files
- if (scriptname.endsWith(".lit")) {
- var found = false;
- for (var i = 0; i < currServ.messages.length; ++i) {
- if (!(currServ.messages[i] instanceof _Message_js__WEBPACK_IMPORTED_MODULE_13__["Message"]) && currServ.messages[i] == scriptname) {
- found = true;
- break;
- }
- }
-
- if (!found) {
- workerScript.scriptRef.log(scriptname + " does not exist. scp() failed");
- return false;
- }
-
- for (var i = 0; i < destServer.messages.length; ++i) {
- if (destServer.messages[i] === scriptname) {
- if (workerScript.disableLogs.ALL == null && workerScript.disableLogs.scp == null) {
- workerScript.scriptRef.log(scriptname + " copied over to " + destServer.hostname);
- }
- return true; //Already exists
- }
- }
- destServer.messages.push(scriptname);
- if (workerScript.disableLogs.ALL == null && workerScript.disableLogs.scp == null) {
- workerScript.scriptRef.log(scriptname + " copied over to " + destServer.hostname);
- }
- return true;
- }
-
- //Scp for text files
- if (scriptname.endsWith(".txt")) {
- var found = false, txtFile;
- for (var i = 0; i < currServ.textFiles.length; ++i) {
- if (currServ.textFiles[i].fn === scriptname) {
- found = true;
- txtFile = currServ.textFiles[i];
- break;
- }
- }
-
- if (!found) {
- workerScript.scriptRef.log(scriptname + " does not exist. scp() failed");
- return false;
- }
-
- for (var i = 0; i < destServer.textFiles.length; ++i) {
- if (destServer.textFiles[i].fn === scriptname) {
- //Overwrite
- destServer.textFiles[i].text = txtFile.text;
- if (workerScript.disableLogs.ALL == null && workerScript.disableLogs.scp == null) {
- workerScript.scriptRef.log(scriptname + " copied over to " + destServer.hostname);
- }
- return true;
- }
- }
- var newFile = new _TextFile_js__WEBPACK_IMPORTED_MODULE_22__["TextFile"](txtFile.fn, txtFile.text);
- destServer.textFiles.push(newFile);
- if (workerScript.disableLogs.ALL == null && workerScript.disableLogs.scp == null) {
- workerScript.scriptRef.log(scriptname + " copied over to " + destServer.hostname);
- }
- return true;
- }
-
- //Scp for script files
- var sourceScript = null;
- for (var i = 0; i < currServ.scripts.length; ++i) {
- if (scriptname == currServ.scripts[i].filename) {
- sourceScript = currServ.scripts[i];
- break;
- }
- }
- if (sourceScript == null) {
- workerScript.scriptRef.log(scriptname + " does not exist. scp() failed");
- return false;
- }
-
- //Overwrite script if it already exists
- for (var i = 0; i < destServer.scripts.length; ++i) {
- if (scriptname == destServer.scripts[i].filename) {
- if (workerScript.disableLogs.ALL == null && workerScript.disableLogs.scp == null) {
- workerScript.scriptRef.log("WARNING: " + scriptname + " already exists on " + destServer.hostname + " and it will be overwritten.");
- workerScript.scriptRef.log(scriptname + " overwritten on " + destServer.hostname);
- }
- var oldScript = destServer.scripts[i];
- oldScript.code = sourceScript.code;
- oldScript.ramUsage = sourceScript.ramUsage;
- return true;
- }
- }
-
- //Create new script if it does not already exist
- var newScript = new _Script_js__WEBPACK_IMPORTED_MODULE_16__["Script"]();
- newScript.filename = scriptname;
- newScript.code = sourceScript.code;
- newScript.ramUsage = sourceScript.ramUsage;
- newScript.server = destServer.ip;
- destServer.scripts.push(newScript);
- if (workerScript.disableLogs.ALL == null && workerScript.disableLogs.scp == null) {
- workerScript.scriptRef.log(scriptname + " copied over to " + destServer.hostname);
- }
- return true;
- },
- ls : function(ip, grep) {
- if (workerScript.checkingRam) {
- if (workerScript.loadedFns.ls) {
- return 0;
- } else {
- workerScript.loadedFns.ls = true;
- return _Constants_js__WEBPACK_IMPORTED_MODULE_6__["CONSTANTS"].ScriptScanRamCost;
- }
- }
- if (ip === undefined) {
- throw Object(_NetscriptEvaluator_js__WEBPACK_IMPORTED_MODULE_24__["makeRuntimeRejectMsg"])(workerScript, "ls() failed because of invalid arguments. Usage: ls(ip/hostname, [grep filter])");
- }
- var server = Object(_Server_js__WEBPACK_IMPORTED_MODULE_17__["getServer"])(ip);
- if (server == null) {
- workerScript.scriptRef.log("ls() failed. Invalid IP or hostname passed in: " + ip);
- throw Object(_NetscriptEvaluator_js__WEBPACK_IMPORTED_MODULE_24__["makeRuntimeRejectMsg"])(workerScript, "ls() failed. Invalid IP or hostname passed in: " + ip);
- }
-
- //Get the grep filter, if one exists
- var filter = false;
- if (arguments.length >= 2) {
- filter = grep.toString();
- }
-
- var allFiles = [];
- for (var i = 0; i < server.programs.length; i++) {
- if (filter) {
- if (server.programs[i].includes(filter)) {
- allFiles.push(server.programs[i]);
- }
- } else {
- allFiles.push(server.programs[i]);
- }
- }
- for (var i = 0; i < server.scripts.length; i++) {
- if (filter) {
- if (server.scripts[i].filename.includes(filter)) {
- allFiles.push(server.scripts[i].filename);
- }
- } else {
- allFiles.push(server.scripts[i].filename);
- }
-
- }
- for (var i = 0; i < server.messages.length; i++) {
- if (filter) {
- if (server.messages[i] instanceof _Message_js__WEBPACK_IMPORTED_MODULE_13__["Message"]) {
- if (server.messages[i].filename.includes(filter)) {
- allFiles.push(server.messages[i].filename);
- }
- } else if (server.messages[i].includes(filter)) {
- allFiles.push(server.messages[i]);
- }
- } else {
- if (server.messages[i] instanceof _Message_js__WEBPACK_IMPORTED_MODULE_13__["Message"]) {
- allFiles.push(server.messages[i].filename);
- } else {
- allFiles.push(server.messages[i]);
- }
- }
- }
-
- for (var i = 0; i < server.textFiles.length; i++) {
- if (filter) {
- if (server.textFiles[i].fn.includes(filter)) {
- allFiles.push(server.textFiles[i].fn);
- }
- } else {
- allFiles.push(server.textFiles[i].fn);
- }
- }
-
- //Sort the files alphabetically then print each
- allFiles.sort();
- return allFiles;
- },
- hasRootAccess : function(ip) {
- if (workerScript.checkingRam) {
- if (workerScript.loadedFns.hasRootAccess) {
- return 0;
- } else {
- workerScript.loadedFns.hasRootAccess = true;
- return _Constants_js__WEBPACK_IMPORTED_MODULE_6__["CONSTANTS"].ScriptHasRootAccessRamCost;
- }
- }
- if (ip===undefined){
- throw Object(_NetscriptEvaluator_js__WEBPACK_IMPORTED_MODULE_24__["makeRuntimeRejectMsg"])(workerScript, "hasRootAccess() call has incorrect number of arguments. Takes 1 argument");
- }
- var server = Object(_Server_js__WEBPACK_IMPORTED_MODULE_17__["getServer"])(ip);
- if (server == null){
- workerScript.scriptRef.log("hasRootAccess() failed. Invalid IP or hostname passed in: " + ip);
- throw Object(_NetscriptEvaluator_js__WEBPACK_IMPORTED_MODULE_24__["makeRuntimeRejectMsg"])(workerScript, "hasRootAccess() failed. Invalid IP or hostname passed in: " + ip);
- }
- return server.hasAdminRights;
- },
- getIp : function() {
- if (workerScript.checkingRam) {
- if (workerScript.loadedFns.getIp) {
- return 0;
- } else {
- workerScript.loadedFns.getIp = true;
- return _Constants_js__WEBPACK_IMPORTED_MODULE_6__["CONSTANTS"].ScriptGetHostnameRamCost;
- }
- }
- var scriptServer = Object(_Server_js__WEBPACK_IMPORTED_MODULE_17__["getServer"])(workerScript.serverIp);
- if (scriptServer == null) {
- throw Object(_NetscriptEvaluator_js__WEBPACK_IMPORTED_MODULE_24__["makeRuntimeRejectMsg"])(workerScript, "Could not find server. This is a bug in the game. Report to game dev");
- }
- return scriptServer.ip;
- },
- getHostname : function(){
- if (workerScript.checkingRam) {
- if (workerScript.loadedFns.getHostname) {
- return 0;
- } else {
- workerScript.loadedFns.getHostname = true;
- return _Constants_js__WEBPACK_IMPORTED_MODULE_6__["CONSTANTS"].ScriptGetHostnameRamCost;
- }
- }
- var scriptServer = Object(_Server_js__WEBPACK_IMPORTED_MODULE_17__["getServer"])(workerScript.serverIp);
- if (scriptServer == null) {
- throw Object(_NetscriptEvaluator_js__WEBPACK_IMPORTED_MODULE_24__["makeRuntimeRejectMsg"])(workerScript, "Could not find server. This is a bug in the game. Report to game dev");
- }
- return scriptServer.hostname;
- },
- getHackingLevel : function(){
- if (workerScript.checkingRam) {
- if (workerScript.loadedFns.getHackingLevel) {
- return 0;
- } else {
- workerScript.loadedFns.getHackingLevel = true;
- return _Constants_js__WEBPACK_IMPORTED_MODULE_6__["CONSTANTS"].ScriptGetHackingLevelRamCost;
- }
- }
- _Player_js__WEBPACK_IMPORTED_MODULE_15__["Player"].updateSkillLevels();
- if (workerScript.disableLogs.ALL == null && workerScript.disableLogs.getHackingLevel == null) {
- workerScript.scriptRef.log("getHackingLevel() returned " + _Player_js__WEBPACK_IMPORTED_MODULE_15__["Player"].hacking_skill);
- }
- return _Player_js__WEBPACK_IMPORTED_MODULE_15__["Player"].hacking_skill;
- },
- getHackingMultipliers : function() {
- if (workerScript.checkingRam) {
- if (workerScript.loadedFns.getHackingMultipliers) {
- return 0;
- } else {
- workerScript.loadedFns.getHackingMultipliers = true;
- return _Constants_js__WEBPACK_IMPORTED_MODULE_6__["CONSTANTS"].ScriptGetMultipliersRamCost;
- }
- }
- return {
- chance: _Player_js__WEBPACK_IMPORTED_MODULE_15__["Player"].hacking_chance_mult,
- speed: _Player_js__WEBPACK_IMPORTED_MODULE_15__["Player"].hacking_speed_mult,
- money: _Player_js__WEBPACK_IMPORTED_MODULE_15__["Player"].hacking_money_mult,
- growth: _Player_js__WEBPACK_IMPORTED_MODULE_15__["Player"].hacking_grow_mult,
- };
- },
- getHacknetMultipliers : function() {
- if (workerScript.checkingRam) {
- if (workerScript.loadedFns.getHacknetMultipliers) {
- return 0;
- } else {
- workerScript.loadedFns.getHacknetMultipliers = true;
- return _Constants_js__WEBPACK_IMPORTED_MODULE_6__["CONSTANTS"].ScriptGetMultipliersRamCost;
- }
- }
- return {
- production: _Player_js__WEBPACK_IMPORTED_MODULE_15__["Player"].hacknet_node_money_mult,
- purchaseCost: _Player_js__WEBPACK_IMPORTED_MODULE_15__["Player"].hacknet_node_purchase_cost_mult,
- ramCost: _Player_js__WEBPACK_IMPORTED_MODULE_15__["Player"].hacknet_node_ram_cost_mult,
- coreCost: _Player_js__WEBPACK_IMPORTED_MODULE_15__["Player"].hacknet_node_core_cost_mult,
- levelCost: _Player_js__WEBPACK_IMPORTED_MODULE_15__["Player"].hacknet_node_level_cost_mult,
- };
- },
- getBitNodeMultipliers: function() {
- if (workerScript.checkingRam) {
- if (workerScript.loadedFns.getBitNodeMultipliers) {
- return 0;
- } else {
- workerScript.loadedFns.getBitNodeMultipliers = true;
- return _Constants_js__WEBPACK_IMPORTED_MODULE_6__["CONSTANTS"].ScriptGetMultipliersRamCost;
- }
- }
- if (!hasAISF) {
- throw Object(_NetscriptEvaluator_js__WEBPACK_IMPORTED_MODULE_24__["makeRuntimeRejectMsg"])(workerScript, "Cannot run getBitNodeMultipliers(). It requires Source-File 5 to run.");
- }
- return _BitNode_js__WEBPACK_IMPORTED_MODULE_2__["BitNodeMultipliers"];
- },
- getServerMoneyAvailable : function(ip){
- if (workerScript.checkingRam) {
- if (workerScript.loadedFns.getServerMoneyAvailable) {
- return 0;
- } else {
- workerScript.loadedFns.getServerMoneyAvailable = true;
- return _Constants_js__WEBPACK_IMPORTED_MODULE_6__["CONSTANTS"].ScriptGetServerRamCost;
- }
- }
- var server = Object(_Server_js__WEBPACK_IMPORTED_MODULE_17__["getServer"])(ip);
- if (server == null) {
- workerScript.scriptRef.log("getServerMoneyAvailable() failed. Invalid IP or hostname passed in: " + ip);
- throw Object(_NetscriptEvaluator_js__WEBPACK_IMPORTED_MODULE_24__["makeRuntimeRejectMsg"])(workerScript, "getServerMoneyAvailable() failed. Invalid IP or hostname passed in: " + ip);
- }
- if (server.hostname == "home") {
- //Return player's money
- if (workerScript.disableLogs.ALL == null && workerScript.disableLogs.getServerMoneyAvailable == null) {
- workerScript.scriptRef.log("getServerMoneyAvailable('home') returned player's money: $" + Object(_utils_StringHelperFunctions_js__WEBPACK_IMPORTED_MODULE_31__["formatNumber"])(_Player_js__WEBPACK_IMPORTED_MODULE_15__["Player"].money.toNumber(), 2));
- }
- return _Player_js__WEBPACK_IMPORTED_MODULE_15__["Player"].money.toNumber();
- }
- if (workerScript.disableLogs.ALL == null && workerScript.disableLogs.getServerMoneyAvailable == null) {
- workerScript.scriptRef.log("getServerMoneyAvailable() returned " + Object(_utils_StringHelperFunctions_js__WEBPACK_IMPORTED_MODULE_31__["formatNumber"])(server.moneyAvailable, 2) + " for " + server.hostname);
- }
- return server.moneyAvailable;
- },
- getServerSecurityLevel : function(ip){
- if (workerScript.checkingRam) {
- if (workerScript.loadedFns.getServerSecurityLevel) {
- return 0;
- } else {
- workerScript.loadedFns.getServerSecurityLevel = true;
- return _Constants_js__WEBPACK_IMPORTED_MODULE_6__["CONSTANTS"].ScriptGetServerRamCost;
- }
- }
- var server = Object(_Server_js__WEBPACK_IMPORTED_MODULE_17__["getServer"])(ip);
- if (server == null) {
- workerScript.scriptRef.log("getServerSecurityLevel() failed. Invalid IP or hostname passed in: " + ip);
- throw Object(_NetscriptEvaluator_js__WEBPACK_IMPORTED_MODULE_24__["makeRuntimeRejectMsg"])(workerScript, "getServerSecurityLevel() failed. Invalid IP or hostname passed in: " + ip);
- }
- if (workerScript.disableLogs.ALL == null && workerScript.disableLogs.getServerSecurityLevel == null) {
- workerScript.scriptRef.log("getServerSecurityLevel() returned " + Object(_utils_StringHelperFunctions_js__WEBPACK_IMPORTED_MODULE_31__["formatNumber"])(server.hackDifficulty, 3) + " for " + server.hostname);
- }
- return server.hackDifficulty;
- },
- getServerBaseSecurityLevel : function(ip){
- if (workerScript.checkingRam) {
- if (workerScript.loadedFns.getServerBaseSecurityLevel) {
- return 0;
- } else {
- workerScript.loadedFns.getServerBaseSecurityLevel = true;
- return _Constants_js__WEBPACK_IMPORTED_MODULE_6__["CONSTANTS"].ScriptGetServerRamCost;
- }
- }
- var server = Object(_Server_js__WEBPACK_IMPORTED_MODULE_17__["getServer"])(ip);
- if (server == null) {
- workerScript.scriptRef.log("getServerBaseSecurityLevel() failed. Invalid IP or hostname passed in: " + ip);
- throw Object(_NetscriptEvaluator_js__WEBPACK_IMPORTED_MODULE_24__["makeRuntimeRejectMsg"])(workerScript, "getServerBaseSecurityLevel() failed. Invalid IP or hostname passed in: " + ip);
- }
- if (workerScript.disableLogs.ALL == null && workerScript.disableLogs.getServerBaseSecurityLevel == null) {
- workerScript.scriptRef.log("getServerBaseSecurityLevel() returned " + Object(_utils_StringHelperFunctions_js__WEBPACK_IMPORTED_MODULE_31__["formatNumber"])(server.baseDifficulty, 3) + " for " + server.hostname);
- }
- return server.baseDifficulty;
- },
- getServerMinSecurityLevel : function(ip) {
- if (workerScript.checkingRam) {
- if (workerScript.loadedFns.getServerMinSecurityLevel) {
- return 0;
- } else {
- workerScript.loadedFns.getServerMinSecurityLevel = true;
- return _Constants_js__WEBPACK_IMPORTED_MODULE_6__["CONSTANTS"].ScriptGetServerRamCost;
- }
- }
- var server = Object(_Server_js__WEBPACK_IMPORTED_MODULE_17__["getServer"])(ip);
- if (server == null) {
- workerScript.scriptRef.log("getServerMinSecurityLevel() failed. Invalid IP or hostname passed in: " + ip);
- throw Object(_NetscriptEvaluator_js__WEBPACK_IMPORTED_MODULE_24__["makeRuntimeRejectMsg"])(workerScript, "getServerMinSecurityLevel() failed. Invalid IP or hostname passed in: " + ip);
- }
- if (workerScript.disableLogs.ALL == null && workerScript.disableLogs.getServerMinSecurityLevel == null) {
- workerScript.scriptRef.log("getServerMinSecurityLevel() returned " + Object(_utils_StringHelperFunctions_js__WEBPACK_IMPORTED_MODULE_31__["formatNumber"])(server.minDifficulty, 3) + " for " + server.hostname);
- }
- return server.minDifficulty;
- },
- getServerRequiredHackingLevel : function(ip) {
- if (workerScript.checkingRam) {
- if (workerScript.loadedFns.getServerRequiredHackingLevel) {
- return 0;
- } else {
- workerScript.loadedFns.getServerRequiredHackingLevel = true;
- return _Constants_js__WEBPACK_IMPORTED_MODULE_6__["CONSTANTS"].ScriptGetServerRamCost;
- }
- }
- var server = Object(_Server_js__WEBPACK_IMPORTED_MODULE_17__["getServer"])(ip);
- if (server == null) {
- workerScript.scriptRef.log("getServerRequiredHackingLevel() failed. Invalid IP or hostname passed in: " + ip);
- throw Object(_NetscriptEvaluator_js__WEBPACK_IMPORTED_MODULE_24__["makeRuntimeRejectMsg"])(workerScript, "getServerRequiredHackingLevel() failed. Invalid IP or hostname passed in: " + ip);
- }
- if (workerScript.disableLogs.ALL == null && workerScript.disableLogs.getServerRequiredHackingLevel == null) {
- workerScript.scriptRef.log("getServerRequiredHackingLevel returned " + Object(_utils_StringHelperFunctions_js__WEBPACK_IMPORTED_MODULE_31__["formatNumber"])(server.requiredHackingSkill, 0) + " for " + server.hostname);
- }
- return server.requiredHackingSkill;
- },
- getServerMaxMoney : function(ip){
- if (workerScript.checkingRam) {
- if (workerScript.loadedFns.getServerMaxMoney) {
- return 0;
- } else {
- workerScript.loadedFns.getServerMaxMoney = true;
- return _Constants_js__WEBPACK_IMPORTED_MODULE_6__["CONSTANTS"].ScriptGetServerRamCost;
- }
- }
- var server = Object(_Server_js__WEBPACK_IMPORTED_MODULE_17__["getServer"])(ip);
- if (server == null) {
- workerScript.scriptRef.log("getServerMaxMoney() failed. Invalid IP or hostname passed in: " + ip);
- throw Object(_NetscriptEvaluator_js__WEBPACK_IMPORTED_MODULE_24__["makeRuntimeRejectMsg"])(workerScript, "getServerMaxMoney() failed. Invalid IP or hostname passed in: " + ip);
- }
- if (workerScript.disableLogs.ALL == null && workerScript.disableLogs.getServerMaxMoney == null) {
- workerScript.scriptRef.log("getServerMaxMoney() returned " + Object(_utils_StringHelperFunctions_js__WEBPACK_IMPORTED_MODULE_31__["formatNumber"])(server.moneyMax, 0) + " for " + server.hostname);
- }
- return server.moneyMax;
- },
- getServerGrowth : function(ip) {
- if (workerScript.checkingRam) {
- if (workerScript.loadedFns.getServerGrowth) {
- return 0;
- } else {
- workerScript.loadedFns.getServerGrowth = true;
- return _Constants_js__WEBPACK_IMPORTED_MODULE_6__["CONSTANTS"].ScriptGetServerRamCost;
- }
- }
- var server = Object(_Server_js__WEBPACK_IMPORTED_MODULE_17__["getServer"])(ip);
- if (server == null) {
- workerScript.scriptRef.log("getServerGrowth() failed. Invalid IP or hostname passed in: " + ip);
- throw Object(_NetscriptEvaluator_js__WEBPACK_IMPORTED_MODULE_24__["makeRuntimeRejectMsg"])(workerScript, "getServerGrowth() failed. Invalid IP or hostname passed in: " + ip);
- }
- if (workerScript.disableLogs.ALL == null && workerScript.disableLogs.getServerGrowth == null) {
- workerScript.scriptRef.log("getServerGrowth() returned " + Object(_utils_StringHelperFunctions_js__WEBPACK_IMPORTED_MODULE_31__["formatNumber"])(server.serverGrowth, 0) + " for " + server.hostname);
- }
- return server.serverGrowth;
- },
- getServerNumPortsRequired : function(ip) {
- if (workerScript.checkingRam) {
- if (workerScript.loadedFns.getServerNumPortsRequired) {
- return 0;
- } else {
- workerScript.loadedFns.getServerNumPortsRequired = true;
- return _Constants_js__WEBPACK_IMPORTED_MODULE_6__["CONSTANTS"].ScriptGetServerRamCost;
- }
- }
- var server = Object(_Server_js__WEBPACK_IMPORTED_MODULE_17__["getServer"])(ip);
- if (server == null) {
- workerScript.scriptRef.log("getServerNumPortsRequired() failed. Invalid IP or hostname passed in: " + ip);
- throw Object(_NetscriptEvaluator_js__WEBPACK_IMPORTED_MODULE_24__["makeRuntimeRejectMsg"])(workerScript, "getServerNumPortsRequired() failed. Invalid IP or hostname passed in: " + ip);
- }
- if (workerScript.disableLogs.ALL == null && workerScript.disableLogs.getServerNumPortsRequired == null) {
- workerScript.scriptRef.log("getServerNumPortsRequired() returned " + Object(_utils_StringHelperFunctions_js__WEBPACK_IMPORTED_MODULE_31__["formatNumber"])(server.numOpenPortsRequired, 0) + " for " + server.hostname);
- }
- return server.numOpenPortsRequired;
- },
- getServerRam : function(ip) {
- if (workerScript.checkingRam) {
- if (workerScript.loadedFns.getServerRam) {
- return 0;
- } else {
- workerScript.loadedFns.getServerRam = true;
- return _Constants_js__WEBPACK_IMPORTED_MODULE_6__["CONSTANTS"].ScriptGetServerRamCost;
- }
- }
- var server = Object(_Server_js__WEBPACK_IMPORTED_MODULE_17__["getServer"])(ip);
- if (server == null) {
- workerScript.scriptRef.log("getServerRam() failed. Invalid IP or hostname passed in: " + ip);
- throw Object(_NetscriptEvaluator_js__WEBPACK_IMPORTED_MODULE_24__["makeRuntimeRejectMsg"])(workerScript, "getServerRam() failed. Invalid IP or hostname passed in: " + ip);
- }
- if (workerScript.disableLogs.ALL == null && workerScript.disableLogs.getServerRam == null) {
- workerScript.scriptRef.log("getServerRam() returned [" + Object(_utils_StringHelperFunctions_js__WEBPACK_IMPORTED_MODULE_31__["formatNumber"])(server.maxRam, 2) + "GB, " + Object(_utils_StringHelperFunctions_js__WEBPACK_IMPORTED_MODULE_31__["formatNumber"])(server.ramUsed, 2) + "GB]");
- }
- return [server.maxRam, server.ramUsed];
- },
- serverExists : function(ip) {
- if (workerScript.checkingRam) {
- if (workerScript.loadedFns.serverExists) {
- return 0;
- } else {
- workerScript.loadedFns.serverExists = true;
- return _Constants_js__WEBPACK_IMPORTED_MODULE_6__["CONSTANTS"].ScriptGetServerRamCost;
- }
- }
- return (Object(_Server_js__WEBPACK_IMPORTED_MODULE_17__["getServer"])(ip) !== null);
- },
- fileExists : function(filename,ip=workerScript.serverIp) {
- if (workerScript.checkingRam) {
- if (workerScript.loadedFns.fileExists) {
- return 0;
- } else {
- workerScript.loadedFns.fileExists = true;
- return _Constants_js__WEBPACK_IMPORTED_MODULE_6__["CONSTANTS"].ScriptFileExistsRamCost;
- }
- }
- if (filename === undefined) {
- throw Object(_NetscriptEvaluator_js__WEBPACK_IMPORTED_MODULE_24__["makeRuntimeRejectMsg"])(workerScript, "fileExists() call has incorrect number of arguments. Usage: fileExists(scriptname, [server])");
- }
- var server = Object(_Server_js__WEBPACK_IMPORTED_MODULE_17__["getServer"])(ip);
- if (server == null) {
- workerScript.scriptRef.log("fileExists() failed. Invalid IP or hostname passed in: " + ip);
- throw Object(_NetscriptEvaluator_js__WEBPACK_IMPORTED_MODULE_24__["makeRuntimeRejectMsg"])(workerScript, "fileExists() failed. Invalid IP or hostname passed in: " + ip);
- }
- for (var i = 0; i < server.scripts.length; ++i) {
- if (filename == server.scripts[i].filename) {
- return true;
- }
- }
- for (var i = 0; i < server.programs.length; ++i) {
- if (filename.toLowerCase() == server.programs[i].toLowerCase()) {
- return true;
- }
- }
- for (var i = 0; i < server.messages.length; ++i) {
- if (!(server.messages[i] instanceof _Message_js__WEBPACK_IMPORTED_MODULE_13__["Message"]) &&
- filename.toLowerCase() === server.messages[i]) {
- return true;
- }
- }
- var txtFile = Object(_TextFile_js__WEBPACK_IMPORTED_MODULE_22__["getTextFile"])(filename, server);
- if (txtFile != null) {
- return true;
- }
- return false;
- },
- isRunning : function(filename,ip) {
- if (workerScript.checkingRam) {
- if (workerScript.loadedFns.isRunning) {
- return 0;
- } else {
- workerScript.loadedFns.isRunning = true;
- return _Constants_js__WEBPACK_IMPORTED_MODULE_6__["CONSTANTS"].ScriptIsRunningRamCost;
- }
- }
- if (filename === undefined || ip === undefined) {
- throw Object(_NetscriptEvaluator_js__WEBPACK_IMPORTED_MODULE_24__["makeRuntimeRejectMsg"])(workerScript, "isRunning() call has incorrect number of arguments. Usage: isRunning(scriptname, server, [arg1], [arg2]...)");
- }
- var server = Object(_Server_js__WEBPACK_IMPORTED_MODULE_17__["getServer"])(ip);
- if (server == null) {
- workerScript.scriptRef.log("isRunning() failed. Invalid IP or hostname passed in: " + ip);
- throw Object(_NetscriptEvaluator_js__WEBPACK_IMPORTED_MODULE_24__["makeRuntimeRejectMsg"])(workerScript, "isRunning() failed. Invalid IP or hostname passed in: " + ip);
- }
- var argsForTargetScript = [];
- for (var i = 2; i < arguments.length; ++i) {
- argsForTargetScript.push(arguments[i]);
- }
- return (Object(_Script_js__WEBPACK_IMPORTED_MODULE_16__["findRunningScript"])(filename, argsForTargetScript, server) != null);
- },
- getNextHacknetNodeCost : function() {
- if (workerScript.checkingRam) {
- if (workerScript.loadedFns.getNextHacknetNodeCost) {
- return 0;
- } else {
- workerScript.loadedFns.getNextHacknetNodeCost = true;
- return _Constants_js__WEBPACK_IMPORTED_MODULE_6__["CONSTANTS"].ScriptPurchaseHacknetRamCost;
- }
- }
- return Object(_HacknetNode_js__WEBPACK_IMPORTED_MODULE_11__["getCostOfNextHacknetNode"])();
- },
-
- purchaseHacknetNode : function() {
- if (workerScript.checkingRam) {
- if (workerScript.loadedFns.purchaseHacknetNode) {
- return 0;
- } else {
- workerScript.loadedFns.purchaseHacknetNode = true;
- return _Constants_js__WEBPACK_IMPORTED_MODULE_6__["CONSTANTS"].ScriptPurchaseHacknetRamCost;
- }
- }
- return Object(_HacknetNode_js__WEBPACK_IMPORTED_MODULE_11__["purchaseHacknet"])();
- },
- getStockPrice : function(symbol) {
- if (workerScript.checkingRam) {
- if (workerScript.loadedFns.getStockPrice) {
- return 0;
- } else {
- workerScript.loadedFns.getStockPrice = true;
- return _Constants_js__WEBPACK_IMPORTED_MODULE_6__["CONSTANTS"].ScriptGetStockRamCost;
- }
- }
- if (!_Player_js__WEBPACK_IMPORTED_MODULE_15__["Player"].hasTixApiAccess) {
- throw Object(_NetscriptEvaluator_js__WEBPACK_IMPORTED_MODULE_24__["makeRuntimeRejectMsg"])(workerScript, "You don't have TIX API Access! Cannot use getStockPrice()");
- }
- var stock = _StockMarket_js__WEBPACK_IMPORTED_MODULE_20__["SymbolToStockMap"][symbol];
- if (stock == null) {
- throw Object(_NetscriptEvaluator_js__WEBPACK_IMPORTED_MODULE_24__["makeRuntimeRejectMsg"])(workerScript, "Invalid stock symbol passed into getStockPrice()");
- }
- return parseFloat(stock.price.toFixed(3));
- },
- getStockPosition : function(symbol) {
- if (workerScript.checkingRam) {
- if (workerScript.loadedFns.getStockPosition) {
- return 0;
- } else {
- workerScript.loadedFns.getStockPosition = true;
- return _Constants_js__WEBPACK_IMPORTED_MODULE_6__["CONSTANTS"].ScriptGetStockRamCost;
- }
- }
- if (!_Player_js__WEBPACK_IMPORTED_MODULE_15__["Player"].hasTixApiAccess) {
- throw Object(_NetscriptEvaluator_js__WEBPACK_IMPORTED_MODULE_24__["makeRuntimeRejectMsg"])(workerScript, "You don't have TIX API Access! Cannot use getStockPosition()");
- }
- var stock = _StockMarket_js__WEBPACK_IMPORTED_MODULE_20__["SymbolToStockMap"][symbol];
- if (stock == null) {
- throw Object(_NetscriptEvaluator_js__WEBPACK_IMPORTED_MODULE_24__["makeRuntimeRejectMsg"])(workerScript, "Invalid stock symbol passed into getStockPosition()");
- }
- return [stock.playerShares, stock.playerAvgPx, stock.playerShortShares, stock.playerAvgShortPx];
- },
- buyStock : function(symbol, shares) {
- if (workerScript.checkingRam) {
- if (workerScript.loadedFns.buyStock) {
- return 0;
- } else {
- workerScript.loadedFns.buyStock = true;
- return _Constants_js__WEBPACK_IMPORTED_MODULE_6__["CONSTANTS"].ScriptBuySellStockRamCost;
- }
- }
- if (!_Player_js__WEBPACK_IMPORTED_MODULE_15__["Player"].hasTixApiAccess) {
- throw Object(_NetscriptEvaluator_js__WEBPACK_IMPORTED_MODULE_24__["makeRuntimeRejectMsg"])(workerScript, "You don't have TIX API Access! Cannot use buyStock()");
- }
- var stock = _StockMarket_js__WEBPACK_IMPORTED_MODULE_20__["SymbolToStockMap"][symbol];
- if (stock == null) {
- throw Object(_NetscriptEvaluator_js__WEBPACK_IMPORTED_MODULE_24__["makeRuntimeRejectMsg"])(workerScript, "Invalid stock symbol passed into buyStock()");
- }
- if (shares < 0 || isNaN(shares)) {
- workerScript.scriptRef.log("Error: Invalid 'shares' argument passed to buyStock()");
- return 0;
- }
- shares = Math.round(shares);
- if (shares === 0) {return 0;}
-
- var totalPrice = stock.price * shares;
- if (_Player_js__WEBPACK_IMPORTED_MODULE_15__["Player"].money.lt(totalPrice + _Constants_js__WEBPACK_IMPORTED_MODULE_6__["CONSTANTS"].StockMarketCommission)) {
- workerScript.scriptRef.log("Not enough money to purchase " + Object(_utils_StringHelperFunctions_js__WEBPACK_IMPORTED_MODULE_31__["formatNumber"])(shares, 0) + " shares of " +
- symbol + ". Need $" +
- Object(_utils_StringHelperFunctions_js__WEBPACK_IMPORTED_MODULE_31__["formatNumber"])(totalPrice + _Constants_js__WEBPACK_IMPORTED_MODULE_6__["CONSTANTS"].StockMarketCommission, 2).toString());
- return 0;
- }
-
- var origTotal = stock.playerShares * stock.playerAvgPx;
- _Player_js__WEBPACK_IMPORTED_MODULE_15__["Player"].loseMoney(totalPrice + _Constants_js__WEBPACK_IMPORTED_MODULE_6__["CONSTANTS"].StockMarketCommission);
- var newTotal = origTotal + totalPrice;
- stock.playerShares += shares;
- stock.playerAvgPx = newTotal / stock.playerShares;
- if (_engine_js__WEBPACK_IMPORTED_MODULE_9__["Engine"].currentPage == _engine_js__WEBPACK_IMPORTED_MODULE_9__["Engine"].Page.StockMarket) {
- Object(_StockMarket_js__WEBPACK_IMPORTED_MODULE_20__["updateStockPlayerPosition"])(stock);
- }
- if (workerScript.disableLogs.ALL == null && workerScript.disableLogs.buyStock == null) {
- workerScript.scriptRef.log("Bought " + Object(_utils_StringHelperFunctions_js__WEBPACK_IMPORTED_MODULE_31__["formatNumber"])(shares, 0) + " shares of " + stock.symbol + " at $" +
- Object(_utils_StringHelperFunctions_js__WEBPACK_IMPORTED_MODULE_31__["formatNumber"])(stock.price, 2) + " per share");
- }
- return stock.price;
- },
- sellStock : function(symbol, shares) {
- if (workerScript.checkingRam) {
- if (workerScript.loadedFns.sellStock) {
- return 0;
- } else {
- workerScript.loadedFns.sellStock = true;
- return _Constants_js__WEBPACK_IMPORTED_MODULE_6__["CONSTANTS"].ScriptBuySellStockRamCost;
- }
- }
- if (!_Player_js__WEBPACK_IMPORTED_MODULE_15__["Player"].hasTixApiAccess) {
- throw Object(_NetscriptEvaluator_js__WEBPACK_IMPORTED_MODULE_24__["makeRuntimeRejectMsg"])(workerScript, "You don't have TIX API Access! Cannot use sellStock()");
- }
- var stock = _StockMarket_js__WEBPACK_IMPORTED_MODULE_20__["SymbolToStockMap"][symbol];
- if (stock == null) {
- throw Object(_NetscriptEvaluator_js__WEBPACK_IMPORTED_MODULE_24__["makeRuntimeRejectMsg"])(workerScript, "Invalid stock symbol passed into sellStock()");
- }
- if (shares < 0 || isNaN(shares)) {
- workerScript.scriptRef.log("Error: Invalid 'shares' argument passed to sellStock()");
- return 0;
- }
- shares = Math.round(shares);
- if (shares > stock.playerShares) {shares = stock.playerShares;}
- if (shares === 0) {return 0;}
- var gains = stock.price * shares - _Constants_js__WEBPACK_IMPORTED_MODULE_6__["CONSTANTS"].StockMarketCommission;
- _Player_js__WEBPACK_IMPORTED_MODULE_15__["Player"].gainMoney(gains);
-
- //Calculate net profit and add to script stats
- var netProfit = ((stock.price - stock.playerAvgPx) * shares) - _Constants_js__WEBPACK_IMPORTED_MODULE_6__["CONSTANTS"].StockMarketCommission;
- if (isNaN(netProfit)) {netProfit = 0;}
- workerScript.scriptRef.onlineMoneyMade += netProfit;
- _Player_js__WEBPACK_IMPORTED_MODULE_15__["Player"].scriptProdSinceLastAug += netProfit;
-
- stock.playerShares -= shares;
- if (stock.playerShares == 0) {
- stock.playerAvgPx = 0;
- }
- if (_engine_js__WEBPACK_IMPORTED_MODULE_9__["Engine"].currentPage == _engine_js__WEBPACK_IMPORTED_MODULE_9__["Engine"].Page.StockMarket) {
- Object(_StockMarket_js__WEBPACK_IMPORTED_MODULE_20__["updateStockPlayerPosition"])(stock);
- }
- if (workerScript.disableLogs.ALL == null && workerScript.disableLogs.sellStock == null) {
- workerScript.scriptRef.log("Sold " + Object(_utils_StringHelperFunctions_js__WEBPACK_IMPORTED_MODULE_31__["formatNumber"])(shares, 0) + " shares of " + stock.symbol + " at $" +
- Object(_utils_StringHelperFunctions_js__WEBPACK_IMPORTED_MODULE_31__["formatNumber"])(stock.price, 2) + " per share. Gained " +
- "$" + Object(_utils_StringHelperFunctions_js__WEBPACK_IMPORTED_MODULE_31__["formatNumber"])(gains, 2));
- }
- return stock.price;
- },
- shortStock(symbol, shares) {
- if (workerScript.checkingRam) {
- if (workerScript.loadedFns.shortStock) {
- return 0;
- } else {
- workerScript.loadedFns.shortStock = true;
- return _Constants_js__WEBPACK_IMPORTED_MODULE_6__["CONSTANTS"].ScriptBuySellStockRamCost;
- }
- }
- if (!_Player_js__WEBPACK_IMPORTED_MODULE_15__["Player"].hasTixApiAccess) {
- throw Object(_NetscriptEvaluator_js__WEBPACK_IMPORTED_MODULE_24__["makeRuntimeRejectMsg"])(workerScript, "You don't have TIX API Access! Cannot use shortStock()");
- }
- if (_Player_js__WEBPACK_IMPORTED_MODULE_15__["Player"].bitNodeN !== 8) {
- if (!(hasWallStreetSF && wallStreetSFLvl >= 2)) {
- throw Object(_NetscriptEvaluator_js__WEBPACK_IMPORTED_MODULE_24__["makeRuntimeRejectMsg"])(workerScript, "ERROR: Cannot use shortStock(). You must either be in BitNode-8 or you must have Level 2 of Source-File 8");
- }
- }
- var stock = _StockMarket_js__WEBPACK_IMPORTED_MODULE_20__["SymbolToStockMap"][symbol];
- if (stock == null) {
- throw Object(_NetscriptEvaluator_js__WEBPACK_IMPORTED_MODULE_24__["makeRuntimeRejectMsg"])(workerScript, "ERROR: Invalid stock symbol passed into shortStock()");
- }
- var res = Object(_StockMarket_js__WEBPACK_IMPORTED_MODULE_20__["shortStock"])(stock, shares, workerScript);
- return res ? stock.price : 0;
- },
- sellShort(symbol, shares) {
- if (workerScript.checkingRam) {
- if (workerScript.loadedFns.sellShort) {
- return 0;
- } else {
- workerScript.loadedFns.sellShort = true;
- return _Constants_js__WEBPACK_IMPORTED_MODULE_6__["CONSTANTS"].ScriptBuySellStockRamCost;
- }
- }
- if (!_Player_js__WEBPACK_IMPORTED_MODULE_15__["Player"].hasTixApiAccess) {
- throw Object(_NetscriptEvaluator_js__WEBPACK_IMPORTED_MODULE_24__["makeRuntimeRejectMsg"])(workerScript, "You don't have TIX API Access! Cannot use sellShort()");
- }
- if (_Player_js__WEBPACK_IMPORTED_MODULE_15__["Player"].bitNodeN !== 8) {
- if (!(hasWallStreetSF && wallStreetSFLvl >= 2)) {
- throw Object(_NetscriptEvaluator_js__WEBPACK_IMPORTED_MODULE_24__["makeRuntimeRejectMsg"])(workerScript, "ERROR: Cannot use sellShort(). You must either be in BitNode-8 or you must have Level 2 of Source-File 8");
- }
- }
- var stock = _StockMarket_js__WEBPACK_IMPORTED_MODULE_20__["SymbolToStockMap"][symbol];
- if (stock == null) {
- throw Object(_NetscriptEvaluator_js__WEBPACK_IMPORTED_MODULE_24__["makeRuntimeRejectMsg"])(workerScript, "ERROR: Invalid stock symbol passed into sellShort()");
- }
- var res = Object(_StockMarket_js__WEBPACK_IMPORTED_MODULE_20__["sellShort"])(stock, shares, workerScript);
- return res ? stock.price : 0;
- },
- placeOrder(symbol, shares, price, type, pos) {
- if (workerScript.checkingRam) {
- if (workerScript.loadedFns.placeOrder) {
- return 0;
- } else {
- workerScript.loadedFns.placeOrder = true;
- return _Constants_js__WEBPACK_IMPORTED_MODULE_6__["CONSTANTS"].ScriptBuySellStockRamCost;
- }
- }
- if (!_Player_js__WEBPACK_IMPORTED_MODULE_15__["Player"].hasTixApiAccess) {
- throw Object(_NetscriptEvaluator_js__WEBPACK_IMPORTED_MODULE_24__["makeRuntimeRejectMsg"])(workerScript, "You don't have TIX API Access! Cannot use placeOrder()");
- }
- if (_Player_js__WEBPACK_IMPORTED_MODULE_15__["Player"].bitNodeN !== 8) {
- if (!(hasWallStreetSF && wallStreetSFLvl >= 3)) {
- throw Object(_NetscriptEvaluator_js__WEBPACK_IMPORTED_MODULE_24__["makeRuntimeRejectMsg"])(workerScript, "ERROR: Cannot use placeOrder(). You must either be in BitNode-8 or have Level 3 of Source-File 8");
- }
- }
- var stock = _StockMarket_js__WEBPACK_IMPORTED_MODULE_20__["SymbolToStockMap"][symbol];
- if (stock == null) {
- throw Object(_NetscriptEvaluator_js__WEBPACK_IMPORTED_MODULE_24__["makeRuntimeRejectMsg"])(workerScript, "ERROR: Invalid stock symbol passed into placeOrder()");
- }
- var orderType, orderPos;
- type = type.toLowerCase();
- if (type.includes("limit") && type.includes("buy")) {
- orderType = _StockMarket_js__WEBPACK_IMPORTED_MODULE_20__["OrderTypes"].LimitBuy;
- } else if (type.includes("limit") && type.includes("sell")) {
- orderType = _StockMarket_js__WEBPACK_IMPORTED_MODULE_20__["OrderTypes"].LimitSell;
- } else if (type.includes("stop") && type.includes("buy")) {
- orderType = _StockMarket_js__WEBPACK_IMPORTED_MODULE_20__["OrderTypes"].StopBuy;
- } else if (type.includes("stop") && type.includes("sell")) {
- orderType = _StockMarket_js__WEBPACK_IMPORTED_MODULE_20__["OrderTypes"].StopSell;
- } else {
- throw Object(_NetscriptEvaluator_js__WEBPACK_IMPORTED_MODULE_24__["makeRuntimeRejectMsg"])(workerScript, "ERROR: Invalid Order Type passed into placeOrder()");
- }
-
- pos = pos.toLowerCase();
- if (pos.includes("l")) {
- orderPos = _StockMarket_js__WEBPACK_IMPORTED_MODULE_20__["PositionTypes"].Long;
- } else if (pos.includes('s')) {
- orderPos = _StockMarket_js__WEBPACK_IMPORTED_MODULE_20__["PositionTypes"].Short;
- } else {
- throw Object(_NetscriptEvaluator_js__WEBPACK_IMPORTED_MODULE_24__["makeRuntimeRejectMsg"])(workerScript, "ERROR: Invalid Position Type passed into placeOrder()");
- }
-
- return Object(_StockMarket_js__WEBPACK_IMPORTED_MODULE_20__["placeOrder"])(stock, shares, price, orderType, orderPos, workerScript);
- },
- cancelOrder(symbol, shares, price, type, pos) {
- if (workerScript.checkingRam) {
- if (workerScript.loadedFns.cancelOrder) {
- return 0;
- } else {
- workerScript.loadedFns.cancelOrder = true;
- return _Constants_js__WEBPACK_IMPORTED_MODULE_6__["CONSTANTS"].ScriptBuySellStockRamCost;
- }
- }
- if (!_Player_js__WEBPACK_IMPORTED_MODULE_15__["Player"].hasTixApiAccess) {
- throw Object(_NetscriptEvaluator_js__WEBPACK_IMPORTED_MODULE_24__["makeRuntimeRejectMsg"])(workerScript, "You don't have TIX API Access! Cannot use cancelOrder()");
- }
- if (_Player_js__WEBPACK_IMPORTED_MODULE_15__["Player"].bitNodeN !== 8) {
- if (!(hasWallStreetSF && wallStreetSFLvl >= 3)) {
- throw Object(_NetscriptEvaluator_js__WEBPACK_IMPORTED_MODULE_24__["makeRuntimeRejectMsg"])(workerScript, "ERROR: Cannot use cancelOrder(). You must either be in BitNode-8 or have Level 3 of Source-File 8");
- }
- }
- var stock = _StockMarket_js__WEBPACK_IMPORTED_MODULE_20__["SymbolToStockMap"][symbol];
- if (stock == null) {
- throw Object(_NetscriptEvaluator_js__WEBPACK_IMPORTED_MODULE_24__["makeRuntimeRejectMsg"])(workerScript, "ERROR: Invalid stock symbol passed into cancelOrder()");
- }
- if (isNaN(shares) || isNaN(price)) {
- throw Object(_NetscriptEvaluator_js__WEBPACK_IMPORTED_MODULE_24__["makeRuntimeRejectMsg"])(workerScript, "ERROR: Invalid shares or price argument passed into cancelOrder(). Must be numeric");
- }
- var orderType, orderPos;
- type = type.toLowerCase();
- if (type.includes("limit") && type.includes("buy")) {
- orderType = _StockMarket_js__WEBPACK_IMPORTED_MODULE_20__["OrderTypes"].LimitBuy;
- } else if (type.includes("limit") && type.includes("sell")) {
- orderType = _StockMarket_js__WEBPACK_IMPORTED_MODULE_20__["OrderTypes"].LimitSell;
- } else if (type.includes("stop") && type.includes("buy")) {
- orderType = _StockMarket_js__WEBPACK_IMPORTED_MODULE_20__["OrderTypes"].StopBuy;
- } else if (type.includes("stop") && type.includes("sell")) {
- orderType = _StockMarket_js__WEBPACK_IMPORTED_MODULE_20__["OrderTypes"].StopSell;
- } else {
- throw Object(_NetscriptEvaluator_js__WEBPACK_IMPORTED_MODULE_24__["makeRuntimeRejectMsg"])(workerScript, "ERROR: Invalid Order Type passed into placeOrder()");
- }
-
- pos = pos.toLowerCase();
- if (pos.includes("l")) {
- orderPos = _StockMarket_js__WEBPACK_IMPORTED_MODULE_20__["PositionTypes"].Long;
- } else if (pos.includes('s')) {
- orderPos = _StockMarket_js__WEBPACK_IMPORTED_MODULE_20__["PositionTypes"].Short;
- } else {
- throw Object(_NetscriptEvaluator_js__WEBPACK_IMPORTED_MODULE_24__["makeRuntimeRejectMsg"])(workerScript, "ERROR: Invalid Position Type passed into placeOrder()");
- }
- var params = {
- stock: stock,
- shares: shares,
- price: price,
- type: orderType,
- pos: orderPos
- };
- return Object(_StockMarket_js__WEBPACK_IMPORTED_MODULE_20__["cancelOrder"])(params, workerScript);
- },
- purchaseServer : function(hostname, ram) {
- if (workerScript.checkingRam) {
- if (workerScript.loadedFns.purchaseServer) {
- return 0;
- } else {
- workerScript.loadedFns.purchaseServer = true;
- return _Constants_js__WEBPACK_IMPORTED_MODULE_6__["CONSTANTS"].ScriptPurchaseServerRamCost;
- }
- }
- var hostnameStr = String(hostname);
- hostnameStr = hostnameStr.replace(/\s+/g, '');
- if (hostnameStr == "") {
- workerScript.scriptRef.log("Error: Passed empty string for hostname argument of purchaseServer()");
- return "";
- }
-
- if (_Player_js__WEBPACK_IMPORTED_MODULE_15__["Player"].purchasedServers.length >= _Constants_js__WEBPACK_IMPORTED_MODULE_6__["CONSTANTS"].PurchasedServerLimit) {
- workerScript.scriptRef.log("Error: You have reached the maximum limit of " + _Constants_js__WEBPACK_IMPORTED_MODULE_6__["CONSTANTS"].PurchasedServerLimit +
- " servers. You cannot purchase any more.");
- return "";
- }
-
- ram = Math.round(ram);
- if (isNaN(ram) || !Object(_utils_HelperFunctions_js__WEBPACK_IMPORTED_MODULE_29__["powerOfTwo"])(ram)) {
- workerScript.scriptRef.log("Error: purchaseServer() failed due to invalid ram argument. Must be numeric and a power of 2");
- return "";
- }
-
- if (ram > _Constants_js__WEBPACK_IMPORTED_MODULE_6__["CONSTANTS"].PurchasedServerMaxRam) {
- workerScript.scriptRef.log("Error: purchasedServer() failed because specified RAM was too high. Maximum RAM on a purchased server is " + _Constants_js__WEBPACK_IMPORTED_MODULE_6__["CONSTANTS"].PurchasedServerMaxRam + "GB");
- return "";
- }
-
- var cost = ram * _Constants_js__WEBPACK_IMPORTED_MODULE_6__["CONSTANTS"].BaseCostFor1GBOfRamServer;
- if (_Player_js__WEBPACK_IMPORTED_MODULE_15__["Player"].money.lt(cost)) {
- workerScript.scriptRef.log("Error: Not enough money to purchase server. Need $" + Object(_utils_StringHelperFunctions_js__WEBPACK_IMPORTED_MODULE_31__["formatNumber"])(cost, 2));
- return "";
- }
- var newServ = new _Server_js__WEBPACK_IMPORTED_MODULE_17__["Server"]({
- ip: Object(_utils_IPAddress_js__WEBPACK_IMPORTED_MODULE_30__["createRandomIp"])(),
- hostname: hostnameStr,
- organizationName: "",
- isConnectedTo: false,
- adminRights: true,
- purchasedByPlayer: true,
- maxRam: ram,
- });
- Object(_Server_js__WEBPACK_IMPORTED_MODULE_17__["AddToAllServers"])(newServ);
-
- _Player_js__WEBPACK_IMPORTED_MODULE_15__["Player"].purchasedServers.push(newServ.ip);
- var homeComputer = _Player_js__WEBPACK_IMPORTED_MODULE_15__["Player"].getHomeComputer();
- homeComputer.serversOnNetwork.push(newServ.ip);
- newServ.serversOnNetwork.push(homeComputer.ip);
- _Player_js__WEBPACK_IMPORTED_MODULE_15__["Player"].loseMoney(cost);
- if (workerScript.disableLogs.ALL == null && workerScript.disableLogs.purchaseServer == null) {
- workerScript.scriptRef.log("Purchased new server with hostname " + newServ.hostname + " for $" + Object(_utils_StringHelperFunctions_js__WEBPACK_IMPORTED_MODULE_31__["formatNumber"])(cost, 2));
- }
- return newServ.hostname;
- },
- deleteServer : function(hostname) {
- if (workerScript.checkingRam) {
- if (workerScript.loadedFns.deleteServer) {
- return 0;
- } else {
- workerScript.loadedFns.deleteServer = true;
- return _Constants_js__WEBPACK_IMPORTED_MODULE_6__["CONSTANTS"].ScriptPurchaseServerRamCost;
- }
- }
- var hostnameStr = String(hostname);
- hostnameStr = hostnameStr.replace(/\s\s+/g, '');
- var server = Object(_Server_js__WEBPACK_IMPORTED_MODULE_17__["GetServerByHostname"])(hostnameStr);
- if (server == null) {
- workerScript.scriptRef.log("Error: Could not find server with hostname " + hostnameStr + ". deleteServer() failed");
- return false;
- }
-
- if (!server.purchasedByPlayer || server.hostname === "home") {
- workerScript.scriptRef.log("Error: Server " + server.hostname + " is not a purchased server. " +
- "Cannot be deleted. deleteServer() failed");
- return false;
- }
-
- var ip = server.ip;
-
- //Can't delete server you're currently connected to
- if (server.isConnectedTo) {
- workerScript.scriptRef.log("Error: deleteServer() failed because you are currently connected to the server you are trying to delete");
- return false;
- }
-
- //A server cannot delete itself
- if (ip === workerScript.serverIp) {
- workerScript.scriptRef.log("Error: Cannot call deleteServer() on self. deleteServer() failed");
- return false;
- }
-
- //Delete all scripts running on server
- if (server.runningScripts.length > 0) {
- workerScript.scriptRef.log("Error: Cannot delete server " + server.hostname + " because it still has scripts running.");
- return false;
- }
-
- //Delete from player's purchasedServers array
- var found = false;
- for (var i = 0; i < _Player_js__WEBPACK_IMPORTED_MODULE_15__["Player"].purchasedServers.length; ++i) {
- if (ip == _Player_js__WEBPACK_IMPORTED_MODULE_15__["Player"].purchasedServers[i]) {
- found = true;
- _Player_js__WEBPACK_IMPORTED_MODULE_15__["Player"].purchasedServers.splice(i, 1);
- break;
- }
- }
-
- if (!found) {
- workerScript.scriptRef.log("Error: Could not identify server " + server.hostname +
- "as a purchased server. This is likely a bug please contact game dev");
- return false;
- }
-
- //Delete from all servers
- delete _Server_js__WEBPACK_IMPORTED_MODULE_17__["AllServers"][ip];
-
- //Delete from home computer
- found = false;
- var homeComputer = _Player_js__WEBPACK_IMPORTED_MODULE_15__["Player"].getHomeComputer();
- for (var i = 0; i < homeComputer.serversOnNetwork.length; ++i) {
- if (ip == homeComputer.serversOnNetwork[i]) {
- homeComputer.serversOnNetwork.splice(i, 1);
- if (workerScript.disableLogs.ALL == null && workerScript.disableLogs.deleteServer == null) {
- workerScript.scriptRef.log("Deleted server " + hostnameStr);
- }
- return true;
- }
- }
- //Wasn't found on home computer
- workerScript.scriptRef.log("Error: Could not find server " + server.hostname +
- "as a purchased server. This is likely a bug please contact game dev");
- return false;
- },
- getPurchasedServers : function(hostname=true) {
- if (workerScript.checkingRam) {
- if (workerScript.loadedFns.getPurchasedServers) {
- return 0;
- } else {
- workerScript.loadedFns.getPurchasedServers = true;
- return _Constants_js__WEBPACK_IMPORTED_MODULE_6__["CONSTANTS"].ScriptPurchaseServerRamCost;
- }
- }
- var res = [];
- _Player_js__WEBPACK_IMPORTED_MODULE_15__["Player"].purchasedServers.forEach(function(ip) {
- if (hostname) {
- var server = Object(_Server_js__WEBPACK_IMPORTED_MODULE_17__["getServer"])(ip);
- if (server == null) {
- throw Object(_NetscriptEvaluator_js__WEBPACK_IMPORTED_MODULE_24__["makeRuntimeRejectMsg"])(workerScript, "ERR: Could not find server in getPurchasedServers(). This is a bug please report to game dev");
- }
- res.push(server.hostname);
- } else {
- res.push(ip);
- }
- });
- return res;
- },
- write : function(port, data="", mode="a") {
- if (workerScript.checkingRam) {
- if (workerScript.loadedFns.write) {
- return 0;
- } else {
- workerScript.loadedFns.write = true;
- return _Constants_js__WEBPACK_IMPORTED_MODULE_6__["CONSTANTS"].ScriptReadWriteRamCost;
- }
- }
- if (!isNaN(port)) { //Write to port
- //Port 1-10
- port = Math.round(port);
- if (port < 1 || port > _Constants_js__WEBPACK_IMPORTED_MODULE_6__["CONSTANTS"].NumNetscriptPorts) {
- throw Object(_NetscriptEvaluator_js__WEBPACK_IMPORTED_MODULE_24__["makeRuntimeRejectMsg"])(workerScript, "ERR: Trying to write to invalid port: " + port + ". Only ports 1-" + _Constants_js__WEBPACK_IMPORTED_MODULE_6__["CONSTANTS"].NumNetscriptPorts + " are valid.");
- }
- var port = _NetscriptWorker_js__WEBPACK_IMPORTED_MODULE_23__["NetscriptPorts"][port-1];
- if (port == null || !(port instanceof _NetscriptPort_js__WEBPACK_IMPORTED_MODULE_26__["NetscriptPort"])) {
- throw Object(_NetscriptEvaluator_js__WEBPACK_IMPORTED_MODULE_24__["makeRuntimeRejectMsg"])(workerScript, "Could not find port: " + port + ". This is a bug contact the game developer");
- }
- return port.write(data);
- } else if (Object(_utils_StringHelperFunctions_js__WEBPACK_IMPORTED_MODULE_31__["isString"])(port)) { //Write to text file
- var fn = port;
- var server = Object(_Server_js__WEBPACK_IMPORTED_MODULE_17__["getServer"])(workerScript.serverIp);
- if (server == null) {
- throw Object(_NetscriptEvaluator_js__WEBPACK_IMPORTED_MODULE_24__["makeRuntimeRejectMsg"])(workerScript, "Error getting Server for this script in write(). This is a bug please contact game dev");
- }
- var txtFile = Object(_TextFile_js__WEBPACK_IMPORTED_MODULE_22__["getTextFile"])(fn, server);
- if (txtFile == null) {
- txtFile = Object(_TextFile_js__WEBPACK_IMPORTED_MODULE_22__["createTextFile"])(fn, data, server);
- return true;
- }
- if (mode === "w") {
- txtFile.write(data);
- } else {
- txtFile.append(data);
- }
- return true;
- } else {
- throw Object(_NetscriptEvaluator_js__WEBPACK_IMPORTED_MODULE_24__["makeRuntimeRejectMsg"])(workerScript, "Invalid argument passed in for write: " + port);
- }
- },
- read : function(port) {
- if (workerScript.checkingRam) {
- if (workerScript.loadedFns.read) {
- return 0;
- } else {
- workerScript.loadedFns.read = true;
- return _Constants_js__WEBPACK_IMPORTED_MODULE_6__["CONSTANTS"].ScriptReadWriteRamCost;
- }
- }
- if (!isNaN(port)) { //Read from port
- //Port 1-10
- port = Math.round(port);
- if (port < 1 || port > _Constants_js__WEBPACK_IMPORTED_MODULE_6__["CONSTANTS"].NumNetscriptPorts) {
- throw Object(_NetscriptEvaluator_js__WEBPACK_IMPORTED_MODULE_24__["makeRuntimeRejectMsg"])(workerScript, "ERR: Trying to read from invalid port: " + port + ". Only ports 1-" + _Constants_js__WEBPACK_IMPORTED_MODULE_6__["CONSTANTS"].NumNetscriptPorts + " are valid.");
- }
- var port = _NetscriptWorker_js__WEBPACK_IMPORTED_MODULE_23__["NetscriptPorts"][port-1];
- if (port == null || !(port instanceof _NetscriptPort_js__WEBPACK_IMPORTED_MODULE_26__["NetscriptPort"])) {
- throw Object(_NetscriptEvaluator_js__WEBPACK_IMPORTED_MODULE_24__["makeRuntimeRejectMsg"])(workerScript, "ERR: Could not find port: " + port + ". This is a bug contact the game developer");
- }
- return port.read();
- } else if (Object(_utils_StringHelperFunctions_js__WEBPACK_IMPORTED_MODULE_31__["isString"])(port)) { //Read from text file
- var fn = port;
- var server = Object(_Server_js__WEBPACK_IMPORTED_MODULE_17__["getServer"])(workerScript.serverIp);
- if (server == null) {
- throw Object(_NetscriptEvaluator_js__WEBPACK_IMPORTED_MODULE_24__["makeRuntimeRejectMsg"])(workerScript, "Error getting Server for this script in read(). This is a bug please contact game dev");
- }
- var txtFile = Object(_TextFile_js__WEBPACK_IMPORTED_MODULE_22__["getTextFile"])(fn, server);
- if (txtFile !== null) {
- return txtFile.text;
- } else {
- return "";
- }
- } else {
- throw Object(_NetscriptEvaluator_js__WEBPACK_IMPORTED_MODULE_24__["makeRuntimeRejectMsg"])(workerScript, "Invalid argument passed in for read(): " + port);
- }
- },
- peek : function(port) {
- if (workerScript.checkingRam) {
- if (workerScript.loadedFns.peek) {
- return 0;
- } else {
- workerScript.loadedFns.peek = true;
- return _Constants_js__WEBPACK_IMPORTED_MODULE_6__["CONSTANTS"].ScriptReadWriteRamCost;
- }
- }
- if (isNaN(port)) {
- throw Object(_NetscriptEvaluator_js__WEBPACK_IMPORTED_MODULE_24__["makeRuntimeRejectMsg"])(workerScript, "ERR: peek() called with invalid argument. Must be a port number between 1 and " + _Constants_js__WEBPACK_IMPORTED_MODULE_6__["CONSTANTS"].NumNetscriptPorts);
- }
- port = Math.round(port);
- if (port < 1 || port > _Constants_js__WEBPACK_IMPORTED_MODULE_6__["CONSTANTS"].NumNetscriptPorts) {
- throw Object(_NetscriptEvaluator_js__WEBPACK_IMPORTED_MODULE_24__["makeRuntimeRejectMsg"])(workerScript, "ERR: peek() called with invalid argument. Must be a port number between 1 and " + _Constants_js__WEBPACK_IMPORTED_MODULE_6__["CONSTANTS"].NumNetscriptPorts);
- }
- var port = _NetscriptWorker_js__WEBPACK_IMPORTED_MODULE_23__["NetscriptPorts"][port-1];
- if (port == null || !(port instanceof _NetscriptPort_js__WEBPACK_IMPORTED_MODULE_26__["NetscriptPort"])) {
- throw Object(_NetscriptEvaluator_js__WEBPACK_IMPORTED_MODULE_24__["makeRuntimeRejectMsg"])(workerScript, "ERR: Could not find port: " + port + ". This is a bug contact the game developer");
- }
- return port.peek();
- },
- clear : function(port) {
- if (workerScript.checkingRam) {
- if (workerScript.loadedFns.clear) {
- return 0;
- } else {
- workerScript.loadedFns.clear = true;
- return _Constants_js__WEBPACK_IMPORTED_MODULE_6__["CONSTANTS"].ScriptReadWriteRamCost;
- }
- }
- if (!isNaN(port)) { //Clear port
- port = Math.round(port);
- if (port < 1 || port > _Constants_js__WEBPACK_IMPORTED_MODULE_6__["CONSTANTS"].NumNetscriptPorts) {
- throw Object(_NetscriptEvaluator_js__WEBPACK_IMPORTED_MODULE_24__["makeRuntimeRejectMsg"])(workerScript, "ERR: Trying to clear invalid port: " + port + ". Only ports 1-" + _Constants_js__WEBPACK_IMPORTED_MODULE_6__["CONSTANTS"].NumNetscriptPorts + " are valid");
- }
- var port = _NetscriptWorker_js__WEBPACK_IMPORTED_MODULE_23__["NetscriptPorts"][port-1];
- if (port == null || !(port instanceof _NetscriptPort_js__WEBPACK_IMPORTED_MODULE_26__["NetscriptPort"])) {
- throw Object(_NetscriptEvaluator_js__WEBPACK_IMPORTED_MODULE_24__["makeRuntimeRejectMsg"])(workerScript, "ERR: Could not find port: " + port + ". This is a bug contact the game developer");
- }
- return port.clear();
- } else if (Object(_utils_StringHelperFunctions_js__WEBPACK_IMPORTED_MODULE_31__["isString"])(port)) { //Clear text file
- var fn = port;
- var server = Object(_Server_js__WEBPACK_IMPORTED_MODULE_17__["getServer"])(workerScript.serverIp);
- if (server == null) {
- throw Object(_NetscriptEvaluator_js__WEBPACK_IMPORTED_MODULE_24__["makeRuntimeRejectMsg"])(workerScript, "Error getting Server for this script in clear(). This is a bug please contact game dev");
- }
- var txtFile = Object(_TextFile_js__WEBPACK_IMPORTED_MODULE_22__["getTextFile"])(fn, server);
- if (txtFile != null) {
- txtFile.write("");
- }
- } else {
- throw Object(_NetscriptEvaluator_js__WEBPACK_IMPORTED_MODULE_24__["makeRuntimeRejectMsg"])(workerScript, "Invalid argument passed in for clear(): " + port);
- }
- return 0;
- },
- getPortHandle : function(port) {
- if (workerScript.checkingRam) {
- if (workerScript.loadedFns.getPortHandle) {
- return 0;
- } else {
- workerScript.loadedFns.getPortHandle = true;
- return _Constants_js__WEBPACK_IMPORTED_MODULE_6__["CONSTANTS"].ScriptReadWriteRamCost * 10;
- }
- }
- if (isNaN(port)) {
- throw Object(_NetscriptEvaluator_js__WEBPACK_IMPORTED_MODULE_24__["makeRuntimeRejectMsg"])(workerScript, "ERR: Invalid argument passed into getPortHandle(). Must be an integer between 1 and " + _Constants_js__WEBPACK_IMPORTED_MODULE_6__["CONSTANTS"].NumNetscriptPorts);
- }
- port = Math.round(port);
- if (port < 1 || port > _Constants_js__WEBPACK_IMPORTED_MODULE_6__["CONSTANTS"].NumNetscriptPorts) {
- throw Object(_NetscriptEvaluator_js__WEBPACK_IMPORTED_MODULE_24__["makeRuntimeRejectMsg"])(workerScript, "ERR: getPortHandle() called with invalid port number: " + port + ". Only ports 1-" + _Constants_js__WEBPACK_IMPORTED_MODULE_6__["CONSTANTS"].NumNetscriptPorts + " are valid");
- }
- var port = _NetscriptWorker_js__WEBPACK_IMPORTED_MODULE_23__["NetscriptPorts"][port-1];
- if (port == null || !(port instanceof _NetscriptPort_js__WEBPACK_IMPORTED_MODULE_26__["NetscriptPort"])) {
- throw Object(_NetscriptEvaluator_js__WEBPACK_IMPORTED_MODULE_24__["makeRuntimeRejectMsg"])(workerScript, "ERR: Could not find port: " + port + ". This is a bug contact the game developer");
- }
- return port;
- },
- rm : function(fn) {
- if (workerScript.checkingRam) {
- if (workerScript.loadedFns.rm) {
- return 0;
- } else {
- workerScript.loadedFns.rm = true;
- return _Constants_js__WEBPACK_IMPORTED_MODULE_6__["CONSTANTS"].ScriptReadWriteRamCost;
- }
- }
- var s = Object(_Server_js__WEBPACK_IMPORTED_MODULE_17__["getServer"])(workerScript.serverIp);
- if (s == null) {
- throw Object(_NetscriptEvaluator_js__WEBPACK_IMPORTED_MODULE_24__["makeRuntimeRejectMsg"])(workerScript, "Error getting Server for this script in clear(). This is a bug please contact game dev");
- }
-
- if (fn.includes(".exe")) {
- for (var i = 0; i < s.programs.length; ++i) {
- if (s.programs[i] === fn) {
- s.programs.splice(i, 1);
- return true;
- }
- }
- } else if (Object(_Script_js__WEBPACK_IMPORTED_MODULE_16__["isScriptFilename"])(fn)) {
- for (var i = 0; i < s.scripts.length; ++i) {
- if (s.scripts[i].filename === fn) {
- //Check that the script isnt currently running
- for (var j = 0; j < s.runningScripts.length; ++j) {
- if (s.runningScripts[j].filename === fn) {
- workerScript.scriptRef.log("Cannot delete a script that is currently running!");
- return false;
- }
- }
- s.scripts.splice(i, 1);
- return true;
- }
- }
- } else if (fn.endsWith(".lit")) {
- for (var i = 0; i < s.messages.length; ++i) {
- var f = s.messages[i];
- if (!(f instanceof _Message_js__WEBPACK_IMPORTED_MODULE_13__["Message"]) && Object(_utils_StringHelperFunctions_js__WEBPACK_IMPORTED_MODULE_31__["isString"])(f) && f === fn) {
- s.messages.splice(i, 1);
- return true;
- }
- }
- } else if (fn.endsWith(".txt")) {
- for (var i = 0; i < s.textFiles.length; ++i) {
- if (s.textFiles[i].fn === fn) {
- s.textFiles.splice(i, 1);
- return true;
- }
- }
- }
- return false;
- },
- scriptRunning : function(scriptname, ip) {
- if (workerScript.checkingRam) {
- if (workerScript.loadedFns.scriptRunning) {
- return 0;
- } else {
- workerScript.loadedFns.scriptRunning = true;
- return _Constants_js__WEBPACK_IMPORTED_MODULE_6__["CONSTANTS"].ScriptArbScriptRamCost;
- }
- }
- var server = Object(_Server_js__WEBPACK_IMPORTED_MODULE_17__["getServer"])(ip);
- if (server == null) {
- workerScript.scriptRef.log("scriptRunning() failed. Invalid IP or hostname passed in: " + ip);
- throw Object(_NetscriptEvaluator_js__WEBPACK_IMPORTED_MODULE_24__["makeRuntimeRejectMsg"])(workerScript, "scriptRunning() failed. Invalid IP or hostname passed in: " + ip);
- }
- for (var i = 0; i < server.runningScripts.length; ++i) {
- if (server.runningScripts[i].filename == scriptname) {
- return true;
- }
- }
- return false;
- },
- scriptKill : function(scriptname, ip) {
- if (workerScript.checkingRam) {
- if (workerScript.loadedFns.scriptKill) {
- return 0;
- } else {
- workerScript.loadedFns.scriptKill = true;
- return _Constants_js__WEBPACK_IMPORTED_MODULE_6__["CONSTANTS"].ScriptArbScriptRamCost;
- }
- }
- var server = Object(_Server_js__WEBPACK_IMPORTED_MODULE_17__["getServer"])(ip);
- if (server == null) {
- workerScript.scriptRef.log("scriptKill() failed. Invalid IP or hostname passed in: " + ip);
- throw Object(_NetscriptEvaluator_js__WEBPACK_IMPORTED_MODULE_24__["makeRuntimeRejectMsg"])(workerScript, "scriptKill() failed. Invalid IP or hostname passed in: " + ip);
- }
- var suc = false;
- for (var i = 0; i < server.runningScripts.length; ++i) {
- if (server.runningScripts[i].filename == scriptname) {
- Object(_NetscriptWorker_js__WEBPACK_IMPORTED_MODULE_23__["killWorkerScript"])(server.runningScripts[i], server.ip);
- suc = true;
- }
- }
- return suc;
- },
- getScriptName : function() {
- if (workerScript.checkingRam) {return 0;}
- return workerScript.name;
- },
- getScriptRam : function (scriptname, ip=workerScript.serverIp) {
- if (workerScript.checkingRam) {
- if (workerScript.loadedFns.getScriptRam) {
- return 0;
- } else {
- workerScript.loadedFns.getScriptRam = true;
- return _Constants_js__WEBPACK_IMPORTED_MODULE_6__["CONSTANTS"].ScriptGetScriptRamCost;
- }
- }
- var server = Object(_Server_js__WEBPACK_IMPORTED_MODULE_17__["getServer"])(ip);
- if (server == null) {
- workerScript.scriptRef.log("getScriptRam() failed. Invalid IP or hostname passed in: " + ip);
- throw Object(_NetscriptEvaluator_js__WEBPACK_IMPORTED_MODULE_24__["makeRuntimeRejectMsg"])(workerScript, "getScriptRam() failed. Invalid IP or hostname passed in: " + ip);
- }
- for (var i = 0; i < server.scripts.length; ++i) {
- if (server.scripts[i].filename == scriptname) {
- return server.scripts[i].ramUsage;
- }
- }
- return 0;
- },
- getHackTime : function(ip) {
- if (workerScript.checkingRam) {
- if (workerScript.loadedFns.getHackTime) {
- return 0;
- } else {
- workerScript.loadedFns.getHackTime = true;
- return _Constants_js__WEBPACK_IMPORTED_MODULE_6__["CONSTANTS"].ScriptGetHackTimeRamCost;
- }
- }
- var server = Object(_Server_js__WEBPACK_IMPORTED_MODULE_17__["getServer"])(ip);
- if (server == null) {
- workerScript.scriptRef.log("getHackTime() failed. Invalid IP or hostname passed in: " + ip);
- throw Object(_NetscriptEvaluator_js__WEBPACK_IMPORTED_MODULE_24__["makeRuntimeRejectMsg"])(workerScript, "getHackTime() failed. Invalid IP or hostname passed in: " + ip);
- }
- return Object(_NetscriptEvaluator_js__WEBPACK_IMPORTED_MODULE_24__["scriptCalculateHackingTime"])(server); //Returns seconds
- },
- getGrowTime : function(ip) {
- if (workerScript.checkingRam) {
- if (workerScript.loadedFns.getGrowTime) {
- return 0;
- } else {
- workerScript.loadedFns.getGrowTime = true;
- return _Constants_js__WEBPACK_IMPORTED_MODULE_6__["CONSTANTS"].ScriptGetHackTimeRamCost;
- }
- }
- var server = Object(_Server_js__WEBPACK_IMPORTED_MODULE_17__["getServer"])(ip);
- if (server == null) {
- workerScript.scriptRef.log("getGrowTime() failed. Invalid IP or hostname passed in: " + ip);
- throw Object(_NetscriptEvaluator_js__WEBPACK_IMPORTED_MODULE_24__["makeRuntimeRejectMsg"])(workerScript, "getGrowTime() failed. Invalid IP or hostname passed in: " + ip);
- }
- return Object(_NetscriptEvaluator_js__WEBPACK_IMPORTED_MODULE_24__["scriptCalculateGrowTime"])(server) / 1000; //Returns seconds
- },
- getWeakenTime : function(ip) {
- if (workerScript.checkingRam) {
- if (workerScript.loadedFns.getWeakenTime) {
- return 0;
- } else {
- workerScript.loadedFns.getWeakenTime = true;
- return _Constants_js__WEBPACK_IMPORTED_MODULE_6__["CONSTANTS"].ScriptGetHackTimeRamCost;
- }
- }
- var server = Object(_Server_js__WEBPACK_IMPORTED_MODULE_17__["getServer"])(ip);
- if (server == null) {
- workerScript.scriptRef.log("getWeakenTime() failed. Invalid IP or hostname passed in: " + ip);
- throw Object(_NetscriptEvaluator_js__WEBPACK_IMPORTED_MODULE_24__["makeRuntimeRejectMsg"])(workerScript, "getWeakenTime() failed. Invalid IP or hostname passed in: " + ip);
- }
- return Object(_NetscriptEvaluator_js__WEBPACK_IMPORTED_MODULE_24__["scriptCalculateWeakenTime"])(server) / 1000; //Returns seconds
- },
- getScriptIncome : function(scriptname, ip) {
- if (workerScript.checkingRam) {
- if (workerScript.loadedFns.getScriptIncome) {
- return 0;
- } else {
- workerScript.loadedFns.getScriptIncome = true;
- return _Constants_js__WEBPACK_IMPORTED_MODULE_6__["CONSTANTS"].ScriptGetScriptRamCost;
- }
- }
- if (arguments.length === 0) {
- //Get total script income
- var res = [];
- res.push(Object(_ActiveScriptsUI_js__WEBPACK_IMPORTED_MODULE_0__["updateActiveScriptsItems"])());
- res.push(_Player_js__WEBPACK_IMPORTED_MODULE_15__["Player"].scriptProdSinceLastAug / (_Player_js__WEBPACK_IMPORTED_MODULE_15__["Player"].playtimeSinceLastAug/1000));
- return res;
- } else {
- //Get income for a particular script
- var server = Object(_Server_js__WEBPACK_IMPORTED_MODULE_17__["getServer"])(ip);
- if (server == null) {
- workerScript.scriptRef.log("getScriptIncome() failed. Invalid IP or hostnamed passed in: " + ip);
- throw Object(_NetscriptEvaluator_js__WEBPACK_IMPORTED_MODULE_24__["makeRuntimeRejectMsg"])(workerScript, "getScriptIncome() failed. Invalid IP or hostnamed passed in: " + ip);
- }
- var argsForScript = [];
- for (var i = 2; i < arguments.length; ++i) {
- argsForScript.push(arguments[i]);
- }
- var runningScriptObj = Object(_Script_js__WEBPACK_IMPORTED_MODULE_16__["findRunningScript"])(scriptname, argsForScript, server);
- if (runningScriptObj == null) {
- workerScript.scriptRef.log("getScriptIncome() failed. No such script "+ scriptname + " on " + server.hostname + " with args: " + Object(_utils_HelperFunctions_js__WEBPACK_IMPORTED_MODULE_29__["printArray"])(argsForScript));
- return -1;
- }
- return runningScriptObj.onlineMoneyMade / runningScriptObj.onlineRunningTime;
- }
- },
- getScriptExpGain : function(scriptname, ip) {
- if (workerScript.checkingRam) {
- if (workerScript.loadedFns.getScriptExpGain) {
- return 0;
- } else {
- workerScript.loadedFns.getScriptExpGain = true;
- return _Constants_js__WEBPACK_IMPORTED_MODULE_6__["CONSTANTS"].ScriptGetScriptRamCost;
- }
- }
- if (arguments.length === 0) {
- var total = 0;
- for (var i = 0; i < _NetscriptWorker_js__WEBPACK_IMPORTED_MODULE_23__["workerScripts"].length; ++i) {
- total += (_NetscriptWorker_js__WEBPACK_IMPORTED_MODULE_23__["workerScripts"][i].scriptRef.onlineExpGained / _NetscriptWorker_js__WEBPACK_IMPORTED_MODULE_23__["workerScripts"][i].scriptRef.onlineRunningTime);
- }
- return total;
- } else {
- //Get income for a particular script
- var server = Object(_Server_js__WEBPACK_IMPORTED_MODULE_17__["getServer"])(ip);
- if (server == null) {
- workerScript.scriptRef.log("getScriptExpGain() failed. Invalid IP or hostnamed passed in: " + ip);
- throw Object(_NetscriptEvaluator_js__WEBPACK_IMPORTED_MODULE_24__["makeRuntimeRejectMsg"])(workerScript, "getScriptExpGain() failed. Invalid IP or hostnamed passed in: " + ip);
- }
- var argsForScript = [];
- for (var i = 2; i < arguments.length; ++i) {
- argsForScript.push(arguments[i]);
- }
- var runningScriptObj = Object(_Script_js__WEBPACK_IMPORTED_MODULE_16__["findRunningScript"])(scriptname, argsForScript, server);
- if (runningScriptObj == null) {
- workerScript.scriptRef.log("getScriptExpGain() failed. No such script "+ scriptname + " on " + server.hostname + " with args: " + Object(_utils_HelperFunctions_js__WEBPACK_IMPORTED_MODULE_29__["printArray"])(argsForScript));
- return -1;
- }
- return runningScriptObj.onlineExpGained / runningScriptObj.onlineRunningTime;
- }
- },
- getTimeSinceLastAug : function() {
- if (workerScript.checkingRam) {
- if (workerScript.loadedFns.getTimeSinceLastAug) {
- return 0;
- } else {
- workerScript.loadedFns.getTimeSinceLastAug = true;
- return _Constants_js__WEBPACK_IMPORTED_MODULE_6__["CONSTANTS"].ScriptGetHackTimeRamCost;
- }
- }
- return _Player_js__WEBPACK_IMPORTED_MODULE_15__["Player"].playtimeSinceLastAug;
- },
- prompt : function(txt) {
- if (workerScript.checkingRam) {return 0;}
- if (_utils_YesNoBox_js__WEBPACK_IMPORTED_MODULE_32__["yesNoBoxOpen"]) {
- workerScript.scriptRef.log("ERROR: confirm() failed because a pop-up dialog box is already open");
- return false;
- }
- if (!Object(_utils_StringHelperFunctions_js__WEBPACK_IMPORTED_MODULE_31__["isString"])(txt)) {txt = String(txt);}
- var yesBtn = Object(_utils_YesNoBox_js__WEBPACK_IMPORTED_MODULE_32__["yesNoBoxGetYesButton"])(), noBtn = Object(_utils_YesNoBox_js__WEBPACK_IMPORTED_MODULE_32__["yesNoBoxGetNoButton"])();
- yesBtn.innerHTML = "Yes";
- noBtn.innerHTML = "No";
- return new Promise(function(resolve, reject) {
- yesBtn.addEventListener("click", ()=>{
- Object(_utils_YesNoBox_js__WEBPACK_IMPORTED_MODULE_32__["yesNoBoxClose"])();
- resolve(true);
- });
- noBtn.addEventListener("click", ()=>{
- Object(_utils_YesNoBox_js__WEBPACK_IMPORTED_MODULE_32__["yesNoBoxClose"])();
- resolve(false);
- });
- Object(_utils_YesNoBox_js__WEBPACK_IMPORTED_MODULE_32__["yesNoBoxCreate"])(txt);
- });
- },
-
- /* Singularity Functions */
- universityCourse : function(universityName, className) {
- if (workerScript.checkingRam) {
- if (workerScript.loadedFns.universityCourse) {
- return 0;
- } else {
- workerScript.loadedFns.universityCourse = true;
- var ramCost = _Constants_js__WEBPACK_IMPORTED_MODULE_6__["CONSTANTS"].ScriptSingularityFn1RamCost;
- if (_Player_js__WEBPACK_IMPORTED_MODULE_15__["Player"].bitNodeN !== 4) {ramCost *= 8;}
- return ramCost;
- }
- }
- if (_Player_js__WEBPACK_IMPORTED_MODULE_15__["Player"].bitNodeN != 4) {
- if (!(hasSingularitySF && singularitySFLvl >= 1)) {
- throw Object(_NetscriptEvaluator_js__WEBPACK_IMPORTED_MODULE_24__["makeRuntimeRejectMsg"])(workerScript, "Cannot run universityCourse(). It is a Singularity Function and requires SourceFile-4 (level 1) to run.");
- return false;
- }
- }
- if (_Missions_js__WEBPACK_IMPORTED_MODULE_14__["inMission"]) {
- workerScript.scriptRef.log("ERROR: universityCourse() failed because you are in the middle of a mission.");
- return;
- }
- if (_Player_js__WEBPACK_IMPORTED_MODULE_15__["Player"].isWorking) {
- var txt = _Player_js__WEBPACK_IMPORTED_MODULE_15__["Player"].singularityStopWork();
- if (workerScript.disableLogs.ALL == null && workerScript.disableLogs.universityCourse == null) {
- workerScript.scriptRef.log(txt);
- }
- }
-
- var costMult, expMult;
- switch(universityName.toLowerCase()) {
- case _Location_js__WEBPACK_IMPORTED_MODULE_12__["Locations"].AevumSummitUniversity.toLowerCase():
- if (_Player_js__WEBPACK_IMPORTED_MODULE_15__["Player"].city != _Location_js__WEBPACK_IMPORTED_MODULE_12__["Locations"].Aevum) {
- workerScript.scriptRef.log("ERROR: You cannot study at Summit University because you are not in Aevum. universityCourse() failed");
- return false;
- }
- _Player_js__WEBPACK_IMPORTED_MODULE_15__["Player"].location = _Location_js__WEBPACK_IMPORTED_MODULE_12__["Locations"].AevumSummitUniversity;
- costMult = 4;
- expMult = 3;
- break;
- case _Location_js__WEBPACK_IMPORTED_MODULE_12__["Locations"].Sector12RothmanUniversity.toLowerCase():
- if (_Player_js__WEBPACK_IMPORTED_MODULE_15__["Player"].city != _Location_js__WEBPACK_IMPORTED_MODULE_12__["Locations"].Sector12) {
- workerScript.scriptRef.log("ERROR: You cannot study at Rothman University because you are not in Sector-12. universityCourse() failed");
- return false;
- }
- _Player_js__WEBPACK_IMPORTED_MODULE_15__["Player"].location = _Location_js__WEBPACK_IMPORTED_MODULE_12__["Locations"].Sector12RothmanUniversity;
- costMult = 3;
- expMult = 2;
- break;
- case _Location_js__WEBPACK_IMPORTED_MODULE_12__["Locations"].VolhavenZBInstituteOfTechnology.toLowerCase():
- if (_Player_js__WEBPACK_IMPORTED_MODULE_15__["Player"].city != _Location_js__WEBPACK_IMPORTED_MODULE_12__["Locations"].Volhaven) {
- workerScript.scriptRef.log("ERROR: You cannot study at ZB Institute of Technology because you are not in Volhaven. universityCourse() failed");
- return false;
- }
- _Player_js__WEBPACK_IMPORTED_MODULE_15__["Player"].location = _Location_js__WEBPACK_IMPORTED_MODULE_12__["Locations"].VolhavenZBInstituteOfTechnology;
- costMult = 5;
- expMult = 4;
- break;
- default:
- workerScript.scriptRef.log("Invalid university name: " + universityName + ". universityCourse() failed");
- return false;
- }
-
- var task;
- switch(className.toLowerCase()) {
- case "Study Computer Science".toLowerCase():
- task = _Constants_js__WEBPACK_IMPORTED_MODULE_6__["CONSTANTS"].ClassStudyComputerScience;
- break;
- case "Data Structures".toLowerCase():
- task = _Constants_js__WEBPACK_IMPORTED_MODULE_6__["CONSTANTS"].ClassDataStructures;
- break;
- case "Networks".toLowerCase():
- task = _Constants_js__WEBPACK_IMPORTED_MODULE_6__["CONSTANTS"].ClassNetworks;
- break;
- case "Algorithms".toLowerCase():
- task = _Constants_js__WEBPACK_IMPORTED_MODULE_6__["CONSTANTS"].ClassAlgorithms;
- break;
- case "Management".toLowerCase():
- task = _Constants_js__WEBPACK_IMPORTED_MODULE_6__["CONSTANTS"].ClassManagement;
- break;
- case "Leadership".toLowerCase():
- task = _Constants_js__WEBPACK_IMPORTED_MODULE_6__["CONSTANTS"].ClassLeadership;
- break;
- default:
- workerScript.scriptRef.log("Invalid class name: " + className + ". universityCourse() failed");
- return false;
- }
- _Player_js__WEBPACK_IMPORTED_MODULE_15__["Player"].startClass(costMult, expMult, task);
- if (workerScript.disableLogs.ALL == null && workerScript.disableLogs.universityCourse == null) {
- workerScript.scriptRef.log("Started " + task + " at " + universityName);
- }
- return true;
- },
-
- gymWorkout : function(gymName, stat) {
- if (workerScript.checkingRam) {
- if (workerScript.loadedFns.gymWorkout) {
- return 0;
- } else {
- workerScript.loadedFns.gymWorkout = true;
- var ramCost = _Constants_js__WEBPACK_IMPORTED_MODULE_6__["CONSTANTS"].ScriptSingularityFn1RamCost;
- if (_Player_js__WEBPACK_IMPORTED_MODULE_15__["Player"].bitNodeN !== 4) {ramCost *= 8;}
- return ramCost;
- }
- }
- if (_Player_js__WEBPACK_IMPORTED_MODULE_15__["Player"].bitNodeN != 4) {
- if (!(hasSingularitySF && singularitySFLvl >= 1)) {
- throw Object(_NetscriptEvaluator_js__WEBPACK_IMPORTED_MODULE_24__["makeRuntimeRejectMsg"])(workerScript, "Cannot run gymWorkout(). It is a Singularity Function and requires SourceFile-4 (level 1) to run.");
- return false;
- }
- }
- if (_Missions_js__WEBPACK_IMPORTED_MODULE_14__["inMission"]) {
- workerScript.scriptRef.log("ERROR: gymWorkout() failed because you are in the middle of a mission.");
- return;
- }
- if (_Player_js__WEBPACK_IMPORTED_MODULE_15__["Player"].isWorking) {
- var txt = _Player_js__WEBPACK_IMPORTED_MODULE_15__["Player"].singularityStopWork();
- if (workerScript.disableLogs.ALL == null && workerScript.disableLogs.gymWorkout == null) {
- workerScript.scriptRef.log(txt);
- }
- }
- var costMult, expMult;
- switch(gymName.toLowerCase()) {
- case _Location_js__WEBPACK_IMPORTED_MODULE_12__["Locations"].AevumCrushFitnessGym.toLowerCase():
- if (_Player_js__WEBPACK_IMPORTED_MODULE_15__["Player"].city != _Location_js__WEBPACK_IMPORTED_MODULE_12__["Locations"].Aevum) {
- workerScript.scriptRef.log("ERROR: You cannot workout at Crush Fitness because you are not in Aevum. gymWorkout() failed");
- return false;
- }
- _Player_js__WEBPACK_IMPORTED_MODULE_15__["Player"].location = _Location_js__WEBPACK_IMPORTED_MODULE_12__["Locations"].AevumCrushFitnessGym;
- costMult = 3;
- expMult = 2;
- break;
- case _Location_js__WEBPACK_IMPORTED_MODULE_12__["Locations"].AevumSnapFitnessGym.toLowerCase():
- if (_Player_js__WEBPACK_IMPORTED_MODULE_15__["Player"].city != _Location_js__WEBPACK_IMPORTED_MODULE_12__["Locations"].Aevum) {
- workerScript.scriptRef.log("ERROR: You cannot workout at Snap Fitness because you are not in Aevum. gymWorkout() failed");
- return false;
- }
- _Player_js__WEBPACK_IMPORTED_MODULE_15__["Player"].location = _Location_js__WEBPACK_IMPORTED_MODULE_12__["Locations"].AevumSnapFitnessGym;
- costMult = 10;
- expMult = 5;
- break;
- case _Location_js__WEBPACK_IMPORTED_MODULE_12__["Locations"].Sector12IronGym.toLowerCase():
- if (_Player_js__WEBPACK_IMPORTED_MODULE_15__["Player"].city != _Location_js__WEBPACK_IMPORTED_MODULE_12__["Locations"].Sector12) {
- workerScript.scriptRef.log("ERROR: You cannot workout at Iron Gym because you are not in Sector-12. gymWorkout() failed");
- return false;
- }
- _Player_js__WEBPACK_IMPORTED_MODULE_15__["Player"].location = _Location_js__WEBPACK_IMPORTED_MODULE_12__["Locations"].Sector12IronGym;
- costMult = 1;
- expMult = 1;
- break;
- case _Location_js__WEBPACK_IMPORTED_MODULE_12__["Locations"].Sector12PowerhouseGym.toLowerCase():
- if (_Player_js__WEBPACK_IMPORTED_MODULE_15__["Player"].city != _Location_js__WEBPACK_IMPORTED_MODULE_12__["Locations"].Sector12) {
- workerScript.scriptRef.log("ERROR: You cannot workout at Powerhouse Gym because you are not in Sector-12. gymWorkout() failed");
- return false;
- }
- _Player_js__WEBPACK_IMPORTED_MODULE_15__["Player"].location = _Location_js__WEBPACK_IMPORTED_MODULE_12__["Locations"].Sector12PowerhouseGym;
- costMult = 20;
- expMult = 10;
- break;
- case _Location_js__WEBPACK_IMPORTED_MODULE_12__["Locations"].VolhavenMilleniumFitnessGym:
- if (_Player_js__WEBPACK_IMPORTED_MODULE_15__["Player"].city != _Location_js__WEBPACK_IMPORTED_MODULE_12__["Locations"].Volhaven) {
- workerScript.scriptRef.log("ERROR: You cannot workout at Millenium Fitness Gym because you are not in Volhaven. gymWorkout() failed");
- return false;
- }
- _Player_js__WEBPACK_IMPORTED_MODULE_15__["Player"].location = _Location_js__WEBPACK_IMPORTED_MODULE_12__["Locations"].VolhavenMilleniumFitnessGym;
- costMult = 7;
- expMult = 4;
- break;
- default:
- workerScript.scriptRef.log("Invalid gym name: " + gymName + ". gymWorkout() failed");
- return false;
- }
-
- switch(stat.toLowerCase()) {
- case "strength".toLowerCase():
- case "str".toLowerCase():
- _Player_js__WEBPACK_IMPORTED_MODULE_15__["Player"].startClass(costMult, expMult, _Constants_js__WEBPACK_IMPORTED_MODULE_6__["CONSTANTS"].ClassGymStrength);
- break;
- case "defense".toLowerCase():
- case "def".toLowerCase():
- _Player_js__WEBPACK_IMPORTED_MODULE_15__["Player"].startClass(costMult, expMult, _Constants_js__WEBPACK_IMPORTED_MODULE_6__["CONSTANTS"].ClassGymDefense);
- break;
- case "dexterity".toLowerCase():
- case "dex".toLowerCase():
- _Player_js__WEBPACK_IMPORTED_MODULE_15__["Player"].startClass(costMult, expMult, _Constants_js__WEBPACK_IMPORTED_MODULE_6__["CONSTANTS"].ClassGymDexterity);
- break;
- case "agility".toLowerCase():
- case "agi".toLowerCase():
- _Player_js__WEBPACK_IMPORTED_MODULE_15__["Player"].startClass(costMult, expMult, _Constants_js__WEBPACK_IMPORTED_MODULE_6__["CONSTANTS"].ClassGymAgility);
- break;
- default:
- workerScript.scriptRef.log("Invalid stat: " + stat + ". gymWorkout() failed");
- return false;
- }
- if (workerScript.disableLogs.ALL == null && workerScript.disableLogs.gymWorkout == null) {
- workerScript.scriptRef.log("Started training " + stat + " at " + gymName);
- }
- return true;
- },
-
- travelToCity(cityname) {
- if (workerScript.checkingRam) {
- if (workerScript.loadedFns.travelToCity) {
- return 0;
- } else {
- workerScript.loadedFns.travelToCity = true;
- var ramCost = _Constants_js__WEBPACK_IMPORTED_MODULE_6__["CONSTANTS"].ScriptSingularityFn1RamCost / 2;
- if (_Player_js__WEBPACK_IMPORTED_MODULE_15__["Player"].bitNodeN !== 4) {ramCost *= 8;}
- return ramCost;
- }
- }
- if (_Player_js__WEBPACK_IMPORTED_MODULE_15__["Player"].bitNodeN != 4) {
- if (!(hasSingularitySF && singularitySFLvl >= 1)) {
- throw Object(_NetscriptEvaluator_js__WEBPACK_IMPORTED_MODULE_24__["makeRuntimeRejectMsg"])(workerScript, "Cannot run travelToCity(). It is a Singularity Function and requires SourceFile-4 (level 1) to run.");
- return false;
- }
- }
-
- switch(cityname) {
- case _Location_js__WEBPACK_IMPORTED_MODULE_12__["Locations"].Aevum:
- case _Location_js__WEBPACK_IMPORTED_MODULE_12__["Locations"].Chongqing:
- case _Location_js__WEBPACK_IMPORTED_MODULE_12__["Locations"].Sector12:
- case _Location_js__WEBPACK_IMPORTED_MODULE_12__["Locations"].NewTokyo:
- case _Location_js__WEBPACK_IMPORTED_MODULE_12__["Locations"].Ishima:
- case _Location_js__WEBPACK_IMPORTED_MODULE_12__["Locations"].Volhaven:
- _Player_js__WEBPACK_IMPORTED_MODULE_15__["Player"].loseMoney(200000);
- _Player_js__WEBPACK_IMPORTED_MODULE_15__["Player"].city = cityname;
- _Player_js__WEBPACK_IMPORTED_MODULE_15__["Player"].gainIntelligenceExp(_Constants_js__WEBPACK_IMPORTED_MODULE_6__["CONSTANTS"].IntelligenceSingFnBaseExpGain);
- if (workerScript.disableLogs.ALL == null && workerScript.disableLogs.travelToCity == null) {
- workerScript.scriptRef.log("Traveled to " + cityname);
- }
- return true;
- default:
- workerScript.scriptRef.log("ERROR: Invalid city name passed into travelToCity().");
- return false;
- }
- },
-
- purchaseTor() {
- if (workerScript.checkingRam) {
- if (workerScript.loadedFns.purchaseTor) {
- return 0;
- } else {
- workerScript.loadedFns.purchaseTor = true;
- var ramCost = _Constants_js__WEBPACK_IMPORTED_MODULE_6__["CONSTANTS"].ScriptSingularityFn1RamCost;
- if (_Player_js__WEBPACK_IMPORTED_MODULE_15__["Player"].bitNodeN !== 4) {ramCost *= 8;}
- return ramCost;
- }
- }
- if (_Player_js__WEBPACK_IMPORTED_MODULE_15__["Player"].bitNodeN != 4) {
- if (!(hasSingularitySF && singularitySFLvl >= 1)) {
- throw Object(_NetscriptEvaluator_js__WEBPACK_IMPORTED_MODULE_24__["makeRuntimeRejectMsg"])(workerScript, "Cannot run purchaseTor(). It is a Singularity Function and requires SourceFile-4 (level 1) to run.");
- return false;
- }
- }
-
- if (_SpecialServerIps_js__WEBPACK_IMPORTED_MODULE_19__["SpecialServerIps"]["Darkweb Server"] != null) {
- workerScript.scriptRef.log("You already have a TOR router! purchaseTor() failed");
- return false;
- }
-
- if (_Player_js__WEBPACK_IMPORTED_MODULE_15__["Player"].money.lt(_Constants_js__WEBPACK_IMPORTED_MODULE_6__["CONSTANTS"].TorRouterCost)) {
- workerScript.scriptRef.log("ERROR: You cannot afford to purchase a Tor router. purchaseTor() failed");
- return false;
- }
- _Player_js__WEBPACK_IMPORTED_MODULE_15__["Player"].loseMoney(_Constants_js__WEBPACK_IMPORTED_MODULE_6__["CONSTANTS"].TorRouterCost);
-
- var darkweb = new _Server_js__WEBPACK_IMPORTED_MODULE_17__["Server"]({
- ip:Object(_utils_IPAddress_js__WEBPACK_IMPORTED_MODULE_30__["createRandomIp"])(), hostname:"darkweb", organizationName:"",
- isConnectedTo:false, adminRights:false, purchasedByPlayer:false, maxRam:1
- });
- Object(_Server_js__WEBPACK_IMPORTED_MODULE_17__["AddToAllServers"])(darkweb);
- _SpecialServerIps_js__WEBPACK_IMPORTED_MODULE_19__["SpecialServerIps"].addIp("Darkweb Server", darkweb.ip);
-
- document.getElementById("location-purchase-tor").setAttribute("class", "a-link-button-inactive");
-
- _Player_js__WEBPACK_IMPORTED_MODULE_15__["Player"].getHomeComputer().serversOnNetwork.push(darkweb.ip);
- darkweb.serversOnNetwork.push(_Player_js__WEBPACK_IMPORTED_MODULE_15__["Player"].getHomeComputer().ip);
- _Player_js__WEBPACK_IMPORTED_MODULE_15__["Player"].gainIntelligenceExp(_Constants_js__WEBPACK_IMPORTED_MODULE_6__["CONSTANTS"].IntelligenceSingFnBaseExpGain);
- if (workerScript.disableLogs.ALL == null && workerScript.disableLogs.purchaseTor == null) {
- workerScript.scriptRef.log("You have purchased a Tor router!");
- }
- return true;
- },
- purchaseProgram(programName) {
- if (workerScript.checkingRam) {
- if (workerScript.loadedFns.purchaseProgram) {
- return 0;
- } else {
- workerScript.loadedFns.purchaseProgram = true;
- var ramCost = _Constants_js__WEBPACK_IMPORTED_MODULE_6__["CONSTANTS"].ScriptSingularityFn1RamCost;
- if (_Player_js__WEBPACK_IMPORTED_MODULE_15__["Player"].bitNodeN !== 4) {ramCost *= 8;}
- return ramCost;
- }
- }
- if (_Player_js__WEBPACK_IMPORTED_MODULE_15__["Player"].bitNodeN != 4) {
- if (!(hasSingularitySF && singularitySFLvl >= 1)) {
- throw Object(_NetscriptEvaluator_js__WEBPACK_IMPORTED_MODULE_24__["makeRuntimeRejectMsg"])(workerScript, "Cannot run purchaseProgram(). It is a Singularity Function and requires SourceFile-4 (level 1) to run.");
- return false;
- }
- }
-
- if (_SpecialServerIps_js__WEBPACK_IMPORTED_MODULE_19__["SpecialServerIps"]["Darkweb Server"] == null) {
- workerScript.scriptRef.log("ERROR: You do not have TOR router. purchaseProgram() failed.");
- return false;
- }
-
- switch(programName.toLowerCase()) {
- case _CreateProgram_js__WEBPACK_IMPORTED_MODULE_7__["Programs"].BruteSSHProgram.toLowerCase():
- var price = Object(_DarkWeb_js__WEBPACK_IMPORTED_MODULE_8__["parseDarkwebItemPrice"])(_DarkWeb_js__WEBPACK_IMPORTED_MODULE_8__["DarkWebItems"].BruteSSHProgram);
- if (price > 0 && _Player_js__WEBPACK_IMPORTED_MODULE_15__["Player"].money.gt(price)) {
- _Player_js__WEBPACK_IMPORTED_MODULE_15__["Player"].loseMoney(price);
- _Player_js__WEBPACK_IMPORTED_MODULE_15__["Player"].getHomeComputer().programs.push(_CreateProgram_js__WEBPACK_IMPORTED_MODULE_7__["Programs"].BruteSSHProgram);
- if (workerScript.disableLogs.ALL == null && workerScript.disableLogs.purchaseProgram == null) {
- workerScript.scriptRef.log("You have purchased the BruteSSH.exe program. The new program can be found on your home computer.");
- }
- } else {
- workerScript.scriptRef.log("Not enough money to purchase " + programName);
- return false;
- }
- return true;
- case _CreateProgram_js__WEBPACK_IMPORTED_MODULE_7__["Programs"].FTPCrackProgram.toLowerCase():
- var price = Object(_DarkWeb_js__WEBPACK_IMPORTED_MODULE_8__["parseDarkwebItemPrice"])(_DarkWeb_js__WEBPACK_IMPORTED_MODULE_8__["DarkWebItems"].FTPCrackProgram);
- if (price > 0 && _Player_js__WEBPACK_IMPORTED_MODULE_15__["Player"].money.gt(price)) {
- _Player_js__WEBPACK_IMPORTED_MODULE_15__["Player"].loseMoney(price);
- _Player_js__WEBPACK_IMPORTED_MODULE_15__["Player"].getHomeComputer().programs.push(_CreateProgram_js__WEBPACK_IMPORTED_MODULE_7__["Programs"].FTPCrackProgram);
- if (workerScript.disableLogs.ALL == null && workerScript.disableLogs.purchaseProgram == null) {
- workerScript.scriptRef.log("You have purchased the FTPCrack.exe program. The new program can be found on your home computer.");
- }
- } else {
- workerScript.scriptRef.log("Not enough money to purchase " + programName);
- return false;
- }
- return true;
- case _CreateProgram_js__WEBPACK_IMPORTED_MODULE_7__["Programs"].RelaySMTPProgram.toLowerCase():
- var price = Object(_DarkWeb_js__WEBPACK_IMPORTED_MODULE_8__["parseDarkwebItemPrice"])(_DarkWeb_js__WEBPACK_IMPORTED_MODULE_8__["DarkWebItems"].RelaySMTPProgram);
- if (price > 0 && _Player_js__WEBPACK_IMPORTED_MODULE_15__["Player"].money.gt(price)) {
- _Player_js__WEBPACK_IMPORTED_MODULE_15__["Player"].loseMoney(price);
- _Player_js__WEBPACK_IMPORTED_MODULE_15__["Player"].getHomeComputer().programs.push(_CreateProgram_js__WEBPACK_IMPORTED_MODULE_7__["Programs"].RelaySMTPProgram);
- if (workerScript.disableLogs.ALL == null && workerScript.disableLogs.purchaseProgram == null) {
- workerScript.scriptRef.log("You have purchased the relaySMTP.exe program. The new program can be found on your home computer.");
- }
- } else {
- workerScript.scriptRef.log("Not enough money to purchase " + programName);
- return false;
- }
- return true;
- case _CreateProgram_js__WEBPACK_IMPORTED_MODULE_7__["Programs"].HTTPWormProgram.toLowerCase():
- var price = Object(_DarkWeb_js__WEBPACK_IMPORTED_MODULE_8__["parseDarkwebItemPrice"])(_DarkWeb_js__WEBPACK_IMPORTED_MODULE_8__["DarkWebItems"].HTTPWormProgram);
- if (price > 0 && _Player_js__WEBPACK_IMPORTED_MODULE_15__["Player"].money.gt(price)) {
- _Player_js__WEBPACK_IMPORTED_MODULE_15__["Player"].loseMoney(price);
- _Player_js__WEBPACK_IMPORTED_MODULE_15__["Player"].getHomeComputer().programs.push(_CreateProgram_js__WEBPACK_IMPORTED_MODULE_7__["Programs"].HTTPWormProgram);
- if (workerScript.disableLogs.ALL == null && workerScript.disableLogs.purchaseProgram == null) {
- workerScript.scriptRef.log("You have purchased the HTTPWorm.exe program. The new program can be found on your home computer.");
- }
- } else {
- workerScript.scriptRef.log("Not enough money to purchase " + programName);
- return false;
- }
- return true;
- case _CreateProgram_js__WEBPACK_IMPORTED_MODULE_7__["Programs"].SQLInjectProgram.toLowerCase():
- var price = Object(_DarkWeb_js__WEBPACK_IMPORTED_MODULE_8__["parseDarkwebItemPrice"])(_DarkWeb_js__WEBPACK_IMPORTED_MODULE_8__["DarkWebItems"].SQLInjectProgram);
- if (price > 0 && _Player_js__WEBPACK_IMPORTED_MODULE_15__["Player"].money.gt(price)) {
- _Player_js__WEBPACK_IMPORTED_MODULE_15__["Player"].loseMoney(price);
- _Player_js__WEBPACK_IMPORTED_MODULE_15__["Player"].getHomeComputer().programs.push(_CreateProgram_js__WEBPACK_IMPORTED_MODULE_7__["Programs"].SQLInjectProgram);
- if (workerScript.disableLogs.ALL == null && workerScript.disableLogs.purchaseProgram == null) {
- workerScript.scriptRef.log("You have purchased the SQLInject.exe program. The new program can be found on your home computer.");
- }
- } else {
- workerScript.scriptRef.log("Not enough money to purchase " + programName);
- return false;
- }
- return true;
- case _CreateProgram_js__WEBPACK_IMPORTED_MODULE_7__["Programs"].DeepscanV1.toLowerCase():
- var price = Object(_DarkWeb_js__WEBPACK_IMPORTED_MODULE_8__["parseDarkwebItemPrice"])(_DarkWeb_js__WEBPACK_IMPORTED_MODULE_8__["DarkWebItems"].DeepScanV1Program);
- if (price > 0 && _Player_js__WEBPACK_IMPORTED_MODULE_15__["Player"].money.gt(price)) {
- _Player_js__WEBPACK_IMPORTED_MODULE_15__["Player"].loseMoney(price);
- _Player_js__WEBPACK_IMPORTED_MODULE_15__["Player"].getHomeComputer().programs.push(_CreateProgram_js__WEBPACK_IMPORTED_MODULE_7__["Programs"].DeepscanV1);
- if (workerScript.disableLogs.ALL == null && workerScript.disableLogs.purchaseProgram == null) {
- workerScript.scriptRef.log("You have purchased the DeepscanV1.exe program. The new program can be found on your home computer.");
- }
- } else {
- workerScript.scriptRef.log("Not enough money to purchase " + programName);
- return false;
- }
- return true;
- case _CreateProgram_js__WEBPACK_IMPORTED_MODULE_7__["Programs"].DeepscanV2.toLowerCase():
- var price = Object(_DarkWeb_js__WEBPACK_IMPORTED_MODULE_8__["parseDarkwebItemPrice"])(_DarkWeb_js__WEBPACK_IMPORTED_MODULE_8__["DarkWebItems"].DeepScanV2Program);
- if (price > 0 && _Player_js__WEBPACK_IMPORTED_MODULE_15__["Player"].money.gt(price)) {
- _Player_js__WEBPACK_IMPORTED_MODULE_15__["Player"].loseMoney(price);
- _Player_js__WEBPACK_IMPORTED_MODULE_15__["Player"].getHomeComputer().programs.push(_CreateProgram_js__WEBPACK_IMPORTED_MODULE_7__["Programs"].DeepscanV2);
- if (workerScript.disableLogs.ALL == null && workerScript.disableLogs.purchaseProgram == null) {
- workerScript.scriptRef.log("You have purchased the DeepscanV2.exe program. The new program can be found on your home computer.");
- }
- } else {
- workerScript.scriptRef.log("Not enough money to purchase " + programName);
- return false;
- }
- return true;
- default:
- workerScript.scriptRef.log("ERROR: Invalid program passed into purchaseProgram().");
- return false;
- }
- return true;
- },
- getStats : function() {
- if (workerScript.checkingRam) {
- if (workerScript.loadedFns.getStats) {
- return 0;
- } else {
- workerScript.loadedFns.getStats = true;
- var ramCost = _Constants_js__WEBPACK_IMPORTED_MODULE_6__["CONSTANTS"].ScriptSingularityFn1RamCost / 4;
- if (_Player_js__WEBPACK_IMPORTED_MODULE_15__["Player"].bitNodeN !== 4) {ramCost *= 8;}
- return ramCost;
- }
- }
- if (_Player_js__WEBPACK_IMPORTED_MODULE_15__["Player"].bitNodeN != 4) {
- if (!(hasSingularitySF && singularitySFLvl >= 1)) {
- throw Object(_NetscriptEvaluator_js__WEBPACK_IMPORTED_MODULE_24__["makeRuntimeRejectMsg"])(workerScript, "Cannot run getStats(). It is a Singularity Function and requires SourceFile-4 (level 1) to run.");
- return {};
- }
- }
-
- return {
- hacking: _Player_js__WEBPACK_IMPORTED_MODULE_15__["Player"].hacking_skill,
- strength: _Player_js__WEBPACK_IMPORTED_MODULE_15__["Player"].strength,
- defense: _Player_js__WEBPACK_IMPORTED_MODULE_15__["Player"].defense,
- dexterity: _Player_js__WEBPACK_IMPORTED_MODULE_15__["Player"].dexterity,
- agility: _Player_js__WEBPACK_IMPORTED_MODULE_15__["Player"].agility,
- charisma: _Player_js__WEBPACK_IMPORTED_MODULE_15__["Player"].charisma,
- intelligence: _Player_js__WEBPACK_IMPORTED_MODULE_15__["Player"].intelligence
- }
- },
- getCharacterInformation : function() {
- if (workerScript.checkingRam) {
- if (workerScript.loadedFns.getCharacterInformation) {
- return 0;
- } else {
- workerScript.loadedFns.getCharacterInformation = true;
- var ramCost = _Constants_js__WEBPACK_IMPORTED_MODULE_6__["CONSTANTS"].ScriptSingularityFn1RamCost / 4;
- if (_Player_js__WEBPACK_IMPORTED_MODULE_15__["Player"].bitNodeN !== 4) {ramCost *= 8;}
- return ramCost;
- }
- }
-
- if (_Player_js__WEBPACK_IMPORTED_MODULE_15__["Player"].bitNodeN != 4) {
- if (!(hasSingularitySF && singularitySFLvl >= 1)) {
- throw Object(_NetscriptEvaluator_js__WEBPACK_IMPORTED_MODULE_24__["makeRuntimeRejectMsg"])(workerScript, "Cannot run getCharacterInformation(). It is a Singularity Function and requires SourceFile-4 (level 1) to run.");
- return {};
- }
- }
-
- var companyPositionTitle = "";
- if (_Player_js__WEBPACK_IMPORTED_MODULE_15__["Player"].companyPosition instanceof _Company_js__WEBPACK_IMPORTED_MODULE_5__["CompanyPosition"]) {
- companyPositionTitle = _Player_js__WEBPACK_IMPORTED_MODULE_15__["Player"].companyPosition.positionName;
- }
- return {
- bitnode: _Player_js__WEBPACK_IMPORTED_MODULE_15__["Player"].bitNodeN,
- company: _Player_js__WEBPACK_IMPORTED_MODULE_15__["Player"].companyName,
- jobTitle: companyPositionTitle,
- city: _Player_js__WEBPACK_IMPORTED_MODULE_15__["Player"].city,
- factions: _Player_js__WEBPACK_IMPORTED_MODULE_15__["Player"].factions.slice(),
- tor: _SpecialServerIps_js__WEBPACK_IMPORTED_MODULE_19__["SpecialServerIps"].hasOwnProperty("Darkweb Server"),
- timeWorked: _Player_js__WEBPACK_IMPORTED_MODULE_15__["Player"].timeWorked,
- workHackExpGain: _Player_js__WEBPACK_IMPORTED_MODULE_15__["Player"].workHackExpGained,
- workStrExpGain: _Player_js__WEBPACK_IMPORTED_MODULE_15__["Player"].workStrExpGained,
- workDefExpGain: _Player_js__WEBPACK_IMPORTED_MODULE_15__["Player"].workDefExpGained,
- workDexExpGain: _Player_js__WEBPACK_IMPORTED_MODULE_15__["Player"].workDexExpGained,
- workAgiExpGain: _Player_js__WEBPACK_IMPORTED_MODULE_15__["Player"].workAgiExpGained,
- workChaExpGain: _Player_js__WEBPACK_IMPORTED_MODULE_15__["Player"].workChaExpGained,
- workRepGain: _Player_js__WEBPACK_IMPORTED_MODULE_15__["Player"].workRepGained,
- workMoneyGain: _Player_js__WEBPACK_IMPORTED_MODULE_15__["Player"].workMoneyGained,
- };
- },
- isBusy : function() {
- if (workerScript.checkingRam) {
- if (workerScript.loadedFns.isBusy) {
- return 0;
- } else {
- workerScript.loadedFns.isBusy = true;
- var ramCost = _Constants_js__WEBPACK_IMPORTED_MODULE_6__["CONSTANTS"].ScriptSingularityFn1RamCost / 4;
- if (_Player_js__WEBPACK_IMPORTED_MODULE_15__["Player"].bitNodeN !== 4) {ramCost *= 8;}
- return ramCost;
- }
- }
- if (_Player_js__WEBPACK_IMPORTED_MODULE_15__["Player"].bitNodeN != 4) {
- if (!(hasSingularitySF && singularitySFLvl >= 1)) {
- throw Object(_NetscriptEvaluator_js__WEBPACK_IMPORTED_MODULE_24__["makeRuntimeRejectMsg"])(workerScript, "Cannot run isBusy(). It is a Singularity Function and requires SourceFile-4 (level 1) to run.");
- return;
- }
- }
- return _Player_js__WEBPACK_IMPORTED_MODULE_15__["Player"].isWorking;
- },
- stopAction : function() {
- if (workerScript.checkingRam) {
- if (workerScript.loadedFns.stopAction) {
- return 0;
- } else {
- workerScript.loadedFns.stopAction = true;
- var ramCost = _Constants_js__WEBPACK_IMPORTED_MODULE_6__["CONSTANTS"].ScriptSingularityFn1RamCost / 2;
- if (_Player_js__WEBPACK_IMPORTED_MODULE_15__["Player"].bitNodeN !== 4) {ramCost *= 8;}
- return ramCost;
- }
- }
- if (_Player_js__WEBPACK_IMPORTED_MODULE_15__["Player"].bitNodeN != 4) {
- if (!(hasSingularitySF && singularitySFLvl >= 1)) {
- throw Object(_NetscriptEvaluator_js__WEBPACK_IMPORTED_MODULE_24__["makeRuntimeRejectMsg"])(workerScript, "Cannot run stopAction(). It is a Singularity Function and requires SourceFile-4 (level 1) to run.");
- return false;
- }
- }
- if (_Player_js__WEBPACK_IMPORTED_MODULE_15__["Player"].isWorking) {
- var txt = _Player_js__WEBPACK_IMPORTED_MODULE_15__["Player"].singularityStopWork();
- if (workerScript.disableLogs.ALL == null && workerScript.disableLogs.stopAction == null) {
- workerScript.scriptRef.log(txt);
- }
- return true;
- }
- return false;
- },
- upgradeHomeRam : function() {
- if (workerScript.checkingRam) {
- if (workerScript.loadedFns.upgradeHomeRam) {
- return 0;
- } else {
- workerScript.loadedFns.upgradeHomeRam = true;
- var ramCost = _Constants_js__WEBPACK_IMPORTED_MODULE_6__["CONSTANTS"].ScriptSingularityFn2RamCost;
- if (_Player_js__WEBPACK_IMPORTED_MODULE_15__["Player"].bitNodeN !== 4) {ramCost *= 8;}
- return ramCost;
- }
- }
- if (_Player_js__WEBPACK_IMPORTED_MODULE_15__["Player"].bitNodeN != 4) {
- if (!(hasSingularitySF && singularitySFLvl >= 2)) {
- throw Object(_NetscriptEvaluator_js__WEBPACK_IMPORTED_MODULE_24__["makeRuntimeRejectMsg"])(workerScript, "Cannot run upgradeHomeRam(). It is a Singularity Function and requires SourceFile-4 (level 2) to run.");
- return false;
- }
- }
-
- //Calculate how many times ram has been upgraded (doubled)
- var currentRam = _Player_js__WEBPACK_IMPORTED_MODULE_15__["Player"].getHomeComputer().maxRam;
- var numUpgrades = Math.log2(currentRam);
-
- //Calculate cost
- //Have cost increase by some percentage each time RAM has been upgraded
- var cost = currentRam * _Constants_js__WEBPACK_IMPORTED_MODULE_6__["CONSTANTS"].BaseCostFor1GBOfRamHome;
- var mult = Math.pow(1.55, numUpgrades);
- cost = cost * mult;
-
- if (_Player_js__WEBPACK_IMPORTED_MODULE_15__["Player"].money.lt(cost)) {
- workerScript.scriptRef.log("ERROR: upgradeHomeRam() failed because you don't have enough money");
- return false;
- }
-
- var homeComputer = _Player_js__WEBPACK_IMPORTED_MODULE_15__["Player"].getHomeComputer();
- homeComputer.maxRam *= 2;
-
- _Player_js__WEBPACK_IMPORTED_MODULE_15__["Player"].loseMoney(cost);
-
- _Player_js__WEBPACK_IMPORTED_MODULE_15__["Player"].gainIntelligenceExp(_Constants_js__WEBPACK_IMPORTED_MODULE_6__["CONSTANTS"].IntelligenceSingFnBaseExpGain);
- if (workerScript.disableLogs.ALL == null && workerScript.disableLogs.upgradeHomeRam == null) {
- workerScript.scriptRef.log("Purchased additional RAM for home computer! It now has " + homeComputer.maxRam + "GB of RAM.");
- }
- return true;
- },
- getUpgradeHomeRamCost : function() {
- if (workerScript.checkingRam) {
- if (workerScript.loadedFns.getUpgradeHomeRamCost) {
- return 0;
- } else {
- workerScript.loadedFns.getUpgradeHomeRamCost = true;
- var ramCost = _Constants_js__WEBPACK_IMPORTED_MODULE_6__["CONSTANTS"].ScriptSingularityFn2RamCost / 2;
- if (_Player_js__WEBPACK_IMPORTED_MODULE_15__["Player"].bitNodeN !== 4) {ramCost *= 8;}
- return ramCost;
- }
- }
- if (_Player_js__WEBPACK_IMPORTED_MODULE_15__["Player"].bitNodeN != 4) {
- if (!(hasSingularitySF && singularitySFLvl >= 2)) {
- throw Object(_NetscriptEvaluator_js__WEBPACK_IMPORTED_MODULE_24__["makeRuntimeRejectMsg"])(workerScript, "Cannot run getUpgradeHomeRamCost(). It is a Singularity Function and requires SourceFile-4 (level 2) to run.");
- return false;
- }
- }
-
- //Calculate how many times ram has been upgraded (doubled)
- var currentRam = _Player_js__WEBPACK_IMPORTED_MODULE_15__["Player"].getHomeComputer().maxRam;
- var numUpgrades = Math.log2(currentRam);
-
- //Calculate cost
- //Have cost increase by some percentage each time RAM has been upgraded
- var cost = currentRam * _Constants_js__WEBPACK_IMPORTED_MODULE_6__["CONSTANTS"].BaseCostFor1GBOfRamHome;
- var mult = Math.pow(1.55, numUpgrades);
- return cost * mult;
- },
- workForCompany : function() {
- if (workerScript.checkingRam) {
- if (workerScript.loadedFns.workForCompany) {
- return 0;
- } else {
- workerScript.loadedFns.workForCompany = true;
- var ramCost = _Constants_js__WEBPACK_IMPORTED_MODULE_6__["CONSTANTS"].ScriptSingularityFn2RamCost;
- if (_Player_js__WEBPACK_IMPORTED_MODULE_15__["Player"].bitNodeN !== 4) {ramCost *= 8;}
- return ramCost;
- }
- }
- if (_Player_js__WEBPACK_IMPORTED_MODULE_15__["Player"].bitNodeN != 4) {
- if (!(hasSingularitySF && singularitySFLvl >= 2)) {
- throw Object(_NetscriptEvaluator_js__WEBPACK_IMPORTED_MODULE_24__["makeRuntimeRejectMsg"])(workerScript, "Cannot run workForCompany(). It is a Singularity Function and requires SourceFile-4 (level 2) to run.");
- return false;
- }
- }
-
- if (_Missions_js__WEBPACK_IMPORTED_MODULE_14__["inMission"]) {
- workerScript.scriptRef.log("ERROR: workForCompany() failed because you are in the middle of a mission.");
- return;
- }
-
- if (_Player_js__WEBPACK_IMPORTED_MODULE_15__["Player"].companyPosition == "" || !(_Player_js__WEBPACK_IMPORTED_MODULE_15__["Player"].companyPosition instanceof _Company_js__WEBPACK_IMPORTED_MODULE_5__["CompanyPosition"])) {
- workerScript.scriptRef.log("ERROR: workForCompany() failed because you do not have a job");
- return false;
- }
-
- if (_Player_js__WEBPACK_IMPORTED_MODULE_15__["Player"].isWorking) {
- var txt = _Player_js__WEBPACK_IMPORTED_MODULE_15__["Player"].singularityStopWork();
- if (workerScript.disableLogs.ALL == null && workerScript.disableLogs.workForCompany == null) {
- workerScript.scriptRef.log(txt);
- }
- }
-
- if (_Player_js__WEBPACK_IMPORTED_MODULE_15__["Player"].companyPosition.isPartTimeJob()) {
- _Player_js__WEBPACK_IMPORTED_MODULE_15__["Player"].startWorkPartTime();
- } else {
- _Player_js__WEBPACK_IMPORTED_MODULE_15__["Player"].startWork();
- }
- if (workerScript.disableLogs.ALL == null && workerScript.disableLogs.workForCompany == null) {
- workerScript.scriptRef.log("Began working at " + _Player_js__WEBPACK_IMPORTED_MODULE_15__["Player"].companyName + " as a " + _Player_js__WEBPACK_IMPORTED_MODULE_15__["Player"].companyPosition.positionName);
- }
- return true;
- },
- applyToCompany : function(companyName, field) {
- if (workerScript.checkingRam) {
- if (workerScript.loadedFns.applyToCompany) {
- return 0;
- } else {
- workerScript.loadedFns.applyToCompany = true;
- var ramCost = _Constants_js__WEBPACK_IMPORTED_MODULE_6__["CONSTANTS"].ScriptSingularityFn2RamCost;
- if (_Player_js__WEBPACK_IMPORTED_MODULE_15__["Player"].bitNodeN !== 4) {ramCost *= 8;}
- return ramCost;
- }
- }
- if (_Player_js__WEBPACK_IMPORTED_MODULE_15__["Player"].bitNodeN != 4) {
- if (!(hasSingularitySF && singularitySFLvl >= 2)) {
- throw Object(_NetscriptEvaluator_js__WEBPACK_IMPORTED_MODULE_24__["makeRuntimeRejectMsg"])(workerScript, "Cannot run applyToCompany(). It is a Singularity Function and requires SourceFile-4 (level 2) to run.");
- return false;
- }
- }
-
- if (!Object(_Company_js__WEBPACK_IMPORTED_MODULE_5__["companyExists"])(companyName)) {
- workerScript.scriptRef.log("ERROR: applyToCompany() failed because specified company " + companyName + " does not exist.");
- return false;
- }
-
- _Player_js__WEBPACK_IMPORTED_MODULE_15__["Player"].location = companyName;
- var res;
- switch (field.toLowerCase()) {
- case "software":
- res = _Player_js__WEBPACK_IMPORTED_MODULE_15__["Player"].applyForSoftwareJob(true);
- break;
- case "software consultant":
- res = _Player_js__WEBPACK_IMPORTED_MODULE_15__["Player"].applyForSoftwareConsultantJob(true);
- break;
- case "it":
- res = _Player_js__WEBPACK_IMPORTED_MODULE_15__["Player"].applyForItJob(true);
- break;
- case "security engineer":
- res = _Player_js__WEBPACK_IMPORTED_MODULE_15__["Player"].applyForSecurityEngineerJob(true);
- break;
- case "network engineer":
- res = _Player_js__WEBPACK_IMPORTED_MODULE_15__["Player"].applyForNetworkEngineerJob(true);
- break;
- case "business":
- res = _Player_js__WEBPACK_IMPORTED_MODULE_15__["Player"].applyForBusinessJob(true);
- break;
- case "business consultant":
- res = _Player_js__WEBPACK_IMPORTED_MODULE_15__["Player"].applyForBusinessConsultantJob(true);
- break;
- case "security":
- res = _Player_js__WEBPACK_IMPORTED_MODULE_15__["Player"].applyForSecurityJob(true);
- break;
- case "agent":
- res = _Player_js__WEBPACK_IMPORTED_MODULE_15__["Player"].applyForAgentJob(true);
- break;
- case "employee":
- res = _Player_js__WEBPACK_IMPORTED_MODULE_15__["Player"].applyForEmployeeJob(true);
- break;
- case "part-time employee":
- res = _Player_js__WEBPACK_IMPORTED_MODULE_15__["Player"].applyForPartTimeEmployeeJob(true);
- break;
- case "waiter":
- res = _Player_js__WEBPACK_IMPORTED_MODULE_15__["Player"].applyForWaiterJob(true);
- break;
- case "part-time waiter":
- res = _Player_js__WEBPACK_IMPORTED_MODULE_15__["Player"].applyForPartTimeWaiterJob(true);
- break;
- default:
- workerScript.scriptRef.log("ERROR: Invalid job passed into applyToCompany: " + field + ". applyToCompany() failed");
- return false;
- }
- //The Player object's applyForJob function can return string with special error messages
- if (Object(_utils_StringHelperFunctions_js__WEBPACK_IMPORTED_MODULE_31__["isString"])(res)) {
- workerScript.scriptRef.log(res);
- return false;
- }
- if (res) {
- if (workerScript.disableLogs.ALL == null && workerScript.disableLogs.applyToCompany == null) {
- workerScript.scriptRef.log("You were offered a new job at " + companyName + " as a " + _Player_js__WEBPACK_IMPORTED_MODULE_15__["Player"].companyPosition.positionName);
- }
- } else {
- if (workerScript.disableLogs.ALL == null && workerScript.disableLogs.applyToCompany == null) {
- workerScript.scriptRef.log("You failed to get a new job/promotion at " + companyName + " in the " + field + " field.");
- }
- }
- return res;
- },
- getCompanyRep : function(companyName) {
- if (workerScript.checkingRam) {
- if (workerScript.loadedFns.getCompanyRep) {
- return 0;
- } else {
- workerScript.loadedFns.getCompanyRep = true;
- var ramCost = _Constants_js__WEBPACK_IMPORTED_MODULE_6__["CONSTANTS"].ScriptSingularityFn2RamCost / 4;
- if (_Player_js__WEBPACK_IMPORTED_MODULE_15__["Player"].bitNodeN !== 4) {ramCost *= 8;}
- return ramCost;
- }
- }
- if (_Player_js__WEBPACK_IMPORTED_MODULE_15__["Player"].bitNodeN != 4) {
- if (!(hasSingularitySF && singularitySFLvl >= 2)) {
- throw Object(_NetscriptEvaluator_js__WEBPACK_IMPORTED_MODULE_24__["makeRuntimeRejectMsg"])(workerScript, "Cannot run getCompanyRep(). It is a Singularity Function and requires SourceFile-4 (level 2) to run.");
- return false;
- }
- }
-
- var company = _Company_js__WEBPACK_IMPORTED_MODULE_5__["Companies"][companyName];
- if (company == null || !(company instanceof _Company_js__WEBPACK_IMPORTED_MODULE_5__["Company"])) {
- workerScript.scriptRef.log("ERROR: Invalid companyName passed into getCompanyRep(): " + companyName);
- return -1;
- }
- return company.playerReputation;
- },
- getCompanyFavor : function(companyName) {
- if (workerScript.checkingRam) {
- if (workerScript.loadedFns.getCompanyFavor) {
- return 0;
- } else {
- workerScript.loadedFns.getCompanyFavor = true;
- var ramCost = _Constants_js__WEBPACK_IMPORTED_MODULE_6__["CONSTANTS"].ScriptSingularityFn2RamCost / 4;
- if (_Player_js__WEBPACK_IMPORTED_MODULE_15__["Player"].bitNodeN !== 4) {ramCost *= 8;}
- return ramCost;
- }
- }
- if (_Player_js__WEBPACK_IMPORTED_MODULE_15__["Player"].bitNodeN != 4) {
- if (!(hasSingularitySF && singularitySFLvl >= 2)) {
- throw Object(_NetscriptEvaluator_js__WEBPACK_IMPORTED_MODULE_24__["makeRuntimeRejectMsg"])(workerScript, "Cannot run getCompanyFavor(). It is a Singularity Function and requires SourceFile-4 (level 2) to run.");
- return false;
- }
- }
-
- var company = _Company_js__WEBPACK_IMPORTED_MODULE_5__["Companies"][companyName];
- if (company == null || !(company instanceof _Company_js__WEBPACK_IMPORTED_MODULE_5__["Company"])) {
- workerScript.scriptRef.log("ERROR: Invalid companyName passed into getCompanyFavor(): " + companyName);
- return -1;
- }
- return company.favor;
- },
- checkFactionInvitations : function() {
- if (workerScript.checkingRam) {
- if (workerScript.loadedFns.checkFactionInvitations) {
- return 0;
- } else {
- workerScript.loadedFns.checkFactionInvitations = true;
- var ramCost = _Constants_js__WEBPACK_IMPORTED_MODULE_6__["CONSTANTS"].ScriptSingularityFn2RamCost;
- if (_Player_js__WEBPACK_IMPORTED_MODULE_15__["Player"].bitNodeN !== 4) {ramCost *= 8;}
- return ramCost;
- }
- }
- if (_Player_js__WEBPACK_IMPORTED_MODULE_15__["Player"].bitNodeN != 4) {
- if (!(hasSingularitySF && singularitySFLvl >= 2)) {
- throw Object(_NetscriptEvaluator_js__WEBPACK_IMPORTED_MODULE_24__["makeRuntimeRejectMsg"])(workerScript, "Cannot run checkFactionInvitations(). It is a Singularity Function and requires SourceFile-4 (level 2) to run.");
- return false;
- }
- }
- //Make a copy of Player.factionInvitations
- return _Player_js__WEBPACK_IMPORTED_MODULE_15__["Player"].factionInvitations.slice();
- },
- joinFaction : function(name) {
- if (workerScript.checkingRam) {
- if (workerScript.loadedFns.joinFaction) {
- return 0;
- } else {
- workerScript.loadedFns.joinFaction = true;
- var ramCost = _Constants_js__WEBPACK_IMPORTED_MODULE_6__["CONSTANTS"].ScriptSingularityFn2RamCost;
- if (_Player_js__WEBPACK_IMPORTED_MODULE_15__["Player"].bitNodeN !== 4) {ramCost *= 8;}
- return ramCost;
- }
- }
- if (_Player_js__WEBPACK_IMPORTED_MODULE_15__["Player"].bitNodeN != 4) {
- if (!(hasSingularitySF && singularitySFLvl >= 2)) {
- throw Object(_NetscriptEvaluator_js__WEBPACK_IMPORTED_MODULE_24__["makeRuntimeRejectMsg"])(workerScript, "Cannot run joinFaction(). It is a Singularity Function and requires SourceFile-4 (level 2) to run.");
- return false;
- }
- }
-
- if (!Object(_Faction_js__WEBPACK_IMPORTED_MODULE_10__["factionExists"])(name)) {
- workerScript.scriptRef.log("ERROR: Faction specified in joinFaction() does not exist.");
- return false;
- }
-
- if (!_Player_js__WEBPACK_IMPORTED_MODULE_15__["Player"].factionInvitations.includes(name)) {
- workerScript.scriptRef.log("ERROR: Cannot join " + name + " Faction because you have not been invited. joinFaction() failed");
- return false;
- }
-
- var index = _Player_js__WEBPACK_IMPORTED_MODULE_15__["Player"].factionInvitations.indexOf(name);
- if (index === -1) {
- //Redundant and should never happen...
- workerScript.scriptRef.log("ERROR: Cannot join " + name + " Faction because you have not been invited. joinFaction() failed");
- return false;
- }
- _Player_js__WEBPACK_IMPORTED_MODULE_15__["Player"].factionInvitations.splice(index, 1);
- var fac = _Faction_js__WEBPACK_IMPORTED_MODULE_10__["Factions"][name];
- Object(_Faction_js__WEBPACK_IMPORTED_MODULE_10__["joinFaction"])(fac);
- _Player_js__WEBPACK_IMPORTED_MODULE_15__["Player"].gainIntelligenceExp(_Constants_js__WEBPACK_IMPORTED_MODULE_6__["CONSTANTS"].IntelligenceSingFnBaseExpGain);
- if (workerScript.disableLogs.ALL == null && workerScript.disableLogs.joinFaction == null) {
- workerScript.scriptRef.log("Joined the " + name + " faction.");
- }
- return true;
- },
- workForFaction : function(name, type) {
- if (workerScript.checkingRam) {
- if (workerScript.loadedFns.workForFaction) {
- return 0;
- } else {
- workerScript.loadedFns.workForFaction = true;
- var ramCost = _Constants_js__WEBPACK_IMPORTED_MODULE_6__["CONSTANTS"].ScriptSingularityFn2RamCost;
- if (_Player_js__WEBPACK_IMPORTED_MODULE_15__["Player"].bitNodeN !== 4) {ramCost *= 8;}
- return ramCost;
- }
- }
- if (_Player_js__WEBPACK_IMPORTED_MODULE_15__["Player"].bitNodeN != 4) {
- if (!(hasSingularitySF && singularitySFLvl >= 2)) {
- throw Object(_NetscriptEvaluator_js__WEBPACK_IMPORTED_MODULE_24__["makeRuntimeRejectMsg"])(workerScript, "Cannot run workForFaction(). It is a Singularity Function and requires SourceFile-4 (level 2) to run.");
- return false;
- }
- }
-
- if (_Missions_js__WEBPACK_IMPORTED_MODULE_14__["inMission"]) {
- workerScript.scriptRef.log("ERROR: workForFaction() failed because you are in the middle of a mission.");
- return;
- }
-
- if (!Object(_Faction_js__WEBPACK_IMPORTED_MODULE_10__["factionExists"])(name)) {
- workerScript.scriptRef.log("ERROR: Faction specified in workForFaction() does not exist.");
- return false;
- }
-
- if (!_Player_js__WEBPACK_IMPORTED_MODULE_15__["Player"].factions.includes(name)) {
- workerScript.scriptRef.log("ERROR: workForFaction() failed because you are not a member of " + name);
- return false;
- }
-
- if (_Player_js__WEBPACK_IMPORTED_MODULE_15__["Player"].isWorking) {
- var txt = _Player_js__WEBPACK_IMPORTED_MODULE_15__["Player"].singularityStopWork();
- if (workerScript.disableLogs.ALL == null && workerScript.disableLogs.workForFaction == null) {
- workerScript.scriptRef.log(txt);
- }
- }
-
- var fac = _Faction_js__WEBPACK_IMPORTED_MODULE_10__["Factions"][name];
- //Arrays listing factions that allow each time of work
- var hackAvailable = ["Illuminati", "Daedalus", "The Covenant", "ECorp", "MegaCorp",
- "Bachman & Associates", "Blade Industries", "NWO", "Clarke Incorporated",
- "OmniTek Incorporated", "Four Sigma", "KuaiGong International",
- "Fulcrum Secret Technologies", "BitRunners", "The Black Hand",
- "NiteSec", "Chongqing", "Sector-12", "New Tokyo", "Aevum",
- "Ishima", "Volhaven", "Speakers for the Dead", "The Dark Army",
- "The Syndicate", "Silhouette", "Netburners", "Tian Di Hui", "CyberSec"];
- var fdWkAvailable = ["Illuminati", "Daedalus", "The Covenant", "ECorp", "MegaCorp",
- "Bachman & Associates", "Blade Industries", "NWO", "Clarke Incorporated",
- "OmniTek Incorporated", "Four Sigma", "KuaiGong International",
- "The Black Hand", "Chongqing", "Sector-12", "New Tokyo", "Aevum",
- "Ishima", "Volhaven", "Speakers for the Dead", "The Dark Army",
- "The Syndicate", "Silhouette", "Tetrads", "Slum Snakes"];
- var scWkAvailable = ["ECorp", "MegaCorp",
- "Bachman & Associates", "Blade Industries", "NWO", "Clarke Incorporated",
- "OmniTek Incorporated", "Four Sigma", "KuaiGong International",
- "Fulcrum Secret Technologies", "Chongqing", "Sector-12", "New Tokyo", "Aevum",
- "Ishima", "Volhaven", "Speakers for the Dead",
- "The Syndicate", "Tetrads", "Slum Snakes", "Tian Di Hui"];
-
- switch (type.toLowerCase()) {
- case "hacking":
- case "hacking contracts":
- case "hackingcontracts":
- if (!hackAvailable.includes(fac.name)) {
- workerScript.scriptRef.log("ERROR: Cannot carry out hacking contracts for " + fac.name + ". workForFaction() failed");
- return false;
- }
- _Player_js__WEBPACK_IMPORTED_MODULE_15__["Player"].startFactionHackWork(fac);
- workerScript.scriptRef.log("Started carrying out hacking contracts for " + fac.name);
- return true;
- case "field":
- case "fieldwork":
- case "field work":
- if (!fdWkAvailable.includes(fac.name)) {
- workerScript.scriptRef.log("ERROR: Cannot carry out field missions for " + fac.name + ". workForFaction() failed");
- return false;
- }
- _Player_js__WEBPACK_IMPORTED_MODULE_15__["Player"].startFactionFieldWork(fac);
- workerScript.scriptRef.log("Started carrying out field missions for " + fac.name);
- return true;
- case "security":
- case "securitywork":
- case "security work":
- if (!scWkAvailable.includes(fac.name)) {
- workerScript.scriptRef.log("ERROR: Cannot serve as security detail for " + fac.name + ". workForFaction() failed");
- return false;
- }
- _Player_js__WEBPACK_IMPORTED_MODULE_15__["Player"].startFactionSecurityWork(fac);
- workerScript.scriptRef.log("Started serving as security details for " + fac.name);
- return true;
- default:
- workerScript.scriptRef.log("ERROR: Invalid work type passed into workForFaction(): " + type);
- }
- return true;
- },
- getFactionRep : function(name) {
- if (workerScript.checkingRam) {
- if (workerScript.loadedFns.getFactionRep) {
- return 0;
- } else {
- workerScript.loadedFns.getFactionRep = true;
- var ramCost = _Constants_js__WEBPACK_IMPORTED_MODULE_6__["CONSTANTS"].ScriptSingularityFn2RamCost / 4;
- if (_Player_js__WEBPACK_IMPORTED_MODULE_15__["Player"].bitNodeN !== 4) {ramCost *= 8;}
- return ramCost;
- }
- }
- if (_Player_js__WEBPACK_IMPORTED_MODULE_15__["Player"].bitNodeN != 4) {
- if (!(hasSingularitySF && singularitySFLvl >= 2)) {
- throw Object(_NetscriptEvaluator_js__WEBPACK_IMPORTED_MODULE_24__["makeRuntimeRejectMsg"])(workerScript, "Cannot run getFactionRep(). It is a Singularity Function and requires SourceFile-4 (level 2) to run.");
- return -1;
- }
- }
-
- if (!Object(_Faction_js__WEBPACK_IMPORTED_MODULE_10__["factionExists"])(name)) {
- workerScript.scriptRef.log("ERROR: Faction specified in getFactionRep() does not exist.");
- return -1;
- }
-
- return _Faction_js__WEBPACK_IMPORTED_MODULE_10__["Factions"][name].playerReputation;
- },
- getFactionFavor : function(name) {
- if (workerScript.checkingRam) {
- if (workerScript.loadedFns.getFactionFavor) {
- return 0;
- } else {
- workerScript.loadedFns.getFactionFavor = true;
- var ramCost = _Constants_js__WEBPACK_IMPORTED_MODULE_6__["CONSTANTS"].ScriptSingularityFn2RamCost / 4;
- if (_Player_js__WEBPACK_IMPORTED_MODULE_15__["Player"].bitNodeN !== 4) {ramCost *= 8;}
- return ramCost;
- }
- }
- if (_Player_js__WEBPACK_IMPORTED_MODULE_15__["Player"].bitNodeN != 4) {
- if (!(hasSingularitySF && singularitySFLvl >= 2)) {
- throw Object(_NetscriptEvaluator_js__WEBPACK_IMPORTED_MODULE_24__["makeRuntimeRejectMsg"])(workerScript, "Cannot run getFactionFavor(). It is a Singularity Function and requires SourceFile-4 (level 2) to run.");
- return -1;
- }
- }
-
- if (!Object(_Faction_js__WEBPACK_IMPORTED_MODULE_10__["factionExists"])(name)) {
- workerScript.scriptRef.log("ERROR: Faction specified in getFactionFavor() does not exist.");
- return -1;
- }
-
- return _Faction_js__WEBPACK_IMPORTED_MODULE_10__["Factions"][name].favor;
- },
- createProgram : function(name) {
- if (workerScript.checkingRam) {
- if (workerScript.loadedFns.createProgram) {
- return 0;
- } else {
- workerScript.loadedFns.createProgram = true;
- var ramCost = _Constants_js__WEBPACK_IMPORTED_MODULE_6__["CONSTANTS"].ScriptSingularityFn3RamCost;
- if (_Player_js__WEBPACK_IMPORTED_MODULE_15__["Player"].bitNodeN !== 4) {ramCost *= 8;}
- return ramCost;
- }
- }
- if (_Player_js__WEBPACK_IMPORTED_MODULE_15__["Player"].bitNodeN != 4) {
- if (!(hasSingularitySF && singularitySFLvl >= 3)) {
- throw Object(_NetscriptEvaluator_js__WEBPACK_IMPORTED_MODULE_24__["makeRuntimeRejectMsg"])(workerScript, "Cannot run createProgram(). It is a Singularity Function and requires SourceFile-4 (level 3) to run.");
- return false;
- }
- }
- if (_Missions_js__WEBPACK_IMPORTED_MODULE_14__["inMission"]) {
- workerScript.scriptRef.log("ERROR: createProgram() failed because you are in the middle of a mission.");
- return;
- }
- if (_Player_js__WEBPACK_IMPORTED_MODULE_15__["Player"].isWorking) {
- var txt = _Player_js__WEBPACK_IMPORTED_MODULE_15__["Player"].singularityStopWork();
- if (workerScript.disableLogs.ALL == null && workerScript.disableLogs.createProgram == null) {
- workerScript.scriptRef.log(txt);
- }
- }
-
- switch(name.toLowerCase()) {
- case _CreateProgram_js__WEBPACK_IMPORTED_MODULE_7__["Programs"].NukeProgram.toLowerCase():
- _Player_js__WEBPACK_IMPORTED_MODULE_15__["Player"].startCreateProgramWork(_CreateProgram_js__WEBPACK_IMPORTED_MODULE_7__["Programs"].NukeProgram, _Constants_js__WEBPACK_IMPORTED_MODULE_6__["CONSTANTS"].MillisecondsPerFiveMinutes, 1);
- break;
- case _CreateProgram_js__WEBPACK_IMPORTED_MODULE_7__["Programs"].BruteSSHProgram.toLowerCase():
- if (_Player_js__WEBPACK_IMPORTED_MODULE_15__["Player"].hacking_skill < 50) {
- workerScript.scriptRef.log("ERROR: createProgram() failed because hacking level is too low to create BruteSSH (level 50 req)");
- return false;
- }
- _Player_js__WEBPACK_IMPORTED_MODULE_15__["Player"].startCreateProgramWork(_CreateProgram_js__WEBPACK_IMPORTED_MODULE_7__["Programs"].BruteSSHProgram, _Constants_js__WEBPACK_IMPORTED_MODULE_6__["CONSTANTS"].MillisecondsPerFiveMinutes * 2, 50);
- break;
- case _CreateProgram_js__WEBPACK_IMPORTED_MODULE_7__["Programs"].FTPCrackProgram.toLowerCase():
- if (_Player_js__WEBPACK_IMPORTED_MODULE_15__["Player"].hacking_skill < 100) {
- workerScript.scriptRef.log("ERROR: createProgram() failed because hacking level is too low to create FTPCrack (level 100 req)");
- return false;
- }
- _Player_js__WEBPACK_IMPORTED_MODULE_15__["Player"].startCreateProgramWork(_CreateProgram_js__WEBPACK_IMPORTED_MODULE_7__["Programs"].FTPCrackProgram, _Constants_js__WEBPACK_IMPORTED_MODULE_6__["CONSTANTS"].MillisecondsPerHalfHour, 100);
- break;
- case _CreateProgram_js__WEBPACK_IMPORTED_MODULE_7__["Programs"].RelaySMTPProgram.toLowerCase():
- if (_Player_js__WEBPACK_IMPORTED_MODULE_15__["Player"].hacking_skill < 250) {
- workerScript.scriptRef.log("ERROR: createProgram() failed because hacking level is too low to create relaySMTP (level 250 req)");
- return false;
- }
- _Player_js__WEBPACK_IMPORTED_MODULE_15__["Player"].startCreateProgramWork(_CreateProgram_js__WEBPACK_IMPORTED_MODULE_7__["Programs"].RelaySMTPProgram, _Constants_js__WEBPACK_IMPORTED_MODULE_6__["CONSTANTS"].MillisecondsPer2Hours, 250);
- break;
- case _CreateProgram_js__WEBPACK_IMPORTED_MODULE_7__["Programs"].HTTPWormProgram.toLowerCase():
- if (_Player_js__WEBPACK_IMPORTED_MODULE_15__["Player"].hacking_skill < 500) {
- workerScript.scriptRef.log("ERROR: createProgram() failed because hacking level is too low to create HTTPWorm (level 500 req)");
- return false;
- }
- _Player_js__WEBPACK_IMPORTED_MODULE_15__["Player"].startCreateProgramWork(_CreateProgram_js__WEBPACK_IMPORTED_MODULE_7__["Programs"].HTTPWormProgram, _Constants_js__WEBPACK_IMPORTED_MODULE_6__["CONSTANTS"].MillisecondsPer4Hours, 500);
- break;
- case _CreateProgram_js__WEBPACK_IMPORTED_MODULE_7__["Programs"].SQLInjectProgram.toLowerCase():
- if (_Player_js__WEBPACK_IMPORTED_MODULE_15__["Player"].hacking_skill < 750) {
- workerScript.scriptRef.log("ERROR: createProgram() failed because hacking level is too low to create SQLInject (level 750 req)");
- return false;
- }
- _Player_js__WEBPACK_IMPORTED_MODULE_15__["Player"].startCreateProgramWork(_CreateProgram_js__WEBPACK_IMPORTED_MODULE_7__["Programs"].SQLInjectProgram, _Constants_js__WEBPACK_IMPORTED_MODULE_6__["CONSTANTS"].MillisecondsPer8Hours, 750);
- break;
- case _CreateProgram_js__WEBPACK_IMPORTED_MODULE_7__["Programs"].DeepscanV1.toLowerCase():
- if (_Player_js__WEBPACK_IMPORTED_MODULE_15__["Player"].hacking_skill < 75) {
- workerScript.scriptRef.log("ERROR: createProgram() failed because hacking level is too low to create DeepscanV1 (level 75 req)");
- return false;
- }
- _Player_js__WEBPACK_IMPORTED_MODULE_15__["Player"].startCreateProgramWork(_CreateProgram_js__WEBPACK_IMPORTED_MODULE_7__["Programs"].DeepscanV1, _Constants_js__WEBPACK_IMPORTED_MODULE_6__["CONSTANTS"].MillisecondsPerQuarterHour, 75);
- break;
- case _CreateProgram_js__WEBPACK_IMPORTED_MODULE_7__["Programs"].DeepscanV2.toLowerCase():
- if (_Player_js__WEBPACK_IMPORTED_MODULE_15__["Player"].hacking_skill < 400) {
- workerScript.scriptRef.log("ERROR: createProgram() failed because hacking level is too low to create DeepscanV2 (level 400 req)");
- return false;
- }
- _Player_js__WEBPACK_IMPORTED_MODULE_15__["Player"].startCreateProgramWork(_CreateProgram_js__WEBPACK_IMPORTED_MODULE_7__["Programs"].DeepscanV2, _Constants_js__WEBPACK_IMPORTED_MODULE_6__["CONSTANTS"].MillisecondsPer2Hours, 400);
- break;
- case _CreateProgram_js__WEBPACK_IMPORTED_MODULE_7__["Programs"].ServerProfiler.toLowerCase():
- if (_Player_js__WEBPACK_IMPORTED_MODULE_15__["Player"].hacking_skill < 75) {
- workerScript.scriptRef.log("ERROR: createProgram() failed because hacking level is too low to create ServerProfiler (level 75 req)");
- return false;
- }
- _Player_js__WEBPACK_IMPORTED_MODULE_15__["Player"].startCreateProgramWork(_CreateProgram_js__WEBPACK_IMPORTED_MODULE_7__["Programs"].ServerProfiler, _Constants_js__WEBPACK_IMPORTED_MODULE_6__["CONSTANTS"].MillisecondsPerHalfHour, 75);
- break;
- case _CreateProgram_js__WEBPACK_IMPORTED_MODULE_7__["Programs"].AutoLink.toLowerCase():
- if (_Player_js__WEBPACK_IMPORTED_MODULE_15__["Player"].hacking_skill < 25) {
- workerScript.scriptRef.log("ERROR: createProgram() failed because hacking level is too low to create AutoLink (level 25 req)");
- return false;
- }
- _Player_js__WEBPACK_IMPORTED_MODULE_15__["Player"].startCreateProgramWork(_CreateProgram_js__WEBPACK_IMPORTED_MODULE_7__["Programs"].AutoLink, _Constants_js__WEBPACK_IMPORTED_MODULE_6__["CONSTANTS"].MillisecondsPerQuarterHour, 25);
- break;
- default:
- workerScript.scriptRef.log("ERROR: createProgram() failed because the specified program does not exist: " + name);
- return false;
- }
- workerScript.scriptRef.log("Began creating program: " + name);
- return true;
- },
- commitCrime : function(crime) {
- if (workerScript.checkingRam) {
- if (workerScript.loadedFns.commitCrime) {
- return 0;
- } else {
- workerScript.loadedFns.commitCrime = true;
- var ramCost = _Constants_js__WEBPACK_IMPORTED_MODULE_6__["CONSTANTS"].ScriptSingularityFn3RamCost;
- if (_Player_js__WEBPACK_IMPORTED_MODULE_15__["Player"].bitNodeN !== 4) {ramCost *= 8;}
- return ramCost;
- }
- }
- if (_Player_js__WEBPACK_IMPORTED_MODULE_15__["Player"].bitNodeN != 4) {
- if (!(hasSingularitySF && singularitySFLvl >= 3)) {
- throw Object(_NetscriptEvaluator_js__WEBPACK_IMPORTED_MODULE_24__["makeRuntimeRejectMsg"])(workerScript, "Cannot run commitCrime(). It is a Singularity Function and requires SourceFile-4 (level 3) to run.");
- return;
- }
- }
- if (_Missions_js__WEBPACK_IMPORTED_MODULE_14__["inMission"]) {
- workerScript.scriptRef.log("ERROR: commitCrime() failed because you are in the middle of a mission.");
- return;
- }
- if (_Player_js__WEBPACK_IMPORTED_MODULE_15__["Player"].isWorking) {
- var txt = _Player_js__WEBPACK_IMPORTED_MODULE_15__["Player"].singularityStopWork();
- if (workerScript.disableLogs.ALL == null && workerScript.disableLogs.commitCrime == null) {
- workerScript.scriptRef.log(txt);
- }
- }
-
- //Set Location to slums
- switch(_Player_js__WEBPACK_IMPORTED_MODULE_15__["Player"].city) {
- case _Location_js__WEBPACK_IMPORTED_MODULE_12__["Locations"].Aevum:
- _Player_js__WEBPACK_IMPORTED_MODULE_15__["Player"].location = _Location_js__WEBPACK_IMPORTED_MODULE_12__["Locations"].AevumSlums;
- break;
- case _Location_js__WEBPACK_IMPORTED_MODULE_12__["Locations"].Chongqing:
- _Player_js__WEBPACK_IMPORTED_MODULE_15__["Player"].location = _Location_js__WEBPACK_IMPORTED_MODULE_12__["Locations"].ChongqingSlums;
- break;
- case _Location_js__WEBPACK_IMPORTED_MODULE_12__["Locations"].Sector12:
- _Player_js__WEBPACK_IMPORTED_MODULE_15__["Player"].location = _Location_js__WEBPACK_IMPORTED_MODULE_12__["Locations"].Sector12Slums;
- break;
- case _Location_js__WEBPACK_IMPORTED_MODULE_12__["Locations"].NewTokyo:
- _Player_js__WEBPACK_IMPORTED_MODULE_15__["Player"].location = _Location_js__WEBPACK_IMPORTED_MODULE_12__["Locations"].NewTokyoSlums;
- break;
- case _Location_js__WEBPACK_IMPORTED_MODULE_12__["Locations"].Ishima:
- _Player_js__WEBPACK_IMPORTED_MODULE_15__["Player"].location = _Location_js__WEBPACK_IMPORTED_MODULE_12__["Locations"].IshimaSlums;
- break;
- case _Location_js__WEBPACK_IMPORTED_MODULE_12__["Locations"].Volhaven:
- _Player_js__WEBPACK_IMPORTED_MODULE_15__["Player"].location = _Location_js__WEBPACK_IMPORTED_MODULE_12__["Locations"].VolhavenSlums;
- break;
- default:
- console.log("Invalid Player.city value");
- }
-
- crime = crime.toLowerCase();
- let enableCommitCrimeLog = workerScript.disableLogs.ALL == null && workerScript.disableLogs.commitCrime == null
- if (crime.includes("shoplift")) {
- if(enableCommitCrimeLog) {workerScript.scriptRef.log("Attempting to shoplift...");}
- return Object(_Crimes_js__WEBPACK_IMPORTED_MODULE_3__["commitShopliftCrime"])(_Constants_js__WEBPACK_IMPORTED_MODULE_6__["CONSTANTS"].CrimeSingFnDivider, {workerscript: workerScript});
- } else if (crime.includes("rob") && crime.includes("store")) {
- if(enableCommitCrimeLog) {workerScript.scriptRef.log("Attempting to rob a store...");}
- return Object(_Crimes_js__WEBPACK_IMPORTED_MODULE_3__["commitRobStoreCrime"])(_Constants_js__WEBPACK_IMPORTED_MODULE_6__["CONSTANTS"].CrimeSingFnDivider, {workerscript: workerScript});
- } else if (crime.includes("mug")) {
- if(enableCommitCrimeLog) {workerScript.scriptRef.log("Attempting to mug someone...");}
- return Object(_Crimes_js__WEBPACK_IMPORTED_MODULE_3__["commitMugCrime"])(_Constants_js__WEBPACK_IMPORTED_MODULE_6__["CONSTANTS"].CrimeSingFnDivider, {workerscript: workerScript});
- } else if (crime.includes("larceny")) {
- if(enableCommitCrimeLog) {workerScript.scriptRef.log("Attempting to commit larceny...");}
- return Object(_Crimes_js__WEBPACK_IMPORTED_MODULE_3__["commitLarcenyCrime"])(_Constants_js__WEBPACK_IMPORTED_MODULE_6__["CONSTANTS"].CrimeSingFnDivider, {workerscript: workerScript});
- } else if (crime.includes("drugs")) {
- if(enableCommitCrimeLog) {workerScript.scriptRef.log("Attempting to deal drugs...");}
- return Object(_Crimes_js__WEBPACK_IMPORTED_MODULE_3__["commitDealDrugsCrime"])(_Constants_js__WEBPACK_IMPORTED_MODULE_6__["CONSTANTS"].CrimeSingFnDivider, {workerscript: workerScript});
- } else if (crime.includes("bond") && crime.includes("forge")) {
- if(enableCommitCrimeLog) {workerScript.scriptRef.log("Attempting to forge corporate bonds...");}
- return Object(_Crimes_js__WEBPACK_IMPORTED_MODULE_3__["commitBondForgeryCrime"])(_Constants_js__WEBPACK_IMPORTED_MODULE_6__["CONSTANTS"].CrimeSingFnDivider, {workerscript: workerScript});
- } else if (crime.includes("traffick") && crime.includes("arms")) {
- if(enableCommitCrimeLog) {workerScript.scriptRef.log("Attempting to traffick illegal arms...");}
- return Object(_Crimes_js__WEBPACK_IMPORTED_MODULE_3__["commitTraffickArmsCrime"])(_Constants_js__WEBPACK_IMPORTED_MODULE_6__["CONSTANTS"].CrimeSingFnDivider, {workerscript: workerScript});
- } else if (crime.includes("homicide")) {
- if(enableCommitCrimeLog) {workerScript.scriptRef.log("Attempting to commit homicide...");}
- return Object(_Crimes_js__WEBPACK_IMPORTED_MODULE_3__["commitHomicideCrime"])(_Constants_js__WEBPACK_IMPORTED_MODULE_6__["CONSTANTS"].CrimeSingFnDivider, {workerscript: workerScript});
- } else if (crime.includes("grand") && crime.includes("auto")) {
- if(enableCommitCrimeLog) {workerScript.scriptRef.log("Attempting to commit grand theft auto...");}
- return Object(_Crimes_js__WEBPACK_IMPORTED_MODULE_3__["commitGrandTheftAutoCrime"])(_Constants_js__WEBPACK_IMPORTED_MODULE_6__["CONSTANTS"].CrimeSingFnDivider, {workerscript: workerScript});
- } else if (crime.includes("kidnap")) {
- if(enableCommitCrimeLog) {workerScript.scriptRef.log("Attempting to kidnap and ransom a high-profile target...");}
- return Object(_Crimes_js__WEBPACK_IMPORTED_MODULE_3__["commitKidnapCrime"])(_Constants_js__WEBPACK_IMPORTED_MODULE_6__["CONSTANTS"].CrimeSingFnDivider, {workerscript: workerScript});
- } else if (crime.includes("assassinate")) {
- if(enableCommitCrimeLog) {workerScript.scriptRef.log("Attempting to assassinate a high-profile target...");}
- return Object(_Crimes_js__WEBPACK_IMPORTED_MODULE_3__["commitAssassinationCrime"])(_Constants_js__WEBPACK_IMPORTED_MODULE_6__["CONSTANTS"].CrimeSingFnDivider, {workerscript: workerScript})
- } else if (crime.includes("heist")) {
- if(enableCommitCrimeLog) {workerScript.scriptRef.log("Attempting to pull off a heist...");}
- return Object(_Crimes_js__WEBPACK_IMPORTED_MODULE_3__["commitHeistCrime"])(_Constants_js__WEBPACK_IMPORTED_MODULE_6__["CONSTANTS"].CrimeSingFnDivider, {workerscript: workerScript});
- } else {
- throw Object(_NetscriptEvaluator_js__WEBPACK_IMPORTED_MODULE_24__["makeRuntimeRejectMsg"])(workerScript, "Invalid crime passed into commitCrime(): " + crime);
- }
- },
- getCrimeChance : function(crime) {
- if (workerScript.checkingRam) {
- if (workerScript.loadedFns.getCrimeChance) {
- return 0;
- } else {
- workerScript.loadedFns.getCrimeChance = true;
- var ramCost = _Constants_js__WEBPACK_IMPORTED_MODULE_6__["CONSTANTS"].ScriptSingularityFn3RamCost;
- if (_Player_js__WEBPACK_IMPORTED_MODULE_15__["Player"].bitNodeN !== 4) {ramCost *= 8;}
- return ramCost;
- }
- }
- if (_Player_js__WEBPACK_IMPORTED_MODULE_15__["Player"].bitNodeN != 4) {
- if (!(hasSingularitySF && singularitySFLvl >= 3)) {
- throw Object(_NetscriptEvaluator_js__WEBPACK_IMPORTED_MODULE_24__["makeRuntimeRejectMsg"])(workerScript, "Cannot run getCrimeChance(). It is a Singularity Function and requires SourceFile-4 (level 3) to run.");
- return;
- }
- }
-
- crime = crime.toLowerCase();
- if (crime.includes("shoplift")) {
- return Object(_Crimes_js__WEBPACK_IMPORTED_MODULE_3__["determineCrimeChanceShoplift"])();
- } else if (crime.includes("rob") && crime.includes("store")) {
- return Object(_Crimes_js__WEBPACK_IMPORTED_MODULE_3__["determineCrimeChanceRobStore"])();
- } else if (crime.includes("mug")) {
- return Object(_Crimes_js__WEBPACK_IMPORTED_MODULE_3__["determineCrimeChanceMug"])();
- } else if (crime.includes("larceny")) {
- return Object(_Crimes_js__WEBPACK_IMPORTED_MODULE_3__["determineCrimeChanceLarceny"])();
- } else if (crime.includes("drugs")) {
- return Object(_Crimes_js__WEBPACK_IMPORTED_MODULE_3__["determineCrimeChanceDealDrugs"])();
- } else if (crime.includes("bond") && crime.includes("forge")) {
- return Object(_Crimes_js__WEBPACK_IMPORTED_MODULE_3__["determineCrimeChanceBondForgery"])();
- } else if (crime.includes("traffick") && crime.includes("arms")) {
- return Object(_Crimes_js__WEBPACK_IMPORTED_MODULE_3__["determineCrimeChanceTraffickArms"])();
- } else if (crime.includes("homicide")) {
- return Object(_Crimes_js__WEBPACK_IMPORTED_MODULE_3__["determineCrimeChanceHomicide"])();
- } else if (crime.includes("grand") && crime.includes("auto")) {
- return Object(_Crimes_js__WEBPACK_IMPORTED_MODULE_3__["determineCrimeChanceGrandTheftAuto"])();
- } else if (crime.includes("kidnap")) {
- return Object(_Crimes_js__WEBPACK_IMPORTED_MODULE_3__["determineCrimeChanceKidnap"])();
- } else if (crime.includes("assassinate")) {
- return Object(_Crimes_js__WEBPACK_IMPORTED_MODULE_3__["determineCrimeChanceAssassination"])();
- } else if (crime.includes("heist")) {
- return Object(_Crimes_js__WEBPACK_IMPORTED_MODULE_3__["determineCrimeChanceHeist"])();
- } else {
- throw Object(_NetscriptEvaluator_js__WEBPACK_IMPORTED_MODULE_24__["makeRuntimeRejectMsg"])(workerScript, "Invalid crime passed into getCrimeChance(): " + crime);
- }
- },
- getOwnedAugmentations : function(purchased=false) {
- if (workerScript.checkingRam) {
- if (workerScript.loadedFns.getOwnedAugmentations) {
- return 0;
- } else {
- workerScript.loadedFns.getOwnedAugmentations = true;
- var ramCost = _Constants_js__WEBPACK_IMPORTED_MODULE_6__["CONSTANTS"].ScriptSingularityFn3RamCost;
- if (_Player_js__WEBPACK_IMPORTED_MODULE_15__["Player"].bitNodeN !== 4) {ramCost *= 8;}
- return ramCost;
- }
- }
- if (_Player_js__WEBPACK_IMPORTED_MODULE_15__["Player"].bitNodeN != 4) {
- if (!(hasSingularitySF && singularitySFLvl >= 3)) {
- throw Object(_NetscriptEvaluator_js__WEBPACK_IMPORTED_MODULE_24__["makeRuntimeRejectMsg"])(workerScript, "Cannot run getOwnedAugmentations(). It is a Singularity Function and requires SourceFile-4 (level 3) to run.");
- return [];
- }
- }
- var res = [];
- for (var i = 0; i < _Player_js__WEBPACK_IMPORTED_MODULE_15__["Player"].augmentations.length; ++i) {
- res.push(_Player_js__WEBPACK_IMPORTED_MODULE_15__["Player"].augmentations[i].name);
- }
- if (purchased) {
- for (var i = 0; i < _Player_js__WEBPACK_IMPORTED_MODULE_15__["Player"].queuedAugmentations.length; ++i) {
- res.push(_Player_js__WEBPACK_IMPORTED_MODULE_15__["Player"].queuedAugmentations[i].name);
- }
- }
- return res;
- },
- getAugmentationsFromFaction : function(facname) {
- if (workerScript.checkingRam) {
- if (workerScript.loadedFns.getAugmentationsFromFaction) {
- return 0;
- } else {
- workerScript.loadedFns.getAugmentationsFromFaction = true;
- var ramCost = _Constants_js__WEBPACK_IMPORTED_MODULE_6__["CONSTANTS"].ScriptSingularityFn3RamCost;
- if (_Player_js__WEBPACK_IMPORTED_MODULE_15__["Player"].bitNodeN !== 4) {ramCost *= 8;}
- return ramCost;
- }
- }
- if (_Player_js__WEBPACK_IMPORTED_MODULE_15__["Player"].bitNodeN != 4) {
- if (!(hasSingularitySF && singularitySFLvl >= 3)) {
- throw Object(_NetscriptEvaluator_js__WEBPACK_IMPORTED_MODULE_24__["makeRuntimeRejectMsg"])(workerScript, "Cannot run getAugmentationsFromFaction(). It is a Singularity Function and requires SourceFile-4 (level 3) to run.");
- return [];
- }
- }
-
- if (!Object(_Faction_js__WEBPACK_IMPORTED_MODULE_10__["factionExists"])(facname)) {
- workerScript.scriptRef.log("ERROR: getAugmentationsFromFaction() failed. Invalid faction name passed in (this is case-sensitive): " + facname);
- return [];
- }
-
- var fac = _Faction_js__WEBPACK_IMPORTED_MODULE_10__["Factions"][facname];
- var res = [];
- for (var i = 0; i < fac.augmentations.length; ++i) {
- res.push(fac.augmentations[i]);
- }
- return res;
- },
- getAugmentationCost : function(name) {
- if (workerScript.checkingRam) {
- if (workerScript.loadedFns.getAugmentationCost) {
- return 0;
- } else {
- workerScript.loadedFns.getAugmentationCost = true;
- var ramCost = _Constants_js__WEBPACK_IMPORTED_MODULE_6__["CONSTANTS"].ScriptSingularityFn3RamCost;
- if (_Player_js__WEBPACK_IMPORTED_MODULE_15__["Player"].bitNodeN !== 4) {ramCost *= 8;}
- return ramCost;
- }
- }
- if (_Player_js__WEBPACK_IMPORTED_MODULE_15__["Player"].bitNodeN != 4) {
- if (!(hasSingularitySF && singularitySFLvl >= 3)) {
- throw Object(_NetscriptEvaluator_js__WEBPACK_IMPORTED_MODULE_24__["makeRuntimeRejectMsg"])(workerScript, "Cannot run getAugmentationCost(). It is a Singularity Function and requires SourceFile-4 (level 3) to run.");
- return false;
- }
- }
-
- if (!Object(_Augmentations_js__WEBPACK_IMPORTED_MODULE_1__["augmentationExists"])(name)) {
- workerScript.scriptRef.log("ERROR: getAugmentationCost() failed. Invalid Augmentation name passed in (note: this is case-sensitive): " + name);
- return [-1, -1];
- }
-
- var aug = _Augmentations_js__WEBPACK_IMPORTED_MODULE_1__["Augmentations"][name];
- return [aug.baseRepRequirement, aug.baseCost];
- },
- purchaseAugmentation : function(faction, name) {
- if (workerScript.checkingRam) {
- if (workerScript.loadedFns.purchaseAugmentation) {
- return 0;
- } else {
- workerScript.loadedFns.purchaseAugmentation = true;
- var ramCost = _Constants_js__WEBPACK_IMPORTED_MODULE_6__["CONSTANTS"].ScriptSingularityFn3RamCost;
- if (_Player_js__WEBPACK_IMPORTED_MODULE_15__["Player"].bitNodeN !== 4) {ramCost *= 8;}
- return ramCost;
- }
- }
- if (_Player_js__WEBPACK_IMPORTED_MODULE_15__["Player"].bitNodeN != 4) {
- if (!(hasSingularitySF && singularitySFLvl >= 3)) {
- throw Object(_NetscriptEvaluator_js__WEBPACK_IMPORTED_MODULE_24__["makeRuntimeRejectMsg"])(workerScript, "Cannot run purchaseAugmentation(). It is a Singularity Function and requires SourceFile-4 (level 3) to run.");
- return false;
- }
- }
-
- var fac = _Faction_js__WEBPACK_IMPORTED_MODULE_10__["Factions"][faction];
- if (fac == null || !(fac instanceof _Faction_js__WEBPACK_IMPORTED_MODULE_10__["Faction"])) {
- workerScript.scriptRef.log("ERROR: purchaseAugmentation() failed because of invalid faction name: " + faction);
- return false;
- }
-
- if (!fac.augmentations.includes(name)) {
- workerScript.scriptRef.log("ERROR: purchaseAugmentation() failed because the faction " + faction + " does not contain the " + name + " augmentation");
- return false;
- }
-
- var aug = _Augmentations_js__WEBPACK_IMPORTED_MODULE_1__["Augmentations"][name];
- if (aug == null || !(aug instanceof _Augmentations_js__WEBPACK_IMPORTED_MODULE_1__["Augmentation"])) {
- workerScript.scriptRef.log("ERROR: purchaseAugmentation() failed because of invalid augmentation name: " + name);
- return false;
- }
-
- var isNeuroflux = false;
- if (aug.name === _Augmentations_js__WEBPACK_IMPORTED_MODULE_1__["AugmentationNames"].NeuroFluxGovernor) {
- isNeuroflux = true;
- }
-
- if (!isNeuroflux) {
- for (var j = 0; j < _Player_js__WEBPACK_IMPORTED_MODULE_15__["Player"].queuedAugmentations.length; ++j) {
- if (_Player_js__WEBPACK_IMPORTED_MODULE_15__["Player"].queuedAugmentations[j].name === aug.name) {
- workerScript.scriptRef.log("ERROR: purchaseAugmentation() failed because you already have " + name);
- return false;
- }
- }
- for (var j = 0; j < _Player_js__WEBPACK_IMPORTED_MODULE_15__["Player"].augmentations.length; ++j) {
- if (_Player_js__WEBPACK_IMPORTED_MODULE_15__["Player"].augmentations[j].name === aug.name) {
- workerScript.scriptRef.log("ERROR: purchaseAugmentation() failed because you already have " + name);
- return false;
- }
- }
- }
-
- if (fac.playerReputation < aug.baseRepRequirement) {
- workerScript.scriptRef.log("ERROR: purchaseAugmentation() failed because you do not have enough reputation with " + fac.name);
- return false;
- }
-
- var res = Object(_Faction_js__WEBPACK_IMPORTED_MODULE_10__["purchaseAugmentation"])(aug, fac, true);
- workerScript.scriptRef.log(res);
- if (Object(_utils_StringHelperFunctions_js__WEBPACK_IMPORTED_MODULE_31__["isString"])(res) && res.startsWith("You purchased")) {
- _Player_js__WEBPACK_IMPORTED_MODULE_15__["Player"].gainIntelligenceExp(_Constants_js__WEBPACK_IMPORTED_MODULE_6__["CONSTANTS"].IntelligenceSingFnBaseExpGain);
- return true;
- } else {
- return false;
- }
- },
- installAugmentations : function(cbScript) {
- if (workerScript.checkingRam) {
- if (workerScript.loadedFns.installAugmentations) {
- return 0;
- } else {
- workerScript.loadedFns.installAugmentations = true;
- var ramCost = _Constants_js__WEBPACK_IMPORTED_MODULE_6__["CONSTANTS"].ScriptSingularityFn3RamCost;
- if (_Player_js__WEBPACK_IMPORTED_MODULE_15__["Player"].bitNodeN !== 4) {ramCost *= 8;}
- return ramCost;
- }
- }
- if (_Player_js__WEBPACK_IMPORTED_MODULE_15__["Player"].bitNodeN != 4) {
- if (!(hasSingularitySF && singularitySFLvl >= 3)) {
- throw Object(_NetscriptEvaluator_js__WEBPACK_IMPORTED_MODULE_24__["makeRuntimeRejectMsg"])(workerScript, "Cannot run installAugmentations(). It is a Singularity Function and requires SourceFile-4 (level 3) to run.");
- return false;
- }
- }
-
- if (_Player_js__WEBPACK_IMPORTED_MODULE_15__["Player"].queuedAugmentations.length === 0) {
- workerScript.scriptRef.log("ERROR: installAugmentations() failed because you do not have any Augmentations to be installed");
- return false;
- }
- _Player_js__WEBPACK_IMPORTED_MODULE_15__["Player"].gainIntelligenceExp(_Constants_js__WEBPACK_IMPORTED_MODULE_6__["CONSTANTS"].IntelligenceSingFnBaseExpGain);
- workerScript.scriptRef.log("Installing Augmentations. This will cause this script to be killed");
- Object(_Augmentations_js__WEBPACK_IMPORTED_MODULE_1__["installAugmentations"])(cbScript);
- return true;
- },
-
- //Bladeburner API
- bladeburner : {
- isContractName : function(name) {
- if (_Player_js__WEBPACK_IMPORTED_MODULE_15__["Player"].bladeburner instanceof _Bladeburner_js__WEBPACK_IMPORTED_MODULE_4__["Bladeburner"] && (_Player_js__WEBPACK_IMPORTED_MODULE_15__["Player"].bitNodeN === 7 || hasBladeburner2079SF)) {
-
- }
- throw Object(_NetscriptEvaluator_js__WEBPACK_IMPORTED_MODULE_24__["makeRuntimeRejectMsg"])(workerScript, "isContractName() failed because you do not currently have access to the Bladeburner API. This is either because you are not currently employed " +
- "at the Bladeburner division or because you do not have Source-File 7");
- },
- isOperationName : function(name) {
- if (_Player_js__WEBPACK_IMPORTED_MODULE_15__["Player"].bladeburner instanceof _Bladeburner_js__WEBPACK_IMPORTED_MODULE_4__["Bladeburner"] && (_Player_js__WEBPACK_IMPORTED_MODULE_15__["Player"].bitNodeN === 7 || hasBladeburner2079SF)) {
-
- }
- throw Object(_NetscriptEvaluator_js__WEBPACK_IMPORTED_MODULE_24__["makeRuntimeRejectMsg"])(workerScript, "isContractName() failed because you do not currently have access to the Bladeburner API. This is either because you are not currently employed " +
- "at the Bladeburner division or because you do not have Source-File 7");
- },
- isBlackOpName : function(name) {
- if (_Player_js__WEBPACK_IMPORTED_MODULE_15__["Player"].bladeburner instanceof _Bladeburner_js__WEBPACK_IMPORTED_MODULE_4__["Bladeburner"] && (_Player_js__WEBPACK_IMPORTED_MODULE_15__["Player"].bitNodeN === 7 || hasBladeburner2079SF)) {
-
- }
- throw Object(_NetscriptEvaluator_js__WEBPACK_IMPORTED_MODULE_24__["makeRuntimeRejectMsg"])(workerScript, "isContractName() failed because you do not currently have access to the Bladeburner API. This is either because you are not currently employed " +
- "at the Bladeburner division or because you do not have Source-File 7");
- },
- isGeneralActionName : function(name) {
- if (_Player_js__WEBPACK_IMPORTED_MODULE_15__["Player"].bladeburner instanceof _Bladeburner_js__WEBPACK_IMPORTED_MODULE_4__["Bladeburner"] && (_Player_js__WEBPACK_IMPORTED_MODULE_15__["Player"].bitNodeN === 7 || hasBladeburner2079SF)) {
-
- }
- throw Object(_NetscriptEvaluator_js__WEBPACK_IMPORTED_MODULE_24__["makeRuntimeRejectMsg"])(workerScript, "isContractName() failed because you do not currently have access to the Bladeburner API. This is either because you are not currently employed " +
- "at the Bladeburner division or because you do not have Source-File 7");
- },
- isSkillName : function(name) {
- if (_Player_js__WEBPACK_IMPORTED_MODULE_15__["Player"].bladeburner instanceof _Bladeburner_js__WEBPACK_IMPORTED_MODULE_4__["Bladeburner"] && (_Player_js__WEBPACK_IMPORTED_MODULE_15__["Player"].bitNodeN === 7 || hasBladeburner2079SF)) {
-
- }
- throw Object(_NetscriptEvaluator_js__WEBPACK_IMPORTED_MODULE_24__["makeRuntimeRejectMsg"])(workerScript, "isContractName() failed because you do not currently have access to the Bladeburner API. This is either because you are not currently employed " +
- "at the Bladeburner division or because you do not have Source-File 7");
- },
- startAction : function(type, name) {
- if (_Player_js__WEBPACK_IMPORTED_MODULE_15__["Player"].bladeburner instanceof _Bladeburner_js__WEBPACK_IMPORTED_MODULE_4__["Bladeburner"] && (_Player_js__WEBPACK_IMPORTED_MODULE_15__["Player"].bitNodeN === 7 || hasBladeburner2079SF)) {
-
- }
- throw Object(_NetscriptEvaluator_js__WEBPACK_IMPORTED_MODULE_24__["makeRuntimeRejectMsg"])(workerScript, "isContractName() failed because you do not currently have access to the Bladeburner API. This is either because you are not currently employed " +
- "at the Bladeburner division or because you do not have Source-File 7");
- },
- stopAction : function() {
- if (_Player_js__WEBPACK_IMPORTED_MODULE_15__["Player"].bladeburner instanceof _Bladeburner_js__WEBPACK_IMPORTED_MODULE_4__["Bladeburner"] && (_Player_js__WEBPACK_IMPORTED_MODULE_15__["Player"].bitNodeN === 7 || hasBladeburner2079SF)) {
-
- }
- throw Object(_NetscriptEvaluator_js__WEBPACK_IMPORTED_MODULE_24__["makeRuntimeRejectMsg"])(workerScript, "isContractName() failed because you do not currently have access to the Bladeburner API. This is either because you are not currently employed " +
- "at the Bladeburner division or because you do not have Source-File 7");
- },
- getActionTime : function(type="", name="") {
- if (_Player_js__WEBPACK_IMPORTED_MODULE_15__["Player"].bladeburner instanceof _Bladeburner_js__WEBPACK_IMPORTED_MODULE_4__["Bladeburner"] && (_Player_js__WEBPACK_IMPORTED_MODULE_15__["Player"].bitNodeN === 7 || hasBladeburner2079SF)) {
-
- }
- throw Object(_NetscriptEvaluator_js__WEBPACK_IMPORTED_MODULE_24__["makeRuntimeRejectMsg"])(workerScript, "isContractName() failed because you do not currently have access to the Bladeburner API. This is either because you are not currently employed " +
- "at the Bladeburner division or because you do not have Source-File 7");
- },
- getActionEstimatedSuccessChance : function(type="", name="") {
- if (_Player_js__WEBPACK_IMPORTED_MODULE_15__["Player"].bladeburner instanceof _Bladeburner_js__WEBPACK_IMPORTED_MODULE_4__["Bladeburner"] && (_Player_js__WEBPACK_IMPORTED_MODULE_15__["Player"].bitNodeN === 7 || hasBladeburner2079SF)) {
-
- }
- throw Object(_NetscriptEvaluator_js__WEBPACK_IMPORTED_MODULE_24__["makeRuntimeRejectMsg"])(workerScript, "isContractName() failed because you do not currently have access to the Bladeburner API. This is either because you are not currently employed " +
- "at the Bladeburner division or because you do not have Source-File 7");
- },
- getActionCountRemaining : function(type="", name="") {
- if (_Player_js__WEBPACK_IMPORTED_MODULE_15__["Player"].bladeburner instanceof _Bladeburner_js__WEBPACK_IMPORTED_MODULE_4__["Bladeburner"] && (_Player_js__WEBPACK_IMPORTED_MODULE_15__["Player"].bitNodeN === 7 || hasBladeburner2079SF)) {
-
- }
- throw Object(_NetscriptEvaluator_js__WEBPACK_IMPORTED_MODULE_24__["makeRuntimeRejectMsg"])(workerScript, "isContractName() failed because you do not currently have access to the Bladeburner API. This is either because you are not currently employed " +
- "at the Bladeburner division or because you do not have Source-File 7");
- },
- getRank : function() {
- if (_Player_js__WEBPACK_IMPORTED_MODULE_15__["Player"].bladeburner instanceof _Bladeburner_js__WEBPACK_IMPORTED_MODULE_4__["Bladeburner"] && (_Player_js__WEBPACK_IMPORTED_MODULE_15__["Player"].bitNodeN === 7 || hasBladeburner2079SF)) {
-
- }
- throw Object(_NetscriptEvaluator_js__WEBPACK_IMPORTED_MODULE_24__["makeRuntimeRejectMsg"])(workerScript, "isContractName() failed because you do not currently have access to the Bladeburner API. This is either because you are not currently employed " +
- "at the Bladeburner division or because you do not have Source-File 7");
- },
- getSkillPoints : function() {
- if (_Player_js__WEBPACK_IMPORTED_MODULE_15__["Player"].bladeburner instanceof _Bladeburner_js__WEBPACK_IMPORTED_MODULE_4__["Bladeburner"] && (_Player_js__WEBPACK_IMPORTED_MODULE_15__["Player"].bitNodeN === 7 || hasBladeburner2079SF)) {
-
- }
- throw Object(_NetscriptEvaluator_js__WEBPACK_IMPORTED_MODULE_24__["makeRuntimeRejectMsg"])(workerScript, "isContractName() failed because you do not currently have access to the Bladeburner API. This is either because you are not currently employed " +
- "at the Bladeburner division or because you do not have Source-File 7");
- },
- getSkillLevel : function(skillName="") {
- if (_Player_js__WEBPACK_IMPORTED_MODULE_15__["Player"].bladeburner instanceof _Bladeburner_js__WEBPACK_IMPORTED_MODULE_4__["Bladeburner"] && (_Player_js__WEBPACK_IMPORTED_MODULE_15__["Player"].bitNodeN === 7 || hasBladeburner2079SF)) {
-
- }
- throw Object(_NetscriptEvaluator_js__WEBPACK_IMPORTED_MODULE_24__["makeRuntimeRejectMsg"])(workerScript, "isContractName() failed because you do not currently have access to the Bladeburner API. This is either because you are not currently employed " +
- "at the Bladeburner division or because you do not have Source-File 7");
- },
- upgradeSkill : function(skillName) {
- if (_Player_js__WEBPACK_IMPORTED_MODULE_15__["Player"].bladeburner instanceof _Bladeburner_js__WEBPACK_IMPORTED_MODULE_4__["Bladeburner"] && (_Player_js__WEBPACK_IMPORTED_MODULE_15__["Player"].bitNodeN === 7 || hasBladeburner2079SF)) {
-
- }
- throw Object(_NetscriptEvaluator_js__WEBPACK_IMPORTED_MODULE_24__["makeRuntimeRejectMsg"])(workerScript, "isContractName() failed because you do not currently have access to the Bladeburner API. This is either because you are not currently employed " +
- "at the Bladeburner division or because you do not have Source-File 7");
- },
- getTeamSize : function() {
- if (_Player_js__WEBPACK_IMPORTED_MODULE_15__["Player"].bladeburner instanceof _Bladeburner_js__WEBPACK_IMPORTED_MODULE_4__["Bladeburner"] && (_Player_js__WEBPACK_IMPORTED_MODULE_15__["Player"].bitNodeN === 7 || hasBladeburner2079SF)) {
-
- }
- throw Object(_NetscriptEvaluator_js__WEBPACK_IMPORTED_MODULE_24__["makeRuntimeRejectMsg"])(workerScript, "isContractName() failed because you do not currently have access to the Bladeburner API. This is either because you are not currently employed " +
- "at the Bladeburner division or because you do not have Source-File 7");
- },
- setTeamSize : function(type="", name="", size) {
- if (_Player_js__WEBPACK_IMPORTED_MODULE_15__["Player"].bladeburner instanceof _Bladeburner_js__WEBPACK_IMPORTED_MODULE_4__["Bladeburner"] && (_Player_js__WEBPACK_IMPORTED_MODULE_15__["Player"].bitNodeN === 7 || hasBladeburner2079SF)) {
-
- }
- throw Object(_NetscriptEvaluator_js__WEBPACK_IMPORTED_MODULE_24__["makeRuntimeRejectMsg"])(workerScript, "isContractName() failed because you do not currently have access to the Bladeburner API. This is either because you are not currently employed " +
- "at the Bladeburner division or because you do not have Source-File 7");
- },
- getCityEstimatedPopulation : function(cityName) {
- if (_Player_js__WEBPACK_IMPORTED_MODULE_15__["Player"].bladeburner instanceof _Bladeburner_js__WEBPACK_IMPORTED_MODULE_4__["Bladeburner"] && (_Player_js__WEBPACK_IMPORTED_MODULE_15__["Player"].bitNodeN === 7 || hasBladeburner2079SF)) {
-
- }
- throw Object(_NetscriptEvaluator_js__WEBPACK_IMPORTED_MODULE_24__["makeRuntimeRejectMsg"])(workerScript, "isContractName() failed because you do not currently have access to the Bladeburner API. This is either because you are not currently employed " +
- "at the Bladeburner division or because you do not have Source-File 7");
- },
- getCityEstimatedCommunities : function(cityName) {
- if (_Player_js__WEBPACK_IMPORTED_MODULE_15__["Player"].bladeburner instanceof _Bladeburner_js__WEBPACK_IMPORTED_MODULE_4__["Bladeburner"] && (_Player_js__WEBPACK_IMPORTED_MODULE_15__["Player"].bitNodeN === 7 || hasBladeburner2079SF)) {
-
- }
- throw Object(_NetscriptEvaluator_js__WEBPACK_IMPORTED_MODULE_24__["makeRuntimeRejectMsg"])(workerScript, "isContractName() failed because you do not currently have access to the Bladeburner API. This is either because you are not currently employed " +
- "at the Bladeburner division or because you do not have Source-File 7");
- },
- getCityChaos : function(cityName) {
- if (_Player_js__WEBPACK_IMPORTED_MODULE_15__["Player"].bladeburner instanceof _Bladeburner_js__WEBPACK_IMPORTED_MODULE_4__["Bladeburner"] && (_Player_js__WEBPACK_IMPORTED_MODULE_15__["Player"].bitNodeN === 7 || hasBladeburner2079SF)) {
-
- }
- throw Object(_NetscriptEvaluator_js__WEBPACK_IMPORTED_MODULE_24__["makeRuntimeRejectMsg"])(workerScript, "isContractName() failed because you do not currently have access to the Bladeburner API. This is either because you are not currently employed " +
- "at the Bladeburner division or because you do not have Source-File 7");
- },
- switchCity : function(cityName) {
- if (_Player_js__WEBPACK_IMPORTED_MODULE_15__["Player"].bladeburner instanceof _Bladeburner_js__WEBPACK_IMPORTED_MODULE_4__["Bladeburner"] && (_Player_js__WEBPACK_IMPORTED_MODULE_15__["Player"].bitNodeN === 7 || hasBladeburner2079SF)) {
-
- }
- throw Object(_NetscriptEvaluator_js__WEBPACK_IMPORTED_MODULE_24__["makeRuntimeRejectMsg"])(workerScript, "isContractName() failed because you do not currently have access to the Bladeburner API. This is either because you are not currently employed " +
- "at the Bladeburner division or because you do not have Source-File 7");
- },
- getStamina : function() {
- if (_Player_js__WEBPACK_IMPORTED_MODULE_15__["Player"].bladeburner instanceof _Bladeburner_js__WEBPACK_IMPORTED_MODULE_4__["Bladeburner"] && (_Player_js__WEBPACK_IMPORTED_MODULE_15__["Player"].bitNodeN === 7 || hasBladeburner2079SF)) {
-
- }
- throw Object(_NetscriptEvaluator_js__WEBPACK_IMPORTED_MODULE_24__["makeRuntimeRejectMsg"])(workerScript, "isContractName() failed because you do not currently have access to the Bladeburner API. This is either because you are not currently employed " +
- "at the Bladeburner division or because you do not have Source-File 7");
- },
- joinFaction : function() {
- if (_Player_js__WEBPACK_IMPORTED_MODULE_15__["Player"].bladeburner instanceof _Bladeburner_js__WEBPACK_IMPORTED_MODULE_4__["Bladeburner"] && (_Player_js__WEBPACK_IMPORTED_MODULE_15__["Player"].bitNodeN === 7 || hasBladeburner2079SF)) {
-
- }
- throw Object(_NetscriptEvaluator_js__WEBPACK_IMPORTED_MODULE_24__["makeRuntimeRejectMsg"])(workerScript, "isContractName() failed because you do not currently have access to the Bladeburner API. This is either because you are not currently employed " +
- "at the Bladeburner division or because you do not have Source-File 7");
- }
- }
- } //End return
-} //End NetscriptFunction()
-
-
-
-
-/***/ }),
-/* 32 */
-/*!*****************************************!*\
- !*** ./node_modules/jszip/lib/utils.js ***!
- \*****************************************/
-/***/ (function(module, exports, __webpack_require__) {
-
-"use strict";
-
-
-var support = __webpack_require__(/*! ./support */ 50);
-var base64 = __webpack_require__(/*! ./base64 */ 105);
-var nodejsUtils = __webpack_require__(/*! ./nodejsUtils */ 65);
-var setImmediate = __webpack_require__(/*! core-js/library/fn/set-immediate */ 167);
-var external = __webpack_require__(/*! ./external */ 58);
-
-
-/**
- * Convert a string that pass as a "binary string": it should represent a byte
- * array but may have > 255 char codes. Be sure to take only the first byte
- * and returns the byte array.
- * @param {String} str the string to transform.
- * @return {Array|Uint8Array} the string in a binary format.
- */
-function string2binary(str) {
- var result = null;
- if (support.uint8array) {
- result = new Uint8Array(str.length);
- } else {
- result = new Array(str.length);
- }
- return stringToArrayLike(str, result);
-}
-
-/**
- * Create a new blob with the given content and the given type.
- * @param {String|ArrayBuffer} part the content to put in the blob. DO NOT use
- * an Uint8Array because the stock browser of android 4 won't accept it (it
- * will be silently converted to a string, "[object Uint8Array]").
- *
- * Use only ONE part to build the blob to avoid a memory leak in IE11 / Edge:
- * when a large amount of Array is used to create the Blob, the amount of
- * memory consumed is nearly 100 times the original data amount.
- *
- * @param {String} type the mime type of the blob.
- * @return {Blob} the created blob.
- */
-exports.newBlob = function(part, type) {
- exports.checkSupport("blob");
-
- try {
- // Blob constructor
- return new Blob([part], {
- type: type
- });
- }
- catch (e) {
-
- try {
- // deprecated, browser only, old way
- var Builder = self.BlobBuilder || self.WebKitBlobBuilder || self.MozBlobBuilder || self.MSBlobBuilder;
- var builder = new Builder();
- builder.append(part);
- return builder.getBlob(type);
- }
- catch (e) {
-
- // well, fuck ?!
- throw new Error("Bug : can't construct the Blob.");
- }
- }
-
-
-};
-/**
- * The identity function.
- * @param {Object} input the input.
- * @return {Object} the same input.
- */
-function identity(input) {
- return input;
-}
-
-/**
- * Fill in an array with a string.
- * @param {String} str the string to use.
- * @param {Array|ArrayBuffer|Uint8Array|Buffer} array the array to fill in (will be mutated).
- * @return {Array|ArrayBuffer|Uint8Array|Buffer} the updated array.
- */
-function stringToArrayLike(str, array) {
- for (var i = 0; i < str.length; ++i) {
- array[i] = str.charCodeAt(i) & 0xFF;
- }
- return array;
-}
-
-/**
- * An helper for the function arrayLikeToString.
- * This contains static informations and functions that
- * can be optimized by the browser JIT compiler.
- */
-var arrayToStringHelper = {
- /**
- * Transform an array of int into a string, chunk by chunk.
- * See the performances notes on arrayLikeToString.
- * @param {Array|ArrayBuffer|Uint8Array|Buffer} array the array to transform.
- * @param {String} type the type of the array.
- * @param {Integer} chunk the chunk size.
- * @return {String} the resulting string.
- * @throws Error if the chunk is too big for the stack.
- */
- stringifyByChunk: function(array, type, chunk) {
- var result = [], k = 0, len = array.length;
- // shortcut
- if (len <= chunk) {
- return String.fromCharCode.apply(null, array);
- }
- while (k < len) {
- if (type === "array" || type === "nodebuffer") {
- result.push(String.fromCharCode.apply(null, array.slice(k, Math.min(k + chunk, len))));
- }
- else {
- result.push(String.fromCharCode.apply(null, array.subarray(k, Math.min(k + chunk, len))));
- }
- k += chunk;
- }
- return result.join("");
- },
- /**
- * Call String.fromCharCode on every item in the array.
- * This is the naive implementation, which generate A LOT of intermediate string.
- * This should be used when everything else fail.
- * @param {Array|ArrayBuffer|Uint8Array|Buffer} array the array to transform.
- * @return {String} the result.
- */
- stringifyByChar: function(array){
- var resultStr = "";
- for(var i = 0; i < array.length; i++) {
- resultStr += String.fromCharCode(array[i]);
- }
- return resultStr;
- },
- applyCanBeUsed : {
- /**
- * true if the browser accepts to use String.fromCharCode on Uint8Array
- */
- uint8array : (function () {
- try {
- return support.uint8array && String.fromCharCode.apply(null, new Uint8Array(1)).length === 1;
- } catch (e) {
- return false;
- }
- })(),
- /**
- * true if the browser accepts to use String.fromCharCode on nodejs Buffer.
- */
- nodebuffer : (function () {
- try {
- return support.nodebuffer && String.fromCharCode.apply(null, nodejsUtils.allocBuffer(1)).length === 1;
- } catch (e) {
- return false;
- }
- })()
- }
-};
-
-/**
- * Transform an array-like object to a string.
- * @param {Array|ArrayBuffer|Uint8Array|Buffer} array the array to transform.
- * @return {String} the result.
- */
-function arrayLikeToString(array) {
- // Performances notes :
- // --------------------
- // String.fromCharCode.apply(null, array) is the fastest, see
- // see http://jsperf.com/converting-a-uint8array-to-a-string/2
- // but the stack is limited (and we can get huge arrays !).
- //
- // result += String.fromCharCode(array[i]); generate too many strings !
- //
- // This code is inspired by http://jsperf.com/arraybuffer-to-string-apply-performance/2
- // TODO : we now have workers that split the work. Do we still need that ?
- var chunk = 65536,
- type = exports.getTypeOf(array),
- canUseApply = true;
- if (type === "uint8array") {
- canUseApply = arrayToStringHelper.applyCanBeUsed.uint8array;
- } else if (type === "nodebuffer") {
- canUseApply = arrayToStringHelper.applyCanBeUsed.nodebuffer;
- }
-
- if (canUseApply) {
- while (chunk > 1) {
- try {
- return arrayToStringHelper.stringifyByChunk(array, type, chunk);
- } catch (e) {
- chunk = Math.floor(chunk / 2);
- }
- }
- }
-
- // no apply or chunk error : slow and painful algorithm
- // default browser on android 4.*
- return arrayToStringHelper.stringifyByChar(array);
-}
-
-exports.applyFromCharCode = arrayLikeToString;
-
-
-/**
- * Copy the data from an array-like to an other array-like.
- * @param {Array|ArrayBuffer|Uint8Array|Buffer} arrayFrom the origin array.
- * @param {Array|ArrayBuffer|Uint8Array|Buffer} arrayTo the destination array which will be mutated.
- * @return {Array|ArrayBuffer|Uint8Array|Buffer} the updated destination array.
- */
-function arrayLikeToArrayLike(arrayFrom, arrayTo) {
- for (var i = 0; i < arrayFrom.length; i++) {
- arrayTo[i] = arrayFrom[i];
- }
- return arrayTo;
-}
-
-// a matrix containing functions to transform everything into everything.
-var transform = {};
-
-// string to ?
-transform["string"] = {
- "string": identity,
- "array": function(input) {
- return stringToArrayLike(input, new Array(input.length));
- },
- "arraybuffer": function(input) {
- return transform["string"]["uint8array"](input).buffer;
- },
- "uint8array": function(input) {
- return stringToArrayLike(input, new Uint8Array(input.length));
- },
- "nodebuffer": function(input) {
- return stringToArrayLike(input, nodejsUtils.allocBuffer(input.length));
- }
-};
-
-// array to ?
-transform["array"] = {
- "string": arrayLikeToString,
- "array": identity,
- "arraybuffer": function(input) {
- return (new Uint8Array(input)).buffer;
- },
- "uint8array": function(input) {
- return new Uint8Array(input);
- },
- "nodebuffer": function(input) {
- return nodejsUtils.newBufferFrom(input);
- }
-};
-
-// arraybuffer to ?
-transform["arraybuffer"] = {
- "string": function(input) {
- return arrayLikeToString(new Uint8Array(input));
- },
- "array": function(input) {
- return arrayLikeToArrayLike(new Uint8Array(input), new Array(input.byteLength));
- },
- "arraybuffer": identity,
- "uint8array": function(input) {
- return new Uint8Array(input);
- },
- "nodebuffer": function(input) {
- return nodejsUtils.newBufferFrom(new Uint8Array(input));
- }
-};
-
-// uint8array to ?
-transform["uint8array"] = {
- "string": arrayLikeToString,
- "array": function(input) {
- return arrayLikeToArrayLike(input, new Array(input.length));
- },
- "arraybuffer": function(input) {
- return input.buffer;
- },
- "uint8array": identity,
- "nodebuffer": function(input) {
- return nodejsUtils.newBufferFrom(input);
- }
-};
-
-// nodebuffer to ?
-transform["nodebuffer"] = {
- "string": arrayLikeToString,
- "array": function(input) {
- return arrayLikeToArrayLike(input, new Array(input.length));
- },
- "arraybuffer": function(input) {
- return transform["nodebuffer"]["uint8array"](input).buffer;
- },
- "uint8array": function(input) {
- return arrayLikeToArrayLike(input, new Uint8Array(input.length));
- },
- "nodebuffer": identity
-};
-
-/**
- * Transform an input into any type.
- * The supported output type are : string, array, uint8array, arraybuffer, nodebuffer.
- * If no output type is specified, the unmodified input will be returned.
- * @param {String} outputType the output type.
- * @param {String|Array|ArrayBuffer|Uint8Array|Buffer} input the input to convert.
- * @throws {Error} an Error if the browser doesn't support the requested output type.
- */
-exports.transformTo = function(outputType, input) {
- if (!input) {
- // undefined, null, etc
- // an empty string won't harm.
- input = "";
- }
- if (!outputType) {
- return input;
- }
- exports.checkSupport(outputType);
- var inputType = exports.getTypeOf(input);
- var result = transform[inputType][outputType](input);
- return result;
-};
-
-/**
- * Return the type of the input.
- * The type will be in a format valid for JSZip.utils.transformTo : string, array, uint8array, arraybuffer.
- * @param {Object} input the input to identify.
- * @return {String} the (lowercase) type of the input.
- */
-exports.getTypeOf = function(input) {
- if (typeof input === "string") {
- return "string";
- }
- if (Object.prototype.toString.call(input) === "[object Array]") {
- return "array";
- }
- if (support.nodebuffer && nodejsUtils.isBuffer(input)) {
- return "nodebuffer";
- }
- if (support.uint8array && input instanceof Uint8Array) {
- return "uint8array";
- }
- if (support.arraybuffer && input instanceof ArrayBuffer) {
- return "arraybuffer";
- }
-};
-
-/**
- * Throw an exception if the type is not supported.
- * @param {String} type the type to check.
- * @throws {Error} an Error if the browser doesn't support the requested type.
- */
-exports.checkSupport = function(type) {
- var supported = support[type.toLowerCase()];
- if (!supported) {
- throw new Error(type + " is not supported by this platform");
- }
-};
-
-exports.MAX_VALUE_16BITS = 65535;
-exports.MAX_VALUE_32BITS = -1; // well, "\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF" is parsed as -1
-
-/**
- * Prettify a string read as binary.
- * @param {string} str the string to prettify.
- * @return {string} a pretty string.
- */
-exports.pretty = function(str) {
- var res = '',
- code, i;
- for (i = 0; i < (str || "").length; i++) {
- code = str.charCodeAt(i);
- res += '\\x' + (code < 16 ? "0" : "") + code.toString(16).toUpperCase();
- }
- return res;
-};
-
-/**
- * Defer the call of a function.
- * @param {Function} callback the function to call asynchronously.
- * @param {Array} args the arguments to give to the callback.
- */
-exports.delay = function(callback, args, self) {
- setImmediate(function () {
- callback.apply(self || null, args || []);
- });
-};
-
-/**
- * Extends a prototype with an other, without calling a constructor with
- * side effects. Inspired by nodejs' `utils.inherits`
- * @param {Function} ctor the constructor to augment
- * @param {Function} superCtor the parent constructor to use
- */
-exports.inherits = function (ctor, superCtor) {
- var Obj = function() {};
- Obj.prototype = superCtor.prototype;
- ctor.prototype = new Obj();
-};
-
-/**
- * Merge the objects passed as parameters into a new one.
- * @private
- * @param {...Object} var_args All objects to merge.
- * @return {Object} a new object with the data of the others.
- */
-exports.extend = function() {
- var result = {}, i, attr;
- for (i = 0; i < arguments.length; i++) { // arguments is not enumerable in some browsers
- for (attr in arguments[i]) {
- if (arguments[i].hasOwnProperty(attr) && typeof result[attr] === "undefined") {
- result[attr] = arguments[i][attr];
- }
- }
- }
- return result;
-};
-
-/**
- * Transform arbitrary content into a Promise.
- * @param {String} name a name for the content being processed.
- * @param {Object} inputData the content to process.
- * @param {Boolean} isBinary true if the content is not an unicode string
- * @param {Boolean} isOptimizedBinaryString true if the string content only has one byte per character.
- * @param {Boolean} isBase64 true if the string content is encoded with base64.
- * @return {Promise} a promise in a format usable by JSZip.
- */
-exports.prepareContent = function(name, inputData, isBinary, isOptimizedBinaryString, isBase64) {
-
- // if inputData is already a promise, this flatten it.
- var promise = external.Promise.resolve(inputData).then(function(data) {
-
-
- var isBlob = support.blob && (data instanceof Blob || ['[object File]', '[object Blob]'].indexOf(Object.prototype.toString.call(data)) !== -1);
-
- if (isBlob && typeof FileReader !== "undefined") {
- return new external.Promise(function (resolve, reject) {
- var reader = new FileReader();
-
- reader.onload = function(e) {
- resolve(e.target.result);
- };
- reader.onerror = function(e) {
- reject(e.target.error);
- };
- reader.readAsArrayBuffer(data);
- });
- } else {
- return data;
- }
- });
-
- return promise.then(function(data) {
- var dataType = exports.getTypeOf(data);
-
- if (!dataType) {
- return external.Promise.reject(
- new Error("Can't read the data of '" + name + "'. Is it " +
- "in a supported JavaScript type (String, Blob, ArrayBuffer, etc) ?")
- );
- }
- // special case : it's way easier to work with Uint8Array than with ArrayBuffer
- if (dataType === "arraybuffer") {
- data = exports.transformTo("uint8array", data);
- } else if (dataType === "string") {
- if (isBase64) {
- data = base64.decode(data);
- }
- else if (isBinary) {
- // optimizedBinaryString === true means that the file has already been filtered with a 0xFF mask
- if (isOptimizedBinaryString !== true) {
- // this is a string, not in a base64 format.
- // Be sure that this is a correct "binary string"
- data = string2binary(data);
- }
- }
- }
- return data;
- });
-};
-
-
-/***/ }),
-/* 33 */
-/*!**********************!*\
- !*** ./src/Fconf.js ***!
- \**********************/
-/***/ (function(module, __webpack_exports__, __webpack_require__) {
-
-"use strict";
-__webpack_require__.r(__webpack_exports__);
-/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "FconfSettings", function() { return FconfSettings; });
-/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "createFconf", function() { return createFconf; });
-/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "parseFconfSettings", function() { return parseFconfSettings; });
-/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "loadFconf", function() { return loadFconf; });
-/* harmony import */ var _utils_acorn_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../utils/acorn.js */ 36);
-/* harmony import */ var _utils_acorn_js__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_utils_acorn_js__WEBPACK_IMPORTED_MODULE_0__);
-
-
-var FconfSettings = {
- ENABLE_BASH_HOTKEYS: false,
- ENABLE_TIMESTAMPS: false,
-}
-
-var FconfComments = {
- ENABLE_BASH_HOTKEYS: "Improved Bash emulation mode. Setting this to 1 enables several\n" +
- "new Terminal shortcuts and features that more closely resemble\n" +
- "a real Bash-style shell. Note that when this mode is enabled,\n" +
- "the default browser shortcuts are overriden by the new Bash\n" +
- "shortcuts.\n\n" +
- "To see a full list of the Terminal shortcuts that this enables, see:\n" +
- "http://bitburner.readthedocs.io/en/latest/shortcuts.html",
- ENABLE_TIMESTAMPS: "Terminal commands and log entries will be timestamped. The timestamp\n" +
- "will have the format: M/D h:m",
-}
-
-//Parse Fconf settings from the config text
-//Throws an exception if parsing fails
-function parseFconfSettings(config) {
- var ast = Object(_utils_acorn_js__WEBPACK_IMPORTED_MODULE_0__["parse"])(config, {sourceType:"module"});
- var queue = [];
- queue.push(ast);
- while (queue.length != 0) {
- var exp = queue.shift();
- switch (exp.type) {
- case "BlockStatement":
- case "Program":
- for (var i = 0; i < exp.body.length; ++i) {
- if (exp.body[i] instanceof _utils_acorn_js__WEBPACK_IMPORTED_MODULE_0__["Node"]) {
- queue.push(exp.body[i]);
- }
- }
- break;
- case "AssignmentExpression":
- var setting, value;
- if (exp.left != null && exp.left.name != null) {
- setting = exp.left.name;
- } else {
- break;
- }
- if (exp.right != null && exp.right.raw != null) {
- value = exp.right.raw;
- } else {
- break;
- }
- parseFconfSetting(setting, value);
- break;
- default:
- break;
- }
-
- for (var prop in exp) {
- if (exp.hasOwnProperty(prop)) {
- if (exp[prop] instanceof _utils_acorn_js__WEBPACK_IMPORTED_MODULE_0__["Node"]) {
- queue.push(exp[prop]);
- }
- }
- }
- }
-}
-
-function parseFconfSetting(setting, value) {
- setting = String(setting);
- value = String(value);
- if (setting == null || value == null || FconfSettings[setting] == null) {
- console.log("WARNING: Invalid .fconf setting: " + setting);
- return;
- }
-
- //Needed to convert entered value to boolean/strings accordingly
- switch(setting) {
- case "ENABLE_BASH_HOTKEYS":
- case "ENABLE_TIMESTAMPS":
- var value = value.toLowerCase();
- if (value === "1" || value === "true" || value === "y") {
- value = true;
- } else {
- value = false;
- }
- FconfSettings[setting] = value;
- break;
- default:
- break;
- }
- return;
-}
-
-//Create the .fconf file text from the settings
-function createFconf() {
- var res = "";
- for (var setting in FconfSettings) {
- if (FconfSettings.hasOwnProperty(setting)) {
- //Setting comments (description)
- var comment = FconfComments[setting];
- if (comment == null) {continue;}
- var comment = comment.split("\n");
- for (var i = 0; i < comment.length; ++i) {
- res += ("//" + comment[i] + "\n");
- }
-
- var value = 0;
- if (FconfSettings[setting] === true) {
- value = "1";
- } else if (FconfSettings[setting] === false) {
- value = "0";
- } else {
- value = String(FconfSettings[setting]);
- }
- res += (setting + "=" + value + "\n\n");
- }
- }
- return res;
-}
-
-function loadFconf(saveString) {
- let tempFconfSettings = JSON.parse(saveString);
- for (var setting in tempFconfSettings) {
- if (tempFconfSettings.hasOwnProperty(setting)) {
- FconfSettings[setting] = tempFconfSettings[setting];
- }
- }
-}
-
-
-
-
-/***/ }),
-/* 34 */
-/*!*************************!*\
- !*** ./src/Missions.js ***!
- \*************************/
-/***/ (function(module, __webpack_exports__, __webpack_require__) {
-
-"use strict";
-__webpack_require__.r(__webpack_exports__);
-/* WEBPACK VAR INJECTION */(function($) {/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "HackingMission", function() { return HackingMission; });
-/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "inMission", function() { return inMission; });
-/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "setInMission", function() { return setInMission; });
-/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "currMission", function() { return currMission; });
-/* harmony import */ var _Constants_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./Constants.js */ 3);
-/* harmony import */ var _engine_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./engine.js */ 5);
-/* harmony import */ var _Faction_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./Faction.js */ 11);
-/* harmony import */ var _Player_js__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./Player.js */ 0);
-/* harmony import */ var _utils_DialogBox_js__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ../utils/DialogBox.js */ 7);
-/* harmony import */ var _utils_HelperFunctions_js__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ../utils/HelperFunctions.js */ 1);
-/* harmony import */ var _utils_StringHelperFunctions_js__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! ../utils/StringHelperFunctions.js */ 2);
-/* harmony import */ var jsplumb__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! jsplumb */ 197);
-/* harmony import */ var jsplumb__WEBPACK_IMPORTED_MODULE_7___default = /*#__PURE__*/__webpack_require__.n(jsplumb__WEBPACK_IMPORTED_MODULE_7__);
-
-
-
-
-
-
-
-
-
-let inMission = false; //Flag to denote whether a mission is running
-let currMission = null;
-function setInMission(bool, mission) {
- inMission = bool;
- if (bool) {
- currMission = mission;
- } else {
- currMission = null;
- }
-}
-
-//Keyboard shortcuts
-$(document).keydown(function(e) {
- if (inMission && currMission && currMission.selectedNode.length != 0) {
- switch (e.keyCode) {
- case 65: //a for Attack
- currMission.actionButtons[0].click();
- break;
- case 83: //s for Scan
- currMission.actionButtons[1].click();
- break;
- case 87: //w for Weaken
- currMission.actionButtons[2].click();
- break;
- case 70: //f for Fortify
- currMission.actionButtons[3].click();
- break;
- case 82: //r for Overflow
- currMission.actionButtons[4].click();
- break;
- case 68: //d for Detach connection
- currMission.actionButtons[5].click();
- break;
- default:
- break;
- }
- }
-});
-
-let NodeTypes = {
- Core: "CPU Core Node", //All actions available
- Firewall: "Firewall Node", //No actions available
- Database: "Database Node", //No actions available
- Spam: "Spam Node", //No actions Available
- Transfer: "Transfer Node", //Can Weaken, Scan, Fortify and Overflow
- Shield: "Shield Node" //Can Fortify
-}
-
-let NodeActions = {
- Attack: "Attacking", //Damaged based on attack stat + hacking level + opp def
- Scan: "Scanning", //-Def for target, affected by attack and hacking level
- Weaken: "Weakening", //-Attack for target, affected by attack and hacking level
- Fortify: "Fortifying", //+Defense for Node, affected by hacking level
- Overflow: "Overflowing", //+Attack but -Defense for Node, affected by hacking level
-}
-
-function Node(type, stats) {
- this.type = type;
- this.atk = stats.atk ? stats.atk : 0;
- this.def = stats.def ? stats.def : 0;
- this.hp = stats.hp ? stats.hp : 0;
- this.maxhp = this.hp;
- this.plyrCtrl = false;
- this.enmyCtrl = false;
- this.pos = [0, 0]; //x, y
- this.el = null; //Holds the Node's DOM element
- this.action = null;
- this.targetedCount = 0; //Count of how many connections this node is the target of
-
- //Holds the JsPlumb Connection object for this Node,
- //where this Node is the Source (since each Node
- //can only have 1 outgoing Connection)
- this.conn = null;
-}
-
-Node.prototype.setPosition = function(x, y) {
- this.pos = [x, y];
-}
-
-Node.prototype.setControlledByPlayer = function() {
- this.plyrCtrl = true;
- this.enmyCtrl = false;
- if (this.el) {
- this.el.classList.remove("hack-mission-enemy-node");
- this.el.classList.add("hack-mission-player-node");
- }
-}
-
-Node.prototype.setControlledByEnemy = function() {
- this.plyrCtrl = false;
- this.enmyCtrl = true;
- if (this.el) {
- this.el.classList.remove("hack-mission-player-node");
- this.el.classList.add("hack-mission-enemy-node");
- }
-}
-
-//Sets this node to be the active node
-Node.prototype.select = function(actionButtons) {
- if (this.enmyCtrl) {return;}
- this.el.classList.add("hack-mission-player-node-active");
-
- //Make all buttons inactive
- for (var i = 0; i < actionButtons.length; ++i) {
- actionButtons[i].classList.remove("a-link-button");
- actionButtons[i].classList.add("a-link-button-inactive");
- }
-
- switch(this.type) {
- case NodeTypes.Core:
- //All buttons active
- for (var i = 0; i < actionButtons.length; ++i) {
- actionButtons[i].classList.remove("a-link-button-inactive");
- actionButtons[i].classList.add("a-link-button");
- }
- break;
- case NodeTypes.Transfer:
- actionButtons[1].classList.remove("a-link-button-inactive");
- actionButtons[1].classList.add("a-link-button");
- actionButtons[2].classList.remove("a-link-button-inactive");
- actionButtons[2].classList.add("a-link-button");
- actionButtons[3].classList.remove("a-link-button-inactive");
- actionButtons[3].classList.add("a-link-button");
- actionButtons[4].classList.remove("a-link-button-inactive");
- actionButtons[4].classList.add("a-link-button");
- actionButtons[5].classList.remove("a-link-button-inactive");
- actionButtons[5].classList.add("a-link-button");
- break;
- case NodeTypes.Shield:
- case NodeTypes.Firewall:
- actionButtons[3].classList.remove("a-link-button-inactive");
- actionButtons[3].classList.add("a-link-button");
- break;
- default:
- break;
- }
-}
-
-Node.prototype.deselect = function(actionButtons) {
- this.el.classList.remove("hack-mission-player-node-active");
- for (var i = 0; i < actionButtons.length; ++i) {
- actionButtons[i].classList.remove("a-link-button");
- actionButtons[i].classList.add("a-link-button-inactive");
- }
-}
-
-
-Node.prototype.untarget = function() {
- if (this.targetedCount === 0) {
- console.log("WARN: Node " + this.el.id + " is being 'untargeted' when it has no target count");
- return;
- }
- --this.targetedCount;
-}
-
-//Hacking mission instance
-//Takes in the reputation of the Faction for which the mission is
-//being conducted
-function HackingMission(rep, fac) {
- this.faction = fac;
-
- this.started = false;
- this.time = 180000; //5 minutes to start, milliseconds
-
- this.playerCores = [];
- this.playerNodes = []; //Non-core nodes
- this.playerAtk = 0;
- this.playerDef = 0;
-
- this.enemyCores = [];
- this.enemyDatabases = [];
- this.enemyNodes = []; //Non-core nodes
- this.enemyAtk = 0;
- this.enemyDef = 0;
-
- this.miscNodes = [];
-
- this.selectedNode = []; //Which of the player's nodes are currently selected
-
- this.actionButtons = []; //DOM buttons for actions
-
- this.availablePositions = [];
- for (var r = 0; r < 8; ++r) {
- for (var c = 0; c < 8; ++c) {
- this.availablePositions.push([r, c]);
- }
- }
-
- this.map = [];
- for (var i = 0; i < 8; ++i) {
- this.map.push([null, null, null, null, null, null, null, null]);
- }
-
- this.jsplumbinstance = null;
-
- this.difficulty = rep / _Constants_js__WEBPACK_IMPORTED_MODULE_0__["CONSTANTS"].HackingMissionRepToDiffConversion + 1;
- console.log("difficulty: " + this.difficulty);
- this.reward = 250 + (rep / _Constants_js__WEBPACK_IMPORTED_MODULE_0__["CONSTANTS"].HackingMissionRepToRewardConversion);
-}
-
-HackingMission.prototype.init = function() {
- //Create Header DOM
- this.createPageDom();
-
- //Create player starting nodes
- var home = _Player_js__WEBPACK_IMPORTED_MODULE_3__["Player"].getHomeComputer()
- for (var i = 0; i < home.cpuCores; ++i) {
- var stats = {
- atk: (_Player_js__WEBPACK_IMPORTED_MODULE_3__["Player"].hacking_skill / 7.5) + 30,
- def: (_Player_js__WEBPACK_IMPORTED_MODULE_3__["Player"].hacking_skill / 20),
- hp: (_Player_js__WEBPACK_IMPORTED_MODULE_3__["Player"].hacking_skill / 4),
- };
- this.playerCores.push(new Node(NodeTypes.Core, stats));
- this.playerCores[i].setControlledByPlayer();
- this.setNodePosition(this.playerCores[i], i, 0);
- this.removeAvailablePosition(i, 0);
- }
-
- //Randomly generate enemy nodes (CPU and Firewall) based on difficulty
- var numNodes = Math.min(8, Math.max(1, Math.round(this.difficulty / 4)));
- var numFirewalls = Math.min(20,
- Object(_utils_HelperFunctions_js__WEBPACK_IMPORTED_MODULE_5__["getRandomInt"])(Math.round(this.difficulty/3), Math.round(this.difficulty/3) + 1));
- var numDatabases = Math.min(10, Object(_utils_HelperFunctions_js__WEBPACK_IMPORTED_MODULE_5__["getRandomInt"])(1, Math.round(this.difficulty / 3) + 1));
- var totalNodes = numNodes + numFirewalls + numDatabases;
- var xlimit = 7 - Math.floor(totalNodes / 8);
- var randMult = Object(_utils_HelperFunctions_js__WEBPACK_IMPORTED_MODULE_5__["addOffset"])(0.8 + (this.difficulty / 5), 10);
- for (var i = 0; i < numNodes; ++i) {
- var stats = {
- atk: randMult * Object(_utils_HelperFunctions_js__WEBPACK_IMPORTED_MODULE_5__["getRandomInt"])(80, 86),
- def: randMult * Object(_utils_HelperFunctions_js__WEBPACK_IMPORTED_MODULE_5__["getRandomInt"])(5, 10),
- hp: randMult * Object(_utils_HelperFunctions_js__WEBPACK_IMPORTED_MODULE_5__["getRandomInt"])(210, 230)
- }
- this.enemyCores.push(new Node(NodeTypes.Core, stats));
- this.enemyCores[i].setControlledByEnemy();
- this.setNodeRandomPosition(this.enemyCores[i], xlimit);
- }
- for (var i = 0; i < numFirewalls; ++i) {
- var stats = {
- atk: 0,
- def: randMult * Object(_utils_HelperFunctions_js__WEBPACK_IMPORTED_MODULE_5__["getRandomInt"])(10, 20),
- hp: randMult * Object(_utils_HelperFunctions_js__WEBPACK_IMPORTED_MODULE_5__["getRandomInt"])(275, 300)
- }
- this.enemyNodes.push(new Node(NodeTypes.Firewall, stats));
- this.enemyNodes[i].setControlledByEnemy();
- this.setNodeRandomPosition(this.enemyNodes[i], xlimit);
- }
- for (var i = 0; i < numDatabases; ++i) {
- var stats = {
- atk: 0,
- def: randMult * Object(_utils_HelperFunctions_js__WEBPACK_IMPORTED_MODULE_5__["getRandomInt"])(30, 55),
- hp: randMult * Object(_utils_HelperFunctions_js__WEBPACK_IMPORTED_MODULE_5__["getRandomInt"])(210, 275)
- }
- var node = new Node(NodeTypes.Database, stats);
- node.setControlledByEnemy();
- this.setNodeRandomPosition(node, xlimit);
- this.enemyDatabases.push(node);
- }
- this.calculateDefenses();
- this.calculateAttacks();
- this.createMap();
-}
-
-HackingMission.prototype.createPageDom = function() {
- var container = document.getElementById("mission-container");
-
- var favorMult = 1 + (this.faction.favor / 100);
- var gain = this.reward * _Player_js__WEBPACK_IMPORTED_MODULE_3__["Player"].faction_rep_mult * favorMult;
- var headerText = document.createElement("p");
- headerText.innerHTML = "You are about to start a hacking mission! You will gain " +
- Object(_utils_StringHelperFunctions_js__WEBPACK_IMPORTED_MODULE_6__["formatNumber"])(gain, 3) + " faction reputation with " + this.faction.name +
- " if you win. For more information " +
- "about how hacking missions work, click one of the guide links " +
- "below (one opens up an in-game guide and the other opens up " +
- "the guide from the wiki). Click the 'Start' button to begin.";
- headerText.style.display = "block";
- headerText.classList.add("hack-mission-header-element");
- headerText.style.width = "80%";
-
- var inGameGuideBtn = document.createElement("a");
- inGameGuideBtn.innerText = "How to Play";
- inGameGuideBtn.classList.add("a-link-button");
- inGameGuideBtn.style.display = "inline-block";
- inGameGuideBtn.classList.add("hack-mission-header-element");
- inGameGuideBtn.addEventListener("click", function() {
- Object(_utils_DialogBox_js__WEBPACK_IMPORTED_MODULE_4__["dialogBoxCreate"])(_Constants_js__WEBPACK_IMPORTED_MODULE_0__["CONSTANTS"].HackingMissionHowToPlay);
- return false;
- });
-
- var wikiGuideBtn = document.createElement("a");
- wikiGuideBtn.innerText = "Wiki Guide";
- wikiGuideBtn.classList.add("a-link-button");
- wikiGuideBtn.style.display = "inline-block";
- wikiGuideBtn.classList.add("hack-mission-header-element");
- wikiGuideBtn.target = "_blank";
- //TODO Add link to wiki page wikiGuideBtn.href =
-
-
- //Start button will get replaced with forfeit when game is started
- var startBtn = document.createElement("a");
- startBtn.innerHTML = "Start";
- startBtn.setAttribute("id", "hack-mission-start-btn");
- startBtn.classList.add("a-link-button");
- startBtn.classList.add("hack-mission-header-element");
- startBtn.style.display = "inline-block";
- startBtn.addEventListener("click", ()=>{
- this.start();
- return false;
- });
-
- var forfeitMission = document.createElement("a");
- forfeitMission.innerHTML = "Forfeit Mission (Exit)";
- forfeitMission.classList.add("a-link-button");
- forfeitMission.classList.add("hack-mission-header-element");
- forfeitMission.style.display = "inline-block";
- forfeitMission.addEventListener("click", ()=> {
- this.finishMission(false);
- return false;
- });
-
- var timer = document.createElement("p");
- timer.setAttribute("id", "hacking-mission-timer");
- timer.style.display = "inline-block";
- timer.style.margin = "6px";
-
- //Create Action Buttons (Attack/Scan/Weaken/ etc...)
- var actionsContainer = document.createElement("span");
- actionsContainer.style.display = "block";
- actionsContainer.classList.add("hack-mission-action-buttons-container");
- for (var i = 0; i < 6; ++i) {
- this.actionButtons.push(document.createElement("a"));
- this.actionButtons[i].style.display = "inline-block";
- this.actionButtons[i].classList.add("a-link-button-inactive"); //Disabled at start
- this.actionButtons[i].classList.add("tooltip"); //Disabled at start
- this.actionButtons[i].classList.add("hack-mission-header-element");
- actionsContainer.appendChild(this.actionButtons[i]);
- }
- this.actionButtons[0].innerText = "Attack(a)";
- var atkTooltip = document.createElement("span");
- atkTooltip.classList.add("tooltiptexthigh");
- atkTooltip.innerText = "Lowers the targeted node's HP. The effectiveness of this depends on " +
- "this node's Attack level, your hacking level, and the opponent's defense level.";
- this.actionButtons[0].appendChild(atkTooltip);
- this.actionButtons[1].innerText = "Scan(s)";
- var scanTooltip = document.createElement("span");
- scanTooltip.classList.add("tooltiptexthigh");
- scanTooltip.innerText = "Lowers the targeted node's defense. The effectiveness of this depends on " +
- "this node's Attack level, your hacking level, and the opponent's defense level.";
- this.actionButtons[1].appendChild(scanTooltip);
- this.actionButtons[2].innerText = "Weaken(w)";
- var WeakenTooltip = document.createElement("span");
- WeakenTooltip.classList.add("tooltiptexthigh");
- WeakenTooltip.innerText = "Lowers the targeted node's attack. The effectiveness of this depends on " +
- "this node's Attack level, your hacking level, and the opponent's defense level.";
- this.actionButtons[2].appendChild(WeakenTooltip);
- this.actionButtons[3].innerText = "Fortify(f)";
- var fortifyTooltip = document.createElement("span");
- fortifyTooltip.classList.add("tooltiptexthigh");
- fortifyTooltip.innerText = "Raises this node's Defense level. The effectiveness of this depends on " +
- "your hacking level";
- this.actionButtons[3].appendChild(fortifyTooltip);
- this.actionButtons[4].innerText = "Overflow(r)";
- var overflowTooltip = document.createElement("span");
- overflowTooltip.classList.add("tooltiptexthigh");
- overflowTooltip.innerText = "Raises this node's Attack level but lowers its Defense level. The effectiveness " +
- "of this depends on your hacking level.";
- this.actionButtons[4].appendChild(overflowTooltip);
- this.actionButtons[5].innerText = "Drop Connection(d)";
- var dropconnTooltip = document.createElement("span");
- dropconnTooltip.classList.add("tooltiptexthigh");
- dropconnTooltip.innerText = "Removes this Node's current connection to some target Node, if it has one. This can " +
- "also be done by simply clicking the white connection line.";
- this.actionButtons[5].appendChild(dropconnTooltip);
-
- //Player/enemy defense displays will be in action container
- var playerStats = document.createElement("p");
- var enemyStats = document.createElement("p");
- playerStats.style.display = "inline-block";
- enemyStats.style.display = "inline-block";
- playerStats.style.color = "#00ccff";
- enemyStats.style.color = "red";
- playerStats.style.margin = "4px";
- enemyStats.style.margin = "4px";
- playerStats.setAttribute("id", "hacking-mission-player-stats");
- enemyStats.setAttribute("id", "hacking-mission-enemy-stats");
- actionsContainer.appendChild(playerStats);
- actionsContainer.appendChild(enemyStats);
-
- //Set Action Button event listeners
- this.actionButtons[0].addEventListener("click", ()=>{
- if (!(this.selectedNode.length > 0)) {
- console.log("ERR: Pressing Action button without selected node");
- return;
- }
- if (this.selectedNode[0].type !== NodeTypes.Core) {return;}
- this.setActionButtonsActive(this.selectedNode[0].type);
- this.setActionButton(NodeActions.Attack, false); //Set attack button inactive
- this.selectedNode.forEach(function(node){
- node.action = NodeActions.Attack;
- });
- });
-
- this.actionButtons[1].addEventListener("click", ()=>{
- if (!(this.selectedNode.length > 0)) {
- console.log("ERR: Pressing Action button without selected node");
- return;
- }
- var nodeType = this.selectedNode[0].type; //In a multiselect, every Node will have the same type
- if (nodeType !== NodeTypes.Core && nodeType !== NodeTypes.Transfer) {return;}
- this.setActionButtonsActive(nodeType);
- this.setActionButton(NodeActions.Scan, false); //Set scan button inactive
- this.selectedNode.forEach(function(node){
- node.action = NodeActions.Scan;
- });
- });
-
- this.actionButtons[2].addEventListener("click", ()=>{
- if (!(this.selectedNode.length > 0)) {
- console.log("ERR: Pressing Action button without selected node");
- return;
- }
- var nodeType = this.selectedNode[0].type; //In a multiselect, every Node will have the same type
- if (nodeType !== NodeTypes.Core && nodeType !== NodeTypes.Transfer) {return;}
- this.setActionButtonsActive(nodeType);
- this.setActionButton(NodeActions.Weaken, false); //Set Weaken button inactive
- this.selectedNode.forEach(function(node){
- node.action = NodeActions.Weaken;
- });
- });
-
- this.actionButtons[3].addEventListener("click", ()=>{
- if (!(this.selectedNode.length > 0)) {
- console.log("ERR: Pressing Action button without selected node");
- return;
- }
- this.setActionButtonsActive(this.selectedNode[0].type);
- this.setActionButton(NodeActions.Fortify, false); //Set Fortify button inactive
- this.selectedNode.forEach(function(node){
- node.action = NodeActions.Fortify;
- });
- });
-
- this.actionButtons[4].addEventListener("click", ()=>{
- if (!(this.selectedNode.length > 0)) {
- console.log("ERR: Pressing Action button without selected node");
- return;
- }
- var nodeType = this.selectedNode[0].type;
- if (nodeType !== NodeTypes.Core && nodeType !== NodeTypes.Transfer) {return;}
- this.setActionButtonsActive(nodeType);
- this.setActionButton(NodeActions.Overflow, false); //Set Overflow button inactive
- this.selectedNode.forEach(function(node){
- node.action = NodeActions.Overflow;
- });
- });
-
- this.actionButtons[5].addEventListener("click", ()=>{
- if (!(this.selectedNode.length > 0)) {
- console.log("ERR: Pressing Action button without selected node");
- return;
- }
- this.selectedNode.forEach(function(node){
- if (node.conn) {
- var endpoints = node.conn.endpoints;
- endpoints[0].detachFrom(endpoints[1]);
- }
- node.action = NodeActions.Fortify;
- });
- // if (this.selectedNode.conn) {
- // var endpoints = this.selectedNode.conn.endpoints;
- // endpoints[0].detachFrom(endpoints[1]);
- // }
- })
-
- var timeDisplay = document.createElement("p");
-
- container.appendChild(headerText);
- container.appendChild(inGameGuideBtn);
- container.appendChild(wikiGuideBtn);
- container.appendChild(startBtn);
- container.appendChild(forfeitMission);
- container.appendChild(timer);
- container.appendChild(actionsContainer);
- container.appendChild(timeDisplay);
-}
-
-HackingMission.prototype.setActionButtonsInactive = function() {
- for (var i = 0; i < this.actionButtons.length; ++i) {
- this.actionButtons[i].classList.remove("a-link-button");
- this.actionButtons[i].classList.add("a-link-button-inactive");
- }
-}
-
-HackingMission.prototype.setActionButtonsActive = function(nodeType=null) {
- for (var i = 0; i < this.actionButtons.length; ++i) {
- this.actionButtons[i].classList.add("a-link-button");
- this.actionButtons[i].classList.remove("a-link-button-inactive");
- }
-
- //For Transfer, FireWall and Shield Nodes, certain buttons should always be disabled
- //0 = Attack, 1 = Scan, 2 = Weaken, 3 = Fortify, 4 = overflow, 5 = Drop conn
- if (nodeType) {
- switch (nodeType) {
- case NodeTypes.Firewall:
- case NodeTypes.Shield:
- this.actionButtons[0].classList.remove("a-link-button");
- this.actionButtons[0].classList.add("a-link-button-inactive");
- this.actionButtons[1].classList.remove("a-link-button");
- this.actionButtons[1].classList.add("a-link-button-inactive");
- this.actionButtons[2].classList.remove("a-link-button");
- this.actionButtons[2].classList.add("a-link-button-inactive");
- this.actionButtons[4].classList.remove("a-link-button");
- this.actionButtons[4].classList.add("a-link-button-inactive");
- this.actionButtons[5].classList.remove("a-link-button");
- this.actionButtons[5].classList.add("a-link-button-inactive");
- break;
- case NodeTypes.Transfer:
- this.actionButtons[0].classList.remove("a-link-button");
- this.actionButtons[0].classList.add("a-link-button-inactive");
- break;
- default:
- break;
- }
- }
-}
-
-//True for active, false for inactive
-HackingMission.prototype.setActionButton = function(i, active=true) {
- if (Object(_utils_StringHelperFunctions_js__WEBPACK_IMPORTED_MODULE_6__["isString"])(i)) {
- switch (i) {
- case NodeActions.Attack:
- i = 0;
- break;
- case NodeActions.Scan:
- i = 1;
- break;
- case NodeActions.Weaken:
- i = 2;
- break;
- case NodeActions.Fortify:
- i = 3;
- break;
- case NodeActions.Overflow:
- default:
- i = 4;
- break;
- }
- }
- if (active) {
- this.actionButtons[i].classList.remove("a-link-button-inactive");
- this.actionButtons[i].classList.add("a-link-button");
- } else {
- this.actionButtons[i].classList.remove("a-link-button");
- this.actionButtons[i].classList.add("a-link-button-inactive");
- }
-
-}
-
-HackingMission.prototype.calculateAttacks = function() {
- var total = 0;
- for (var i = 0; i < this.playerCores.length; ++i) {
- total += this.playerCores[i].atk;
- }
- for (var i = 0; i < this.playerNodes.length; ++i) {
- total += this.playerNodes[i].atk;
- }
- this.playerAtk = total;
- document.getElementById("hacking-mission-player-stats").innerHTML =
- "Player Attack: " + Object(_utils_StringHelperFunctions_js__WEBPACK_IMPORTED_MODULE_6__["formatNumber"])(this.playerAtk, 1) + "
" +
- "Player Defense: " + Object(_utils_StringHelperFunctions_js__WEBPACK_IMPORTED_MODULE_6__["formatNumber"])(this.playerDef, 1);
- total = 0;
- for (var i = 0; i < this.enemyCores.length; ++i) {
- total += this.enemyCores[i].atk;
- }
- for (var i = 0; i < this.enemyDatabases.length; ++i) {
- total += this.enemyDatabases[i].atk;
- }
- for (var i = 0; i < this.enemyNodes.length; ++i) {
- total += this.enemyNodes[i].atk;
- }
- this.enemyAtk = total;
- document.getElementById("hacking-mission-enemy-stats").innerHTML =
- "Enemy Attack: " + Object(_utils_StringHelperFunctions_js__WEBPACK_IMPORTED_MODULE_6__["formatNumber"])(this.enemyAtk, 1) + "
" +
- "Enemy Defense: " + Object(_utils_StringHelperFunctions_js__WEBPACK_IMPORTED_MODULE_6__["formatNumber"])(this.enemyDef, 1);
-}
-
-HackingMission.prototype.calculateDefenses = function() {
- var total = 0;
- for (var i = 0; i < this.playerCores.length; ++i) {
- total += this.playerCores[i].def;
- }
- for (var i = 0; i < this.playerNodes.length; ++i) {
- total += this.playerNodes[i].def;
- }
- this.playerDef = total;
- document.getElementById("hacking-mission-player-stats").innerHTML =
- "Player Attack: " + Object(_utils_StringHelperFunctions_js__WEBPACK_IMPORTED_MODULE_6__["formatNumber"])(this.playerAtk, 1) + "
" +
- "Player Defense: " + Object(_utils_StringHelperFunctions_js__WEBPACK_IMPORTED_MODULE_6__["formatNumber"])(this.playerDef, 1);
- total = 0;
- for (var i = 0; i < this.enemyCores.length; ++i) {
- total += this.enemyCores[i].def;
- }
- for (var i = 0; i < this.enemyDatabases.length; ++i) {
- total += this.enemyDatabases[i].def;
- }
- for (var i = 0; i < this.enemyNodes.length; ++i) {
- total += this.enemyNodes[i].def;
- }
- this.enemyDef = total;
- document.getElementById("hacking-mission-enemy-stats").innerHTML =
- "Enemy Attack: " + Object(_utils_StringHelperFunctions_js__WEBPACK_IMPORTED_MODULE_6__["formatNumber"])(this.enemyAtk, 1) + "
" +
- "Enemy Defense: " + Object(_utils_StringHelperFunctions_js__WEBPACK_IMPORTED_MODULE_6__["formatNumber"])(this.enemyDef, 1);
-}
-
-HackingMission.prototype.removeAvailablePosition = function(x, y) {
- for (var i = 0; i < this.availablePositions.length; ++i) {
- if (this.availablePositions[i][0] === x &&
- this.availablePositions[i][1] === y) {
- this.availablePositions.splice(i, 1);
- return;
- }
- }
- console.log("WARNING: removeAvailablePosition() did not remove " + x + ", " + y);
-}
-
-HackingMission.prototype.setNodePosition = function(nodeObj, x, y) {
- if (!(nodeObj instanceof Node)) {
- console.log("WARNING: Non-Node object passed into setNodePOsition");
- return;
- }
- if (isNaN(x) || isNaN(y)) {
- console.log("ERR: Invalid values passed as x and y for setNodePosition");
- console.log(x);
- console.log(y);
- return;
- }
- nodeObj.pos = [x, y];
- this.map[x][y] = nodeObj;
-}
-
-HackingMission.prototype.setNodeRandomPosition = function(nodeObj, xlimit=0) {
- var i = Object(_utils_HelperFunctions_js__WEBPACK_IMPORTED_MODULE_5__["getRandomInt"])(0, this.availablePositions.length - 1);
- if (this.availablePositions[i][1] < xlimit) {
- //Recurse if not within limit
- return this.setNodeRandomPosition(nodeObj, xlimit);
- }
- var pos = this.availablePositions.splice(i, 1);
- pos = pos[0];
- this.setNodePosition(nodeObj, pos[0], pos[1]);
-}
-
-HackingMission.prototype.createMap = function() {
- //Use a grid
- var map = document.createElement("div");
- map.classList.add("hack-mission-grid");
- map.setAttribute("id", "hacking-mission-map");
- document.getElementById("mission-container").appendChild(map);
-
- //Create random Nodes for every space in the map that
- //hasn't been filled yet. The stats of each Node will be based on
- //the player/enemy attack
- var averageAttack = (this.playerAtk + this.enemyAtk) / 2;
- for (var x = 0; x < 8; ++x) {
- for (var y = 0; y < 8; ++y) {
- if (!(this.map[x][y] instanceof Node)) {
- var node, type = Object(_utils_HelperFunctions_js__WEBPACK_IMPORTED_MODULE_5__["getRandomInt"])(0, 2);
- var randMult = Object(_utils_HelperFunctions_js__WEBPACK_IMPORTED_MODULE_5__["addOffset"])(0.85 + (this.difficulty / 2), 15);
- switch (type) {
- case 0: //Spam
- var stats = {
- atk: 0,
- def: averageAttack * 1.1 + Object(_utils_HelperFunctions_js__WEBPACK_IMPORTED_MODULE_5__["getRandomInt"])(15, 45),
- hp: randMult * Object(_utils_HelperFunctions_js__WEBPACK_IMPORTED_MODULE_5__["getRandomInt"])(200, 225)
- }
- node = new Node(NodeTypes.Spam, stats);
- break;
- case 1: //Transfer
- var stats = {
- atk: 0,
- def: averageAttack * 1.1 + Object(_utils_HelperFunctions_js__WEBPACK_IMPORTED_MODULE_5__["getRandomInt"])(15, 45),
- hp: randMult * Object(_utils_HelperFunctions_js__WEBPACK_IMPORTED_MODULE_5__["getRandomInt"])(250, 275)
- }
- node = new Node(NodeTypes.Transfer, stats);
- break;
- case 2: //Shield
- default:
- var stats = {
- atk: 0,
- def: averageAttack * 1.1 + Object(_utils_HelperFunctions_js__WEBPACK_IMPORTED_MODULE_5__["getRandomInt"])(30, 70),
- hp: randMult * Object(_utils_HelperFunctions_js__WEBPACK_IMPORTED_MODULE_5__["getRandomInt"])(300, 320)
- }
- node = new Node(NodeTypes.Shield, stats);
- break;
- }
- this.setNodePosition(node, x, y);
- this.removeAvailablePosition(x, y);
- this.miscNodes.push(node);
- }
- }
- }
-
- //Create DOM elements in order
- for (var r = 0; r < 8; ++r) {
- for (var c = 0; c < 8; ++c) {
- this.createNodeDomElement(this.map[r][c]);
- }
- }
-
- //Configure all Player CPUS
- for (var i = 0; i < this.playerCores.length; ++i) {
- console.log("Configuring Player Node: " + this.playerCores[i].el.id);
- this.configurePlayerNodeElement(this.playerCores[i].el);
- }
-}
-
-HackingMission.prototype.createNodeDomElement = function(nodeObj) {
- var nodeDiv = document.createElement("a"), txtEl = document.createElement('p');
- nodeObj.el = nodeDiv;
-
- //Set the node element's id based on its coordinates
- var id = "hacking-mission-node-" + nodeObj.pos[0] + "-" + nodeObj.pos[1];
- nodeDiv.setAttribute("id", id);
- txtEl.setAttribute("id", id + "-txt");
-
- //Set node classes for owner
- nodeDiv.classList.add("hack-mission-node");
- if (nodeObj.plyrCtrl) {
- nodeDiv.classList.add("hack-mission-player-node");
- } else if (nodeObj.enmyCtrl) {
- nodeDiv.classList.add("hack-mission-enemy-node");
- }
-
- //Set node classes based on type
- var txt;
- switch (nodeObj.type) {
- case NodeTypes.Core:
- txt = "CPU Core
" + "HP: " +
- Object(_utils_StringHelperFunctions_js__WEBPACK_IMPORTED_MODULE_6__["formatNumber"])(nodeObj.hp, 1);
- nodeDiv.classList.add("hack-mission-cpu-node");
- break;
- case NodeTypes.Firewall:
- txt = "Firewall
" + "HP: " +
- Object(_utils_StringHelperFunctions_js__WEBPACK_IMPORTED_MODULE_6__["formatNumber"])(nodeObj.hp, 1);
- nodeDiv.classList.add("hack-mission-firewall-node");
- break;
- case NodeTypes.Database:
- txt = "Database
" + "HP: " +
- Object(_utils_StringHelperFunctions_js__WEBPACK_IMPORTED_MODULE_6__["formatNumber"])(nodeObj.hp, 1);
- nodeDiv.classList.add("hack-mission-database-node");
- break;
- case NodeTypes.Spam:
- txt = "Spam
" + "HP: " +
- Object(_utils_StringHelperFunctions_js__WEBPACK_IMPORTED_MODULE_6__["formatNumber"])(nodeObj.hp, 1);
- nodeDiv.classList.add("hack-mission-spam-node");
- break;
- case NodeTypes.Transfer:
- txt = "Transfer
" + "HP: " +
- Object(_utils_StringHelperFunctions_js__WEBPACK_IMPORTED_MODULE_6__["formatNumber"])(nodeObj.hp, 1);
- nodeDiv.classList.add("hack-mission-transfer-node");
- break;
- case NodeTypes.Shield:
- default:
- txt = "Shield
" + "HP: " +
- Object(_utils_StringHelperFunctions_js__WEBPACK_IMPORTED_MODULE_6__["formatNumber"])(nodeObj.hp, 1);
- nodeDiv.classList.add("hack-mission-shield-node");
- break;
- }
-
- txt += "
Atk: " + Object(_utils_StringHelperFunctions_js__WEBPACK_IMPORTED_MODULE_6__["formatNumber"])(nodeObj.atk, 1) +
- "
Def: " + Object(_utils_StringHelperFunctions_js__WEBPACK_IMPORTED_MODULE_6__["formatNumber"])(nodeObj.def, 1);
- txtEl.innerHTML = txt;
-
- nodeDiv.appendChild(txtEl);
- document.getElementById("hacking-mission-map").appendChild(nodeDiv);
-}
-
-HackingMission.prototype.updateNodeDomElement = function(nodeObj) {
- if (nodeObj.el == null) {
- console.log("ERR: Calling updateNodeDomElement on a Node without an element");
- return;
- }
-
- var id = "hacking-mission-node-" + nodeObj.pos[0] + "-" + nodeObj.pos[1];
- var nodeDiv = document.getElementById(id), txtEl = document.getElementById(id + "-txt");
-
- //Set node classes based on type
- var txt;
- switch (nodeObj.type) {
- case NodeTypes.Core:
- txt = "CPU Core
" + "HP: " +
- Object(_utils_StringHelperFunctions_js__WEBPACK_IMPORTED_MODULE_6__["formatNumber"])(nodeObj.hp, 1);
- break;
- case NodeTypes.Firewall:
- txt = "Firewall
" + "HP: " +
- Object(_utils_StringHelperFunctions_js__WEBPACK_IMPORTED_MODULE_6__["formatNumber"])(nodeObj.hp, 1);
- break;
- case NodeTypes.Database:
- txt = "Database
" + "HP: " +
- Object(_utils_StringHelperFunctions_js__WEBPACK_IMPORTED_MODULE_6__["formatNumber"])(nodeObj.hp, 1);
- break;
- case NodeTypes.Spam:
- txt = "Spam
" + "HP: " +
- Object(_utils_StringHelperFunctions_js__WEBPACK_IMPORTED_MODULE_6__["formatNumber"])(nodeObj.hp, 1);
- break;
- case NodeTypes.Transfer:
- txt = "Transfer
" + "HP: " +
- Object(_utils_StringHelperFunctions_js__WEBPACK_IMPORTED_MODULE_6__["formatNumber"])(nodeObj.hp, 1);
- break;
- case NodeTypes.Shield:
- default:
- txt = "Shield
" + "HP: " +
- Object(_utils_StringHelperFunctions_js__WEBPACK_IMPORTED_MODULE_6__["formatNumber"])(nodeObj.hp, 1);
- break;
- }
-
- txt += "
Atk: " + Object(_utils_StringHelperFunctions_js__WEBPACK_IMPORTED_MODULE_6__["formatNumber"])(nodeObj.atk, 1) +
- "
Def: " + Object(_utils_StringHelperFunctions_js__WEBPACK_IMPORTED_MODULE_6__["formatNumber"])(nodeObj.def, 1);
- if (nodeObj.action) {
- txt += "
" + nodeObj.action;
- }
- txtEl.innerHTML = txt;
-}
-
-//Gets a Node DOM element's corresponding Node object using its
-//element id. Function accepts either the DOM element object or the ID as
-//an argument
-HackingMission.prototype.getNodeFromElement = function(el) {
- var id;
- if (Object(_utils_StringHelperFunctions_js__WEBPACK_IMPORTED_MODULE_6__["isString"])(el)) {
- id = el;
- } else {
- id = el.id;
- }
- id = id.replace("hacking-mission-node-", "");
- var res = id.split('-');
- if (res.length != 2) {
- console.log("ERROR Parsing Hacking Mission Node Id. Could not find coordinates");
- return null;
- }
- var x = res[0], y = res[1];
- if (isNaN(x) || isNaN(y) || x >= 8 || y >= 8 || x < 0 || y < 0) {
- console.log("ERROR: Unexpected values for x and y: " + x + ", " + y);
- return null;
- }
- return this.map[x][y];
-}
-
-function selectNode(hackMissionInst, el) {
- var nodeObj = hackMissionInst.getNodeFromElement(el);
- if (nodeObj == null) {console.log("Error getting Node object");}
- if (!nodeObj.plyrCtrl) {return;}
-
- clearAllSelectedNodes(hackMissionInst);
- nodeObj.select(hackMissionInst.actionButtons);
- hackMissionInst.selectedNode.push(nodeObj);
-}
-
-function multiselectNode(hackMissionInst, el) {
- var nodeObj = hackMissionInst.getNodeFromElement(el);
- if (nodeObj == null) {console.log("ERROR: Getting Node Object in multiselectNode()");}
- if (!nodeObj.plyrCtrl) {return;}
-
- clearAllSelectedNodes(hackMissionInst);
- var type = nodeObj.type;
- if (type === NodeTypes.Core) {
- hackMissionInst.playerCores.forEach(function(node) {
- node.select(hackMissionInst.actionButtons);
- hackMissionInst.selectedNode.push(node);
- });
- } else {
- hackMissionInst.playerNodes.forEach(function(node) {
- if (node.type === type) {
- node.select(hackMissionInst.actionButtons);
- hackMissionInst.selectedNode.push(node);
- }
- });
- }
-}
-
-function clearAllSelectedNodes(hackMissionInst) {
- if (hackMissionInst.selectedNode.length > 0) {
- hackMissionInst.selectedNode.forEach(function(node){
- node.deselect(hackMissionInst.actionButtons);
- });
- hackMissionInst.selectedNode.length = 0;
- }
-}
-
-//Configures a DOM element representing a player-owned node to
-//be selectable and actionable
-//Note: Does NOT change its css class. This is handled by Node.setControlledBy...
-HackingMission.prototype.configurePlayerNodeElement = function(el) {
- var nodeObj = this.getNodeFromElement(el);
- if (nodeObj == null) {console.log("Error getting Node object");}
-
- //Add event listener
- var self = this;
- function selectNodeWrapper() {
- selectNode(self, el);
- }
- el.addEventListener("click", selectNodeWrapper);
-
- function multiselectNodeWrapper() {
- multiselectNode(self, el);
- }
- el.addEventListener("dblclick", multiselectNodeWrapper);
-
-
- if (el.firstChild) {
- el.firstChild.addEventListener("click", selectNodeWrapper);
- }
-}
-
-//Configures a DOM element representing an enemy-node by removing
-//any event listeners
-HackingMission.prototype.configureEnemyNodeElement = function(el) {
- //Deselect node if it was the selected node
- var nodeObj = this.getNodeFromElement(el);
- for (var i = 0; i < this.selectedNode.length; ++i) {
- if (this.selectedNode[i] == nodeObj) {
- nodeObj.deselect(this.actionButtons);
- this.selectedNode.splice(i, 1);
- break;
- }
- }
-}
-
-//Returns bool indicating whether a node is reachable by player
-//by checking if any of the adjacent nodes are owned by the player
-HackingMission.prototype.nodeReachable = function(node) {
- var x = node.pos[0], y = node.pos[1];
- if (x > 0 && this.map[x-1][y].plyrCtrl) {return true;}
- if (x < 7 && this.map[x+1][y].plyrCtrl) {return true;}
- if (y > 0 && this.map[x][y-1].plyrCtrl) {return true;}
- if (y < 7 && this.map[x][y+1].plyrCtrl) {return true;}
- return false;
-}
-
-HackingMission.prototype.nodeReachableByEnemy = function(node) {
- if (node == null) {return false;}
- var x = node.pos[0], y = node.pos[1];
- if (x > 0 && this.map[x-1][y].enmyCtrl) {return true;}
- if (x < 7 && this.map[x+1][y].enmyCtrl) {return true;}
- if (y > 0 && this.map[x][y-1].enmyCtrl) {return true;}
- if (y < 7 && this.map[x][y+1].enmyCtrl) {return true;}
- return false;
-}
-
-HackingMission.prototype.start = function() {
- this.started = true;
- this.initJsPlumb();
- var startBtn = Object(_utils_HelperFunctions_js__WEBPACK_IMPORTED_MODULE_5__["clearEventListeners"])("hack-mission-start-btn");
- startBtn.classList.remove("a-link-button");
- startBtn.classList.add("a-link-button-inactive");
-}
-
-HackingMission.prototype.initJsPlumb = function() {
- var instance = jsPlumb.getInstance({
- DragOptions:{cursor:"pointer", zIndex:2000},
- PaintStyle: {
- gradient: { stops: [
- [ 0, "#FFFFFF" ],
- [ 1, "#FFFFFF" ]
- ] },
- stroke: "#FFFFFF",
- strokeWidth: 8
- },
- });
-
- this.jsplumbinstance = instance;
-
- //All player cores are sources
- for (var i = 0; i < this.playerCores.length; ++i) {
- instance.makeSource(this.playerCores[i].el, {
- deleteEndpointsOnEmpty:true,
- maxConnections:1,
- anchor:"Continuous",
- connector:"Flowchart"
- });
- }
-
- //Everything else is a target
- for (var i = 0; i < this.enemyCores.length; ++i) {
- instance.makeTarget(this.enemyCores[i].el, {
- maxConnections:-1,
- anchor:"Continuous",
- connector:"Flowchart"
- });
- }
- for (var i = 0; i < this.enemyDatabases.length; ++i) {
- instance.makeTarget(this.enemyDatabases[i].el, {
- maxConnections:-1,
- anchor:"Continuous",
- connector:["Flowchart"]
- });
- }
- for (var i = 0; i < this.enemyNodes.length; ++i) {
- instance.makeTarget(this.enemyNodes[i].el, {
- maxConnections:-1,
- anchor:"Continuous",
- connector:"Flowchart"
- });
- }
- for (var i = 0; i < this.miscNodes.length; ++i) {
- instance.makeTarget(this.miscNodes[i].el, {
- maxConnections:-1,
- anchor:"Continuous",
- connector:"Flowchart"
- });
- }
-
- //Clicking a connection drops it
- instance.bind("click", function(conn, originalEvent) {
- var endpoints = conn.endpoints;
- endpoints[0].detachFrom(endpoints[1]);
- });
-
- //Connection events
- instance.bind("connection", (info)=>{
- var targetNode = this.getNodeFromElement(info.target);
-
- //Do not detach for enemy nodes
- var thisNode = this.getNodeFromElement(info.source);
- if (thisNode.enmyCtrl) {return;}
-
- //If the node is not reachable, drop the connection
- if (!this.nodeReachable(targetNode)) {
- info.sourceEndpoint.detachFrom(info.targetEndpoint);
- return;
- }
-
- var sourceNode = this.getNodeFromElement(info.source);
- sourceNode.conn = info.connection;
- var targetNode = this.getNodeFromElement(info.target);
- ++targetNode.targetedCount;
- });
-
- //Detach Connection events
- instance.bind("connectionDetached", (info, originalEvent)=>{
- var sourceNode = this.getNodeFromElement(info.source);
- sourceNode.conn = null;
- var targetNode = this.getNodeFromElement(info.target);
- targetNode.untarget();
- });
-
-}
-
-//Drops all connections where the specified node is the source
-HackingMission.prototype.dropAllConnectionsFromNode = function(node) {
- var allConns = this.jsplumbinstance.getAllConnections();
- for (var i = allConns.length-1; i >= 0; --i) {
- if (allConns[i].source == node.el) {
- allConns[i].endpoints[0].detachFrom(allConns[i].endpoints[1]);
- }
- }
-}
-
-//Drops all connections where the specified node is the target
-HackingMission.prototype.dropAllConnectionsToNode = function(node) {
- var allConns = this.jsplumbinstance.getAllConnections();
- for (var i = allConns.length-1; i >= 0; --i) {
- if (allConns[i].target == node.el) {
- allConns[i].endpoints[0].detachFrom(allConns[i].endpoints[1]);
- }
- }
- node.beingTargeted = false;
-}
-
-var storedCycles = 0;
-HackingMission.prototype.process = function(numCycles=1) {
- if (!this.started) {return;}
- storedCycles += numCycles;
- if (storedCycles < 2) {return;} //Only process every 3 cycles minimum
-
- var res = false;
- //Process actions of all player nodes
- this.playerCores.forEach((node)=>{
- res |= this.processNode(node, storedCycles);
- });
-
- this.playerNodes.forEach((node)=>{
- if (node.type === NodeTypes.Transfer ||
- node.type === NodeTypes.Shield ||
- node.type === NodeTypes.Firewall) {
- res |= this.processNode(node, storedCycles);
- }
- });
-
- //Process actions of all enemy nodes
- this.enemyCores.forEach((node)=>{
- this.enemyAISelectAction(node);
- res |= this.processNode(node, storedCycles);
- });
-
- this.enemyNodes.forEach((node)=>{
- if (node.type === NodeTypes.Transfer ||
- node.type === NodeTypes.Shield ||
- node.type === NodeTypes.Firewall) {
- this.enemyAISelectAction(node);
- res |= this.processNode(node, storedCycles);
- }
- });
-
- //The hp of enemy databases increases slowly
- this.enemyDatabases.forEach((node)=>{
- node.maxhp += (0.1 * storedCycles);
- node.hp += (0.1 * storedCycles);
- });
-
- if (res) {
- this.calculateAttacks();
- this.calculateDefenses();
- }
-
- //Win if all enemy databases are conquered
- if (this.enemyDatabases.length === 0) {
- this.finishMission(true);
- return;
- }
-
- //Lose if all your cores are gone
- if (this.playerCores.length === 0) {
- this.finishMission(false);
- return;
- }
-
- //Defense/hp of misc nodes increases slowly over time
- this.miscNodes.forEach((node)=>{
- node.def += (0.1 * storedCycles);
- node.maxhp += (0.05 * storedCycles);
- node.hp += (0.1 * storedCycles);
- if (node.hp > node.maxhp) {node.hp = node.maxhp;}
- this.updateNodeDomElement(node);
- });
-
- //Update timer and check if player lost
- this.time -= (storedCycles * _engine_js__WEBPACK_IMPORTED_MODULE_1__["Engine"]._idleSpeed);
- if (this.time <= 0) {
- this.finishMission(false);
- return;
- }
- this.updateTimer();
-
- storedCycles = 0;
-}
-
-//Returns a bool representing whether defenses need to be re-calculated
-HackingMission.prototype.processNode = function(nodeObj, numCycles=1) {
- if (nodeObj.action == null) {
- return;
- }
-
- var targetNode = null, def, atk;
- if (nodeObj.conn) {
- if (nodeObj.conn.target != null) {
- targetNode = this.getNodeFromElement(nodeObj.conn.target);
- } else {
- targetNode = this.getNodeFromElement(nodeObj.conn.targetId);
- }
-
- if (targetNode == null) {
- //Player is in the middle of dragging the connection,
- //so the target node is null. Do nothing here
- } else if (targetNode.plyrCtrl) {
- def = this.playerDef;
- atk = this.enemyAtk;
- } else if (targetNode.enmyCtrl) {
- def = this.enemyDef;
- atk = this.playerAtk;
- } else { //Misc Node
- def = targetNode.def;
- nodeObj.plyrCtrl ? atk = this.playerAtk : atk = this.enemyAtk;
- }
- }
-
- //Calculations are per second, so divide everything by 5
- var calcStats = false, plyr = nodeObj.plyrCtrl;
- var enmyHacking = this.difficulty * _Constants_js__WEBPACK_IMPORTED_MODULE_0__["CONSTANTS"].HackingMissionDifficultyToHacking;
- switch(nodeObj.action) {
- case NodeActions.Attack:
- if (targetNode == null) {break;}
- if (nodeObj.conn == null) {break;}
- var dmg = this.calculateAttackDamage(atk, def, plyr ? _Player_js__WEBPACK_IMPORTED_MODULE_3__["Player"].hacking_skill : enmyHacking);
- targetNode.hp -= (dmg/5 * numCycles);
- break;
- case NodeActions.Scan:
- if (targetNode == null) {break;}
- if (nodeObj.conn == null) {break;}
- var eff = this.calculateScanEffect(atk, def, plyr ? _Player_js__WEBPACK_IMPORTED_MODULE_3__["Player"].hacking_skill : enmyHacking);
- targetNode.def -= (eff/5 * numCycles);
- calcStats = true;
- break;
- case NodeActions.Weaken:
- if (targetNode == null) {break;}
- if (nodeObj.conn == null) {break;}
- var eff = this.calculateWeakenEffect(atk, def, plyr ? _Player_js__WEBPACK_IMPORTED_MODULE_3__["Player"].hacking_skill : enmyHacking);
- targetNode.atk -= (eff/5 * numCycles);
- calcStats = true;
- break;
- case NodeActions.Fortify:
- var eff = this.calculateFortifyEffect(_Player_js__WEBPACK_IMPORTED_MODULE_3__["Player"].hacking_skill);
- nodeObj.def += (eff/5 * numCycles);
- calcStats = true;
- break;
- case NodeActions.Overflow:
- var eff = this.calculateOverflowEffect(_Player_js__WEBPACK_IMPORTED_MODULE_3__["Player"].hacking_skill);
- if (nodeObj.def < eff) {break;}
- nodeObj.def -= (eff/5 * numCycles);
- nodeObj.atk += (eff/5 * numCycles);
- calcStats = true;
- break;
- default:
- console.log("ERR: Invalid Node Action: " + nodeObj.action);
- break;
- }
-
- //Stats can't go below 0
- if (nodeObj.atk < 0) {nodeObj.atk = 0;}
- if (nodeObj.def < 0) {nodeObj.def = 0;}
- if (targetNode && targetNode.atk < 0) {targetNode.atk = 0;}
- if (targetNode && targetNode.def < 0) {targetNode.def = 0;}
-
- //Conquering a node
- if (targetNode && targetNode.hp <= 0) {
- var conqueredByPlayer = nodeObj.plyrCtrl;
- targetNode.hp = targetNode.maxhp;
- targetNode.action = null;
- targetNode.conn = null;
- if (this.selectedNode == targetNode) {
- targetNode.deselect(this.actionButtons);
- }
-
- //The conquered node has its stats reduced
- targetNode.atk /= 2;
- targetNode.def /= 3.5;
-
- //Flag for whether the target node was a misc node
- var isMiscNode = !targetNode.plyrCtrl && !targetNode.enmyCtrl;
-
- //Remove all connections from Node
- this.dropAllConnectionsToNode(targetNode);
- this.dropAllConnectionsFromNode(targetNode);
-
- //Changes the css class and turn the node into a JsPlumb Source/Target
- if (conqueredByPlayer) {
- targetNode.setControlledByPlayer();
- this.jsplumbinstance.unmakeTarget(targetNode.el);
- this.jsplumbinstance.makeSource(targetNode.el, {
- deleteEndpointsOnEmpty:true,
- maxConnections:1,
- anchor:"Continuous",
- connector:"Flowchart"
- });
- } else {
- targetNode.setControlledByEnemy();
- nodeObj.conn = null; //Clear connection
- this.jsplumbinstance.unmakeSource(targetNode.el);
- this.jsplumbinstance.makeTarget(targetNode.el, {
- maxConnections:-1,
- anchor:"Continuous",
- connector:["Flowchart"]
- });
- }
-
- calcStats = true;
-
- //Helper function to swap nodes between the respective enemyNodes/playerNodes arrays
- function swapNodes(orig, dest, targetNode) {
- for (var i = 0; i < orig.length; ++i) {
- if (orig[i] == targetNode) {
- var node = orig.splice(i, 1);
- node = node[0];
- dest.push(node);
- break;
- }
- }
- }
-
- switch(targetNode.type) {
- case NodeTypes.Core:
- if (conqueredByPlayer) {
- swapNodes(this.enemyCores, this.playerCores, targetNode);
- this.configurePlayerNodeElement(targetNode.el);
- } else {
- swapNodes(this.playerCores, this.enemyCores, targetNode);
- this.configureEnemyNodeElement(targetNode.el);
- }
- break;
- case NodeTypes.Firewall:
- if (conqueredByPlayer) {
- swapNodes(this.enemyNodes, this.playerNodes, targetNode);
- } else {
- swapNodes(this.playerNodes, this.enemyNodes, targetNode);
- this.configureEnemyNodeElement(targetNode.el);
- }
- break;
- case NodeTypes.Database:
- if (conqueredByPlayer) {
- swapNodes(this.enemyDatabases, this.playerNodes, targetNode);
- } else {
- swapNodes(this.playerNodes, this.enemyDatabases, targetNode);
- }
- break;
- case NodeTypes.Spam:
- if (conqueredByPlayer) {
- swapNodes(isMiscNode ? this.miscNodes : this.enemyNodes, this.playerNodes, targetNode);
- //Conquering spam node increases time limit
- this.time += _Constants_js__WEBPACK_IMPORTED_MODULE_0__["CONSTANTS"].HackingMissionSpamTimeIncrease;
- } else {
- swapNodes(isMiscNode ? this.miscNodes : this.playerNodes, this.enemyNodes, targetNode);
- }
-
- break;
- case NodeTypes.Transfer:
- //Conquering a Transfer node increases the attack of all cores by some percentages
- if (conqueredByPlayer) {
- swapNodes(isMiscNode ? this.miscNodes : this.enemyNodes, this.playerNodes, targetNode);
- this.playerCores.forEach(function(node) {
- node.atk *= _Constants_js__WEBPACK_IMPORTED_MODULE_0__["CONSTANTS"].HackingMissionTransferAttackIncrease;
- });
- this.configurePlayerNodeElement(targetNode.el);
- } else {
- swapNodes(isMiscNode ? this.miscNodes : this.playerNodes, this.enemyNodes, targetNode);
- this.enemyCores.forEach(function(node) {
- node.atk *= _Constants_js__WEBPACK_IMPORTED_MODULE_0__["CONSTANTS"].HackingMissionTransferAttackIncrease;
- });
- this.configureEnemyNodeElement(targetNode.el);
- }
- break;
- case NodeTypes.Shield:
- if (conqueredByPlayer) {
- swapNodes(isMiscNode ? this.miscNodes : this.enemyNodes, this.playerNodes, targetNode);
- this.configurePlayerNodeElement(targetNode.el);
- } else {
- swapNodes(isMiscNode ? this.miscNodes : this.playerNodes, this.enemyNodes, targetNode);
- this.configureEnemyNodeElement(targetNode.el);
- }
- break;
- }
-
- //If a misc node was conquered, the defense for all misc nodes increases by some fixed amount
- if (isMiscNode) { //&& conqueredByPlayer) {
- this.miscNodes.forEach((node)=>{
- if (node.targetedCount === 0) {
- node.def *= _Constants_js__WEBPACK_IMPORTED_MODULE_0__["CONSTANTS"].HackingMissionMiscDefenseIncrease;
- }
- });
- }
- }
-
- //Update node DOMs
- this.updateNodeDomElement(nodeObj);
- if (targetNode) {this.updateNodeDomElement(targetNode);}
- return calcStats;
-}
-
-//Enemy "AI" for CPU Core and Transfer Nodes
-HackingMission.prototype.enemyAISelectAction = function(nodeObj) {
- if (nodeObj == null) {return;}
- switch(nodeObj.type) {
- case NodeTypes.Core:
- //Select a single RANDOM target from miscNodes and player's Nodes
- //If it is reachable, it will target it. If not, no target will
- //be selected for now, and the next time process() gets called this will repeat
- if (nodeObj.conn == null) {
- if (this.miscNodes.length === 0) {
- //Randomly pick a player node and attack it if its reachable
- var rand = Object(_utils_HelperFunctions_js__WEBPACK_IMPORTED_MODULE_5__["getRandomInt"])(0, this.playerNodes.length-1);
- var node;
- if (this.playerNodes.length === 0) {
- node = null;
- } else {
- node = this.playerNodes[rand];
- }
- if (this.nodeReachableByEnemy(node)) {
- //Create connection
- nodeObj.conn = this.jsplumbinstance.connect({
- source:nodeObj.el,
- target:node.el
- });
- ++node.targetedCount;
- } else {
- //Randomly pick a player core and attack it if its reachable
- rand = Object(_utils_HelperFunctions_js__WEBPACK_IMPORTED_MODULE_5__["getRandomInt"])(0, this.playerCores.length-1);
- if (this.playerCores.length === 0) {
- return; //No Misc Nodes, no player Nodes, no Player cores. Player lost
- } else {
- node = this.playerCores[rand];
- }
-
- if (this.nodeReachableByEnemy(node)) {
- //Create connection
- nodeObj.conn = this.jsplumbinstance.connect({
- source:nodeObj.el,
- target:node.el
- });
- ++node.targetedCount;
- }
- }
- } else {
- //Randomly pick a misc node and attack it if its reachable
- var rand = Object(_utils_HelperFunctions_js__WEBPACK_IMPORTED_MODULE_5__["getRandomInt"])(0, this.miscNodes.length-1);
- var node = this.miscNodes[rand];
- if (this.nodeReachableByEnemy(node)) {
- nodeObj.conn = this.jsplumbinstance.connect({
- source:nodeObj.el,
- target:node.el,
- });
- ++node.targetedCount;
- }
- }
-
- //If no connection was made, set the Core to Fortify
- nodeObj.action = NodeActions.Fortify;
- } else {
- //If this node has a selected target
- var targetNode;
- if (nodeObj.conn.target) {
- targetNode = this.getNodeFromElement(nodeObj.conn.target);
- } else {
- targetNode = this.getNodeFromElement(nodeObj.conn.targetId);
- }
- if (targetNode == null) {
- console.log("Error getting Target node Object in enemyAISelectAction()");
- }
-
- if (targetNode.def > this.enemyAtk + 15) {
- if (nodeObj.def < 50) {
- nodeObj.action = NodeActions.Fortify;
- } else {
- nodeObj.action = NodeActions.Overflow;
- }
- } else if (Math.abs(targetNode.def - this.enemyAtk) <= 15) {
- nodeObj.action = NodeActions.Scan;
- } else {
- nodeObj.action = NodeActions.Attack;
- }
- }
- break;
- case NodeTypes.Transfer:
- //Switch between fortifying and overflowing as necessary
- if (nodeObj.def < 125) {
- nodeObj.action = NodeActions.Fortify;
- } else {
- nodeObj.action = NodeActions.Overflow;
- }
- break;
- case NodeTypes.Firewall:
- case NodeTypes.Shield:
- nodeObj.action = NodeActions.Fortify;
- break;
- default:
- break;
- }
-}
-
-var hackEffWeightSelf = 130; //Weight for Node actions on self
-var hackEffWeightTarget = 25; //Weight for Node Actions against Target
-var hackEffWeightAttack = 80; //Weight for Attack action
-
-//Returns damage per cycle based on stats
-HackingMission.prototype.calculateAttackDamage = function(atk, def, hacking = 0) {
- return Math.max(0.55 * (atk + (hacking / hackEffWeightAttack) - def), 1);
-}
-
-HackingMission.prototype.calculateScanEffect = function(atk, def, hacking=0) {
- return Math.max(0.6 * ((atk) + hacking / hackEffWeightTarget - (def * 0.95)), 2);
-}
-
-HackingMission.prototype.calculateWeakenEffect = function(atk, def, hacking=0) {
- return Math.max((atk) + hacking / hackEffWeightTarget - (def * 0.95), 2);
-}
-
-HackingMission.prototype.calculateFortifyEffect = function(hacking=0) {
- return 0.9 * hacking / hackEffWeightSelf;
-}
-
-HackingMission.prototype.calculateOverflowEffect = function(hacking=0) {
- return 0.95 * hacking / hackEffWeightSelf;
-}
-
-//Updates timer display
-HackingMission.prototype.updateTimer = function() {
- var timer = document.getElementById("hacking-mission-timer");
-
- //Convert time remaining to a string of the form mm:ss
- var seconds = Math.round(this.time / 1000);
- var minutes = Math.trunc(seconds / 60);
- seconds %= 60;
- var str = ("0" + minutes).slice(-2) + ":" + ("0" + seconds).slice(-2);
- timer.innerText = "Time left: " + str;
-}
-
-//The 'win' argument is a bool for whether or not the player won
-HackingMission.prototype.finishMission = function(win) {
- inMission = false;
- currMission = null;
-
- if (win) {
- var favorMult = 1 + (this.faction.favor / 100);
- console.log("Hacking mission base reward: " + this.reward);
- console.log("favorMult: " + favorMult);
- console.log("rep mult: " + _Player_js__WEBPACK_IMPORTED_MODULE_3__["Player"].faction_rep_mult);
- var gain = this.reward * _Player_js__WEBPACK_IMPORTED_MODULE_3__["Player"].faction_rep_mult * favorMult;
- Object(_utils_DialogBox_js__WEBPACK_IMPORTED_MODULE_4__["dialogBoxCreate"])("Mission won! You earned " +
- Object(_utils_StringHelperFunctions_js__WEBPACK_IMPORTED_MODULE_6__["formatNumber"])(gain, 3) + " reputation with " + this.faction.name);
- _Player_js__WEBPACK_IMPORTED_MODULE_3__["Player"].gainIntelligenceExp(this.difficulty * _Constants_js__WEBPACK_IMPORTED_MODULE_0__["CONSTANTS"].IntelligenceHackingMissionBaseExpGain);
- this.faction.playerReputation += gain;
- } else {
- Object(_utils_DialogBox_js__WEBPACK_IMPORTED_MODULE_4__["dialogBoxCreate"])("Mission lost/forfeited! You did not gain any faction reputation.");
- }
-
- //Clear mission container
- var container = document.getElementById("mission-container");
- while(container.firstChild) {
- container.removeChild(container.firstChild);
- }
-
- //Return to Faction page
- document.getElementById("mainmenu-container").style.visibility = "visible";
- document.getElementById("character-overview-wrapper").style.visibility = "visible";
- _engine_js__WEBPACK_IMPORTED_MODULE_1__["Engine"].loadFactionContent();
- Object(_Faction_js__WEBPACK_IMPORTED_MODULE_2__["displayFactionContent"])(this.faction.name);
-}
-
-
-
-/* WEBPACK VAR INJECTION */}.call(this, __webpack_require__(/*! jquery */ 39)))
-
-/***/ }),
-/* 35 */
-/*!************************!*\
- !*** ./src/DarkWeb.js ***!
- \************************/
-/***/ (function(module, __webpack_exports__, __webpack_require__) {
-
-"use strict";
-__webpack_require__.r(__webpack_exports__);
-/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "checkIfConnectedToDarkweb", function() { return checkIfConnectedToDarkweb; });
-/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "executeDarkwebTerminalCommand", function() { return executeDarkwebTerminalCommand; });
-/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "listAllDarkwebItems", function() { return listAllDarkwebItems; });
-/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "buyDarkwebItem", function() { return buyDarkwebItem; });
-/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "parseDarkwebItemPrice", function() { return parseDarkwebItemPrice; });
-/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "DarkWebItems", function() { return DarkWebItems; });
-/* harmony import */ var _CreateProgram_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./CreateProgram.js */ 14);
-/* harmony import */ var _Player_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./Player.js */ 0);
-/* harmony import */ var _SpecialServerIps_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./SpecialServerIps.js */ 17);
-/* harmony import */ var _Terminal_js__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./Terminal.js */ 18);
-/* harmony import */ var _utils_IPAddress_js__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ../utils/IPAddress.js */ 16);
-/* harmony import */ var _utils_StringHelperFunctions_js__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ../utils/StringHelperFunctions.js */ 2);
-
-
-
-
-
-
-
-
-
-/* DarkWeb.js */
-//Posts a "help" message if connected to DarkWeb
-function checkIfConnectedToDarkweb() {
- if (_SpecialServerIps_js__WEBPACK_IMPORTED_MODULE_2__["SpecialServerIps"].hasOwnProperty("Darkweb Server")) {
- var darkwebIp = _SpecialServerIps_js__WEBPACK_IMPORTED_MODULE_2__["SpecialServerIps"]["Darkweb Server"];
- if (!Object(_utils_IPAddress_js__WEBPACK_IMPORTED_MODULE_4__["isValidIPAddress"])(darkwebIp)) {return;}
- if (darkwebIp == _Player_js__WEBPACK_IMPORTED_MODULE_1__["Player"].getCurrentServer().ip) {
- Object(_Terminal_js__WEBPACK_IMPORTED_MODULE_3__["post"])("You are now connected to the dark web. From the dark web you can purchase illegal items. " +
- "Use the 'buy -l' command to display a list of all the items you can buy. Use 'buy [item-name] " +
- "to purchase an item");
- }
- }
-
-}
-
-//Handler for dark web commands. The terminal's executeCommand() function will pass
-//dark web-specific commands into this. It will pass in the raw split command array
-//rather than the command string
-function executeDarkwebTerminalCommand(commandArray) {
- if (commandArray.length == 0) {return;}
- switch (commandArray[0]) {
- case "buy":
- if (commandArray.length != 2) {
- Object(_Terminal_js__WEBPACK_IMPORTED_MODULE_3__["post"])("Incorrect number of arguments. Usage: ");
- Object(_Terminal_js__WEBPACK_IMPORTED_MODULE_3__["post"])("buy -l");
- Object(_Terminal_js__WEBPACK_IMPORTED_MODULE_3__["post"])("buy [item name]");
- return;
- }
- var arg = commandArray[1];
- if (arg == "-l") {
- listAllDarkwebItems();
- } else {
- buyDarkwebItem(arg);
- }
- break;
- default:
- Object(_Terminal_js__WEBPACK_IMPORTED_MODULE_3__["post"])("Command not found");
- break;
- }
-}
-
-function listAllDarkwebItems() {
- for (var item in DarkWebItems) {
- if (DarkWebItems.hasOwnProperty(item)) {
- var item = DarkWebItems[item];
- //Convert string using toLocaleString
- var split = item.split(" - ");
- if (split.length == 3 && split[1].charAt(0) == '$') {
- split[1] = split[1].slice(1);
- split[1] = split[1].replace(/,/g, '');
- var price = parseFloat(split[1]);
- if (isNaN(price)) {
- Object(_Terminal_js__WEBPACK_IMPORTED_MODULE_3__["post"])(item);
- return;
- }
- price = Object(_utils_StringHelperFunctions_js__WEBPACK_IMPORTED_MODULE_5__["formatNumber"])(price, 0);
- split[1] = "$" + price.toString();
- Object(_Terminal_js__WEBPACK_IMPORTED_MODULE_3__["post"])(split.join(" - "));
- } else {
- Object(_Terminal_js__WEBPACK_IMPORTED_MODULE_3__["post"])(item);
- }
- }
- }
-
- var priceString = split[1];
- //Check for errors
- if (priceString.length == 0 || priceString.charAt(0) != '$') {
- return -1;
- }
- //Remove dollar sign and commas
- priceString = priceString.slice(1);
- priceString = priceString.replace(/,/g, '');
-
- //Convert string to numeric
- var price = parseFloat(priceString);
- if (isNaN(price)) {return -1;}
- else {return price;}
-}
-
-function buyDarkwebItem(itemName) {
- if (itemName.toLowerCase() == _CreateProgram_js__WEBPACK_IMPORTED_MODULE_0__["Programs"].BruteSSHProgram.toLowerCase()) {
- var price = parseDarkwebItemPrice(DarkWebItems.BruteSSHProgram);
- if (price > 0 && _Player_js__WEBPACK_IMPORTED_MODULE_1__["Player"].money.gt(price)) {
- _Player_js__WEBPACK_IMPORTED_MODULE_1__["Player"].loseMoney(price);
- _Player_js__WEBPACK_IMPORTED_MODULE_1__["Player"].getHomeComputer().programs.push(_CreateProgram_js__WEBPACK_IMPORTED_MODULE_0__["Programs"].BruteSSHProgram);
- Object(_Terminal_js__WEBPACK_IMPORTED_MODULE_3__["post"])("You have purchased the BruteSSH.exe program. The new program " +
- "can be found on your home computer.");
- } else {
- Object(_Terminal_js__WEBPACK_IMPORTED_MODULE_3__["post"])("Not enough money to purchase " + itemName);
- }
- } else if (itemName.toLowerCase() == _CreateProgram_js__WEBPACK_IMPORTED_MODULE_0__["Programs"].FTPCrackProgram.toLowerCase()) {
- var price = parseDarkwebItemPrice(DarkWebItems.FTPCrackProgram);
- if (price > 0 && _Player_js__WEBPACK_IMPORTED_MODULE_1__["Player"].money.gt(price)) {
- _Player_js__WEBPACK_IMPORTED_MODULE_1__["Player"].loseMoney(price);
- _Player_js__WEBPACK_IMPORTED_MODULE_1__["Player"].getHomeComputer().programs.push(_CreateProgram_js__WEBPACK_IMPORTED_MODULE_0__["Programs"].FTPCrackProgram);
- Object(_Terminal_js__WEBPACK_IMPORTED_MODULE_3__["post"])("You have purchased the FTPCrack.exe program. The new program " +
- "can be found on your home computer.");
- } else {
- Object(_Terminal_js__WEBPACK_IMPORTED_MODULE_3__["post"])("Not enough money to purchase " + itemName);
- }
- } else if (itemName.toLowerCase() == _CreateProgram_js__WEBPACK_IMPORTED_MODULE_0__["Programs"].RelaySMTPProgram.toLowerCase()) {
- var price = parseDarkwebItemPrice(DarkWebItems.RelaySMTPProgram);
- if (price > 0 && _Player_js__WEBPACK_IMPORTED_MODULE_1__["Player"].money.gt(price)) {
- _Player_js__WEBPACK_IMPORTED_MODULE_1__["Player"].loseMoney(price);
- _Player_js__WEBPACK_IMPORTED_MODULE_1__["Player"].getHomeComputer().programs.push(_CreateProgram_js__WEBPACK_IMPORTED_MODULE_0__["Programs"].RelaySMTPProgram);
- Object(_Terminal_js__WEBPACK_IMPORTED_MODULE_3__["post"])("You have purchased the relaySMTP.exe program. The new program " +
- "can be found on your home computer.");
- } else {
- Object(_Terminal_js__WEBPACK_IMPORTED_MODULE_3__["post"])("Not enough money to purchase " + itemName);
- }
- } else if (itemName.toLowerCase() == _CreateProgram_js__WEBPACK_IMPORTED_MODULE_0__["Programs"].HTTPWormProgram.toLowerCase()) {
- var price = parseDarkwebItemPrice(DarkWebItems.HTTPWormProgram);
- if (price > 0 && _Player_js__WEBPACK_IMPORTED_MODULE_1__["Player"].money.gt(price)) {
- _Player_js__WEBPACK_IMPORTED_MODULE_1__["Player"].loseMoney(price);
- _Player_js__WEBPACK_IMPORTED_MODULE_1__["Player"].getHomeComputer().programs.push(_CreateProgram_js__WEBPACK_IMPORTED_MODULE_0__["Programs"].HTTPWormProgram);
- Object(_Terminal_js__WEBPACK_IMPORTED_MODULE_3__["post"])("You have purchased the HTTPWorm.exe program. The new program " +
- "can be found on your home computer.");
- } else {
- Object(_Terminal_js__WEBPACK_IMPORTED_MODULE_3__["post"])("Not enough money to purchase " + itemName);
- }
- } else if (itemName.toLowerCase() == _CreateProgram_js__WEBPACK_IMPORTED_MODULE_0__["Programs"].SQLInjectProgram.toLowerCase()) {
- var price = parseDarkwebItemPrice(DarkWebItems.SQLInjectProgram);
- if (price > 0 && _Player_js__WEBPACK_IMPORTED_MODULE_1__["Player"].money.gt(price)) {
- _Player_js__WEBPACK_IMPORTED_MODULE_1__["Player"].loseMoney(price);
- _Player_js__WEBPACK_IMPORTED_MODULE_1__["Player"].getHomeComputer().programs.push(_CreateProgram_js__WEBPACK_IMPORTED_MODULE_0__["Programs"].SQLInjectProgram);
- Object(_Terminal_js__WEBPACK_IMPORTED_MODULE_3__["post"])("You have purchased the SQLInject.exe program. The new program " +
- "can be found on your home computer.");
- } else {
- Object(_Terminal_js__WEBPACK_IMPORTED_MODULE_3__["post"])("Not enough money to purchase " + itemName);
- }
- } else if (itemName.toLowerCase() == _CreateProgram_js__WEBPACK_IMPORTED_MODULE_0__["Programs"].DeepscanV1.toLowerCase()) {
- var price = parseDarkwebItemPrice(DarkWebItems.DeepScanV1Program);
- if (price > 0 && _Player_js__WEBPACK_IMPORTED_MODULE_1__["Player"].money.gt(price)) {
- _Player_js__WEBPACK_IMPORTED_MODULE_1__["Player"].loseMoney(price);
- _Player_js__WEBPACK_IMPORTED_MODULE_1__["Player"].getHomeComputer().programs.push(_CreateProgram_js__WEBPACK_IMPORTED_MODULE_0__["Programs"].DeepscanV1);
- Object(_Terminal_js__WEBPACK_IMPORTED_MODULE_3__["post"])("You have purchased the DeepscanV1.exe program. The new program " +
- "can be found on your home computer.");
- } else {
- Object(_Terminal_js__WEBPACK_IMPORTED_MODULE_3__["post"])("Not enough money to purchase " + itemName);
- }
- } else if (itemName.toLowerCase() == _CreateProgram_js__WEBPACK_IMPORTED_MODULE_0__["Programs"].DeepscanV2.toLowerCase()) {
- var price = parseDarkwebItemPrice(DarkWebItems.DeepScanV2Program);
- if (price > 0 && _Player_js__WEBPACK_IMPORTED_MODULE_1__["Player"].money.gt(price)) {
- _Player_js__WEBPACK_IMPORTED_MODULE_1__["Player"].loseMoney(price);
- _Player_js__WEBPACK_IMPORTED_MODULE_1__["Player"].getHomeComputer().programs.push(_CreateProgram_js__WEBPACK_IMPORTED_MODULE_0__["Programs"].DeepscanV2);
- Object(_Terminal_js__WEBPACK_IMPORTED_MODULE_3__["post"])("You have purchased the DeepscanV2.exe program. The new program " +
- "can be found on your home computer.");
- } else {
- Object(_Terminal_js__WEBPACK_IMPORTED_MODULE_3__["post"])("Not enough money to purchase " + itemName);
- }
- } else {
- Object(_Terminal_js__WEBPACK_IMPORTED_MODULE_3__["post"])("Unrecognized item");
- }
-}
-
-function parseDarkwebItemPrice(itemDesc) {
- var split = itemDesc.split(" - ");
- if (split.length == 3) {
- var priceString = split[1];
- //Check for errors
- if (priceString.length == 0 || priceString.charAt(0) != '$') {
- return -1;
- }
- //Remove dollar sign and commas
- priceString = priceString.slice(1);
- priceString = priceString.replace(/,/g, '');
-
- //Convert string to numeric
- var price = parseFloat(priceString);
- if (isNaN(price)) {return -1;}
- else {return price;}
- } else {
- return -1;
- }
-}
-
-let DarkWebItems = {
- BruteSSHProgram: "BruteSSH.exe - $500,000 - Opens up SSH Ports",
- FTPCrackProgram: "FTPCrack.exe - $1,500,000 - Opens up FTP Ports",
- RelaySMTPProgram: "relaySMTP.exe - $5,000,000 - Opens up SMTP Ports",
- HTTPWormProgram: "HTTPWorm.exe - $30,000,000 - Opens up HTTP Ports",
- SQLInjectProgram: "SQLInject.exe - $250,000,000 - Opens up SQL Ports",
- DeepScanV1Program: "DeepscanV1.exe - $500,000 - Enables 'scan-analyze' with a depth up to 5",
- DeepScanV2Program: "DeepscanV2.exe - $25,000,000 - Enables 'scan-analyze' with a depth up to 10",
-}
-
-
-
-
-/***/ }),
-/* 36 */
-/*!************************!*\
- !*** ./utils/acorn.js ***!
- \************************/
-/***/ (function(module, exports, __webpack_require__) {
-
-/*
-acorn.js
-https://github.com/ternjs/acorn
-
-Copyright (C) 2012-2017 by various contributors (see AUTHORS)
-
-Permission is hereby granted, free of charge, to any person obtaining a copy
-of this software and associated documentation files (the "Software"), to deal
-in the Software without restriction, including without limitation the rights
-to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
-copies of the Software, and to permit persons to whom the Software is
-furnished to do so, subject to the following conditions:
-
-The above copyright notice and this permission notice shall be included in
-all copies or substantial portions of the Software.
-
-THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
-IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
-FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
-AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
-LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
-OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
-THE SOFTWARE.
-*/
-
-(function (global, factory) {
- true ? factory(exports) :
- undefined;
-}(this, (function (exports) { 'use strict';
-
-// Reserved word lists for various dialects of the language
-
-var reservedWords = {
- 3: "abstract boolean byte char class double enum export extends final float goto implements import int interface long native package private protected public short static super synchronized throws transient volatile",
- 5: "class enum extends super const export import",
- 6: "enum",
- strict: "implements interface let package private protected public static yield",
- strictBind: "eval arguments"
-}
-
-// And the keywords
-
-var ecma5AndLessKeywords = "break case catch continue debugger default do else finally for function if return switch throw try var while with null true false instanceof typeof void delete new in this"
-
-var keywords = {
- 5: ecma5AndLessKeywords,
- 6: ecma5AndLessKeywords + " const class extends export import super"
-}
-
-// ## Character categories
-
-// Big ugly regular expressions that match characters in the
-// whitespace, identifier, and identifier-start categories. These
-// are only applied when a character is found to actually have a
-// code point above 128.
-// Generated by `bin/generate-identifier-regex.js`.
-
-var nonASCIIidentifierStartChars = "\xaa\xb5\xba\xc0-\xd6\xd8-\xf6\xf8-\u02c1\u02c6-\u02d1\u02e0-\u02e4\u02ec\u02ee\u0370-\u0374\u0376\u0377\u037a-\u037d\u037f\u0386\u0388-\u038a\u038c\u038e-\u03a1\u03a3-\u03f5\u03f7-\u0481\u048a-\u052f\u0531-\u0556\u0559\u0561-\u0587\u05d0-\u05ea\u05f0-\u05f2\u0620-\u064a\u066e\u066f\u0671-\u06d3\u06d5\u06e5\u06e6\u06ee\u06ef\u06fa-\u06fc\u06ff\u0710\u0712-\u072f\u074d-\u07a5\u07b1\u07ca-\u07ea\u07f4\u07f5\u07fa\u0800-\u0815\u081a\u0824\u0828\u0840-\u0858\u08a0-\u08b4\u08b6-\u08bd\u0904-\u0939\u093d\u0950\u0958-\u0961\u0971-\u0980\u0985-\u098c\u098f\u0990\u0993-\u09a8\u09aa-\u09b0\u09b2\u09b6-\u09b9\u09bd\u09ce\u09dc\u09dd\u09df-\u09e1\u09f0\u09f1\u0a05-\u0a0a\u0a0f\u0a10\u0a13-\u0a28\u0a2a-\u0a30\u0a32\u0a33\u0a35\u0a36\u0a38\u0a39\u0a59-\u0a5c\u0a5e\u0a72-\u0a74\u0a85-\u0a8d\u0a8f-\u0a91\u0a93-\u0aa8\u0aaa-\u0ab0\u0ab2\u0ab3\u0ab5-\u0ab9\u0abd\u0ad0\u0ae0\u0ae1\u0af9\u0b05-\u0b0c\u0b0f\u0b10\u0b13-\u0b28\u0b2a-\u0b30\u0b32\u0b33\u0b35-\u0b39\u0b3d\u0b5c\u0b5d\u0b5f-\u0b61\u0b71\u0b83\u0b85-\u0b8a\u0b8e-\u0b90\u0b92-\u0b95\u0b99\u0b9a\u0b9c\u0b9e\u0b9f\u0ba3\u0ba4\u0ba8-\u0baa\u0bae-\u0bb9\u0bd0\u0c05-\u0c0c\u0c0e-\u0c10\u0c12-\u0c28\u0c2a-\u0c39\u0c3d\u0c58-\u0c5a\u0c60\u0c61\u0c80\u0c85-\u0c8c\u0c8e-\u0c90\u0c92-\u0ca8\u0caa-\u0cb3\u0cb5-\u0cb9\u0cbd\u0cde\u0ce0\u0ce1\u0cf1\u0cf2\u0d05-\u0d0c\u0d0e-\u0d10\u0d12-\u0d3a\u0d3d\u0d4e\u0d54-\u0d56\u0d5f-\u0d61\u0d7a-\u0d7f\u0d85-\u0d96\u0d9a-\u0db1\u0db3-\u0dbb\u0dbd\u0dc0-\u0dc6\u0e01-\u0e30\u0e32\u0e33\u0e40-\u0e46\u0e81\u0e82\u0e84\u0e87\u0e88\u0e8a\u0e8d\u0e94-\u0e97\u0e99-\u0e9f\u0ea1-\u0ea3\u0ea5\u0ea7\u0eaa\u0eab\u0ead-\u0eb0\u0eb2\u0eb3\u0ebd\u0ec0-\u0ec4\u0ec6\u0edc-\u0edf\u0f00\u0f40-\u0f47\u0f49-\u0f6c\u0f88-\u0f8c\u1000-\u102a\u103f\u1050-\u1055\u105a-\u105d\u1061\u1065\u1066\u106e-\u1070\u1075-\u1081\u108e\u10a0-\u10c5\u10c7\u10cd\u10d0-\u10fa\u10fc-\u1248\u124a-\u124d\u1250-\u1256\u1258\u125a-\u125d\u1260-\u1288\u128a-\u128d\u1290-\u12b0\u12b2-\u12b5\u12b8-\u12be\u12c0\u12c2-\u12c5\u12c8-\u12d6\u12d8-\u1310\u1312-\u1315\u1318-\u135a\u1380-\u138f\u13a0-\u13f5\u13f8-\u13fd\u1401-\u166c\u166f-\u167f\u1681-\u169a\u16a0-\u16ea\u16ee-\u16f8\u1700-\u170c\u170e-\u1711\u1720-\u1731\u1740-\u1751\u1760-\u176c\u176e-\u1770\u1780-\u17b3\u17d7\u17dc\u1820-\u1877\u1880-\u18a8\u18aa\u18b0-\u18f5\u1900-\u191e\u1950-\u196d\u1970-\u1974\u1980-\u19ab\u19b0-\u19c9\u1a00-\u1a16\u1a20-\u1a54\u1aa7\u1b05-\u1b33\u1b45-\u1b4b\u1b83-\u1ba0\u1bae\u1baf\u1bba-\u1be5\u1c00-\u1c23\u1c4d-\u1c4f\u1c5a-\u1c7d\u1c80-\u1c88\u1ce9-\u1cec\u1cee-\u1cf1\u1cf5\u1cf6\u1d00-\u1dbf\u1e00-\u1f15\u1f18-\u1f1d\u1f20-\u1f45\u1f48-\u1f4d\u1f50-\u1f57\u1f59\u1f5b\u1f5d\u1f5f-\u1f7d\u1f80-\u1fb4\u1fb6-\u1fbc\u1fbe\u1fc2-\u1fc4\u1fc6-\u1fcc\u1fd0-\u1fd3\u1fd6-\u1fdb\u1fe0-\u1fec\u1ff2-\u1ff4\u1ff6-\u1ffc\u2071\u207f\u2090-\u209c\u2102\u2107\u210a-\u2113\u2115\u2118-\u211d\u2124\u2126\u2128\u212a-\u2139\u213c-\u213f\u2145-\u2149\u214e\u2160-\u2188\u2c00-\u2c2e\u2c30-\u2c5e\u2c60-\u2ce4\u2ceb-\u2cee\u2cf2\u2cf3\u2d00-\u2d25\u2d27\u2d2d\u2d30-\u2d67\u2d6f\u2d80-\u2d96\u2da0-\u2da6\u2da8-\u2dae\u2db0-\u2db6\u2db8-\u2dbe\u2dc0-\u2dc6\u2dc8-\u2dce\u2dd0-\u2dd6\u2dd8-\u2dde\u3005-\u3007\u3021-\u3029\u3031-\u3035\u3038-\u303c\u3041-\u3096\u309b-\u309f\u30a1-\u30fa\u30fc-\u30ff\u3105-\u312d\u3131-\u318e\u31a0-\u31ba\u31f0-\u31ff\u3400-\u4db5\u4e00-\u9fd5\ua000-\ua48c\ua4d0-\ua4fd\ua500-\ua60c\ua610-\ua61f\ua62a\ua62b\ua640-\ua66e\ua67f-\ua69d\ua6a0-\ua6ef\ua717-\ua71f\ua722-\ua788\ua78b-\ua7ae\ua7b0-\ua7b7\ua7f7-\ua801\ua803-\ua805\ua807-\ua80a\ua80c-\ua822\ua840-\ua873\ua882-\ua8b3\ua8f2-\ua8f7\ua8fb\ua8fd\ua90a-\ua925\ua930-\ua946\ua960-\ua97c\ua984-\ua9b2\ua9cf\ua9e0-\ua9e4\ua9e6-\ua9ef\ua9fa-\ua9fe\uaa00-\uaa28\uaa40-\uaa42\uaa44-\uaa4b\uaa60-\uaa76\uaa7a\uaa7e-\uaaaf\uaab1\uaab5\uaab6\uaab9-\uaabd\uaac0\uaac2\uaadb-\uaadd\uaae0-\uaaea\uaaf2-\uaaf4\uab01-\uab06\uab09-\uab0e\uab11-\uab16\uab20-\uab26\uab28-\uab2e\uab30-\uab5a\uab5c-\uab65\uab70-\uabe2\uac00-\ud7a3\ud7b0-\ud7c6\ud7cb-\ud7fb\uf900-\ufa6d\ufa70-\ufad9\ufb00-\ufb06\ufb13-\ufb17\ufb1d\ufb1f-\ufb28\ufb2a-\ufb36\ufb38-\ufb3c\ufb3e\ufb40\ufb41\ufb43\ufb44\ufb46-\ufbb1\ufbd3-\ufd3d\ufd50-\ufd8f\ufd92-\ufdc7\ufdf0-\ufdfb\ufe70-\ufe74\ufe76-\ufefc\uff21-\uff3a\uff41-\uff5a\uff66-\uffbe\uffc2-\uffc7\uffca-\uffcf\uffd2-\uffd7\uffda-\uffdc"
-var nonASCIIidentifierChars = "\u200c\u200d\xb7\u0300-\u036f\u0387\u0483-\u0487\u0591-\u05bd\u05bf\u05c1\u05c2\u05c4\u05c5\u05c7\u0610-\u061a\u064b-\u0669\u0670\u06d6-\u06dc\u06df-\u06e4\u06e7\u06e8\u06ea-\u06ed\u06f0-\u06f9\u0711\u0730-\u074a\u07a6-\u07b0\u07c0-\u07c9\u07eb-\u07f3\u0816-\u0819\u081b-\u0823\u0825-\u0827\u0829-\u082d\u0859-\u085b\u08d4-\u08e1\u08e3-\u0903\u093a-\u093c\u093e-\u094f\u0951-\u0957\u0962\u0963\u0966-\u096f\u0981-\u0983\u09bc\u09be-\u09c4\u09c7\u09c8\u09cb-\u09cd\u09d7\u09e2\u09e3\u09e6-\u09ef\u0a01-\u0a03\u0a3c\u0a3e-\u0a42\u0a47\u0a48\u0a4b-\u0a4d\u0a51\u0a66-\u0a71\u0a75\u0a81-\u0a83\u0abc\u0abe-\u0ac5\u0ac7-\u0ac9\u0acb-\u0acd\u0ae2\u0ae3\u0ae6-\u0aef\u0b01-\u0b03\u0b3c\u0b3e-\u0b44\u0b47\u0b48\u0b4b-\u0b4d\u0b56\u0b57\u0b62\u0b63\u0b66-\u0b6f\u0b82\u0bbe-\u0bc2\u0bc6-\u0bc8\u0bca-\u0bcd\u0bd7\u0be6-\u0bef\u0c00-\u0c03\u0c3e-\u0c44\u0c46-\u0c48\u0c4a-\u0c4d\u0c55\u0c56\u0c62\u0c63\u0c66-\u0c6f\u0c81-\u0c83\u0cbc\u0cbe-\u0cc4\u0cc6-\u0cc8\u0cca-\u0ccd\u0cd5\u0cd6\u0ce2\u0ce3\u0ce6-\u0cef\u0d01-\u0d03\u0d3e-\u0d44\u0d46-\u0d48\u0d4a-\u0d4d\u0d57\u0d62\u0d63\u0d66-\u0d6f\u0d82\u0d83\u0dca\u0dcf-\u0dd4\u0dd6\u0dd8-\u0ddf\u0de6-\u0def\u0df2\u0df3\u0e31\u0e34-\u0e3a\u0e47-\u0e4e\u0e50-\u0e59\u0eb1\u0eb4-\u0eb9\u0ebb\u0ebc\u0ec8-\u0ecd\u0ed0-\u0ed9\u0f18\u0f19\u0f20-\u0f29\u0f35\u0f37\u0f39\u0f3e\u0f3f\u0f71-\u0f84\u0f86\u0f87\u0f8d-\u0f97\u0f99-\u0fbc\u0fc6\u102b-\u103e\u1040-\u1049\u1056-\u1059\u105e-\u1060\u1062-\u1064\u1067-\u106d\u1071-\u1074\u1082-\u108d\u108f-\u109d\u135d-\u135f\u1369-\u1371\u1712-\u1714\u1732-\u1734\u1752\u1753\u1772\u1773\u17b4-\u17d3\u17dd\u17e0-\u17e9\u180b-\u180d\u1810-\u1819\u18a9\u1920-\u192b\u1930-\u193b\u1946-\u194f\u19d0-\u19da\u1a17-\u1a1b\u1a55-\u1a5e\u1a60-\u1a7c\u1a7f-\u1a89\u1a90-\u1a99\u1ab0-\u1abd\u1b00-\u1b04\u1b34-\u1b44\u1b50-\u1b59\u1b6b-\u1b73\u1b80-\u1b82\u1ba1-\u1bad\u1bb0-\u1bb9\u1be6-\u1bf3\u1c24-\u1c37\u1c40-\u1c49\u1c50-\u1c59\u1cd0-\u1cd2\u1cd4-\u1ce8\u1ced\u1cf2-\u1cf4\u1cf8\u1cf9\u1dc0-\u1df5\u1dfb-\u1dff\u203f\u2040\u2054\u20d0-\u20dc\u20e1\u20e5-\u20f0\u2cef-\u2cf1\u2d7f\u2de0-\u2dff\u302a-\u302f\u3099\u309a\ua620-\ua629\ua66f\ua674-\ua67d\ua69e\ua69f\ua6f0\ua6f1\ua802\ua806\ua80b\ua823-\ua827\ua880\ua881\ua8b4-\ua8c5\ua8d0-\ua8d9\ua8e0-\ua8f1\ua900-\ua909\ua926-\ua92d\ua947-\ua953\ua980-\ua983\ua9b3-\ua9c0\ua9d0-\ua9d9\ua9e5\ua9f0-\ua9f9\uaa29-\uaa36\uaa43\uaa4c\uaa4d\uaa50-\uaa59\uaa7b-\uaa7d\uaab0\uaab2-\uaab4\uaab7\uaab8\uaabe\uaabf\uaac1\uaaeb-\uaaef\uaaf5\uaaf6\uabe3-\uabea\uabec\uabed\uabf0-\uabf9\ufb1e\ufe00-\ufe0f\ufe20-\ufe2f\ufe33\ufe34\ufe4d-\ufe4f\uff10-\uff19\uff3f"
-
-var nonASCIIidentifierStart = new RegExp("[" + nonASCIIidentifierStartChars + "]")
-var nonASCIIidentifier = new RegExp("[" + nonASCIIidentifierStartChars + nonASCIIidentifierChars + "]")
-
-nonASCIIidentifierStartChars = nonASCIIidentifierChars = null
-
-// These are a run-length and offset encoded representation of the
-// >0xffff code points that are a valid part of identifiers. The
-// offset starts at 0x10000, and each pair of numbers represents an
-// offset to the next range, and then a size of the range. They were
-// generated by bin/generate-identifier-regex.js
-
-// eslint-disable-next-line comma-spacing
-var astralIdentifierStartCodes = [0,11,2,25,2,18,2,1,2,14,3,13,35,122,70,52,268,28,4,48,48,31,17,26,6,37,11,29,3,35,5,7,2,4,43,157,19,35,5,35,5,39,9,51,157,310,10,21,11,7,153,5,3,0,2,43,2,1,4,0,3,22,11,22,10,30,66,18,2,1,11,21,11,25,71,55,7,1,65,0,16,3,2,2,2,26,45,28,4,28,36,7,2,27,28,53,11,21,11,18,14,17,111,72,56,50,14,50,785,52,76,44,33,24,27,35,42,34,4,0,13,47,15,3,22,0,2,0,36,17,2,24,85,6,2,0,2,3,2,14,2,9,8,46,39,7,3,1,3,21,2,6,2,1,2,4,4,0,19,0,13,4,159,52,19,3,54,47,21,1,2,0,185,46,42,3,37,47,21,0,60,42,86,25,391,63,32,0,449,56,264,8,2,36,18,0,50,29,881,921,103,110,18,195,2749,1070,4050,582,8634,568,8,30,114,29,19,47,17,3,32,20,6,18,881,68,12,0,67,12,65,0,32,6124,20,754,9486,1,3071,106,6,12,4,8,8,9,5991,84,2,70,2,1,3,0,3,1,3,3,2,11,2,0,2,6,2,64,2,3,3,7,2,6,2,27,2,3,2,4,2,0,4,6,2,339,3,24,2,24,2,30,2,24,2,30,2,24,2,30,2,24,2,30,2,24,2,7,4149,196,60,67,1213,3,2,26,2,1,2,0,3,0,2,9,2,3,2,0,2,0,7,0,5,0,2,0,2,0,2,2,2,1,2,0,3,0,2,0,2,0,2,0,2,0,2,1,2,0,3,3,2,6,2,3,2,3,2,0,2,9,2,16,6,2,2,4,2,16,4421,42710,42,4148,12,221,3,5761,10591,541]
-
-// eslint-disable-next-line comma-spacing
-var astralIdentifierCodes = [509,0,227,0,150,4,294,9,1368,2,2,1,6,3,41,2,5,0,166,1,1306,2,54,14,32,9,16,3,46,10,54,9,7,2,37,13,2,9,52,0,13,2,49,13,10,2,4,9,83,11,7,0,161,11,6,9,7,3,57,0,2,6,3,1,3,2,10,0,11,1,3,6,4,4,193,17,10,9,87,19,13,9,214,6,3,8,28,1,83,16,16,9,82,12,9,9,84,14,5,9,423,9,838,7,2,7,17,9,57,21,2,13,19882,9,135,4,60,6,26,9,1016,45,17,3,19723,1,5319,4,4,5,9,7,3,6,31,3,149,2,1418,49,513,54,5,49,9,0,15,0,23,4,2,14,1361,6,2,16,3,6,2,1,2,4,2214,6,110,6,6,9,792487,239]
-
-// This has a complexity linear to the value of the code. The
-// assumption is that looking up astral identifier characters is
-// rare.
-function isInAstralSet(code, set) {
- var pos = 0x10000
- for (var i = 0; i < set.length; i += 2) {
- pos += set[i]
- if (pos > code) return false
- pos += set[i + 1]
- if (pos >= code) return true
- }
-}
-
-// Test whether a given character code starts an identifier.
-
-function isIdentifierStart(code, astral) {
- if (code < 65) return code === 36
- if (code < 91) return true
- if (code < 97) return code === 95
- if (code < 123) return true
- if (code <= 0xffff) return code >= 0xaa && nonASCIIidentifierStart.test(String.fromCharCode(code))
- if (astral === false) return false
- return isInAstralSet(code, astralIdentifierStartCodes)
-}
-
-// Test whether a given character is part of an identifier.
-
-function isIdentifierChar(code, astral) {
- if (code < 48) return code === 36
- if (code < 58) return true
- if (code < 65) return false
- if (code < 91) return true
- if (code < 97) return code === 95
- if (code < 123) return true
- if (code <= 0xffff) return code >= 0xaa && nonASCIIidentifier.test(String.fromCharCode(code))
- if (astral === false) return false
- return isInAstralSet(code, astralIdentifierStartCodes) || isInAstralSet(code, astralIdentifierCodes)
-}
-
-// ## Token types
-
-// The assignment of fine-grained, information-carrying type objects
-// allows the tokenizer to store the information it has about a
-// token in a way that is very cheap for the parser to look up.
-
-// All token type variables start with an underscore, to make them
-// easy to recognize.
-
-// The `beforeExpr` property is used to disambiguate between regular
-// expressions and divisions. It is set on all token types that can
-// be followed by an expression (thus, a slash after them would be a
-// regular expression).
-//
-// The `startsExpr` property is used to check if the token ends a
-// `yield` expression. It is set on all token types that either can
-// directly start an expression (like a quotation mark) or can
-// continue an expression (like the body of a string).
-//
-// `isLoop` marks a keyword as starting a loop, which is important
-// to know when parsing a label, in order to allow or disallow
-// continue jumps to that label.
-
-var TokenType = function TokenType(label, conf) {
- if ( conf === void 0 ) conf = {};
-
- this.label = label
- this.keyword = conf.keyword
- this.beforeExpr = !!conf.beforeExpr
- this.startsExpr = !!conf.startsExpr
- this.isLoop = !!conf.isLoop
- this.isAssign = !!conf.isAssign
- this.prefix = !!conf.prefix
- this.postfix = !!conf.postfix
- this.binop = conf.binop || null
- this.updateContext = null
-};
-
-function binop(name, prec) {
- return new TokenType(name, {beforeExpr: true, binop: prec})
-}
-var beforeExpr = {beforeExpr: true};
-var startsExpr = {startsExpr: true};
-// Map keyword names to token types.
-
-var keywordTypes = {}
-
-// Succinct definitions of keyword token types
-function kw(name, options) {
- if ( options === void 0 ) options = {};
-
- options.keyword = name
- return keywordTypes[name] = new TokenType(name, options)
-}
-
-var tt = {
- num: new TokenType("num", startsExpr),
- regexp: new TokenType("regexp", startsExpr),
- string: new TokenType("string", startsExpr),
- name: new TokenType("name", startsExpr),
- eof: new TokenType("eof"),
-
- // Punctuation token types.
- bracketL: new TokenType("[", {beforeExpr: true, startsExpr: true}),
- bracketR: new TokenType("]"),
- braceL: new TokenType("{", {beforeExpr: true, startsExpr: true}),
- braceR: new TokenType("}"),
- parenL: new TokenType("(", {beforeExpr: true, startsExpr: true}),
- parenR: new TokenType(")"),
- comma: new TokenType(",", beforeExpr),
- semi: new TokenType(";", beforeExpr),
- colon: new TokenType(":", beforeExpr),
- dot: new TokenType("."),
- question: new TokenType("?", beforeExpr),
- arrow: new TokenType("=>", beforeExpr),
- template: new TokenType("template"),
- ellipsis: new TokenType("...", beforeExpr),
- backQuote: new TokenType("`", startsExpr),
- dollarBraceL: new TokenType("${", {beforeExpr: true, startsExpr: true}),
-
- // Operators. These carry several kinds of properties to help the
- // parser use them properly (the presence of these properties is
- // what categorizes them as operators).
- //
- // `binop`, when present, specifies that this operator is a binary
- // operator, and will refer to its precedence.
- //
- // `prefix` and `postfix` mark the operator as a prefix or postfix
- // unary operator.
- //
- // `isAssign` marks all of `=`, `+=`, `-=` etcetera, which act as
- // binary operators with a very low precedence, that should result
- // in AssignmentExpression nodes.
-
- eq: new TokenType("=", {beforeExpr: true, isAssign: true}),
- assign: new TokenType("_=", {beforeExpr: true, isAssign: true}),
- incDec: new TokenType("++/--", {prefix: true, postfix: true, startsExpr: true}),
- prefix: new TokenType("prefix", {beforeExpr: true, prefix: true, startsExpr: true}),
- logicalOR: binop("||", 1),
- logicalAND: binop("&&", 2),
- bitwiseOR: binop("|", 3),
- bitwiseXOR: binop("^", 4),
- bitwiseAND: binop("&", 5),
- equality: binop("==/!=", 6),
- relational: binop(">", 7),
- bitShift: binop("<>>", 8),
- plusMin: new TokenType("+/-", {beforeExpr: true, binop: 9, prefix: true, startsExpr: true}),
- modulo: binop("%", 10),
- star: binop("*", 10),
- slash: binop("/", 10),
- starstar: new TokenType("**", {beforeExpr: true}),
-
- // Keyword token types.
- _break: kw("break"),
- _case: kw("case", beforeExpr),
- _catch: kw("catch"),
- _continue: kw("continue"),
- _debugger: kw("debugger"),
- _default: kw("default", beforeExpr),
- _do: kw("do", {isLoop: true, beforeExpr: true}),
- _else: kw("else", beforeExpr),
- _finally: kw("finally"),
- _for: kw("for", {isLoop: true}),
- _function: kw("function", startsExpr),
- _if: kw("if"),
- _return: kw("return", beforeExpr),
- _switch: kw("switch"),
- _throw: kw("throw", beforeExpr),
- _try: kw("try"),
- _var: kw("var"),
- _const: kw("const"),
- _while: kw("while", {isLoop: true}),
- _with: kw("with"),
- _new: kw("new", {beforeExpr: true, startsExpr: true}),
- _this: kw("this", startsExpr),
- _super: kw("super", startsExpr),
- _class: kw("class"),
- _extends: kw("extends", beforeExpr),
- _export: kw("export"),
- _import: kw("import"),
- _null: kw("null", startsExpr),
- _true: kw("true", startsExpr),
- _false: kw("false", startsExpr),
- _in: kw("in", {beforeExpr: true, binop: 7}),
- _instanceof: kw("instanceof", {beforeExpr: true, binop: 7}),
- _typeof: kw("typeof", {beforeExpr: true, prefix: true, startsExpr: true}),
- _void: kw("void", {beforeExpr: true, prefix: true, startsExpr: true}),
- _delete: kw("delete", {beforeExpr: true, prefix: true, startsExpr: true})
-}
-
-// Matches a whole line break (where CRLF is considered a single
-// line break). Used to count lines.
-
-var lineBreak = /\r\n?|\n|\u2028|\u2029/
-var lineBreakG = new RegExp(lineBreak.source, "g")
-
-function isNewLine(code) {
- return code === 10 || code === 13 || code === 0x2028 || code === 0x2029
-}
-
-var nonASCIIwhitespace = /[\u1680\u180e\u2000-\u200a\u202f\u205f\u3000\ufeff]/
-
-var skipWhiteSpace = /(?:\s|\/\/.*|\/\*[^]*?\*\/)*/g
-
-var ref = Object.prototype;
-var hasOwnProperty = ref.hasOwnProperty;
-var toString = ref.toString;
-
-// Checks if an object has a property.
-
-function has(obj, propName) {
- return hasOwnProperty.call(obj, propName)
-}
-
-var isArray = Array.isArray || (function (obj) { return (
- toString.call(obj) === "[object Array]"
-); })
-
-// These are used when `options.locations` is on, for the
-// `startLoc` and `endLoc` properties.
-
-var Position = function Position(line, col) {
- this.line = line
- this.column = col
-};
-
-Position.prototype.offset = function offset (n) {
- return new Position(this.line, this.column + n)
-};
-
-var SourceLocation = function SourceLocation(p, start, end) {
- this.start = start
- this.end = end
- if (p.sourceFile !== null) this.source = p.sourceFile
-};
-
-// The `getLineInfo` function is mostly useful when the
-// `locations` option is off (for performance reasons) and you
-// want to find the line/column position for a given character
-// offset. `input` should be the code string that the offset refers
-// into.
-
-function getLineInfo(input, offset) {
- for (var line = 1, cur = 0;;) {
- lineBreakG.lastIndex = cur
- var match = lineBreakG.exec(input)
- if (match && match.index < offset) {
- ++line
- cur = match.index + match[0].length
- } else {
- return new Position(line, offset - cur)
- }
- }
-}
-
-// A second optional argument can be given to further configure
-// the parser process. These options are recognized:
-
-var defaultOptions = {
- // `ecmaVersion` indicates the ECMAScript version to parse. Must
- // be either 3, 5, 6 (2015), 7 (2016), or 8 (2017). This influences support
- // for strict mode, the set of reserved words, and support for
- // new syntax features. The default is 7.
- ecmaVersion: 7,
- // `sourceType` indicates the mode the code should be parsed in.
- // Can be either `"script"` or `"module"`. This influences global
- // strict mode and parsing of `import` and `export` declarations.
- sourceType: "script",
- // `onInsertedSemicolon` can be a callback that will be called
- // when a semicolon is automatically inserted. It will be passed
- // th position of the comma as an offset, and if `locations` is
- // enabled, it is given the location as a `{line, column}` object
- // as second argument.
- onInsertedSemicolon: null,
- // `onTrailingComma` is similar to `onInsertedSemicolon`, but for
- // trailing commas.
- onTrailingComma: null,
- // By default, reserved words are only enforced if ecmaVersion >= 5.
- // Set `allowReserved` to a boolean value to explicitly turn this on
- // an off. When this option has the value "never", reserved words
- // and keywords can also not be used as property names.
- allowReserved: null,
- // When enabled, a return at the top level is not considered an
- // error.
- allowReturnOutsideFunction: false,
- // When enabled, import/export statements are not constrained to
- // appearing at the top of the program.
- allowImportExportEverywhere: false,
- // When enabled, hashbang directive in the beginning of file
- // is allowed and treated as a line comment.
- allowHashBang: false,
- // When `locations` is on, `loc` properties holding objects with
- // `start` and `end` properties in `{line, column}` form (with
- // line being 1-based and column 0-based) will be attached to the
- // nodes.
- locations: false,
- // A function can be passed as `onToken` option, which will
- // cause Acorn to call that function with object in the same
- // format as tokens returned from `tokenizer().getToken()`. Note
- // that you are not allowed to call the parser from the
- // callback—that will corrupt its internal state.
- onToken: null,
- // A function can be passed as `onComment` option, which will
- // cause Acorn to call that function with `(block, text, start,
- // end)` parameters whenever a comment is skipped. `block` is a
- // boolean indicating whether this is a block (`/* */`) comment,
- // `text` is the content of the comment, and `start` and `end` are
- // character offsets that denote the start and end of the comment.
- // When the `locations` option is on, two more parameters are
- // passed, the full `{line, column}` locations of the start and
- // end of the comments. Note that you are not allowed to call the
- // parser from the callback—that will corrupt its internal state.
- onComment: null,
- // Nodes have their start and end characters offsets recorded in
- // `start` and `end` properties (directly on the node, rather than
- // the `loc` object, which holds line/column data. To also add a
- // [semi-standardized][range] `range` property holding a `[start,
- // end]` array with the same numbers, set the `ranges` option to
- // `true`.
- //
- // [range]: https://bugzilla.mozilla.org/show_bug.cgi?id=745678
- ranges: false,
- // It is possible to parse multiple files into a single AST by
- // passing the tree produced by parsing the first file as
- // `program` option in subsequent parses. This will add the
- // toplevel forms of the parsed file to the `Program` (top) node
- // of an existing parse tree.
- program: null,
- // When `locations` is on, you can pass this to record the source
- // file in every node's `loc` object.
- sourceFile: null,
- // This value, if given, is stored in every node, whether
- // `locations` is on or off.
- directSourceFile: null,
- // When enabled, parenthesized expressions are represented by
- // (non-standard) ParenthesizedExpression nodes
- preserveParens: false,
- plugins: {}
-}
-
-// Interpret and default an options object
-
-function getOptions(opts) {
- var options = {}
-
- for (var opt in defaultOptions)
- options[opt] = opts && has(opts, opt) ? opts[opt] : defaultOptions[opt]
-
- if (options.ecmaVersion >= 2015)
- options.ecmaVersion -= 2009
-
- if (options.allowReserved == null)
- options.allowReserved = options.ecmaVersion < 5
-
- if (isArray(options.onToken)) {
- var tokens = options.onToken
- options.onToken = function (token) { return tokens.push(token); }
- }
- if (isArray(options.onComment))
- options.onComment = pushComment(options, options.onComment)
-
- return options
-}
-
-function pushComment(options, array) {
- return function(block, text, start, end, startLoc, endLoc) {
- var comment = {
- type: block ? "Block" : "Line",
- value: text,
- start: start,
- end: end
- }
- if (options.locations)
- comment.loc = new SourceLocation(this, startLoc, endLoc)
- if (options.ranges)
- comment.range = [start, end]
- array.push(comment)
- }
-}
-
-// Registered plugins
-var plugins = {}
-
-function keywordRegexp(words) {
- return new RegExp("^(" + words.replace(/ /g, "|") + ")$")
-}
-
-var Parser = function Parser(options, input, startPos) {
- this.options = options = getOptions(options)
- this.sourceFile = options.sourceFile
- this.keywords = keywordRegexp(keywords[options.ecmaVersion >= 6 ? 6 : 5])
- var reserved = ""
- if (!options.allowReserved) {
- for (var v = options.ecmaVersion;; v--)
- if (reserved = reservedWords[v]) break
- if (options.sourceType == "module") reserved += " await"
- }
- this.reservedWords = keywordRegexp(reserved)
- var reservedStrict = (reserved ? reserved + " " : "") + reservedWords.strict
- this.reservedWordsStrict = keywordRegexp(reservedStrict)
- this.reservedWordsStrictBind = keywordRegexp(reservedStrict + " " + reservedWords.strictBind)
- this.input = String(input)
-
- // Used to signal to callers of `readWord1` whether the word
- // contained any escape sequences. This is needed because words with
- // escape sequences must not be interpreted as keywords.
- this.containsEsc = false
-
- // Load plugins
- this.loadPlugins(options.plugins)
-
- // Set up token state
-
- // The current position of the tokenizer in the input.
- if (startPos) {
- this.pos = startPos
- this.lineStart = this.input.lastIndexOf("\n", startPos - 1) + 1
- this.curLine = this.input.slice(0, this.lineStart).split(lineBreak).length
- } else {
- this.pos = this.lineStart = 0
- this.curLine = 1
- }
-
- // Properties of the current token:
- // Its type
- this.type = tt.eof
- // For tokens that include more information than their type, the value
- this.value = null
- // Its start and end offset
- this.start = this.end = this.pos
- // And, if locations are used, the {line, column} object
- // corresponding to those offsets
- this.startLoc = this.endLoc = this.curPosition()
-
- // Position information for the previous token
- this.lastTokEndLoc = this.lastTokStartLoc = null
- this.lastTokStart = this.lastTokEnd = this.pos
-
- // The context stack is used to superficially track syntactic
- // context to predict whether a regular expression is allowed in a
- // given position.
- this.context = this.initialContext()
- this.exprAllowed = true
-
- // Figure out if it's a module code.
- this.inModule = options.sourceType === "module"
- this.strict = this.inModule || this.strictDirective(this.pos)
-
- // Used to signify the start of a potential arrow function
- this.potentialArrowAt = -1
-
- // Flags to track whether we are in a function, a generator, an async function.
- this.inFunction = this.inGenerator = this.inAsync = false
- // Positions to delayed-check that yield/await does not exist in default parameters.
- this.yieldPos = this.awaitPos = 0
- // Labels in scope.
- this.labels = []
-
- // If enabled, skip leading hashbang line.
- if (this.pos === 0 && options.allowHashBang && this.input.slice(0, 2) === "#!")
- this.skipLineComment(2)
-
- // Scope tracking for duplicate variable names (see scope.js)
- this.scopeStack = []
- this.enterFunctionScope()
-};
-
-// DEPRECATED Kept for backwards compatibility until 3.0 in case a plugin uses them
-Parser.prototype.isKeyword = function isKeyword (word) { return this.keywords.test(word) };
-Parser.prototype.isReservedWord = function isReservedWord (word) { return this.reservedWords.test(word) };
-
-Parser.prototype.extend = function extend (name, f) {
- this[name] = f(this[name])
-};
-
-Parser.prototype.loadPlugins = function loadPlugins (pluginConfigs) {
- var this$1 = this;
-
- for (var name in pluginConfigs) {
- var plugin = plugins[name]
- if (!plugin) throw new Error("Plugin '" + name + "' not found")
- plugin(this$1, pluginConfigs[name])
- }
-};
-
-Parser.prototype.parse = function parse () {
- var node = this.options.program || this.startNode()
- this.nextToken()
- return this.parseTopLevel(node)
-};
-
-var pp = Parser.prototype
-
-// ## Parser utilities
-
-var literal = /^(?:'((?:[^']|\.)*)'|"((?:[^"]|\.)*)"|;)/
-pp.strictDirective = function(start) {
- var this$1 = this;
-
- for (;;) {
- skipWhiteSpace.lastIndex = start
- start += skipWhiteSpace.exec(this$1.input)[0].length
- var match = literal.exec(this$1.input.slice(start))
- if (!match) return false
- if ((match[1] || match[2]) == "use strict") return true
- start += match[0].length
- }
-}
-
-// Predicate that tests whether the next token is of the given
-// type, and if yes, consumes it as a side effect.
-
-pp.eat = function(type) {
- if (this.type === type) {
- this.next()
- return true
- } else {
- return false
- }
-}
-
-// Tests whether parsed token is a contextual keyword.
-
-pp.isContextual = function(name) {
- return this.type === tt.name && this.value === name
-}
-
-// Consumes contextual keyword if possible.
-
-pp.eatContextual = function(name) {
- return this.value === name && this.eat(tt.name)
-}
-
-// Asserts that following token is given contextual keyword.
-
-pp.expectContextual = function(name) {
- if (!this.eatContextual(name)) this.unexpected()
-}
-
-// Test whether a semicolon can be inserted at the current position.
-
-pp.canInsertSemicolon = function() {
- return this.type === tt.eof ||
- this.type === tt.braceR ||
- lineBreak.test(this.input.slice(this.lastTokEnd, this.start))
-}
-
-pp.insertSemicolon = function() {
- if (this.canInsertSemicolon()) {
- if (this.options.onInsertedSemicolon)
- this.options.onInsertedSemicolon(this.lastTokEnd, this.lastTokEndLoc)
- return true
- }
-}
-
-// Consume a semicolon, or, failing that, see if we are allowed to
-// pretend that there is a semicolon at this position.
-
-pp.semicolon = function() {
- if (!this.eat(tt.semi) && !this.insertSemicolon()) this.unexpected()
-}
-
-pp.afterTrailingComma = function(tokType, notNext) {
- if (this.type == tokType) {
- if (this.options.onTrailingComma)
- this.options.onTrailingComma(this.lastTokStart, this.lastTokStartLoc)
- if (!notNext)
- this.next()
- return true
- }
-}
-
-// Expect a token of a given type. If found, consume it, otherwise,
-// raise an unexpected token error.
-
-pp.expect = function(type) {
- this.eat(type) || this.unexpected()
-}
-
-// Raise an unexpected token error.
-
-pp.unexpected = function(pos) {
- this.raise(pos != null ? pos : this.start, "Unexpected token")
-}
-
-var DestructuringErrors = function DestructuringErrors() {
- this.shorthandAssign = this.trailingComma = this.parenthesizedAssign = this.parenthesizedBind = -1
-};
-
-pp.checkPatternErrors = function(refDestructuringErrors, isAssign) {
- if (!refDestructuringErrors) return
- if (refDestructuringErrors.trailingComma > -1)
- this.raiseRecoverable(refDestructuringErrors.trailingComma, "Comma is not permitted after the rest element")
- var parens = isAssign ? refDestructuringErrors.parenthesizedAssign : refDestructuringErrors.parenthesizedBind
- if (parens > -1) this.raiseRecoverable(parens, "Parenthesized pattern")
-}
-
-pp.checkExpressionErrors = function(refDestructuringErrors, andThrow) {
- var pos = refDestructuringErrors ? refDestructuringErrors.shorthandAssign : -1
- if (!andThrow) return pos >= 0
- if (pos > -1) this.raise(pos, "Shorthand property assignments are valid only in destructuring patterns")
-}
-
-pp.checkYieldAwaitInDefaultParams = function() {
- if (this.yieldPos && (!this.awaitPos || this.yieldPos < this.awaitPos))
- this.raise(this.yieldPos, "Yield expression cannot be a default value")
- if (this.awaitPos)
- this.raise(this.awaitPos, "Await expression cannot be a default value")
-}
-
-pp.isSimpleAssignTarget = function(expr) {
- if (expr.type === "ParenthesizedExpression")
- return this.isSimpleAssignTarget(expr.expression)
- return expr.type === "Identifier" || expr.type === "MemberExpression"
-}
-
-var pp$1 = Parser.prototype
-
-// ### Statement parsing
-
-// Parse a program. Initializes the parser, reads any number of
-// statements, and wraps them in a Program node. Optionally takes a
-// `program` argument. If present, the statements will be appended
-// to its body instead of creating a new node.
-
-pp$1.parseTopLevel = function(node) {
- var this$1 = this;
-
- var exports = {}
- if (!node.body) node.body = []
- while (this.type !== tt.eof) {
- var stmt = this$1.parseStatement(true, true, exports)
- node.body.push(stmt)
- }
- this.next()
- if (this.options.ecmaVersion >= 6) {
- node.sourceType = this.options.sourceType
- }
- return this.finishNode(node, "Program")
-}
-
-var loopLabel = {kind: "loop"};
-var switchLabel = {kind: "switch"};
-pp$1.isLet = function() {
- if (this.type !== tt.name || this.options.ecmaVersion < 6 || this.value != "let") return false
- skipWhiteSpace.lastIndex = this.pos
- var skip = skipWhiteSpace.exec(this.input)
- var next = this.pos + skip[0].length, nextCh = this.input.charCodeAt(next)
- if (nextCh === 91 || nextCh == 123) return true // '{' and '['
- if (isIdentifierStart(nextCh, true)) {
- var pos = next + 1
- while (isIdentifierChar(this.input.charCodeAt(pos), true)) ++pos
- var ident = this.input.slice(next, pos)
- if (!this.isKeyword(ident)) return true
- }
- return false
-}
-
-// check 'async [no LineTerminator here] function'
-// - 'async /*foo*/ function' is OK.
-// - 'async /*\n*/ function' is invalid.
-pp$1.isAsyncFunction = function() {
- if (this.type !== tt.name || this.options.ecmaVersion < 8 || this.value != "async")
- return false
-
- skipWhiteSpace.lastIndex = this.pos
- var skip = skipWhiteSpace.exec(this.input)
- var next = this.pos + skip[0].length
- return !lineBreak.test(this.input.slice(this.pos, next)) &&
- this.input.slice(next, next + 8) === "function" &&
- (next + 8 == this.input.length || !isIdentifierChar(this.input.charAt(next + 8)))
-}
-
-// Parse a single statement.
-//
-// If expecting a statement and finding a slash operator, parse a
-// regular expression literal. This is to handle cases like
-// `if (foo) /blah/.exec(foo)`, where looking at the previous token
-// does not help.
-
-pp$1.parseStatement = function(declaration, topLevel, exports) {
- var starttype = this.type, node = this.startNode(), kind
-
- if (this.isLet()) {
- starttype = tt._var
- kind = "let"
- }
-
- // Most types of statements are recognized by the keyword they
- // start with. Many are trivial to parse, some require a bit of
- // complexity.
-
- switch (starttype) {
- case tt._break: case tt._continue: return this.parseBreakContinueStatement(node, starttype.keyword)
- case tt._debugger: return this.parseDebuggerStatement(node)
- case tt._do: return this.parseDoStatement(node)
- case tt._for: return this.parseForStatement(node)
- case tt._function:
- if (!declaration && this.options.ecmaVersion >= 6) this.unexpected()
- return this.parseFunctionStatement(node, false)
- case tt._class:
- if (!declaration) this.unexpected()
- return this.parseClass(node, true)
- case tt._if: return this.parseIfStatement(node)
- case tt._return: return this.parseReturnStatement(node)
- case tt._switch: return this.parseSwitchStatement(node)
- case tt._throw: return this.parseThrowStatement(node)
- case tt._try: return this.parseTryStatement(node)
- case tt._const: case tt._var:
- kind = kind || this.value
- if (!declaration && kind != "var") this.unexpected()
- return this.parseVarStatement(node, kind)
- case tt._while: return this.parseWhileStatement(node)
- case tt._with: return this.parseWithStatement(node)
- case tt.braceL: return this.parseBlock()
- case tt.semi: return this.parseEmptyStatement(node)
- case tt._export:
- case tt._import:
- if (!this.options.allowImportExportEverywhere) {
- if (!topLevel)
- this.raise(this.start, "'import' and 'export' may only appear at the top level")
- if (!this.inModule)
- this.raise(this.start, "'import' and 'export' may appear only with 'sourceType: module'")
- }
- return starttype === tt._import ? this.parseImport(node) : this.parseExport(node, exports)
-
- // If the statement does not start with a statement keyword or a
- // brace, it's an ExpressionStatement or LabeledStatement. We
- // simply start parsing an expression, and afterwards, if the
- // next token is a colon and the expression was a simple
- // Identifier node, we switch to interpreting it as a label.
- default:
- if (this.isAsyncFunction() && declaration) {
- this.next()
- return this.parseFunctionStatement(node, true)
- }
-
- var maybeName = this.value, expr = this.parseExpression()
- if (starttype === tt.name && expr.type === "Identifier" && this.eat(tt.colon))
- return this.parseLabeledStatement(node, maybeName, expr)
- else return this.parseExpressionStatement(node, expr)
- }
-}
-
-pp$1.parseBreakContinueStatement = function(node, keyword) {
- var this$1 = this;
-
- var isBreak = keyword == "break"
- this.next()
- if (this.eat(tt.semi) || this.insertSemicolon()) node.label = null
- else if (this.type !== tt.name) this.unexpected()
- else {
- node.label = this.parseIdent()
- this.semicolon()
- }
-
- // Verify that there is an actual destination to break or
- // continue to.
- var i = 0
- for (; i < this.labels.length; ++i) {
- var lab = this$1.labels[i]
- if (node.label == null || lab.name === node.label.name) {
- if (lab.kind != null && (isBreak || lab.kind === "loop")) break
- if (node.label && isBreak) break
- }
- }
- if (i === this.labels.length) this.raise(node.start, "Unsyntactic " + keyword)
- return this.finishNode(node, isBreak ? "BreakStatement" : "ContinueStatement")
-}
-
-pp$1.parseDebuggerStatement = function(node) {
- this.next()
- this.semicolon()
- return this.finishNode(node, "DebuggerStatement")
-}
-
-pp$1.parseDoStatement = function(node) {
- this.next()
- this.labels.push(loopLabel)
- node.body = this.parseStatement(false)
- this.labels.pop()
- this.expect(tt._while)
- node.test = this.parseParenExpression()
- if (this.options.ecmaVersion >= 6)
- this.eat(tt.semi)
- else
- this.semicolon()
- return this.finishNode(node, "DoWhileStatement")
-}
-
-// Disambiguating between a `for` and a `for`/`in` or `for`/`of`
-// loop is non-trivial. Basically, we have to parse the init `var`
-// statement or expression, disallowing the `in` operator (see
-// the second parameter to `parseExpression`), and then check
-// whether the next token is `in` or `of`. When there is no init
-// part (semicolon immediately after the opening parenthesis), it
-// is a regular `for` loop.
-
-pp$1.parseForStatement = function(node) {
- this.next()
- this.labels.push(loopLabel)
- this.enterLexicalScope()
- this.expect(tt.parenL)
- if (this.type === tt.semi) return this.parseFor(node, null)
- var isLet = this.isLet()
- if (this.type === tt._var || this.type === tt._const || isLet) {
- var init$1 = this.startNode(), kind = isLet ? "let" : this.value
- this.next()
- this.parseVar(init$1, true, kind)
- this.finishNode(init$1, "VariableDeclaration")
- if ((this.type === tt._in || (this.options.ecmaVersion >= 6 && this.isContextual("of"))) && init$1.declarations.length === 1 &&
- !(kind !== "var" && init$1.declarations[0].init))
- return this.parseForIn(node, init$1)
- return this.parseFor(node, init$1)
- }
- var refDestructuringErrors = new DestructuringErrors
- var init = this.parseExpression(true, refDestructuringErrors)
- if (this.type === tt._in || (this.options.ecmaVersion >= 6 && this.isContextual("of"))) {
- this.toAssignable(init)
- this.checkLVal(init)
- this.checkPatternErrors(refDestructuringErrors, true)
- return this.parseForIn(node, init)
- } else {
- this.checkExpressionErrors(refDestructuringErrors, true)
- }
- return this.parseFor(node, init)
-}
-
-pp$1.parseFunctionStatement = function(node, isAsync) {
- this.next()
- return this.parseFunction(node, true, false, isAsync)
-}
-
-pp$1.isFunction = function() {
- return this.type === tt._function || this.isAsyncFunction()
-}
-
-pp$1.parseIfStatement = function(node) {
- this.next()
- node.test = this.parseParenExpression()
- // allow function declarations in branches, but only in non-strict mode
- node.consequent = this.parseStatement(!this.strict && this.isFunction())
- node.alternate = this.eat(tt._else) ? this.parseStatement(!this.strict && this.isFunction()) : null
- return this.finishNode(node, "IfStatement")
-}
-
-pp$1.parseReturnStatement = function(node) {
- if (!this.inFunction && !this.options.allowReturnOutsideFunction)
- this.raise(this.start, "'return' outside of function")
- this.next()
-
- // In `return` (and `break`/`continue`), the keywords with
- // optional arguments, we eagerly look for a semicolon or the
- // possibility to insert one.
-
- if (this.eat(tt.semi) || this.insertSemicolon()) node.argument = null
- else { node.argument = this.parseExpression(); this.semicolon() }
- return this.finishNode(node, "ReturnStatement")
-}
-
-pp$1.parseSwitchStatement = function(node) {
- var this$1 = this;
-
- this.next()
- node.discriminant = this.parseParenExpression()
- node.cases = []
- this.expect(tt.braceL)
- this.labels.push(switchLabel)
- this.enterLexicalScope()
-
- // Statements under must be grouped (by label) in SwitchCase
- // nodes. `cur` is used to keep the node that we are currently
- // adding statements to.
-
- var cur
- for (var sawDefault = false; this.type != tt.braceR;) {
- if (this$1.type === tt._case || this$1.type === tt._default) {
- var isCase = this$1.type === tt._case
- if (cur) this$1.finishNode(cur, "SwitchCase")
- node.cases.push(cur = this$1.startNode())
- cur.consequent = []
- this$1.next()
- if (isCase) {
- cur.test = this$1.parseExpression()
- } else {
- if (sawDefault) this$1.raiseRecoverable(this$1.lastTokStart, "Multiple default clauses")
- sawDefault = true
- cur.test = null
- }
- this$1.expect(tt.colon)
- } else {
- if (!cur) this$1.unexpected()
- cur.consequent.push(this$1.parseStatement(true))
- }
- }
- this.exitLexicalScope()
- if (cur) this.finishNode(cur, "SwitchCase")
- this.next() // Closing brace
- this.labels.pop()
- return this.finishNode(node, "SwitchStatement")
-}
-
-pp$1.parseThrowStatement = function(node) {
- this.next()
- if (lineBreak.test(this.input.slice(this.lastTokEnd, this.start)))
- this.raise(this.lastTokEnd, "Illegal newline after throw")
- node.argument = this.parseExpression()
- this.semicolon()
- return this.finishNode(node, "ThrowStatement")
-}
-
-// Reused empty array added for node fields that are always empty.
-
-var empty = []
-
-pp$1.parseTryStatement = function(node) {
- this.next()
- node.block = this.parseBlock()
- node.handler = null
- if (this.type === tt._catch) {
- var clause = this.startNode()
- this.next()
- this.expect(tt.parenL)
- clause.param = this.parseBindingAtom()
- this.enterLexicalScope()
- this.checkLVal(clause.param, "let")
- this.expect(tt.parenR)
- clause.body = this.parseBlock(false)
- this.exitLexicalScope()
- node.handler = this.finishNode(clause, "CatchClause")
- }
- node.finalizer = this.eat(tt._finally) ? this.parseBlock() : null
- if (!node.handler && !node.finalizer)
- this.raise(node.start, "Missing catch or finally clause")
- return this.finishNode(node, "TryStatement")
-}
-
-pp$1.parseVarStatement = function(node, kind) {
- this.next()
- this.parseVar(node, false, kind)
- this.semicolon()
- return this.finishNode(node, "VariableDeclaration")
-}
-
-pp$1.parseWhileStatement = function(node) {
- this.next()
- node.test = this.parseParenExpression()
- this.labels.push(loopLabel)
- node.body = this.parseStatement(false)
- this.labels.pop()
- return this.finishNode(node, "WhileStatement")
-}
-
-pp$1.parseWithStatement = function(node) {
- if (this.strict) this.raise(this.start, "'with' in strict mode")
- this.next()
- node.object = this.parseParenExpression()
- node.body = this.parseStatement(false)
- return this.finishNode(node, "WithStatement")
-}
-
-pp$1.parseEmptyStatement = function(node) {
- this.next()
- return this.finishNode(node, "EmptyStatement")
-}
-
-pp$1.parseLabeledStatement = function(node, maybeName, expr) {
- var this$1 = this;
-
- for (var i = 0; i < this.labels.length; ++i)
- if (this$1.labels[i].name === maybeName) this$1.raise(expr.start, "Label '" + maybeName + "' is already declared")
- var kind = this.type.isLoop ? "loop" : this.type === tt._switch ? "switch" : null
- for (var i$1 = this.labels.length - 1; i$1 >= 0; i$1--) {
- var label = this$1.labels[i$1]
- if (label.statementStart == node.start) {
- label.statementStart = this$1.start
- label.kind = kind
- } else break
- }
- this.labels.push({name: maybeName, kind: kind, statementStart: this.start})
- node.body = this.parseStatement(true)
- if (node.body.type == "ClassDeclaration" ||
- node.body.type == "VariableDeclaration" && node.body.kind != "var" ||
- node.body.type == "FunctionDeclaration" && (this.strict || node.body.generator))
- this.raiseRecoverable(node.body.start, "Invalid labeled declaration")
- this.labels.pop()
- node.label = expr
- return this.finishNode(node, "LabeledStatement")
-}
-
-pp$1.parseExpressionStatement = function(node, expr) {
- node.expression = expr
- this.semicolon()
- return this.finishNode(node, "ExpressionStatement")
-}
-
-// Parse a semicolon-enclosed block of statements, handling `"use
-// strict"` declarations when `allowStrict` is true (used for
-// function bodies).
-
-pp$1.parseBlock = function(createNewLexicalScope) {
- var this$1 = this;
- if ( createNewLexicalScope === void 0 ) createNewLexicalScope = true;
-
- var node = this.startNode()
- node.body = []
- this.expect(tt.braceL)
- if (createNewLexicalScope) {
- this.enterLexicalScope()
- }
- while (!this.eat(tt.braceR)) {
- var stmt = this$1.parseStatement(true)
- node.body.push(stmt)
- }
- if (createNewLexicalScope) {
- this.exitLexicalScope()
- }
- return this.finishNode(node, "BlockStatement")
-}
-
-// Parse a regular `for` loop. The disambiguation code in
-// `parseStatement` will already have parsed the init statement or
-// expression.
-
-pp$1.parseFor = function(node, init) {
- node.init = init
- this.expect(tt.semi)
- node.test = this.type === tt.semi ? null : this.parseExpression()
- this.expect(tt.semi)
- node.update = this.type === tt.parenR ? null : this.parseExpression()
- this.expect(tt.parenR)
- this.exitLexicalScope()
- node.body = this.parseStatement(false)
- this.labels.pop()
- return this.finishNode(node, "ForStatement")
-}
-
-// Parse a `for`/`in` and `for`/`of` loop, which are almost
-// same from parser's perspective.
-
-pp$1.parseForIn = function(node, init) {
- var type = this.type === tt._in ? "ForInStatement" : "ForOfStatement"
- this.next()
- node.left = init
- node.right = this.parseExpression()
- this.expect(tt.parenR)
- this.exitLexicalScope()
- node.body = this.parseStatement(false)
- this.labels.pop()
- return this.finishNode(node, type)
-}
-
-// Parse a list of variable declarations.
-
-pp$1.parseVar = function(node, isFor, kind) {
- var this$1 = this;
-
- node.declarations = []
- node.kind = kind
- for (;;) {
- var decl = this$1.startNode()
- this$1.parseVarId(decl, kind)
- if (this$1.eat(tt.eq)) {
- decl.init = this$1.parseMaybeAssign(isFor)
- } else if (kind === "const" && !(this$1.type === tt._in || (this$1.options.ecmaVersion >= 6 && this$1.isContextual("of")))) {
- this$1.unexpected()
- } else if (decl.id.type != "Identifier" && !(isFor && (this$1.type === tt._in || this$1.isContextual("of")))) {
- this$1.raise(this$1.lastTokEnd, "Complex binding patterns require an initialization value")
- } else {
- decl.init = null
- }
- node.declarations.push(this$1.finishNode(decl, "VariableDeclarator"))
- if (!this$1.eat(tt.comma)) break
- }
- return node
-}
-
-pp$1.parseVarId = function(decl, kind) {
- decl.id = this.parseBindingAtom(kind)
- this.checkLVal(decl.id, kind, false)
-}
-
-// Parse a function declaration or literal (depending on the
-// `isStatement` parameter).
-
-pp$1.parseFunction = function(node, isStatement, allowExpressionBody, isAsync) {
- this.initFunction(node)
- if (this.options.ecmaVersion >= 6 && !isAsync)
- node.generator = this.eat(tt.star)
- if (this.options.ecmaVersion >= 8)
- node.async = !!isAsync
-
- if (isStatement) {
- node.id = isStatement === "nullableID" && this.type != tt.name ? null : this.parseIdent()
- if (node.id) {
- this.checkLVal(node.id, "var")
- }
- }
-
- var oldInGen = this.inGenerator, oldInAsync = this.inAsync,
- oldYieldPos = this.yieldPos, oldAwaitPos = this.awaitPos, oldInFunc = this.inFunction
- this.inGenerator = node.generator
- this.inAsync = node.async
- this.yieldPos = 0
- this.awaitPos = 0
- this.inFunction = true
- this.enterFunctionScope()
-
- if (!isStatement)
- node.id = this.type == tt.name ? this.parseIdent() : null
-
- this.parseFunctionParams(node)
- this.parseFunctionBody(node, allowExpressionBody)
-
- this.inGenerator = oldInGen
- this.inAsync = oldInAsync
- this.yieldPos = oldYieldPos
- this.awaitPos = oldAwaitPos
- this.inFunction = oldInFunc
- return this.finishNode(node, isStatement ? "FunctionDeclaration" : "FunctionExpression")
-}
-
-pp$1.parseFunctionParams = function(node) {
- this.expect(tt.parenL)
- node.params = this.parseBindingList(tt.parenR, false, this.options.ecmaVersion >= 8, true)
- this.checkYieldAwaitInDefaultParams()
-}
-
-// Parse a class declaration or literal (depending on the
-// `isStatement` parameter).
-
-pp$1.parseClass = function(node, isStatement) {
- var this$1 = this;
-
- this.next()
-
- this.parseClassId(node, isStatement)
- this.parseClassSuper(node)
- var classBody = this.startNode()
- var hadConstructor = false
- classBody.body = []
- this.expect(tt.braceL)
- while (!this.eat(tt.braceR)) {
- if (this$1.eat(tt.semi)) continue
- var method = this$1.startNode()
- var isGenerator = this$1.eat(tt.star)
- var isAsync = false
- var isMaybeStatic = this$1.type === tt.name && this$1.value === "static"
- this$1.parsePropertyName(method)
- method.static = isMaybeStatic && this$1.type !== tt.parenL
- if (method.static) {
- if (isGenerator) this$1.unexpected()
- isGenerator = this$1.eat(tt.star)
- this$1.parsePropertyName(method)
- }
- if (this$1.options.ecmaVersion >= 8 && !isGenerator && !method.computed &&
- method.key.type === "Identifier" && method.key.name === "async" && this$1.type !== tt.parenL &&
- !this$1.canInsertSemicolon()) {
- isAsync = true
- this$1.parsePropertyName(method)
- }
- method.kind = "method"
- var isGetSet = false
- if (!method.computed) {
- var key = method.key;
- if (!isGenerator && !isAsync && key.type === "Identifier" && this$1.type !== tt.parenL && (key.name === "get" || key.name === "set")) {
- isGetSet = true
- method.kind = key.name
- key = this$1.parsePropertyName(method)
- }
- if (!method.static && (key.type === "Identifier" && key.name === "constructor" ||
- key.type === "Literal" && key.value === "constructor")) {
- if (hadConstructor) this$1.raise(key.start, "Duplicate constructor in the same class")
- if (isGetSet) this$1.raise(key.start, "Constructor can't have get/set modifier")
- if (isGenerator) this$1.raise(key.start, "Constructor can't be a generator")
- if (isAsync) this$1.raise(key.start, "Constructor can't be an async method")
- method.kind = "constructor"
- hadConstructor = true
- }
- }
- this$1.parseClassMethod(classBody, method, isGenerator, isAsync)
- if (isGetSet) {
- var paramCount = method.kind === "get" ? 0 : 1
- if (method.value.params.length !== paramCount) {
- var start = method.value.start
- if (method.kind === "get")
- this$1.raiseRecoverable(start, "getter should have no params")
- else
- this$1.raiseRecoverable(start, "setter should have exactly one param")
- } else {
- if (method.kind === "set" && method.value.params[0].type === "RestElement")
- this$1.raiseRecoverable(method.value.params[0].start, "Setter cannot use rest params")
- }
- }
- }
- node.body = this.finishNode(classBody, "ClassBody")
- return this.finishNode(node, isStatement ? "ClassDeclaration" : "ClassExpression")
-}
-
-pp$1.parseClassMethod = function(classBody, method, isGenerator, isAsync) {
- method.value = this.parseMethod(isGenerator, isAsync)
- classBody.body.push(this.finishNode(method, "MethodDefinition"))
-}
-
-pp$1.parseClassId = function(node, isStatement) {
- node.id = this.type === tt.name ? this.parseIdent() : isStatement === true ? this.unexpected() : null
-}
-
-pp$1.parseClassSuper = function(node) {
- node.superClass = this.eat(tt._extends) ? this.parseExprSubscripts() : null
-}
-
-// Parses module export declaration.
-
-pp$1.parseExport = function(node, exports) {
- var this$1 = this;
-
- this.next()
- // export * from '...'
- if (this.eat(tt.star)) {
- this.expectContextual("from")
- node.source = this.type === tt.string ? this.parseExprAtom() : this.unexpected()
- this.semicolon()
- return this.finishNode(node, "ExportAllDeclaration")
- }
- if (this.eat(tt._default)) { // export default ...
- this.checkExport(exports, "default", this.lastTokStart)
- var isAsync
- if (this.type === tt._function || (isAsync = this.isAsyncFunction())) {
- var fNode = this.startNode()
- this.next()
- if (isAsync) this.next()
- node.declaration = this.parseFunction(fNode, "nullableID", false, isAsync)
- } else if (this.type === tt._class) {
- var cNode = this.startNode()
- node.declaration = this.parseClass(cNode, "nullableID")
- } else {
- node.declaration = this.parseMaybeAssign()
- this.semicolon()
- }
- return this.finishNode(node, "ExportDefaultDeclaration")
- }
- // export var|const|let|function|class ...
- if (this.shouldParseExportStatement()) {
- node.declaration = this.parseStatement(true)
- if (node.declaration.type === "VariableDeclaration")
- this.checkVariableExport(exports, node.declaration.declarations)
- else
- this.checkExport(exports, node.declaration.id.name, node.declaration.id.start)
- node.specifiers = []
- node.source = null
- } else { // export { x, y as z } [from '...']
- node.declaration = null
- node.specifiers = this.parseExportSpecifiers(exports)
- if (this.eatContextual("from")) {
- node.source = this.type === tt.string ? this.parseExprAtom() : this.unexpected()
- } else {
- // check for keywords used as local names
- for (var i = 0; i < node.specifiers.length; i++) {
- if (this$1.keywords.test(node.specifiers[i].local.name) || this$1.reservedWords.test(node.specifiers[i].local.name)) {
- this$1.unexpected(node.specifiers[i].local.start)
- }
- }
-
- node.source = null
- }
- this.semicolon()
- }
- return this.finishNode(node, "ExportNamedDeclaration")
-}
-
-pp$1.checkExport = function(exports, name, pos) {
- if (!exports) return
- if (has(exports, name))
- this.raiseRecoverable(pos, "Duplicate export '" + name + "'")
- exports[name] = true
-}
-
-pp$1.checkPatternExport = function(exports, pat) {
- var this$1 = this;
-
- var type = pat.type
- if (type == "Identifier")
- this.checkExport(exports, pat.name, pat.start)
- else if (type == "ObjectPattern")
- for (var i = 0; i < pat.properties.length; ++i)
- this$1.checkPatternExport(exports, pat.properties[i].value)
- else if (type == "ArrayPattern")
- for (var i$1 = 0; i$1 < pat.elements.length; ++i$1) {
- var elt = pat.elements[i$1]
- if (elt) this$1.checkPatternExport(exports, elt)
- }
- else if (type == "AssignmentPattern")
- this.checkPatternExport(exports, pat.left)
- else if (type == "ParenthesizedExpression")
- this.checkPatternExport(exports, pat.expression)
-}
-
-pp$1.checkVariableExport = function(exports, decls) {
- var this$1 = this;
-
- if (!exports) return
- for (var i = 0; i < decls.length; i++)
- this$1.checkPatternExport(exports, decls[i].id)
-}
-
-pp$1.shouldParseExportStatement = function() {
- return this.type.keyword === "var" ||
- this.type.keyword === "const" ||
- this.type.keyword === "class" ||
- this.type.keyword === "function" ||
- this.isLet() ||
- this.isAsyncFunction()
-}
-
-// Parses a comma-separated list of module exports.
-
-pp$1.parseExportSpecifiers = function(exports) {
- var this$1 = this;
-
- var nodes = [], first = true
- // export { x, y as z } [from '...']
- this.expect(tt.braceL)
- while (!this.eat(tt.braceR)) {
- if (!first) {
- this$1.expect(tt.comma)
- if (this$1.afterTrailingComma(tt.braceR)) break
- } else first = false
-
- var node = this$1.startNode()
- node.local = this$1.parseIdent(true)
- node.exported = this$1.eatContextual("as") ? this$1.parseIdent(true) : node.local
- this$1.checkExport(exports, node.exported.name, node.exported.start)
- nodes.push(this$1.finishNode(node, "ExportSpecifier"))
- }
- return nodes
-}
-
-// Parses import declaration.
-
-pp$1.parseImport = function(node) {
- this.next()
- // import '...'
- if (this.type === tt.string) {
- node.specifiers = empty
- node.source = this.parseExprAtom()
- } else {
- node.specifiers = this.parseImportSpecifiers()
- this.expectContextual("from")
- node.source = this.type === tt.string ? this.parseExprAtom() : this.unexpected()
- }
- this.semicolon()
- return this.finishNode(node, "ImportDeclaration")
-}
-
-// Parses a comma-separated list of module imports.
-
-pp$1.parseImportSpecifiers = function() {
- var this$1 = this;
-
- var nodes = [], first = true
- if (this.type === tt.name) {
- // import defaultObj, { x, y as z } from '...'
- var node = this.startNode()
- node.local = this.parseIdent()
- this.checkLVal(node.local, "let")
- nodes.push(this.finishNode(node, "ImportDefaultSpecifier"))
- if (!this.eat(tt.comma)) return nodes
- }
- if (this.type === tt.star) {
- var node$1 = this.startNode()
- this.next()
- this.expectContextual("as")
- node$1.local = this.parseIdent()
- this.checkLVal(node$1.local, "let")
- nodes.push(this.finishNode(node$1, "ImportNamespaceSpecifier"))
- return nodes
- }
- this.expect(tt.braceL)
- while (!this.eat(tt.braceR)) {
- if (!first) {
- this$1.expect(tt.comma)
- if (this$1.afterTrailingComma(tt.braceR)) break
- } else first = false
-
- var node$2 = this$1.startNode()
- node$2.imported = this$1.parseIdent(true)
- if (this$1.eatContextual("as")) {
- node$2.local = this$1.parseIdent()
- } else {
- node$2.local = node$2.imported
- if (this$1.isKeyword(node$2.local.name)) this$1.unexpected(node$2.local.start)
- if (this$1.reservedWordsStrict.test(node$2.local.name)) this$1.raiseRecoverable(node$2.local.start, "The keyword '" + node$2.local.name + "' is reserved")
- }
- this$1.checkLVal(node$2.local, "let")
- nodes.push(this$1.finishNode(node$2, "ImportSpecifier"))
- }
- return nodes
-}
-
-var pp$2 = Parser.prototype
-
-// Convert existing expression atom to assignable pattern
-// if possible.
-
-pp$2.toAssignable = function(node, isBinding) {
- var this$1 = this;
-
- if (this.options.ecmaVersion >= 6 && node) {
- switch (node.type) {
- case "Identifier":
- if (this.inAsync && node.name === "await")
- this.raise(node.start, "Can not use 'await' as identifier inside an async function")
- break
-
- case "ObjectPattern":
- case "ArrayPattern":
- break
-
- case "ObjectExpression":
- node.type = "ObjectPattern"
- for (var i = 0; i < node.properties.length; i++) {
- var prop = node.properties[i]
- if (prop.kind !== "init") this$1.raise(prop.key.start, "Object pattern can't contain getter or setter")
- this$1.toAssignable(prop.value, isBinding)
- }
- break
-
- case "ArrayExpression":
- node.type = "ArrayPattern"
- this.toAssignableList(node.elements, isBinding)
- break
-
- case "AssignmentExpression":
- if (node.operator === "=") {
- node.type = "AssignmentPattern"
- delete node.operator
- this.toAssignable(node.left, isBinding)
- // falls through to AssignmentPattern
- } else {
- this.raise(node.left.end, "Only '=' operator can be used for specifying default value.")
- break
- }
-
- case "AssignmentPattern":
- break
-
- case "ParenthesizedExpression":
- node.expression = this.toAssignable(node.expression, isBinding)
- break
-
- case "MemberExpression":
- if (!isBinding) break
-
- default:
- this.raise(node.start, "Assigning to rvalue")
- }
- }
- return node
-}
-
-// Convert list of expression atoms to binding list.
-
-pp$2.toAssignableList = function(exprList, isBinding) {
- var this$1 = this;
-
- var end = exprList.length
- if (end) {
- var last = exprList[end - 1]
- if (last && last.type == "RestElement") {
- --end
- } else if (last && last.type == "SpreadElement") {
- last.type = "RestElement"
- var arg = last.argument
- this.toAssignable(arg, isBinding)
- if (arg.type !== "Identifier" && arg.type !== "MemberExpression" && arg.type !== "ArrayPattern")
- this.unexpected(arg.start)
- --end
- }
-
- if (isBinding && last && last.type === "RestElement" && last.argument.type !== "Identifier")
- this.unexpected(last.argument.start)
- }
- for (var i = 0; i < end; i++) {
- var elt = exprList[i]
- if (elt) this$1.toAssignable(elt, isBinding)
- }
- return exprList
-}
-
-// Parses spread element.
-
-pp$2.parseSpread = function(refDestructuringErrors) {
- var node = this.startNode()
- this.next()
- node.argument = this.parseMaybeAssign(false, refDestructuringErrors)
- return this.finishNode(node, "SpreadElement")
-}
-
-pp$2.parseRest = function(allowNonIdent) {
- var node = this.startNode()
- this.next()
-
- // RestElement inside of a function parameter must be an identifier
- if (allowNonIdent) node.argument = this.type === tt.name ? this.parseIdent() : this.unexpected()
- else node.argument = this.type === tt.name || this.type === tt.bracketL ? this.parseBindingAtom() : this.unexpected()
-
- return this.finishNode(node, "RestElement")
-}
-
-// Parses lvalue (assignable) atom.
-
-pp$2.parseBindingAtom = function() {
- if (this.options.ecmaVersion < 6) return this.parseIdent()
- switch (this.type) {
- case tt.name:
- return this.parseIdent()
-
- case tt.bracketL:
- var node = this.startNode()
- this.next()
- node.elements = this.parseBindingList(tt.bracketR, true, true)
- return this.finishNode(node, "ArrayPattern")
-
- case tt.braceL:
- return this.parseObj(true)
-
- default:
- this.unexpected()
- }
-}
-
-pp$2.parseBindingList = function(close, allowEmpty, allowTrailingComma, allowNonIdent) {
- var this$1 = this;
-
- var elts = [], first = true
- while (!this.eat(close)) {
- if (first) first = false
- else this$1.expect(tt.comma)
- if (allowEmpty && this$1.type === tt.comma) {
- elts.push(null)
- } else if (allowTrailingComma && this$1.afterTrailingComma(close)) {
- break
- } else if (this$1.type === tt.ellipsis) {
- var rest = this$1.parseRest(allowNonIdent)
- this$1.parseBindingListItem(rest)
- elts.push(rest)
- if (this$1.type === tt.comma) this$1.raise(this$1.start, "Comma is not permitted after the rest element")
- this$1.expect(close)
- break
- } else {
- var elem = this$1.parseMaybeDefault(this$1.start, this$1.startLoc)
- this$1.parseBindingListItem(elem)
- elts.push(elem)
- }
- }
- return elts
-}
-
-pp$2.parseBindingListItem = function(param) {
- return param
-}
-
-// Parses assignment pattern around given atom if possible.
-
-pp$2.parseMaybeDefault = function(startPos, startLoc, left) {
- left = left || this.parseBindingAtom()
- if (this.options.ecmaVersion < 6 || !this.eat(tt.eq)) return left
- var node = this.startNodeAt(startPos, startLoc)
- node.left = left
- node.right = this.parseMaybeAssign()
- return this.finishNode(node, "AssignmentPattern")
-}
-
-// Verify that a node is an lval — something that can be assigned
-// to.
-// bindingType can be either:
-// 'var' indicating that the lval creates a 'var' binding
-// 'let' indicating that the lval creates a lexical ('let' or 'const') binding
-// 'none' indicating that the binding should be checked for illegal identifiers, but not for duplicate references
-
-pp$2.checkLVal = function(expr, bindingType, checkClashes) {
- var this$1 = this;
-
- switch (expr.type) {
- case "Identifier":
- if (this.strict && this.reservedWordsStrictBind.test(expr.name))
- this.raiseRecoverable(expr.start, (bindingType ? "Binding " : "Assigning to ") + expr.name + " in strict mode")
- if (checkClashes) {
- if (has(checkClashes, expr.name))
- this.raiseRecoverable(expr.start, "Argument name clash")
- checkClashes[expr.name] = true
- }
- if (bindingType && bindingType !== "none") {
- if (
- bindingType === "var" && !this.canDeclareVarName(expr.name) ||
- bindingType !== "var" && !this.canDeclareLexicalName(expr.name)
- ) {
- this.raiseRecoverable(expr.start, ("Identifier '" + (expr.name) + "' has already been declared"))
- }
- if (bindingType === "var") {
- this.declareVarName(expr.name)
- } else {
- this.declareLexicalName(expr.name)
- }
- }
- break
-
- case "MemberExpression":
- if (bindingType) this.raiseRecoverable(expr.start, (bindingType ? "Binding" : "Assigning to") + " member expression")
- break
-
- case "ObjectPattern":
- for (var i = 0; i < expr.properties.length; i++)
- this$1.checkLVal(expr.properties[i].value, bindingType, checkClashes)
- break
-
- case "ArrayPattern":
- for (var i$1 = 0; i$1 < expr.elements.length; i$1++) {
- var elem = expr.elements[i$1]
- if (elem) this$1.checkLVal(elem, bindingType, checkClashes)
- }
- break
-
- case "AssignmentPattern":
- this.checkLVal(expr.left, bindingType, checkClashes)
- break
-
- case "RestElement":
- this.checkLVal(expr.argument, bindingType, checkClashes)
- break
-
- case "ParenthesizedExpression":
- this.checkLVal(expr.expression, bindingType, checkClashes)
- break
-
- default:
- this.raise(expr.start, (bindingType ? "Binding" : "Assigning to") + " rvalue")
- }
-}
-
-// A recursive descent parser operates by defining functions for all
-// syntactic elements, and recursively calling those, each function
-// advancing the input stream and returning an AST node. Precedence
-// of constructs (for example, the fact that `!x[1]` means `!(x[1])`
-// instead of `(!x)[1]` is handled by the fact that the parser
-// function that parses unary prefix operators is called first, and
-// in turn calls the function that parses `[]` subscripts — that
-// way, it'll receive the node for `x[1]` already parsed, and wraps
-// *that* in the unary operator node.
-//
-// Acorn uses an [operator precedence parser][opp] to handle binary
-// operator precedence, because it is much more compact than using
-// the technique outlined above, which uses different, nesting
-// functions to specify precedence, for all of the ten binary
-// precedence levels that JavaScript defines.
-//
-// [opp]: http://en.wikipedia.org/wiki/Operator-precedence_parser
-
-var pp$3 = Parser.prototype
-
-// Check if property name clashes with already added.
-// Object/class getters and setters are not allowed to clash —
-// either with each other or with an init property — and in
-// strict mode, init properties are also not allowed to be repeated.
-
-pp$3.checkPropClash = function(prop, propHash) {
- if (this.options.ecmaVersion >= 6 && (prop.computed || prop.method || prop.shorthand))
- return
- var key = prop.key;
- var name
- switch (key.type) {
- case "Identifier": name = key.name; break
- case "Literal": name = String(key.value); break
- default: return
- }
- var kind = prop.kind;
- if (this.options.ecmaVersion >= 6) {
- if (name === "__proto__" && kind === "init") {
- if (propHash.proto) this.raiseRecoverable(key.start, "Redefinition of __proto__ property")
- propHash.proto = true
- }
- return
- }
- name = "$" + name
- var other = propHash[name]
- if (other) {
- var redefinition
- if (kind === "init") {
- redefinition = this.strict && other.init || other.get || other.set
- } else {
- redefinition = other.init || other[kind]
- }
- if (redefinition)
- this.raiseRecoverable(key.start, "Redefinition of property")
- } else {
- other = propHash[name] = {
- init: false,
- get: false,
- set: false
- }
- }
- other[kind] = true
-}
-
-// ### Expression parsing
-
-// These nest, from the most general expression type at the top to
-// 'atomic', nondivisible expression types at the bottom. Most of
-// the functions will simply let the function(s) below them parse,
-// and, *if* the syntactic construct they handle is present, wrap
-// the AST node that the inner parser gave them in another node.
-
-// Parse a full expression. The optional arguments are used to
-// forbid the `in` operator (in for loops initalization expressions)
-// and provide reference for storing '=' operator inside shorthand
-// property assignment in contexts where both object expression
-// and object pattern might appear (so it's possible to raise
-// delayed syntax error at correct position).
-
-pp$3.parseExpression = function(noIn, refDestructuringErrors) {
- var this$1 = this;
-
- var startPos = this.start, startLoc = this.startLoc
- var expr = this.parseMaybeAssign(noIn, refDestructuringErrors)
- if (this.type === tt.comma) {
- var node = this.startNodeAt(startPos, startLoc)
- node.expressions = [expr]
- while (this.eat(tt.comma)) node.expressions.push(this$1.parseMaybeAssign(noIn, refDestructuringErrors))
- return this.finishNode(node, "SequenceExpression")
- }
- return expr
-}
-
-// Parse an assignment expression. This includes applications of
-// operators like `+=`.
-
-pp$3.parseMaybeAssign = function(noIn, refDestructuringErrors, afterLeftParse) {
- if (this.inGenerator && this.isContextual("yield")) return this.parseYield()
-
- var ownDestructuringErrors = false, oldParenAssign = -1, oldTrailingComma = -1
- if (refDestructuringErrors) {
- oldParenAssign = refDestructuringErrors.parenthesizedAssign
- oldTrailingComma = refDestructuringErrors.trailingComma
- refDestructuringErrors.parenthesizedAssign = refDestructuringErrors.trailingComma = -1
- } else {
- refDestructuringErrors = new DestructuringErrors
- ownDestructuringErrors = true
- }
-
- var startPos = this.start, startLoc = this.startLoc
- if (this.type == tt.parenL || this.type == tt.name)
- this.potentialArrowAt = this.start
- var left = this.parseMaybeConditional(noIn, refDestructuringErrors)
- if (afterLeftParse) left = afterLeftParse.call(this, left, startPos, startLoc)
- if (this.type.isAssign) {
- this.checkPatternErrors(refDestructuringErrors, true)
- if (!ownDestructuringErrors) DestructuringErrors.call(refDestructuringErrors)
- var node = this.startNodeAt(startPos, startLoc)
- node.operator = this.value
- node.left = this.type === tt.eq ? this.toAssignable(left) : left
- refDestructuringErrors.shorthandAssign = -1 // reset because shorthand default was used correctly
- this.checkLVal(left)
- this.next()
- node.right = this.parseMaybeAssign(noIn)
- return this.finishNode(node, "AssignmentExpression")
- } else {
- if (ownDestructuringErrors) this.checkExpressionErrors(refDestructuringErrors, true)
- }
- if (oldParenAssign > -1) refDestructuringErrors.parenthesizedAssign = oldParenAssign
- if (oldTrailingComma > -1) refDestructuringErrors.trailingComma = oldTrailingComma
- return left
-}
-
-// Parse a ternary conditional (`?:`) operator.
-
-pp$3.parseMaybeConditional = function(noIn, refDestructuringErrors) {
- var startPos = this.start, startLoc = this.startLoc
- var expr = this.parseExprOps(noIn, refDestructuringErrors)
- if (this.checkExpressionErrors(refDestructuringErrors)) return expr
- if (this.eat(tt.question)) {
- var node = this.startNodeAt(startPos, startLoc)
- node.test = expr
- node.consequent = this.parseMaybeAssign()
- this.expect(tt.colon)
- node.alternate = this.parseMaybeAssign(noIn)
- return this.finishNode(node, "ConditionalExpression")
- }
- return expr
-}
-
-// Start the precedence parser.
-
-pp$3.parseExprOps = function(noIn, refDestructuringErrors) {
- var startPos = this.start, startLoc = this.startLoc
- var expr = this.parseMaybeUnary(refDestructuringErrors, false)
- if (this.checkExpressionErrors(refDestructuringErrors)) return expr
- return expr.start == startPos && expr.type === "ArrowFunctionExpression" ? expr : this.parseExprOp(expr, startPos, startLoc, -1, noIn)
-}
-
-// Parse binary operators with the operator precedence parsing
-// algorithm. `left` is the left-hand side of the operator.
-// `minPrec` provides context that allows the function to stop and
-// defer further parser to one of its callers when it encounters an
-// operator that has a lower precedence than the set it is parsing.
-
-pp$3.parseExprOp = function(left, leftStartPos, leftStartLoc, minPrec, noIn) {
- var prec = this.type.binop
- if (prec != null && (!noIn || this.type !== tt._in)) {
- if (prec > minPrec) {
- var logical = this.type === tt.logicalOR || this.type === tt.logicalAND
- var op = this.value
- this.next()
- var startPos = this.start, startLoc = this.startLoc
- var right = this.parseExprOp(this.parseMaybeUnary(null, false), startPos, startLoc, prec, noIn)
- var node = this.buildBinary(leftStartPos, leftStartLoc, left, right, op, logical)
- return this.parseExprOp(node, leftStartPos, leftStartLoc, minPrec, noIn)
- }
- }
- return left
-}
-
-pp$3.buildBinary = function(startPos, startLoc, left, right, op, logical) {
- var node = this.startNodeAt(startPos, startLoc)
- node.left = left
- node.operator = op
- node.right = right
- return this.finishNode(node, logical ? "LogicalExpression" : "BinaryExpression")
-}
-
-// Parse unary operators, both prefix and postfix.
-
-pp$3.parseMaybeUnary = function(refDestructuringErrors, sawUnary) {
- var this$1 = this;
-
- var startPos = this.start, startLoc = this.startLoc, expr
- if (this.inAsync && this.isContextual("await")) {
- expr = this.parseAwait(refDestructuringErrors)
- sawUnary = true
- } else if (this.type.prefix) {
- var node = this.startNode(), update = this.type === tt.incDec
- node.operator = this.value
- node.prefix = true
- this.next()
- node.argument = this.parseMaybeUnary(null, true)
- this.checkExpressionErrors(refDestructuringErrors, true)
- if (update) this.checkLVal(node.argument)
- else if (this.strict && node.operator === "delete" &&
- node.argument.type === "Identifier")
- this.raiseRecoverable(node.start, "Deleting local variable in strict mode")
- else sawUnary = true
- expr = this.finishNode(node, update ? "UpdateExpression" : "UnaryExpression")
- } else {
- expr = this.parseExprSubscripts(refDestructuringErrors)
- if (this.checkExpressionErrors(refDestructuringErrors)) return expr
- while (this.type.postfix && !this.canInsertSemicolon()) {
- var node$1 = this$1.startNodeAt(startPos, startLoc)
- node$1.operator = this$1.value
- node$1.prefix = false
- node$1.argument = expr
- this$1.checkLVal(expr)
- this$1.next()
- expr = this$1.finishNode(node$1, "UpdateExpression")
- }
- }
-
- if (!sawUnary && this.eat(tt.starstar))
- return this.buildBinary(startPos, startLoc, expr, this.parseMaybeUnary(null, false), "**", false)
- else
- return expr
-}
-
-// Parse call, dot, and `[]`-subscript expressions.
-
-pp$3.parseExprSubscripts = function(refDestructuringErrors) {
- var startPos = this.start, startLoc = this.startLoc
- var expr = this.parseExprAtom(refDestructuringErrors)
- var skipArrowSubscripts = expr.type === "ArrowFunctionExpression" && this.input.slice(this.lastTokStart, this.lastTokEnd) !== ")"
- if (this.checkExpressionErrors(refDestructuringErrors) || skipArrowSubscripts) return expr
- var result = this.parseSubscripts(expr, startPos, startLoc)
- if (refDestructuringErrors && result.type === "MemberExpression") {
- if (refDestructuringErrors.parenthesizedAssign >= result.start) refDestructuringErrors.parenthesizedAssign = -1
- if (refDestructuringErrors.parenthesizedBind >= result.start) refDestructuringErrors.parenthesizedBind = -1
- }
- return result
-}
-
-pp$3.parseSubscripts = function(base, startPos, startLoc, noCalls) {
- var this$1 = this;
-
- var maybeAsyncArrow = this.options.ecmaVersion >= 8 && base.type === "Identifier" && base.name === "async" &&
- this.lastTokEnd == base.end && !this.canInsertSemicolon()
- for (var computed;;) {
- if ((computed = this$1.eat(tt.bracketL)) || this$1.eat(tt.dot)) {
- var node = this$1.startNodeAt(startPos, startLoc)
- node.object = base
- node.property = computed ? this$1.parseExpression() : this$1.parseIdent(true)
- node.computed = !!computed
- if (computed) this$1.expect(tt.bracketR)
- base = this$1.finishNode(node, "MemberExpression")
- } else if (!noCalls && this$1.eat(tt.parenL)) {
- var refDestructuringErrors = new DestructuringErrors, oldYieldPos = this$1.yieldPos, oldAwaitPos = this$1.awaitPos
- this$1.yieldPos = 0
- this$1.awaitPos = 0
- var exprList = this$1.parseExprList(tt.parenR, this$1.options.ecmaVersion >= 8, false, refDestructuringErrors)
- if (maybeAsyncArrow && !this$1.canInsertSemicolon() && this$1.eat(tt.arrow)) {
- this$1.checkPatternErrors(refDestructuringErrors, false)
- this$1.checkYieldAwaitInDefaultParams()
- this$1.yieldPos = oldYieldPos
- this$1.awaitPos = oldAwaitPos
- return this$1.parseArrowExpression(this$1.startNodeAt(startPos, startLoc), exprList, true)
- }
- this$1.checkExpressionErrors(refDestructuringErrors, true)
- this$1.yieldPos = oldYieldPos || this$1.yieldPos
- this$1.awaitPos = oldAwaitPos || this$1.awaitPos
- var node$1 = this$1.startNodeAt(startPos, startLoc)
- node$1.callee = base
- node$1.arguments = exprList
- base = this$1.finishNode(node$1, "CallExpression")
- } else if (this$1.type === tt.backQuote) {
- var node$2 = this$1.startNodeAt(startPos, startLoc)
- node$2.tag = base
- node$2.quasi = this$1.parseTemplate()
- base = this$1.finishNode(node$2, "TaggedTemplateExpression")
- } else {
- return base
- }
- }
-}
-
-// Parse an atomic expression — either a single token that is an
-// expression, an expression started by a keyword like `function` or
-// `new`, or an expression wrapped in punctuation like `()`, `[]`,
-// or `{}`.
-
-pp$3.parseExprAtom = function(refDestructuringErrors) {
- var node, canBeArrow = this.potentialArrowAt == this.start
- switch (this.type) {
- case tt._super:
- if (!this.inFunction)
- this.raise(this.start, "'super' outside of function or class")
-
- case tt._this:
- var type = this.type === tt._this ? "ThisExpression" : "Super"
- node = this.startNode()
- this.next()
- return this.finishNode(node, type)
-
- case tt.name:
- var startPos = this.start, startLoc = this.startLoc
- var id = this.parseIdent(this.type !== tt.name)
- if (this.options.ecmaVersion >= 8 && id.name === "async" && !this.canInsertSemicolon() && this.eat(tt._function))
- return this.parseFunction(this.startNodeAt(startPos, startLoc), false, false, true)
- if (canBeArrow && !this.canInsertSemicolon()) {
- if (this.eat(tt.arrow))
- return this.parseArrowExpression(this.startNodeAt(startPos, startLoc), [id], false)
- if (this.options.ecmaVersion >= 8 && id.name === "async" && this.type === tt.name) {
- id = this.parseIdent()
- if (this.canInsertSemicolon() || !this.eat(tt.arrow))
- this.unexpected()
- return this.parseArrowExpression(this.startNodeAt(startPos, startLoc), [id], true)
- }
- }
- return id
-
- case tt.regexp:
- var value = this.value
- node = this.parseLiteral(value.value)
- node.regex = {pattern: value.pattern, flags: value.flags}
- return node
-
- case tt.num: case tt.string:
- return this.parseLiteral(this.value)
-
- case tt._null: case tt._true: case tt._false:
- node = this.startNode()
- node.value = this.type === tt._null ? null : this.type === tt._true
- node.raw = this.type.keyword
- this.next()
- return this.finishNode(node, "Literal")
-
- case tt.parenL:
- var start = this.start, expr = this.parseParenAndDistinguishExpression(canBeArrow)
- if (refDestructuringErrors) {
- if (refDestructuringErrors.parenthesizedAssign < 0 && !this.isSimpleAssignTarget(expr))
- refDestructuringErrors.parenthesizedAssign = start
- if (refDestructuringErrors.parenthesizedBind < 0)
- refDestructuringErrors.parenthesizedBind = start
- }
- return expr
-
- case tt.bracketL:
- node = this.startNode()
- this.next()
- node.elements = this.parseExprList(tt.bracketR, true, true, refDestructuringErrors)
- return this.finishNode(node, "ArrayExpression")
-
- case tt.braceL:
- return this.parseObj(false, refDestructuringErrors)
-
- case tt._function:
- node = this.startNode()
- this.next()
- return this.parseFunction(node, false)
-
- case tt._class:
- return this.parseClass(this.startNode(), false)
-
- case tt._new:
- return this.parseNew()
-
- case tt.backQuote:
- return this.parseTemplate()
-
- default:
- this.unexpected()
- }
-}
-
-pp$3.parseLiteral = function(value) {
- var node = this.startNode()
- node.value = value
- node.raw = this.input.slice(this.start, this.end)
- this.next()
- return this.finishNode(node, "Literal")
-}
-
-pp$3.parseParenExpression = function() {
- this.expect(tt.parenL)
- var val = this.parseExpression()
- this.expect(tt.parenR)
- return val
-}
-
-pp$3.parseParenAndDistinguishExpression = function(canBeArrow) {
- var this$1 = this;
-
- var startPos = this.start, startLoc = this.startLoc, val, allowTrailingComma = this.options.ecmaVersion >= 8
- if (this.options.ecmaVersion >= 6) {
- this.next()
-
- var innerStartPos = this.start, innerStartLoc = this.startLoc
- var exprList = [], first = true, lastIsComma = false
- var refDestructuringErrors = new DestructuringErrors, oldYieldPos = this.yieldPos, oldAwaitPos = this.awaitPos, spreadStart, innerParenStart
- this.yieldPos = 0
- this.awaitPos = 0
- while (this.type !== tt.parenR) {
- first ? first = false : this$1.expect(tt.comma)
- if (allowTrailingComma && this$1.afterTrailingComma(tt.parenR, true)) {
- lastIsComma = true
- break
- } else if (this$1.type === tt.ellipsis) {
- spreadStart = this$1.start
- exprList.push(this$1.parseParenItem(this$1.parseRest()))
- if (this$1.type === tt.comma) this$1.raise(this$1.start, "Comma is not permitted after the rest element")
- break
- } else {
- if (this$1.type === tt.parenL && !innerParenStart) {
- innerParenStart = this$1.start
- }
- exprList.push(this$1.parseMaybeAssign(false, refDestructuringErrors, this$1.parseParenItem))
- }
- }
- var innerEndPos = this.start, innerEndLoc = this.startLoc
- this.expect(tt.parenR)
-
- if (canBeArrow && !this.canInsertSemicolon() && this.eat(tt.arrow)) {
- this.checkPatternErrors(refDestructuringErrors, false)
- this.checkYieldAwaitInDefaultParams()
- if (innerParenStart) this.unexpected(innerParenStart)
- this.yieldPos = oldYieldPos
- this.awaitPos = oldAwaitPos
- return this.parseParenArrowList(startPos, startLoc, exprList)
- }
-
- if (!exprList.length || lastIsComma) this.unexpected(this.lastTokStart)
- if (spreadStart) this.unexpected(spreadStart)
- this.checkExpressionErrors(refDestructuringErrors, true)
- this.yieldPos = oldYieldPos || this.yieldPos
- this.awaitPos = oldAwaitPos || this.awaitPos
-
- if (exprList.length > 1) {
- val = this.startNodeAt(innerStartPos, innerStartLoc)
- val.expressions = exprList
- this.finishNodeAt(val, "SequenceExpression", innerEndPos, innerEndLoc)
- } else {
- val = exprList[0]
- }
- } else {
- val = this.parseParenExpression()
- }
-
- if (this.options.preserveParens) {
- var par = this.startNodeAt(startPos, startLoc)
- par.expression = val
- return this.finishNode(par, "ParenthesizedExpression")
- } else {
- return val
- }
-}
-
-pp$3.parseParenItem = function(item) {
- return item
-}
-
-pp$3.parseParenArrowList = function(startPos, startLoc, exprList) {
- return this.parseArrowExpression(this.startNodeAt(startPos, startLoc), exprList)
-}
-
-// New's precedence is slightly tricky. It must allow its argument to
-// be a `[]` or dot subscript expression, but not a call — at least,
-// not without wrapping it in parentheses. Thus, it uses the noCalls
-// argument to parseSubscripts to prevent it from consuming the
-// argument list.
-
-var empty$1 = []
-
-pp$3.parseNew = function() {
- var node = this.startNode()
- var meta = this.parseIdent(true)
- if (this.options.ecmaVersion >= 6 && this.eat(tt.dot)) {
- node.meta = meta
- node.property = this.parseIdent(true)
- if (node.property.name !== "target")
- this.raiseRecoverable(node.property.start, "The only valid meta property for new is new.target")
- if (!this.inFunction)
- this.raiseRecoverable(node.start, "new.target can only be used in functions")
- return this.finishNode(node, "MetaProperty")
- }
- var startPos = this.start, startLoc = this.startLoc
- node.callee = this.parseSubscripts(this.parseExprAtom(), startPos, startLoc, true)
- if (this.eat(tt.parenL)) node.arguments = this.parseExprList(tt.parenR, this.options.ecmaVersion >= 8, false)
- else node.arguments = empty$1
- return this.finishNode(node, "NewExpression")
-}
-
-// Parse template expression.
-
-pp$3.parseTemplateElement = function() {
- var elem = this.startNode()
- elem.value = {
- raw: this.input.slice(this.start, this.end).replace(/\r\n?/g, "\n"),
- cooked: this.value
- }
- this.next()
- elem.tail = this.type === tt.backQuote
- return this.finishNode(elem, "TemplateElement")
-}
-
-pp$3.parseTemplate = function() {
- var this$1 = this;
-
- var node = this.startNode()
- this.next()
- node.expressions = []
- var curElt = this.parseTemplateElement()
- node.quasis = [curElt]
- while (!curElt.tail) {
- this$1.expect(tt.dollarBraceL)
- node.expressions.push(this$1.parseExpression())
- this$1.expect(tt.braceR)
- node.quasis.push(curElt = this$1.parseTemplateElement())
- }
- this.next()
- return this.finishNode(node, "TemplateLiteral")
-}
-
-// Parse an object literal or binding pattern.
-
-pp$3.parseObj = function(isPattern, refDestructuringErrors) {
- var this$1 = this;
-
- var node = this.startNode(), first = true, propHash = {}
- node.properties = []
- this.next()
- while (!this.eat(tt.braceR)) {
- if (!first) {
- this$1.expect(tt.comma)
- if (this$1.afterTrailingComma(tt.braceR)) break
- } else first = false
-
- var prop = this$1.startNode(), isGenerator, isAsync, startPos, startLoc
- if (this$1.options.ecmaVersion >= 6) {
- prop.method = false
- prop.shorthand = false
- if (isPattern || refDestructuringErrors) {
- startPos = this$1.start
- startLoc = this$1.startLoc
- }
- if (!isPattern)
- isGenerator = this$1.eat(tt.star)
- }
- this$1.parsePropertyName(prop)
- if (!isPattern && this$1.options.ecmaVersion >= 8 && !isGenerator && !prop.computed &&
- prop.key.type === "Identifier" && prop.key.name === "async" && this$1.type !== tt.parenL &&
- this$1.type !== tt.colon && !this$1.canInsertSemicolon()) {
- isAsync = true
- this$1.parsePropertyName(prop, refDestructuringErrors)
- } else {
- isAsync = false
- }
- this$1.parsePropertyValue(prop, isPattern, isGenerator, isAsync, startPos, startLoc, refDestructuringErrors)
- this$1.checkPropClash(prop, propHash)
- node.properties.push(this$1.finishNode(prop, "Property"))
- }
- return this.finishNode(node, isPattern ? "ObjectPattern" : "ObjectExpression")
-}
-
-pp$3.parsePropertyValue = function(prop, isPattern, isGenerator, isAsync, startPos, startLoc, refDestructuringErrors) {
- if ((isGenerator || isAsync) && this.type === tt.colon)
- this.unexpected()
-
- if (this.eat(tt.colon)) {
- prop.value = isPattern ? this.parseMaybeDefault(this.start, this.startLoc) : this.parseMaybeAssign(false, refDestructuringErrors)
- prop.kind = "init"
- } else if (this.options.ecmaVersion >= 6 && this.type === tt.parenL) {
- if (isPattern) this.unexpected()
- prop.kind = "init"
- prop.method = true
- prop.value = this.parseMethod(isGenerator, isAsync)
- } else if (this.options.ecmaVersion >= 5 && !prop.computed && prop.key.type === "Identifier" &&
- (prop.key.name === "get" || prop.key.name === "set") &&
- (this.type != tt.comma && this.type != tt.braceR)) {
- if (isGenerator || isAsync || isPattern) this.unexpected()
- prop.kind = prop.key.name
- this.parsePropertyName(prop)
- prop.value = this.parseMethod(false)
- var paramCount = prop.kind === "get" ? 0 : 1
- if (prop.value.params.length !== paramCount) {
- var start = prop.value.start
- if (prop.kind === "get")
- this.raiseRecoverable(start, "getter should have no params")
- else
- this.raiseRecoverable(start, "setter should have exactly one param")
- } else {
- if (prop.kind === "set" && prop.value.params[0].type === "RestElement")
- this.raiseRecoverable(prop.value.params[0].start, "Setter cannot use rest params")
- }
- } else if (this.options.ecmaVersion >= 6 && !prop.computed && prop.key.type === "Identifier") {
- if (this.keywords.test(prop.key.name) ||
- (this.strict ? this.reservedWordsStrict : this.reservedWords).test(prop.key.name) ||
- (this.inGenerator && prop.key.name == "yield") ||
- (this.inAsync && prop.key.name == "await"))
- this.raiseRecoverable(prop.key.start, "'" + prop.key.name + "' can not be used as shorthand property")
- prop.kind = "init"
- if (isPattern) {
- prop.value = this.parseMaybeDefault(startPos, startLoc, prop.key)
- } else if (this.type === tt.eq && refDestructuringErrors) {
- if (refDestructuringErrors.shorthandAssign < 0)
- refDestructuringErrors.shorthandAssign = this.start
- prop.value = this.parseMaybeDefault(startPos, startLoc, prop.key)
- } else {
- prop.value = prop.key
- }
- prop.shorthand = true
- } else this.unexpected()
-}
-
-pp$3.parsePropertyName = function(prop) {
- if (this.options.ecmaVersion >= 6) {
- if (this.eat(tt.bracketL)) {
- prop.computed = true
- prop.key = this.parseMaybeAssign()
- this.expect(tt.bracketR)
- return prop.key
- } else {
- prop.computed = false
- }
- }
- return prop.key = this.type === tt.num || this.type === tt.string ? this.parseExprAtom() : this.parseIdent(true)
-}
-
-// Initialize empty function node.
-
-pp$3.initFunction = function(node) {
- node.id = null
- if (this.options.ecmaVersion >= 6) {
- node.generator = false
- node.expression = false
- }
- if (this.options.ecmaVersion >= 8)
- node.async = false
-}
-
-// Parse object or class method.
-
-pp$3.parseMethod = function(isGenerator, isAsync) {
- var node = this.startNode(), oldInGen = this.inGenerator, oldInAsync = this.inAsync,
- oldYieldPos = this.yieldPos, oldAwaitPos = this.awaitPos, oldInFunc = this.inFunction
-
- this.initFunction(node)
- if (this.options.ecmaVersion >= 6)
- node.generator = isGenerator
- if (this.options.ecmaVersion >= 8)
- node.async = !!isAsync
-
- this.inGenerator = node.generator
- this.inAsync = node.async
- this.yieldPos = 0
- this.awaitPos = 0
- this.inFunction = true
- this.enterFunctionScope()
-
- this.expect(tt.parenL)
- node.params = this.parseBindingList(tt.parenR, false, this.options.ecmaVersion >= 8)
- this.checkYieldAwaitInDefaultParams()
- this.parseFunctionBody(node, false)
-
- this.inGenerator = oldInGen
- this.inAsync = oldInAsync
- this.yieldPos = oldYieldPos
- this.awaitPos = oldAwaitPos
- this.inFunction = oldInFunc
- return this.finishNode(node, "FunctionExpression")
-}
-
-// Parse arrow function expression with given parameters.
-
-pp$3.parseArrowExpression = function(node, params, isAsync) {
- var oldInGen = this.inGenerator, oldInAsync = this.inAsync,
- oldYieldPos = this.yieldPos, oldAwaitPos = this.awaitPos, oldInFunc = this.inFunction
-
- this.enterFunctionScope()
- this.initFunction(node)
- if (this.options.ecmaVersion >= 8)
- node.async = !!isAsync
-
- this.inGenerator = false
- this.inAsync = node.async
- this.yieldPos = 0
- this.awaitPos = 0
- this.inFunction = true
-
- node.params = this.toAssignableList(params, true)
- this.parseFunctionBody(node, true)
-
- this.inGenerator = oldInGen
- this.inAsync = oldInAsync
- this.yieldPos = oldYieldPos
- this.awaitPos = oldAwaitPos
- this.inFunction = oldInFunc
- return this.finishNode(node, "ArrowFunctionExpression")
-}
-
-// Parse function body and check parameters.
-
-pp$3.parseFunctionBody = function(node, isArrowFunction) {
- var isExpression = isArrowFunction && this.type !== tt.braceL
- var oldStrict = this.strict, useStrict = false
-
- if (isExpression) {
- node.body = this.parseMaybeAssign()
- node.expression = true
- this.checkParams(node, false)
- } else {
- var nonSimple = this.options.ecmaVersion >= 7 && !this.isSimpleParamList(node.params)
- if (!oldStrict || nonSimple) {
- useStrict = this.strictDirective(this.end)
- // If this is a strict mode function, verify that argument names
- // are not repeated, and it does not try to bind the words `eval`
- // or `arguments`.
- if (useStrict && nonSimple)
- this.raiseRecoverable(node.start, "Illegal 'use strict' directive in function with non-simple parameter list")
- }
- // Start a new scope with regard to labels and the `inFunction`
- // flag (restore them to their old value afterwards).
- var oldLabels = this.labels
- this.labels = []
- if (useStrict) this.strict = true
-
- // Add the params to varDeclaredNames to ensure that an error is thrown
- // if a let/const declaration in the function clashes with one of the params.
- this.checkParams(node, !oldStrict && !useStrict && !isArrowFunction && this.isSimpleParamList(node.params))
- node.body = this.parseBlock(false)
- node.expression = false
- this.labels = oldLabels
- }
- this.exitFunctionScope()
-
- if (this.strict && node.id) {
- // Ensure the function name isn't a forbidden identifier in strict mode, e.g. 'eval'
- this.checkLVal(node.id, "none")
- }
- this.strict = oldStrict
-}
-
-pp$3.isSimpleParamList = function(params) {
- for (var i = 0; i < params.length; i++)
- if (params[i].type !== "Identifier") return false
- return true
-}
-
-// Checks function params for various disallowed patterns such as using "eval"
-// or "arguments" and duplicate parameters.
-
-pp$3.checkParams = function(node, allowDuplicates) {
- var this$1 = this;
-
- var nameHash = {}
- for (var i = 0; i < node.params.length; i++) this$1.checkLVal(node.params[i], "var", allowDuplicates ? null : nameHash)
-}
-
-// Parses a comma-separated list of expressions, and returns them as
-// an array. `close` is the token type that ends the list, and
-// `allowEmpty` can be turned on to allow subsequent commas with
-// nothing in between them to be parsed as `null` (which is needed
-// for array literals).
-
-pp$3.parseExprList = function(close, allowTrailingComma, allowEmpty, refDestructuringErrors) {
- var this$1 = this;
-
- var elts = [], first = true
- while (!this.eat(close)) {
- if (!first) {
- this$1.expect(tt.comma)
- if (allowTrailingComma && this$1.afterTrailingComma(close)) break
- } else first = false
-
- var elt
- if (allowEmpty && this$1.type === tt.comma)
- elt = null
- else if (this$1.type === tt.ellipsis) {
- elt = this$1.parseSpread(refDestructuringErrors)
- if (refDestructuringErrors && this$1.type === tt.comma && refDestructuringErrors.trailingComma < 0)
- refDestructuringErrors.trailingComma = this$1.start
- } else {
- elt = this$1.parseMaybeAssign(false, refDestructuringErrors)
- }
- elts.push(elt)
- }
- return elts
-}
-
-// Parse the next token as an identifier. If `liberal` is true (used
-// when parsing properties), it will also convert keywords into
-// identifiers.
-
-pp$3.parseIdent = function(liberal) {
- var node = this.startNode()
- if (liberal && this.options.allowReserved == "never") liberal = false
- if (this.type === tt.name) {
- if (!liberal && (this.strict ? this.reservedWordsStrict : this.reservedWords).test(this.value) &&
- (this.options.ecmaVersion >= 6 ||
- this.input.slice(this.start, this.end).indexOf("\\") == -1))
- this.raiseRecoverable(this.start, "The keyword '" + this.value + "' is reserved")
- if (this.inGenerator && this.value === "yield")
- this.raiseRecoverable(this.start, "Can not use 'yield' as identifier inside a generator")
- if (this.inAsync && this.value === "await")
- this.raiseRecoverable(this.start, "Can not use 'await' as identifier inside an async function")
- node.name = this.value
- } else if (liberal && this.type.keyword) {
- node.name = this.type.keyword
- } else {
- this.unexpected()
- }
- this.next()
- return this.finishNode(node, "Identifier")
-}
-
-// Parses yield expression inside generator.
-
-pp$3.parseYield = function() {
- if (!this.yieldPos) this.yieldPos = this.start
-
- var node = this.startNode()
- this.next()
- if (this.type == tt.semi || this.canInsertSemicolon() || (this.type != tt.star && !this.type.startsExpr)) {
- node.delegate = false
- node.argument = null
- } else {
- node.delegate = this.eat(tt.star)
- node.argument = this.parseMaybeAssign()
- }
- return this.finishNode(node, "YieldExpression")
-}
-
-pp$3.parseAwait = function() {
- if (!this.awaitPos) this.awaitPos = this.start
-
- var node = this.startNode()
- this.next()
- node.argument = this.parseMaybeUnary(null, true)
- return this.finishNode(node, "AwaitExpression")
-}
-
-var pp$4 = Parser.prototype
-
-// This function is used to raise exceptions on parse errors. It
-// takes an offset integer (into the current `input`) to indicate
-// the location of the error, attaches the position to the end
-// of the error message, and then raises a `SyntaxError` with that
-// message.
-
-pp$4.raise = function(pos, message) {
- var loc = getLineInfo(this.input, pos)
- message += " (" + loc.line + ":" + loc.column + ")"
- var err = new SyntaxError(message)
- err.pos = pos; err.loc = loc; err.raisedAt = this.pos
- throw err
-}
-
-pp$4.raiseRecoverable = pp$4.raise
-
-pp$4.curPosition = function() {
- if (this.options.locations) {
- return new Position(this.curLine, this.pos - this.lineStart)
- }
-}
-
-var pp$5 = Parser.prototype
-
-// Object.assign polyfill
-var assign = Object.assign || function(target) {
- var sources = [], len = arguments.length - 1;
- while ( len-- > 0 ) sources[ len ] = arguments[ len + 1 ];
-
- for (var i = 0; i < sources.length; i++) {
- var source = sources[i]
- for (var key in source) {
- if (has(source, key)) {
- target[key] = source[key]
- }
- }
- }
- return target
-}
-
-// The functions in this module keep track of declared variables in the current scope in order to detect duplicate variable names.
-
-pp$5.enterFunctionScope = function() {
- // var: a hash of var-declared names in the current lexical scope
- // lexical: a hash of lexically-declared names in the current lexical scope
- // childVar: a hash of var-declared names in all child lexical scopes of the current lexical scope (within the current function scope)
- // parentLexical: a hash of lexically-declared names in all parent lexical scopes of the current lexical scope (within the current function scope)
- this.scopeStack.push({var: {}, lexical: {}, childVar: {}, parentLexical: {}})
-}
-
-pp$5.exitFunctionScope = function() {
- this.scopeStack.pop()
-}
-
-pp$5.enterLexicalScope = function() {
- var parentScope = this.scopeStack[this.scopeStack.length - 1]
- var childScope = {var: {}, lexical: {}, childVar: {}, parentLexical: {}}
-
- this.scopeStack.push(childScope)
- assign(childScope.parentLexical, parentScope.lexical, parentScope.parentLexical)
-}
-
-pp$5.exitLexicalScope = function() {
- var childScope = this.scopeStack.pop()
- var parentScope = this.scopeStack[this.scopeStack.length - 1]
-
- assign(parentScope.childVar, childScope.var, childScope.childVar)
-}
-
-/**
- * A name can be declared with `var` if there are no variables with the same name declared with `let`/`const`
- * in the current lexical scope or any of the parent lexical scopes in this function.
- */
-pp$5.canDeclareVarName = function(name) {
- var currentScope = this.scopeStack[this.scopeStack.length - 1]
-
- return !has(currentScope.lexical, name) && !has(currentScope.parentLexical, name)
-}
-
-/**
- * A name can be declared with `let`/`const` if there are no variables with the same name declared with `let`/`const`
- * in the current scope, and there are no variables with the same name declared with `var` in the current scope or in
- * any child lexical scopes in this function.
- */
-pp$5.canDeclareLexicalName = function(name) {
- var currentScope = this.scopeStack[this.scopeStack.length - 1]
-
- return !has(currentScope.lexical, name) && !has(currentScope.var, name) && !has(currentScope.childVar, name)
-}
-
-pp$5.declareVarName = function(name) {
- this.scopeStack[this.scopeStack.length - 1].var[name] = true
-}
-
-pp$5.declareLexicalName = function(name) {
- this.scopeStack[this.scopeStack.length - 1].lexical[name] = true
-}
-
-var Node = function Node(parser, pos, loc) {
- this.type = ""
- this.start = pos
- this.end = 0
- if (parser.options.locations)
- this.loc = new SourceLocation(parser, loc)
- if (parser.options.directSourceFile)
- this.sourceFile = parser.options.directSourceFile
- if (parser.options.ranges)
- this.range = [pos, 0]
-};
-
-// Start an AST node, attaching a start offset.
-
-var pp$6 = Parser.prototype
-
-pp$6.startNode = function() {
- return new Node(this, this.start, this.startLoc)
-}
-
-pp$6.startNodeAt = function(pos, loc) {
- return new Node(this, pos, loc)
-}
-
-// Finish an AST node, adding `type` and `end` properties.
-
-function finishNodeAt(node, type, pos, loc) {
- node.type = type
- node.end = pos
- if (this.options.locations)
- node.loc.end = loc
- if (this.options.ranges)
- node.range[1] = pos
- return node
-}
-
-pp$6.finishNode = function(node, type) {
- return finishNodeAt.call(this, node, type, this.lastTokEnd, this.lastTokEndLoc)
-}
-
-// Finish node at given position
-
-pp$6.finishNodeAt = function(node, type, pos, loc) {
- return finishNodeAt.call(this, node, type, pos, loc)
-}
-
-// The algorithm used to determine whether a regexp can appear at a
-// given point in the program is loosely based on sweet.js' approach.
-// See https://github.com/mozilla/sweet.js/wiki/design
-
-var TokContext = function TokContext(token, isExpr, preserveSpace, override, generator) {
- this.token = token
- this.isExpr = !!isExpr
- this.preserveSpace = !!preserveSpace
- this.override = override
- this.generator = !!generator
-};
-
-var types = {
- b_stat: new TokContext("{", false),
- b_expr: new TokContext("{", true),
- b_tmpl: new TokContext("${", true),
- p_stat: new TokContext("(", false),
- p_expr: new TokContext("(", true),
- q_tmpl: new TokContext("`", true, true, function (p) { return p.readTmplToken(); }),
- f_expr: new TokContext("function", true),
- f_expr_gen: new TokContext("function", true, false, null, true),
- f_gen: new TokContext("function", false, false, null, true)
-}
-
-var pp$7 = Parser.prototype
-
-pp$7.initialContext = function() {
- return [types.b_stat]
-}
-
-pp$7.braceIsBlock = function(prevType) {
- if (prevType === tt.colon) {
- var parent = this.curContext()
- if (parent === types.b_stat || parent === types.b_expr)
- return !parent.isExpr
- }
- if (prevType === tt._return)
- return lineBreak.test(this.input.slice(this.lastTokEnd, this.start))
- if (prevType === tt._else || prevType === tt.semi || prevType === tt.eof || prevType === tt.parenR || prevType == tt.arrow)
- return true
- if (prevType == tt.braceL)
- return this.curContext() === types.b_stat
- return !this.exprAllowed
-}
-
-pp$7.inGeneratorContext = function() {
- var this$1 = this;
-
- for (var i = this.context.length - 1; i >= 0; i--)
- if (this$1.context[i].generator) return true
- return false
-}
-
-pp$7.updateContext = function(prevType) {
- var update, type = this.type
- if (type.keyword && prevType == tt.dot)
- this.exprAllowed = false
- else if (update = type.updateContext)
- update.call(this, prevType)
- else
- this.exprAllowed = type.beforeExpr
-}
-
-// Token-specific context update code
-
-tt.parenR.updateContext = tt.braceR.updateContext = function() {
- if (this.context.length == 1) {
- this.exprAllowed = true
- return
- }
- var out = this.context.pop(), cur
- if (out === types.b_stat && (cur = this.curContext()) && cur.token === "function") {
- this.context.pop()
- this.exprAllowed = false
- } else if (out === types.b_tmpl) {
- this.exprAllowed = true
- } else {
- this.exprAllowed = !out.isExpr
- }
-}
-
-tt.braceL.updateContext = function(prevType) {
- this.context.push(this.braceIsBlock(prevType) ? types.b_stat : types.b_expr)
- this.exprAllowed = true
-}
-
-tt.dollarBraceL.updateContext = function() {
- this.context.push(types.b_tmpl)
- this.exprAllowed = true
-}
-
-tt.parenL.updateContext = function(prevType) {
- var statementParens = prevType === tt._if || prevType === tt._for || prevType === tt._with || prevType === tt._while
- this.context.push(statementParens ? types.p_stat : types.p_expr)
- this.exprAllowed = true
-}
-
-tt.incDec.updateContext = function() {
- // tokExprAllowed stays unchanged
-}
-
-tt._function.updateContext = function(prevType) {
- if (prevType.beforeExpr && prevType !== tt.semi && prevType !== tt._else &&
- !((prevType === tt.colon || prevType === tt.braceL) && this.curContext() === types.b_stat))
- this.context.push(types.f_expr)
- this.exprAllowed = false
-}
-
-tt.backQuote.updateContext = function() {
- if (this.curContext() === types.q_tmpl)
- this.context.pop()
- else
- this.context.push(types.q_tmpl)
- this.exprAllowed = false
-}
-
-tt.star.updateContext = function(prevType) {
- if (prevType == tt._function) {
- if (this.curContext() === types.f_expr)
- this.context[this.context.length - 1] = types.f_expr_gen
- else
- this.context.push(types.f_gen)
- }
- this.exprAllowed = true
-}
-
-tt.name.updateContext = function(prevType) {
- var allowed = false
- if (this.options.ecmaVersion >= 6) {
- if (this.value == "of" && !this.exprAllowed ||
- this.value == "yield" && this.inGeneratorContext())
- allowed = true
- }
- this.exprAllowed = allowed
-}
-
-// Object type used to represent tokens. Note that normally, tokens
-// simply exist as properties on the parser object. This is only
-// used for the onToken callback and the external tokenizer.
-
-var Token = function Token(p) {
- this.type = p.type
- this.value = p.value
- this.start = p.start
- this.end = p.end
- if (p.options.locations)
- this.loc = new SourceLocation(p, p.startLoc, p.endLoc)
- if (p.options.ranges)
- this.range = [p.start, p.end]
-};
-
-// ## Tokenizer
-
-var pp$8 = Parser.prototype
-
-// Are we running under Rhino?
-var isRhino = typeof Packages == "object" && Object.prototype.toString.call(Packages) == "[object JavaPackage]"
-
-// Move to the next token
-
-pp$8.next = function() {
- if (this.options.onToken)
- this.options.onToken(new Token(this))
-
- this.lastTokEnd = this.end
- this.lastTokStart = this.start
- this.lastTokEndLoc = this.endLoc
- this.lastTokStartLoc = this.startLoc
- this.nextToken()
-}
-
-pp$8.getToken = function() {
- this.next()
- return new Token(this)
-}
-
-// If we're in an ES6 environment, make parsers iterable
-if (typeof Symbol !== "undefined")
- pp$8[Symbol.iterator] = function() {
- var this$1 = this;
-
- return {
- next: function () {
- var token = this$1.getToken()
- return {
- done: token.type === tt.eof,
- value: token
- }
- }
- }
- }
-
-// Toggle strict mode. Re-reads the next number or string to please
-// pedantic tests (`"use strict"; 010;` should fail).
-
-pp$8.curContext = function() {
- return this.context[this.context.length - 1]
-}
-
-// Read a single token, updating the parser object's token-related
-// properties.
-
-pp$8.nextToken = function() {
- var curContext = this.curContext()
- if (!curContext || !curContext.preserveSpace) this.skipSpace()
-
- this.start = this.pos
- if (this.options.locations) this.startLoc = this.curPosition()
- if (this.pos >= this.input.length) return this.finishToken(tt.eof)
-
- if (curContext.override) return curContext.override(this)
- else this.readToken(this.fullCharCodeAtPos())
-}
-
-pp$8.readToken = function(code) {
- // Identifier or keyword. '\uXXXX' sequences are allowed in
- // identifiers, so '\' also dispatches to that.
- if (isIdentifierStart(code, this.options.ecmaVersion >= 6) || code === 92 /* '\' */)
- return this.readWord()
-
- return this.getTokenFromCode(code)
-}
-
-pp$8.fullCharCodeAtPos = function() {
- var code = this.input.charCodeAt(this.pos)
- if (code <= 0xd7ff || code >= 0xe000) return code
- var next = this.input.charCodeAt(this.pos + 1)
- return (code << 10) + next - 0x35fdc00
-}
-
-pp$8.skipBlockComment = function() {
- var this$1 = this;
-
- var startLoc = this.options.onComment && this.curPosition()
- var start = this.pos, end = this.input.indexOf("*/", this.pos += 2)
- if (end === -1) this.raise(this.pos - 2, "Unterminated comment")
- this.pos = end + 2
- if (this.options.locations) {
- lineBreakG.lastIndex = start
- var match
- while ((match = lineBreakG.exec(this.input)) && match.index < this.pos) {
- ++this$1.curLine
- this$1.lineStart = match.index + match[0].length
- }
- }
- if (this.options.onComment)
- this.options.onComment(true, this.input.slice(start + 2, end), start, this.pos,
- startLoc, this.curPosition())
-}
-
-pp$8.skipLineComment = function(startSkip) {
- var this$1 = this;
-
- var start = this.pos
- var startLoc = this.options.onComment && this.curPosition()
- var ch = this.input.charCodeAt(this.pos += startSkip)
- while (this.pos < this.input.length && ch !== 10 && ch !== 13 && ch !== 8232 && ch !== 8233) {
- ++this$1.pos
- ch = this$1.input.charCodeAt(this$1.pos)
- }
- if (this.options.onComment)
- this.options.onComment(false, this.input.slice(start + startSkip, this.pos), start, this.pos,
- startLoc, this.curPosition())
-}
-
-// Called at the start of the parse and after every token. Skips
-// whitespace and comments, and.
-
-pp$8.skipSpace = function() {
- var this$1 = this;
-
- loop: while (this.pos < this.input.length) {
- var ch = this$1.input.charCodeAt(this$1.pos)
- switch (ch) {
- case 32: case 160: // ' '
- ++this$1.pos
- break
- case 13:
- if (this$1.input.charCodeAt(this$1.pos + 1) === 10) {
- ++this$1.pos
- }
- case 10: case 8232: case 8233:
- ++this$1.pos
- if (this$1.options.locations) {
- ++this$1.curLine
- this$1.lineStart = this$1.pos
- }
- break
- case 47: // '/'
- switch (this$1.input.charCodeAt(this$1.pos + 1)) {
- case 42: // '*'
- this$1.skipBlockComment()
- break
- case 47:
- this$1.skipLineComment(2)
- break
- default:
- break loop
- }
- break
- default:
- if (ch > 8 && ch < 14 || ch >= 5760 && nonASCIIwhitespace.test(String.fromCharCode(ch))) {
- ++this$1.pos
- } else {
- break loop
- }
- }
- }
-}
-
-// Called at the end of every token. Sets `end`, `val`, and
-// maintains `context` and `exprAllowed`, and skips the space after
-// the token, so that the next one's `start` will point at the
-// right position.
-
-pp$8.finishToken = function(type, val) {
- this.end = this.pos
- if (this.options.locations) this.endLoc = this.curPosition()
- var prevType = this.type
- this.type = type
- this.value = val
-
- this.updateContext(prevType)
-}
-
-// ### Token reading
-
-// This is the function that is called to fetch the next token. It
-// is somewhat obscure, because it works in character codes rather
-// than characters, and because operator parsing has been inlined
-// into it.
-//
-// All in the name of speed.
-//
-pp$8.readToken_dot = function() {
- var next = this.input.charCodeAt(this.pos + 1)
- if (next >= 48 && next <= 57) return this.readNumber(true)
- var next2 = this.input.charCodeAt(this.pos + 2)
- if (this.options.ecmaVersion >= 6 && next === 46 && next2 === 46) { // 46 = dot '.'
- this.pos += 3
- return this.finishToken(tt.ellipsis)
- } else {
- ++this.pos
- return this.finishToken(tt.dot)
- }
-}
-
-pp$8.readToken_slash = function() { // '/'
- var next = this.input.charCodeAt(this.pos + 1)
- if (this.exprAllowed) { ++this.pos; return this.readRegexp() }
- if (next === 61) return this.finishOp(tt.assign, 2)
- return this.finishOp(tt.slash, 1)
-}
-
-pp$8.readToken_mult_modulo_exp = function(code) { // '%*'
- var next = this.input.charCodeAt(this.pos + 1)
- var size = 1
- var tokentype = code === 42 ? tt.star : tt.modulo
-
- // exponentiation operator ** and **=
- if (this.options.ecmaVersion >= 7 && next === 42) {
- ++size
- tokentype = tt.starstar
- next = this.input.charCodeAt(this.pos + 2)
- }
-
- if (next === 61) return this.finishOp(tt.assign, size + 1)
- return this.finishOp(tokentype, size)
-}
-
-pp$8.readToken_pipe_amp = function(code) { // '|&'
- var next = this.input.charCodeAt(this.pos + 1)
- if (next === code) return this.finishOp(code === 124 ? tt.logicalOR : tt.logicalAND, 2)
- if (next === 61) return this.finishOp(tt.assign, 2)
- return this.finishOp(code === 124 ? tt.bitwiseOR : tt.bitwiseAND, 1)
-}
-
-pp$8.readToken_caret = function() { // '^'
- var next = this.input.charCodeAt(this.pos + 1)
- if (next === 61) return this.finishOp(tt.assign, 2)
- return this.finishOp(tt.bitwiseXOR, 1)
-}
-
-pp$8.readToken_plus_min = function(code) { // '+-'
- var next = this.input.charCodeAt(this.pos + 1)
- if (next === code) {
- if (next == 45 && this.input.charCodeAt(this.pos + 2) == 62 &&
- lineBreak.test(this.input.slice(this.lastTokEnd, this.pos))) {
- // A `-->` line comment
- this.skipLineComment(3)
- this.skipSpace()
- return this.nextToken()
- }
- return this.finishOp(tt.incDec, 2)
- }
- if (next === 61) return this.finishOp(tt.assign, 2)
- return this.finishOp(tt.plusMin, 1)
-}
-
-pp$8.readToken_lt_gt = function(code) { // '<>'
- var next = this.input.charCodeAt(this.pos + 1)
- var size = 1
- if (next === code) {
- size = code === 62 && this.input.charCodeAt(this.pos + 2) === 62 ? 3 : 2
- if (this.input.charCodeAt(this.pos + size) === 61) return this.finishOp(tt.assign, size + 1)
- return this.finishOp(tt.bitShift, size)
- }
- if (next == 33 && code == 60 && this.input.charCodeAt(this.pos + 2) == 45 &&
- this.input.charCodeAt(this.pos + 3) == 45) {
- if (this.inModule) this.unexpected()
- // `0;)if(list[i]===listener||list[i].listener&&list[i].listener===listener){position=i;break}if(0>position)return this;1===list.length?(list.length=0,delete this._events[type]):list.splice(position,1),this._events.removeListener&&this.emit(\"removeListener\",type,listener)}return this},EventEmitter.prototype.removeAllListeners=function(type){var key,listeners;if(!this._events)return this;if(!this._events.removeListener)return 0===arguments.length?this._events={}:this._events[type]&&delete this._events[type],this;if(0===arguments.length){for(key in this._events)\"removeListener\"!==key&&this.removeAllListeners(key);return this.removeAllListeners(\"removeListener\"),this._events={},this\n}if(listeners=this._events[type],isFunction(listeners))this.removeListener(type,listeners);else for(;listeners.length;)this.removeListener(type,listeners[listeners.length-1]);return delete this._events[type],this},EventEmitter.prototype.listeners=function(type){var ret;return ret=this._events&&this._events[type]?isFunction(this._events[type])?[this._events[type]]:this._events[type].slice():[]},EventEmitter.listenerCount=function(emitter,type){var ret;return ret=emitter._events&&emitter._events[type]?isFunction(emitter._events[type])?1:emitter._events[type].length:0}},{}],\"/node_modules/jshint/data/ascii-identifier-data.js\":[function(_dereq_,module){for(var identifierStartTable=[],i=0;128>i;i++)identifierStartTable[i]=36===i||i>=65&&90>=i||95===i||i>=97&&122>=i;for(var identifierPartTable=[],i=0;128>i;i++)identifierPartTable[i]=identifierStartTable[i]||i>=48&&57>=i;module.exports={asciiIdentifierStartTable:identifierStartTable,asciiIdentifierPartTable:identifierPartTable}},{}],\"/node_modules/jshint/lodash.js\":[function(_dereq_,module,exports){(function(global){(function(){function baseFindIndex(array,predicate,fromRight){for(var length=array.length,index=fromRight?length:-1;fromRight?index--:length>++index;)if(predicate(array[index],index,array))return index;return-1}function baseIndexOf(array,value,fromIndex){if(value!==value)return indexOfNaN(array,fromIndex);for(var index=fromIndex-1,length=array.length;length>++index;)if(array[index]===value)return index;return-1}function baseIsFunction(value){return\"function\"==typeof value||!1}function baseToString(value){return\"string\"==typeof value?value:null==value?\"\":value+\"\"}function indexOfNaN(array,fromIndex,fromRight){for(var length=array.length,index=fromIndex+(fromRight?0:-1);fromRight?index--:length>++index;){var other=array[index];if(other!==other)return index}return-1}function isObjectLike(value){return!!value&&\"object\"==typeof value}function lodash(){}function arrayCopy(source,array){var index=-1,length=source.length;for(array||(array=Array(length));length>++index;)array[index]=source[index];return array}function arrayEach(array,iteratee){for(var index=-1,length=array.length;length>++index&&iteratee(array[index],index,array)!==!1;);return array}function arrayFilter(array,predicate){for(var index=-1,length=array.length,resIndex=-1,result=[];length>++index;){var value=array[index];predicate(value,index,array)&&(result[++resIndex]=value)}return result}function arrayMap(array,iteratee){for(var index=-1,length=array.length,result=Array(length);length>++index;)result[index]=iteratee(array[index],index,array);return result}function arrayMax(array){for(var index=-1,length=array.length,result=NEGATIVE_INFINITY;length>++index;){var value=array[index];value>result&&(result=value)}return result}function arraySome(array,predicate){for(var index=-1,length=array.length;length>++index;)if(predicate(array[index],index,array))return!0;return!1}function assignWith(object,source,customizer){var props=keys(source);push.apply(props,getSymbols(source));for(var index=-1,length=props.length;length>++index;){var key=props[index],value=object[key],result=customizer(value,source[key],key,object,source);(result===result?result===value:value!==value)&&(value!==undefined||key in object)||(object[key]=result)}return object}function baseCopy(source,props,object){object||(object={});for(var index=-1,length=props.length;length>++index;){var key=props[index];object[key]=source[key]}return object}function baseCallback(func,thisArg,argCount){var type=typeof func;return\"function\"==type?thisArg===undefined?func:bindCallback(func,thisArg,argCount):null==func?identity:\"object\"==type?baseMatches(func):thisArg===undefined?property(func):baseMatchesProperty(func,thisArg)}function baseClone(value,isDeep,customizer,key,object,stackA,stackB){var result;if(customizer&&(result=object?customizer(value,key,object):customizer(value)),result!==undefined)return result;if(!isObject(value))return value;var isArr=isArray(value);if(isArr){if(result=initCloneArray(value),!isDeep)return arrayCopy(value,result)}else{var tag=objToString.call(value),isFunc=tag==funcTag;if(tag!=objectTag&&tag!=argsTag&&(!isFunc||object))return cloneableTags[tag]?initCloneByTag(value,tag,isDeep):object?value:{};if(result=initCloneObject(isFunc?{}:value),!isDeep)return baseAssign(result,value)}stackA||(stackA=[]),stackB||(stackB=[]);for(var length=stackA.length;length--;)if(stackA[length]==value)return stackB[length];return stackA.push(value),stackB.push(result),(isArr?arrayEach:baseForOwn)(value,function(subValue,key){result[key]=baseClone(subValue,isDeep,customizer,key,value,stackA,stackB)}),result}function baseFilter(collection,predicate){var result=[];return baseEach(collection,function(value,index,collection){predicate(value,index,collection)&&result.push(value)}),result}function baseForIn(object,iteratee){return baseFor(object,iteratee,keysIn)}function baseForOwn(object,iteratee){return baseFor(object,iteratee,keys)}function baseGet(object,path,pathKey){if(null!=object){pathKey!==undefined&&pathKey in toObject(object)&&(path=[pathKey]);for(var index=-1,length=path.length;null!=object&&length>++index;)var result=object=object[path[index]];return result}}function baseIsEqual(value,other,customizer,isLoose,stackA,stackB){if(value===other)return 0!==value||1/value==1/other;var valType=typeof value,othType=typeof other;return\"function\"!=valType&&\"object\"!=valType&&\"function\"!=othType&&\"object\"!=othType||null==value||null==other?value!==value&&other!==other:baseIsEqualDeep(value,other,baseIsEqual,customizer,isLoose,stackA,stackB)}function baseIsEqualDeep(object,other,equalFunc,customizer,isLoose,stackA,stackB){var objIsArr=isArray(object),othIsArr=isArray(other),objTag=arrayTag,othTag=arrayTag;objIsArr||(objTag=objToString.call(object),objTag==argsTag?objTag=objectTag:objTag!=objectTag&&(objIsArr=isTypedArray(object))),othIsArr||(othTag=objToString.call(other),othTag==argsTag?othTag=objectTag:othTag!=objectTag&&(othIsArr=isTypedArray(other)));var objIsObj=objTag==objectTag,othIsObj=othTag==objectTag,isSameTag=objTag==othTag;if(isSameTag&&!objIsArr&&!objIsObj)return equalByTag(object,other,objTag);if(!isLoose){var valWrapped=objIsObj&&hasOwnProperty.call(object,\"__wrapped__\"),othWrapped=othIsObj&&hasOwnProperty.call(other,\"__wrapped__\");if(valWrapped||othWrapped)return equalFunc(valWrapped?object.value():object,othWrapped?other.value():other,customizer,isLoose,stackA,stackB)}if(!isSameTag)return!1;stackA||(stackA=[]),stackB||(stackB=[]);for(var length=stackA.length;length--;)if(stackA[length]==object)return stackB[length]==other;stackA.push(object),stackB.push(other);var result=(objIsArr?equalArrays:equalObjects)(object,other,equalFunc,customizer,isLoose,stackA,stackB);return stackA.pop(),stackB.pop(),result}function baseIsMatch(object,props,values,strictCompareFlags,customizer){for(var index=-1,length=props.length,noCustomizer=!customizer;length>++index;)if(noCustomizer&&strictCompareFlags[index]?values[index]!==object[props[index]]:!(props[index]in object))return!1;for(index=-1;length>++index;){var key=props[index],objValue=object[key],srcValue=values[index];if(noCustomizer&&strictCompareFlags[index])var result=objValue!==undefined||key in object;else result=customizer?customizer(objValue,srcValue,key):undefined,result===undefined&&(result=baseIsEqual(srcValue,objValue,customizer,!0));if(!result)return!1}return!0}function baseMatches(source){var props=keys(source),length=props.length;if(!length)return constant(!0);if(1==length){var key=props[0],value=source[key];if(isStrictComparable(value))return function(object){return null==object?!1:object[key]===value&&(value!==undefined||key in toObject(object))}}for(var values=Array(length),strictCompareFlags=Array(length);length--;)value=source[props[length]],values[length]=value,strictCompareFlags[length]=isStrictComparable(value);return function(object){return null!=object&&baseIsMatch(toObject(object),props,values,strictCompareFlags)}}function baseMatchesProperty(path,value){var isArr=isArray(path),isCommon=isKey(path)&&isStrictComparable(value),pathKey=path+\"\";return path=toPath(path),function(object){if(null==object)return!1;var key=pathKey;if(object=toObject(object),!(!isArr&&isCommon||key in object)){if(object=1==path.length?object:baseGet(object,baseSlice(path,0,-1)),null==object)return!1;key=last(path),object=toObject(object)}return object[key]===value?value!==undefined||key in object:baseIsEqual(value,object[key],null,!0)}}function baseMerge(object,source,customizer,stackA,stackB){if(!isObject(object))return object;var isSrcArr=isLength(source.length)&&(isArray(source)||isTypedArray(source));if(!isSrcArr){var props=keys(source);push.apply(props,getSymbols(source))}return arrayEach(props||source,function(srcValue,key){if(props&&(key=srcValue,srcValue=source[key]),isObjectLike(srcValue))stackA||(stackA=[]),stackB||(stackB=[]),baseMergeDeep(object,source,key,baseMerge,customizer,stackA,stackB);else{var value=object[key],result=customizer?customizer(value,srcValue,key,object,source):undefined,isCommon=result===undefined;isCommon&&(result=srcValue),!isSrcArr&&result===undefined||!isCommon&&(result===result?result===value:value!==value)||(object[key]=result)}}),object}function baseMergeDeep(object,source,key,mergeFunc,customizer,stackA,stackB){for(var length=stackA.length,srcValue=source[key];length--;)if(stackA[length]==srcValue)return object[key]=stackB[length],undefined;var value=object[key],result=customizer?customizer(value,srcValue,key,object,source):undefined,isCommon=result===undefined;isCommon&&(result=srcValue,isLength(srcValue.length)&&(isArray(srcValue)||isTypedArray(srcValue))?result=isArray(value)?value:getLength(value)?arrayCopy(value):[]:isPlainObject(srcValue)||isArguments(srcValue)?result=isArguments(value)?toPlainObject(value):isPlainObject(value)?value:{}:isCommon=!1),stackA.push(srcValue),stackB.push(result),isCommon?object[key]=mergeFunc(result,srcValue,customizer,stackA,stackB):(result===result?result!==value:value===value)&&(object[key]=result)}function baseProperty(key){return function(object){return null==object?undefined:object[key]}}function basePropertyDeep(path){var pathKey=path+\"\";return path=toPath(path),function(object){return baseGet(object,path,pathKey)}}function baseSlice(array,start,end){var index=-1,length=array.length;start=null==start?0:+start||0,0>start&&(start=-start>length?0:length+start),end=end===undefined||end>length?length:+end||0,0>end&&(end+=length),length=start>end?0:end-start>>>0,start>>>=0;for(var result=Array(length);length>++index;)result[index]=array[index+start];return result}function baseSome(collection,predicate){var result;return baseEach(collection,function(value,index,collection){return result=predicate(value,index,collection),!result}),!!result}function baseValues(object,props){for(var index=-1,length=props.length,result=Array(length);length>++index;)result[index]=object[props[index]];return result}function binaryIndex(array,value,retHighest){var low=0,high=array?array.length:low;if(\"number\"==typeof value&&value===value&&HALF_MAX_ARRAY_LENGTH>=high){for(;high>low;){var mid=low+high>>>1,computed=array[mid];(retHighest?value>=computed:value>computed)?low=mid+1:high=mid}return high}return binaryIndexBy(array,value,identity,retHighest)}function binaryIndexBy(array,value,iteratee,retHighest){value=iteratee(value);for(var low=0,high=array?array.length:0,valIsNaN=value!==value,valIsUndef=value===undefined;high>low;){var mid=floor((low+high)/2),computed=iteratee(array[mid]),isReflexive=computed===computed;if(valIsNaN)var setLow=isReflexive||retHighest;else setLow=valIsUndef?isReflexive&&(retHighest||computed!==undefined):retHighest?value>=computed:value>computed;setLow?low=mid+1:high=mid}return nativeMin(high,MAX_ARRAY_INDEX)}function bindCallback(func,thisArg,argCount){if(\"function\"!=typeof func)return identity;if(thisArg===undefined)return func;switch(argCount){case 1:return function(value){return func.call(thisArg,value)};case 3:return function(value,index,collection){return func.call(thisArg,value,index,collection)};case 4:return function(accumulator,value,index,collection){return func.call(thisArg,accumulator,value,index,collection)};case 5:return function(value,other,key,object,source){return func.call(thisArg,value,other,key,object,source)}}return function(){return func.apply(thisArg,arguments)}}function bufferClone(buffer){return bufferSlice.call(buffer,0)}function createAssigner(assigner){return restParam(function(object,sources){var index=-1,length=null==object?0:sources.length,customizer=length>2&&sources[length-2],guard=length>2&&sources[2],thisArg=length>1&&sources[length-1];for(\"function\"==typeof customizer?(customizer=bindCallback(customizer,thisArg,5),length-=2):(customizer=\"function\"==typeof thisArg?thisArg:null,length-=customizer?1:0),guard&&isIterateeCall(sources[0],sources[1],guard)&&(customizer=3>length?null:customizer,length=1);length>++index;){var source=sources[index];source&&assigner(object,source,customizer)}return object})}function createBaseEach(eachFunc,fromRight){return function(collection,iteratee){var length=collection?getLength(collection):0;if(!isLength(length))return eachFunc(collection,iteratee);for(var index=fromRight?length:-1,iterable=toObject(collection);(fromRight?index--:length>++index)&&iteratee(iterable[index],index,iterable)!==!1;);return collection}}function createBaseFor(fromRight){return function(object,iteratee,keysFunc){for(var iterable=toObject(object),props=keysFunc(object),length=props.length,index=fromRight?length:-1;fromRight?index--:length>++index;){var key=props[index];if(iteratee(iterable[key],key,iterable)===!1)break}return object}}function createFindIndex(fromRight){return function(array,predicate,thisArg){return array&&array.length?(predicate=getCallback(predicate,thisArg,3),baseFindIndex(array,predicate,fromRight)):-1}}function createForEach(arrayFunc,eachFunc){return function(collection,iteratee,thisArg){return\"function\"==typeof iteratee&&thisArg===undefined&&isArray(collection)?arrayFunc(collection,iteratee):eachFunc(collection,bindCallback(iteratee,thisArg,3))}}function equalArrays(array,other,equalFunc,customizer,isLoose,stackA,stackB){var index=-1,arrLength=array.length,othLength=other.length,result=!0;if(arrLength!=othLength&&!(isLoose&&othLength>arrLength))return!1;for(;result&&arrLength>++index;){var arrValue=array[index],othValue=other[index];if(result=undefined,customizer&&(result=isLoose?customizer(othValue,arrValue,index):customizer(arrValue,othValue,index)),result===undefined)if(isLoose)for(var othIndex=othLength;othIndex--&&(othValue=other[othIndex],!(result=arrValue&&arrValue===othValue||equalFunc(arrValue,othValue,customizer,isLoose,stackA,stackB))););else result=arrValue&&arrValue===othValue||equalFunc(arrValue,othValue,customizer,isLoose,stackA,stackB)}return!!result}function equalByTag(object,other,tag){switch(tag){case boolTag:case dateTag:return+object==+other;case errorTag:return object.name==other.name&&object.message==other.message;case numberTag:return object!=+object?other!=+other:0==object?1/object==1/other:object==+other;case regexpTag:case stringTag:return object==other+\"\"}return!1}function equalObjects(object,other,equalFunc,customizer,isLoose,stackA,stackB){var objProps=keys(object),objLength=objProps.length,othProps=keys(other),othLength=othProps.length;if(objLength!=othLength&&!isLoose)return!1;for(var skipCtor=isLoose,index=-1;objLength>++index;){var key=objProps[index],result=isLoose?key in other:hasOwnProperty.call(other,key);if(result){var objValue=object[key],othValue=other[key];result=undefined,customizer&&(result=isLoose?customizer(othValue,objValue,key):customizer(objValue,othValue,key)),result===undefined&&(result=objValue&&objValue===othValue||equalFunc(objValue,othValue,customizer,isLoose,stackA,stackB))}if(!result)return!1;skipCtor||(skipCtor=\"constructor\"==key)}if(!skipCtor){var objCtor=object.constructor,othCtor=other.constructor;if(objCtor!=othCtor&&\"constructor\"in object&&\"constructor\"in other&&!(\"function\"==typeof objCtor&&objCtor instanceof objCtor&&\"function\"==typeof othCtor&&othCtor instanceof othCtor))return!1}return!0}function getCallback(func,thisArg,argCount){var result=lodash.callback||callback;return result=result===callback?baseCallback:result,argCount?result(func,thisArg,argCount):result}function getIndexOf(collection,target,fromIndex){var result=lodash.indexOf||indexOf;return result=result===indexOf?baseIndexOf:result,collection?result(collection,target,fromIndex):result}function initCloneArray(array){var length=array.length,result=new array.constructor(length);return length&&\"string\"==typeof array[0]&&hasOwnProperty.call(array,\"index\")&&(result.index=array.index,result.input=array.input),result}function initCloneObject(object){var Ctor=object.constructor;return\"function\"==typeof Ctor&&Ctor instanceof Ctor||(Ctor=Object),new Ctor}function initCloneByTag(object,tag,isDeep){var Ctor=object.constructor;switch(tag){case arrayBufferTag:return bufferClone(object);case boolTag:case dateTag:return new Ctor(+object);case float32Tag:case float64Tag:case int8Tag:case int16Tag:case int32Tag:case uint8Tag:case uint8ClampedTag:case uint16Tag:case uint32Tag:var buffer=object.buffer;return new Ctor(isDeep?bufferClone(buffer):buffer,object.byteOffset,object.length);case numberTag:case stringTag:return new Ctor(object);case regexpTag:var result=new Ctor(object.source,reFlags.exec(object));result.lastIndex=object.lastIndex}return result}function isIndex(value,length){return value=+value,length=null==length?MAX_SAFE_INTEGER:length,value>-1&&0==value%1&&length>value}function isIterateeCall(value,index,object){if(!isObject(object))return!1;var type=typeof index;if(\"number\"==type)var length=getLength(object),prereq=isLength(length)&&isIndex(index,length);else prereq=\"string\"==type&&index in object;if(prereq){var other=object[index];return value===value?value===other:other!==other}return!1}function isKey(value,object){var type=typeof value;if(\"string\"==type&&reIsPlainProp.test(value)||\"number\"==type)return!0;if(isArray(value))return!1;var result=!reIsDeepProp.test(value);return result||null!=object&&value in toObject(object)}function isLength(value){return\"number\"==typeof value&&value>-1&&0==value%1&&MAX_SAFE_INTEGER>=value}function isStrictComparable(value){return value===value&&(0===value?1/value>0:!isObject(value))}function shimIsPlainObject(value){var Ctor;if(lodash.support,!isObjectLike(value)||objToString.call(value)!=objectTag||!hasOwnProperty.call(value,\"constructor\")&&(Ctor=value.constructor,\"function\"==typeof Ctor&&!(Ctor instanceof Ctor)))return!1;var result;return baseForIn(value,function(subValue,key){result=key}),result===undefined||hasOwnProperty.call(value,result)}function shimKeys(object){for(var props=keysIn(object),propsLength=props.length,length=propsLength&&object.length,support=lodash.support,allowIndexes=length&&isLength(length)&&(isArray(object)||support.nonEnumArgs&&isArguments(object)),index=-1,result=[];propsLength>++index;){var key=props[index];(allowIndexes&&isIndex(key,length)||hasOwnProperty.call(object,key))&&result.push(key)}return result}function toObject(value){return isObject(value)?value:Object(value)}function toPath(value){if(isArray(value))return value;var result=[];return baseToString(value).replace(rePropName,function(match,number,quote,string){result.push(quote?string.replace(reEscapeChar,\"$1\"):number||match)}),result}function indexOf(array,value,fromIndex){var length=array?array.length:0;if(!length)return-1;if(\"number\"==typeof fromIndex)fromIndex=0>fromIndex?nativeMax(length+fromIndex,0):fromIndex;else if(fromIndex){var index=binaryIndex(array,value),other=array[index];return(value===value?value===other:other!==other)?index:-1}return baseIndexOf(array,value,fromIndex||0)}function last(array){var length=array?array.length:0;return length?array[length-1]:undefined}function slice(array,start,end){var length=array?array.length:0;return length?(end&&\"number\"!=typeof end&&isIterateeCall(array,start,end)&&(start=0,end=length),baseSlice(array,start,end)):[]}function unzip(array){for(var index=-1,length=(array&&array.length&&arrayMax(arrayMap(array,getLength)))>>>0,result=Array(length);length>++index;)result[index]=arrayMap(array,baseProperty(index));return result}function includes(collection,target,fromIndex,guard){var length=collection?getLength(collection):0;return isLength(length)||(collection=values(collection),length=collection.length),length?(fromIndex=\"number\"!=typeof fromIndex||guard&&isIterateeCall(target,fromIndex,guard)?0:0>fromIndex?nativeMax(length+fromIndex,0):fromIndex||0,\"string\"==typeof collection||!isArray(collection)&&isString(collection)?length>fromIndex&&collection.indexOf(target,fromIndex)>-1:getIndexOf(collection,target,fromIndex)>-1):!1}function reject(collection,predicate,thisArg){var func=isArray(collection)?arrayFilter:baseFilter;return predicate=getCallback(predicate,thisArg,3),func(collection,function(value,index,collection){return!predicate(value,index,collection)})}function some(collection,predicate,thisArg){var func=isArray(collection)?arraySome:baseSome;return thisArg&&isIterateeCall(collection,predicate,thisArg)&&(predicate=null),(\"function\"!=typeof predicate||thisArg!==undefined)&&(predicate=getCallback(predicate,thisArg,3)),func(collection,predicate)}function restParam(func,start){if(\"function\"!=typeof func)throw new TypeError(FUNC_ERROR_TEXT);return start=nativeMax(start===undefined?func.length-1:+start||0,0),function(){for(var args=arguments,index=-1,length=nativeMax(args.length-start,0),rest=Array(length);length>++index;)rest[index]=args[start+index];switch(start){case 0:return func.call(this,rest);case 1:return func.call(this,args[0],rest);case 2:return func.call(this,args[0],args[1],rest)}var otherArgs=Array(start+1);for(index=-1;start>++index;)otherArgs[index]=args[index];return otherArgs[start]=rest,func.apply(this,otherArgs)}}function clone(value,isDeep,customizer,thisArg){return isDeep&&\"boolean\"!=typeof isDeep&&isIterateeCall(value,isDeep,customizer)?isDeep=!1:\"function\"==typeof isDeep&&(thisArg=customizer,customizer=isDeep,isDeep=!1),customizer=\"function\"==typeof customizer&&bindCallback(customizer,thisArg,1),baseClone(value,isDeep,customizer)}function isArguments(value){var length=isObjectLike(value)?value.length:undefined;return isLength(length)&&objToString.call(value)==argsTag}function isEmpty(value){if(null==value)return!0;var length=getLength(value);return isLength(length)&&(isArray(value)||isString(value)||isArguments(value)||isObjectLike(value)&&isFunction(value.splice))?!length:!keys(value).length}function isObject(value){var type=typeof value;return\"function\"==type||!!value&&\"object\"==type}function isNative(value){return null==value?!1:objToString.call(value)==funcTag?reIsNative.test(fnToString.call(value)):isObjectLike(value)&&reIsHostCtor.test(value)}function isNumber(value){return\"number\"==typeof value||isObjectLike(value)&&objToString.call(value)==numberTag}function isString(value){return\"string\"==typeof value||isObjectLike(value)&&objToString.call(value)==stringTag}function isTypedArray(value){return isObjectLike(value)&&isLength(value.length)&&!!typedArrayTags[objToString.call(value)]}function toPlainObject(value){return baseCopy(value,keysIn(value))}function has(object,path){if(null==object)return!1;var result=hasOwnProperty.call(object,path);return result||isKey(path)||(path=toPath(path),object=1==path.length?object:baseGet(object,baseSlice(path,0,-1)),path=last(path),result=null!=object&&hasOwnProperty.call(object,path)),result}function keysIn(object){if(null==object)return[];isObject(object)||(object=Object(object));var length=object.length;length=length&&isLength(length)&&(isArray(object)||support.nonEnumArgs&&isArguments(object))&&length||0;for(var Ctor=object.constructor,index=-1,isProto=\"function\"==typeof Ctor&&Ctor.prototype===object,result=Array(length),skipIndexes=length>0;length>++index;)result[index]=index+\"\";for(var key in object)skipIndexes&&isIndex(key,length)||\"constructor\"==key&&(isProto||!hasOwnProperty.call(object,key))||result.push(key);return result}function values(object){return baseValues(object,keys(object))}function escapeRegExp(string){return string=baseToString(string),string&&reHasRegExpChars.test(string)?string.replace(reRegExpChars,\"\\\\$&\"):string}function callback(func,thisArg,guard){return guard&&isIterateeCall(func,thisArg,guard)&&(thisArg=null),baseCallback(func,thisArg)}function constant(value){return function(){return value}}function identity(value){return value}function property(path){return isKey(path)?baseProperty(path):basePropertyDeep(path)}var undefined,VERSION=\"3.7.0\",FUNC_ERROR_TEXT=\"Expected a function\",argsTag=\"[object Arguments]\",arrayTag=\"[object Array]\",boolTag=\"[object Boolean]\",dateTag=\"[object Date]\",errorTag=\"[object Error]\",funcTag=\"[object Function]\",mapTag=\"[object Map]\",numberTag=\"[object Number]\",objectTag=\"[object Object]\",regexpTag=\"[object RegExp]\",setTag=\"[object Set]\",stringTag=\"[object String]\",weakMapTag=\"[object WeakMap]\",arrayBufferTag=\"[object ArrayBuffer]\",float32Tag=\"[object Float32Array]\",float64Tag=\"[object Float64Array]\",int8Tag=\"[object Int8Array]\",int16Tag=\"[object Int16Array]\",int32Tag=\"[object Int32Array]\",uint8Tag=\"[object Uint8Array]\",uint8ClampedTag=\"[object Uint8ClampedArray]\",uint16Tag=\"[object Uint16Array]\",uint32Tag=\"[object Uint32Array]\",reIsDeepProp=/\\.|\\[(?:[^[\\]]+|([\"'])(?:(?!\\1)[^\\n\\\\]|\\\\.)*?)\\1\\]/,reIsPlainProp=/^\\w*$/,rePropName=/[^.[\\]]+|\\[(?:(-?\\d+(?:\\.\\d+)?)|([\"'])((?:(?!\\2)[^\\n\\\\]|\\\\.)*?)\\2)\\]/g,reRegExpChars=/[.*+?^${}()|[\\]\\/\\\\]/g,reHasRegExpChars=RegExp(reRegExpChars.source),reEscapeChar=/\\\\(\\\\)?/g,reFlags=/\\w*$/,reIsHostCtor=/^\\[object .+?Constructor\\]$/,typedArrayTags={};typedArrayTags[float32Tag]=typedArrayTags[float64Tag]=typedArrayTags[int8Tag]=typedArrayTags[int16Tag]=typedArrayTags[int32Tag]=typedArrayTags[uint8Tag]=typedArrayTags[uint8ClampedTag]=typedArrayTags[uint16Tag]=typedArrayTags[uint32Tag]=!0,typedArrayTags[argsTag]=typedArrayTags[arrayTag]=typedArrayTags[arrayBufferTag]=typedArrayTags[boolTag]=typedArrayTags[dateTag]=typedArrayTags[errorTag]=typedArrayTags[funcTag]=typedArrayTags[mapTag]=typedArrayTags[numberTag]=typedArrayTags[objectTag]=typedArrayTags[regexpTag]=typedArrayTags[setTag]=typedArrayTags[stringTag]=typedArrayTags[weakMapTag]=!1;var cloneableTags={};cloneableTags[argsTag]=cloneableTags[arrayTag]=cloneableTags[arrayBufferTag]=cloneableTags[boolTag]=cloneableTags[dateTag]=cloneableTags[float32Tag]=cloneableTags[float64Tag]=cloneableTags[int8Tag]=cloneableTags[int16Tag]=cloneableTags[int32Tag]=cloneableTags[numberTag]=cloneableTags[objectTag]=cloneableTags[regexpTag]=cloneableTags[stringTag]=cloneableTags[uint8Tag]=cloneableTags[uint8ClampedTag]=cloneableTags[uint16Tag]=cloneableTags[uint32Tag]=!0,cloneableTags[errorTag]=cloneableTags[funcTag]=cloneableTags[mapTag]=cloneableTags[setTag]=cloneableTags[weakMapTag]=!1;var objectTypes={\"function\":!0,object:!0},freeExports=objectTypes[typeof exports]&&exports&&!exports.nodeType&&exports,freeModule=objectTypes[typeof module]&&module&&!module.nodeType&&module,freeGlobal=freeExports&&freeModule&&\"object\"==typeof global&&global&&global.Object&&global,freeSelf=objectTypes[typeof self]&&self&&self.Object&&self,freeWindow=objectTypes[typeof window]&&window&&window.Object&&window,moduleExports=freeModule&&freeModule.exports===freeExports&&freeExports,root=freeGlobal||freeWindow!==(this&&this.window)&&freeWindow||freeSelf||this,arrayProto=Array.prototype,objectProto=Object.prototype,fnToString=Function.prototype.toString,hasOwnProperty=objectProto.hasOwnProperty,objToString=objectProto.toString,reIsNative=RegExp(\"^\"+escapeRegExp(objToString).replace(/toString|(function).*?(?=\\\\\\()| for .+?(?=\\\\\\])/g,\"$1.*?\")+\"$\"),ArrayBuffer=isNative(ArrayBuffer=root.ArrayBuffer)&&ArrayBuffer,bufferSlice=isNative(bufferSlice=ArrayBuffer&&new ArrayBuffer(0).slice)&&bufferSlice,floor=Math.floor,getOwnPropertySymbols=isNative(getOwnPropertySymbols=Object.getOwnPropertySymbols)&&getOwnPropertySymbols,getPrototypeOf=isNative(getPrototypeOf=Object.getPrototypeOf)&&getPrototypeOf,push=arrayProto.push,preventExtensions=isNative(Object.preventExtensions=Object.preventExtensions)&&preventExtensions,propertyIsEnumerable=objectProto.propertyIsEnumerable,Uint8Array=isNative(Uint8Array=root.Uint8Array)&&Uint8Array,Float64Array=function(){try{var func=isNative(func=root.Float64Array)&&func,result=new func(new ArrayBuffer(10),0,1)&&func}catch(e){}return result}(),nativeAssign=function(){var object={1:0},func=preventExtensions&&isNative(func=Object.assign)&&func;try{func(preventExtensions(object),\"xo\")}catch(e){}return!object[1]&&func}(),nativeIsArray=isNative(nativeIsArray=Array.isArray)&&nativeIsArray,nativeKeys=isNative(nativeKeys=Object.keys)&&nativeKeys,nativeMax=Math.max,nativeMin=Math.min,NEGATIVE_INFINITY=Number.NEGATIVE_INFINITY,MAX_ARRAY_LENGTH=Math.pow(2,32)-1,MAX_ARRAY_INDEX=MAX_ARRAY_LENGTH-1,HALF_MAX_ARRAY_LENGTH=MAX_ARRAY_LENGTH>>>1,FLOAT64_BYTES_PER_ELEMENT=Float64Array?Float64Array.BYTES_PER_ELEMENT:0,MAX_SAFE_INTEGER=Math.pow(2,53)-1,support=lodash.support={};(function(x){var Ctor=function(){this.x=x},props=[];Ctor.prototype={valueOf:x,y:x};for(var key in new Ctor)props.push(key);support.funcDecomp=/\\bthis\\b/.test(function(){return this}),support.funcNames=\"string\"==typeof Function.name;try{support.nonEnumArgs=!propertyIsEnumerable.call(arguments,1)}catch(e){support.nonEnumArgs=!0}})(1,0);var baseAssign=nativeAssign||function(object,source){return null==source?object:baseCopy(source,getSymbols(source),baseCopy(source,keys(source),object))},baseEach=createBaseEach(baseForOwn),baseFor=createBaseFor();bufferSlice||(bufferClone=ArrayBuffer&&Uint8Array?function(buffer){var byteLength=buffer.byteLength,floatLength=Float64Array?floor(byteLength/FLOAT64_BYTES_PER_ELEMENT):0,offset=floatLength*FLOAT64_BYTES_PER_ELEMENT,result=new ArrayBuffer(byteLength);if(floatLength){var view=new Float64Array(result,0,floatLength);view.set(new Float64Array(buffer,0,floatLength))}return byteLength!=offset&&(view=new Uint8Array(result,offset),view.set(new Uint8Array(buffer,offset))),result}:constant(null));var getLength=baseProperty(\"length\"),getSymbols=getOwnPropertySymbols?function(object){return getOwnPropertySymbols(toObject(object))}:constant([]),findLastIndex=createFindIndex(!0),zip=restParam(unzip),forEach=createForEach(arrayEach,baseEach),isArray=nativeIsArray||function(value){return isObjectLike(value)&&isLength(value.length)&&objToString.call(value)==arrayTag},isFunction=baseIsFunction(/x/)||Uint8Array&&!baseIsFunction(Uint8Array)?function(value){return objToString.call(value)==funcTag}:baseIsFunction,isPlainObject=getPrototypeOf?function(value){if(!value||objToString.call(value)!=objectTag)return!1;var valueOf=value.valueOf,objProto=isNative(valueOf)&&(objProto=getPrototypeOf(valueOf))&&getPrototypeOf(objProto);return objProto?value==objProto||getPrototypeOf(value)==objProto:shimIsPlainObject(value)}:shimIsPlainObject,assign=createAssigner(function(object,source,customizer){return customizer?assignWith(object,source,customizer):baseAssign(object,source)}),keys=nativeKeys?function(object){if(object)var Ctor=object.constructor,length=object.length;return\"function\"==typeof Ctor&&Ctor.prototype===object||\"function\"!=typeof object&&isLength(length)?shimKeys(object):isObject(object)?nativeKeys(object):[]}:shimKeys,merge=createAssigner(baseMerge);lodash.assign=assign,lodash.callback=callback,lodash.constant=constant,lodash.forEach=forEach,lodash.keys=keys,lodash.keysIn=keysIn,lodash.merge=merge,lodash.property=property,lodash.reject=reject,lodash.restParam=restParam,lodash.slice=slice,lodash.toPlainObject=toPlainObject,lodash.unzip=unzip,lodash.values=values,lodash.zip=zip,lodash.each=forEach,lodash.extend=assign,lodash.iteratee=callback,lodash.clone=clone,lodash.escapeRegExp=escapeRegExp,lodash.findLastIndex=findLastIndex,lodash.has=has,lodash.identity=identity,lodash.includes=includes,lodash.indexOf=indexOf,lodash.isArguments=isArguments,lodash.isArray=isArray,lodash.isEmpty=isEmpty,lodash.isFunction=isFunction,lodash.isNative=isNative,lodash.isNumber=isNumber,lodash.isObject=isObject,lodash.isPlainObject=isPlainObject,lodash.isString=isString,lodash.isTypedArray=isTypedArray,lodash.last=last,lodash.some=some,lodash.any=some,lodash.contains=includes,lodash.include=includes,lodash.VERSION=VERSION,freeExports&&freeModule?moduleExports?(freeModule.exports=lodash)._=lodash:freeExports._=lodash:root._=lodash\n}).call(this)}).call(this,\"undefined\"!=typeof global?global:\"undefined\"!=typeof self?self:\"undefined\"!=typeof window?window:{})},{}],\"/node_modules/jshint/src/jshint.js\":[function(_dereq_,module,exports){var _=_dereq_(\"../lodash\"),events=_dereq_(\"events\"),vars=_dereq_(\"./vars.js\"),messages=_dereq_(\"./messages.js\"),Lexer=_dereq_(\"./lex.js\").Lexer,reg=_dereq_(\"./reg.js\"),state=_dereq_(\"./state.js\").state,style=_dereq_(\"./style.js\"),options=_dereq_(\"./options.js\"),scopeManager=_dereq_(\"./scope-manager.js\"),JSHINT=function(){\"use strict\";function checkOption(name,t){return name=name.trim(),/^[+-]W\\d{3}$/g.test(name)?!0:-1!==options.validNames.indexOf(name)||\"jslint\"===t.type||_.has(options.removed,name)?!0:(error(\"E001\",t,name),!1)}function isString(obj){return\"[object String]\"===Object.prototype.toString.call(obj)}function isIdentifier(tkn,value){return tkn?tkn.identifier&&tkn.value===value?!0:!1:!1}function isReserved(token){if(!token.reserved)return!1;var meta=token.meta;if(meta&&meta.isFutureReservedWord&&state.inES5()){if(!meta.es5)return!1;if(meta.strictOnly&&!state.option.strict&&!state.isStrict())return!1;if(token.isProperty)return!1}return!0}function supplant(str,data){return str.replace(/\\{([^{}]*)\\}/g,function(a,b){var r=data[b];return\"string\"==typeof r||\"number\"==typeof r?r:a})}function combine(dest,src){Object.keys(src).forEach(function(name){_.has(JSHINT.blacklist,name)||(dest[name]=src[name])})}function processenforceall(){if(state.option.enforceall){for(var enforceopt in options.bool.enforcing)void 0!==state.option[enforceopt]||options.noenforceall[enforceopt]||(state.option[enforceopt]=!0);for(var relaxopt in options.bool.relaxing)void 0===state.option[relaxopt]&&(state.option[relaxopt]=!1)}}function assume(){processenforceall(),state.option.esversion||state.option.moz||(state.option.esversion=state.option.es3?3:state.option.esnext?6:5),state.inES5()&&combine(predefined,vars.ecmaIdentifiers[5]),state.inES6()&&combine(predefined,vars.ecmaIdentifiers[6]),state.option.module&&(state.option.strict===!0&&(state.option.strict=\"global\"),state.inES6()||warning(\"W134\",state.tokens.next,\"module\",6)),state.option.couch&&combine(predefined,vars.couch),state.option.qunit&&combine(predefined,vars.qunit),state.option.rhino&&combine(predefined,vars.rhino),state.option.shelljs&&(combine(predefined,vars.shelljs),combine(predefined,vars.node)),state.option.typed&&combine(predefined,vars.typed),state.option.phantom&&(combine(predefined,vars.phantom),state.option.strict===!0&&(state.option.strict=\"global\")),state.option.prototypejs&&combine(predefined,vars.prototypejs),state.option.node&&(combine(predefined,vars.node),combine(predefined,vars.typed),state.option.strict===!0&&(state.option.strict=\"global\")),state.option.devel&&combine(predefined,vars.devel),state.option.dojo&&combine(predefined,vars.dojo),state.option.browser&&(combine(predefined,vars.browser),combine(predefined,vars.typed)),state.option.browserify&&(combine(predefined,vars.browser),combine(predefined,vars.typed),combine(predefined,vars.browserify),state.option.strict===!0&&(state.option.strict=\"global\")),state.option.nonstandard&&combine(predefined,vars.nonstandard),state.option.jasmine&&combine(predefined,vars.jasmine),state.option.jquery&&combine(predefined,vars.jquery),state.option.mootools&&combine(predefined,vars.mootools),state.option.worker&&combine(predefined,vars.worker),state.option.wsh&&combine(predefined,vars.wsh),state.option.globalstrict&&state.option.strict!==!1&&(state.option.strict=\"global\"),state.option.yui&&combine(predefined,vars.yui),state.option.mocha&&combine(predefined,vars.mocha)}function quit(code,line,chr){var percentage=Math.floor(100*(line/state.lines.length)),message=messages.errors[code].desc;throw{name:\"JSHintError\",line:line,character:chr,message:message+\" (\"+percentage+\"% scanned).\",raw:message,code:code}}function removeIgnoredMessages(){var ignored=state.ignoredLines;_.isEmpty(ignored)||(JSHINT.errors=_.reject(JSHINT.errors,function(err){return ignored[err.line]}))}function warning(code,t,a,b,c,d){var ch,l,w,msg;if(/^W\\d{3}$/.test(code)){if(state.ignored[code])return;msg=messages.warnings[code]}else/E\\d{3}/.test(code)?msg=messages.errors[code]:/I\\d{3}/.test(code)&&(msg=messages.info[code]);return t=t||state.tokens.next||{},\"(end)\"===t.id&&(t=state.tokens.curr),l=t.line||0,ch=t.from||0,w={id:\"(error)\",raw:msg.desc,code:msg.code,evidence:state.lines[l-1]||\"\",line:l,character:ch,scope:JSHINT.scope,a:a,b:b,c:c,d:d},w.reason=supplant(msg.desc,w),JSHINT.errors.push(w),removeIgnoredMessages(),JSHINT.errors.length>=state.option.maxerr&&quit(\"E043\",l,ch),w}function warningAt(m,l,ch,a,b,c,d){return warning(m,{line:l,from:ch},a,b,c,d)}function error(m,t,a,b,c,d){warning(m,t,a,b,c,d)}function errorAt(m,l,ch,a,b,c,d){return error(m,{line:l,from:ch},a,b,c,d)}function addInternalSrc(elem,src){var i;return i={id:\"(internal)\",elem:elem,value:src},JSHINT.internals.push(i),i}function doOption(){var nt=state.tokens.next,body=nt.body.match(/(-\\s+)?[^\\s,:]+(?:\\s*:\\s*(-\\s+)?[^\\s,]+)?/g)||[],predef={};if(\"globals\"===nt.type){body.forEach(function(g,idx){g=g.split(\":\");var key=(g[0]||\"\").trim(),val=(g[1]||\"\").trim();if(\"-\"===key||!key.length){if(idx>0&&idx===body.length-1)return;return error(\"E002\",nt),void 0}\"-\"===key.charAt(0)?(key=key.slice(1),val=!1,JSHINT.blacklist[key]=key,delete predefined[key]):predef[key]=\"true\"===val}),combine(predefined,predef);for(var key in predef)_.has(predef,key)&&(declared[key]=nt)}\"exported\"===nt.type&&body.forEach(function(e,idx){if(!e.length){if(idx>0&&idx===body.length-1)return;return error(\"E002\",nt),void 0}state.funct[\"(scope)\"].addExported(e)}),\"members\"===nt.type&&(membersOnly=membersOnly||{},body.forEach(function(m){var ch1=m.charAt(0),ch2=m.charAt(m.length-1);ch1!==ch2||'\"'!==ch1&&\"'\"!==ch1||(m=m.substr(1,m.length-2).replace('\\\\\"','\"')),membersOnly[m]=!1}));var numvals=[\"maxstatements\",\"maxparams\",\"maxdepth\",\"maxcomplexity\",\"maxerr\",\"maxlen\",\"indent\"];(\"jshint\"===nt.type||\"jslint\"===nt.type)&&(body.forEach(function(g){g=g.split(\":\");var key=(g[0]||\"\").trim(),val=(g[1]||\"\").trim();if(checkOption(key,nt))if(numvals.indexOf(key)>=0)if(\"false\"!==val){if(val=+val,\"number\"!=typeof val||!isFinite(val)||0>=val||Math.floor(val)!==val)return error(\"E032\",nt,g[1].trim()),void 0;state.option[key]=val}else state.option[key]=\"indent\"===key?4:!1;else{if(\"validthis\"===key)return state.funct[\"(global)\"]?void error(\"E009\"):\"true\"!==val&&\"false\"!==val?void error(\"E002\",nt):(state.option.validthis=\"true\"===val,void 0);if(\"quotmark\"!==key)if(\"shadow\"!==key)if(\"unused\"!==key)if(\"latedef\"!==key)if(\"ignore\"!==key)if(\"strict\"!==key){\"module\"===key&&(hasParsedCode(state.funct)||error(\"E055\",state.tokens.next,\"module\"));var esversions={es3:3,es5:5,esnext:6};if(!_.has(esversions,key)){if(\"esversion\"===key){switch(val){case\"5\":state.inES5(!0)&&warning(\"I003\");case\"3\":case\"6\":state.option.moz=!1,state.option.esversion=+val;break;case\"2015\":state.option.moz=!1,state.option.esversion=6;break;default:error(\"E002\",nt)}return hasParsedCode(state.funct)||error(\"E055\",state.tokens.next,\"esversion\"),void 0}var match=/^([+-])(W\\d{3})$/g.exec(key);if(match)return state.ignored[match[2]]=\"-\"===match[1],void 0;var tn;return\"true\"===val||\"false\"===val?(\"jslint\"===nt.type?(tn=options.renamed[key]||key,state.option[tn]=\"true\"===val,void 0!==options.inverted[tn]&&(state.option[tn]=!state.option[tn])):state.option[key]=\"true\"===val,\"newcap\"===key&&(state.option[\"(explicitNewcap)\"]=!0),void 0):(error(\"E002\",nt),void 0)}switch(val){case\"true\":state.option.moz=!1,state.option.esversion=esversions[key];break;case\"false\":state.option.moz||(state.option.esversion=5);break;default:error(\"E002\",nt)}}else switch(val){case\"true\":state.option.strict=!0;break;case\"false\":state.option.strict=!1;break;case\"func\":case\"global\":case\"implied\":state.option.strict=val;break;default:error(\"E002\",nt)}else switch(val){case\"line\":state.ignoredLines[nt.line]=!0,removeIgnoredMessages();break;default:error(\"E002\",nt)}else switch(val){case\"true\":state.option.latedef=!0;break;case\"false\":state.option.latedef=!1;break;case\"nofunc\":state.option.latedef=\"nofunc\";break;default:error(\"E002\",nt)}else switch(val){case\"true\":state.option.unused=!0;break;case\"false\":state.option.unused=!1;break;case\"vars\":case\"strict\":state.option.unused=val;break;default:error(\"E002\",nt)}else switch(val){case\"true\":state.option.shadow=!0;break;case\"outer\":state.option.shadow=\"outer\";break;case\"false\":case\"inner\":state.option.shadow=\"inner\";break;default:error(\"E002\",nt)}else switch(val){case\"true\":case\"false\":state.option.quotmark=\"true\"===val;break;case\"double\":case\"single\":state.option.quotmark=val;break;default:error(\"E002\",nt)}}}),assume())}function peek(p){var t,i=p||0,j=lookahead.length;if(j>i)return lookahead[i];for(;i>=j;)t=lookahead[j],t||(t=lookahead[j]=lex.token()),j+=1;return t||\"(end)\"!==state.tokens.next.id?t:state.tokens.next}function peekIgnoreEOL(){var t,i=0;do t=peek(i++);while(\"(endline)\"===t.id);return t}function advance(id,t){switch(state.tokens.curr.id){case\"(number)\":\".\"===state.tokens.next.id&&warning(\"W005\",state.tokens.curr);break;case\"-\":(\"-\"===state.tokens.next.id||\"--\"===state.tokens.next.id)&&warning(\"W006\");break;case\"+\":(\"+\"===state.tokens.next.id||\"++\"===state.tokens.next.id)&&warning(\"W007\")}for(id&&state.tokens.next.id!==id&&(t?\"(end)\"===state.tokens.next.id?error(\"E019\",t,t.id):error(\"E020\",state.tokens.next,id,t.id,t.line,state.tokens.next.value):(\"(identifier)\"!==state.tokens.next.type||state.tokens.next.value!==id)&&warning(\"W116\",state.tokens.next,id,state.tokens.next.value)),state.tokens.prev=state.tokens.curr,state.tokens.curr=state.tokens.next;;){if(state.tokens.next=lookahead.shift()||lex.token(),state.tokens.next||quit(\"E041\",state.tokens.curr.line),\"(end)\"===state.tokens.next.id||\"(error)\"===state.tokens.next.id)return;if(state.tokens.next.check&&state.tokens.next.check(),state.tokens.next.isSpecial)\"falls through\"===state.tokens.next.type?state.tokens.curr.caseFallsThrough=!0:doOption();else if(\"(endline)\"!==state.tokens.next.id)break}}function isInfix(token){return token.infix||!token.identifier&&!token.template&&!!token.led}function isEndOfExpr(){var curr=state.tokens.curr,next=state.tokens.next;return\";\"===next.id||\"}\"===next.id||\":\"===next.id?!0:isInfix(next)===isInfix(curr)||\"yield\"===curr.id&&state.inMoz()?curr.line!==startLine(next):!1}function isBeginOfExpr(prev){return!prev.left&&\"unary\"!==prev.arity}function expression(rbp,initial){var left,isArray=!1,isObject=!1,isLetExpr=!1;state.nameStack.push(),initial||\"let\"!==state.tokens.next.value||\"(\"!==peek(0).value||(state.inMoz()||warning(\"W118\",state.tokens.next,\"let expressions\"),isLetExpr=!0,state.funct[\"(scope)\"].stack(),advance(\"let\"),advance(\"(\"),state.tokens.prev.fud(),advance(\")\")),\"(end)\"===state.tokens.next.id&&error(\"E006\",state.tokens.curr);var isDangerous=state.option.asi&&state.tokens.prev.line!==startLine(state.tokens.curr)&&_.contains([\"]\",\")\"],state.tokens.prev.id)&&_.contains([\"[\",\"(\"],state.tokens.curr.id);if(isDangerous&&warning(\"W014\",state.tokens.curr,state.tokens.curr.id),advance(),initial&&(state.funct[\"(verb)\"]=state.tokens.curr.value,state.tokens.curr.beginsStmt=!0),initial===!0&&state.tokens.curr.fud)left=state.tokens.curr.fud();else for(state.tokens.curr.nud?left=state.tokens.curr.nud():error(\"E030\",state.tokens.curr,state.tokens.curr.id);(state.tokens.next.lbp>rbp||\"(template)\"===state.tokens.next.type)&&!isEndOfExpr();)isArray=\"Array\"===state.tokens.curr.value,isObject=\"Object\"===state.tokens.curr.value,left&&(left.value||left.first&&left.first.value)&&(\"new\"!==left.value||left.first&&left.first.value&&\".\"===left.first.value)&&(isArray=!1,left.value!==state.tokens.curr.value&&(isObject=!1)),advance(),isArray&&\"(\"===state.tokens.curr.id&&\")\"===state.tokens.next.id&&warning(\"W009\",state.tokens.curr),isObject&&\"(\"===state.tokens.curr.id&&\")\"===state.tokens.next.id&&warning(\"W010\",state.tokens.curr),left&&state.tokens.curr.led?left=state.tokens.curr.led(left):error(\"E033\",state.tokens.curr,state.tokens.curr.id);return isLetExpr&&state.funct[\"(scope)\"].unstack(),state.nameStack.pop(),left}function startLine(token){return token.startLine||token.line}function nobreaknonadjacent(left,right){left=left||state.tokens.curr,right=right||state.tokens.next,state.option.laxbreak||left.line===startLine(right)||warning(\"W014\",right,right.value)}function nolinebreak(t){t=t||state.tokens.curr,t.line!==startLine(state.tokens.next)&&warning(\"E022\",t,t.value)}function nobreakcomma(left,right){left.line!==startLine(right)&&(state.option.laxcomma||(comma.first&&(warning(\"I001\"),comma.first=!1),warning(\"W014\",left,right.value)))}function comma(opts){if(opts=opts||{},opts.peek?nobreakcomma(state.tokens.prev,state.tokens.curr):(nobreakcomma(state.tokens.curr,state.tokens.next),advance(\",\")),state.tokens.next.identifier&&(!opts.property||!state.inES5()))switch(state.tokens.next.value){case\"break\":case\"case\":case\"catch\":case\"continue\":case\"default\":case\"do\":case\"else\":case\"finally\":case\"for\":case\"if\":case\"in\":case\"instanceof\":case\"return\":case\"switch\":case\"throw\":case\"try\":case\"var\":case\"let\":case\"while\":case\"with\":return error(\"E024\",state.tokens.next,state.tokens.next.value),!1}if(\"(punctuator)\"===state.tokens.next.type)switch(state.tokens.next.value){case\"}\":case\"]\":case\",\":if(opts.allowTrailing)return!0;case\")\":return error(\"E024\",state.tokens.next,state.tokens.next.value),!1}return!0}function symbol(s,p){var x=state.syntax[s];return x&&\"object\"==typeof x||(state.syntax[s]=x={id:s,lbp:p,value:s}),x}function delim(s){var x=symbol(s,0);return x.delim=!0,x}function stmt(s,f){var x=delim(s);return x.identifier=x.reserved=!0,x.fud=f,x}function blockstmt(s,f){var x=stmt(s,f);return x.block=!0,x}function reserveName(x){var c=x.id.charAt(0);return(c>=\"a\"&&\"z\">=c||c>=\"A\"&&\"Z\">=c)&&(x.identifier=x.reserved=!0),x}function prefix(s,f){var x=symbol(s,150);return reserveName(x),x.nud=\"function\"==typeof f?f:function(){return this.arity=\"unary\",this.right=expression(150),(\"++\"===this.id||\"--\"===this.id)&&(state.option.plusplus?warning(\"W016\",this,this.id):!this.right||this.right.identifier&&!isReserved(this.right)||\".\"===this.right.id||\"[\"===this.right.id||warning(\"W017\",this),this.right&&this.right.isMetaProperty?error(\"E031\",this):this.right&&this.right.identifier&&state.funct[\"(scope)\"].block.modify(this.right.value,this)),this},x}function type(s,f){var x=delim(s);return x.type=s,x.nud=f,x}function reserve(name,func){var x=type(name,func);return x.identifier=!0,x.reserved=!0,x}function FutureReservedWord(name,meta){var x=type(name,meta&&meta.nud||function(){return this});return meta=meta||{},meta.isFutureReservedWord=!0,x.value=name,x.identifier=!0,x.reserved=!0,x.meta=meta,x}function reservevar(s,v){return reserve(s,function(){return\"function\"==typeof v&&v(this),this})}function infix(s,f,p,w){var x=symbol(s,p);return reserveName(x),x.infix=!0,x.led=function(left){return w||nobreaknonadjacent(state.tokens.prev,state.tokens.curr),\"in\"!==s&&\"instanceof\"!==s||\"!\"!==left.id||warning(\"W018\",left,\"!\"),\"function\"==typeof f?f(left,this):(this.left=left,this.right=expression(p),this)},x}function application(s){var x=symbol(s,42);return x.led=function(left){return nobreaknonadjacent(state.tokens.prev,state.tokens.curr),this.left=left,this.right=doFunction({type:\"arrow\",loneArg:left}),this},x}function relation(s,f){var x=symbol(s,100);return x.led=function(left){nobreaknonadjacent(state.tokens.prev,state.tokens.curr),this.left=left;var right=this.right=expression(100);return isIdentifier(left,\"NaN\")||isIdentifier(right,\"NaN\")?warning(\"W019\",this):f&&f.apply(this,[left,right]),left&&right||quit(\"E041\",state.tokens.curr.line),\"!\"===left.id&&warning(\"W018\",left,\"!\"),\"!\"===right.id&&warning(\"W018\",right,\"!\"),this},x}function isPoorRelation(node){return node&&(\"(number)\"===node.type&&0===+node.value||\"(string)\"===node.type&&\"\"===node.value||\"null\"===node.type&&!state.option.eqnull||\"true\"===node.type||\"false\"===node.type||\"undefined\"===node.type)}function isTypoTypeof(left,right,state){var values;return state.option.notypeof?!1:left&&right?(values=state.inES6()?typeofValues.es6:typeofValues.es3,\"(identifier)\"===right.type&&\"typeof\"===right.value&&\"(string)\"===left.type?!_.contains(values,left.value):!1):!1}function isGlobalEval(left,state){var isGlobal=!1;return\"this\"===left.type&&null===state.funct[\"(context)\"]?isGlobal=!0:\"(identifier)\"===left.type&&(state.option.node&&\"global\"===left.value?isGlobal=!0:!state.option.browser||\"window\"!==left.value&&\"document\"!==left.value||(isGlobal=!0)),isGlobal}function findNativePrototype(left){function walkPrototype(obj){return\"object\"==typeof obj?\"prototype\"===obj.right?obj:walkPrototype(obj.left):void 0}function walkNative(obj){for(;!obj.identifier&&\"object\"==typeof obj.left;)obj=obj.left;return obj.identifier&&natives.indexOf(obj.value)>=0?obj.value:void 0}var natives=[\"Array\",\"ArrayBuffer\",\"Boolean\",\"Collator\",\"DataView\",\"Date\",\"DateTimeFormat\",\"Error\",\"EvalError\",\"Float32Array\",\"Float64Array\",\"Function\",\"Infinity\",\"Intl\",\"Int16Array\",\"Int32Array\",\"Int8Array\",\"Iterator\",\"Number\",\"NumberFormat\",\"Object\",\"RangeError\",\"ReferenceError\",\"RegExp\",\"StopIteration\",\"String\",\"SyntaxError\",\"TypeError\",\"Uint16Array\",\"Uint32Array\",\"Uint8Array\",\"Uint8ClampedArray\",\"URIError\"],prototype=walkPrototype(left);return prototype?walkNative(prototype):void 0}function checkLeftSideAssign(left,assignToken,options){var allowDestructuring=options&&options.allowDestructuring;if(assignToken=assignToken||left,state.option.freeze){var nativeObject=findNativePrototype(left);nativeObject&&warning(\"W121\",left,nativeObject)}return left.identifier&&!left.isMetaProperty&&state.funct[\"(scope)\"].block.reassign(left.value,left),\".\"===left.id?((!left.left||\"arguments\"===left.left.value&&!state.isStrict())&&warning(\"E031\",assignToken),state.nameStack.set(state.tokens.prev),!0):\"{\"===left.id||\"[\"===left.id?(allowDestructuring&&state.tokens.curr.left.destructAssign?state.tokens.curr.left.destructAssign.forEach(function(t){t.id&&state.funct[\"(scope)\"].block.modify(t.id,t.token)}):\"{\"!==left.id&&left.left?\"arguments\"!==left.left.value||state.isStrict()||warning(\"E031\",assignToken):warning(\"E031\",assignToken),\"[\"===left.id&&state.nameStack.set(left.right),!0):left.isMetaProperty?(error(\"E031\",assignToken),!0):left.identifier&&!isReserved(left)?(\"exception\"===state.funct[\"(scope)\"].labeltype(left.value)&&warning(\"W022\",left),state.nameStack.set(left),!0):(left===state.syntax[\"function\"]&&warning(\"W023\",state.tokens.curr),!1)}function assignop(s,f,p){var x=infix(s,\"function\"==typeof f?f:function(left,that){return that.left=left,left&&checkLeftSideAssign(left,that,{allowDestructuring:!0})?(that.right=expression(10),that):(error(\"E031\",that),void 0)},p);return x.exps=!0,x.assign=!0,x}function bitwise(s,f,p){var x=symbol(s,p);return reserveName(x),x.led=\"function\"==typeof f?f:function(left){return state.option.bitwise&&warning(\"W016\",this,this.id),this.left=left,this.right=expression(p),this},x}function bitwiseassignop(s){return assignop(s,function(left,that){return state.option.bitwise&&warning(\"W016\",that,that.id),left&&checkLeftSideAssign(left,that)?(that.right=expression(10),that):(error(\"E031\",that),void 0)},20)}function suffix(s){var x=symbol(s,150);return x.led=function(left){return state.option.plusplus?warning(\"W016\",this,this.id):left.identifier&&!isReserved(left)||\".\"===left.id||\"[\"===left.id||warning(\"W017\",this),left.isMetaProperty?error(\"E031\",this):left&&left.identifier&&state.funct[\"(scope)\"].block.modify(left.value,left),this.left=left,this},x}function optionalidentifier(fnparam,prop,preserve){if(state.tokens.next.identifier){preserve||advance();var curr=state.tokens.curr,val=state.tokens.curr.value;return isReserved(curr)?prop&&state.inES5()?val:fnparam&&\"undefined\"===val?val:(warning(\"W024\",state.tokens.curr,state.tokens.curr.id),val):val}}function identifier(fnparam,prop){var i=optionalidentifier(fnparam,prop,!1);if(i)return i;if(\"...\"===state.tokens.next.value){if(state.inES6(!0)||warning(\"W119\",state.tokens.next,\"spread/rest operator\",\"6\"),advance(),checkPunctuator(state.tokens.next,\"...\"))for(warning(\"E024\",state.tokens.next,\"...\");checkPunctuator(state.tokens.next,\"...\");)advance();return state.tokens.next.identifier?identifier(fnparam,prop):(warning(\"E024\",state.tokens.curr,\"...\"),void 0)}error(\"E030\",state.tokens.next,state.tokens.next.value),\";\"!==state.tokens.next.id&&advance()}function reachable(controlToken){var t,i=0;if(\";\"===state.tokens.next.id&&!controlToken.inBracelessBlock)for(;;){do t=peek(i),i+=1;while(\"(end)\"!==t.id&&\"(comment)\"===t.id);if(t.reach)return;if(\"(endline)\"!==t.id){if(\"function\"===t.id){state.option.latedef===!0&&warning(\"W026\",t);break}warning(\"W027\",t,t.value,controlToken.value);break}}}function parseFinalSemicolon(){if(\";\"!==state.tokens.next.id){if(state.tokens.next.isUnclosed)return advance();var sameLine=startLine(state.tokens.next)===state.tokens.curr.line&&\"(end)\"!==state.tokens.next.id,blockEnd=checkPunctuator(state.tokens.next,\"}\");sameLine&&!blockEnd?errorAt(\"E058\",state.tokens.curr.line,state.tokens.curr.character):state.option.asi||(blockEnd&&!state.option.lastsemic||!sameLine)&&warningAt(\"W033\",state.tokens.curr.line,state.tokens.curr.character)}else advance(\";\")}function statement(){var r,i=indent,t=state.tokens.next,hasOwnScope=!1;if(\";\"===t.id)return advance(\";\"),void 0;var res=isReserved(t);if(res&&t.meta&&t.meta.isFutureReservedWord&&\":\"===peek().id&&(warning(\"W024\",t,t.id),res=!1),t.identifier&&!res&&\":\"===peek().id&&(advance(),advance(\":\"),hasOwnScope=!0,state.funct[\"(scope)\"].stack(),state.funct[\"(scope)\"].block.addBreakLabel(t.value,{token:state.tokens.curr}),state.tokens.next.labelled||\"{\"===state.tokens.next.value||warning(\"W028\",state.tokens.next,t.value,state.tokens.next.value),state.tokens.next.label=t.value,t=state.tokens.next),\"{\"===t.id){var iscase=\"case\"===state.funct[\"(verb)\"]&&\":\"===state.tokens.curr.value;return block(!0,!0,!1,!1,iscase),void 0}return r=expression(0,!0),!r||r.identifier&&\"function\"===r.value||\"(punctuator)\"===r.type&&r.left&&r.left.identifier&&\"function\"===r.left.value||state.isStrict()||\"global\"!==state.option.strict||warning(\"E007\"),t.block||(state.option.expr||r&&r.exps?state.option.nonew&&r&&r.left&&\"(\"===r.id&&\"new\"===r.left.id&&warning(\"W031\",t):warning(\"W030\",state.tokens.curr),parseFinalSemicolon()),indent=i,hasOwnScope&&state.funct[\"(scope)\"].unstack(),r}function statements(){for(var p,a=[];!state.tokens.next.reach&&\"(end)\"!==state.tokens.next.id;)\";\"===state.tokens.next.id?(p=peek(),(!p||\"(\"!==p.id&&\"[\"!==p.id)&&warning(\"W032\"),advance(\";\")):a.push(statement());return a}function directives(){for(var i,p,pn;\"(string)\"===state.tokens.next.id;){if(p=peek(0),\"(endline)\"===p.id){i=1;do pn=peek(i++);while(\"(endline)\"===pn.id);if(\";\"===pn.id)p=pn;else{if(\"[\"===pn.value||\".\"===pn.value)break;state.option.asi&&\"(\"!==pn.value||warning(\"W033\",state.tokens.next)}}else{if(\".\"===p.id||\"[\"===p.id)break;\";\"!==p.id&&warning(\"W033\",p)}advance();var directive=state.tokens.curr.value;(state.directive[directive]||\"use strict\"===directive&&\"implied\"===state.option.strict)&&warning(\"W034\",state.tokens.curr,directive),state.directive[directive]=!0,\";\"===p.id&&advance(\";\")}state.isStrict()&&(state.option[\"(explicitNewcap)\"]||(state.option.newcap=!0),state.option.undef=!0)}function block(ordinary,stmt,isfunc,isfatarrow,iscase){var a,m,t,line,d,b=inblock,old_indent=indent;inblock=ordinary,t=state.tokens.next;var metrics=state.funct[\"(metrics)\"];if(metrics.nestedBlockDepth+=1,metrics.verifyMaxNestedBlockDepthPerFunction(),\"{\"===state.tokens.next.id){if(advance(\"{\"),state.funct[\"(scope)\"].stack(),line=state.tokens.curr.line,\"}\"!==state.tokens.next.id){for(indent+=state.option.indent;!ordinary&&state.tokens.next.from>indent;)indent+=state.option.indent;if(isfunc){m={};for(d in state.directive)_.has(state.directive,d)&&(m[d]=state.directive[d]);directives(),state.option.strict&&state.funct[\"(context)\"][\"(global)\"]&&(m[\"use strict\"]||state.isStrict()||warning(\"E007\"))}a=statements(),metrics.statementCount+=a.length,indent-=state.option.indent}advance(\"}\",t),isfunc&&(state.funct[\"(scope)\"].validateParams(),m&&(state.directive=m)),state.funct[\"(scope)\"].unstack(),indent=old_indent}else if(ordinary)state.funct[\"(noblockscopedvar)\"]=\"for\"!==state.tokens.next.id,state.funct[\"(scope)\"].stack(),(!stmt||state.option.curly)&&warning(\"W116\",state.tokens.next,\"{\",state.tokens.next.value),state.tokens.next.inBracelessBlock=!0,indent+=state.option.indent,a=[statement()],indent-=state.option.indent,state.funct[\"(scope)\"].unstack(),delete state.funct[\"(noblockscopedvar)\"];else if(isfunc){if(state.funct[\"(scope)\"].stack(),m={},!stmt||isfatarrow||state.inMoz()||error(\"W118\",state.tokens.curr,\"function closure expressions\"),!stmt)for(d in state.directive)_.has(state.directive,d)&&(m[d]=state.directive[d]);expression(10),state.option.strict&&state.funct[\"(context)\"][\"(global)\"]&&(m[\"use strict\"]||state.isStrict()||warning(\"E007\")),state.funct[\"(scope)\"].unstack()}else error(\"E021\",state.tokens.next,\"{\",state.tokens.next.value);switch(state.funct[\"(verb)\"]){case\"break\":case\"continue\":case\"return\":case\"throw\":if(iscase)break;default:state.funct[\"(verb)\"]=null}return inblock=b,!ordinary||!state.option.noempty||a&&0!==a.length||warning(\"W035\",state.tokens.prev),metrics.nestedBlockDepth-=1,a}function countMember(m){membersOnly&&\"boolean\"!=typeof membersOnly[m]&&warning(\"W036\",state.tokens.curr,m),\"number\"==typeof member[m]?member[m]+=1:member[m]=1}function comprehensiveArrayExpression(){var res={};res.exps=!0,state.funct[\"(comparray)\"].stack();var reversed=!1;return\"for\"!==state.tokens.next.value&&(reversed=!0,state.inMoz()||warning(\"W116\",state.tokens.next,\"for\",state.tokens.next.value),state.funct[\"(comparray)\"].setState(\"use\"),res.right=expression(10)),advance(\"for\"),\"each\"===state.tokens.next.value&&(advance(\"each\"),state.inMoz()||warning(\"W118\",state.tokens.curr,\"for each\")),advance(\"(\"),state.funct[\"(comparray)\"].setState(\"define\"),res.left=expression(130),_.contains([\"in\",\"of\"],state.tokens.next.value)?advance():error(\"E045\",state.tokens.curr),state.funct[\"(comparray)\"].setState(\"generate\"),expression(10),advance(\")\"),\"if\"===state.tokens.next.value&&(advance(\"if\"),advance(\"(\"),state.funct[\"(comparray)\"].setState(\"filter\"),res.filter=expression(10),advance(\")\")),reversed||(state.funct[\"(comparray)\"].setState(\"use\"),res.right=expression(10)),advance(\"]\"),state.funct[\"(comparray)\"].unstack(),res}function isMethod(){return state.funct[\"(statement)\"]&&\"class\"===state.funct[\"(statement)\"].type||state.funct[\"(context)\"]&&\"class\"===state.funct[\"(context)\"][\"(verb)\"]}function isPropertyName(token){return token.identifier||\"(string)\"===token.id||\"(number)\"===token.id}function propertyName(preserveOrToken){var id,preserve=!0;return\"object\"==typeof preserveOrToken?id=preserveOrToken:(preserve=preserveOrToken,id=optionalidentifier(!1,!0,preserve)),id?\"object\"==typeof id&&(\"(string)\"===id.id||\"(identifier)\"===id.id?id=id.value:\"(number)\"===id.id&&(id=\"\"+id.value)):\"(string)\"===state.tokens.next.id?(id=state.tokens.next.value,preserve||advance()):\"(number)\"===state.tokens.next.id&&(id=\"\"+state.tokens.next.value,preserve||advance()),\"hasOwnProperty\"===id&&warning(\"W001\"),id}function functionparams(options){function addParam(addParamArgs){state.funct[\"(scope)\"].addParam.apply(state.funct[\"(scope)\"],addParamArgs)}var next,ident,t,paramsIds=[],tokens=[],pastDefault=!1,pastRest=!1,arity=0,loneArg=options&&options.loneArg;if(loneArg&&loneArg.identifier===!0)return state.funct[\"(scope)\"].addParam(loneArg.value,loneArg),{arity:1,params:[loneArg.value]};if(next=state.tokens.next,options&&options.parsedOpening||advance(\"(\"),\")\"===state.tokens.next.id)return advance(\")\"),void 0;for(;;){arity++;var currentParams=[];if(_.contains([\"{\",\"[\"],state.tokens.next.id)){tokens=destructuringPattern();for(t in tokens)t=tokens[t],t.id&&(paramsIds.push(t.id),currentParams.push([t.id,t.token]))}else if(checkPunctuator(state.tokens.next,\"...\")&&(pastRest=!0),ident=identifier(!0))paramsIds.push(ident),currentParams.push([ident,state.tokens.curr]);else for(;!checkPunctuators(state.tokens.next,[\",\",\")\"]);)advance();if(pastDefault&&\"=\"!==state.tokens.next.id&&error(\"W138\",state.tokens.current),\"=\"===state.tokens.next.id&&(state.inES6()||warning(\"W119\",state.tokens.next,\"default parameters\",\"6\"),advance(\"=\"),pastDefault=!0,expression(10)),currentParams.forEach(addParam),\",\"!==state.tokens.next.id)return advance(\")\",next),{arity:arity,params:paramsIds};pastRest&&warning(\"W131\",state.tokens.next),comma()}}function functor(name,token,overwrites){var funct={\"(name)\":name,\"(breakage)\":0,\"(loopage)\":0,\"(tokens)\":{},\"(properties)\":{},\"(catch)\":!1,\"(global)\":!1,\"(line)\":null,\"(character)\":null,\"(metrics)\":null,\"(statement)\":null,\"(context)\":null,\"(scope)\":null,\"(comparray)\":null,\"(generator)\":null,\"(arrow)\":null,\"(params)\":null};return token&&_.extend(funct,{\"(line)\":token.line,\"(character)\":token.character,\"(metrics)\":createMetrics(token)}),_.extend(funct,overwrites),funct[\"(context)\"]&&(funct[\"(scope)\"]=funct[\"(context)\"][\"(scope)\"],funct[\"(comparray)\"]=funct[\"(context)\"][\"(comparray)\"]),funct}function isFunctor(token){return\"(scope)\"in token}function hasParsedCode(funct){return funct[\"(global)\"]&&!funct[\"(verb)\"]}function doTemplateLiteral(left){function end(){if(state.tokens.curr.template&&state.tokens.curr.tail&&state.tokens.curr.context===ctx)return!0;var complete=state.tokens.next.template&&state.tokens.next.tail&&state.tokens.next.context===ctx;return complete&&advance(),complete||state.tokens.next.isUnclosed}var ctx=this.context,noSubst=this.noSubst,depth=this.depth;if(!noSubst)for(;!end();)!state.tokens.next.template||state.tokens.next.depth>depth?expression(0):advance();return{id:\"(template)\",type:\"(template)\",tag:left}}function doFunction(options){var f,token,name,statement,classExprBinding,isGenerator,isArrow,ignoreLoopFunc,oldOption=state.option,oldIgnored=state.ignored;options&&(name=options.name,statement=options.statement,classExprBinding=options.classExprBinding,isGenerator=\"generator\"===options.type,isArrow=\"arrow\"===options.type,ignoreLoopFunc=options.ignoreLoopFunc),state.option=Object.create(state.option),state.ignored=Object.create(state.ignored),state.funct=functor(name||state.nameStack.infer(),state.tokens.next,{\"(statement)\":statement,\"(context)\":state.funct,\"(arrow)\":isArrow,\"(generator)\":isGenerator}),f=state.funct,token=state.tokens.curr,token.funct=state.funct,functions.push(state.funct),state.funct[\"(scope)\"].stack(\"functionouter\");var internallyAccessibleName=name||classExprBinding;internallyAccessibleName&&state.funct[\"(scope)\"].block.add(internallyAccessibleName,classExprBinding?\"class\":\"function\",state.tokens.curr,!1),state.funct[\"(scope)\"].stack(\"functionparams\");var paramsInfo=functionparams(options);return paramsInfo?(state.funct[\"(params)\"]=paramsInfo.params,state.funct[\"(metrics)\"].arity=paramsInfo.arity,state.funct[\"(metrics)\"].verifyMaxParametersPerFunction()):state.funct[\"(metrics)\"].arity=0,isArrow&&(state.inES6(!0)||warning(\"W119\",state.tokens.curr,\"arrow function syntax (=>)\",\"6\"),options.loneArg||advance(\"=>\")),block(!1,!0,!0,isArrow),!state.option.noyield&&isGenerator&&\"yielded\"!==state.funct[\"(generator)\"]&&warning(\"W124\",state.tokens.curr),state.funct[\"(metrics)\"].verifyMaxStatementsPerFunction(),state.funct[\"(metrics)\"].verifyMaxComplexityPerFunction(),state.funct[\"(unusedOption)\"]=state.option.unused,state.option=oldOption,state.ignored=oldIgnored,state.funct[\"(last)\"]=state.tokens.curr.line,state.funct[\"(lastcharacter)\"]=state.tokens.curr.character,state.funct[\"(scope)\"].unstack(),state.funct[\"(scope)\"].unstack(),state.funct=state.funct[\"(context)\"],ignoreLoopFunc||state.option.loopfunc||!state.funct[\"(loopage)\"]||f[\"(isCapturing)\"]&&warning(\"W083\",token),f}function createMetrics(functionStartToken){return{statementCount:0,nestedBlockDepth:-1,ComplexityCount:1,arity:0,verifyMaxStatementsPerFunction:function(){state.option.maxstatements&&this.statementCount>state.option.maxstatements&&warning(\"W071\",functionStartToken,this.statementCount)\n},verifyMaxParametersPerFunction:function(){_.isNumber(state.option.maxparams)&&this.arity>state.option.maxparams&&warning(\"W072\",functionStartToken,this.arity)},verifyMaxNestedBlockDepthPerFunction:function(){state.option.maxdepth&&this.nestedBlockDepth>0&&this.nestedBlockDepth===state.option.maxdepth+1&&warning(\"W073\",null,this.nestedBlockDepth)},verifyMaxComplexityPerFunction:function(){var max=state.option.maxcomplexity,cc=this.ComplexityCount;max&&cc>max&&warning(\"W074\",functionStartToken,cc)}}}function increaseComplexityCount(){state.funct[\"(metrics)\"].ComplexityCount+=1}function checkCondAssignment(expr){var id,paren;switch(expr&&(id=expr.id,paren=expr.paren,\",\"===id&&(expr=expr.exprs[expr.exprs.length-1])&&(id=expr.id,paren=paren||expr.paren)),id){case\"=\":case\"+=\":case\"-=\":case\"*=\":case\"%=\":case\"&=\":case\"|=\":case\"^=\":case\"/=\":paren||state.option.boss||warning(\"W084\")}}function checkProperties(props){if(state.inES5())for(var name in props)props[name]&&props[name].setterToken&&!props[name].getterToken&&warning(\"W078\",props[name].setterToken)}function metaProperty(name,c){if(checkPunctuator(state.tokens.next,\".\")){var left=state.tokens.curr.id;advance(\".\");var id=identifier();return state.tokens.curr.isMetaProperty=!0,name!==id?error(\"E057\",state.tokens.prev,left,id):c(),state.tokens.curr}}function destructuringPattern(options){var isAssignment=options&&options.assignment;return state.inES6()||warning(\"W104\",state.tokens.curr,isAssignment?\"destructuring assignment\":\"destructuring binding\",\"6\"),destructuringPatternRecursive(options)}function destructuringPatternRecursive(options){var ids,identifiers=[],openingParsed=options&&options.openingParsed,isAssignment=options&&options.assignment,recursiveOptions=isAssignment?{assignment:isAssignment}:null,firstToken=openingParsed?state.tokens.curr:state.tokens.next,nextInnerDE=function(){var ident;if(checkPunctuators(state.tokens.next,[\"[\",\"{\"])){ids=destructuringPatternRecursive(recursiveOptions);for(var id in ids)id=ids[id],identifiers.push({id:id.id,token:id.token})}else if(checkPunctuator(state.tokens.next,\",\"))identifiers.push({id:null,token:state.tokens.curr});else{if(!checkPunctuator(state.tokens.next,\"(\")){var is_rest=checkPunctuator(state.tokens.next,\"...\");if(isAssignment){var identifierToken=is_rest?peek(0):state.tokens.next;identifierToken.identifier||warning(\"E030\",identifierToken,identifierToken.value);var assignTarget=expression(155);assignTarget&&(checkLeftSideAssign(assignTarget),assignTarget.identifier&&(ident=assignTarget.value))}else ident=identifier();return ident&&identifiers.push({id:ident,token:state.tokens.curr}),is_rest}advance(\"(\"),nextInnerDE(),advance(\")\")}return!1},assignmentProperty=function(){var id;checkPunctuator(state.tokens.next,\"[\")?(advance(\"[\"),expression(10),advance(\"]\"),advance(\":\"),nextInnerDE()):\"(string)\"===state.tokens.next.id||\"(number)\"===state.tokens.next.id?(advance(),advance(\":\"),nextInnerDE()):(id=identifier(),checkPunctuator(state.tokens.next,\":\")?(advance(\":\"),nextInnerDE()):id&&(isAssignment&&checkLeftSideAssign(state.tokens.curr),identifiers.push({id:id,token:state.tokens.curr})))};if(checkPunctuator(firstToken,\"[\")){openingParsed||advance(\"[\"),checkPunctuator(state.tokens.next,\"]\")&&warning(\"W137\",state.tokens.curr);for(var element_after_rest=!1;!checkPunctuator(state.tokens.next,\"]\");)nextInnerDE()&&!element_after_rest&&checkPunctuator(state.tokens.next,\",\")&&(warning(\"W130\",state.tokens.next),element_after_rest=!0),checkPunctuator(state.tokens.next,\"=\")&&(checkPunctuator(state.tokens.prev,\"...\")?advance(\"]\"):advance(\"=\"),\"undefined\"===state.tokens.next.id&&warning(\"W080\",state.tokens.prev,state.tokens.prev.value),expression(10)),checkPunctuator(state.tokens.next,\"]\")||advance(\",\");advance(\"]\")}else if(checkPunctuator(firstToken,\"{\")){for(openingParsed||advance(\"{\"),checkPunctuator(state.tokens.next,\"}\")&&warning(\"W137\",state.tokens.curr);!checkPunctuator(state.tokens.next,\"}\")&&(assignmentProperty(),checkPunctuator(state.tokens.next,\"=\")&&(advance(\"=\"),\"undefined\"===state.tokens.next.id&&warning(\"W080\",state.tokens.prev,state.tokens.prev.value),expression(10)),checkPunctuator(state.tokens.next,\"}\")||(advance(\",\"),!checkPunctuator(state.tokens.next,\"}\"))););advance(\"}\")}return identifiers}function destructuringPatternMatch(tokens,value){var first=value.first;first&&_.zip(tokens,Array.isArray(first)?first:[first]).forEach(function(val){var token=val[0],value=val[1];token&&value?token.first=value:token&&token.first&&!value&&warning(\"W080\",token.first,token.first.value)})}function blockVariableStatement(type,statement,context){var tokens,lone,value,letblock,prefix=context&&context.prefix,inexport=context&&context.inexport,isLet=\"let\"===type,isConst=\"const\"===type;for(state.inES6()||warning(\"W104\",state.tokens.curr,type,\"6\"),isLet&&\"(\"===state.tokens.next.value?(state.inMoz()||warning(\"W118\",state.tokens.next,\"let block\"),advance(\"(\"),state.funct[\"(scope)\"].stack(),letblock=!0):state.funct[\"(noblockscopedvar)\"]&&error(\"E048\",state.tokens.curr,isConst?\"Const\":\"Let\"),statement.first=[];;){var names=[];_.contains([\"{\",\"[\"],state.tokens.next.value)?(tokens=destructuringPattern(),lone=!1):(tokens=[{id:identifier(),token:state.tokens.curr}],lone=!0),!prefix&&isConst&&\"=\"!==state.tokens.next.id&&warning(\"E012\",state.tokens.curr,state.tokens.curr.value);for(var t in tokens)tokens.hasOwnProperty(t)&&(t=tokens[t],state.funct[\"(scope)\"].block.isGlobal()&&predefined[t.id]===!1&&warning(\"W079\",t.token,t.id),t.id&&!state.funct[\"(noblockscopedvar)\"]&&(state.funct[\"(scope)\"].addlabel(t.id,{type:type,token:t.token}),names.push(t.token),lone&&inexport&&state.funct[\"(scope)\"].setExported(t.token.value,t.token)));if(\"=\"===state.tokens.next.id&&(advance(\"=\"),prefix||\"undefined\"!==state.tokens.next.id||warning(\"W080\",state.tokens.prev,state.tokens.prev.value),!prefix&&\"=\"===peek(0).id&&state.tokens.next.identifier&&warning(\"W120\",state.tokens.next,state.tokens.next.value),value=expression(prefix?120:10),lone?tokens[0].first=value:destructuringPatternMatch(names,value)),statement.first=statement.first.concat(names),\",\"!==state.tokens.next.id)break;comma()}return letblock&&(advance(\")\"),block(!0,!0),statement.block=!0,state.funct[\"(scope)\"].unstack()),statement}function classdef(isStatement){return state.inES6()||warning(\"W104\",state.tokens.curr,\"class\",\"6\"),isStatement?(this.name=identifier(),state.funct[\"(scope)\"].addlabel(this.name,{type:\"class\",token:state.tokens.curr})):state.tokens.next.identifier&&\"extends\"!==state.tokens.next.value?(this.name=identifier(),this.namedExpr=!0):this.name=state.nameStack.infer(),classtail(this),this}function classtail(c){var wasInClassBody=state.inClassBody;\"extends\"===state.tokens.next.value&&(advance(\"extends\"),c.heritage=expression(10)),state.inClassBody=!0,advance(\"{\"),c.body=classbody(c),advance(\"}\"),state.inClassBody=wasInClassBody}function classbody(c){for(var name,isStatic,isGenerator,getset,computed,props=Object.create(null),staticProps=Object.create(null),i=0;\"}\"!==state.tokens.next.id;++i)if(name=state.tokens.next,isStatic=!1,isGenerator=!1,getset=null,\";\"!==name.id){if(\"*\"===name.id&&(isGenerator=!0,advance(\"*\"),name=state.tokens.next),\"[\"===name.id)name=computedPropertyName(),computed=!0;else{if(!isPropertyName(name)){warning(\"W052\",state.tokens.next,state.tokens.next.value||state.tokens.next.type),advance();continue}advance(),computed=!1,name.identifier&&\"static\"===name.value&&(checkPunctuator(state.tokens.next,\"*\")&&(isGenerator=!0,advance(\"*\")),(isPropertyName(state.tokens.next)||\"[\"===state.tokens.next.id)&&(computed=\"[\"===state.tokens.next.id,isStatic=!0,name=state.tokens.next,\"[\"===state.tokens.next.id?name=computedPropertyName():advance())),!name.identifier||\"get\"!==name.value&&\"set\"!==name.value||(isPropertyName(state.tokens.next)||\"[\"===state.tokens.next.id)&&(computed=\"[\"===state.tokens.next.id,getset=name,name=state.tokens.next,\"[\"===state.tokens.next.id?name=computedPropertyName():advance())}if(!checkPunctuator(state.tokens.next,\"(\")){for(error(\"E054\",state.tokens.next,state.tokens.next.value);\"}\"!==state.tokens.next.id&&!checkPunctuator(state.tokens.next,\"(\");)advance();\"(\"!==state.tokens.next.value&&doFunction({statement:c})}if(computed||(getset?saveAccessor(getset.value,isStatic?staticProps:props,name.value,name,!0,isStatic):(\"constructor\"===name.value?state.nameStack.set(c):state.nameStack.set(name),saveProperty(isStatic?staticProps:props,name.value,name,!0,isStatic))),getset&&\"constructor\"===name.value){var propDesc=\"get\"===getset.value?\"class getter method\":\"class setter method\";error(\"E049\",name,propDesc,\"constructor\")}else\"prototype\"===name.value&&error(\"E049\",name,\"class method\",\"prototype\");propertyName(name),doFunction({statement:c,type:isGenerator?\"generator\":null,classExprBinding:c.namedExpr?c.name:null})}else warning(\"W032\"),advance(\";\");checkProperties(props)}function saveProperty(props,name,tkn,isClass,isStatic){var msg=[\"key\",\"class method\",\"static class method\"];msg=msg[(isClass||!1)+(isStatic||!1)],tkn.identifier&&(name=tkn.value),props[name]&&\"__proto__\"!==name?warning(\"W075\",state.tokens.next,msg,name):props[name]=Object.create(null),props[name].basic=!0,props[name].basictkn=tkn}function saveAccessor(accessorType,props,name,tkn,isClass,isStatic){var flagName=\"get\"===accessorType?\"getterToken\":\"setterToken\",msg=\"\";isClass?(isStatic&&(msg+=\"static \"),msg+=accessorType+\"ter method\"):msg=\"key\",state.tokens.curr.accessorType=accessorType,state.nameStack.set(tkn),props[name]?(props[name].basic||props[name][flagName])&&\"__proto__\"!==name&&warning(\"W075\",state.tokens.next,msg,name):props[name]=Object.create(null),props[name][flagName]=tkn}function computedPropertyName(){advance(\"[\"),state.inES6()||warning(\"W119\",state.tokens.curr,\"computed property names\",\"6\");var value=expression(10);return advance(\"]\"),value}function checkPunctuators(token,values){return\"(punctuator)\"===token.type?_.contains(values,token.value):!1}function checkPunctuator(token,value){return\"(punctuator)\"===token.type&&token.value===value}function destructuringAssignOrJsonValue(){var block=lookupBlockType();block.notJson?(!state.inES6()&&block.isDestAssign&&warning(\"W104\",state.tokens.curr,\"destructuring assignment\",\"6\"),statements()):(state.option.laxbreak=!0,state.jsonMode=!0,jsonValue())}function jsonValue(){function jsonObject(){var o={},t=state.tokens.next;if(advance(\"{\"),\"}\"!==state.tokens.next.id)for(;;){if(\"(end)\"===state.tokens.next.id)error(\"E026\",state.tokens.next,t.line);else{if(\"}\"===state.tokens.next.id){warning(\"W094\",state.tokens.curr);break}\",\"===state.tokens.next.id?error(\"E028\",state.tokens.next):\"(string)\"!==state.tokens.next.id&&warning(\"W095\",state.tokens.next,state.tokens.next.value)}if(o[state.tokens.next.value]===!0?warning(\"W075\",state.tokens.next,\"key\",state.tokens.next.value):\"__proto__\"===state.tokens.next.value&&!state.option.proto||\"__iterator__\"===state.tokens.next.value&&!state.option.iterator?warning(\"W096\",state.tokens.next,state.tokens.next.value):o[state.tokens.next.value]=!0,advance(),advance(\":\"),jsonValue(),\",\"!==state.tokens.next.id)break;advance(\",\")}advance(\"}\")}function jsonArray(){var t=state.tokens.next;if(advance(\"[\"),\"]\"!==state.tokens.next.id)for(;;){if(\"(end)\"===state.tokens.next.id)error(\"E027\",state.tokens.next,t.line);else{if(\"]\"===state.tokens.next.id){warning(\"W094\",state.tokens.curr);break}\",\"===state.tokens.next.id&&error(\"E028\",state.tokens.next)}if(jsonValue(),\",\"!==state.tokens.next.id)break;advance(\",\")}advance(\"]\")}switch(state.tokens.next.id){case\"{\":jsonObject();break;case\"[\":jsonArray();break;case\"true\":case\"false\":case\"null\":case\"(number)\":case\"(string)\":advance();break;case\"-\":advance(\"-\"),advance(\"(number)\");break;default:error(\"E003\",state.tokens.next)}}var api,declared,functions,inblock,indent,lookahead,lex,member,membersOnly,predefined,stack,urls,bang={\"<\":!0,\"<=\":!0,\"==\":!0,\"===\":!0,\"!==\":!0,\"!=\":!0,\">\":!0,\">=\":!0,\"+\":!0,\"-\":!0,\"*\":!0,\"/\":!0,\"%\":!0},functionicity=[\"closure\",\"exception\",\"global\",\"label\",\"outer\",\"unused\",\"var\"],extraModules=[],emitter=new events.EventEmitter,typeofValues={};typeofValues.legacy=[\"xml\",\"unknown\"],typeofValues.es3=[\"undefined\",\"boolean\",\"number\",\"string\",\"function\",\"object\"],typeofValues.es3=typeofValues.es3.concat(typeofValues.legacy),typeofValues.es6=typeofValues.es3.concat(\"symbol\"),type(\"(number)\",function(){return this}),type(\"(string)\",function(){return this}),state.syntax[\"(identifier)\"]={type:\"(identifier)\",lbp:0,identifier:!0,nud:function(){var v=this.value;return\"=>\"===state.tokens.next.id?this:(state.funct[\"(comparray)\"].check(v)||state.funct[\"(scope)\"].block.use(v,state.tokens.curr),this)},led:function(){error(\"E033\",state.tokens.next,state.tokens.next.value)}};var baseTemplateSyntax={lbp:0,identifier:!1,template:!0};state.syntax[\"(template)\"]=_.extend({type:\"(template)\",nud:doTemplateLiteral,led:doTemplateLiteral,noSubst:!1},baseTemplateSyntax),state.syntax[\"(template middle)\"]=_.extend({type:\"(template middle)\",middle:!0,noSubst:!1},baseTemplateSyntax),state.syntax[\"(template tail)\"]=_.extend({type:\"(template tail)\",tail:!0,noSubst:!1},baseTemplateSyntax),state.syntax[\"(no subst template)\"]=_.extend({type:\"(template)\",nud:doTemplateLiteral,led:doTemplateLiteral,noSubst:!0,tail:!0},baseTemplateSyntax),type(\"(regexp)\",function(){return this}),delim(\"(endline)\"),delim(\"(begin)\"),delim(\"(end)\").reach=!0,delim(\"(error)\").reach=!0,delim(\"}\").reach=!0,delim(\")\"),delim(\"]\"),delim('\"').reach=!0,delim(\"'\").reach=!0,delim(\";\"),delim(\":\").reach=!0,delim(\"#\"),reserve(\"else\"),reserve(\"case\").reach=!0,reserve(\"catch\"),reserve(\"default\").reach=!0,reserve(\"finally\"),reservevar(\"arguments\",function(x){state.isStrict()&&state.funct[\"(global)\"]&&warning(\"E008\",x)}),reservevar(\"eval\"),reservevar(\"false\"),reservevar(\"Infinity\"),reservevar(\"null\"),reservevar(\"this\",function(x){state.isStrict()&&!isMethod()&&!state.option.validthis&&(state.funct[\"(statement)\"]&&state.funct[\"(name)\"].charAt(0)>\"Z\"||state.funct[\"(global)\"])&&warning(\"W040\",x)}),reservevar(\"true\"),reservevar(\"undefined\"),assignop(\"=\",\"assign\",20),assignop(\"+=\",\"assignadd\",20),assignop(\"-=\",\"assignsub\",20),assignop(\"*=\",\"assignmult\",20),assignop(\"/=\",\"assigndiv\",20).nud=function(){error(\"E014\")},assignop(\"%=\",\"assignmod\",20),bitwiseassignop(\"&=\"),bitwiseassignop(\"|=\"),bitwiseassignop(\"^=\"),bitwiseassignop(\"<<=\"),bitwiseassignop(\">>=\"),bitwiseassignop(\">>>=\"),infix(\",\",function(left,that){var expr;if(that.exprs=[left],state.option.nocomma&&warning(\"W127\"),!comma({peek:!0}))return that;for(;;){if(!(expr=expression(10)))break;if(that.exprs.push(expr),\",\"!==state.tokens.next.value||!comma())break}return that},10,!0),infix(\"?\",function(left,that){return increaseComplexityCount(),that.left=left,that.right=expression(10),advance(\":\"),that[\"else\"]=expression(10),that},30);var orPrecendence=40;infix(\"||\",function(left,that){return increaseComplexityCount(),that.left=left,that.right=expression(orPrecendence),that},orPrecendence),infix(\"&&\",\"and\",50),bitwise(\"|\",\"bitor\",70),bitwise(\"^\",\"bitxor\",80),bitwise(\"&\",\"bitand\",90),relation(\"==\",function(left,right){var eqnull=state.option.eqnull&&(\"null\"===(left&&left.value)||\"null\"===(right&&right.value));switch(!0){case!eqnull&&state.option.eqeqeq:this.from=this.character,warning(\"W116\",this,\"===\",\"==\");break;case isPoorRelation(left):warning(\"W041\",this,\"===\",left.value);break;case isPoorRelation(right):warning(\"W041\",this,\"===\",right.value);break;case isTypoTypeof(right,left,state):warning(\"W122\",this,right.value);break;case isTypoTypeof(left,right,state):warning(\"W122\",this,left.value)}return this}),relation(\"===\",function(left,right){return isTypoTypeof(right,left,state)?warning(\"W122\",this,right.value):isTypoTypeof(left,right,state)&&warning(\"W122\",this,left.value),this}),relation(\"!=\",function(left,right){var eqnull=state.option.eqnull&&(\"null\"===(left&&left.value)||\"null\"===(right&&right.value));return!eqnull&&state.option.eqeqeq?(this.from=this.character,warning(\"W116\",this,\"!==\",\"!=\")):isPoorRelation(left)?warning(\"W041\",this,\"!==\",left.value):isPoorRelation(right)?warning(\"W041\",this,\"!==\",right.value):isTypoTypeof(right,left,state)?warning(\"W122\",this,right.value):isTypoTypeof(left,right,state)&&warning(\"W122\",this,left.value),this}),relation(\"!==\",function(left,right){return isTypoTypeof(right,left,state)?warning(\"W122\",this,right.value):isTypoTypeof(left,right,state)&&warning(\"W122\",this,left.value),this}),relation(\"<\"),relation(\">\"),relation(\"<=\"),relation(\">=\"),bitwise(\"<<\",\"shiftleft\",120),bitwise(\">>\",\"shiftright\",120),bitwise(\">>>\",\"shiftrightunsigned\",120),infix(\"in\",\"in\",120),infix(\"instanceof\",\"instanceof\",120),infix(\"+\",function(left,that){var right;return that.left=left,that.right=right=expression(130),left&&right&&\"(string)\"===left.id&&\"(string)\"===right.id?(left.value+=right.value,left.character=right.character,!state.option.scripturl&®.javascriptURL.test(left.value)&&warning(\"W050\",left),left):that},130),prefix(\"+\",\"num\"),prefix(\"+++\",function(){return warning(\"W007\"),this.arity=\"unary\",this.right=expression(150),this}),infix(\"+++\",function(left){return warning(\"W007\"),this.left=left,this.right=expression(130),this},130),infix(\"-\",\"sub\",130),prefix(\"-\",\"neg\"),prefix(\"---\",function(){return warning(\"W006\"),this.arity=\"unary\",this.right=expression(150),this}),infix(\"---\",function(left){return warning(\"W006\"),this.left=left,this.right=expression(130),this},130),infix(\"*\",\"mult\",140),infix(\"/\",\"div\",140),infix(\"%\",\"mod\",140),suffix(\"++\"),prefix(\"++\",\"preinc\"),state.syntax[\"++\"].exps=!0,suffix(\"--\"),prefix(\"--\",\"predec\"),state.syntax[\"--\"].exps=!0,prefix(\"delete\",function(){var p=expression(10);return p?(\".\"!==p.id&&\"[\"!==p.id&&warning(\"W051\"),this.first=p,p.identifier&&!state.isStrict()&&(p.forgiveUndef=!0),this):this}).exps=!0,prefix(\"~\",function(){return state.option.bitwise&&warning(\"W016\",this,\"~\"),this.arity=\"unary\",this.right=expression(150),this}),prefix(\"...\",function(){return state.inES6(!0)||warning(\"W119\",this,\"spread/rest operator\",\"6\"),state.tokens.next.identifier||\"(string)\"===state.tokens.next.type||checkPunctuators(state.tokens.next,[\"[\",\"(\"])||error(\"E030\",state.tokens.next,state.tokens.next.value),expression(150),this}),prefix(\"!\",function(){return this.arity=\"unary\",this.right=expression(150),this.right||quit(\"E041\",this.line||0),bang[this.right.id]===!0&&warning(\"W018\",this,\"!\"),this}),prefix(\"typeof\",function(){var p=expression(150);return this.first=this.right=p,p||quit(\"E041\",this.line||0,this.character||0),p.identifier&&(p.forgiveUndef=!0),this}),prefix(\"new\",function(){var mp=metaProperty(\"target\",function(){state.inES6(!0)||warning(\"W119\",state.tokens.prev,\"new.target\",\"6\");for(var inFunction,c=state.funct;c&&(inFunction=!c[\"(global)\"],c[\"(arrow)\"]);)c=c[\"(context)\"];inFunction||warning(\"W136\",state.tokens.prev,\"new.target\")});if(mp)return mp;var i,c=expression(155);if(c&&\"function\"!==c.id)if(c.identifier)switch(c[\"new\"]=!0,c.value){case\"Number\":case\"String\":case\"Boolean\":case\"Math\":case\"JSON\":warning(\"W053\",state.tokens.prev,c.value);break;case\"Symbol\":state.inES6()&&warning(\"W053\",state.tokens.prev,c.value);break;case\"Function\":state.option.evil||warning(\"W054\");break;case\"Date\":case\"RegExp\":case\"this\":break;default:\"function\"!==c.id&&(i=c.value.substr(0,1),state.option.newcap&&(\"A\">i||i>\"Z\")&&!state.funct[\"(scope)\"].isPredefined(c.value)&&warning(\"W055\",state.tokens.curr))}else\".\"!==c.id&&\"[\"!==c.id&&\"(\"!==c.id&&warning(\"W056\",state.tokens.curr);else state.option.supernew||warning(\"W057\",this);return\"(\"===state.tokens.next.id||state.option.supernew||warning(\"W058\",state.tokens.curr,state.tokens.curr.value),this.first=this.right=c,this}),state.syntax[\"new\"].exps=!0,prefix(\"void\").exps=!0,infix(\".\",function(left,that){var m=identifier(!1,!0);return\"string\"==typeof m&&countMember(m),that.left=left,that.right=m,m&&\"hasOwnProperty\"===m&&\"=\"===state.tokens.next.value&&warning(\"W001\"),!left||\"arguments\"!==left.value||\"callee\"!==m&&\"caller\"!==m?state.option.evil||!left||\"document\"!==left.value||\"write\"!==m&&\"writeln\"!==m||warning(\"W060\",left):state.option.noarg?warning(\"W059\",left,m):state.isStrict()&&error(\"E008\"),state.option.evil||\"eval\"!==m&&\"execScript\"!==m||isGlobalEval(left,state)&&warning(\"W061\"),that},160,!0),infix(\"(\",function(left,that){state.option.immed&&left&&!left.immed&&\"function\"===left.id&&warning(\"W062\");var n=0,p=[];if(left&&\"(identifier)\"===left.type&&left.value.match(/^[A-Z]([A-Z0-9_$]*[a-z][A-Za-z0-9_$]*)?$/)&&-1===\"Array Number String Boolean Date Object Error Symbol\".indexOf(left.value)&&(\"Math\"===left.value?warning(\"W063\",left):state.option.newcap&&warning(\"W064\",left)),\")\"!==state.tokens.next.id)for(;p[p.length]=expression(10),n+=1,\",\"===state.tokens.next.id;)comma();return advance(\")\"),\"object\"==typeof left&&(state.inES5()||\"parseInt\"!==left.value||1!==n||warning(\"W065\",state.tokens.curr),state.option.evil||(\"eval\"===left.value||\"Function\"===left.value||\"execScript\"===left.value?(warning(\"W061\",left),p[0]&&\"(string)\"===[0].id&&addInternalSrc(left,p[0].value)):!p[0]||\"(string)\"!==p[0].id||\"setTimeout\"!==left.value&&\"setInterval\"!==left.value?!p[0]||\"(string)\"!==p[0].id||\".\"!==left.value||\"window\"!==left.left.value||\"setTimeout\"!==left.right&&\"setInterval\"!==left.right||(warning(\"W066\",left),addInternalSrc(left,p[0].value)):(warning(\"W066\",left),addInternalSrc(left,p[0].value))),left.identifier||\".\"===left.id||\"[\"===left.id||\"=>\"===left.id||\"(\"===left.id||\"&&\"===left.id||\"||\"===left.id||\"?\"===left.id||state.inES6()&&left[\"(name)\"]||warning(\"W067\",that)),that.left=left,that},155,!0).exps=!0,prefix(\"(\",function(){var pn1,ret,triggerFnExpr,first,last,pn=state.tokens.next,i=-1,parens=1,opening=state.tokens.curr,preceeding=state.tokens.prev,isNecessary=!state.option.singleGroups;do\"(\"===pn.value?parens+=1:\")\"===pn.value&&(parens-=1),i+=1,pn1=pn,pn=peek(i);while((0!==parens||\")\"!==pn1.value)&&\";\"!==pn.value&&\"(end)\"!==pn.type);if(\"function\"===state.tokens.next.id&&(triggerFnExpr=state.tokens.next.immed=!0),\"=>\"===pn.value)return doFunction({type:\"arrow\",parsedOpening:!0});var exprs=[];if(\")\"!==state.tokens.next.id)for(;exprs.push(expression(10)),\",\"===state.tokens.next.id;)state.option.nocomma&&warning(\"W127\"),comma();return advance(\")\",this),state.option.immed&&exprs[0]&&\"function\"===exprs[0].id&&\"(\"!==state.tokens.next.id&&\".\"!==state.tokens.next.id&&\"[\"!==state.tokens.next.id&&warning(\"W068\",this),exprs.length?(exprs.length>1?(ret=Object.create(state.syntax[\",\"]),ret.exprs=exprs,first=exprs[0],last=exprs[exprs.length-1],isNecessary||(isNecessary=preceeding.assign||preceeding.delim)):(ret=first=last=exprs[0],isNecessary||(isNecessary=opening.beginsStmt&&(\"{\"===ret.id||triggerFnExpr||isFunctor(ret))||triggerFnExpr&&(!isEndOfExpr()||\"}\"!==state.tokens.prev.id)||isFunctor(ret)&&!isEndOfExpr()||\"{\"===ret.id&&\"=>\"===preceeding.id||\"(number)\"===ret.type&&checkPunctuator(pn,\".\")&&/^\\d+$/.test(ret.value))),ret&&(!isNecessary&&(first.left||first.right||ret.exprs)&&(isNecessary=!isBeginOfExpr(preceeding)&&first.lbp<=preceeding.lbp||!isEndOfExpr()&&last.lbp
" +
- "You gained:
" +
- Object(_StringHelperFunctions_js__WEBPACK_IMPORTED_MODULE_6__["formatNumber"])(inst.hackingExpGained, 3) + " hacking exp
" +
- Object(_StringHelperFunctions_js__WEBPACK_IMPORTED_MODULE_6__["formatNumber"])(inst.strExpGained, 3) + " str exp
" +
- Object(_StringHelperFunctions_js__WEBPACK_IMPORTED_MODULE_6__["formatNumber"])(inst.defExpGained, 3) + " def exp
" +
- Object(_StringHelperFunctions_js__WEBPACK_IMPORTED_MODULE_6__["formatNumber"])(inst.dexExpGained, 3) + " dex exp
" +
- Object(_StringHelperFunctions_js__WEBPACK_IMPORTED_MODULE_6__["formatNumber"])(inst.agiExpGained, 3) + " agi exp
" +
- Object(_StringHelperFunctions_js__WEBPACK_IMPORTED_MODULE_6__["formatNumber"])(inst.chaExpGained, 3) + " cha exp
");
- return;
- }
- var facValue = totalValue * _src_Player_js__WEBPACK_IMPORTED_MODULE_3__["Player"].faction_rep_mult *
- _src_Constants_js__WEBPACK_IMPORTED_MODULE_1__["CONSTANTS"].InfiltrationRepValue * _src_BitNode_js__WEBPACK_IMPORTED_MODULE_0__["BitNodeMultipliers"].InfiltrationRep;
- var moneyValue = totalValue * _src_Constants_js__WEBPACK_IMPORTED_MODULE_1__["CONSTANTS"].InfiltrationMoneyValue * _src_BitNode_js__WEBPACK_IMPORTED_MODULE_0__["BitNodeMultipliers"].InfiltrationMoney;
- infiltrationSetText("You can sell the classified documents and secrets " +
- "you stole from " + inst.companyName + " for $" +
- Object(_StringHelperFunctions_js__WEBPACK_IMPORTED_MODULE_6__["formatNumber"])(moneyValue, 2) + " on the black market or you can give it " +
- "to a faction to gain " + Object(_StringHelperFunctions_js__WEBPACK_IMPORTED_MODULE_6__["formatNumber"])(facValue, 3) + " reputation with " +
- "that faction.");
- var selector = document.getElementById("infiltration-faction-select");
- selector.innerHTML = "";
- for (var i = 0; i < _src_Player_js__WEBPACK_IMPORTED_MODULE_3__["Player"].factions.length; ++i) {
- if (_src_Player_js__WEBPACK_IMPORTED_MODULE_3__["Player"].factions[i] === "Bladeburners") {continue;}
- selector.innerHTML += "";
- }
-
- var sellButton = Object(_HelperFunctions_js__WEBPACK_IMPORTED_MODULE_5__["clearEventListeners"])("infiltration-box-sell");
- setTimeout(function() {
- sellButton.addEventListener("click", function() {
- _src_Player_js__WEBPACK_IMPORTED_MODULE_3__["Player"].gainMoney(moneyValue);
- Object(_DialogBox_js__WEBPACK_IMPORTED_MODULE_4__["dialogBoxCreate"])("You sold the classified information you stole from " + inst.companyName +
- " for $" + moneyValue + " on the black market!
" +
- "You gained:
" +
- Object(_StringHelperFunctions_js__WEBPACK_IMPORTED_MODULE_6__["formatNumber"])(inst.hackingExpGained, 3) + " hacking exp
" +
- Object(_StringHelperFunctions_js__WEBPACK_IMPORTED_MODULE_6__["formatNumber"])(inst.strExpGained, 3) + " str exp
" +
- Object(_StringHelperFunctions_js__WEBPACK_IMPORTED_MODULE_6__["formatNumber"])(inst.defExpGained, 3) + " def exp
" +
- Object(_StringHelperFunctions_js__WEBPACK_IMPORTED_MODULE_6__["formatNumber"])(inst.dexExpGained, 3) + " dex exp
" +
- Object(_StringHelperFunctions_js__WEBPACK_IMPORTED_MODULE_6__["formatNumber"])(inst.agiExpGained, 3) + " agi exp
" +
- Object(_StringHelperFunctions_js__WEBPACK_IMPORTED_MODULE_6__["formatNumber"])(inst.chaExpGained, 3) + " cha exp
");
- infiltrationBoxClose();
- return false;
- });
- }, 750);
-
- var factionButton = Object(_HelperFunctions_js__WEBPACK_IMPORTED_MODULE_5__["clearEventListeners"])("infiltration-box-faction");
- setTimeout(function() {
- factionButton.addEventListener("click", function() {
- var facName = selector.options[selector.selectedIndex].value;
- var faction = _src_Faction_js__WEBPACK_IMPORTED_MODULE_2__["Factions"][facName];
- if (faction == null) {
- Object(_DialogBox_js__WEBPACK_IMPORTED_MODULE_4__["dialogBoxCreate"])("Error finding faction. This is a bug please report to developer");
- return false;
- }
- faction.playerReputation += facValue;
- Object(_DialogBox_js__WEBPACK_IMPORTED_MODULE_4__["dialogBoxCreate"])("You gave the classified information you stole from " + inst.companyName +
- " to " + facName + " and gained " + Object(_StringHelperFunctions_js__WEBPACK_IMPORTED_MODULE_6__["formatNumber"])(facValue, 3) + " reputation with the faction.
" +
- "You gained:
" +
- Object(_StringHelperFunctions_js__WEBPACK_IMPORTED_MODULE_6__["formatNumber"])(inst.hackingExpGained, 3) + " hacking exp
" +
- Object(_StringHelperFunctions_js__WEBPACK_IMPORTED_MODULE_6__["formatNumber"])(inst.strExpGained, 3) + " str exp
" +
- Object(_StringHelperFunctions_js__WEBPACK_IMPORTED_MODULE_6__["formatNumber"])(inst.defExpGained, 3) + " def exp
" +
- Object(_StringHelperFunctions_js__WEBPACK_IMPORTED_MODULE_6__["formatNumber"])(inst.dexExpGained, 3) + " dex exp
" +
- Object(_StringHelperFunctions_js__WEBPACK_IMPORTED_MODULE_6__["formatNumber"])(inst.agiExpGained, 3) + " agi exp
" +
- Object(_StringHelperFunctions_js__WEBPACK_IMPORTED_MODULE_6__["formatNumber"])(inst.chaExpGained, 3) + " cha exp
");
- infiltrationBoxClose();
- return false;
- });
- }, 750);
- infiltrationBoxOpen();
-}
-
-
-
-
-/***/ }),
-/* 118 */
-/*!*****************************!*\
- !*** ./src/Infiltration.js ***!
- \*****************************/
-/***/ (function(module, __webpack_exports__, __webpack_require__) {
-
-"use strict";
-__webpack_require__.r(__webpack_exports__);
-/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "beginInfiltration", function() { return beginInfiltration; });
-/* harmony import */ var _BitNode_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./BitNode.js */ 15);
-/* harmony import */ var _Constants_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./Constants.js */ 3);
-/* harmony import */ var _engine_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./engine.js */ 5);
-/* harmony import */ var _Player_js__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./Player.js */ 0);
-/* harmony import */ var _utils_DialogBox_js__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ../utils/DialogBox.js */ 7);
-/* harmony import */ var _utils_HelperFunctions_js__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ../utils/HelperFunctions.js */ 1);
-/* harmony import */ var _utils_InfiltrationBox_js__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! ../utils/InfiltrationBox.js */ 117);
-/* harmony import */ var _utils_StringHelperFunctions_js__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! ../utils/StringHelperFunctions.js */ 2);
-
-
-
-
-
-
-
-
-
-/* Infiltration.js
- *
- * Kill
- * Knockout (nonlethal)
- * Stealth Knockout (nonlethal)
- * Assassinate
- *
- * Hack Security
- * Destroy Security
- * Sneak past Security
- *
- * Pick the locked door
- *
- * Bribe security
- *
- * Escape
- */
-
-let InfiltrationScenarios = {
- Guards: "You see an armed security guard patrolling the area.",
- TechOnly: "The area is equipped with a state-of-the-art security system: cameras, laser tripwires, and sentry turrets.",
- TechOrLockedDoor: "The area is equipped with a state-of-the-art security system. There is a locked door on the side of the " +
- "room that can be used to bypass security.",
- Bots: "You see a few security bots patrolling the area.",
-}
-
-function InfiltrationInstance(companyName, startLevel, val, maxClearance, diff) {
- this.companyName = companyName;
- this.clearanceLevel = 0;
- this.maxClearanceLevel = maxClearance;
- this.securityLevel = startLevel;
- this.difficulty = diff; //Affects how much security level increases. Represents a percentage
- this.baseValue = val; //Base value of company secrets
- this.secretsStolen = []; //Numbers representing value of stolen secrets
-
- this.hackingExpGained = 0;
- this.strExpGained = 0;
- this.defExpGained = 0;
- this.dexExpGained = 0;
- this.agiExpGained = 0;
- this.chaExpGained = 0;
- this.intExpGained = 0;
-}
-
-InfiltrationInstance.prototype.gainHackingExp = function(amt) {
- if (isNaN(amt)) {return;}
- this.hackingExpGained += amt;
-}
-
-InfiltrationInstance.prototype.gainStrengthExp = function(amt) {
- if (isNaN(amt)) {return;}
- this.strExpGained += amt;
-}
-
-InfiltrationInstance.prototype.gainDefenseExp = function(amt) {
- if (isNaN(amt)) {return;}
- this.defExpGained += amt;
-}
-
-InfiltrationInstance.prototype.gainDexterityExp = function(amt) {
- if (isNaN(amt)) {return;}
- this.dexExpGained += amt;
-}
-
-InfiltrationInstance.prototype.gainAgilityExp = function(amt) {
- if (isNaN(amt)) {return;}
- this.agiExpGained += amt;
-}
-
-InfiltrationInstance.prototype.gainCharismaExp = function(amt) {
- if (isNaN(amt)) {return;}
- this.chaExpGained += amt;
-}
-
-InfiltrationInstance.prototype.gainIntelligenceExp = function(amt) {
- if (isNaN(amt)) {return;}
- this.intExpGained += amt;
-}
-
-function beginInfiltration(companyName, startLevel, val, maxClearance, diff) {
- var inst = new InfiltrationInstance(companyName, startLevel, val, maxClearance, diff);
- clearInfiltrationStatusText();
- nextInfiltrationLevel(inst);
-}
-
-function endInfiltration(inst, success) {
- if (success) {Object(_utils_InfiltrationBox_js__WEBPACK_IMPORTED_MODULE_6__["infiltrationBoxCreate"])(inst);}
-
- Object(_utils_HelperFunctions_js__WEBPACK_IMPORTED_MODULE_5__["clearEventListeners"])("infiltration-kill");
- Object(_utils_HelperFunctions_js__WEBPACK_IMPORTED_MODULE_5__["clearEventListeners"])("infiltration-knockout");
- Object(_utils_HelperFunctions_js__WEBPACK_IMPORTED_MODULE_5__["clearEventListeners"])("infiltration-stealthknockout");
- Object(_utils_HelperFunctions_js__WEBPACK_IMPORTED_MODULE_5__["clearEventListeners"])("infiltration-assassinate");
- Object(_utils_HelperFunctions_js__WEBPACK_IMPORTED_MODULE_5__["clearEventListeners"])("infiltration-hacksecurity");
- Object(_utils_HelperFunctions_js__WEBPACK_IMPORTED_MODULE_5__["clearEventListeners"])("infiltration-destroysecurity");
- Object(_utils_HelperFunctions_js__WEBPACK_IMPORTED_MODULE_5__["clearEventListeners"])("infiltration-sneak");
- Object(_utils_HelperFunctions_js__WEBPACK_IMPORTED_MODULE_5__["clearEventListeners"])("infiltration-pickdoor");
- Object(_utils_HelperFunctions_js__WEBPACK_IMPORTED_MODULE_5__["clearEventListeners"])("infiltration-bribe");
- Object(_utils_HelperFunctions_js__WEBPACK_IMPORTED_MODULE_5__["clearEventListeners"])("infiltration-escape");
-
- _engine_js__WEBPACK_IMPORTED_MODULE_2__["Engine"].loadWorldContent();
-}
-
-function nextInfiltrationLevel(inst) {
- ++inst.clearanceLevel;
- updateInfiltrationLevelText(inst);
-
- //Buttons
- var killButton = Object(_utils_HelperFunctions_js__WEBPACK_IMPORTED_MODULE_5__["clearEventListeners"])("infiltration-kill");
- var knockoutButton = Object(_utils_HelperFunctions_js__WEBPACK_IMPORTED_MODULE_5__["clearEventListeners"])("infiltration-knockout");
- var stealthKnockoutButton = Object(_utils_HelperFunctions_js__WEBPACK_IMPORTED_MODULE_5__["clearEventListeners"])("infiltration-stealthknockout");
- var assassinateButton = Object(_utils_HelperFunctions_js__WEBPACK_IMPORTED_MODULE_5__["clearEventListeners"])("infiltration-assassinate");
- var hackSecurityButton = Object(_utils_HelperFunctions_js__WEBPACK_IMPORTED_MODULE_5__["clearEventListeners"])("infiltration-hacksecurity");
- var destroySecurityButton = Object(_utils_HelperFunctions_js__WEBPACK_IMPORTED_MODULE_5__["clearEventListeners"])("infiltration-destroysecurity");
- var sneakButton = Object(_utils_HelperFunctions_js__WEBPACK_IMPORTED_MODULE_5__["clearEventListeners"])("infiltration-sneak");
- var pickdoorButton = Object(_utils_HelperFunctions_js__WEBPACK_IMPORTED_MODULE_5__["clearEventListeners"])("infiltration-pickdoor");
- var bribeButton = Object(_utils_HelperFunctions_js__WEBPACK_IMPORTED_MODULE_5__["clearEventListeners"])("infiltration-bribe");
- var escapeButton = Object(_utils_HelperFunctions_js__WEBPACK_IMPORTED_MODULE_5__["clearEventListeners"])("infiltration-escape");
-
- killButton.style.display = "none";
- knockoutButton.style.display = "none";
- stealthKnockoutButton.style.display = "none";
- assassinateButton.style.display = "none";
- hackSecurityButton.style.display = "none";
- destroySecurityButton.style.display = "none";
- sneakButton.style.display = "none";
- pickdoorButton.style.display = "none";
- bribeButton.style.display = "none";
- escapeButton.style.display = "none";
-
- var rand = Object(_utils_HelperFunctions_js__WEBPACK_IMPORTED_MODULE_5__["getRandomInt"])(0, 5); //This needs to change if more scenarios are added
- var scenario = null;
- switch (rand) {
- case 1:
- scenario = InfiltrationScenarios.TechOnly;
- hackSecurityButton.style.display = "block";
- destroySecurityButton.style.display = "block";
- sneakButton.style.display = "block";
- escapeButton.style.display = "block";
- break;
- case 2:
- scenario = InfiltrationScenarios.TechOrLockedDoor;
- hackSecurityButton.style.display = "block";
- destroySecurityButton.style.display = "block";
- sneakButton.style.display = "block";
- pickdoorButton.style.display = "block";
- escapeButton.style.display = "block";
- break;
- case 3:
- scenario = InfiltrationScenarios.Bots;
- killButton.style.display = "block";
- killButton.addEventListener("click", function() {
- var res = attemptInfiltrationKill(inst);
- if (res[0]) {
- writeInfiltrationStatusText("You SUCCESSFULLY killed the security bots! Unfortunately you alerted the " +
- "rest of the facility's security. The facility's security " +
- "level increased by " + Object(_utils_StringHelperFunctions_js__WEBPACK_IMPORTED_MODULE_7__["formatNumber"])((res[1]*100)-100, 2).toString() + "%");
- _Player_js__WEBPACK_IMPORTED_MODULE_3__["Player"].karma -= 1;
- endInfiltrationLevel(inst);
- return false;
- } else {
- var dmgTaken = Math.max(1, Math.round(1.5 * inst.securityLevel / _Player_js__WEBPACK_IMPORTED_MODULE_3__["Player"].defense));
- writeInfiltrationStatusText("You FAILED to kill the security bots. The bots fight back " +
- "and raise the alarm! You take " + dmgTaken + " damage and " +
- "the facility's security level increases by " +
- Object(_utils_StringHelperFunctions_js__WEBPACK_IMPORTED_MODULE_7__["formatNumber"])((res[1]*100)-100, 2).toString() + "%");
- if (_Player_js__WEBPACK_IMPORTED_MODULE_3__["Player"].takeDamage(dmgTaken)) {
- endInfiltration(inst, false);
- }
- }
- updateInfiltrationButtons(inst, scenario);
- updateInfiltrationLevelText(inst);
- });
- assassinateButton.style.display = "block";
- assassinateButton.addEventListener("click", function() {
- var res = attemptInfiltrationAssassinate(inst);
- if (res[0]) {
- writeInfiltrationStatusText("You SUCCESSFULLY assassinated the security bots without being detected!");
- _Player_js__WEBPACK_IMPORTED_MODULE_3__["Player"].karma -= 1;
- endInfiltrationLevel(inst);
- return false;
- } else {
- writeInfiltrationStatusText("You FAILED to assassinate the security bots. The bots have not detected " +
- "you but are now more alert for an intruder. The facility's security level " +
- "has increased by " + Object(_utils_StringHelperFunctions_js__WEBPACK_IMPORTED_MODULE_7__["formatNumber"])((res[1]*100)-100, 2).toString() + "%");
- }
- updateInfiltrationButtons(inst, scenario);
- updateInfiltrationLevelText(inst);
- });
- hackSecurityButton.style.display = "block";
- sneakButton.style.display = "block";
- escapeButton.style.display = "block";
- break;
- default: //0, 4-5
- scenario = InfiltrationScenarios.Guards;
- killButton.style.display = "block";
- killButton.addEventListener("click", function() {
- var res = attemptInfiltrationKill(inst);
- if (res[0]) {
- writeInfiltrationStatusText("You SUCCESSFULLY killed the security guard! Unfortunately you alerted the " +
- "rest of the facility's security. The facility's security " +
- "level has increased by " + Object(_utils_StringHelperFunctions_js__WEBPACK_IMPORTED_MODULE_7__["formatNumber"])((res[1]*100)-100, 2).toString() + "%");
- _Player_js__WEBPACK_IMPORTED_MODULE_3__["Player"].karma -= 3;
- ++_Player_js__WEBPACK_IMPORTED_MODULE_3__["Player"].numPeopleKilled;
- endInfiltrationLevel(inst);
- return false;
- } else {
- var dmgTaken = Math.max(1, Math.round(inst.securityLevel / _Player_js__WEBPACK_IMPORTED_MODULE_3__["Player"].defense));
- writeInfiltrationStatusText("You FAILED to kill the security guard. The guard fights back " +
- "and raises the alarm! You take " + dmgTaken + " damage and " +
- "the facility's security level has increased by " +
- Object(_utils_StringHelperFunctions_js__WEBPACK_IMPORTED_MODULE_7__["formatNumber"])((res[1]*100)-100, 2).toString() + "%");
- if (_Player_js__WEBPACK_IMPORTED_MODULE_3__["Player"].takeDamage(dmgTaken)) {
- endInfiltration(inst, false);
- }
- }
- updateInfiltrationButtons(inst, scenario);
- updateInfiltrationLevelText(inst);
- });
- knockoutButton.style.display = "block";
- stealthKnockoutButton.style.display = "block";
- assassinateButton.style.display = "block";
- assassinateButton.addEventListener("click", function() {
- var res = attemptInfiltrationAssassinate(inst);
- if (res[0]) {
- writeInfiltrationStatusText("You SUCCESSFULLY assassinated the security guard without being detected!");
- _Player_js__WEBPACK_IMPORTED_MODULE_3__["Player"].karma -= 3;
- ++_Player_js__WEBPACK_IMPORTED_MODULE_3__["Player"].numPeopleKilled;
- endInfiltrationLevel(inst);
- return false;
- } else {
- writeInfiltrationStatusText("You FAILED to assassinate the security guard. The guard has not detected " +
- "you but is now more alert for an intruder. The facility's security level " +
- "has increased by " + Object(_utils_StringHelperFunctions_js__WEBPACK_IMPORTED_MODULE_7__["formatNumber"])((res[1]*100)-100, 2).toString() + "%");
- }
- updateInfiltrationButtons(inst, scenario);
- updateInfiltrationLevelText(inst);
- });
- sneakButton.style.display = "block";
- bribeButton.style.display = "block";
- escapeButton.style.display = "block";
- break;
- }
-
- knockoutButton.addEventListener("click", function() {
- var res = attemptInfiltrationKnockout(inst);
- if (res[0]) {
- writeInfiltrationStatusText("You SUCCESSFULLY knocked out the security guard! " +
- "Unfortunately you made a lot of noise and alerted other security.");
- writeInfiltrationStatusText("The facility's security level increased by " + Object(_utils_StringHelperFunctions_js__WEBPACK_IMPORTED_MODULE_7__["formatNumber"])((res[1]*100)-100, 2).toString() + "%");
- endInfiltrationLevel(inst);
- return false;
- } else {
- var dmgTaken = Math.max(1, Math.round(inst.securityLevel / _Player_js__WEBPACK_IMPORTED_MODULE_3__["Player"].defense));
- writeInfiltrationStatusText("You FAILED to knockout the security guard. The guard " +
- "raises the alarm and fights back! You take " + dmgTaken + " damage and " +
- "the facility's security level increases by " + Object(_utils_StringHelperFunctions_js__WEBPACK_IMPORTED_MODULE_7__["formatNumber"])((res[1]*100)-100, 2).toString() + "%");
- if (_Player_js__WEBPACK_IMPORTED_MODULE_3__["Player"].takeDamage(dmgTaken)) {
- endInfiltration(inst, false);
- }
- }
- updateInfiltrationButtons(inst, scenario);
- updateInfiltrationLevelText(inst);
- return false;
- });
-
- stealthKnockoutButton.addEventListener("click", function() {
- var res = attemptInfiltrationStealthKnockout(inst);
- if (res[0]) {
- writeInfiltrationStatusText("You SUCCESSFULLY knocked out the security guard without making " +
- "any noise!");
- endInfiltrationLevel(inst);
- return false;
- } else {
- var dmgTaken = Math.max(1, Math.round(inst.securityLevel / _Player_js__WEBPACK_IMPORTED_MODULE_3__["Player"].defense));
- writeInfiltrationStatusText("You FAILED to stealthily knockout the security guard. The guard " +
- "raises the alarm and fights back! You take " + dmgTaken + " damage and " +
- "the facility's security level increases by " + Object(_utils_StringHelperFunctions_js__WEBPACK_IMPORTED_MODULE_7__["formatNumber"])((res[1]*100)-100, 2).toString() + "%");
- if (_Player_js__WEBPACK_IMPORTED_MODULE_3__["Player"].takeDamage(dmgTaken)) {
- endInfiltration(inst, false);
- }
- }
- updateInfiltrationButtons(inst, scenario);
- updateInfiltrationLevelText(inst);
- return false;
- });
-
- hackSecurityButton.addEventListener("click", function() {
- var res = attemptInfiltrationHack(inst);
- if (res[0]) {
- writeInfiltrationStatusText("You SUCCESSFULLY hacked and disabled the security system!");
- writeInfiltrationStatusText("The facility's security level increased by " + ((res[1]*100) - 100).toString() + "%");
- endInfiltrationLevel(inst);
- return false;
- } else {
- writeInfiltrationStatusText("You FAILED to hack the security system. The facility's " +
- "security level increased by " + Object(_utils_StringHelperFunctions_js__WEBPACK_IMPORTED_MODULE_7__["formatNumber"])((res[1]*100)-100, 2).toString() + "%");
- }
- updateInfiltrationButtons(inst, scenario);
- updateInfiltrationLevelText(inst);
- return false;
- });
-
- destroySecurityButton.addEventListener("click", function() {
- var res = attemptInfiltrationDestroySecurity(inst);
- if (res[0]) {
- writeInfiltrationStatusText("You SUCCESSFULLY and violently destroy the security system!");
- writeInfiltrationStatusText("The facility's security level increased by " + Object(_utils_StringHelperFunctions_js__WEBPACK_IMPORTED_MODULE_7__["formatNumber"])((res[1]*100)-100, 2).toString() + "%");
- endInfiltrationLevel(inst);
- return false;
- } else {
- writeInfiltrationStatusText("You FAILED to destroy the security system. The facility's " +
- "security level increased by " + Object(_utils_StringHelperFunctions_js__WEBPACK_IMPORTED_MODULE_7__["formatNumber"])((res[1]*100)-100, 2).toString() + "%");
- }
- updateInfiltrationButtons(inst, scenario);
- updateInfiltrationLevelText(inst);
- return false;
- });
-
- sneakButton.addEventListener("click", function() {
- var res = attemptInfiltrationSneak(inst);
- if (res[0]) {
- writeInfiltrationStatusText("You SUCCESSFULLY sneak past the security undetected!");
- endInfiltrationLevel(inst);
- return false;
- } else {
- writeInfiltrationStatusText("You FAILED and were detected while trying to sneak past security! The facility's " +
- "security level increased by " + Object(_utils_StringHelperFunctions_js__WEBPACK_IMPORTED_MODULE_7__["formatNumber"])((res[1]*100)-100, 2).toString() + "%");
- }
- updateInfiltrationButtons(inst, scenario);
- updateInfiltrationLevelText(inst);
- return false;
- });
-
- pickdoorButton.addEventListener("click", function() {
- var res = attemptInfiltrationPickLockedDoor(inst);
- if (res[0]) {
- writeInfiltrationStatusText("You SUCCESSFULLY pick the locked door!");
- writeInfiltrationStatusText("The facility's security level increased by " + Object(_utils_StringHelperFunctions_js__WEBPACK_IMPORTED_MODULE_7__["formatNumber"])((res[1]*100)-100, 2).toString() + "%");
- endInfiltrationLevel(inst);
- return false;
- } else {
- writeInfiltrationStatusText("You FAILED to pick the locked door. The facility's security level " +
- "increased by " + Object(_utils_StringHelperFunctions_js__WEBPACK_IMPORTED_MODULE_7__["formatNumber"])((res[1]*100)-100, 2).toString() + "%");
- }
- updateInfiltrationButtons(inst, scenario);
- updateInfiltrationLevelText(inst);
- return false;
- });
-
- bribeButton.addEventListener("click", function() {
- var bribeAmt = _Constants_js__WEBPACK_IMPORTED_MODULE_1__["CONSTANTS"].InfiltrationBribeBaseAmount * inst.clearanceLevel;
- if (_Player_js__WEBPACK_IMPORTED_MODULE_3__["Player"].money.lt(bribeAmt)) {
- writeInfiltrationStatusText("You do not have enough money to bribe the guard. " +
- "You need $" + bribeAmt);
- return false;
- }
- var res = attemptInfiltrationBribe(inst);
- if (res[0]) {
- writeInfiltrationStatusText("You SUCCESSFULLY bribed a guard to let you through " +
- "to the next clearance level for $" + bribeAmt);
- _Player_js__WEBPACK_IMPORTED_MODULE_3__["Player"].loseMoney(bribeAmt);
- endInfiltrationLevel(inst);
- return false;
- } else {
- writeInfiltrationStatusText("You FAILED to bribe a guard! The guard is alerting " +
- "other security guards about your presence! The facility's " +
- "security level increased by " + Object(_utils_StringHelperFunctions_js__WEBPACK_IMPORTED_MODULE_7__["formatNumber"])((res[1]*100)-100, 2).toString() + "%");
- }
- updateInfiltrationButtons(inst, scenario);
- updateInfiltrationLevelText(inst);
- return false;
- });
-
- escapeButton.addEventListener("click", function() {
- var res = attemptInfiltrationEscape(inst);
- if (res[0]) {
- writeInfiltrationStatusText("You SUCCESSFULLY escape from the facility with the stolen classified " +
- "documents and company secrets!");
- endInfiltration(inst, true);
- return false;
- } else {
- writeInfiltrationStatusText("You FAILED to escape from the facility. You took 1 damage. The facility's " +
- "security level increased by " + Object(_utils_StringHelperFunctions_js__WEBPACK_IMPORTED_MODULE_7__["formatNumber"])((res[1]*100)-100, 2).toString() + "%");
- if (_Player_js__WEBPACK_IMPORTED_MODULE_3__["Player"].takeDamage(1)) {
- endInfiltration(inst, false);
- }
- }
- updateInfiltrationButtons(inst, scenario);
- updateInfiltrationLevelText(inst);
- return false;
- });
-
- updateInfiltrationButtons(inst, scenario);
- writeInfiltrationStatusText("");
- writeInfiltrationStatusText("You are now on clearance level " + inst.clearanceLevel + ".
" +
- scenario);
-}
-
-
-function endInfiltrationLevel(inst) {
- //Check if you gained any secrets
- if (inst.clearanceLevel % 5 == 0) {
- var baseSecretValue = inst.baseValue * inst.clearanceLevel / 2;
- var secretValue = baseSecretValue * _Player_js__WEBPACK_IMPORTED_MODULE_3__["Player"].faction_rep_mult *
- _Constants_js__WEBPACK_IMPORTED_MODULE_1__["CONSTANTS"].InfiltrationRepValue * _BitNode_js__WEBPACK_IMPORTED_MODULE_0__["BitNodeMultipliers"].InfiltrationRep;
- var secretMoneyValue = baseSecretValue * _Constants_js__WEBPACK_IMPORTED_MODULE_1__["CONSTANTS"].InfiltrationMoneyValue *
- _BitNode_js__WEBPACK_IMPORTED_MODULE_0__["BitNodeMultipliers"].InfiltrationMoney;
- inst.secretsStolen.push(baseSecretValue);
- Object(_utils_DialogBox_js__WEBPACK_IMPORTED_MODULE_4__["dialogBoxCreate"])("You found and stole a set of classified documents from the company. " +
- "These classified secrets could probably be sold for money ($" +
- Object(_utils_StringHelperFunctions_js__WEBPACK_IMPORTED_MODULE_7__["formatNumber"])(secretMoneyValue, 2) + "), or they " +
- "could be given to factions for reputation (" + Object(_utils_StringHelperFunctions_js__WEBPACK_IMPORTED_MODULE_7__["formatNumber"])(secretValue, 3) + " rep)");
- }
-
- //Increase security level based on difficulty
- inst.securityLevel *= (1 + (inst.difficulty / 100));
- writeInfiltrationStatusText("You move on to the facility's next clearance level. This " +
- "clearance level has " + inst.difficulty + "% higher security");
-
- //If this is max level, force endInfiltration
- if (inst.clearanceLevel >= inst.maxClearanceLevel) {
- endInfiltration(inst, true);
- } else {
- nextInfiltrationLevel(inst);
- }
-}
-
-function writeInfiltrationStatusText(txt) {
- var statusTxt = document.getElementById("infiltration-status-text");
- statusTxt.innerHTML += (txt + "
");
- statusTxt.parentElement.scrollTop = statusTxt.scrollHeight;
-}
-
-function clearInfiltrationStatusText() {
- document.getElementById("infiltration-status-text").innerHTML = "";
-}
-
-function updateInfiltrationLevelText(inst) {
- var totalValue = 0;
- var totalMoneyValue = 0;
- for (var i = 0; i < inst.secretsStolen.length; ++i) {
- totalValue += (inst.secretsStolen[i] * _Player_js__WEBPACK_IMPORTED_MODULE_3__["Player"].faction_rep_mult *
- _Constants_js__WEBPACK_IMPORTED_MODULE_1__["CONSTANTS"].InfiltrationRepValue * _BitNode_js__WEBPACK_IMPORTED_MODULE_0__["BitNodeMultipliers"].InfiltrationRep);
- totalMoneyValue += inst.secretsStolen[i] * _Constants_js__WEBPACK_IMPORTED_MODULE_1__["CONSTANTS"].InfiltrationMoneyValue *
- _BitNode_js__WEBPACK_IMPORTED_MODULE_0__["BitNodeMultipliers"].InfiltrationMoney;
- }
-
- var expMultiplier = 2 * inst.clearanceLevel / inst.maxClearanceLevel;
- document.getElementById("infiltration-level-text").innerHTML =
- "Facility name: " + inst.companyName + "
" +
- "Clearance Level: " + inst.clearanceLevel + "
" +
- "Security Level: " + Object(_utils_StringHelperFunctions_js__WEBPACK_IMPORTED_MODULE_7__["formatNumber"])(inst.securityLevel, 3) + "
" +
- "Total reputation value of secrets stolen: " + Object(_utils_StringHelperFunctions_js__WEBPACK_IMPORTED_MODULE_7__["formatNumber"])(totalValue, 3) + "
" +
- "Total monetary value of secrets stolen: $" + Object(_utils_StringHelperFunctions_js__WEBPACK_IMPORTED_MODULE_7__["formatNumber"])(totalMoneyValue, 2) + "
" +
- "Hack exp gained: " + Object(_utils_StringHelperFunctions_js__WEBPACK_IMPORTED_MODULE_7__["formatNumber"])(inst.hackingExpGained * expMultiplier, 3) + "
" +
- "Str exp gained: " + Object(_utils_StringHelperFunctions_js__WEBPACK_IMPORTED_MODULE_7__["formatNumber"])(inst.strExpGained * expMultiplier, 3) + "
" +
- "Def exp gained: " + Object(_utils_StringHelperFunctions_js__WEBPACK_IMPORTED_MODULE_7__["formatNumber"])(inst.defExpGained * expMultiplier, 3) + "
" +
- "Dex exp gained: " + Object(_utils_StringHelperFunctions_js__WEBPACK_IMPORTED_MODULE_7__["formatNumber"])(inst.dexExpGained * expMultiplier, 3) + "
" +
- "Agi exp gained: " + Object(_utils_StringHelperFunctions_js__WEBPACK_IMPORTED_MODULE_7__["formatNumber"])(inst.agiExpGained * expMultiplier, 3) + "
" +
- "Cha exp gained: " + Object(_utils_StringHelperFunctions_js__WEBPACK_IMPORTED_MODULE_7__["formatNumber"])(inst.chaExpGained * expMultiplier, 3);
-}
-
-function updateInfiltrationButtons(inst, scenario) {
- var killChance = getInfiltrationKillChance(inst);
- var knockoutChance = getInfiltrationKnockoutChance(inst);
- var stealthKnockoutChance = getInfiltrationStealthKnockoutChance(inst);
- var assassinateChance = getInfiltrationAssassinateChance(inst);
- var destroySecurityChance = getInfiltrationDestroySecurityChance(inst);
- var hackChance = getInfiltrationHackChance(inst);
- var sneakChance = getInfiltrationSneakChance(inst);
- var lockpickChance = getInfiltrationPickLockedDoorChance(inst);
- var bribeChance = getInfiltrationBribeChance(inst);
- var escapeChance = getInfiltrationEscapeChance(inst);
-
- document.getElementById("infiltration-escape").innerHTML = "Escape" +
- "" +
- "Attempt to escape the facility with the classified secrets and " +
- "documents you have stolen. You have a " +
- Object(_utils_StringHelperFunctions_js__WEBPACK_IMPORTED_MODULE_7__["formatNumber"])(escapeChance*100, 2) + "% chance of success. If you fail, " +
- "the security level will increase by 5%.";
-
- switch(scenario) {
- case InfiltrationScenarios.TechOrLockedDoor:
- document.getElementById("infiltration-pickdoor").innerHTML = "Lockpick" +
- "" +
- "Attempt to pick the locked door. You have a " +
- Object(_utils_StringHelperFunctions_js__WEBPACK_IMPORTED_MODULE_7__["formatNumber"])(lockpickChance*100, 2) + "% chance of success. " +
- "If you succeed, the security level will increased by 1%. If you fail, the " +
- "security level will increase by 3%.";
- case InfiltrationScenarios.TechOnly:
- document.getElementById("infiltration-hacksecurity").innerHTML = "Hack" +
- "" +
- "Attempt to hack and disable the security system. You have a " +
- Object(_utils_StringHelperFunctions_js__WEBPACK_IMPORTED_MODULE_7__["formatNumber"])(hackChance*100, 2) + "% chance of success. " +
- "If you succeed, the security level will increase by 3%. If you fail, " +
- "the security level will increase by 5%.";
-
- document.getElementById("infiltration-destroysecurity").innerHTML = "Destroy security" +
- "" +
- "Attempt to violently destroy the security system. You have a " +
- Object(_utils_StringHelperFunctions_js__WEBPACK_IMPORTED_MODULE_7__["formatNumber"])(destroySecurityChance*100, 2) + "% chance of success. " +
- "If you succeed, the security level will increase by 5%. If you fail, the " +
- "security level will increase by 10%. ";
-
- document.getElementById("infiltration-sneak").innerHTML = "Sneak" +
- "" +
- "Attempt to sneak past the security system. You have a " +
- Object(_utils_StringHelperFunctions_js__WEBPACK_IMPORTED_MODULE_7__["formatNumber"])(sneakChance*100, 2) + "% chance of success. " +
- "If you fail, the security level will increase by 8%. ";
- break;
- case InfiltrationScenarios.Bots:
- document.getElementById("infiltration-kill").innerHTML = "Destroy bots" +
- "" +
- "Attempt to destroy the security bots through combat. You have a " +
- Object(_utils_StringHelperFunctions_js__WEBPACK_IMPORTED_MODULE_7__["formatNumber"])(killChance*100, 2) + "% chance of success. " +
- "If you succeed, the security level will increase by 5%. If you fail, " +
- "the security level will increase by 10%. ";
-
- document.getElementById("infiltration-assassinate").innerHTML = "Assassinate bots" +
- "" +
- "Attempt to stealthily destroy the security bots through assassination. You have a " +
- Object(_utils_StringHelperFunctions_js__WEBPACK_IMPORTED_MODULE_7__["formatNumber"])(assassinateChance*100, 2) + "% chance of success. " +
- "If you fail, the security level will increase by 10%. ";
-
- document.getElementById("infiltration-hacksecurity").innerHTML = "Hack bots" +
- "" +
- "Attempt to disable the security bots by hacking them. You have a " +
- Object(_utils_StringHelperFunctions_js__WEBPACK_IMPORTED_MODULE_7__["formatNumber"])(hackChance*100, 2) + "% chance of success. " +
- "If you succeed, the security level will increase by 3%. If you fail, " +
- "the security level will increase by 5%. ";
-
- document.getElementById("infiltration-sneak").innerHTML = "Sneak" +
- "" +
- "Attempt to sneak past the security bots. You have a " +
- Object(_utils_StringHelperFunctions_js__WEBPACK_IMPORTED_MODULE_7__["formatNumber"])(sneakChance*100, 2) + "% chance of success. " +
- "If you fail, the security level will increase by 8%. ";
- break;
-
- case InfiltrationScenarios.Guards:
- default:
- document.getElementById("infiltration-kill").innerHTML = "Kill" +
- "" +
- "Attempt to kill the security guard. You have a " +
- Object(_utils_StringHelperFunctions_js__WEBPACK_IMPORTED_MODULE_7__["formatNumber"])(killChance*100, 2) + "% chance of success. " +
- "If you succeed, the security level will increase by 5%. If you fail, " +
- "the security level will decrease by 10%. ";
-
- document.getElementById("infiltration-knockout").innerHTML = "Knockout" +
- "" +
- "Attempt to knockout the security guard. You have a " +
- Object(_utils_StringHelperFunctions_js__WEBPACK_IMPORTED_MODULE_7__["formatNumber"])(knockoutChance*100, 2) + "% chance of success. " +
- "If you succeed, the security level will increase by 3%. If you fail, the " +
- "security level will increase by 10%. ";
-
- document.getElementById("infiltration-stealthknockout").innerHTML = "Stealth Knockout" +
- "" +
- "Attempt to stealthily knockout the security guard. You have a " +
- Object(_utils_StringHelperFunctions_js__WEBPACK_IMPORTED_MODULE_7__["formatNumber"])(stealthKnockoutChance*100, 2) + "% chance of success. " +
- "If you fail, the security level will increase by 10%. ";
-
- document.getElementById("infiltration-assassinate").innerHTML = "Assassinate" +
- "" +
- "Attempt to assassinate the security guard. You have a " +
- Object(_utils_StringHelperFunctions_js__WEBPACK_IMPORTED_MODULE_7__["formatNumber"])(assassinateChance*100, 2) + "% chance of success. " +
- "If you fail, the security level will increase by 5%. ";
-
- document.getElementById("infiltration-sneak").innerHTML = "Sneak" +
- "" +
- "Attempt to sneak past the security guard. You have a " +
- Object(_utils_StringHelperFunctions_js__WEBPACK_IMPORTED_MODULE_7__["formatNumber"])(sneakChance*100, 2) + "% chance of success. " +
- "If you fail, the security level will increase by 8%. ";
-
- document.getElementById("infiltration-bribe").innerHTML = "Bribe" +
- "" +
- "Attempt to bribe the security guard. You have a " +
- Object(_utils_StringHelperFunctions_js__WEBPACK_IMPORTED_MODULE_7__["formatNumber"])(bribeChance*100, 2) + "% chance of success. " +
- "If you fail, the security level will increase by 15%. ";
- break;
- }
-}
-
-let intWgt = _Constants_js__WEBPACK_IMPORTED_MODULE_1__["CONSTANTS"].IntelligenceInfiltrationWeight;
-
-//Kill
-//Success: 5%, Failure 10%, -Karma
-function attemptInfiltrationKill(inst) {
- var chance = getInfiltrationKillChance(inst);
- inst.gainStrengthExp(inst.securityLevel / 85) * _Player_js__WEBPACK_IMPORTED_MODULE_3__["Player"].strength_exp_mult;
- inst.gainDefenseExp(inst.securityLevel / 85) * _Player_js__WEBPACK_IMPORTED_MODULE_3__["Player"].defense_exp_mult;
- inst.gainDexterityExp(inst.securityLevel / 85) * _Player_js__WEBPACK_IMPORTED_MODULE_3__["Player"].dexterity_exp_mult;
- inst.gainAgilityExp(inst.securityLevel / 85) * _Player_js__WEBPACK_IMPORTED_MODULE_3__["Player"].agility_exp_mult;
- if (Math.random() <= chance) {
- inst.securityLevel *= 1.05;
- return [true, 1.05];
- } else {
- inst.securityLevel *= 1.1;
- return [false, 1.1];
- }
-}
-
-function getInfiltrationKillChance(inst) {
- var lvl = inst.securityLevel;
- return Math.min(0.95,
- (_Player_js__WEBPACK_IMPORTED_MODULE_3__["Player"].strength +
- _Player_js__WEBPACK_IMPORTED_MODULE_3__["Player"].dexterity +
- _Player_js__WEBPACK_IMPORTED_MODULE_3__["Player"].agility) / (1.45 * lvl));
-}
-
-
-//Knockout
-//Success: 3%, Failure: 10%
-function attemptInfiltrationKnockout(inst) {
- var chance = getInfiltrationKnockoutChance(inst);
- inst.gainStrengthExp(inst.securityLevel / 80) * _Player_js__WEBPACK_IMPORTED_MODULE_3__["Player"].strength_exp_mult;
- inst.gainDefenseExp(inst.securityLevel / 80) * _Player_js__WEBPACK_IMPORTED_MODULE_3__["Player"].defense_exp_mult;
- inst.gainDexterityExp(inst.securityLevel / 80) * _Player_js__WEBPACK_IMPORTED_MODULE_3__["Player"].dexterity_exp_mult;
- inst.gainAgilityExp(inst.securityLevel / 80) * _Player_js__WEBPACK_IMPORTED_MODULE_3__["Player"].agility_exp_mult;
- if (Math.random() <= chance) {
- inst.securityLevel *= 1.03;
- return [true, 1.03];
- } else {
- inst.securityLevel *= 1.1;
- return [false, 1.1];
- }
-}
-
-function getInfiltrationKnockoutChance(inst) {
- var lvl = inst.securityLevel;
- return Math.min(0.95,
- (_Player_js__WEBPACK_IMPORTED_MODULE_3__["Player"].strength +
- _Player_js__WEBPACK_IMPORTED_MODULE_3__["Player"].dexterity +
- _Player_js__WEBPACK_IMPORTED_MODULE_3__["Player"].agility) / (1.7 * lvl));
-}
-
-//Stealth knockout
-//Success: 0%, Failure: 10%
-function attemptInfiltrationStealthKnockout(inst) {
- var chance = getInfiltrationStealthKnockoutChance(inst);
- inst.gainStrengthExp(inst.securityLevel / 85) * _Player_js__WEBPACK_IMPORTED_MODULE_3__["Player"].strength_exp_mult;
- inst.gainDexterityExp(inst.securityLevel / 65) * _Player_js__WEBPACK_IMPORTED_MODULE_3__["Player"].dexterity_exp_mult;
- inst.gainAgilityExp(inst.securityLevel / 65) * _Player_js__WEBPACK_IMPORTED_MODULE_3__["Player"].agility_exp_mult;
- if (Math.random() <= chance) {
- return [true, 1];
- } else {
- inst.securityLevel *= 1.1;
- return [false, 1.1];
- }
-}
-
-function getInfiltrationStealthKnockoutChance(inst) {
- var lvl = inst.securityLevel;
- return Math.min(0.95,
- (0.55 * _Player_js__WEBPACK_IMPORTED_MODULE_3__["Player"].strength +
- 2 * _Player_js__WEBPACK_IMPORTED_MODULE_3__["Player"].dexterity +
- 2 * _Player_js__WEBPACK_IMPORTED_MODULE_3__["Player"].agility +
- intWgt * _Player_js__WEBPACK_IMPORTED_MODULE_3__["Player"].intelligence) / (3 * lvl));
-}
-
-//Assassination
-//Success: 0%, Failure: 5%, -Karma
-function attemptInfiltrationAssassinate(inst) {
- var chance = getInfiltrationAssassinateChance(inst);
- inst.gainStrengthExp(inst.securityLevel / 85) * _Player_js__WEBPACK_IMPORTED_MODULE_3__["Player"].strength_exp_mult;
- inst.gainDexterityExp(inst.securityLevel / 65) * _Player_js__WEBPACK_IMPORTED_MODULE_3__["Player"].dexterity_exp_mult;
- inst.gainAgilityExp(inst.securityLevel / 65) * _Player_js__WEBPACK_IMPORTED_MODULE_3__["Player"].agility_exp_mult;
- if (Math.random() <= chance) {
- return [true, 1];
- } else {
- inst.securityLevel *= 1.05;
- return [false, 1.05];
- }
-}
-
-function getInfiltrationAssassinateChance(inst) {
- var lvl = inst.securityLevel;
- return Math.min(0.95,
- (_Player_js__WEBPACK_IMPORTED_MODULE_3__["Player"].dexterity +
- 0.5 * _Player_js__WEBPACK_IMPORTED_MODULE_3__["Player"].agility +
- intWgt * _Player_js__WEBPACK_IMPORTED_MODULE_3__["Player"].intelligence) / (2 * lvl));
-}
-
-
-//Destroy security
-//Success: 5%, Failure: 10%
-function attemptInfiltrationDestroySecurity(inst) {
- var chance = getInfiltrationDestroySecurityChance(inst);
- inst.gainStrengthExp(inst.securityLevel / 85) * _Player_js__WEBPACK_IMPORTED_MODULE_3__["Player"].strength_exp_mult;
- inst.gainDefenseExp(inst.securityLevel / 85) * _Player_js__WEBPACK_IMPORTED_MODULE_3__["Player"].defense_exp_mult;
- inst.gainDexterityExp(inst.securityLevel / 85) * _Player_js__WEBPACK_IMPORTED_MODULE_3__["Player"].dexterity_exp_mult;
- inst.gainAgilityExp(inst.securityLevel / 85) * _Player_js__WEBPACK_IMPORTED_MODULE_3__["Player"].agility_exp_mult;
- if (Math.random() <= chance) {
- inst.securityLevel *= 1.05;
- return [true, 1.05];
- } else {
- inst.securityLevel *= 1.1;
- return [false, 1.1];
- }
-
-}
-
-function getInfiltrationDestroySecurityChance(inst) {
- var lvl = inst.securityLevel;
- return Math.min(0.95,
- (_Player_js__WEBPACK_IMPORTED_MODULE_3__["Player"].strength +
- _Player_js__WEBPACK_IMPORTED_MODULE_3__["Player"].dexterity +
- _Player_js__WEBPACK_IMPORTED_MODULE_3__["Player"].agility) / (2 * lvl));
-}
-
-
-//Hack security
-//Success: 3%, Failure: 5%
-function attemptInfiltrationHack(inst) {
- var chance = getInfiltrationHackChance(inst);
- inst.gainHackingExp(inst.securityLevel / 40) * _Player_js__WEBPACK_IMPORTED_MODULE_3__["Player"].hacking_exp_mult;
- inst.gainIntelligenceExp(inst.securityLevel / 690);
- if (Math.random() <= chance) {
- inst.securityLevel *= 1.03;
- return [true, 1.03];
- } else {
- inst.securityLevel *= 1.05;
- return [false, 1.05];
- }
-
-}
-
-function getInfiltrationHackChance(inst) {
- var lvl = inst.securityLevel;
- return Math.min(0.95,
- (_Player_js__WEBPACK_IMPORTED_MODULE_3__["Player"].hacking_skill +
- (intWgt * _Player_js__WEBPACK_IMPORTED_MODULE_3__["Player"].intelligence)) / lvl);
-}
-
-//Sneak past security
-//Success: 0%, Failure: 8%
-function attemptInfiltrationSneak(inst) {
- var chance = getInfiltrationSneakChance(inst);
- inst.gainAgilityExp(inst.securityLevel / 40) * _Player_js__WEBPACK_IMPORTED_MODULE_3__["Player"].agility_exp_mult;
- if (Math.random() <= chance) {
- return [true, 1];
- } else {
- inst.securityLevel *= 1.08;
- return [false, 1.08];
- }
-}
-
-function getInfiltrationSneakChance(inst) {
- var lvl = inst.securityLevel;
- return Math.min(0.95,
- (_Player_js__WEBPACK_IMPORTED_MODULE_3__["Player"].agility +
- 0.5 * _Player_js__WEBPACK_IMPORTED_MODULE_3__["Player"].dexterity +
- intWgt * _Player_js__WEBPACK_IMPORTED_MODULE_3__["Player"].intelligence) / (2 * lvl));
-}
-
-//Pick locked door
-//Success: 1%, Failure: 3%
-function attemptInfiltrationPickLockedDoor(inst) {
- var chance = getInfiltrationPickLockedDoorChance(inst);
- inst.gainDexterityExp(inst.securityLevel / 30) * _Player_js__WEBPACK_IMPORTED_MODULE_3__["Player"].dexterity_exp_mult;
- if (Math.random() <= chance) {
- inst.securityLevel *= 1.01;
- return [true, 1.01];
- } else {
- inst.securityLevel *= 1.03;
- return [false, 1.03];
- }
-}
-
-function getInfiltrationPickLockedDoorChance(inst) {
- var lvl = inst.securityLevel;
- return Math.min(0.95,
- (_Player_js__WEBPACK_IMPORTED_MODULE_3__["Player"].dexterity +
- intWgt * _Player_js__WEBPACK_IMPORTED_MODULE_3__["Player"].intelligence) / lvl);
-}
-
-//Bribe
-//Success: 0%, Failure: 15%,
-function attemptInfiltrationBribe(inst) {
- var chance = getInfiltrationBribeChance(inst);
- inst.gainCharismaExp(inst.securityLevel / 10) * _Player_js__WEBPACK_IMPORTED_MODULE_3__["Player"].charisma_exp_mult;
- if (Math.random() <= chance) {
- return [true, 1];
- } else {
- inst.securityLevel *= 1.15;
- return [false, 1.15];
- }
-}
-
-function getInfiltrationBribeChance(inst) {
- var lvl = inst.securityLevel;
- return Math.min(0.95,
- (_Player_js__WEBPACK_IMPORTED_MODULE_3__["Player"].charisma) / lvl);
-}
-
-//Escape
-//Failure: 5%
-function attemptInfiltrationEscape(inst) {
- var chance = getInfiltrationEscapeChance(inst);
- inst.gainAgilityExp(inst.securityLevel / 35) * _Player_js__WEBPACK_IMPORTED_MODULE_3__["Player"].agility_exp_mult;
- inst.gainDexterityExp(inst.securityLevel / 35) * _Player_js__WEBPACK_IMPORTED_MODULE_3__["Player"].dexterity_exp_mult;
- if (Math.random() <= chance) {
- return [true, 1];
- } else {
- inst.securityLevel *= 1.05;
- return [false, 1.05];
- }
-}
-
-function getInfiltrationEscapeChance(inst) {
- var lvl = inst.securityLevel;
- return Math.min(0.95,
- (2 * _Player_js__WEBPACK_IMPORTED_MODULE_3__["Player"].agility +
- _Player_js__WEBPACK_IMPORTED_MODULE_3__["Player"].dexterity +
- intWgt * _Player_js__WEBPACK_IMPORTED_MODULE_3__["Player"].intelligence) / lvl);
-}
-
-
-
-
-/***/ }),
-/* 119 */
-/*!**********************************************!*\
- !*** ./node_modules/file-saver/FileSaver.js ***!
- \**********************************************/
-/***/ (function(module, exports, __webpack_require__) {
-
-var __WEBPACK_AMD_DEFINE_RESULT__;/* FileSaver.js
- * A saveAs() FileSaver implementation.
- * 1.3.2
- * 2016-06-16 18:25:19
- *
- * By Eli Grey, http://eligrey.com
- * License: MIT
- * See https://github.com/eligrey/FileSaver.js/blob/master/LICENSE.md
- */
-
-/*global self */
-/*jslint bitwise: true, indent: 4, laxbreak: true, laxcomma: true, smarttabs: true, plusplus: true */
-
-/*! @source http://purl.eligrey.com/github/FileSaver.js/blob/master/FileSaver.js */
-
-var saveAs = saveAs || (function(view) {
- "use strict";
- // IE <10 is explicitly unsupported
- if (typeof view === "undefined" || typeof navigator !== "undefined" && /MSIE [1-9]\./.test(navigator.userAgent)) {
- return;
- }
- var
- doc = view.document
- // only get URL when necessary in case Blob.js hasn't overridden it yet
- , get_URL = function() {
- return view.URL || view.webkitURL || view;
- }
- , save_link = doc.createElementNS("http://www.w3.org/1999/xhtml", "a")
- , can_use_save_link = "download" in save_link
- , click = function(node) {
- var event = new MouseEvent("click");
- node.dispatchEvent(event);
- }
- , is_safari = /constructor/i.test(view.HTMLElement) || view.safari
- , is_chrome_ios =/CriOS\/[\d]+/.test(navigator.userAgent)
- , throw_outside = function(ex) {
- (view.setImmediate || view.setTimeout)(function() {
- throw ex;
- }, 0);
- }
- , force_saveable_type = "application/octet-stream"
- // the Blob API is fundamentally broken as there is no "downloadfinished" event to subscribe to
- , arbitrary_revoke_timeout = 1000 * 40 // in ms
- , revoke = function(file) {
- var revoker = function() {
- if (typeof file === "string") { // file is an object URL
- get_URL().revokeObjectURL(file);
- } else { // file is a File
- file.remove();
- }
- };
- setTimeout(revoker, arbitrary_revoke_timeout);
- }
- , dispatch = function(filesaver, event_types, event) {
- event_types = [].concat(event_types);
- var i = event_types.length;
- while (i--) {
- var listener = filesaver["on" + event_types[i]];
- if (typeof listener === "function") {
- try {
- listener.call(filesaver, event || filesaver);
- } catch (ex) {
- throw_outside(ex);
- }
- }
- }
- }
- , auto_bom = function(blob) {
- // prepend BOM for UTF-8 XML and text/* types (including HTML)
- // note: your browser will automatically convert UTF-16 U+FEFF to EF BB BF
- if (/^\s*(?:text\/\S*|application\/xml|\S*\/\S*\+xml)\s*;.*charset\s*=\s*utf-8/i.test(blob.type)) {
- return new Blob([String.fromCharCode(0xFEFF), blob], {type: blob.type});
- }
- return blob;
- }
- , FileSaver = function(blob, name, no_auto_bom) {
- if (!no_auto_bom) {
- blob = auto_bom(blob);
- }
- // First try a.download, then web filesystem, then object URLs
- var
- filesaver = this
- , type = blob.type
- , force = type === force_saveable_type
- , object_url
- , dispatch_all = function() {
- dispatch(filesaver, "writestart progress write writeend".split(" "));
- }
- // on any filesys errors revert to saving with object URLs
- , fs_error = function() {
- if ((is_chrome_ios || (force && is_safari)) && view.FileReader) {
- // Safari doesn't allow downloading of blob urls
- var reader = new FileReader();
- reader.onloadend = function() {
- var url = is_chrome_ios ? reader.result : reader.result.replace(/^data:[^;]*;/, 'data:attachment/file;');
- var popup = view.open(url, '_blank');
- if(!popup) view.location.href = url;
- url=undefined; // release reference before dispatching
- filesaver.readyState = filesaver.DONE;
- dispatch_all();
- };
- reader.readAsDataURL(blob);
- filesaver.readyState = filesaver.INIT;
- return;
- }
- // don't create more object URLs than needed
- if (!object_url) {
- object_url = get_URL().createObjectURL(blob);
- }
- if (force) {
- view.location.href = object_url;
- } else {
- var opened = view.open(object_url, "_blank");
- if (!opened) {
- // Apple does not allow window.open, see https://developer.apple.com/library/safari/documentation/Tools/Conceptual/SafariExtensionGuide/WorkingwithWindowsandTabs/WorkingwithWindowsandTabs.html
- view.location.href = object_url;
- }
- }
- filesaver.readyState = filesaver.DONE;
- dispatch_all();
- revoke(object_url);
- }
- ;
- filesaver.readyState = filesaver.INIT;
-
- if (can_use_save_link) {
- object_url = get_URL().createObjectURL(blob);
- setTimeout(function() {
- save_link.href = object_url;
- save_link.download = name;
- click(save_link);
- dispatch_all();
- revoke(object_url);
- filesaver.readyState = filesaver.DONE;
- });
- return;
- }
-
- fs_error();
- }
- , FS_proto = FileSaver.prototype
- , saveAs = function(blob, name, no_auto_bom) {
- return new FileSaver(blob, name || blob.name || "download", no_auto_bom);
- }
- ;
- // IE 10+ (native saveAs)
- if (typeof navigator !== "undefined" && navigator.msSaveOrOpenBlob) {
- return function(blob, name, no_auto_bom) {
- name = name || blob.name || "download";
-
- if (!no_auto_bom) {
- blob = auto_bom(blob);
- }
- return navigator.msSaveOrOpenBlob(blob, name);
- };
- }
-
- FS_proto.abort = function(){};
- FS_proto.readyState = FS_proto.INIT = 0;
- FS_proto.WRITING = 1;
- FS_proto.DONE = 2;
-
- FS_proto.error =
- FS_proto.onwritestart =
- FS_proto.onprogress =
- FS_proto.onwrite =
- FS_proto.onabort =
- FS_proto.onerror =
- FS_proto.onwriteend =
- null;
-
- return saveAs;
-}(
- typeof self !== "undefined" && self
- || typeof window !== "undefined" && window
- || this.content
-));
-// `self` is undefined in Firefox for Android content script context
-// while `this` is nsIContentFrameMessageManager
-// with an attribute `content` that corresponds to the window
-
-if (typeof module !== "undefined" && module.exports) {
- module.exports.saveAs = saveAs;
-} else if (("function" !== "undefined" && __webpack_require__(/*! !webpack amd define */ 83) !== null) && (__webpack_require__(/*! !webpack amd options */ 130) !== null)) {
- !(__WEBPACK_AMD_DEFINE_RESULT__ = (function() {
- return saveAs;
- }).call(exports, __webpack_require__, exports, module),
- __WEBPACK_AMD_DEFINE_RESULT__ !== undefined && (module.exports = __WEBPACK_AMD_DEFINE_RESULT__));
-}
-
-
-/***/ }),
-/* 120 */
-/*!*****************************************!*\
- !*** ./node_modules/jszip/lib/index.js ***!
- \*****************************************/
-/***/ (function(module, exports, __webpack_require__) {
-
-"use strict";
-
-
-/**
- * Representation a of zip file in js
- * @constructor
- */
-function JSZip() {
- // if this constructor is used without `new`, it adds `new` before itself:
- if(!(this instanceof JSZip)) {
- return new JSZip();
- }
-
- if(arguments.length) {
- throw new Error("The constructor with parameters has been removed in JSZip 3.0, please check the upgrade guide.");
- }
-
- // object containing the files :
- // {
- // "folder/" : {...},
- // "folder/data.txt" : {...}
- // }
- this.files = {};
-
- this.comment = null;
-
- // Where we are in the hierarchy
- this.root = "";
- this.clone = function() {
- var newObj = new JSZip();
- for (var i in this) {
- if (typeof this[i] !== "function") {
- newObj[i] = this[i];
- }
- }
- return newObj;
- };
-}
-JSZip.prototype = __webpack_require__(/*! ./object */ 181);
-JSZip.prototype.loadAsync = __webpack_require__(/*! ./load */ 135);
-JSZip.support = __webpack_require__(/*! ./support */ 50);
-JSZip.defaults = __webpack_require__(/*! ./defaults */ 99);
-
-// TODO find a better way to handle this version,
-// a require('package.json').version doesn't work with webpack, see #327
-JSZip.version = "3.1.5";
-
-JSZip.loadAsync = function (content, options) {
- return new JSZip().loadAsync(content, options);
-};
-
-JSZip.external = __webpack_require__(/*! ./external */ 58);
-module.exports = JSZip;
-
-
-/***/ }),
-/* 121 */
-/*!*****************************************************!*\
- !*** ./node_modules/chai/lib/chai/utils/proxify.js ***!
- \*****************************************************/
-/***/ (function(module, exports, __webpack_require__) {
-
-var config = __webpack_require__(/*! ../config */ 73);
-var flag = __webpack_require__(/*! ./flag */ 62);
-var getProperties = __webpack_require__(/*! ./getProperties */ 201);
-var isProxyEnabled = __webpack_require__(/*! ./isProxyEnabled */ 123);
-
-/*!
- * Chai - proxify utility
- * Copyright(c) 2012-2014 Jake Luer
@@ -185,7 +195,7 @@
+
+
+
$
-
+