import { Milestone } from "./Milestone"; import { IPlayer } from "../PersonObjects/IPlayer"; import { Factions } from "../Faction/Factions"; import { Faction } from "../Faction/Faction"; import { GetServerByHostname } from "../Server/ServerHelpers"; function allFactionAugs(p: IPlayer, f: Faction): boolean { const factionAugs = f.augmentations.slice().filter((aug)=> aug !== "NeuroFlux Governor"); for(const factionAug of factionAugs) { if(!p.augmentations.some(aug => {return aug.name == factionAug})) return false; } return true; } export const Milestones: Milestone[] = [ { title: "Gain root access on CSEC", fulfilled: (): boolean => { const server = GetServerByHostname("CSEC"); if(!server || !server.hasOwnProperty('hasAdminRights')) return false; return (server as any).hasAdminRights; }, }, { title: "Install the backdoor on CSEC", fulfilled: (): boolean => { const server = GetServerByHostname("CSEC"); if(!server || !server.hasOwnProperty('backdoorInstalled')) return false; return (server as any).backdoorInstalled; }, }, { title: "Join the faction hinted at in csec-test.msg", fulfilled: (p: IPlayer): boolean => { return p.factions.includes("CyberSec"); }, }, { title: "Install all the Augmentations from CyberSec", fulfilled: (p: IPlayer): boolean => { return allFactionAugs(p, Factions["CyberSec"]); }, }, { title: "Join the faction hinted at in nitesec-test.msg", fulfilled: (p: IPlayer): boolean => { return p.factions.includes("NiteSec"); }, }, { title: "Install all the Augmentations from NiteSec", fulfilled: (p: IPlayer): boolean => { return allFactionAugs(p, Factions["NiteSec"]); }, }, { title: "Join the faction hinted at in j3.msg", fulfilled: (p: IPlayer): boolean => { return p.factions.includes("The Black Hand"); }, }, { title: "Install all the Augmentations from The Black Hand", fulfilled: (p: IPlayer): boolean => { return allFactionAugs(p, Factions["The Black Hand"]); }, }, { title: "Join the faction hinted at in 19dfj3l1nd.msg", fulfilled: (p: IPlayer): boolean => { return p.factions.includes("BitRunners"); }, }, { title: "Install all the Augmentations from BitRunners", fulfilled: (p: IPlayer): boolean => { return allFactionAugs(p, Factions["BitRunners"]); }, }, { title: "Complete fl1ght.exe", fulfilled: (p: IPlayer): boolean => { // technically wrong but whatever return p.factions.includes("Daedalus"); }, }, { title: "Install the special Augmentation from Daedalus", fulfilled: (p: IPlayer): boolean => { return p.augmentations.some(aug => aug.name == "The Red Pill") }, }, { title: "Install the final backdoor and free yourself.", fulfilled: (): boolean => { return false; }, }, ];