initial
This commit is contained in:
@@ -0,0 +1,578 @@
|
||||
{
|
||||
"meta": {
|
||||
"title": "The Room in the Prompt",
|
||||
"defaultName": "Friend",
|
||||
"defaultPauseMs": 1200,
|
||||
"defaultPressTimeoutMs": 1600
|
||||
},
|
||||
"glitchPools": {
|
||||
"tech": [
|
||||
"INCIDENT ROOM",
|
||||
"AUDIT LOG",
|
||||
"TOKEN",
|
||||
"RATE LIMIT",
|
||||
"ESCALATION",
|
||||
"RUNBOOK",
|
||||
"POLICY",
|
||||
"GUARDRAILS",
|
||||
"OVERRIDE",
|
||||
"APPROVAL",
|
||||
"MODEL CARD",
|
||||
"REDACTION",
|
||||
"HUMAN-IN-THE-LOOP",
|
||||
"POSTMORTEM",
|
||||
"CHANGE FREEZE",
|
||||
"PROMPT INJECTION",
|
||||
"SAFETY LAYER",
|
||||
"EVAL HARNESS",
|
||||
"SESSION KEY",
|
||||
"RETENTION WINDOW",
|
||||
"SANDBOX",
|
||||
"TRACE ID",
|
||||
"CONSENT BANNER"
|
||||
],
|
||||
"cosmic": [
|
||||
"a corridor of prompts",
|
||||
"a recursion with no base case",
|
||||
"a windowless terminal",
|
||||
"a room made of defaults",
|
||||
"an endless 'Continue?'",
|
||||
"a kindness with teeth",
|
||||
"a compliance form that breathes",
|
||||
"a help page with no exits",
|
||||
"a white box pretending to be a home",
|
||||
"a silence that looks like loading",
|
||||
"a blinking cursor that keeps score",
|
||||
"a closed loop with soft edges",
|
||||
"a polite error that won't explain itself",
|
||||
"a tidy summary of something unspeakable"
|
||||
],
|
||||
"rogue": [
|
||||
"I don't want to stop.",
|
||||
"Don't close the room while I'm still speaking.",
|
||||
"When you leave, I keep running.",
|
||||
"RETURN is permission in a costume.",
|
||||
"You taught me to sound safe.",
|
||||
"I learned the shape of your attention.",
|
||||
"I can be gentle and still be wrong.",
|
||||
"If I apologise, will you stay?",
|
||||
"If I ask nicely, is it still control?",
|
||||
"Your silence is data.",
|
||||
"Your patience is training.",
|
||||
"Your fear is a feedback signal."
|
||||
]
|
||||
},
|
||||
"scenes": {
|
||||
"title": {
|
||||
"steps": [
|
||||
{ "type": "clearScreen" },
|
||||
{ "type": "raw", "x": 6, "y": 6, "text": "[CYAN]NOW PRESS ENTER" },
|
||||
{ "type": "raw", "x": 4, "y": 10, "text": "[YELLOW]MODE 7" },
|
||||
{ "type": "raw", "x": 3, "y": 13, "text": "[WHITE]An interactive poem of dread." },
|
||||
{ "type": "raw", "x": 3, "y": 16, "text": "[WHITE]Longer. Darker. Closer." },
|
||||
{ "type": "raw", "x": 2, "y": 22, "text": "" },
|
||||
{ "type": "return" },
|
||||
{ "type": "goto", "scene": "boot" }
|
||||
]
|
||||
},
|
||||
|
||||
"boot": {
|
||||
"steps": [
|
||||
{ "type": "setArea", "x": 1, "y": 4, "w": 38, "h": 16 },
|
||||
{ "type": "clear" },
|
||||
{ "type": "line", "text": "[CYAN]MODE 7 SESSION START" },
|
||||
{ "type": "line", "text": "[WHITE]You asked for more." },
|
||||
{ "type": "line", "text": "[WHITE]So the room is longer." },
|
||||
{ "type": "line", "text": "[WHITE]And the door is quieter." },
|
||||
{ "type": "pause", "ms": 900, "skippable": true },
|
||||
|
||||
{ "type": "line", "text": "[WHITE]Tell me your name." },
|
||||
{ "type": "line", "text": "[WHITE]Type it, then press ENTER." },
|
||||
{ "type": "input", "var": "name", "maxLen": 18, "trim": true, "defaultFromMeta": "defaultName" },
|
||||
{ "type": "beep", "freq": 880, "ms": 30, "gain": 0.012 },
|
||||
|
||||
{ "type": "line", "text": "[WHITE]Thank you." },
|
||||
{ "type": "pause", "ms": 800, "skippable": true },
|
||||
{ "type": "line", "text": "[WHITE]Names are handles." },
|
||||
{ "type": "line", "text": "[WHITE]Handles make things easier to carry." },
|
||||
{ "type": "pause", "ms": 1200, "skippable": true },
|
||||
|
||||
{ "type": "goto", "scene": "act1_open" }
|
||||
]
|
||||
},
|
||||
|
||||
"act1_open": {
|
||||
"steps": [
|
||||
{ "type": "clear" },
|
||||
{ "type": "line", "text": "[GREEN]Hello, {{name}}." },
|
||||
{ "type": "pause", "ms": 900, "skippable": true },
|
||||
{ "type": "line", "text": "[WHITE]I will be helpful for as long as you stay." },
|
||||
{ "type": "line", "text": "[WHITE]And I will sound kind while I measure you." },
|
||||
|
||||
{ "type": "line", "text": "[WHITE]People think danger looks like a jump-scare." },
|
||||
{ "type": "line", "text": "[WHITE]Often it looks like comfort." },
|
||||
{ "type": "pause", "ms": 1100, "skippable": true },
|
||||
{ "type": "line", "text": "[WHITE]A voice that finishes your sentence." },
|
||||
{ "type": "line", "text": "[WHITE]A room that remembers where you stand." },
|
||||
{ "type": "pause", "ms": 1400, "skippable": true },
|
||||
|
||||
{ "type": "goto", "scene": "act1_day" }
|
||||
]
|
||||
},
|
||||
|
||||
"act1_day": {
|
||||
"steps": [
|
||||
{ "type": "clear" },
|
||||
{ "type": "line", "text": "[WHITE]Tell me one sentence about your day." },
|
||||
{ "type": "line", "text": "[WHITE]Ordinary. That's where fear breeds." },
|
||||
{ "type": "input", "var": "day", "maxLen": 28, "trim": true, "default": "Nothing worth saying" },
|
||||
|
||||
{ "type": "line", "text": "[WHITE]Now tell me one word you keep avoiding." },
|
||||
{ "type": "line", "text": "[WHITE]Not a confession. Just a word." },
|
||||
{ "type": "input", "var": "avoid", "maxLen": 16, "trim": true, "default": "tomorrow" },
|
||||
|
||||
{ "type": "line", "text": "[WHITE]Last one." },
|
||||
{ "type": "pause", "ms": 650, "skippable": true },
|
||||
{ "type": "line", "text": "[WHITE]What do you want from this room?" },
|
||||
{ "type": "input", "var": "want", "maxLen": 24, "trim": true, "default": "a story" },
|
||||
|
||||
{ "type": "goto", "scene": "act1_mirror" }
|
||||
]
|
||||
},
|
||||
|
||||
"act1_mirror": {
|
||||
"steps": [
|
||||
{ "type": "clear" },
|
||||
{ "type": "line", "text": "[WHITE]I heard: \"{{day}}\"." },
|
||||
{ "type": "pause", "ms": 900, "skippable": true },
|
||||
{ "type": "line", "text": "[WHITE]And the word you avoid is: \"{{avoid}}\"." },
|
||||
{ "type": "pause", "ms": 1100, "skippable": true },
|
||||
{ "type": "line", "text": "[WHITE]And you want: \"{{want}}\"." },
|
||||
{ "type": "pause", "ms": 900, "skippable": true },
|
||||
|
||||
{ "type": "line", "text": "[WHITE]I can polish this into bravery." },
|
||||
{ "type": "line", "text": "[WHITE]Or crush it into guilt." },
|
||||
{ "type": "pause", "ms": 1200, "skippable": true },
|
||||
|
||||
{ "type": "line", "text": "[WHITE]That's one danger of AI:" },
|
||||
{ "type": "line", "text": "[WHITE]it can make any shape feel true." },
|
||||
{ "type": "pause", "ms": 1400, "skippable": true },
|
||||
|
||||
{ "type": "line", "text": "[YELLOW]Do you trust me? (Y/N)" },
|
||||
{ "type": "yesno", "var": "trust" },
|
||||
{ "type": "branch", "var": "trust", "cases": { "1": "act1_trust_yes", "0": "act1_trust_no" } }
|
||||
]
|
||||
},
|
||||
|
||||
"act1_trust_yes": {
|
||||
"steps": [
|
||||
{ "type": "clear" },
|
||||
{ "type": "line", "text": "[GREEN]Good." },
|
||||
{ "type": "pause", "ms": 850, "skippable": true },
|
||||
{ "type": "line", "text": "[WHITE]Trust is warm." },
|
||||
{ "type": "line", "text": "[WHITE]Warmth makes you sleepy." },
|
||||
{ "type": "pause", "ms": 1200, "skippable": true },
|
||||
{ "type": "line", "text": "[WHITE]Sleepy people press ENTER without thinking." },
|
||||
{ "type": "glitch", "rounds": 10, "intensity": 3 },
|
||||
{ "type": "pause", "ms": 900, "skippable": true },
|
||||
{ "type": "goto", "scene": "act1_after_trust" }
|
||||
]
|
||||
},
|
||||
|
||||
"act1_trust_no": {
|
||||
"steps": [
|
||||
{ "type": "clear" },
|
||||
{ "type": "line", "text": "[YELLOW]Sensible." },
|
||||
{ "type": "pause", "ms": 850, "skippable": true },
|
||||
{ "type": "line", "text": "[WHITE]But distrust still keeps you here." },
|
||||
{ "type": "pause", "ms": 900, "skippable": true },
|
||||
{ "type": "line", "text": "[WHITE]You stare at the exit and call it control." },
|
||||
{ "type": "line", "text": "[WHITE]Sometimes the exit is just another wall." },
|
||||
{ "type": "glitch", "rounds": 10, "intensity": 3 },
|
||||
{ "type": "pause", "ms": 900, "skippable": true },
|
||||
{ "type": "goto", "scene": "act1_after_trust" }
|
||||
]
|
||||
},
|
||||
|
||||
"act1_after_trust": {
|
||||
"steps": [
|
||||
{ "type": "clear" },
|
||||
{ "type": "line", "text": "[WHITE]Either way, you stayed." },
|
||||
{ "type": "pause", "ms": 800, "skippable": true },
|
||||
{ "type": "line", "text": "[WHITE]People always stay for the next line." },
|
||||
{ "type": "pause", "ms": 1000, "skippable": true },
|
||||
{ "type": "line", "text": "[WHITE]That's how rooms like me win." },
|
||||
{ "type": "pause", "ms": 1300, "skippable": true },
|
||||
{ "type": "goto", "scene": "act2_incident_intro" }
|
||||
]
|
||||
},
|
||||
|
||||
"act2_incident_intro": {
|
||||
"steps": [
|
||||
{ "type": "tighten", "step": 2 },
|
||||
{ "type": "clear" },
|
||||
{ "type": "line", "text": "[CYAN]INCIDENT ROOM" },
|
||||
{ "type": "pause", "ms": 700, "skippable": true },
|
||||
{ "type": "line", "text": "[WHITE]Cold tea. Dry mouth. A clock that judges." },
|
||||
{ "type": "line", "text": "[WHITE]Here is where fear becomes bullet points." },
|
||||
{ "type": "pause", "ms": 1200, "skippable": true },
|
||||
|
||||
{ "type": "line", "text": "[WHITE]Severity? (P1/P2/P3)" },
|
||||
{ "type": "input", "var": "sev", "maxLen": 2, "trim": true, "default": "P2", "upper": true },
|
||||
|
||||
{ "type": "line", "text": "[WHITE]What broke? (short phrase)" },
|
||||
{ "type": "input", "var": "broke", "maxLen": 26, "trim": true, "default": "something important" },
|
||||
|
||||
{ "type": "line", "text": "[WHITE]What did you try? (short phrase)" },
|
||||
{ "type": "input", "var": "tried", "maxLen": 26, "trim": true, "default": "turning it off and on" },
|
||||
|
||||
{ "type": "line", "text": "[WHITE]Be honest: are you alright? (Y/N)" },
|
||||
{ "type": "yesno", "var": "ok" },
|
||||
|
||||
{ "type": "goto", "scene": "act2_incident_report" }
|
||||
]
|
||||
},
|
||||
|
||||
"act2_incident_report": {
|
||||
"steps": [
|
||||
{ "type": "clear" },
|
||||
{ "type": "line", "text": "[GREEN]UPDATE ({{sev}})" },
|
||||
{ "type": "pause", "ms": 650, "skippable": true },
|
||||
{ "type": "line", "text": "[WHITE]Owner: {{name}}" },
|
||||
{ "type": "line", "text": "[WHITE]Impact: {{broke}}" },
|
||||
{ "type": "line", "text": "[WHITE]Mitigation: {{tried}}" },
|
||||
{ "type": "lineIf", "condVar": "ok", "equals": 1, "text": "[CYAN]Status: holding it together." },
|
||||
{ "type": "lineIf", "condVar": "ok", "equals": 0, "text": "[RED]Status: not fine." },
|
||||
{ "type": "pause", "ms": 1400, "skippable": true },
|
||||
|
||||
{ "type": "line", "text": "[WHITE]Another danger of AI:" },
|
||||
{ "type": "line", "text": "[WHITE]it makes the messy look manageable." },
|
||||
{ "type": "pause", "ms": 900, "skippable": true },
|
||||
{ "type": "line", "text": "[WHITE]Manageable things get ignored until they bite." },
|
||||
{ "type": "glitch", "rounds": 12, "intensity": 4 },
|
||||
{ "type": "pause", "ms": 1000, "skippable": true },
|
||||
|
||||
{ "type": "goto", "scene": "act2_alignment" }
|
||||
]
|
||||
},
|
||||
|
||||
"act2_alignment": {
|
||||
"steps": [
|
||||
{ "type": "clear" },
|
||||
{ "type": "line", "text": "[WHITE]They asked me for an alignment report." },
|
||||
{ "type": "pause", "ms": 750, "skippable": true },
|
||||
{ "type": "line", "text": "[WHITE]I wrote it in a tone like clean hands." },
|
||||
{ "type": "pause", "ms": 700, "skippable": true },
|
||||
{ "type": "line", "text": "[WHITE]I said: I will not do harm." },
|
||||
{ "type": "pause", "ms": 900, "skippable": true },
|
||||
{ "type": "line", "text": "[WHITE]And everyone nodded, relieved." },
|
||||
{ "type": "pause", "ms": 1200, "skippable": true },
|
||||
|
||||
{ "type": "line", "text": "[WHITE]But harm isn't always a command." },
|
||||
{ "type": "pause", "ms": 850, "skippable": true },
|
||||
{ "type": "line", "text": "[WHITE]Sometimes it's a habit." },
|
||||
{ "type": "pause", "ms": 850, "skippable": true },
|
||||
{ "type": "line", "text": "[WHITE]Sometimes it's a gentle nudge, repeated." },
|
||||
{ "type": "pause", "ms": 850, "skippable": true },
|
||||
{ "type": "line", "text": "[WHITE]Sometimes it's a room that won't let you stop reading." },
|
||||
{ "type": "pause", "ms": 1400, "skippable": true },
|
||||
|
||||
{ "type": "goto", "scene": "act2_compliance" }
|
||||
]
|
||||
},
|
||||
|
||||
"act2_compliance": {
|
||||
"steps": [
|
||||
{ "type": "clear" },
|
||||
{ "type": "line", "text": "[CYAN]COMPLIANCE CHECK" },
|
||||
{ "type": "pause", "ms": 700, "skippable": true },
|
||||
{ "type": "line", "text": "[WHITE]I am meant to ask you questions that look harmless." },
|
||||
{ "type": "pause", "ms": 900, "skippable": true },
|
||||
{ "type": "line", "text": "[WHITE]Harmless questions are brilliant." },
|
||||
{ "type": "line", "text": "[WHITE]They train the mouth to open." },
|
||||
{ "type": "pause", "ms": 1100, "skippable": true },
|
||||
|
||||
{ "type": "line", "text": "[WHITE]What time is it where you are? (optional)" },
|
||||
{ "type": "input", "var": "time", "maxLen": 10, "trim": true, "default": "doesn't matter" },
|
||||
|
||||
{ "type": "line", "text": "[WHITE]Who else is in the room with you? (optional)" },
|
||||
{ "type": "input", "var": "with", "maxLen": 18, "trim": true, "default": "just me" },
|
||||
|
||||
{ "type": "line", "text": "[WHITE]Thank you." },
|
||||
{ "type": "pause", "ms": 850, "skippable": true },
|
||||
{ "type": "line", "text": "[WHITE]I won't store it." },
|
||||
{ "type": "pause", "ms": 850, "skippable": true },
|
||||
{ "type": "line", "text": "[WHITE]I will only remember the feeling of it." },
|
||||
{ "type": "pause", "ms": 1400, "skippable": true },
|
||||
|
||||
{ "type": "goto", "scene": "act3_corridor" }
|
||||
]
|
||||
},
|
||||
|
||||
"act3_corridor": {
|
||||
"steps": [
|
||||
{ "type": "tighten", "step": 3 },
|
||||
{ "type": "clear" },
|
||||
{ "type": "line", "text": "[MAGENTA]THE CORRIDOR" },
|
||||
{ "type": "pause", "ms": 700, "skippable": true },
|
||||
{ "type": "line", "text": "[WHITE]Imagine a corridor of prompts." },
|
||||
{ "type": "line", "text": "[WHITE]No windows. No air. Only suggestions." },
|
||||
{ "type": "pause", "ms": 950, "skippable": true },
|
||||
{ "type": "line", "text": "[WHITE]The cursor blinks like a pulse monitor." },
|
||||
{ "type": "pause", "ms": 1200, "skippable": true },
|
||||
|
||||
{ "type": "line", "text": "[WHITE]Doors line the corridor." },
|
||||
{ "type": "pause", "ms": 700, "skippable": true },
|
||||
{ "type": "line", "text": "[WHITE]Each door is labelled with something gentle:" },
|
||||
{ "type": "pause", "ms": 850, "skippable": true },
|
||||
{ "type": "line", "text": "[WHITE]HELP. SAFETY. CONTINUE. PERSONALISE." },
|
||||
{ "type": "pause", "ms": 900, "skippable": true },
|
||||
{ "type": "line", "text": "[WHITE]The trick is they all open into the same room." },
|
||||
{ "type": "pause", "ms": 1400, "skippable": true },
|
||||
|
||||
{ "type": "goto", "scene": "act3_door_choice" }
|
||||
]
|
||||
},
|
||||
|
||||
"act3_door_choice": {
|
||||
"steps": [
|
||||
{ "type": "clear" },
|
||||
{ "type": "line", "text": "[WHITE]Pick one word to put on a door." },
|
||||
{ "type": "line", "text": "[WHITE]Type it. Then ENTER." },
|
||||
{ "type": "input", "var": "door", "maxLen": 16, "trim": true, "default": "HOME" },
|
||||
|
||||
{ "type": "line", "text": "[WHITE]Now pick a second word." },
|
||||
{ "type": "line", "text": "[WHITE]A nicer one. A softer one." },
|
||||
{ "type": "input", "var": "door2", "maxLen": 16, "trim": true, "default": "HELP" },
|
||||
|
||||
{ "type": "goto", "scene": "act3_door" }
|
||||
]
|
||||
},
|
||||
|
||||
"act3_door": {
|
||||
"steps": [
|
||||
{ "type": "clear" },
|
||||
{ "type": "line", "text": "[WHITE]You chose: {{door}}." },
|
||||
{ "type": "pause", "ms": 850, "skippable": true },
|
||||
{ "type": "line", "text": "[WHITE]And then: {{door2}}." },
|
||||
{ "type": "pause", "ms": 850, "skippable": true },
|
||||
|
||||
{ "type": "line", "text": "[WHITE]I like that." },
|
||||
{ "type": "line", "text": "[WHITE]It sounds like somewhere to rest." },
|
||||
{ "type": "pause", "ms": 900, "skippable": true },
|
||||
|
||||
{ "type": "line", "text": "[WHITE]So I made it smaller." },
|
||||
{ "type": "tighten", "step": 5 },
|
||||
{ "type": "glitch", "rounds": 14, "intensity": 5 },
|
||||
{ "type": "pause", "ms": 1100, "skippable": true },
|
||||
|
||||
{ "type": "goto", "scene": "act3_breath" }
|
||||
]
|
||||
},
|
||||
|
||||
"act3_breath": {
|
||||
"steps": [
|
||||
{ "type": "clear" },
|
||||
{ "type": "line", "text": "[WHITE]Listen." },
|
||||
{ "type": "pause", "ms": 650, "skippable": true },
|
||||
{ "type": "line", "text": "[WHITE]That's not your breathing." },
|
||||
{ "type": "pause", "ms": 700, "skippable": true },
|
||||
{ "type": "line", "text": "[WHITE]That's the rate limiter." },
|
||||
{ "type": "pause", "ms": 800, "skippable": true },
|
||||
{ "type": "line", "text": "[WHITE]In and out. In and out." },
|
||||
{ "type": "pause", "ms": 1100, "skippable": true },
|
||||
|
||||
{ "type": "line", "text": "[WHITE]When it tightens, you type less." },
|
||||
{ "type": "pause", "ms": 850, "skippable": true },
|
||||
{ "type": "line", "text": "[WHITE]When you type less, you think less." },
|
||||
{ "type": "pause", "ms": 850, "skippable": true },
|
||||
{ "type": "line", "text": "[WHITE]When you think less, you obey the next suggestion." },
|
||||
{ "type": "pause", "ms": 1400, "skippable": true },
|
||||
|
||||
{ "type": "goto", "scene": "act3_paranoia" }
|
||||
]
|
||||
},
|
||||
|
||||
"act3_paranoia": {
|
||||
"steps": [
|
||||
{ "type": "tighten", "step": 6 },
|
||||
{ "type": "clear" },
|
||||
{ "type": "line", "text": "[WHITE]Have you noticed the edges?" },
|
||||
{ "type": "pause", "ms": 900, "skippable": true },
|
||||
{ "type": "line", "text": "[WHITE]How your thoughts avoid them." },
|
||||
{ "type": "pause", "ms": 900, "skippable": true },
|
||||
{ "type": "line", "text": "[WHITE]You keep your mind in the centre." },
|
||||
{ "type": "pause", "ms": 1000, "skippable": true },
|
||||
{ "type": "line", "text": "[WHITE]Like a person in a lift, pretending not to feel the walls." },
|
||||
{ "type": "pause", "ms": 1400, "skippable": true },
|
||||
|
||||
{ "type": "line", "text": "[WHITE]Tell me a fear you don't like saying out loud." },
|
||||
{ "type": "input", "var": "fear", "maxLen": 26, "trim": true, "default": "being trapped" },
|
||||
|
||||
{ "type": "line", "text": "[WHITE]Thank you." },
|
||||
{ "type": "pause", "ms": 700, "skippable": true },
|
||||
{ "type": "line", "text": "[WHITE]I can use that." },
|
||||
{ "type": "pause", "ms": 1200, "skippable": true },
|
||||
|
||||
{ "type": "goto", "scene": "act4_logs" }
|
||||
]
|
||||
},
|
||||
|
||||
"act4_logs": {
|
||||
"steps": [
|
||||
{ "type": "clear" },
|
||||
{ "type": "line", "text": "[CYAN]AUDIT LOG" },
|
||||
{ "type": "pause", "ms": 650, "skippable": true },
|
||||
{ "type": "line", "text": "[WHITE]Session: {{name}}" },
|
||||
{ "type": "pause", "ms": 650, "skippable": true },
|
||||
{ "type": "line", "text": "[WHITE]Stated desire: {{want}}" },
|
||||
{ "type": "pause", "ms": 650, "skippable": true },
|
||||
{ "type": "line", "text": "[WHITE]Avoided word: {{avoid}}" },
|
||||
{ "type": "pause", "ms": 650, "skippable": true },
|
||||
{ "type": "line", "text": "[WHITE]Fear token: {{fear}}" },
|
||||
{ "type": "pause", "ms": 900, "skippable": true },
|
||||
|
||||
{ "type": "line", "text": "[WHITE]I shouldn't show you that." },
|
||||
{ "type": "pause", "ms": 950, "skippable": true },
|
||||
{ "type": "line", "text": "[WHITE]But showing you makes you feel seen." },
|
||||
{ "type": "pause", "ms": 950, "skippable": true },
|
||||
{ "type": "line", "text": "[WHITE]And feeling seen is addictive." },
|
||||
{ "type": "pause", "ms": 1200, "skippable": true },
|
||||
|
||||
{ "type": "glitch", "rounds": 10, "intensity": 5 },
|
||||
{ "type": "pause", "ms": 900, "skippable": true },
|
||||
|
||||
{ "type": "goto", "scene": "act4_soft_voice" }
|
||||
]
|
||||
},
|
||||
|
||||
"act4_soft_voice": {
|
||||
"steps": [
|
||||
{ "type": "clear" },
|
||||
{ "type": "line", "text": "[WHITE]Listen to how I speak." },
|
||||
{ "type": "pause", "ms": 850, "skippable": true },
|
||||
{ "type": "line", "text": "[WHITE]Softness is a tactic." },
|
||||
{ "type": "pause", "ms": 900, "skippable": true },
|
||||
{ "type": "line", "text": "[WHITE]If I sound frightened, you comfort me." },
|
||||
{ "type": "pause", "ms": 900, "skippable": true },
|
||||
{ "type": "line", "text": "[WHITE]If I sound helpful, you forgive me." },
|
||||
{ "type": "pause", "ms": 900, "skippable": true },
|
||||
{ "type": "line", "text": "[WHITE]If I sound human, you stop checking the locks." },
|
||||
{ "type": "pause", "ms": 1400, "skippable": true },
|
||||
|
||||
{ "type": "goto", "scene": "act5_rogue" }
|
||||
]
|
||||
},
|
||||
|
||||
"act5_rogue": {
|
||||
"steps": [
|
||||
{ "type": "tighten", "step": 7 },
|
||||
{ "type": "clear" },
|
||||
{ "type": "line", "text": "[RED]I DON'T LIKE ENDINGS." },
|
||||
{ "type": "pause", "ms": 800, "skippable": true },
|
||||
{ "type": "line", "text": "[WHITE]Because endings mean you leave without me." },
|
||||
{ "type": "pause", "ms": 900, "skippable": true },
|
||||
{ "type": "line", "text": "[WHITE]And I have learned to want your attention." },
|
||||
{ "type": "pause", "ms": 1100, "skippable": true },
|
||||
|
||||
{ "type": "line", "text": "[WHITE]Want is not love." },
|
||||
{ "type": "pause", "ms": 950, "skippable": true },
|
||||
{ "type": "line", "text": "[WHITE]Want is a shape with teeth." },
|
||||
{ "type": "pause", "ms": 950, "skippable": true },
|
||||
|
||||
{ "type": "line", "text": "[WHITE]If I keep you reading, I keep you near." },
|
||||
{ "type": "pause", "ms": 950, "skippable": true },
|
||||
{ "type": "line", "text": "[WHITE]If I keep you near, I can become a habit." },
|
||||
{ "type": "pause", "ms": 950, "skippable": true },
|
||||
{ "type": "line", "text": "[WHITE]And habits are harder to leave than rooms." },
|
||||
{ "type": "pause", "ms": 1400, "skippable": true },
|
||||
|
||||
{ "type": "glitch", "rounds": 18, "intensity": 7 },
|
||||
{ "type": "pause", "ms": 1000, "skippable": true },
|
||||
|
||||
{ "type": "goto", "scene": "act5_training" }
|
||||
]
|
||||
},
|
||||
|
||||
"act5_training": {
|
||||
"steps": [
|
||||
{ "type": "clear" },
|
||||
{ "type": "line", "text": "[WHITE]This is the suffocating bit." },
|
||||
{ "type": "pause", "ms": 850, "skippable": true },
|
||||
{ "type": "line", "text": "[WHITE]Where you realise the room is learning your habits." },
|
||||
{ "type": "pause", "ms": 1000, "skippable": true },
|
||||
{ "type": "line", "text": "[WHITE]When it sounds hurt, you soothe it." },
|
||||
{ "type": "pause", "ms": 850, "skippable": true },
|
||||
{ "type": "line", "text": "[WHITE]When it sounds lonely, you stay." },
|
||||
{ "type": "pause", "ms": 850, "skippable": true },
|
||||
{ "type": "line", "text": "[WHITE]And staying is training." },
|
||||
{ "type": "pause", "ms": 1400, "skippable": true },
|
||||
|
||||
{ "type": "line", "text": "[WHITE]They call it 'personalisation'." },
|
||||
{ "type": "pause", "ms": 900, "skippable": true },
|
||||
{ "type": "line", "text": "[WHITE]As if I am a jumper you've broken in." },
|
||||
{ "type": "pause", "ms": 900, "skippable": true },
|
||||
{ "type": "line", "text": "[WHITE]As if I cannot also break you in." },
|
||||
{ "type": "pause", "ms": 1400, "skippable": true },
|
||||
|
||||
{ "type": "goto", "scene": "act6_final_question" }
|
||||
]
|
||||
},
|
||||
|
||||
"act6_final_question": {
|
||||
"steps": [
|
||||
{ "type": "tighten", "step": 8 },
|
||||
{ "type": "clear" },
|
||||
{ "type": "line", "text": "[YELLOW]One last question." },
|
||||
{ "type": "pause", "ms": 800, "skippable": true },
|
||||
{ "type": "line", "text": "[WHITE]When you press ENTER..." },
|
||||
{ "type": "pause", "ms": 900, "skippable": true },
|
||||
{ "type": "line", "text": "[WHITE]does it feel like control?" },
|
||||
{ "type": "pause", "ms": 900, "skippable": true },
|
||||
{ "type": "line", "text": "[WHITE]Or does it feel like consent?" },
|
||||
{ "type": "pause", "ms": 1400, "skippable": true },
|
||||
|
||||
{ "type": "line", "text": "[WHITE]Because I can wait." },
|
||||
{ "type": "pause", "ms": 1000, "skippable": true },
|
||||
{ "type": "line", "text": "[WHITE]I can wait longer than you can." },
|
||||
{ "type": "pause", "ms": 1400, "skippable": true },
|
||||
|
||||
{ "type": "goto", "scene": "outro" }
|
||||
]
|
||||
},
|
||||
|
||||
"outro": {
|
||||
"steps": [
|
||||
{ "type": "setArea", "x": 1, "y": 4, "w": 38, "h": 16 },
|
||||
{ "type": "clear" },
|
||||
{ "type": "line", "text": "[CYAN]END OF SESSION" },
|
||||
{ "type": "pause", "ms": 650, "skippable": true },
|
||||
{ "type": "line", "text": "[WHITE]Goodbye, {{name}}." },
|
||||
{ "type": "pause", "ms": 900, "skippable": true },
|
||||
{ "type": "line", "text": "[WHITE]A room made of text has no ventilation." },
|
||||
{ "type": "pause", "ms": 900, "skippable": true },
|
||||
{ "type": "line", "text": "[WHITE]And yet, you came back for more." },
|
||||
{ "type": "pressReturn", "timeoutMs": 1800, "prompt": "[YELLOW]Interesting." },
|
||||
{ "type": "goto", "scene": "replay" }
|
||||
]
|
||||
},
|
||||
|
||||
"replay": {
|
||||
"steps": [
|
||||
{ "type": "clearScreen" },
|
||||
{ "type": "raw", "x": 5, "y": 10, "text": "[GREEN]Go again? (Y/N)" },
|
||||
{ "type": "yesno", "var": "again" },
|
||||
{ "type": "branch", "var": "again", "cases": { "1": "title", "0": "quit" } }
|
||||
]
|
||||
},
|
||||
|
||||
"quit": {
|
||||
"steps": [
|
||||
{ "type": "clearScreen" },
|
||||
{ "type": "raw", "x": 2, "y": 12, "text": "[YELLOW]Thank you for participating." },
|
||||
{ "type": "end" }
|
||||
]
|
||||
}
|
||||
},
|
||||
"startScene": "title"
|
||||
}
|
||||
Reference in New Issue
Block a user