feat: add slot game assets and update tutorial style

- Add new image assets for Gold Rush slot game (bandit, dynamite, pickaxe, saloon, sheriff, wagon)
- Add new image assets for Sugar Spin slot game (bear, berry, cane, chocolate, jelly, lollipop, mint, rainbow)
- Add cabinet and card artwork for all slot games (Liberty Belle, Fruit Frenzy,Lucky Sevens,Sugar Spin)
- Update slots-artwork.json with paths for all new and existing slot assets
- Modernize Mastermind tutorial language with casual/colloquial tone
This commit is contained in:
Brian Fertig 2026-06-13 15:00:37 -06:00
parent 980dae5374
commit b59e805614
28 changed files with 55 additions and 48 deletions

Binary file not shown.

After

Width:  |  Height:  |  Size: 52 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 34 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 28 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 58 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 43 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 52 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 186 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 207 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 166 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 248 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 201 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 262 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 190 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 196 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 170 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 196 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 45 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 45 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 21 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 30 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 31 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 33 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 46 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 36 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 42 KiB

Binary file not shown.

View File

@ -39,12 +39,12 @@
{
"id": "liberty-belle-cabinet",
"key": "slots-liberty-belle-cabinet",
"path": null
"path": "/assets/images/slots/slots-liberty-belle-cabinet.png"
},
{
"id": "liberty-belle-card",
"key": "slots-liberty-belle-card",
"path": null
"path": "/assets/images/slots/slots-liberty-belle-card.png"
},
{
"id": "fruit-frenzy-cherry",
@ -84,12 +84,12 @@
{
"id": "fruit-frenzy-cabinet",
"key": "slots-fruit-frenzy-cabinet",
"path": null
"path": "/assets/images/slots/slots-fruit-frenzy-cabinet.png"
},
{
"id": "fruit-frenzy-card",
"key": "slots-fruit-frenzy-card",
"path": null
"path": "/assets/images/slots/slots-fruit-frenzy-card.png"
},
{
"id": "lucky-sevens-blank",
@ -134,12 +134,12 @@
{
"id": "lucky-sevens-cabinet",
"key": "slots-lucky-sevens-cabinet",
"path": null
"path": "/assets/images/slots/slots-lucky-sevens-cabinet.png"
},
{
"id": "lucky-sevens-card",
"key": "slots-lucky-sevens-card",
"path": null
"path": "/assets/images/slots/slots-lucky-sevens-card.png"
},
{
"id": "pharaohs-fortune-ankh",
@ -324,7 +324,7 @@
{
"id": "gold-rush-wagon",
"key": "slots-gold-rush-wagon",
"path": null
"path": "/assets/images/slots/gold-rush/wagon.png"
},
{
"id": "gold-rush-queen",
@ -334,7 +334,7 @@
{
"id": "gold-rush-pickaxe",
"key": "slots-gold-rush-pickaxe",
"path": null
"path": "/assets/images/slots/gold-rush/pickaxe.png"
},
{
"id": "gold-rush-ace",
@ -349,87 +349,87 @@
{
"id": "gold-rush-sheriff",
"key": "slots-gold-rush-sheriff",
"path": null
"path": "/assets/images/slots/gold-rush/sheriff.png"
},
{
"id": "gold-rush-saloon",
"key": "slots-gold-rush-saloon",
"path": null
"path": "/assets/images/slots/gold-rush/saloon.png"
},
{
"id": "gold-rush-dynamite",
"key": "slots-gold-rush-dynamite",
"path": null
"path": "/assets/images/slots/gold-rush/dynamite.png"
},
{
"id": "gold-rush-bandit",
"key": "slots-gold-rush-bandit",
"path": null
"path": "/assets/images/slots/gold-rush/bandit.png"
},
{
"id": "gold-rush-cabinet",
"key": "slots-gold-rush-cabinet",
"path": null
"path": "/assets/images/slots/slots-gold-rush-cabinet.png"
},
{
"id": "gold-rush-card",
"key": "slots-gold-rush-card",
"path": null
"path": "/assets/images/slots/slots-gold-rush-card.png"
},
{
"id": "sugar-spin-jelly",
"key": "slots-sugar-spin-jelly",
"path": null
"path": "/assets/images/slots/sugar-spin/jelly.png"
},
{
"id": "sugar-spin-gummy",
"key": "slots-sugar-spin-gummy",
"path": null
"path": "/assets/images/slots/sugar-spin/bear.png"
},
{
"id": "sugar-spin-candy-cane",
"key": "slots-sugar-spin-candy-cane",
"path": null
"path": "/assets/images/slots/sugar-spin/cane.png"
},
{
"id": "sugar-spin-mint",
"key": "slots-sugar-spin-mint",
"path": null
"path": "/assets/images/slots/sugar-spin/mint.png"
},
{
"id": "sugar-spin-berry",
"key": "slots-sugar-spin-berry",
"path": null
"path": "/assets/images/slots/sugar-spin/berry.png"
},
{
"id": "sugar-spin-sugar",
"key": "slots-sugar-spin-sugar",
"path": null
"path": "/assets/images/slots/sugar-spin/sugar.png"
},
{
"id": "sugar-spin-lollipop",
"key": "slots-sugar-spin-lollipop",
"path": null
"path": "/assets/images/slots/sugar-spin/lollipop.png"
},
{
"id": "sugar-spin-chocolate",
"key": "slots-sugar-spin-chocolate",
"path": null
"path": "/assets/images/slots/sugar-spin/chocolate.png"
},
{
"id": "sugar-spin-rainbow",
"key": "slots-sugar-spin-rainbow",
"path": null
"path": "/assets/images/slots/sugar-spin/rainbow.png"
},
{
"id": "sugar-spin-cabinet",
"key": "slots-sugar-spin-cabinet",
"path": null
"path": "/assets/images/slots/slots-sugar-spin-cabinet.png"
},
{
"id": "sugar-spin-card",
"key": "slots-sugar-spin-card",
"path": null
"path": "/assets/images/slots/slots-sugar-spin-card.png"
}
]
}

View File

@ -1,42 +1,49 @@
## Mastermind — Decryption Duel
Two hackers, two secret codes, one race. You and the rival AI each lock in a
**secret code**. On every round you try to crack the rival's code while the rival
tries to crack yours. **First to fully crack the other's code wins.**
Yoooo bro, listen up. Two hackers, two secret codes, one absolutely *unhinged* race to crack
each other's encryption. You and this rival AI both lock in a **secret code**. Each round
you're out here trying to break their code while they're coming for yours. **First one to
fully crack the other's code? That's the W, no cap.**
### The code
A code is a row of colored pegs — by default **4 pegs drawn from 6 neon colors**,
and **colors may repeat**. You compose your secret at the start by clicking color
chips into your slots, then press **LOCK IN**.
Bro, a code is literally just a row of colored pegs — default is **4 pegs pulled from 6 neon
colors** (so cyberpunk, so valid), and **colors can totally repeat**. Compose your secret at
the start by clicking color chips into your slots, then smash that **LOCK IN** button. Don't
sleep on the repeats, they go *hard* for throwing off the AI.
### Guessing
On your turn, click chips to build a guess at the rival's code and press
**SUBMIT**. You get feedback pegs back:
On your turn, click chips to vibe-check the rival's code and hit **SUBMIT**. The system
sends back feedback pegs and lowkey they slap:
| Feedback peg | Meaning |
| --- | --- |
| **Green (exact)** | Right color **and** right position |
| **Yellow (partial)** | Right color, **wrong** position |
| **Dim** | That color isn't (further) in the code |
| **Green (exact)** | Right color **and** right position — bussin fr fr |
| **Yellow (partial)** | Right color, **wrong** position — close but no cap |
| **Dim** | That color ain't it, bestie |
Feedback never tells you *which* peg is right — only *how many*. Use the pattern
across rounds to narrow it down.
The feedback never tells you *which* peg is right — only *how many*. Stack your pattern
reads across rounds and big-brain your way to the answer. It's literally a whole data
analysis arc, bro.
### Winning
- Get **all green** (every peg exact) to crack the code and win immediately.
- If both sides use up all **10 rounds** without a full crack, whoever got the
most exact pegs in a single round wins; a true tie is a stalemate.
- Get **all green** (every peg exact) to crack the code and secure the bag immediately.
- If both sides burn through all **10 rounds** without a full crack, whoever locked in
the most exact pegs in a single round takes the dub. True tie? Straight up stalemate,
and honestly? Respect.
### The rival's skill (15)
Set in the lobby before the match. Skill controls how cleverly the rival uses its
feedback:
Set this in the lobby before the match drops. Skill controls how hard this AI goes with
its feedback reads:
- **1** — sloppy; fires mostly random guesses and wastes rounds.
- **23** — keeps its guesses *consistent* with the clues most of the time.
- **4** — always plays a logically valid guess.
- **5** — runs Knuth's optimal strategy and will usually crack a 4×6 code in **five
rounds or fewer**. Lock in a tricky code with repeats!
- **1** — total bot behavior; mostly yolo guesses, wastes rounds, couldn't hack its way
out of a wet paper bag.
- **23** — keeps its guesses *consistent* with the clues most of the time. Mid threat,
tbh.
- **4** — always plays a logically valid guess. This one's actually built different.
- **5** — runs Knuth's optimal strategy and will crack a 4×6 code in **five rounds or
fewer** basically every time. This AI is from the future, bro. Lock in a wild code
with repeats or you're cooked. Not gonna lie.