mirror of
https://github.com/bitburner-official/bitburner-src.git
synced 2024-10-23 18:23:15 +02:00
7c5097ee83
* refactored out logic to be reused by api
50 lines
1.4 KiB
TypeScript
50 lines
1.4 KiB
TypeScript
import { IPlayer } from "../../PersonObjects/IPlayer";
|
|
import { BitNodeMultipliers } from "../../BitNode/BitNodeMultipliers";
|
|
import { LocationsMetadata } from "../../Locations/data/LocationsMetadata";
|
|
|
|
export function calculateSellInformationCashReward(
|
|
player: IPlayer,
|
|
reward: number,
|
|
maxLevel: number,
|
|
difficulty: number,
|
|
): number {
|
|
const levelBonus = maxLevel * Math.pow(1.01, maxLevel);
|
|
|
|
return (
|
|
Math.pow(reward + 1, 2) *
|
|
Math.pow(difficulty, 3) *
|
|
3e3 *
|
|
levelBonus *
|
|
player.infiltration_sell_mult *
|
|
BitNodeMultipliers.InfiltrationMoney
|
|
);
|
|
}
|
|
|
|
export function calculateTradeInformationRepReward(
|
|
player: IPlayer,
|
|
reward: number,
|
|
maxLevel: number,
|
|
difficulty: number,
|
|
): number {
|
|
const levelBonus = maxLevel * Math.pow(1.01, maxLevel);
|
|
|
|
return (
|
|
Math.pow(reward + 1, 2) *
|
|
Math.pow(difficulty, 3) *
|
|
3e3 *
|
|
levelBonus *
|
|
player.infiltration_sell_mult *
|
|
BitNodeMultipliers.InfiltrationMoney
|
|
);
|
|
}
|
|
|
|
export function calculateInfiltratorsRepReward(player: IPlayer, difficulty: number): number {
|
|
const maxStartingSecurityLevel = LocationsMetadata.reduce((acc, data): number => {
|
|
const startingSecurityLevel = data.infiltrationData?.startingSecurityLevel || 0;
|
|
return acc > startingSecurityLevel ? acc : startingSecurityLevel;
|
|
}, 0);
|
|
const baseRepGain = (difficulty / maxStartingSecurityLevel) * 10;
|
|
|
|
return (baseRepGain + player.infiltration_base_rep_increase) * player.infiltration_rep_mult;
|
|
}
|