import { IPlayer } from "../IPlayer"; import { Faction } from "../../Faction/Faction"; import { CONSTANTS } from "../../Constants"; import { BitNodeMultipliers } from "../../BitNode/BitNodeMultipliers"; function mult(f: Faction): number { let favorMult = 1 + f.favor / 100; if (isNaN(favorMult)) { favorMult = 1; } return favorMult * BitNodeMultipliers.FactionWorkRepGain; } export function getHackingWorkRepGain(p: IPlayer, f: Faction): number { return ( ((p.hacking + p.intelligence / 3) / CONSTANTS.MaxSkillLevel) * p.faction_rep_mult * p.getIntelligenceBonus(1) * mult(f) ); } export function getFactionSecurityWorkRepGain(p: IPlayer, f: Faction): number { const t = (0.9 * (p.hacking / CONSTANTS.MaxSkillLevel + 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 { const t = (0.9 * (p.hacking / CONSTANTS.MaxSkillLevel + 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); }