2021-04-18 17:18:56 +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-04-30 05:52:56 +02:00
|
|
|
let favorMult = 1 + (f.favor / 100);
|
2021-04-18 17:18:56 +02:00
|
|
|
if (isNaN(favorMult)) {favorMult = 1;}
|
|
|
|
return favorMult * BitNodeMultipliers.FactionWorkRepGain;
|
|
|
|
}
|
|
|
|
|
|
|
|
export function getHackingWorkRepGain(p: IPlayer, f: Faction): number {
|
|
|
|
return (p.hacking_skill + p.intelligence) /
|
|
|
|
CONSTANTS.MaxSkillLevel * p.faction_rep_mult *
|
|
|
|
p.getIntelligenceBonus(0.25) * mult(f);
|
|
|
|
}
|
|
|
|
|
|
|
|
export function getFactionSecurityWorkRepGain(p: IPlayer, f: Faction): number {
|
2021-04-30 05:52:56 +02:00
|
|
|
const t = 0.9 * (p.hacking_skill / CONSTANTS.MaxSkillLevel +
|
2021-04-18 17:18:56 +02:00
|
|
|
p.strength / CONSTANTS.MaxSkillLevel +
|
|
|
|
p.defense / CONSTANTS.MaxSkillLevel +
|
|
|
|
p.dexterity / CONSTANTS.MaxSkillLevel +
|
|
|
|
p.agility / CONSTANTS.MaxSkillLevel) / 4.5;
|
|
|
|
return t * p.faction_rep_mult * mult(f);
|
|
|
|
}
|
|
|
|
|
|
|
|
export function getFactionFieldWorkRepGain(p: IPlayer, f: Faction): number {
|
2021-04-30 05:52:56 +02:00
|
|
|
const t = 0.9 * (p.hacking_skill / CONSTANTS.MaxSkillLevel +
|
2021-04-18 17:18:56 +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);
|
|
|
|
}
|