Added a few formulas to calculate work gains

This commit is contained in:
Olivier Gagnon
2022-08-17 14:32:52 -04:00
parent 3217f53717
commit a8bef50ef5
29 changed files with 391 additions and 48 deletions
+10 -10
View File
@@ -1,28 +1,28 @@
import { Faction } from "../../Faction/Faction";
import { CONSTANTS } from "../../Constants";
import { BitNodeMultipliers } from "../../BitNode/BitNodeMultipliers";
import { CalculateShareMult } from "../../NetworkShare/Share";
import { IPerson } from "../IPerson";
import { calculateIntelligenceBonus } from "./intelligence";
function mult(f: Faction): number {
let favorMult = 1 + f.favor / 100;
function mult(favor: number): number {
let favorMult = 1 + favor / 100;
if (isNaN(favorMult)) {
favorMult = 1;
}
return favorMult * BitNodeMultipliers.FactionWorkRepGain;
}
export function getHackingWorkRepGain(p: IPerson, f: Faction): number {
export function getHackingWorkRepGain(p: IPerson, favor: number): number {
return (
((p.skills.hacking + p.skills.intelligence / 3) / CONSTANTS.MaxSkillLevel) *
p.mults.faction_rep *
p.getIntelligenceBonus(1) *
mult(f) *
calculateIntelligenceBonus(p.skills.intelligence, 1) *
mult(favor) *
CalculateShareMult()
);
}
export function getFactionSecurityWorkRepGain(p: IPerson, f: Faction): number {
export function getFactionSecurityWorkRepGain(p: IPerson, favor: number): number {
const t =
(0.9 *
(p.skills.strength +
@@ -32,10 +32,10 @@ export function getFactionSecurityWorkRepGain(p: IPerson, f: Faction): number {
(p.skills.hacking + p.skills.intelligence) * CalculateShareMult())) /
CONSTANTS.MaxSkillLevel /
4.5;
return t * p.mults.faction_rep * mult(f) * p.getIntelligenceBonus(1);
return t * p.mults.faction_rep * mult(favor) * calculateIntelligenceBonus(p.skills.intelligence, 1);
}
export function getFactionFieldWorkRepGain(p: IPerson, f: Faction): number {
export function getFactionFieldWorkRepGain(p: IPerson, favor: number): number {
const t =
(0.9 *
(p.skills.strength +
@@ -46,5 +46,5 @@ export function getFactionFieldWorkRepGain(p: IPerson, f: Faction): number {
(p.skills.hacking + p.skills.intelligence) * CalculateShareMult())) /
CONSTANTS.MaxSkillLevel /
5.5;
return t * p.mults.faction_rep * mult(f) * p.getIntelligenceBonus(1);
return t * p.mults.faction_rep * mult(favor) * calculateIntelligenceBonus(p.skills.intelligence, 1);
}