mirror of
https://github.com/bitburner-official/bitburner-src.git
synced 2024-11-26 17:43:48 +01:00
Polish entropy
- Also adds DevMenu entry
This commit is contained in:
parent
c92b159580
commit
4c422347d4
@ -23,6 +23,7 @@ import { Sleeves } from "./DevMenu/ui/Sleeves";
|
|||||||
import { Stanek } from "./DevMenu/ui/Stanek";
|
import { Stanek } from "./DevMenu/ui/Stanek";
|
||||||
import { TimeSkip } from "./DevMenu/ui/TimeSkip";
|
import { TimeSkip } from "./DevMenu/ui/TimeSkip";
|
||||||
import { Achievements } from "./DevMenu/ui/Achievements";
|
import { Achievements } from "./DevMenu/ui/Achievements";
|
||||||
|
import { Entropy } from "./DevMenu/ui/Entropy";
|
||||||
import Typography from "@mui/material/Typography";
|
import Typography from "@mui/material/Typography";
|
||||||
import { Exploit } from "./Exploits/Exploit";
|
import { Exploit } from "./Exploits/Exploit";
|
||||||
|
|
||||||
@ -63,6 +64,7 @@ export function DevMenuRoot(props: IProps): React.ReactElement {
|
|||||||
|
|
||||||
<TimeSkip player={props.player} engine={props.engine} />
|
<TimeSkip player={props.player} engine={props.engine} />
|
||||||
<Achievements player={props.player} engine={props.engine} />
|
<Achievements player={props.player} engine={props.engine} />
|
||||||
|
<Entropy player={props.player} engine={props.engine} />
|
||||||
</>
|
</>
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
|
50
src/DevMenu/ui/Entropy.tsx
Normal file
50
src/DevMenu/ui/Entropy.tsx
Normal file
@ -0,0 +1,50 @@
|
|||||||
|
import React from "react";
|
||||||
|
|
||||||
|
import Accordion from "@mui/material/Accordion";
|
||||||
|
import AccordionSummary from "@mui/material/AccordionSummary";
|
||||||
|
import AccordionDetails from "@mui/material/AccordionDetails";
|
||||||
|
import ExpandMoreIcon from "@mui/icons-material/ExpandMore";
|
||||||
|
|
||||||
|
import Typography from "@mui/material/Typography";
|
||||||
|
import { IPlayer } from "../../PersonObjects/IPlayer";
|
||||||
|
import { Adjuster } from "./Adjuster";
|
||||||
|
import { IEngine } from "../../IEngine";
|
||||||
|
|
||||||
|
// Update as additional BitNodes get implemented
|
||||||
|
|
||||||
|
interface IProps {
|
||||||
|
player: IPlayer;
|
||||||
|
engine: IEngine;
|
||||||
|
}
|
||||||
|
|
||||||
|
export function Entropy(props: IProps): React.ReactElement {
|
||||||
|
return (
|
||||||
|
<Accordion TransitionProps={{ unmountOnExit: true }}>
|
||||||
|
<AccordionSummary expandIcon={<ExpandMoreIcon />}>
|
||||||
|
<Typography>Entropy</Typography>
|
||||||
|
</AccordionSummary>
|
||||||
|
<AccordionDetails>
|
||||||
|
<Adjuster
|
||||||
|
label="Set entropy"
|
||||||
|
placeholder="entropy"
|
||||||
|
add={num => {
|
||||||
|
props.player.entropyStacks += num;
|
||||||
|
props.player.applyEntropy(props.player.entropyStacks);
|
||||||
|
}}
|
||||||
|
subtract={num => {
|
||||||
|
props.player.entropyStacks -= num;
|
||||||
|
props.player.applyEntropy(props.player.entropyStacks);
|
||||||
|
}}
|
||||||
|
tons={() => {
|
||||||
|
props.player.entropyStacks += 1e12;
|
||||||
|
props.player.applyEntropy(props.player.entropyStacks);
|
||||||
|
}}
|
||||||
|
reset={() => {
|
||||||
|
props.player.entropyStacks = 0;
|
||||||
|
props.player.applyEntropy(props.player.entropyStacks);
|
||||||
|
}}
|
||||||
|
/>
|
||||||
|
</AccordionDetails>
|
||||||
|
</Accordion>
|
||||||
|
);
|
||||||
|
}
|
@ -19,9 +19,13 @@ import { Augmentations } from "../../../Augmentation/Augmentations";
|
|||||||
import { AugmentationNames } from "../../../Augmentation/data/AugmentationNames"
|
import { AugmentationNames } from "../../../Augmentation/data/AugmentationNames"
|
||||||
import { Settings } from "../../../Settings/Settings";
|
import { Settings } from "../../../Settings/Settings";
|
||||||
import { IMap } from "../../../types";
|
import { IMap } from "../../../types";
|
||||||
import { convertTimeMsToTimeElapsedString } from "../../../utils/StringHelperFunctions";
|
import {
|
||||||
|
convertTimeMsToTimeElapsedString,
|
||||||
|
formatNumber
|
||||||
|
} from "../../../utils/StringHelperFunctions";
|
||||||
import { LocationName } from "../../../Locations/data/LocationNames";
|
import { LocationName } from "../../../Locations/data/LocationNames";
|
||||||
import { Locations } from "../../../Locations/Locations";
|
import { Locations } from "../../../Locations/Locations";
|
||||||
|
import { CONSTANTS } from "../../../Constants";
|
||||||
|
|
||||||
import { IPlayer } from "../../IPlayer";
|
import { IPlayer } from "../../IPlayer";
|
||||||
|
|
||||||
@ -73,12 +77,8 @@ export const GraftingRoot = (): React.ReactElement => {
|
|||||||
Illum velit takimata et aliquyam takimata labore vel dolor dolores duo amet lorem elitr facer invidunt.
|
Illum velit takimata et aliquyam takimata labore vel dolor dolores duo amet lorem elitr facer invidunt.
|
||||||
</Typography>
|
</Typography>
|
||||||
|
|
||||||
<Box sx={{ my: 5 }}>
|
<Box sx={{ my: 3 }}>
|
||||||
<Typography variant="h5">Craft Augmentations</Typography>
|
<Typography variant="h5">Craft Augmentations</Typography>
|
||||||
<Typography>
|
|
||||||
here goes a list with available augmentations with a purchase button (with price shown) to the side of it <br />
|
|
||||||
getAvailableAugs function to the rescue
|
|
||||||
</Typography>
|
|
||||||
<Paper sx={{ my: 1, width: 'fit-content', display: 'grid', gridTemplateColumns: '1fr 3fr' }}>
|
<Paper sx={{ my: 1, width: 'fit-content', display: 'grid', gridTemplateColumns: '1fr 3fr' }}>
|
||||||
<List sx={{ maxHeight: 400, overflowY: 'scroll', borderRight: `1px solid ${Settings.theme.welllight}` }}>
|
<List sx={{ maxHeight: 400, overflowY: 'scroll', borderRight: `1px solid ${Settings.theme.welllight}` }}>
|
||||||
{getAvailableAugs(player).map((k, i) => (
|
{getAvailableAugs(player).map((k, i) => (
|
||||||
@ -126,12 +126,28 @@ export const GraftingRoot = (): React.ReactElement => {
|
|||||||
</Paper>
|
</Paper>
|
||||||
</Box>
|
</Box>
|
||||||
|
|
||||||
<Box sx={{ my: 5 }}>
|
<Box sx={{ my: 3 }}>
|
||||||
<Typography variant="h5">Entropy Accumulation</Typography>
|
<Typography variant="h5">Entropy Accumulation</Typography>
|
||||||
|
|
||||||
|
<Paper sx={{ my: 1, p: 1, width: 'fit-content' }}>
|
||||||
|
<Typography>
|
||||||
|
<b>Accumulated Entropy:</b> {player.entropyStacks}
|
||||||
|
<br />
|
||||||
|
<b>All multipliers decreased by:</b> {formatNumber((1 - (CONSTANTS.EntropyEffect ** player.entropyStacks)) * 100, 3)}%
|
||||||
|
</Typography>
|
||||||
|
</Paper>
|
||||||
|
|
||||||
<Typography>
|
<Typography>
|
||||||
probably some info about the cumulative negative effects here<br />
|
Augmenting causes signficant physical and psychological changes to the affected
|
||||||
{player.entropyStacks} accumulated entropy
|
individual, and the best way for the body to deal with these effects is to undergo
|
||||||
|
a full shutdown process.
|
||||||
|
<br /><br />
|
||||||
|
Grafting Augmentations to a semi-conscious host is extremely experimental and dangerous.
|
||||||
|
<br /><br />
|
||||||
|
Scientists don't fully understand the consequences, but some have hypothesized that there's
|
||||||
|
a buildup of unknown irregularities that impair the user...
|
||||||
</Typography>
|
</Typography>
|
||||||
|
|
||||||
</Box>
|
</Box>
|
||||||
</Container>
|
</Container>
|
||||||
</>
|
</>
|
||||||
|
@ -28,6 +28,10 @@ export function hasAugmentation(this: IPlayer, aug: string | Augmentation, insta
|
|||||||
}
|
}
|
||||||
|
|
||||||
export function applyEntropy(this: IPlayer, stacks = 1): void {
|
export function applyEntropy(this: IPlayer, stacks = 1): void {
|
||||||
|
// Re-apply all multipliers
|
||||||
|
this.reapplyAllAugmentations();
|
||||||
|
this.reapplyAllSourceFiles();
|
||||||
|
|
||||||
const newMultipliers = calculateEntropy(this, stacks);
|
const newMultipliers = calculateEntropy(this, stacks);
|
||||||
for (const [mult, val] of Object.entries(newMultipliers)) {
|
for (const [mult, val] of Object.entries(newMultipliers)) {
|
||||||
this.setMult(mult, val);
|
this.setMult(mult, val);
|
||||||
|
Loading…
Reference in New Issue
Block a user