bitburner-src/src/PersonObjects/formulas/reputation.ts

49 lines
1.6 KiB
TypeScript
Raw Normal View History

2021-09-05 01:09:30 +02:00
import { IPlayer } from "../IPlayer";
import { Faction } from "../../Faction/Faction";
import { CONSTANTS } from "../../Constants";
import { BitNodeMultipliers } from "../../BitNode/BitNodeMultipliers";
function mult(f: Faction): number {
2021-09-05 01:09:30 +02:00
let favorMult = 1 + f.favor / 100;
if (isNaN(favorMult)) {
favorMult = 1;
}
return favorMult * BitNodeMultipliers.FactionWorkRepGain;
}
export function getHackingWorkRepGain(p: IPlayer, f: Faction): number {
2021-09-05 01:09:30 +02:00
return (
2021-11-05 22:12:52 +01:00
((p.hacking + p.intelligence / 3) / CONSTANTS.MaxSkillLevel) *
2021-09-05 01:09:30 +02:00
p.faction_rep_mult *
p.getIntelligenceBonus(1) *
mult(f)
);
}
export function getFactionSecurityWorkRepGain(p: IPlayer, f: Faction): number {
2021-09-05 01:09:30 +02:00
const t =
(0.9 *
2021-11-05 22:12:52 +01:00
(p.hacking / CONSTANTS.MaxSkillLevel +
2021-09-05 01:09:30 +02:00
p.strength / CONSTANTS.MaxSkillLevel +
p.defense / CONSTANTS.MaxSkillLevel +
p.dexterity / CONSTANTS.MaxSkillLevel +
p.agility / CONSTANTS.MaxSkillLevel +
p.intelligence / CONSTANTS.MaxSkillLevel)) /
4.5;
return t * p.faction_rep_mult * mult(f) * p.getIntelligenceBonus(1);
}
export function getFactionFieldWorkRepGain(p: IPlayer, f: Faction): number {
2021-09-05 01:09:30 +02:00
const t =
(0.9 *
2021-11-05 22:12:52 +01:00
(p.hacking / CONSTANTS.MaxSkillLevel +
2021-09-05 01:09:30 +02:00
p.strength / CONSTANTS.MaxSkillLevel +
p.defense / CONSTANTS.MaxSkillLevel +
p.dexterity / CONSTANTS.MaxSkillLevel +
p.agility / CONSTANTS.MaxSkillLevel +
p.charisma / CONSTANTS.MaxSkillLevel +
p.intelligence / CONSTANTS.MaxSkillLevel)) /
5.5;
return t * p.faction_rep_mult * mult(f) * p.getIntelligenceBonus(1);
}