Scene art added:
91-ART-01 Cover: aerial Neo-Ashford, arcology towers / Undertow neon
91-ART-02 The Slab: dystopian market, child and the note
91-ART-03 Reth's squat: wall of notes, corkboard, the photograph
91-ART-04 The Junction: filament hub, six figures tiny below
91-ART-05 Three bodies: Feed Corridor, ribcages opened like flowers
91-ART-06 Primary node: through gallery glass, entity spreading
Combined with existing 5 NPC portraits — scenario now has complete art coverage
- scenarios/art/event-92/ — all 11 images, named and indexed in README
- apps/event-92-last-train/assets/ — same set, ready for app embedding
- scenarios/midjourney-prompts-master.md — master prompts for all 8 scenarios
Art covers:
01 Cover (tunnel run / Conductor)
02 Van Cortlandt murder
03 Platform sprint
04 Reflection vision
05 Lester Creed portrait
06 The Black Conductor (entity)
07 Third Rail Choir sigil
08 Sister Marion Vale portrait
09 Stillwell Avenue terminal
10 Brass token (prop/handout)
11 Subway car interior (bonus)
Single-file HTML GM tool for the Thursday 2pm ChaosiumCon UK 2026 session.
Covers timer, act pacing, NPC cards, clue tracker, handouts, player stat tracker (HP/POW/PP), reference tables, and pinboard.
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
Full scenario document with 3-act structure, 6 pre-gens, 7 NPCs with stat blocks,
clue trail, handouts, moral choice framework, and GM notes. Updated library README
and con prep doc with event details.
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
- Complete scenario markdown with full stat blocks for all 6 pre-gen investigators
- Full GM companion HTML app (standalone, offline-ready)
- Manifestation meter (5-pip tracker) replacing entity presence
- Tone management guide (comedy-to-horror transition per act)
- Henderson's arc preserved as central tragic beat
- Midnight deadline clock mechanic
- All handouts embedded (H1-H4) with period-appropriate styling
- Clue tracker, SAN tracker, full NPC roster with secrets
- 11 Midjourney prompts in established style
- Emergency red / signal amber palette (vs Night Crawler's cyberpunk cyan)
- NHS Emergency Alert full-screen simulation (📱 ALERT button)
- Reportage ink-sketch SVG portraits for all 6 major NPCs
- Live session timer with hard deadline alerts at 1:15, 2:15, 2:30, 3:05
- 12-clue tracker with essential/optional tagging and fallback notes
- 10 handouts with act-tagged cards and ⛶ Show to Players mode
- 6 PC stat trackers: HP/SAN/MP adjusters, Bitten/Injured/Insane/Dead flags
- Acts screen: tabbed Intro/I/II/III/Epilogue with all beats, social media feeds, fast-tracks
- SAN quick-reference modal from any screen
- GM-only truth panel (Meridian Biosciences/COBR backstory)
- LocalStorage persistence for all session state
- Touch-optimised, 48px targets, responsive sidebar/bottom-nav
- Complete three-act structure following master template
- Overriding story: Meridian Biosciences / MX-9 / COBR containment decision
- Plot summary (GM's truth), player experience arc
- Introduction with individual character read-alouds and alert delivery
- Act One: Something Is Wrong — bus crash, first infected, market breaks
- Act Two: The Long Walk South — Blue Anchor, pharmacy, reanimation, cordon
- Act Three: Bridge or River — Tower Bridge negotiation or RIB at Bankside Pier
- Epilogue with four outcome states and closing read-aloud
- 5 major NPCs with full stat blocks (Fatima, Callum, Sharif, Marcus, Helen, Pete)
- 6 pre-generated characters with stats, hooks, and motivation
- 12-clue trail with essential/optional split and fallbacks
- 11 handouts listed with format specifications
- Zombie quick reference table
- 9 artwork assets with reportage ink sketch style and generation prompts
- The Tangent: Day Two / Meridian investigation follow-up
- Full GM notes on lethality, pacing, Helen, Marcus, and the cordon moment
Issues fixed:
1. buildNPCs (and 23 other functions) were missing — lost when the ACT_DATA
block replacement accidentally deleted the switchAct→renderRefContent section
2. Duplicate const REF_DATA declaration (old literal + new JSON.parse version)
3. Stray </body></html> embedded inside the script content from prior botched edit
4. Final unescaped apostrophe: 'don\'t' in renderActContent
All 40 functions confirmed present. Node --check: ZERO SYNTAX ERRORS.
Root cause: ACT_DATA and REF_DATA objects were built using Python
string escaping that left unescaped apostrophes in single-quoted JS
strings (Reth's, entity's, don't, it's, Jed's, Sable's etc.) and
at least one unclosed template literal causing downstream parse failures.
Fix: ACT_DATA and REF_DATA are now stored as proper JSON in
<script type='application/json'> tags and loaded via JSON.parse().
All text content uses HTML entities for apostrophes and special chars.
Zero escaping ambiguity possible.
Node.js --check confirms: NO SYNTAX ERRORS.
Backtick count now 28 (even = all template literals properly closed).
Complete rebuild addressing all feedback:
LAYOUT
- Two-column layout for 13" laptop/tablet (200px sidebar + content)
- Sidebar collapses to bottom nav on narrow screens (<800px)
- CSS grid with proper areas, no overflow hidden tricks
- All touch targets min 48px, adj buttons 42×42px
READABILITY
- --text: #eeeefc, --text-sub: #b8b8d8, --text-muted: #7878a0 (captions only)
- Base 15px, card body p 15px, headings 16-18px
- No dark text on dark background anywhere
- Goal boxes, callouts, pacing notes all use --text
- Stat blocks use --text-sub (not dim)
- Generous line-height 1.55-1.75 throughout
FULLSCREEN OVERLAYS (portraits + handouts)
- ALWAYS has visible '← Back' button at top-left of screen
- Back button is cyan bordered, large (min 48px), obvious
- Portrait overlay: image fills available height, centered
- Handout overlay: scrollable text, readable 17px serif
- Both have 'Mark Shown to Players' action button
- Shown state persists and shows on card
STATE TRACKING (new)
- Locations: tap to mark visited (green dot + strikethrough)
- Clues: tap cycles pending → found → missed with color
- NPCs: 'Mark Introduced' button, shows ✓ badge
- Handouts: 'Mark Shown' on card and in overlay
- Portraits: 'Mark Shown' button in overlay
- Clue progress badge on nav: X/7 essential found
- All state persists in localStorage
PINNING SYSTEM (new)
- Pin any NPC to home screen quick-access bar
- Pinned items appear as large amber buttons at top of Home
- One-tap access to most-needed items mid-session
- Unpin with ✕ button
SESSION NOTES
- Textarea per act for GM notes during session
- Persists in localStorage
ACTS
- Location items are tappable with 'Details' button
- Details panel expands inline below location
- Visited locations get checkmark + strikethrough
- Notes field at bottom of each act
Five Midjourney-generated NPC portraits in dystopian noir illustration style
replacing previous placeholder SVG artwork.
Characters and artwork:
- Sable Morn: dramatic black/white ink wash portrait, high collar coat,
looking past viewer, extreme chiaroscuro from above
- Damos Reth: gaunt figure in data vest, glowing eyes, underground tunnel,
haunted expression
- Jed Osler: behind the bar, amber light, mechanical prosthetic arm on
counter, watchful presence
- Dr Yava Chen: reading glasses, hands clasped, laboratory setting,
analytical intensity with unsettling quality
- Scratch: young woman, glowing amber cybernetic eye, rainy dystopian
cityscape, street fighter stance
Assets:
- Embedded as base64 JPEG data URIs in app (280x373, 14-25 KB each)
- Full-resolution versions in scenarios/art/event-91/npc-*.jpg (600px wide)
- All artwork generated with Midjourney per art direction in scenario doc
App now 225 KB total, fully self-contained.
Single-file GM app per app-template spec. All data embedded, no internet required.
Screens:
- Home: session dashboard, timer, checkpoint table, player roster
- Acts: tabbed panels (Intro / Act I / Act II / Act III / Epilogue) with all
locations, key mechanics, pacing notes, moral choice breakdown
- NPCs: all 7 NPCs with physical description, motivation, what they know,
stat blocks, disposition colour coding (friendly/neutral/hostile/compromised)
- Clues: tap-to-cycle tracker (none/found/missed) for all 7 essential + 6
optional clues, with fallback triggers
- Handouts: all 5 handouts with fullscreen player-facing display mode;
styled per type (normal / handwritten / terminal)
- Players: HP/SAN/PP tracker with +/- controls and status tags for all 6 PCs
- Reference: SAN table, skill rolls, BRP quick-reference, entity mechanics
Features:
- Live session timer with hard deadline alerts at 2:15 and 3:05
- Progress bar with act labels
- SAN quick-reference modal from any screen
- LocalStorage persistence for PC stats and clue tracking
- Dark noir theme: black bg, cyan/amber neon accents
- Touch-optimised, 48px tap targets, one-hand operable
- Complete three-act structure applied per SCENARIO-TEMPLATE
- GM Pre-Session Checklist added (print list, table setup, pre-read notes)
- World Background expanded with Blade Runner-style texture guide
- Running Neo-Ashford section added: credits context, sensory language by
location, what technology looks like, how people talk, what things cost
- All six pre-gen characters with hooks, stats, and equipment
- All five handout texts written (H00-A, H00-B, H01-A, H01-B, H02-A)
- All locations fleshed out with atmosphere, mechanics, and clue flags
- Full NPC profiles: Sable Morn, Reth, Jed, Dr Chen, Scratch, Kov, Sera, Entity
- Entity influence mechanic and SAN tables
- Master clue trail with essential/optional/fallback structure
- Three-option Moral Choice with cost and consequence detail
- Full epilogue for all four outcome branches
- GM Quick Reference Card: timing, SAN table, skill rolls, NPC disposition
- GM Notes: tone guidance, Dr Chen technique, pacing advice, six-player management
- New top-level scenario-library/ directory, independent of convention events
- System folders: call-of-cthulhu, brp, ringworld, stormbringer, other-games
- Each with its own README and scenario index table
- SCENARIO-LIBRARY-TEMPLATE.md for filing new scenarios
- Updated master README to reflect dual-purpose repo structure