mirror of
https://github.com/bitburner-official/bitburner-src.git
synced 2024-11-20 14:43:48 +01:00
few stanek improvements.
This commit is contained in:
parent
48ee6ac82e
commit
de8b38b299
@ -81,7 +81,6 @@ export function hasAugmentationPrereqs(aug: Augmentation): boolean {
|
|||||||
}
|
}
|
||||||
|
|
||||||
export function purchaseAugmentation(aug: Augmentation, fac: Faction, sing = false): string {
|
export function purchaseAugmentation(aug: Augmentation, fac: Faction, sing = false): string {
|
||||||
const factionInfo = fac.getInfo();
|
|
||||||
const hasPrereqs = hasAugmentationPrereqs(aug);
|
const hasPrereqs = hasAugmentationPrereqs(aug);
|
||||||
if (!hasPrereqs) {
|
if (!hasPrereqs) {
|
||||||
const txt = `You must first purchase or install ${aug.prereqs.join(",")} before you can purchase this one.`;
|
const txt = `You must first purchase or install ${aug.prereqs.join(",")} before you can purchase this one.`;
|
||||||
@ -90,7 +89,7 @@ export function purchaseAugmentation(aug: Augmentation, fac: Faction, sing = fal
|
|||||||
} else {
|
} else {
|
||||||
dialogBoxCreate(txt);
|
dialogBoxCreate(txt);
|
||||||
}
|
}
|
||||||
} else if (aug.baseCost !== 0 && Player.money < aug.baseCost * factionInfo.augmentationPriceMult) {
|
} else if (aug.baseCost !== 0 && Player.money < aug.baseCost) {
|
||||||
const txt = "You don't have enough money to purchase " + aug.name;
|
const txt = "You don't have enough money to purchase " + aug.name;
|
||||||
if (sing) {
|
if (sing) {
|
||||||
return txt;
|
return txt;
|
||||||
@ -102,14 +101,14 @@ export function purchaseAugmentation(aug: Augmentation, fac: Faction, sing = fal
|
|||||||
return txt;
|
return txt;
|
||||||
}
|
}
|
||||||
dialogBoxCreate(txt);
|
dialogBoxCreate(txt);
|
||||||
} else if (aug.baseCost === 0 || Player.money >= aug.baseCost * factionInfo.augmentationPriceMult) {
|
} else if (aug.baseCost === 0 || Player.money >= aug.baseCost) {
|
||||||
const queuedAugmentation = new PlayerOwnedAugmentation(aug.name);
|
const queuedAugmentation = new PlayerOwnedAugmentation(aug.name);
|
||||||
if (aug.name == AugmentationNames.NeuroFluxGovernor) {
|
if (aug.name == AugmentationNames.NeuroFluxGovernor) {
|
||||||
queuedAugmentation.level = getNextNeurofluxLevel();
|
queuedAugmentation.level = getNextNeurofluxLevel();
|
||||||
}
|
}
|
||||||
Player.queuedAugmentations.push(queuedAugmentation);
|
Player.queuedAugmentations.push(queuedAugmentation);
|
||||||
|
|
||||||
Player.loseMoney(aug.baseCost * factionInfo.augmentationPriceMult, "augmentations");
|
Player.loseMoney(aug.baseCost, "augmentations");
|
||||||
|
|
||||||
// If you just purchased Neuroflux Governor, recalculate the cost
|
// If you just purchased Neuroflux Governor, recalculate the cost
|
||||||
if (aug.name == AugmentationNames.NeuroFluxGovernor) {
|
if (aug.name == AugmentationNames.NeuroFluxGovernor) {
|
||||||
|
@ -2,20 +2,20 @@ import React from "react";
|
|||||||
import { IMap } from "../types";
|
import { IMap } from "../types";
|
||||||
import { FactionNames } from "./data/FactionNames";
|
import { FactionNames } from "./data/FactionNames";
|
||||||
|
|
||||||
|
interface FactionInfoParams {
|
||||||
|
infoText?: JSX.Element;
|
||||||
|
enemies?: string[];
|
||||||
|
offerHackingWork?: boolean;
|
||||||
|
offerFieldWork?: boolean;
|
||||||
|
offerSecurityWork?: boolean;
|
||||||
|
special?: boolean;
|
||||||
|
keepOnInstall?: boolean;
|
||||||
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Contains the "information" property for all the Factions, which is just a description of each faction
|
* Contains the "information" property for all the Factions, which is just a description of each faction
|
||||||
*/
|
*/
|
||||||
export class FactionInfo {
|
export class FactionInfo {
|
||||||
/**
|
|
||||||
* The multiplier to apply to augmentation base purchase price.
|
|
||||||
*/
|
|
||||||
augmentationPriceMult: number;
|
|
||||||
|
|
||||||
/**
|
|
||||||
* The multiplier to apply to augmentation reputation base requirement.
|
|
||||||
*/
|
|
||||||
augmentationRepRequirementMult: number;
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* The names of all other factions considered to be enemies to this faction.
|
* The names of all other factions considered to be enemies to this faction.
|
||||||
*/
|
*/
|
||||||
@ -31,11 +31,6 @@ export class FactionInfo {
|
|||||||
*/
|
*/
|
||||||
offerFieldWork: boolean;
|
offerFieldWork: boolean;
|
||||||
|
|
||||||
/**
|
|
||||||
* A flag indicating if the faction supports hacking missions to earn reputation.
|
|
||||||
*/
|
|
||||||
offerHackingMission: boolean;
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* A flag indicating if the faction supports hacking work to earn reputation.
|
* A flag indicating if the faction supports hacking work to earn reputation.
|
||||||
*/
|
*/
|
||||||
@ -56,32 +51,19 @@ export class FactionInfo {
|
|||||||
*/
|
*/
|
||||||
special: boolean;
|
special: boolean;
|
||||||
|
|
||||||
constructor(
|
constructor(params: FactionInfoParams) {
|
||||||
infoText: JSX.Element,
|
this.infoText = params.infoText ?? <></>;
|
||||||
enemies: string[],
|
this.enemies = params.enemies ?? [];
|
||||||
offerHackingMission: boolean,
|
this.offerHackingWork = params.offerHackingWork ?? false;
|
||||||
offerHackingWork: boolean,
|
this.offerFieldWork = params.offerFieldWork ?? false;
|
||||||
offerFieldWork: boolean,
|
this.offerSecurityWork = params.offerSecurityWork ?? false;
|
||||||
offerSecurityWork: boolean,
|
|
||||||
special: boolean,
|
|
||||||
keep: boolean,
|
|
||||||
) {
|
|
||||||
this.infoText = infoText;
|
|
||||||
this.enemies = enemies;
|
|
||||||
this.offerHackingMission = offerHackingMission;
|
|
||||||
this.offerHackingWork = offerHackingWork;
|
|
||||||
this.offerFieldWork = offerFieldWork;
|
|
||||||
this.offerSecurityWork = offerSecurityWork;
|
|
||||||
|
|
||||||
// These are always all 1 for now.
|
this.keep = params.keepOnInstall ?? false;
|
||||||
this.augmentationPriceMult = 1;
|
this.special = params.special ?? false;
|
||||||
this.augmentationRepRequirementMult = 1;
|
|
||||||
this.keep = keep;
|
|
||||||
this.special = special;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
offersWork(): boolean {
|
offersWork(): boolean {
|
||||||
return this.offerFieldWork || this.offerHackingMission || this.offerHackingWork || this.offerSecurityWork;
|
return this.offerFieldWork || this.offerHackingWork || this.offerSecurityWork;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -91,35 +73,25 @@ export class FactionInfo {
|
|||||||
// tslint:disable-next-line:variable-name
|
// tslint:disable-next-line:variable-name
|
||||||
export const FactionInfos: IMap<FactionInfo> = {
|
export const FactionInfos: IMap<FactionInfo> = {
|
||||||
// Endgame
|
// Endgame
|
||||||
[FactionNames.Illuminati]: new FactionInfo(
|
[FactionNames.Illuminati]: new FactionInfo({
|
||||||
(
|
infoText: (
|
||||||
<>
|
<>
|
||||||
Humanity never changes. No matter how civilized society becomes, it will eventually fall back into chaos. And
|
Humanity never changes. No matter how civilized society becomes, it will eventually fall back into chaos. And
|
||||||
from this chaos, we are the invisible hand that guides them to order.{" "}
|
from this chaos, we are the invisible hand that guides them to order.{" "}
|
||||||
</>
|
</>
|
||||||
),
|
),
|
||||||
[],
|
offerHackingWork: true,
|
||||||
true,
|
offerFieldWork: true,
|
||||||
true,
|
}),
|
||||||
true,
|
|
||||||
false,
|
|
||||||
false,
|
|
||||||
false,
|
|
||||||
),
|
|
||||||
|
|
||||||
[FactionNames.Daedalus]: new FactionInfo(
|
[FactionNames.Daedalus]: new FactionInfo({
|
||||||
<>Yesterday we obeyed kings and bent our necks to emperors. Today we kneel only to truth.</>,
|
infoText: <>Yesterday we obeyed kings and bent our necks to emperors. Today we kneel only to truth.</>,
|
||||||
[],
|
offerHackingWork: true,
|
||||||
true,
|
offerFieldWork: true,
|
||||||
true,
|
}),
|
||||||
true,
|
|
||||||
false,
|
|
||||||
false,
|
|
||||||
false,
|
|
||||||
),
|
|
||||||
|
|
||||||
[FactionNames.TheCovenant]: new FactionInfo(
|
[FactionNames.TheCovenant]: new FactionInfo({
|
||||||
(
|
infoText: (
|
||||||
<>
|
<>
|
||||||
Surrender yourself. Give up your empty individuality to become part of something great, something eternal.
|
Surrender yourself. Give up your empty individuality to become part of something great, something eternal.
|
||||||
Become a slave. Submit your mind, body, and soul. Only then can you set yourself free.
|
Become a slave. Submit your mind, body, and soul. Only then can you set yourself free.
|
||||||
@ -128,35 +100,27 @@ export const FactionInfos: IMap<FactionInfo> = {
|
|||||||
Only then can you discover immortality.
|
Only then can you discover immortality.
|
||||||
</>
|
</>
|
||||||
),
|
),
|
||||||
[],
|
offerHackingWork: true,
|
||||||
true,
|
offerFieldWork: true,
|
||||||
true,
|
}),
|
||||||
true,
|
|
||||||
false,
|
|
||||||
false,
|
|
||||||
false,
|
|
||||||
),
|
|
||||||
|
|
||||||
// Megacorporations, each forms its own faction
|
// Megacorporations, each forms its own faction
|
||||||
[FactionNames.ECorp]: new FactionInfo(
|
[FactionNames.ECorp]: new FactionInfo({
|
||||||
(
|
infoText: (
|
||||||
<>
|
<>
|
||||||
{FactionNames.ECorp}'s mission is simple: to connect the world of today with the technology of tomorrow. With
|
{FactionNames.ECorp}'s mission is simple: to connect the world of today with the technology of tomorrow. With
|
||||||
our wide range of Internet-related software and commercial hardware, {FactionNames.ECorp} makes the world's
|
our wide range of Internet-related software and commercial hardware, {FactionNames.ECorp} makes the world's
|
||||||
information universally accessible.
|
information universally accessible.
|
||||||
</>
|
</>
|
||||||
),
|
),
|
||||||
[],
|
offerHackingWork: true,
|
||||||
true,
|
offerFieldWork: true,
|
||||||
true,
|
offerSecurityWork: true,
|
||||||
true,
|
keepOnInstall: true,
|
||||||
true,
|
}),
|
||||||
false,
|
|
||||||
true,
|
|
||||||
),
|
|
||||||
|
|
||||||
[FactionNames.MegaCorp]: new FactionInfo(
|
[FactionNames.MegaCorp]: new FactionInfo({
|
||||||
(
|
infoText: (
|
||||||
<>
|
<>
|
||||||
{FactionNames.MegaCorp} does what no other dares to do. We imagine. We create. We invent. We create what others
|
{FactionNames.MegaCorp} does what no other dares to do. We imagine. We create. We invent. We create what others
|
||||||
have never even dreamed of. Our work fills the world's needs for food, water, power, and transportation on an
|
have never even dreamed of. Our work fills the world's needs for food, water, power, and transportation on an
|
||||||
@ -167,17 +131,14 @@ export const FactionInfos: IMap<FactionInfo> = {
|
|||||||
the world.
|
the world.
|
||||||
</>
|
</>
|
||||||
),
|
),
|
||||||
[],
|
offerHackingWork: true,
|
||||||
true,
|
offerFieldWork: true,
|
||||||
true,
|
offerSecurityWork: true,
|
||||||
true,
|
keepOnInstall: true,
|
||||||
true,
|
}),
|
||||||
false,
|
|
||||||
true,
|
|
||||||
),
|
|
||||||
|
|
||||||
[FactionNames.BachmanAssociates]: new FactionInfo(
|
[FactionNames.BachmanAssociates]: new FactionInfo({
|
||||||
(
|
infoText: (
|
||||||
<>
|
<>
|
||||||
Where Law and Business meet - thats where we are.
|
Where Law and Business meet - thats where we are.
|
||||||
<br />
|
<br />
|
||||||
@ -185,112 +146,87 @@ export const FactionInfos: IMap<FactionInfo> = {
|
|||||||
Legal Insight - Business Instinct - Innovative Experience.
|
Legal Insight - Business Instinct - Innovative Experience.
|
||||||
</>
|
</>
|
||||||
),
|
),
|
||||||
[],
|
offerHackingWork: true,
|
||||||
true,
|
offerFieldWork: true,
|
||||||
true,
|
offerSecurityWork: true,
|
||||||
true,
|
keepOnInstall: true,
|
||||||
true,
|
}),
|
||||||
false,
|
|
||||||
true,
|
|
||||||
),
|
|
||||||
|
|
||||||
[FactionNames.BladeIndustries]: new FactionInfo(
|
[FactionNames.BladeIndustries]: new FactionInfo({
|
||||||
<>Augmentation is Salvation.</>,
|
infoText: <>Augmentation is Salvation.</>,
|
||||||
[],
|
offerHackingWork: true,
|
||||||
true,
|
offerFieldWork: true,
|
||||||
true,
|
offerSecurityWork: true,
|
||||||
true,
|
keepOnInstall: true,
|
||||||
true,
|
}),
|
||||||
false,
|
|
||||||
true,
|
|
||||||
),
|
|
||||||
|
|
||||||
[FactionNames.NWO]: new FactionInfo(
|
[FactionNames.NWO]: new FactionInfo({
|
||||||
(
|
infoText: (
|
||||||
<>
|
<>
|
||||||
Humans don't truly desire freedom. They want to be observed, understood, and judged. They want to be given
|
Humans don't truly desire freedom. They want to be observed, understood, and judged. They want to be given
|
||||||
purpose and direction in life. That is why they created God. And that is why they created civilization - not
|
purpose and direction in life. That is why they created God. And that is why they created civilization - not
|
||||||
because of willingness, but because of a need to be incorporated into higher orders of structure and meaning.
|
because of willingness, but because of a need to be incorporated into higher orders of structure and meaning.
|
||||||
</>
|
</>
|
||||||
),
|
),
|
||||||
[],
|
offerHackingWork: true,
|
||||||
true,
|
offerFieldWork: true,
|
||||||
true,
|
offerSecurityWork: true,
|
||||||
true,
|
keepOnInstall: true,
|
||||||
true,
|
}),
|
||||||
false,
|
|
||||||
true,
|
|
||||||
),
|
|
||||||
|
|
||||||
[FactionNames.ClarkeIncorporated]: new FactionInfo(
|
[FactionNames.ClarkeIncorporated]: new FactionInfo({
|
||||||
<>The Power of the Genome - Unlocked.</>,
|
infoText: <>The Power of the Genome - Unlocked.</>,
|
||||||
[],
|
offerHackingWork: true,
|
||||||
true,
|
offerFieldWork: true,
|
||||||
true,
|
offerSecurityWork: true,
|
||||||
true,
|
keepOnInstall: true,
|
||||||
true,
|
}),
|
||||||
false,
|
|
||||||
true,
|
|
||||||
),
|
|
||||||
|
|
||||||
[FactionNames.OmniTekIncorporated]: new FactionInfo(
|
[FactionNames.OmniTekIncorporated]: new FactionInfo({
|
||||||
<>Simply put, our mission is to design and build robots that make a difference.</>,
|
infoText: <>Simply put, our mission is to design and build robots that make a difference.</>,
|
||||||
[],
|
offerHackingWork: true,
|
||||||
true,
|
offerFieldWork: true,
|
||||||
true,
|
offerSecurityWork: true,
|
||||||
true,
|
keepOnInstall: true,
|
||||||
true,
|
}),
|
||||||
false,
|
|
||||||
true,
|
|
||||||
),
|
|
||||||
|
|
||||||
[FactionNames.FourSigma]: new FactionInfo(
|
[FactionNames.FourSigma]: new FactionInfo({
|
||||||
(
|
infoText: (
|
||||||
<>
|
<>
|
||||||
The scientific method is the best way to approach investing. Big strategies backed up with big data. Driven by
|
The scientific method is the best way to approach investing. Big strategies backed up with big data. Driven by
|
||||||
deep learning and innovative ideas. And improved by iteration. That's {FactionNames.FourSigma}.
|
deep learning and innovative ideas. And improved by iteration. That's {FactionNames.FourSigma}.
|
||||||
</>
|
</>
|
||||||
),
|
),
|
||||||
[],
|
offerHackingWork: true,
|
||||||
true,
|
offerFieldWork: true,
|
||||||
true,
|
offerSecurityWork: true,
|
||||||
true,
|
keepOnInstall: true,
|
||||||
true,
|
}),
|
||||||
false,
|
|
||||||
true,
|
|
||||||
),
|
|
||||||
|
|
||||||
[FactionNames.KuaiGongInternational]: new FactionInfo(
|
[FactionNames.KuaiGongInternational]: new FactionInfo({
|
||||||
<>Dream big. Work hard. Make history.</>,
|
infoText: <>Dream big. Work hard. Make history.</>,
|
||||||
[],
|
offerHackingWork: true,
|
||||||
true,
|
offerFieldWork: true,
|
||||||
true,
|
offerSecurityWork: true,
|
||||||
true,
|
keepOnInstall: true,
|
||||||
true,
|
}),
|
||||||
false,
|
|
||||||
true,
|
|
||||||
),
|
|
||||||
|
|
||||||
// Other Corporations
|
// Other Corporations
|
||||||
[FactionNames.FulcrumSecretTechnologies]: new FactionInfo(
|
[FactionNames.FulcrumSecretTechnologies]: new FactionInfo({
|
||||||
(
|
infoText: (
|
||||||
<>
|
<>
|
||||||
The human organism has an innate desire to worship. That is why they created gods. If there were no gods, it
|
The human organism has an innate desire to worship. That is why they created gods. If there were no gods, it
|
||||||
would be necessary to create them. And now we can.
|
would be necessary to create them. And now we can.
|
||||||
</>
|
</>
|
||||||
),
|
),
|
||||||
[],
|
offerHackingWork: true,
|
||||||
true,
|
offerSecurityWork: true,
|
||||||
true,
|
keepOnInstall: true,
|
||||||
false,
|
}),
|
||||||
true,
|
|
||||||
false,
|
|
||||||
true,
|
|
||||||
),
|
|
||||||
|
|
||||||
// Hacker groups
|
// Hacker groups
|
||||||
[FactionNames.BitRunners]: new FactionInfo(
|
[FactionNames.BitRunners]: new FactionInfo({
|
||||||
(
|
infoText: (
|
||||||
<>
|
<>
|
||||||
Our entire lives are controlled by bits. All of our actions, our thoughts, our personal information. It's all
|
Our entire lives are controlled by bits. All of our actions, our thoughts, our personal information. It's all
|
||||||
transformed into bits, stored in bits, communicated through bits. It’s impossible for any person to move, to
|
transformed into bits, stored in bits, communicated through bits. It’s impossible for any person to move, to
|
||||||
@ -302,17 +238,11 @@ export const FactionInfos: IMap<FactionInfo> = {
|
|||||||
Those who run the bits, run the world.
|
Those who run the bits, run the world.
|
||||||
</>
|
</>
|
||||||
),
|
),
|
||||||
[],
|
offerHackingWork: true,
|
||||||
true,
|
}),
|
||||||
true,
|
|
||||||
false,
|
|
||||||
false,
|
|
||||||
false,
|
|
||||||
false,
|
|
||||||
),
|
|
||||||
|
|
||||||
[FactionNames.TheBlackHand]: new FactionInfo(
|
[FactionNames.TheBlackHand]: new FactionInfo({
|
||||||
(
|
infoText: (
|
||||||
<>
|
<>
|
||||||
The world, so afraid of strong government, now has no government. Only power - Digital power. Financial power.
|
The world, so afraid of strong government, now has no government. Only power - Digital power. Financial power.
|
||||||
Technological power. And those at the top rule with an invisible hand. They built a society where the rich get
|
Technological power. And those at the top rule with an invisible hand. They built a society where the rich get
|
||||||
@ -322,17 +252,13 @@ export const FactionInfos: IMap<FactionInfo> = {
|
|||||||
So much pain. So many lives. Their darkness must end.
|
So much pain. So many lives. Their darkness must end.
|
||||||
</>
|
</>
|
||||||
),
|
),
|
||||||
[],
|
offerHackingWork: true,
|
||||||
true,
|
offerFieldWork: true,
|
||||||
true,
|
}),
|
||||||
true,
|
|
||||||
false,
|
|
||||||
false,
|
|
||||||
false,
|
|
||||||
),
|
|
||||||
|
|
||||||
// prettier-ignore
|
// prettier-ignore
|
||||||
[FactionNames.NiteSec]: new FactionInfo(<>
|
[FactionNames.NiteSec]: new FactionInfo({
|
||||||
|
infoText:(<>
|
||||||
{" __..__ "}<br />
|
{" __..__ "}<br />
|
||||||
{" _.nITESECNIt. "}<br />
|
{" _.nITESECNIt. "}<br />
|
||||||
{" .-'NITESECNITESEc. "}<br />
|
{" .-'NITESECNITESEc. "}<br />
|
||||||
@ -367,105 +293,87 @@ export const FactionInfos: IMap<FactionInfo> = {
|
|||||||
{" / .d/$/$; , ; "}<br />
|
{" / .d/$/$; , ; "}<br />
|
||||||
{" d .dNITESEC $ | "}<br />
|
{" d .dNITESEC $ | "}<br />
|
||||||
{" :bp.__.gNITESEC/$ :$ ; "}<br />
|
{" :bp.__.gNITESEC/$ :$ ; "}<br />
|
||||||
{" NITESECNITESECNIT /$b : "}<br /></>,
|
{" NITESECNITESECNIT /$b : "}<br /></>),
|
||||||
[],
|
offerHackingWork: true,
|
||||||
true,
|
offerFieldWork: false,
|
||||||
true,
|
offerSecurityWork: false,
|
||||||
false,
|
special: false,
|
||||||
false,
|
keepOnInstall: false,
|
||||||
false,
|
}),
|
||||||
false,
|
|
||||||
),
|
|
||||||
|
|
||||||
// City factions, essentially governments
|
// City factions, essentially governments
|
||||||
[FactionNames.Aevum]: new FactionInfo(
|
[FactionNames.Aevum]: new FactionInfo({
|
||||||
<>The Silicon City.</>,
|
infoText: <>The Silicon City.</>,
|
||||||
[FactionNames.Chongqing, FactionNames.NewTokyo, FactionNames.Ishima, FactionNames.Volhaven],
|
enemies: [FactionNames.Chongqing, FactionNames.NewTokyo, FactionNames.Ishima, FactionNames.Volhaven],
|
||||||
true,
|
offerHackingWork: true,
|
||||||
true,
|
offerFieldWork: true,
|
||||||
true,
|
offerSecurityWork: true,
|
||||||
true,
|
}),
|
||||||
false,
|
[FactionNames.Chongqing]: new FactionInfo({
|
||||||
false,
|
infoText: <>Serve the People.</>,
|
||||||
),
|
enemies: [FactionNames.Sector12, FactionNames.Aevum, FactionNames.Volhaven],
|
||||||
[FactionNames.Chongqing]: new FactionInfo(
|
offerHackingWork: true,
|
||||||
<>Serve the People.</>,
|
offerFieldWork: true,
|
||||||
[FactionNames.Sector12, FactionNames.Aevum, FactionNames.Volhaven],
|
offerSecurityWork: true,
|
||||||
true,
|
}),
|
||||||
true,
|
[FactionNames.Ishima]: new FactionInfo({
|
||||||
true,
|
infoText: <>The East Asian Order of the Future.</>,
|
||||||
true,
|
enemies: [FactionNames.Sector12, FactionNames.Aevum, FactionNames.Volhaven],
|
||||||
false,
|
offerHackingWork: true,
|
||||||
false,
|
offerFieldWork: true,
|
||||||
),
|
offerSecurityWork: true,
|
||||||
[FactionNames.Ishima]: new FactionInfo(
|
}),
|
||||||
<>The East Asian Order of the Future.</>,
|
[FactionNames.NewTokyo]: new FactionInfo({
|
||||||
[FactionNames.Sector12, FactionNames.Aevum, FactionNames.Volhaven],
|
infoText: <>Asia's World City.</>,
|
||||||
true,
|
enemies: [FactionNames.Sector12, FactionNames.Aevum, FactionNames.Volhaven],
|
||||||
true,
|
offerHackingWork: true,
|
||||||
true,
|
offerFieldWork: true,
|
||||||
true,
|
offerSecurityWork: true,
|
||||||
false,
|
}),
|
||||||
false,
|
[FactionNames.Sector12]: new FactionInfo({
|
||||||
),
|
infoText: <>The City of the Future.</>,
|
||||||
[FactionNames.NewTokyo]: new FactionInfo(
|
enemies: [FactionNames.Chongqing, FactionNames.NewTokyo, FactionNames.Ishima, FactionNames.Volhaven],
|
||||||
<>Asia's World City.</>,
|
offerHackingWork: true,
|
||||||
[FactionNames.Sector12, FactionNames.Aevum, FactionNames.Volhaven],
|
offerFieldWork: true,
|
||||||
true,
|
offerSecurityWork: true,
|
||||||
true,
|
}),
|
||||||
true,
|
[FactionNames.Volhaven]: new FactionInfo({
|
||||||
true,
|
infoText: <>Benefit, Honor, and Glory.</>,
|
||||||
false,
|
enemies: [
|
||||||
false,
|
FactionNames.Chongqing,
|
||||||
),
|
FactionNames.Sector12,
|
||||||
[FactionNames.Sector12]: new FactionInfo(
|
FactionNames.NewTokyo,
|
||||||
<>The City of the Future.</>,
|
FactionNames.Aevum,
|
||||||
[FactionNames.Chongqing, FactionNames.NewTokyo, FactionNames.Ishima, FactionNames.Volhaven],
|
FactionNames.Ishima,
|
||||||
true,
|
],
|
||||||
true,
|
offerHackingWork: true,
|
||||||
true,
|
offerFieldWork: true,
|
||||||
true,
|
offerSecurityWork: true,
|
||||||
false,
|
}),
|
||||||
false,
|
|
||||||
),
|
|
||||||
[FactionNames.Volhaven]: new FactionInfo(
|
|
||||||
<>Benefit, Honor, and Glory.</>,
|
|
||||||
[FactionNames.Chongqing, FactionNames.Sector12, FactionNames.NewTokyo, FactionNames.Aevum, FactionNames.Ishima],
|
|
||||||
true,
|
|
||||||
true,
|
|
||||||
true,
|
|
||||||
true,
|
|
||||||
false,
|
|
||||||
false,
|
|
||||||
),
|
|
||||||
|
|
||||||
// Criminal Organizations/Gangs
|
// Criminal Organizations/Gangs
|
||||||
[FactionNames.SpeakersForTheDead]: new FactionInfo(
|
[FactionNames.SpeakersForTheDead]: new FactionInfo({
|
||||||
<>It is better to reign in Hell than to serve in Heaven.</>,
|
infoText: <>It is better to reign in Hell than to serve in Heaven.</>,
|
||||||
[],
|
offerHackingWork: true,
|
||||||
true,
|
offerFieldWork: true,
|
||||||
true,
|
offerSecurityWork: true,
|
||||||
true,
|
}),
|
||||||
true,
|
|
||||||
false,
|
|
||||||
false,
|
|
||||||
),
|
|
||||||
|
|
||||||
[FactionNames.TheDarkArmy]: new FactionInfo(
|
[FactionNames.TheDarkArmy]: new FactionInfo({
|
||||||
<>The World doesn't care about right or wrong. It only cares about power.</>,
|
infoText: <>The World doesn't care about right or wrong. It only cares about power.</>,
|
||||||
[],
|
offerHackingWork: true,
|
||||||
true,
|
offerFieldWork: true,
|
||||||
true,
|
}),
|
||||||
true,
|
|
||||||
false,
|
|
||||||
false,
|
|
||||||
false,
|
|
||||||
),
|
|
||||||
|
|
||||||
[FactionNames.TheSyndicate]: new FactionInfo(<>Honor holds you back.</>, [], true, true, true, true, false, false),
|
[FactionNames.TheSyndicate]: new FactionInfo({
|
||||||
|
infoText: <>Honor holds you back.</>,
|
||||||
|
offerHackingWork: true,
|
||||||
|
offerFieldWork: true,
|
||||||
|
offerSecurityWork: true,
|
||||||
|
}),
|
||||||
|
|
||||||
[FactionNames.Silhouette]: new FactionInfo(
|
[FactionNames.Silhouette]: new FactionInfo({
|
||||||
(
|
infoText: (
|
||||||
<>
|
<>
|
||||||
Corporations have filled the void of power left behind by the collapse of Western government. The issue is
|
Corporations have filled the void of power left behind by the collapse of Western government. The issue is
|
||||||
they've become so big that you don't know who they're working for. And if you're employed at one of these
|
they've become so big that you don't know who they're working for. And if you're employed at one of these
|
||||||
@ -475,80 +383,51 @@ export const FactionInfos: IMap<FactionInfo> = {
|
|||||||
That's terror. Terror, fear, and corruption. All born into the system, all propagated by the system.
|
That's terror. Terror, fear, and corruption. All born into the system, all propagated by the system.
|
||||||
</>
|
</>
|
||||||
),
|
),
|
||||||
[],
|
offerHackingWork: true,
|
||||||
true,
|
offerFieldWork: true,
|
||||||
true,
|
}),
|
||||||
true,
|
|
||||||
false,
|
|
||||||
false,
|
|
||||||
false,
|
|
||||||
),
|
|
||||||
|
|
||||||
[FactionNames.Tetrads]: new FactionInfo(
|
[FactionNames.Tetrads]: new FactionInfo({
|
||||||
<>Following the mandate of Heaven and carrying out the way.</>,
|
infoText: <>Following the mandate of Heaven and carrying out the way.</>,
|
||||||
[],
|
|
||||||
false,
|
|
||||||
false,
|
|
||||||
true,
|
|
||||||
true,
|
|
||||||
false,
|
|
||||||
false,
|
|
||||||
),
|
|
||||||
|
|
||||||
[FactionNames.SlumSnakes]: new FactionInfo(
|
offerFieldWork: true,
|
||||||
<>{FactionNames.SlumSnakes} rule!</>,
|
offerSecurityWork: true,
|
||||||
[],
|
}),
|
||||||
false,
|
|
||||||
false,
|
[FactionNames.SlumSnakes]: new FactionInfo({
|
||||||
true,
|
infoText: <>{FactionNames.SlumSnakes} rule!</>,
|
||||||
true,
|
|
||||||
false,
|
offerFieldWork: true,
|
||||||
false,
|
offerSecurityWork: true,
|
||||||
),
|
}),
|
||||||
|
|
||||||
// Earlygame factions - factions the player will prestige with early on that don't belong in other categories.
|
// Earlygame factions - factions the player will prestige with early on that don't belong in other categories.
|
||||||
[FactionNames.Netburners]: new FactionInfo(
|
[FactionNames.Netburners]: new FactionInfo({
|
||||||
<>{"~~//*>H4CK||3T 8URN3R5**>?>\\~~"}</>,
|
infoText: <>{"~~//*>H4CK||3T 8URN3R5**>?>\\~~"}</>,
|
||||||
[],
|
offerHackingWork: true,
|
||||||
true,
|
}),
|
||||||
true,
|
|
||||||
false,
|
|
||||||
false,
|
|
||||||
false,
|
|
||||||
false,
|
|
||||||
),
|
|
||||||
|
|
||||||
[FactionNames.TianDiHui]: new FactionInfo(
|
[FactionNames.TianDiHui]: new FactionInfo({
|
||||||
<>Obey Heaven and work righteously.</>,
|
infoText: <>Obey Heaven and work righteously.</>,
|
||||||
[],
|
offerHackingWork: true,
|
||||||
true,
|
|
||||||
true,
|
|
||||||
false,
|
|
||||||
true,
|
|
||||||
false,
|
|
||||||
false,
|
|
||||||
),
|
|
||||||
|
|
||||||
[FactionNames.CyberSec]: new FactionInfo(
|
offerSecurityWork: true,
|
||||||
(
|
}),
|
||||||
|
|
||||||
|
[FactionNames.CyberSec]: new FactionInfo({
|
||||||
|
infoText: (
|
||||||
<>
|
<>
|
||||||
The Internet is the first thing that was built that we don't fully understand, the largest experiment in anarchy
|
The Internet is the first thing that was built that we don't fully understand, the largest experiment in anarchy
|
||||||
that we have ever had. And as the world becomes increasingly dominated by it, society approaches the brink of
|
that we have ever had. And as the world becomes increasingly dominated by it, society approaches the brink of
|
||||||
total chaos. We serve only to protect society, to protect humanity, to protect the world from imminent collapse.
|
total chaos. We serve only to protect society, to protect humanity, to protect the world from imminent collapse.
|
||||||
</>
|
</>
|
||||||
),
|
),
|
||||||
[],
|
offerHackingWork: true,
|
||||||
true,
|
}),
|
||||||
true,
|
|
||||||
false,
|
|
||||||
false,
|
|
||||||
false,
|
|
||||||
false,
|
|
||||||
),
|
|
||||||
|
|
||||||
// Special Factions
|
// Special Factions
|
||||||
[FactionNames.Bladeburners]: new FactionInfo(
|
[FactionNames.Bladeburners]: new FactionInfo({
|
||||||
(
|
infoText: (
|
||||||
<>
|
<>
|
||||||
It's too bad they won't live. But then again, who does?
|
It's too bad they won't live. But then again, who does?
|
||||||
<br />
|
<br />
|
||||||
@ -557,17 +436,13 @@ export const FactionInfos: IMap<FactionInfo> = {
|
|||||||
Completing {FactionNames.Bladeburners} contracts/operations will increase your reputation.
|
Completing {FactionNames.Bladeburners} contracts/operations will increase your reputation.
|
||||||
</>
|
</>
|
||||||
),
|
),
|
||||||
[],
|
|
||||||
false,
|
special: true,
|
||||||
false,
|
}),
|
||||||
false,
|
|
||||||
false,
|
|
||||||
true,
|
|
||||||
false,
|
|
||||||
),
|
|
||||||
|
|
||||||
// prettier-ignore
|
// prettier-ignore
|
||||||
[FactionNames.ChurchOfTheMachineGod]: new FactionInfo(<>
|
[FactionNames.ChurchOfTheMachineGod]: new FactionInfo({
|
||||||
|
infoText:(<>
|
||||||
{" `` "}<br />
|
{" `` "}<br />
|
||||||
{" -odmmNmds: "}<br />
|
{" -odmmNmds: "}<br />
|
||||||
{" `hNmo:..-omNh. "}<br />
|
{" `hNmo:..-omNh. "}<br />
|
||||||
@ -599,13 +474,11 @@ export const FactionInfos: IMap<FactionInfo> = {
|
|||||||
Many cultures predict an end to humanity in the near future, a final
|
Many cultures predict an end to humanity in the near future, a final
|
||||||
Armageddon that will end the world; but we disagree.
|
Armageddon that will end the world; but we disagree.
|
||||||
<br /><br />Note that for this faction, reputation can
|
<br /><br />Note that for this faction, reputation can
|
||||||
only be gained by charging Stanek's gift.</>,
|
only be gained by charging Stanek's gift.</>),
|
||||||
[],
|
offerHackingWork: false,
|
||||||
false,
|
offerFieldWork: false,
|
||||||
false,
|
offerSecurityWork: false,
|
||||||
false,
|
special: true,
|
||||||
false,
|
keepOnInstall: true,
|
||||||
true,
|
}),
|
||||||
true,
|
|
||||||
),
|
|
||||||
};
|
};
|
||||||
|
@ -78,10 +78,10 @@ export function AugmentationsPage(props: IProps): React.ReactElement {
|
|||||||
const augs = getAugs();
|
const augs = getAugs();
|
||||||
function canBuy(augName: string): boolean {
|
function canBuy(augName: string): boolean {
|
||||||
const aug = Augmentations[augName];
|
const aug = Augmentations[augName];
|
||||||
const repCost = aug.baseRepRequirement * props.faction.getInfo().augmentationRepRequirementMult;
|
const repCost = aug.baseRepRequirement;
|
||||||
const hasReq = props.faction.playerReputation >= repCost;
|
const hasReq = props.faction.playerReputation >= repCost;
|
||||||
const hasRep = hasAugmentationPrereqs(aug);
|
const hasRep = hasAugmentationPrereqs(aug);
|
||||||
const hasCost = aug.baseCost !== 0 && player.money > aug.baseCost * props.faction.getInfo().augmentationPriceMult;
|
const hasCost = aug.baseCost !== 0 && player.money > aug.baseCost;
|
||||||
return hasCost && hasReq && hasRep;
|
return hasCost && hasReq && hasRep;
|
||||||
}
|
}
|
||||||
const buy = augs.filter(canBuy).sort((augName1, augName2) => {
|
const buy = augs.filter(canBuy).sort((augName1, augName2) => {
|
||||||
|
@ -20,7 +20,6 @@ interface IProps {
|
|||||||
|
|
||||||
export function PurchaseAugmentationModal(props: IProps): React.ReactElement {
|
export function PurchaseAugmentationModal(props: IProps): React.ReactElement {
|
||||||
const player = use.Player();
|
const player = use.Player();
|
||||||
const factionInfo = props.faction.getInfo();
|
|
||||||
|
|
||||||
function buy(): void {
|
function buy(): void {
|
||||||
if (!isRepeatableAug(props.aug) && player.hasAugmentation(props.aug)) {
|
if (!isRepeatableAug(props.aug) && player.hasAugmentation(props.aug)) {
|
||||||
@ -43,7 +42,7 @@ export function PurchaseAugmentationModal(props: IProps): React.ReactElement {
|
|||||||
<br />
|
<br />
|
||||||
<br />
|
<br />
|
||||||
Would you like to purchase the {props.aug.name} Augmentation for
|
Would you like to purchase the {props.aug.name} Augmentation for
|
||||||
<Money money={props.aug.baseCost * factionInfo.augmentationPriceMult} />?
|
<Money money={props.aug.baseCost} />?
|
||||||
<br />
|
<br />
|
||||||
<br />
|
<br />
|
||||||
</Typography>
|
</Typography>
|
||||||
|
@ -84,11 +84,11 @@ export function PurchaseableAugmentation(props: IProps): React.ReactElement {
|
|||||||
return <></>;
|
return <></>;
|
||||||
}
|
}
|
||||||
|
|
||||||
const moneyCost = aug.baseCost * props.faction.getInfo().augmentationPriceMult;
|
const moneyCost = aug.baseCost;
|
||||||
const repCost = aug.baseRepRequirement * props.faction.getInfo().augmentationRepRequirementMult;
|
const repCost = aug.baseRepRequirement;
|
||||||
const hasReq = hasAugmentationPrereqs(aug);
|
const hasReq = hasAugmentationPrereqs(aug);
|
||||||
const hasRep = props.faction.playerReputation >= repCost;
|
const hasRep = props.faction.playerReputation >= repCost;
|
||||||
const hasCost = aug.baseCost === 0 || props.p.money > aug.baseCost * props.faction.getInfo().augmentationPriceMult;
|
const hasCost = aug.baseCost === 0 || props.p.money > aug.baseCost;
|
||||||
|
|
||||||
// Determine UI properties
|
// Determine UI properties
|
||||||
const color: "error" | "primary" = !hasReq || !hasRep || !hasCost ? "error" : "primary";
|
const color: "error" | "primary" = !hasReq || !hasRep || !hasCost ? "error" : "primary";
|
||||||
|
@ -174,10 +174,11 @@ export function SpecialLocation(props: IProps): React.ReactElement {
|
|||||||
applyAugmentation({ name: AugmentationNames.StaneksGift1, level: 1 });
|
applyAugmentation({ name: AugmentationNames.StaneksGift1, level: 1 });
|
||||||
}
|
}
|
||||||
|
|
||||||
router.toFaction(faction);
|
router.toStaneksGift();
|
||||||
}
|
}
|
||||||
|
|
||||||
function renderCotMG(): React.ReactElement {
|
function renderCotMG(): React.ReactElement {
|
||||||
|
const toStanek = <Button onClick={() => router.toStaneksGift()}>Open Stanek's Gift</Button>;
|
||||||
// prettier-ignore
|
// prettier-ignore
|
||||||
const symbol = <Typography sx={{ lineHeight: '1em', whiteSpace: 'pre' }}>
|
const symbol = <Typography sx={{ lineHeight: '1em', whiteSpace: 'pre' }}>
|
||||||
{" `` "}<br />
|
{" `` "}<br />
|
||||||
@ -218,6 +219,9 @@ export function SpecialLocation(props: IProps): React.ReactElement {
|
|||||||
seems. Curious, Just how much of a machine's soul do you house in that body?
|
seems. Curious, Just how much of a machine's soul do you house in that body?
|
||||||
</i>
|
</i>
|
||||||
</Typography>
|
</Typography>
|
||||||
|
<br />
|
||||||
|
{toStanek}
|
||||||
|
<br />
|
||||||
{symbol}
|
{symbol}
|
||||||
</>
|
</>
|
||||||
);
|
);
|
||||||
@ -232,6 +236,9 @@ export function SpecialLocation(props: IProps): React.ReactElement {
|
|||||||
mastery of the gift clearly demonstrates that. My hopes are climbing by the day for you.
|
mastery of the gift clearly demonstrates that. My hopes are climbing by the day for you.
|
||||||
</i>
|
</i>
|
||||||
</Typography>
|
</Typography>
|
||||||
|
<br />
|
||||||
|
{toStanek}
|
||||||
|
<br />
|
||||||
{symbol}
|
{symbol}
|
||||||
</>
|
</>
|
||||||
);
|
);
|
||||||
@ -242,6 +249,9 @@ export function SpecialLocation(props: IProps): React.ReactElement {
|
|||||||
<Typography>
|
<Typography>
|
||||||
<i>Allison "Mother" Stanek: Welcome back my child!</i>
|
<i>Allison "Mother" Stanek: Welcome back my child!</i>
|
||||||
</Typography>
|
</Typography>
|
||||||
|
<br />
|
||||||
|
{toStanek}
|
||||||
|
<br />
|
||||||
{symbol}
|
{symbol}
|
||||||
</>
|
</>
|
||||||
);
|
);
|
||||||
|
Loading…
Reference in New Issue
Block a user