bitburner-src/src/SourceFile/applySourceFile.ts

175 lines
5.2 KiB
TypeScript
Raw Normal View History

import { PlayerOwnedSourceFile } from "./PlayerOwnedSourceFile";
import { SourceFiles } from "./SourceFiles";
import { Player } from "../Player";
2021-05-01 09:17:31 +02:00
export function applySourceFile(srcFile: PlayerOwnedSourceFile): void {
2021-09-05 01:09:30 +02:00
const srcFileKey = "SourceFile" + srcFile.n;
const sourceFileObject = SourceFiles[srcFileKey];
if (sourceFileObject == null) {
console.error(`Invalid source file number: ${srcFile.n}`);
return;
}
2021-09-05 01:09:30 +02:00
switch (srcFile.n) {
case 1: {
// The Source Genesis
let mult = 0;
for (let i = 0; i < srcFile.lvl; ++i) {
mult += 16 / Math.pow(2, i);
}
const incMult = 1 + mult / 100;
const decMult = 1 - mult / 100;
Player.hacking_chance_mult *= incMult;
Player.hacking_speed_mult *= incMult;
Player.hacking_money_mult *= incMult;
Player.hacking_grow_mult *= incMult;
Player.hacking_mult *= incMult;
Player.strength_mult *= incMult;
Player.defense_mult *= incMult;
Player.dexterity_mult *= incMult;
Player.agility_mult *= incMult;
Player.charisma_mult *= incMult;
Player.hacking_exp_mult *= incMult;
Player.strength_exp_mult *= incMult;
Player.defense_exp_mult *= incMult;
Player.dexterity_exp_mult *= incMult;
Player.agility_exp_mult *= incMult;
Player.charisma_exp_mult *= incMult;
Player.company_rep_mult *= incMult;
Player.faction_rep_mult *= incMult;
Player.crime_money_mult *= incMult;
Player.crime_success_mult *= incMult;
Player.hacknet_node_money_mult *= incMult;
Player.hacknet_node_purchase_cost_mult *= decMult;
Player.hacknet_node_ram_cost_mult *= decMult;
Player.hacknet_node_core_cost_mult *= decMult;
Player.hacknet_node_level_cost_mult *= decMult;
Player.work_money_mult *= incMult;
break;
}
case 2: {
// Rise of the Underworld
let mult = 0;
for (let i = 0; i < srcFile.lvl; ++i) {
mult += 24 / Math.pow(2, i);
}
const incMult = 1 + mult / 100;
Player.crime_money_mult *= incMult;
Player.crime_success_mult *= incMult;
Player.charisma_mult *= incMult;
break;
}
case 3: {
// Corporatocracy
let mult = 0;
for (let i = 0; i < srcFile.lvl; ++i) {
mult += 8 / Math.pow(2, i);
}
const incMult = 1 + mult / 100;
Player.charisma_mult *= incMult;
Player.work_money_mult *= incMult;
break;
}
case 4: {
// The Singularity
// No effects, just gives access to Singularity functions
break;
}
case 5: {
// Artificial Intelligence
let mult = 0;
for (let i = 0; i < srcFile.lvl; ++i) {
mult += 8 / Math.pow(2, i);
}
const incMult = 1 + mult / 100;
Player.hacking_chance_mult *= incMult;
Player.hacking_speed_mult *= incMult;
Player.hacking_money_mult *= incMult;
Player.hacking_grow_mult *= incMult;
Player.hacking_mult *= incMult;
Player.hacking_exp_mult *= incMult;
break;
}
case 6: {
// Bladeburner
let mult = 0;
for (let i = 0; i < srcFile.lvl; ++i) {
mult += 8 / Math.pow(2, i);
}
const incMult = 1 + mult / 100;
Player.strength_exp_mult *= incMult;
Player.defense_exp_mult *= incMult;
Player.dexterity_exp_mult *= incMult;
Player.agility_exp_mult *= incMult;
Player.strength_mult *= incMult;
Player.defense_mult *= incMult;
Player.dexterity_mult *= incMult;
Player.agility_mult *= incMult;
break;
}
case 7: {
// Bladeburner 2079
let mult = 0;
for (let i = 0; i < srcFile.lvl; ++i) {
mult += 8 / Math.pow(2, i);
}
const incMult = 1 + mult / 100;
Player.bladeburner_max_stamina_mult *= incMult;
Player.bladeburner_stamina_gain_mult *= incMult;
Player.bladeburner_analysis_mult *= incMult;
Player.bladeburner_success_chance_mult *= incMult;
break;
}
case 8: {
// Ghost of Wall Street
let mult = 0;
for (let i = 0; i < srcFile.lvl; ++i) {
mult += 12 / Math.pow(2, i);
}
const incMult = 1 + mult / 100;
Player.hacking_grow_mult *= incMult;
break;
}
case 9: {
// Hacktocracy
2021-10-02 05:20:44 +02:00
let mult = 0;
for (let i = 0; i < srcFile.lvl; ++i) {
mult += 8 / Math.pow(2, i);
}
const incMult = 1 + mult / 100;
const decMult = 1 - mult / 100;
Player.hacknet_node_core_cost_mult *= decMult;
Player.hacknet_node_level_cost_mult *= decMult;
Player.hacknet_node_money_mult *= incMult;
Player.hacknet_node_purchase_cost_mult *= decMult;
Player.hacknet_node_ram_cost_mult *= decMult;
2021-09-05 01:09:30 +02:00
break;
}
case 10: {
// Digital Carbon
// No effects, just grants sleeves
break;
}
case 11: {
// The Big Crash
let mult = 0;
for (let i = 0; i < srcFile.lvl; ++i) {
mult += 32 / Math.pow(2, i);
}
const incMult = 1 + mult / 100;
Player.work_money_mult *= incMult;
Player.company_rep_mult *= incMult;
break;
}
2021-09-05 01:09:30 +02:00
case 12: // The Recursion
// No effects, grants neuroflux.
break;
default:
console.error(`Invalid source file number: ${srcFile.n}`);
break;
}
2021-09-05 01:09:30 +02:00
sourceFileObject.owned = true;
}