Merge pull request #335 from danielyxie/rebalance-infiltration

Rebalanced infiltration by making base difficulty lower, slightly dec…
This commit is contained in:
danielyxie 2018-06-24 21:51:33 -05:00 committed by GitHub
commit 260598ee8a
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
4 changed files with 136 additions and 128 deletions

132
dist/engine.bundle.js vendored

@ -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<br>",
LatestUpdate:
"v0.38.1<br>" +
"v0.39.0<br>" +
"* Added BitNode-7: Bladeburner 2079<br>" +
"* Infiltration base difficulty decreased by 10% for most locations<br>" +
"* Experience gains from Infiltration slightly increased<br>" +
"* Money gained from Infiltration increased by 20%<br>" +
"* Added 'var' declarations in Netscript 1.0 (only works with 'var', not 'let' or 'const')<br>" +
"* Script base RAM cost is now 1.6 GB (increased from 1.4 GB)<br>" +
"* While/for loops and if statements no longer cost RAM in scripts<br>" +
@ -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 {

@ -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<br>",
LatestUpdate:
"v0.38.1<br>" +
"v0.39.0<br>" +
"* Added BitNode-7: Bladeburner 2079<br>" +
"* Infiltration base difficulty decreased by 10% for most locations<br>" +
"* Experience gains from Infiltration slightly increased<br>" +
"* Money gained from Infiltration increased by 20%<br>" +
"* Added 'var' declarations in Netscript 1.0 (only works with 'var', not 'let' or 'const')<br>" +
"* Script base RAM cost is now 1.6 GB (increased from 1.4 GB)<br>" +
"* While/for loops and if statements no longer cost RAM in scripts<br>" +

@ -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 {

@ -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: