- party/games.py: Spionen i menuen (4-10 spillere, 10-15 min, runder 3/4/5,
regler til/fra), så intro og skift af spil i rummet virker.
- party/spion.py: SpionRoom med telefonens handlinger (start, submit_clue,
vote, spy_guess, react, play_again), speakerens replikker pr. begivenhed
og et "ti sekunder" før stikordenes deadline. Reglernes oplæsning er
BaseRoom's.
- Speakeren (spionen/narrator/lines.json og generic.json) siger aldrig
ordet eller hvem der er spion før resultatet: dommen spørger kun, svaret
kommer med gættet eller resultatet. Replikker med navne eller ordet har
generiske afløsere, så spillet kører med WPP_TTS_LIVE=off. Replikken med
ordet ved resultatet forvarmes ikke (et klip pr. ord); uden live-stemme
siges den generiske ("Spionen og ordet står nu på skærmen").
- spion.js: telefonens rollekort (skjult, til man trykker, og lukker igen
ved hver ny fase), stikord, afstemning med store knapper, spionens gæt og
resultatet; storskærmens tema, stikordene et ad gangen, snakken med
nedtælling, stemmerne og stemplet "SPION!"/"Uskyldig!" i dommens sidste
sekunder, gættet og resultatet. Under dommen viser telefonen kun
"Stemmerne er talt". host.js: et spil kan melde sine egne tidsfaser
(spring over).
Test (test_spion): helt spil over WebSocket med fire telefoner, og skift
fra Tegn og Gæt til Spionen i samme rum; hver besked til hver telefon
læses for ordet og spionlisten. Speakeren: ordet siges aldrig før
resultatet, og alt uden navne eller ordet er forvarmet. Replikkerne er med
i sprogtesten.
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>