Add museum map reveal, artifact path puzzle, and homelab media tooling.

Puzzle 1 crossfades to the stitched map with a link to /museum-path; puzzle 2 is a touch-friendly drag-and-order challenge with PDF extract scripts for map and artifact assets.
This commit is contained in:
2026-06-11 09:57:23 -04:00
parent c810efd8e5
commit 7c68aa3bd3
20 changed files with 1179 additions and 29 deletions
+18 -3
View File
@@ -1,6 +1,11 @@
# Agent context — Egyptian Escape Room Digital Lock
Homeschool Egyptian-themed escape room: a browser-based digital lock. Players enter numeric answers from color-coded puzzles; correct code triggers celebration and an unlock video.
Homeschool Egyptian-themed escape room: two browser puzzles on separate routes.
| Route | Puzzle |
|-------|--------|
| `/` | Artifact room door — 8 color-coded numeric inputs |
| `/museum-path` | Museum path — drag 8 of 16 artifacts into order |
## Puzzle mapping
@@ -21,7 +26,11 @@ Answers are in client-side `src/lockConfig.ts` — acceptable for a kids' escape
## Success flow
Wrong code → UNLOCK button jiggles + "Incorrect Code!" banner. Correct code → lock animation + confetti (~2s) → fullscreen autoplay of configured MP4 (no reset).
**Puzzle 1:** Wrong code → OPEN DOOR jiggles + error banner. Correct code → confetti (~2s) → fullscreen unlock video → map crossfades in (9s before end) with **HELP TED ESCAPE**`/museum-path`.
**Puzzle 2:** Drag artifacts from bank into 8 ordered slots; CHECK PATH validates against `src/puzzle2Config.ts`. Correct → confetti + success message. Touch-friendly via `@dnd-kit/core`.
Map image is generated from PDF pages 910 (left/right halves) via `scripts/extract-artifact-room-map.py` (requires `pip install pymupdf`; Pillow for trimming).
## Media assets
@@ -34,10 +43,12 @@ Copied into each environment via setup scripts. Runtime config: `/media/config.j
| File | Role |
|------|------|
| `unlock.mp4` | Success video (`Ted Escape Room 1-5.mp4`) |
| `artifact-room-map.jpg` | Stitched puzzle 5 map from `EgyptEscapeRoomPrintables.pdf` pages 910 |
| `incorrect.mp3` | Wrong-code sound on UNLOCK |
| `unlock-confirm.mp3` | Success chime with confetti |
| `celebration-pop.mp3` | Balloon pop at confetti start |
| `celebration-horn.mp3` | Party horn — plays with pop; first 2s only |
| `artifacts/` | 16 PNGs + `manifest.json` for museum-path puzzle |
| Environment | Host path |
|-------------|-----------|
@@ -82,6 +93,10 @@ Deploy order: `setup-prod-media.sh` on Unraid → build/push image → create/up
## Repo layout
- `src/lockConfig.ts` — puzzle colors and answers
- `src/DigitalLock.tsx`main UI
- `src/DigitalLock.tsx`puzzle 1 UI
- `src/MuseumPathPuzzle.tsx` — puzzle 2 drag-and-order UI
- `src/puzzle2Config.ts` — correct artifact slug order
- `public/media/` — dev media (gitignored copies)
- `scripts/extract-artifact-room-map.py` — PDF pages 910 → stitched JPEG
- `scripts/extract-artifact-images.py` — 16 embedded map artifacts → `public/media/artifacts/` + `manifest.json`
- `scripts/setup-dev-media.sh`, `scripts/setup-prod-media.sh`, `scripts/build-push.sh`