import { IPlayer } from "../../PersonObjects/IPlayer"; import { IEngine } from "../../IEngine"; import { Factions } from "../../Faction/Factions"; import React, { useState } from "react"; import { StdButton } from "../../ui/React/StdButton"; import Grid from "@material-ui/core/Grid"; import { Money } from "../../ui/React/Money"; import { Reputation } from "../../ui/React/Reputation"; import { BitNodeMultipliers } from "../../BitNode/BitNodeMultipliers"; interface IProps { Player: IPlayer; Engine: IEngine; StartingDifficulty: number; Difficulty: number; MaxLevel: number; } export function Victory(props: IProps): React.ReactElement { const [faction, setFaction] = useState("none"); function quitInfiltration(): void { const menu = document.getElementById("mainmenu-container"); if (!menu) throw new Error("mainmenu-container somehow null"); menu.style.visibility = "visible"; props.Engine.loadLocationContent(); } const levelBonus = props.MaxLevel * Math.pow(1.01, props.MaxLevel); const repGain = Math.pow(props.Difficulty + 1, 1.1) * Math.pow(props.StartingDifficulty, 1.2) * 30 * levelBonus * BitNodeMultipliers.InfiltrationRep; const moneyGain = Math.pow(props.Difficulty + 1, 2) * Math.pow(props.StartingDifficulty, 3) * 3e3 * levelBonus * BitNodeMultipliers.InfiltrationMoney; function sell(): void { props.Player.gainMoney(moneyGain); props.Player.recordMoneySource(moneyGain, "infiltration"); quitInfiltration(); } function trade(): void { if (faction === "none") return; Factions[faction].playerReputation += repGain; quitInfiltration(); } function changeDropdown(event: React.ChangeEvent): void { setFaction(event.target.value); } return ( <>

Infiltration successful!

You can trade the confidential information you found for money or reputation.

{"Trade for "} {Reputation(repGain)} {" reputation"} } />
{"Sell for "} } />
); }