diff --git a/src/Augmentation/Augmentations.ts b/src/Augmentation/Augmentations.ts index 34f3fa2b8..95b1b1ee2 100644 --- a/src/Augmentation/Augmentations.ts +++ b/src/Augmentation/Augmentations.ts @@ -1781,7 +1781,7 @@ export const Augmentations: Record = (() => { repCost: 1e4, moneyCost: 1e6, info: "Penta-dynamo-neurovascular-valve inserted in the carpal ligament, enhances dexterity.", - stats: "This augmentation makes the Cheat Code minigame easier by allowing the opposite character.", + stats: "This augmentation makes the Cheat Code minigame easier by showing what character will come next.", isSpecial: true, factions: [FactionName.ShadowsOfAnarchy], }, diff --git a/src/Infiltration/ui/CheatCodeGame.tsx b/src/Infiltration/ui/CheatCodeGame.tsx index 0a3c19b45..a7c0518ad 100644 --- a/src/Infiltration/ui/CheatCodeGame.tsx +++ b/src/Infiltration/ui/CheatCodeGame.tsx @@ -2,15 +2,7 @@ import { Paper, Typography } from "@mui/material"; import React, { useState } from "react"; import { AugmentationName } from "@enums"; import { Player } from "@player"; -import { - downArrowSymbol, - getArrow, - getInverseArrow, - leftArrowSymbol, - random, - rightArrowSymbol, - upArrowSymbol, -} from "../utils"; +import { Arrow, downArrowSymbol, getArrow, leftArrowSymbol, random, rightArrowSymbol, upArrowSymbol } from "../utils"; import { interpolate } from "./Difficulty"; import { GameTimer } from "./GameTimer"; import { IMinigameProps } from "./IMinigameProps"; @@ -45,7 +37,7 @@ export function CheatCodeGame(props: IMinigameProps): React.ReactElement { function press(this: Document, event: KeyboardEvent): void { event.preventDefault(); - if (code[index] !== getArrow(event) && (!hasAugment || code[index] !== getInverseArrow(event))) { + if (code[index] !== getArrow(event)) { props.onFailure(); return; } @@ -58,21 +50,37 @@ export function CheatCodeGame(props: IMinigameProps): React.ReactElement { Enter the Code! - {code[index]} + +
+ {code.map((arrow, i) => { + return ( + + {i > index && !hasAugment ? "?" : arrow} + + ); + })} +
+
); } -function generateCode(difficulty: Difficulty): string { - const arrows = [leftArrowSymbol, rightArrowSymbol, upArrowSymbol, downArrowSymbol]; - let code = ""; +function generateCode(difficulty: Difficulty): Arrow[] { + const arrows: Arrow[] = [leftArrowSymbol, rightArrowSymbol, upArrowSymbol, downArrowSymbol]; + const code: Arrow[] = []; for (let i = 0; i < random(difficulty.min, difficulty.max); i++) { let arrow = arrows[Math.floor(4 * Math.random())]; while (arrow === code[code.length - 1]) arrow = arrows[Math.floor(4 * Math.random())]; - code += arrow; + code.push(arrow); } - return code; } diff --git a/src/Infiltration/utils.ts b/src/Infiltration/utils.ts index ed8f6fedc..1bdcc2bdc 100644 --- a/src/Infiltration/utils.ts +++ b/src/Infiltration/utils.ts @@ -9,38 +9,21 @@ export const downArrowSymbol = "↓"; export const leftArrowSymbol = "←"; export const rightArrowSymbol = "→"; -export function getArrow(event: KeyboardEvent): string { - switch (event.key) { - case KEY.UP_ARROW: - case KEY.W: - return upArrowSymbol; - case KEY.LEFT_ARROW: - case KEY.A: - return leftArrowSymbol; - case KEY.DOWN_ARROW: - case KEY.S: - return downArrowSymbol; - case KEY.RIGHT_ARROW: - case KEY.D: - return rightArrowSymbol; - } - return ""; -} +export type Arrow = typeof leftArrowSymbol | typeof rightArrowSymbol | typeof upArrowSymbol | typeof downArrowSymbol; -export function getInverseArrow(event: KeyboardEvent): string { +export function getArrow(event: KeyboardEvent): Arrow | undefined { switch (event.key) { - case KEY.DOWN_ARROW: - case KEY.S: - return upArrowSymbol; - case KEY.RIGHT_ARROW: - case KEY.D: - return leftArrowSymbol; case KEY.UP_ARROW: case KEY.W: - return downArrowSymbol; + return upArrowSymbol; case KEY.LEFT_ARROW: case KEY.A: + return leftArrowSymbol; + case KEY.DOWN_ARROW: + case KEY.S: + return downArrowSymbol; + case KEY.RIGHT_ARROW: + case KEY.D: return rightArrowSymbol; } - return ""; }