bitburner-src/src/SourceFile/applySourceFile.ts

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