diff --git a/dist/engine.bundle.js b/dist/engine.bundle.js
index 304ea3477..e952d978f 100644
--- a/dist/engine.bundle.js
+++ b/dist/engine.bundle.js
@@ -3107,8 +3107,8 @@ let CONSTANTS = {
TorRouterCost: 200000,
//Infiltration constants
- InfiltrationBribeBaseAmount: 100000, //Amount per clearance level
- InfiltrationMoneyValue: 2500, //Convert "secret" value to money
+ InfiltrationBribeBaseAmount: 100e3, //Amount per clearance level
+ InfiltrationMoneyValue: 3e3, //Convert "secret" value to money
InfiltrationRepValue: 1.4, //Convert "secret" value to faction reputation
//Stock market constants
@@ -3490,7 +3490,11 @@ let CONSTANTS = {
"World Stock Exchange account and TIX API Access
",
LatestUpdate:
- "v0.38.1
" +
+ "v0.39.0
" +
+ "* Added BitNode-7: Bladeburner 2079
" +
+ "* Infiltration base difficulty decreased by 10% for most locations
" +
+ "* Experience gains from Infiltration slightly increased
" +
+ "* Money gained from Infiltration increased by 20%
" +
"* Added 'var' declarations in Netscript 1.0 (only works with 'var', not 'let' or 'const')
" +
"* Script base RAM cost is now 1.6 GB (increased from 1.4 GB)
" +
"* While/for loops and if statements no longer cost RAM in scripts
" +
@@ -3966,7 +3970,7 @@ function displayLocationContent() {
purchaseHomeRam.style.display = "block";
purchaseHomeCores.style.display = "block";
setInfiltrateButton(infiltrate, Locations.AevumECorp,
- 6000, 116, 150, 8.5);
+ 5400, 116, 150, 8);
break;
case Locations.AevumBachmanAndAssociates:
@@ -3979,7 +3983,7 @@ function displayLocationContent() {
businessJob.style.display = "block";
securityJob.style.display = "block";
setInfiltrateButton(infiltrate, Locations.AevumBachmanAndAssociates,
- 1500, 42, 60, 5.75);
+ 1350, 42, 60, 5.25);
break;
case Locations.AevumClarkeIncorporated:
@@ -3992,7 +3996,7 @@ function displayLocationContent() {
businessJob.style.display = "block";
securityJob.style.display = "block";
setInfiltrateButton(infiltrate, Locations.AevumClarkeIncorporated,
- 2400, 34, 75, 5.4);
+ 2160, 34, 75, 5);
break;
case Locations.AevumFulcrumTechnologies:
@@ -4012,7 +4016,7 @@ function displayLocationContent() {
purchaseHomeRam.style.display = "block";
purchaseHomeCores.style.display = "block";
setInfiltrateButton(infiltrate, Locations.AevumFulcrumTechnologies,
- 6000, 96, 100, 9);
+ 5400, 96, 100, 8.5);
break;
case Locations.AevumAeroCorp:
@@ -4024,7 +4028,7 @@ function displayLocationContent() {
networkEngineerJob.style.display = "block";
securityJob.style.display = "block";
setInfiltrateButton(infiltrate, Locations.AevumAeroCorp,
- 2000, 32, 50, 6.3);
+ 1800, 32, 50, 5.9);
break;
case Locations.AevumGalacticCybersystems:
@@ -4037,7 +4041,7 @@ function displayLocationContent() {
networkEngineerJob.style.display = "block";
businessJob.style.display = "block";
setInfiltrateButton(infiltrate, Locations.AevumGalacticCybersystems,
- 1400, 30, 50, 5.3);
+ 1400, 30, 50, 4.9);
break;
case Locations.AevumWatchdogSecurity:
@@ -4051,7 +4055,7 @@ function displayLocationContent() {
securityJob.style.display = "block";
agentJob.style.display = "block";
setInfiltrateButton(infiltrate, Locations.AevumWatchdogSecurity,
- 850, 16, 30, 4.5);
+ 765, 16, 30, 4);
break;
case Locations.AevumRhoConstruction:
@@ -4060,7 +4064,7 @@ function displayLocationContent() {
softwareJob.style.display = "block";
businessJob.style.display = "block";
setInfiltrateButton(infiltrate, Locations.AevumRhoConstruction,
- 600, 12, 20, 2.7);
+ 540, 12, 20, 2.5);
break;
case Locations.AevumPolice:
@@ -4069,7 +4073,7 @@ function displayLocationContent() {
softwareJob.style.display = "block";
securityJob.style.display = "block";
setInfiltrateButton(infiltrate, Locations.AevumPolice,
- 700, 14, 25, 3.2);
+ 630, 14, 25, 2.9);
break;
case Locations.AevumNetLinkTechnologies:
@@ -4088,7 +4092,7 @@ function displayLocationContent() {
purchaseHomeRam.style.display = "block";
purchaseHomeCores.style.display = "block";
setInfiltrateButton(infiltrate, Locations.AevumNetLinkTechnologies,
- 160, 10, 15, 1.8);
+ 144, 10, 15, 1.65);
break;
case Locations.AevumCrushFitnessGym:
@@ -4122,7 +4126,7 @@ function displayLocationContent() {
businessJob.style.display = "block";
securityJob.style.display = "block";
setInfiltrateButton(infiltrate, Locations.ChongqingKuaiGongInternational,
- 5500, 48, 100, 9);
+ 4950, 48, 100, 8.25);
break;
case Locations.ChongqingSolarisSpaceSystems:
@@ -4134,7 +4138,7 @@ function displayLocationContent() {
networkEngineerJob.style.display = "block";
securityJob.style.display = "block";
setInfiltrateButton(infiltrate, Locations.ChongqingSolarisSpaceSystems,
- 3600, 26, 75, 8.6);
+ 3240, 26, 75, 8);
break;
@@ -4163,7 +4167,7 @@ function displayLocationContent() {
businessJob.style.display = "block";
securityJob.style.display = "block";
setInfiltrateButton(infiltrate, Locations.Sector12MegaCorp,
- 6000, 114, 125, 9.8);
+ 6000, 114, 125, 9);
break;
case Locations.Sector12BladeIndustries:
@@ -4176,7 +4180,7 @@ function displayLocationContent() {
businessJob.style.display = "block";
securityJob.style.display = "block";
setInfiltrateButton(infiltrate, Locations.Sector12BladeIndustries,
- 3000, 46, 100, 6.7);
+ 2700, 46, 100, 6.2);
break;
case Locations.Sector12FourSigma:
@@ -4189,7 +4193,7 @@ function displayLocationContent() {
businessJob.style.display = "block";
securityJob.style.display = "block";
setInfiltrateButton(infiltrate, Locations.Sector12FourSigma,
- 1500, 58, 100, 10.2);
+ 1500, 58, 100, 9.5);
break;
case Locations.Sector12IcarusMicrosystems:
@@ -4202,7 +4206,7 @@ function displayLocationContent() {
networkEngineerJob.style.display = "block";
businessJob.style.display = "block";
setInfiltrateButton(infiltrate, Locations.Sector12IcarusMicrosystems,
- 900, 32, 70, 7.8);
+ 810, 32, 70, 7.1);
break;
case Locations.Sector12UniversalEnergy:
@@ -4215,7 +4219,7 @@ function displayLocationContent() {
networkEngineerJob.style.display = "block";
businessJob.style.display = "block";
setInfiltrateButton(infiltrate, Locations.Sector12UniversalEnergy,
- 775, 24, 50, 6.3);
+ 775, 24, 50, 5.8);
break;
case Locations.Sector12DeltaOne:
@@ -4227,7 +4231,7 @@ function displayLocationContent() {
networkEngineerJob.style.display = "block";
securityJob.style.display = "block";
setInfiltrateButton(infiltrate, Locations.Sector12DeltaOne,
- 1200, 38, 75, 6.3);
+ 1080, 38, 75, 5.9);
break;
case Locations.Sector12CIA:
@@ -4240,7 +4244,7 @@ function displayLocationContent() {
securityJob.style.display = "block";
agentJob.style.display = "block";
setInfiltrateButton(infiltrate, Locations.Sector12CIA,
- 1450, 44, 80, 7.6);
+ 1305, 44, 80, 6.9);
break;
case Locations.Sector12NSA:
@@ -4259,13 +4263,13 @@ function displayLocationContent() {
nsaBladeburner.innerText = "Enter Bladeburner Headquarters";
} else {
setInfiltrateButton(infiltrate, Locations.Sector12NSA,
- 1400, 40, 80, 7.2);
+ 1260, 40, 80, 6.7);
nsaBladeburner.innerText = "Apply to Bladeburner Division";
}
nsaBladeburner.style.display = "block";
} else {
setInfiltrateButton(infiltrate, Locations.Sector12NSA,
- 1400, 40, 80, 7.2);
+ 1260, 40, 80, 6.7);
}
break;
@@ -4281,7 +4285,7 @@ function displayLocationContent() {
purchaseHomeRam.style.display = "block";
purchaseHomeCores.style.display = "block";
setInfiltrateButton(infiltrate, Locations.Sector12AlphaEnterprises,
- 250, 14, 40, 2.7);
+ 225, 14, 40, 2.5);
break;
case Locations.Sector12CarmichaelSecurity:
@@ -4295,7 +4299,7 @@ function displayLocationContent() {
securityJob.style.display = "block";
agentJob.style.display = "block";
setInfiltrateButton(infiltrate, Locations.Sector12CarmichaelSecurity,
- 500, 18, 60, 2.7);
+ 450, 18, 60, 2.5);
break;
case Locations.Sector12FoodNStuff:
@@ -4353,7 +4357,7 @@ function displayLocationContent() {
securityEngineerJob.style.display = "block";
networkEngineerJob.style.display = "block";
setInfiltrateButton(infiltrate, Locations.NewTokyoDefComm,
- 1300, 28, 70, 5.4);
+ 1170, 28, 70, 5);
break;
case Locations.NewTokyoVitaLife:
@@ -4366,7 +4370,7 @@ function displayLocationContent() {
networkEngineerJob.style.display = "block";
businessJob.style.display = "block";
setInfiltrateButton(infiltrate, Locations.NewTokyoVitaLife,
- 750, 22, 100, 5);
+ 675, 22, 100, 4.7);
break;
case Locations.NewTokyoGlobalPharmaceuticals:
@@ -4380,7 +4384,7 @@ function displayLocationContent() {
businessJob.style.display = "block";
securityJob.style.display = "block";
setInfiltrateButton(infiltrate, Locations.NewTokyoGlobalPharmaceuticals,
- 900, 24, 80, 5.4);
+ 810, 24, 80, 5.1);
break;
case Locations.NewTokyoNoodleBar:
@@ -4420,7 +4424,7 @@ function displayLocationContent() {
purchaseHomeRam.style.display = "block";
purchaseHomeCores.style.display = "block";
setInfiltrateButton(infiltrate, Locations.IshimaStormTechnologies,
- 700, 24, 100, 5.9);
+ 630, 24, 100, 5.5);
break;
case Locations.IshimaNovaMedical:
@@ -4433,7 +4437,7 @@ function displayLocationContent() {
networkEngineerJob.style.display = "block";
businessJob.style.display = "block";
setInfiltrateButton(infiltrate, Locations.IshimaNovaMedical,
- 600, 20, 50, 4.5);
+ 540, 20, 50, 4.25);
break;
case Locations.IshimaOmegaSoftware:
@@ -4452,7 +4456,7 @@ function displayLocationContent() {
purchaseHomeRam.style.display = "block";
purchaseHomeCores.style.display = "block";
setInfiltrateButton(infiltrate, Locations.IshimaOmegaSoftware,
- 200, 10, 40, 2.3);
+ 180, 10, 40, 2.1);
break;
case Locations.VolhavenTravelAgency:
@@ -4485,7 +4489,7 @@ function displayLocationContent() {
purchase512gb.style.display = "block";
purchase1tb.style.display = "block";
setInfiltrateButton(infiltrate, Locations.VolhavenOmniTekIncorporated,
- 1500, 44, 100, 6.3);
+ 1350, 44, 100, 5.9);
break;
case Locations.VolhavenNWO:
@@ -4498,7 +4502,7 @@ function displayLocationContent() {
businessJob.style.display = "block";
securityJob.style.display = "block";
setInfiltrateButton(infiltrate, Locations.VolhavenNWO,
- 1800, 56, 200, 7.2);
+ 1620, 56, 200, 6.8);
break;
case Locations.VolhavenHeliosLabs:
@@ -4510,7 +4514,7 @@ function displayLocationContent() {
securityEngineerJob.style.display = "block";
networkEngineerJob.style.display = "block";
setInfiltrateButton(infiltrate, Locations.VolhavenHeliosLabs,
- 1200, 28, 75, 5.4);
+ 1200, 28, 75, 5);
break;
case Locations.VolhavenOmniaCybersystems:
@@ -4522,7 +4526,7 @@ function displayLocationContent() {
networkEngineerJob.style.display = "block";
securityJob.style.display = "block";
setInfiltrateButton(infiltrate, Locations.VolhavenOmniaCybersystems,
- 900, 28, 90, 5.8);
+ 810, 28, 90, 5.3);
break;
case Locations.VolhavenLexoCorp:
@@ -4536,7 +4540,7 @@ function displayLocationContent() {
businessJob.style.display = "block";
securityJob.style.display = "block";
setInfiltrateButton(infiltrate, Locations.VolhavenLexoCorp,
- 500, 14, 40, 3.1);
+ 500, 14, 40, 2.8);
break;
case Locations.VolhavenSysCoreSecurities:
@@ -4547,7 +4551,7 @@ function displayLocationContent() {
securityEngineerJob.style.display = "block";
networkEngineerJob.style.display = "block";
setInfiltrateButton(infiltrate, Locations.VolhavenSysCoreSecurities,
- 600, 16, 50, 3.6);
+ 540, 16, 50, 3.2);
break;
case Locations.VolhavenCompuTek:
@@ -4569,7 +4573,7 @@ function displayLocationContent() {
purchaseHomeRam.style.display = "block";
purchaseHomeCores.style.display = "block";
setInfiltrateButton(infiltrate, Locations.VolhavenCompuTek,
- 300, 12, 35, 3.1);
+ 270, 12, 35, 2.75);
break;
case Locations.VolhavenMilleniumFitnessGym:
@@ -73856,10 +73860,10 @@ let intWgt = _Constants_js__WEBPACK_IMPORTED_MODULE_1__["CONSTANTS"].Intelligenc
//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;
+ inst.gainStrengthExp(inst.securityLevel / 75) * _Player_js__WEBPACK_IMPORTED_MODULE_3__["Player"].strength_exp_mult;
+ inst.gainDefenseExp(inst.securityLevel / 75) * _Player_js__WEBPACK_IMPORTED_MODULE_3__["Player"].defense_exp_mult;
+ inst.gainDexterityExp(inst.securityLevel / 75) * _Player_js__WEBPACK_IMPORTED_MODULE_3__["Player"].dexterity_exp_mult;
+ inst.gainAgilityExp(inst.securityLevel / 75) * _Player_js__WEBPACK_IMPORTED_MODULE_3__["Player"].agility_exp_mult;
if (Math.random() <= chance) {
inst.securityLevel *= 1.05;
return [true, 1.05];
@@ -73882,10 +73886,10 @@ function getInfiltrationKillChance(inst) {
//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;
+ inst.gainStrengthExp(inst.securityLevel / 70) * _Player_js__WEBPACK_IMPORTED_MODULE_3__["Player"].strength_exp_mult;
+ inst.gainDefenseExp(inst.securityLevel / 70) * _Player_js__WEBPACK_IMPORTED_MODULE_3__["Player"].defense_exp_mult;
+ inst.gainDexterityExp(inst.securityLevel / 70) * _Player_js__WEBPACK_IMPORTED_MODULE_3__["Player"].dexterity_exp_mult;
+ inst.gainAgilityExp(inst.securityLevel / 70) * _Player_js__WEBPACK_IMPORTED_MODULE_3__["Player"].agility_exp_mult;
if (Math.random() <= chance) {
inst.securityLevel *= 1.03;
return [true, 1.03];
@@ -73907,9 +73911,9 @@ function getInfiltrationKnockoutChance(inst) {
//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;
+ inst.gainStrengthExp(inst.securityLevel / 75) * _Player_js__WEBPACK_IMPORTED_MODULE_3__["Player"].strength_exp_mult;
+ inst.gainDexterityExp(inst.securityLevel / 60) * _Player_js__WEBPACK_IMPORTED_MODULE_3__["Player"].dexterity_exp_mult;
+ inst.gainAgilityExp(inst.securityLevel / 60) * _Player_js__WEBPACK_IMPORTED_MODULE_3__["Player"].agility_exp_mult;
if (Math.random() <= chance) {
return [true, 1];
} else {
@@ -73931,9 +73935,9 @@ function getInfiltrationStealthKnockoutChance(inst) {
//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;
+ inst.gainStrengthExp(inst.securityLevel / 75) * _Player_js__WEBPACK_IMPORTED_MODULE_3__["Player"].strength_exp_mult;
+ inst.gainDexterityExp(inst.securityLevel / 55) * _Player_js__WEBPACK_IMPORTED_MODULE_3__["Player"].dexterity_exp_mult;
+ inst.gainAgilityExp(inst.securityLevel / 55) * _Player_js__WEBPACK_IMPORTED_MODULE_3__["Player"].agility_exp_mult;
if (Math.random() <= chance) {
return [true, 1];
} else {
@@ -73955,10 +73959,10 @@ function getInfiltrationAssassinateChance(inst) {
//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;
+ inst.gainStrengthExp(inst.securityLevel / 75) * _Player_js__WEBPACK_IMPORTED_MODULE_3__["Player"].strength_exp_mult;
+ inst.gainDefenseExp(inst.securityLevel / 75) * _Player_js__WEBPACK_IMPORTED_MODULE_3__["Player"].defense_exp_mult;
+ inst.gainDexterityExp(inst.securityLevel / 75) * _Player_js__WEBPACK_IMPORTED_MODULE_3__["Player"].dexterity_exp_mult;
+ inst.gainAgilityExp(inst.securityLevel / 75) * _Player_js__WEBPACK_IMPORTED_MODULE_3__["Player"].agility_exp_mult;
if (Math.random() <= chance) {
inst.securityLevel *= 1.05;
return [true, 1.05];
@@ -73982,8 +73986,8 @@ function getInfiltrationDestroySecurityChance(inst) {
//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);
+ inst.gainHackingExp(inst.securityLevel / 30) * _Player_js__WEBPACK_IMPORTED_MODULE_3__["Player"].hacking_exp_mult;
+ inst.gainIntelligenceExp(inst.securityLevel / 680);
if (Math.random() <= chance) {
inst.securityLevel *= 1.03;
return [true, 1.03];
@@ -74005,7 +74009,7 @@ function getInfiltrationHackChance(inst) {
//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;
+ inst.gainAgilityExp(inst.securityLevel / 30) * _Player_js__WEBPACK_IMPORTED_MODULE_3__["Player"].agility_exp_mult;
if (Math.random() <= chance) {
return [true, 1];
} else {
@@ -74026,7 +74030,7 @@ function getInfiltrationSneakChance(inst) {
//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;
+ inst.gainDexterityExp(inst.securityLevel / 25) * _Player_js__WEBPACK_IMPORTED_MODULE_3__["Player"].dexterity_exp_mult;
if (Math.random() <= chance) {
inst.securityLevel *= 1.01;
return [true, 1.01];
@@ -74047,7 +74051,7 @@ function getInfiltrationPickLockedDoorChance(inst) {
//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;
+ inst.gainCharismaExp(inst.securityLevel / 8) * _Player_js__WEBPACK_IMPORTED_MODULE_3__["Player"].charisma_exp_mult;
if (Math.random() <= chance) {
return [true, 1];
} else {
@@ -74066,8 +74070,8 @@ function getInfiltrationBribeChance(inst) {
//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;
+ inst.gainAgilityExp(inst.securityLevel / 30) * _Player_js__WEBPACK_IMPORTED_MODULE_3__["Player"].agility_exp_mult;
+ inst.gainDexterityExp(inst.securityLevel / 30) * _Player_js__WEBPACK_IMPORTED_MODULE_3__["Player"].dexterity_exp_mult;
if (Math.random() <= chance) {
return [true, 1];
} else {
diff --git a/src/Constants.js b/src/Constants.js
index bf293fa0d..4a5851040 100644
--- a/src/Constants.js
+++ b/src/Constants.js
@@ -106,8 +106,8 @@ let CONSTANTS = {
TorRouterCost: 200000,
//Infiltration constants
- InfiltrationBribeBaseAmount: 100000, //Amount per clearance level
- InfiltrationMoneyValue: 2500, //Convert "secret" value to money
+ InfiltrationBribeBaseAmount: 100e3, //Amount per clearance level
+ InfiltrationMoneyValue: 3e3, //Convert "secret" value to money
InfiltrationRepValue: 1.4, //Convert "secret" value to faction reputation
//Stock market constants
@@ -489,7 +489,11 @@ let CONSTANTS = {
"World Stock Exchange account and TIX API Access
",
LatestUpdate:
- "v0.38.1
" +
+ "v0.39.0
" +
+ "* Added BitNode-7: Bladeburner 2079
" +
+ "* Infiltration base difficulty decreased by 10% for most locations
" +
+ "* Experience gains from Infiltration slightly increased
" +
+ "* Money gained from Infiltration increased by 20%
" +
"* Added 'var' declarations in Netscript 1.0 (only works with 'var', not 'let' or 'const')
" +
"* Script base RAM cost is now 1.6 GB (increased from 1.4 GB)
" +
"* While/for loops and if statements no longer cost RAM in scripts
" +
diff --git a/src/Infiltration.js b/src/Infiltration.js
index 1b5d08280..345adf9f0 100644
--- a/src/Infiltration.js
+++ b/src/Infiltration.js
@@ -594,10 +594,10 @@ let intWgt = CONSTANTS.IntelligenceInfiltrationWeight;
//Success: 5%, Failure 10%, -Karma
function attemptInfiltrationKill(inst) {
var chance = getInfiltrationKillChance(inst);
- inst.gainStrengthExp(inst.securityLevel / 85) * Player.strength_exp_mult;
- inst.gainDefenseExp(inst.securityLevel / 85) * Player.defense_exp_mult;
- inst.gainDexterityExp(inst.securityLevel / 85) * Player.dexterity_exp_mult;
- inst.gainAgilityExp(inst.securityLevel / 85) * Player.agility_exp_mult;
+ inst.gainStrengthExp(inst.securityLevel / 75) * Player.strength_exp_mult;
+ inst.gainDefenseExp(inst.securityLevel / 75) * Player.defense_exp_mult;
+ inst.gainDexterityExp(inst.securityLevel / 75) * Player.dexterity_exp_mult;
+ inst.gainAgilityExp(inst.securityLevel / 75) * Player.agility_exp_mult;
if (Math.random() <= chance) {
inst.securityLevel *= 1.05;
return [true, 1.05];
@@ -620,10 +620,10 @@ function getInfiltrationKillChance(inst) {
//Success: 3%, Failure: 10%
function attemptInfiltrationKnockout(inst) {
var chance = getInfiltrationKnockoutChance(inst);
- inst.gainStrengthExp(inst.securityLevel / 80) * Player.strength_exp_mult;
- inst.gainDefenseExp(inst.securityLevel / 80) * Player.defense_exp_mult;
- inst.gainDexterityExp(inst.securityLevel / 80) * Player.dexterity_exp_mult;
- inst.gainAgilityExp(inst.securityLevel / 80) * Player.agility_exp_mult;
+ inst.gainStrengthExp(inst.securityLevel / 70) * Player.strength_exp_mult;
+ inst.gainDefenseExp(inst.securityLevel / 70) * Player.defense_exp_mult;
+ inst.gainDexterityExp(inst.securityLevel / 70) * Player.dexterity_exp_mult;
+ inst.gainAgilityExp(inst.securityLevel / 70) * Player.agility_exp_mult;
if (Math.random() <= chance) {
inst.securityLevel *= 1.03;
return [true, 1.03];
@@ -645,9 +645,9 @@ function getInfiltrationKnockoutChance(inst) {
//Success: 0%, Failure: 10%
function attemptInfiltrationStealthKnockout(inst) {
var chance = getInfiltrationStealthKnockoutChance(inst);
- inst.gainStrengthExp(inst.securityLevel / 85) * Player.strength_exp_mult;
- inst.gainDexterityExp(inst.securityLevel / 65) * Player.dexterity_exp_mult;
- inst.gainAgilityExp(inst.securityLevel / 65) * Player.agility_exp_mult;
+ inst.gainStrengthExp(inst.securityLevel / 75) * Player.strength_exp_mult;
+ inst.gainDexterityExp(inst.securityLevel / 60) * Player.dexterity_exp_mult;
+ inst.gainAgilityExp(inst.securityLevel / 60) * Player.agility_exp_mult;
if (Math.random() <= chance) {
return [true, 1];
} else {
@@ -669,9 +669,9 @@ function getInfiltrationStealthKnockoutChance(inst) {
//Success: 0%, Failure: 5%, -Karma
function attemptInfiltrationAssassinate(inst) {
var chance = getInfiltrationAssassinateChance(inst);
- inst.gainStrengthExp(inst.securityLevel / 85) * Player.strength_exp_mult;
- inst.gainDexterityExp(inst.securityLevel / 65) * Player.dexterity_exp_mult;
- inst.gainAgilityExp(inst.securityLevel / 65) * Player.agility_exp_mult;
+ inst.gainStrengthExp(inst.securityLevel / 75) * Player.strength_exp_mult;
+ inst.gainDexterityExp(inst.securityLevel / 55) * Player.dexterity_exp_mult;
+ inst.gainAgilityExp(inst.securityLevel / 55) * Player.agility_exp_mult;
if (Math.random() <= chance) {
return [true, 1];
} else {
@@ -693,10 +693,10 @@ function getInfiltrationAssassinateChance(inst) {
//Success: 5%, Failure: 10%
function attemptInfiltrationDestroySecurity(inst) {
var chance = getInfiltrationDestroySecurityChance(inst);
- inst.gainStrengthExp(inst.securityLevel / 85) * Player.strength_exp_mult;
- inst.gainDefenseExp(inst.securityLevel / 85) * Player.defense_exp_mult;
- inst.gainDexterityExp(inst.securityLevel / 85) * Player.dexterity_exp_mult;
- inst.gainAgilityExp(inst.securityLevel / 85) * Player.agility_exp_mult;
+ inst.gainStrengthExp(inst.securityLevel / 75) * Player.strength_exp_mult;
+ inst.gainDefenseExp(inst.securityLevel / 75) * Player.defense_exp_mult;
+ inst.gainDexterityExp(inst.securityLevel / 75) * Player.dexterity_exp_mult;
+ inst.gainAgilityExp(inst.securityLevel / 75) * Player.agility_exp_mult;
if (Math.random() <= chance) {
inst.securityLevel *= 1.05;
return [true, 1.05];
@@ -720,8 +720,8 @@ function getInfiltrationDestroySecurityChance(inst) {
//Success: 3%, Failure: 5%
function attemptInfiltrationHack(inst) {
var chance = getInfiltrationHackChance(inst);
- inst.gainHackingExp(inst.securityLevel / 40) * Player.hacking_exp_mult;
- inst.gainIntelligenceExp(inst.securityLevel / 690);
+ inst.gainHackingExp(inst.securityLevel / 30) * Player.hacking_exp_mult;
+ inst.gainIntelligenceExp(inst.securityLevel / 680);
if (Math.random() <= chance) {
inst.securityLevel *= 1.03;
return [true, 1.03];
@@ -743,7 +743,7 @@ function getInfiltrationHackChance(inst) {
//Success: 0%, Failure: 8%
function attemptInfiltrationSneak(inst) {
var chance = getInfiltrationSneakChance(inst);
- inst.gainAgilityExp(inst.securityLevel / 40) * Player.agility_exp_mult;
+ inst.gainAgilityExp(inst.securityLevel / 30) * Player.agility_exp_mult;
if (Math.random() <= chance) {
return [true, 1];
} else {
@@ -764,7 +764,7 @@ function getInfiltrationSneakChance(inst) {
//Success: 1%, Failure: 3%
function attemptInfiltrationPickLockedDoor(inst) {
var chance = getInfiltrationPickLockedDoorChance(inst);
- inst.gainDexterityExp(inst.securityLevel / 30) * Player.dexterity_exp_mult;
+ inst.gainDexterityExp(inst.securityLevel / 25) * Player.dexterity_exp_mult;
if (Math.random() <= chance) {
inst.securityLevel *= 1.01;
return [true, 1.01];
@@ -785,7 +785,7 @@ function getInfiltrationPickLockedDoorChance(inst) {
//Success: 0%, Failure: 15%,
function attemptInfiltrationBribe(inst) {
var chance = getInfiltrationBribeChance(inst);
- inst.gainCharismaExp(inst.securityLevel / 10) * Player.charisma_exp_mult;
+ inst.gainCharismaExp(inst.securityLevel / 8) * Player.charisma_exp_mult;
if (Math.random() <= chance) {
return [true, 1];
} else {
@@ -804,8 +804,8 @@ function getInfiltrationBribeChance(inst) {
//Failure: 5%
function attemptInfiltrationEscape(inst) {
var chance = getInfiltrationEscapeChance(inst);
- inst.gainAgilityExp(inst.securityLevel / 35) * Player.agility_exp_mult;
- inst.gainDexterityExp(inst.securityLevel / 35) * Player.dexterity_exp_mult;
+ inst.gainAgilityExp(inst.securityLevel / 30) * Player.agility_exp_mult;
+ inst.gainDexterityExp(inst.securityLevel / 30) * Player.dexterity_exp_mult;
if (Math.random() <= chance) {
return [true, 1];
} else {
diff --git a/src/Location.js b/src/Location.js
index 4b7a15e25..3a41679b4 100644
--- a/src/Location.js
+++ b/src/Location.js
@@ -432,7 +432,7 @@ function displayLocationContent() {
purchaseHomeRam.style.display = "block";
purchaseHomeCores.style.display = "block";
setInfiltrateButton(infiltrate, Locations.AevumECorp,
- 6000, 116, 150, 8.5);
+ 5400, 116, 150, 8);
break;
case Locations.AevumBachmanAndAssociates:
@@ -445,7 +445,7 @@ function displayLocationContent() {
businessJob.style.display = "block";
securityJob.style.display = "block";
setInfiltrateButton(infiltrate, Locations.AevumBachmanAndAssociates,
- 1500, 42, 60, 5.75);
+ 1350, 42, 60, 5.25);
break;
case Locations.AevumClarkeIncorporated:
@@ -458,7 +458,7 @@ function displayLocationContent() {
businessJob.style.display = "block";
securityJob.style.display = "block";
setInfiltrateButton(infiltrate, Locations.AevumClarkeIncorporated,
- 2400, 34, 75, 5.4);
+ 2160, 34, 75, 5);
break;
case Locations.AevumFulcrumTechnologies:
@@ -478,7 +478,7 @@ function displayLocationContent() {
purchaseHomeRam.style.display = "block";
purchaseHomeCores.style.display = "block";
setInfiltrateButton(infiltrate, Locations.AevumFulcrumTechnologies,
- 6000, 96, 100, 9);
+ 5400, 96, 100, 8.5);
break;
case Locations.AevumAeroCorp:
@@ -490,7 +490,7 @@ function displayLocationContent() {
networkEngineerJob.style.display = "block";
securityJob.style.display = "block";
setInfiltrateButton(infiltrate, Locations.AevumAeroCorp,
- 2000, 32, 50, 6.3);
+ 1800, 32, 50, 5.9);
break;
case Locations.AevumGalacticCybersystems:
@@ -503,7 +503,7 @@ function displayLocationContent() {
networkEngineerJob.style.display = "block";
businessJob.style.display = "block";
setInfiltrateButton(infiltrate, Locations.AevumGalacticCybersystems,
- 1400, 30, 50, 5.3);
+ 1400, 30, 50, 4.9);
break;
case Locations.AevumWatchdogSecurity:
@@ -517,7 +517,7 @@ function displayLocationContent() {
securityJob.style.display = "block";
agentJob.style.display = "block";
setInfiltrateButton(infiltrate, Locations.AevumWatchdogSecurity,
- 850, 16, 30, 4.5);
+ 765, 16, 30, 4);
break;
case Locations.AevumRhoConstruction:
@@ -526,7 +526,7 @@ function displayLocationContent() {
softwareJob.style.display = "block";
businessJob.style.display = "block";
setInfiltrateButton(infiltrate, Locations.AevumRhoConstruction,
- 600, 12, 20, 2.7);
+ 540, 12, 20, 2.5);
break;
case Locations.AevumPolice:
@@ -535,7 +535,7 @@ function displayLocationContent() {
softwareJob.style.display = "block";
securityJob.style.display = "block";
setInfiltrateButton(infiltrate, Locations.AevumPolice,
- 700, 14, 25, 3.2);
+ 630, 14, 25, 2.9);
break;
case Locations.AevumNetLinkTechnologies:
@@ -554,7 +554,7 @@ function displayLocationContent() {
purchaseHomeRam.style.display = "block";
purchaseHomeCores.style.display = "block";
setInfiltrateButton(infiltrate, Locations.AevumNetLinkTechnologies,
- 160, 10, 15, 1.8);
+ 144, 10, 15, 1.65);
break;
case Locations.AevumCrushFitnessGym:
@@ -588,7 +588,7 @@ function displayLocationContent() {
businessJob.style.display = "block";
securityJob.style.display = "block";
setInfiltrateButton(infiltrate, Locations.ChongqingKuaiGongInternational,
- 5500, 48, 100, 9);
+ 4950, 48, 100, 8.25);
break;
case Locations.ChongqingSolarisSpaceSystems:
@@ -600,7 +600,7 @@ function displayLocationContent() {
networkEngineerJob.style.display = "block";
securityJob.style.display = "block";
setInfiltrateButton(infiltrate, Locations.ChongqingSolarisSpaceSystems,
- 3600, 26, 75, 8.6);
+ 3240, 26, 75, 8);
break;
@@ -629,7 +629,7 @@ function displayLocationContent() {
businessJob.style.display = "block";
securityJob.style.display = "block";
setInfiltrateButton(infiltrate, Locations.Sector12MegaCorp,
- 6000, 114, 125, 9.8);
+ 6000, 114, 125, 9);
break;
case Locations.Sector12BladeIndustries:
@@ -642,7 +642,7 @@ function displayLocationContent() {
businessJob.style.display = "block";
securityJob.style.display = "block";
setInfiltrateButton(infiltrate, Locations.Sector12BladeIndustries,
- 3000, 46, 100, 6.7);
+ 2700, 46, 100, 6.2);
break;
case Locations.Sector12FourSigma:
@@ -655,7 +655,7 @@ function displayLocationContent() {
businessJob.style.display = "block";
securityJob.style.display = "block";
setInfiltrateButton(infiltrate, Locations.Sector12FourSigma,
- 1500, 58, 100, 10.2);
+ 1500, 58, 100, 9.5);
break;
case Locations.Sector12IcarusMicrosystems:
@@ -668,7 +668,7 @@ function displayLocationContent() {
networkEngineerJob.style.display = "block";
businessJob.style.display = "block";
setInfiltrateButton(infiltrate, Locations.Sector12IcarusMicrosystems,
- 900, 32, 70, 7.8);
+ 810, 32, 70, 7.1);
break;
case Locations.Sector12UniversalEnergy:
@@ -681,7 +681,7 @@ function displayLocationContent() {
networkEngineerJob.style.display = "block";
businessJob.style.display = "block";
setInfiltrateButton(infiltrate, Locations.Sector12UniversalEnergy,
- 775, 24, 50, 6.3);
+ 775, 24, 50, 5.8);
break;
case Locations.Sector12DeltaOne:
@@ -693,7 +693,7 @@ function displayLocationContent() {
networkEngineerJob.style.display = "block";
securityJob.style.display = "block";
setInfiltrateButton(infiltrate, Locations.Sector12DeltaOne,
- 1200, 38, 75, 6.3);
+ 1080, 38, 75, 5.9);
break;
case Locations.Sector12CIA:
@@ -706,7 +706,7 @@ function displayLocationContent() {
securityJob.style.display = "block";
agentJob.style.display = "block";
setInfiltrateButton(infiltrate, Locations.Sector12CIA,
- 1450, 44, 80, 7.6);
+ 1305, 44, 80, 6.9);
break;
case Locations.Sector12NSA:
@@ -725,13 +725,13 @@ function displayLocationContent() {
nsaBladeburner.innerText = "Enter Bladeburner Headquarters";
} else {
setInfiltrateButton(infiltrate, Locations.Sector12NSA,
- 1400, 40, 80, 7.2);
+ 1260, 40, 80, 6.7);
nsaBladeburner.innerText = "Apply to Bladeburner Division";
}
nsaBladeburner.style.display = "block";
} else {
setInfiltrateButton(infiltrate, Locations.Sector12NSA,
- 1400, 40, 80, 7.2);
+ 1260, 40, 80, 6.7);
}
break;
@@ -747,7 +747,7 @@ function displayLocationContent() {
purchaseHomeRam.style.display = "block";
purchaseHomeCores.style.display = "block";
setInfiltrateButton(infiltrate, Locations.Sector12AlphaEnterprises,
- 250, 14, 40, 2.7);
+ 225, 14, 40, 2.5);
break;
case Locations.Sector12CarmichaelSecurity:
@@ -761,7 +761,7 @@ function displayLocationContent() {
securityJob.style.display = "block";
agentJob.style.display = "block";
setInfiltrateButton(infiltrate, Locations.Sector12CarmichaelSecurity,
- 500, 18, 60, 2.7);
+ 450, 18, 60, 2.5);
break;
case Locations.Sector12FoodNStuff:
@@ -819,7 +819,7 @@ function displayLocationContent() {
securityEngineerJob.style.display = "block";
networkEngineerJob.style.display = "block";
setInfiltrateButton(infiltrate, Locations.NewTokyoDefComm,
- 1300, 28, 70, 5.4);
+ 1170, 28, 70, 5);
break;
case Locations.NewTokyoVitaLife:
@@ -832,7 +832,7 @@ function displayLocationContent() {
networkEngineerJob.style.display = "block";
businessJob.style.display = "block";
setInfiltrateButton(infiltrate, Locations.NewTokyoVitaLife,
- 750, 22, 100, 5);
+ 675, 22, 100, 4.7);
break;
case Locations.NewTokyoGlobalPharmaceuticals:
@@ -846,7 +846,7 @@ function displayLocationContent() {
businessJob.style.display = "block";
securityJob.style.display = "block";
setInfiltrateButton(infiltrate, Locations.NewTokyoGlobalPharmaceuticals,
- 900, 24, 80, 5.4);
+ 810, 24, 80, 5.1);
break;
case Locations.NewTokyoNoodleBar:
@@ -886,7 +886,7 @@ function displayLocationContent() {
purchaseHomeRam.style.display = "block";
purchaseHomeCores.style.display = "block";
setInfiltrateButton(infiltrate, Locations.IshimaStormTechnologies,
- 700, 24, 100, 5.9);
+ 630, 24, 100, 5.5);
break;
case Locations.IshimaNovaMedical:
@@ -899,7 +899,7 @@ function displayLocationContent() {
networkEngineerJob.style.display = "block";
businessJob.style.display = "block";
setInfiltrateButton(infiltrate, Locations.IshimaNovaMedical,
- 600, 20, 50, 4.5);
+ 540, 20, 50, 4.25);
break;
case Locations.IshimaOmegaSoftware:
@@ -918,7 +918,7 @@ function displayLocationContent() {
purchaseHomeRam.style.display = "block";
purchaseHomeCores.style.display = "block";
setInfiltrateButton(infiltrate, Locations.IshimaOmegaSoftware,
- 200, 10, 40, 2.3);
+ 180, 10, 40, 2.1);
break;
case Locations.VolhavenTravelAgency:
@@ -951,7 +951,7 @@ function displayLocationContent() {
purchase512gb.style.display = "block";
purchase1tb.style.display = "block";
setInfiltrateButton(infiltrate, Locations.VolhavenOmniTekIncorporated,
- 1500, 44, 100, 6.3);
+ 1350, 44, 100, 5.9);
break;
case Locations.VolhavenNWO:
@@ -964,7 +964,7 @@ function displayLocationContent() {
businessJob.style.display = "block";
securityJob.style.display = "block";
setInfiltrateButton(infiltrate, Locations.VolhavenNWO,
- 1800, 56, 200, 7.2);
+ 1620, 56, 200, 6.8);
break;
case Locations.VolhavenHeliosLabs:
@@ -976,7 +976,7 @@ function displayLocationContent() {
securityEngineerJob.style.display = "block";
networkEngineerJob.style.display = "block";
setInfiltrateButton(infiltrate, Locations.VolhavenHeliosLabs,
- 1200, 28, 75, 5.4);
+ 1200, 28, 75, 5);
break;
case Locations.VolhavenOmniaCybersystems:
@@ -988,7 +988,7 @@ function displayLocationContent() {
networkEngineerJob.style.display = "block";
securityJob.style.display = "block";
setInfiltrateButton(infiltrate, Locations.VolhavenOmniaCybersystems,
- 900, 28, 90, 5.8);
+ 810, 28, 90, 5.3);
break;
case Locations.VolhavenLexoCorp:
@@ -1002,7 +1002,7 @@ function displayLocationContent() {
businessJob.style.display = "block";
securityJob.style.display = "block";
setInfiltrateButton(infiltrate, Locations.VolhavenLexoCorp,
- 500, 14, 40, 3.1);
+ 500, 14, 40, 2.8);
break;
case Locations.VolhavenSysCoreSecurities:
@@ -1013,7 +1013,7 @@ function displayLocationContent() {
securityEngineerJob.style.display = "block";
networkEngineerJob.style.display = "block";
setInfiltrateButton(infiltrate, Locations.VolhavenSysCoreSecurities,
- 600, 16, 50, 3.6);
+ 540, 16, 50, 3.2);
break;
case Locations.VolhavenCompuTek:
@@ -1035,7 +1035,7 @@ function displayLocationContent() {
purchaseHomeRam.style.display = "block";
purchaseHomeCores.style.display = "block";
setInfiltrateButton(infiltrate, Locations.VolhavenCompuTek,
- 300, 12, 35, 3.1);
+ 270, 12, 35, 2.75);
break;
case Locations.VolhavenMilleniumFitnessGym: