## Hacking Hacking minigames are played by jacking into terminal objects. Terminals are YAML objects that are registered in Go's `terminalDefs` map. ### Terminal Object YAML ```yaml id: terminal_basic name: basic terminal color: "40" description: "A battered terminal with a cracked screen. {40}[Level 1 Hacking]{/}" inroom_description: "A {40}basic terminal{/} hums quietly against the wall." ``` - `id` must match a key in `terminalDefs` (Go code in `internal/game/hacking.go`) - `name` is used for matching in the `jack` command - `color` controls the display color - `description` is shown when examining the terminal - `inroom_description` is shown in room listings - No `behavior` field — terminals are registered in Go, not YAML behaviors ### Adding a New Terminal 1. Create an object YAML file in `data/objects/terminal_.yaml` 2. Add an entry to `terminalDefs` in `internal/game/hacking.go` 3. Optionally create a new minigame implementation in `internal/game/hacking_.go` 4. Place the terminal object in a room's `objects:` list ### Adding a New Minigame New minigames implement the `HackingMinigame` interface: ```go type HackingMinigame interface { Init(level int) string HandleInput(input string) (output string, done bool, won bool) Name() string } ``` Optionally implement `XPBonuser` for bonus XP: ```go type XPBonuser interface { BonusXP() int } ```