diff --git a/src/Augmentation/ui/PlayerMultipliers.tsx b/src/Augmentation/ui/PlayerMultipliers.tsx
index 2d5696c79..01b146040 100644
--- a/src/Augmentation/ui/PlayerMultipliers.tsx
+++ b/src/Augmentation/ui/PlayerMultipliers.tsx
@@ -1,18 +1,22 @@
/**
* React component for displaying the player's multipliers on the Augmentation UI page
*/
-import { Box, Typography, List, ListItemText, ListItem, Paper } from "@mui/material";
+import { DoubleArrow } from "@mui/icons-material";
+import { List, ListItem, ListItemText, Paper, Typography } from "@mui/material";
import * as React from "react";
import { BitNodeMultipliers } from "../../BitNode/BitNodeMultipliers";
import { Player } from "../../Player";
+import { Settings } from "../../Settings/Settings";
+import { SourceFileFlags } from "../../SourceFile/SourceFileFlags";
import { numeralWrapper } from "../../ui/numeralFormat";
import { Augmentations } from "../Augmentations";
-import { DoubleArrow } from "@mui/icons-material";
-import { SourceFileFlags } from "../../SourceFile/SourceFileFlags";
-import { Settings } from "../../Settings/Settings";
-function calculateAugmentedStats(): any {
- const augP: any = {};
+interface IAugmentedStats {
+ [index: string]: number;
+}
+
+function calculateAugmentedStats(): IAugmentedStats {
+ const augP: IAugmentedStats = {};
for (const aug of Player.queuedAugmentations) {
const augObj = Augmentations[aug.name];
for (const mult of Object.keys(augObj.mults)) {
@@ -23,13 +27,13 @@ function calculateAugmentedStats(): any {
return augP;
}
-interface BitNodeModifiedStatsProps {
+interface IBitNodeModifiedStatsProps {
base: number;
mult: number;
color: string;
}
-function BitNodeModifiedStats(props: BitNodeModifiedStatsProps): React.ReactElement {
+function BitNodeModifiedStats(props: IBitNodeModifiedStatsProps): React.ReactElement {
if (props.mult === 1 || SourceFileFlags[5] === 0)
return {numeralWrapper.formatPercentage(props.base)};
@@ -41,19 +45,27 @@ function BitNodeModifiedStats(props: BitNodeModifiedStatsProps): React.ReactElem
);
}
-interface MultListProps {
- rows: (string | number)[][];
- color: string;
+type MultiplierListItemData = [
+ multiplier: string,
+ currentValue: number,
+ augmentedValue: number,
+ bitNodeMultiplier: number,
+ color: string,
+];
+
+interface IMultiplierListProps {
+ rows: MultiplierListItemData[];
noMargin?: boolean;
}
-function MultiplierList({ rows, color, noMargin = false }: MultListProps): React.ReactElement {
+function MultiplierList({ rows, noMargin = false }: IMultiplierListProps): React.ReactElement {
const listItems = rows
.map((data) => {
- const mult = data[0] as string,
- value = data[1] as number,
- improved = data[2] as number | null,
- bnMult = data[3] as number;
+ const mult = data[0],
+ value = data[1],
+ improved = data[2],
+ bnMult = data[3],
+ color = data[4];
if (improved) {
return (
@@ -94,217 +106,179 @@ function MultiplierList({ rows, color, noMargin = false }: MultListProps): React
export function PlayerMultipliers(): React.ReactElement {
const mults = calculateAugmentedStats();
- function BladeburnerMults(): React.ReactElement {
- if (!Player.canAccessBladeburner()) return <>>;
- return (
- <>
-
-
- >
+ const leftColData: MultiplierListItemData[] = [
+ ...[
+ ["Hacking Chance ", Player.hacking_chance_mult, Player.hacking_chance_mult * mults.hacking_chance_mult, 1],
+ ["Hacking Speed ", Player.hacking_speed_mult, Player.hacking_speed_mult * mults.hacking_speed_mult, 1],
+ ["Hacking Money ", Player.hacking_money_mult, Player.hacking_money_mult * mults.hacking_money_mult, 1],
+ ["Hacking Growth ", Player.hacking_grow_mult, Player.hacking_grow_mult * mults.hacking_grow_mult, 1],
+ [
+ "Hacking Level ",
+ Player.hacking_mult,
+ Player.hacking_mult * mults.hacking_mult,
+ BitNodeMultipliers.HackingLevelMultiplier,
+ ],
+ [
+ "Hacking Experience ",
+ Player.hacking_exp_mult,
+ Player.hacking_exp_mult * mults.hacking_exp_mult,
+ BitNodeMultipliers.HackExpGain,
+ ],
+ ].map((data): MultiplierListItemData => (data as any).concat([Settings.theme.hack])),
+ ...[
+ [
+ "Strength Level ",
+ Player.strength_mult,
+ Player.strength_mult * mults.strength_mult,
+ BitNodeMultipliers.StrengthLevelMultiplier,
+ ],
+ ["Strength Experience ", Player.strength_exp_mult, Player.strength_exp_mult * mults.strength_exp_mult, 1],
+ [
+ "Defense Level ",
+ Player.defense_mult,
+ Player.defense_mult * mults.defense_mult,
+ BitNodeMultipliers.DefenseLevelMultiplier,
+ ],
+ ["Defense Experience ", Player.defense_exp_mult, Player.defense_exp_mult * mults.defense_exp_mult, 1],
+ [
+ "Dexterity Level ",
+ Player.dexterity_mult,
+ Player.dexterity_mult * mults.dexterity_mult,
+ BitNodeMultipliers.DexterityLevelMultiplier,
+ ],
+ ["Dexterity Experience ", Player.dexterity_exp_mult, Player.dexterity_exp_mult * mults.dexterity_exp_mult, 1],
+ [
+ "Agility Level ",
+ Player.agility_mult,
+ Player.agility_mult * mults.agility_mult,
+ BitNodeMultipliers.AgilityLevelMultiplier,
+ ],
+ ["Agility Experience ", Player.agility_exp_mult, Player.agility_exp_mult * mults.agility_exp_mult, 1],
+ ].map((data): MultiplierListItemData => (data as any).concat([Settings.theme.combat])),
+ [
+ "Charisma Level ",
+ Player.charisma_mult,
+ Player.charisma_mult * mults.charisma_mult,
+ BitNodeMultipliers.CharismaLevelMultiplier,
+ Settings.theme.cha,
+ ],
+ [
+ "Charisma Experience ",
+ Player.charisma_exp_mult,
+ Player.charisma_exp_mult * mults.charisma_exp_mult,
+ 1,
+ Settings.theme.cha,
+ ],
+ ];
+ const rightColData: MultiplierListItemData[] = [
+ ...[
+ [
+ "Hacknet Node production ",
+ Player.hacknet_node_money_mult,
+ Player.hacknet_node_money_mult * mults.hacknet_node_money_mult,
+ BitNodeMultipliers.HacknetNodeMoney,
+ ],
+ [
+ "Hacknet Node purchase cost ",
+ Player.hacknet_node_purchase_cost_mult,
+ Player.hacknet_node_purchase_cost_mult * mults.hacknet_node_purchase_cost_mult,
+ 1,
+ ],
+ [
+ "Hacknet Node RAM upgrade cost ",
+ Player.hacknet_node_ram_cost_mult,
+ Player.hacknet_node_ram_cost_mult * mults.hacknet_node_ram_cost_mult,
+ 1,
+ ],
+ [
+ "Hacknet Node Core purchase cost ",
+ Player.hacknet_node_core_cost_mult,
+ Player.hacknet_node_core_cost_mult * mults.hacknet_node_core_cost_mult,
+ 1,
+ ],
+ [
+ "Hacknet Node level upgrade cost ",
+ Player.hacknet_node_level_cost_mult,
+ Player.hacknet_node_level_cost_mult * mults.hacknet_node_level_cost_mult,
+ 1,
+ ],
+ ["Company reputation gain ", Player.company_rep_mult, Player.company_rep_mult * mults.company_rep_mult, 1],
+ [
+ "Faction reputation gain ",
+ Player.faction_rep_mult,
+ Player.faction_rep_mult * mults.faction_rep_mult,
+ BitNodeMultipliers.FactionWorkRepGain,
+ ],
+ ].map((data): MultiplierListItemData => (data as any).concat([Settings.theme.primary])),
+ [
+ "Salary ",
+ Player.work_money_mult,
+ Player.work_money_mult * mults.work_money_mult,
+ BitNodeMultipliers.CompanyWorkMoney,
+ Settings.theme.money,
+ ],
+ [
+ "Crime success ",
+ Player.crime_success_mult,
+ Player.crime_success_mult * mults.crime_success_mult,
+ 1,
+ Settings.theme.combat,
+ ],
+ [
+ "Crime money ",
+ Player.crime_money_mult,
+ Player.crime_money_mult * mults.crime_money_mult,
+ BitNodeMultipliers.CrimeMoney,
+ Settings.theme.money,
+ ],
+ ];
+
+ if (Player.canAccessBladeburner()) {
+ rightColData.push(
+ ...[
+ [
+ "Bladeburner Success Chance",
+ Player.bladeburner_success_chance_mult,
+ Player.bladeburner_success_chance_mult * mults.bladeburner_success_chance_mult,
+ 1,
+ ],
+ [
+ "Bladeburner Max Stamina",
+ Player.bladeburner_max_stamina_mult,
+ Player.bladeburner_max_stamina_mult * mults.bladeburner_max_stamina_mult,
+ 1,
+ ],
+ [
+ "Bladeburner Stamina Gain",
+ Player.bladeburner_stamina_gain_mult,
+ Player.bladeburner_stamina_gain_mult * mults.bladeburner_stamina_gain_mult,
+ 1,
+ ],
+ [
+ "Bladeburner Field Analysis",
+ Player.bladeburner_analysis_mult,
+ Player.bladeburner_analysis_mult * mults.bladeburner_analysis_mult,
+ 1,
+ ],
+ ].map((data): MultiplierListItemData => (data as any).concat([Settings.theme.primary])),
);
}
+ const hasLeftImprovements = +!!(leftColData.filter((item) => item[2] !== 0).length > 0),
+ hasRightImprovements = +!!(rightColData.filter((item) => item[2] !== 0).length > 0);
+
return (
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
+
+
+
);
}