> For the complete documentation index, see [llms.txt](https://sbscripts.gitbook.io/sb-scripts/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://sbscripts.gitbook.io/sb-scripts/sb-minigames/games-original.md).

# Games: Original

### Circle

Concentric rotating rings, each with a digit badge. Press that digit **while the marker is inside the highlighted arc**. Every ring must be cleared.

**Controls:** digit keys `1` to `9`

```lua
exports['sbminigames']:Circle({ difficulty = 'hard', circles = 3, time = 20 }, function(success)
    if success then end
end)
```

Positional: `Circle(difficulty, circles, callback)`

| Option       | Type | Default  | Range                              | What it does                            |
| ------------ | ---- | -------- | ---------------------------------- | --------------------------------------- |
| `difficulty` | enum | `medium` | `easy`, `medium`, `hard`, `expert` | Marker speed and arc size               |
| `circles`    | int  | `2`      | 1 to 6                             | Rings to clear                          |
| `time`       | int  | `0`      | 0 to 600                           | Seconds before failing (`0` = no limit) |

### Scrambler

A random alphanumeric code is shown. Type it exactly, with the keyboard or the on-screen keys.

**Controls:** letters, digits, `Backspace`

```lua
exports['sbminigames']:Scrambler({ length = 6, time = 20 }, cb)
```

Positional: `Scrambler(length, time, callback)`

| Option   | Type | Default | Range   | What it does           |
| -------- | ---- | ------- | ------- | ---------------------- |
| `length` | int  | `5`     | 4 to 8  | Characters in the code |
| `time`   | int  | `15`    | 5 to 60 | Seconds to type it     |

### Keypad

Simon-says on a 3 by 3 pad. Watch the buttons flash, then repeat the order.

**Controls:** mouse, or keys `1` to `9`

```lua
exports['sbminigames']:Keypad({ length = 5, speed = 600, time = 25 }, cb)
```

Positional: `Keypad(length, speed, time, callback)`

| Option   | Type | Default | Range       | What it does                                                     |
| -------- | ---- | ------- | ----------- | ---------------------------------------------------------------- |
| `length` | int  | `4`     | 3 to 8      | Buttons in the sequence                                          |
| `speed`  | int  | `700`   | 300 to 1400 | Milliseconds each button flashes during playback                 |
| `time`   | int  | `20`    | 0 to 600    | Seconds before failing, starting after playback (`0` = no limit) |

### Wires

Coloured wires on both sides, in a different order. Click a wire on the left, then its match on the right.

**Controls:** mouse

```lua
exports['sbminigames']:Wires({ pairs = 4, time = 30 }, cb)
```

Positional: `Wires(pairs, time, callback)`

| Option  | Type | Default | Range    | What it does                            |
| ------- | ---- | ------- | -------- | --------------------------------------- |
| `pairs` | int  | `3`     | 2 to 5   | Wire pairs to connect                   |
| `time`  | int  | `20`    | 0 to 600 | Seconds before failing (`0` = no limit) |

### Mash

A key is shown. Press it as fast as you can to fill the meter. Holding the key doesn't count. Every press has to be new.

**Controls:** the key shown

```lua
exports['sbminigames']:Mash({ key = 'E', presses = 30, time = 6 }, cb)
```

Positional: `Mash(key, presses, time, callback)`

| Option    | Type | Default  | Range                 | What it does                |
| --------- | ---- | -------- | --------------------- | --------------------------- |
| `key`     | key  | `random` | a letter, or `random` | Key to mash                 |
| `presses` | int  | `20`     | 10 to 60              | Presses needed              |
| `time`    | int  | `5`      | 2 to 15               | Seconds to reach the target |

### Sequence

A number is shown briefly, then hidden. Type it back from memory.

**Controls:** digits, `Backspace`

```lua
exports['sbminigames']:Sequence({ length = 5, showTime = 1500, time = 20 }, cb)
```

Positional: `Sequence(length, showTime, time, callback)`

| Option     | Type | Default | Range       | What it does                                                             |
| ---------- | ---- | ------- | ----------- | ------------------------------------------------------------------------ |
| `length`   | int  | `4`     | 3 to 7      | Digits in the number                                                     |
| `showTime` | int  | `2000`  | 500 to 3000 | Milliseconds the number stays visible                                    |
| `time`     | int  | `15`    | 0 to 600    | Seconds before failing, starting after the number hides (`0` = no limit) |
