--- title: "Opening Hook Content Per Character" description: "Authored monologue and dialogue content for each character's first 3-4 minutes across seed variants A-D" type: design status: draft ticket: "#260" decision_refs: [D-032, D-035, D-039, D-053, D-064] author: "Paula" created: 2026-02-19 updated: 2026-02-23 --- # Opening Hook Content Per Character **Ticket:** #260 | **Priority:** High | **Sprint:** 12 **Status:** v0.1 Draft **Owner:** Paula **Blocked by:** #259 (First 5 minutes experience design — done) **Source:** docs/design/first-5-minutes-experience.md (systems + narrative design) **Decisions referenced:** D-032, D-035, D-039 (wow moment #1), D-053, D-064 --- ## Overview This document specifies the authored content for each character's opening hook — the first 3-4 minutes of play, before any investigation or conspiracy elements appear. Content is organized by seed variant (A-D per character) and includes authored monologue lines, NPC dialogue cues, and diegetic objective setup. Authoring note: this document provides design spec and reference lines. Final authored YAML files go in the appropriate monologue pools per D-032 and D-035. --- ## 1. Smuggler Opening Variants ### Common Elements (All Variants) All smuggler openings share: - **Location:** The Terminal (Logistics Hub), dock floor or entrance - **Ambient:** Station hum playing from frame 0; cargo machinery active in background - **FRIEND:** Kael Davan is the first significant NPC — established within 90 seconds regardless of variant - **Voice register:** Terse, sensory, first-name, operational-aware. No complete sentences unless they end in an operational note. ### Opening Line Pool (enter_location, Terminal, no prerequisites) These lines fire when the smuggler enters The Terminal at session start. 3-4 lines available; engine selects one based on seed variant. ```yaml - id: pc-smuggler_m_s_001 character: smuggler trigger: enter_location location: the-terminal text: "Morning shift. Recycled air and cargo lubricant. Home sweet home." mood: [content, routine] tags: [opening_hook, canonical_anchor] - id: pc-smuggler_m_s_002 character: smuggler trigger: enter_location location: the-terminal text: "Span gate's been cycling all night. Can hear it in the walls." mood: [routine, aware] tags: [opening_hook] - id: pc-smuggler_m_s_003 character: smuggler trigger: enter_location location: the-terminal text: "Floor smells like a ship's hold. Someone ran a heavy cargo last night. Not ours." mood: [routine, observant] tags: [opening_hook] - id: pc-smuggler_m_s_004 character: smuggler trigger: enter_location location: the-terminal text: "Early shift crew's still clearing out. Good — gives us some runway before handoff." mood: [operational, content] tags: [opening_hook, variant_c_d] ``` ### Kael Sighting Lines (observe_npc, Kael, Phase 1 relationship) These fire when the smuggler sees Kael on the dock floor. Critical FRIEND establishment lines. ```yaml - id: pc-smuggler_m_s_010 character: smuggler trigger: observe_npc target: npc:kael-davan prerequisites: relationship: target: npc:kael-davan state: friendly text: "Kael's already at the dock. Good. The day's better when he's on shift." mood: [content, fond] tags: [opening_hook, friend_phase_1, canonical_anchor] - id: pc-smuggler_m_s_011 character: smuggler trigger: observe_npc target: npc:kael-davan prerequisites: relationship: target: npc:kael-davan state: friendly text: "There he is. Same spot, every morning for two years. Some things you can count on." mood: [fond, content] tags: [opening_hook, friend_phase_1] ``` ### Variant A: Quiet Morning **Initial condition:** No deviations. Standard operational day. The run is scheduled for the transition window. **Opening state:** Kael is at his station. Voss is present but not focused on the dock floor. Everything is calm. **Operational context line (observe_anomaly — schedule board):** ```yaml - id: pc-smuggler_m_s_020 character: smuggler trigger: observe_anomaly location: the-terminal text: "Transition window opens in fifty minutes. Standard run — nothing complicated." mood: [operational, content] tags: [opening_hook, variant_a] ``` **FRIEND Phase 1 dialogue cue (Kael, on approach):** Kael greets the smuggler warmly. Asks about the weekend. Makes a dry comment about Voss's new clipboard system. Everything is normal. *Authored dialogue line for Kael (for content pack):* > "There you are. Voss has a new form now — cargo intake manifest version four. Apparently version three had a column in the wrong place. The man has opinions about spreadsheets." > `access: [peer, insider], trust: surface, situation: [greeting, shift_start]` --- ### Variant B: Kael Is Late **Initial condition:** Kael has not arrived at his expected time. His station is empty. The smuggler starts without their anchor. **Opening state:** Dock floor has other workers but Kael's absence is visible. A small operational tension — where is he? — without any real alarm. **Absence lines (observe_npc, failed — Kael's station empty):** ```yaml - id: pc-smuggler_m_s_030 character: smuggler trigger: observe_anomaly location: the-terminal text: "Kael's station is empty. He's always here before me. Maybe I was early." mood: [routine, mildly_concerned] tags: [opening_hook, variant_b] notes: "Phase 1 tell: Kael's routine is so established that absence is noted before alarm." - id: pc-smuggler_m_s_031 character: smuggler trigger: time_idle location: the-terminal text: "Still no Kael. Probably caught something. He'd have sent a message if it were the run." mood: [mildly_concerned, operational] tags: [opening_hook, variant_b] notes: "Fires if player is near Kael's empty station for >60 seconds." ``` **Kael arrival (late, within 5 minutes of session start):** Kael arrives slightly disheveled, slightly out of breath. Brief explanation — nothing alarming, just late. But the explanation is slightly vague. This is the first hairline crack from the very start: Kael's lateness is the beginning of Phase 2 tells. *Authored dialogue line for Kael (late arrival):* > "Yeah, yeah, I know. Had a thing. Don't give Voss a reason to look at the timestamp." > `access: [peer, insider], trust: surface, situation: [greeting]` > *Notes: "a thing" is characteristically vague but reads as personal, not operational.* --- ### Variant C: Heat from Voss **Initial condition:** Voss is monitoring the dock floor more closely than usual. Something has him on edge — Commission liaison spotted yesterday, or a scheduling discrepancy from last week that hasn't been explained. **Opening state:** Kael is present but body language is professional-not-warm. Voss is visible and attentive. The usual operational openness is compressed. **Environmental read lines:** ```yaml - id: pc-smuggler_m_s_040 character: smuggler trigger: observe_npc target: npc:voss text: "Voss is on the floor. Not his usual post. Something's up." mood: [aware, cautious] tags: [opening_hook, variant_c] - id: pc-smuggler_m_s_041 character: smuggler trigger: observe_npc target: npc:voss text: "He's watching the floor. That's the third time he's passed that section. Something put him on edge." mood: [operational, cautious] tags: [opening_hook, variant_c] notes: "Fires after player has been on the dock floor for 2+ minutes." ``` **Kael adjustment (operational caution):** *Authored dialogue line for Kael (in variant C):* > "Normal morning. Don't give him a reason to notice you." [Kael says this quietly, without looking directly at the smuggler] > `access: [insider], trust: real, situation: [shift_start]` --- ### Variant D: Container Held **Initial condition:** Operational container 4471 has been in temp storage longer than routing protocol specifies. Not a crisis — a logistical anomaly that the smuggler needs to address. **Opening state:** Everything looks normal, but the first interaction with the freight system surfaces a held container. **Container flag lines:** ```yaml - id: pc-smuggler_m_s_050 character: smuggler trigger: observe_anomaly location: the-terminal text: "4471 is still in temp. That was supposed to move yesterday afternoon." mood: [operational, concerned] tags: [opening_hook, variant_d] - id: pc-smuggler_m_s_051 character: smuggler trigger: observe_anomaly location: the-terminal text: "Scheduling held it. Voss's call. There's a reason, I just don't know it yet." mood: [operational, analytical] tags: [opening_hook, variant_d] notes: "Fires on approach to freight terminal display. Teaches the player that containers are trackable." ``` **Kael conversation (operational problem-solving):** *Authored dialogue line for Kael (variant D):* > "I saw. Voss pulled it from the schedule. He'll explain or he won't. Just don't touch it until he does." > `access: [insider], trust: real, situation: [shift_start, investigation]` --- ## 2. Detective Opening Variants ### Common Elements (All Variants) All detective openings share: - **Starting location:** Varies by variant (see below) - **Ambient:** Station hum playing; institutional feel — cleaner, more structured than the bar or corridors - **Social temperature:** No warm greetings. NPCs are polite and guarded. - **Voice register:** Complete sentences. Analytical. "Filing it." "Note it." "That's interesting." ### Opening Line Pool (enter_location, no prerequisites) Lines that fire when the detective enters their starting location. Selection based on seed variant. ```yaml - id: pc-detective_m_d_001 character: detective trigger: enter_location location: the-terminal text: "Sova Transit District. Third day on station. The briefing said routine compliance review." mood: [professional, observant] tags: [opening_hook, canonical_anchor] - id: pc-detective_m_d_002 character: detective trigger: enter_location location: the-terminal text: "The briefing is always wrong about something." mood: [analytical, wry] tags: [opening_hook, canonical_anchor] notes: "Companion line to open_001 — these fire in sequence on Variant A/B/C." - id: pc-detective_m_d_003 character: detective trigger: enter_location location: the-last-shift text: "The bar at 08:30. Sera suggested it. The district has its own rhythms — find them before imposing mine." mood: [professional, curious] tags: [opening_hook, variant_a_bar] - id: pc-detective_m_d_004 character: detective trigger: enter_location location: the-terminal text: "Manifest discrepancies clustered around the freight hub. Start there. Watch the shift change." mood: [analytical, operational] tags: [opening_hook] ``` ### Sera Sighting Lines (observe_npc, Sera, Phase 1 relationship) Critical FRIEND establishment for the detective. ```yaml - id: pc-detective_m_d_010 character: detective trigger: observe_npc target: npc:sera-venn prerequisites: relationship: target: npc:sera-venn state: friendly text: "Good to know Sera's here. At least someone in this district speaks my language." mood: [relieved, warm] tags: [opening_hook, friend_phase_1, canonical_anchor] - id: pc-detective_m_d_011 character: detective trigger: observe_npc target: npc:sera-venn prerequisites: relationship: target: npc:sera-venn state: friendly text: "Sera. Same as always — looks like she grew up in a place like this. I'll get there." mood: [warm, mildly_isolated] tags: [opening_hook, friend_phase_1] ``` --- ### Variant A: Bar First (Warm Arrival) **Initial condition:** Sera has been contacted ahead of time and suggested meeting at The Last Shift to brief the detective on the district. **Starting location:** The Last Shift **Opening state:** Sera is at her usual booth. The bar is opening for morning service — Lera is present but focused on setup. The bar is mostly empty. **Bar arrival line:** ```yaml - id: pc-detective_m_d_020 character: detective trigger: enter_location location: the-last-shift text: "The bar at 08:30. Only place in this district that doesn't smell like freight lubricant. Marginally." mood: [wry, observant] tags: [opening_hook, variant_a] ``` **Lera read (public NPC, establishing social texture):** ```yaml - id: pc-detective_m_d_021 character: detective trigger: observe_npc target: npc:lera-sessik text: "Bar owner. Lera Sessik — Sera mentioned her. Watching me decide whether I'm going to be trouble. Fair assessment." mood: [observant, professional] tags: [opening_hook, variant_a] ``` **Sera orientation dialogue cue:** Sera gives a brief district overview — who the regulars are, what the Terminal is like, what to expect from the shift supervisors. This is the detective's social tutorial through their friend's eyes. *Authored dialogue line for Sera (opening orientation):* > "The Terminal crew is tight. They've seen Commission before. Voss will give you what he's required to give you and nothing else. Maret's different — she worries about compliance more than the others. That might be useful." > `access: [peer], trust: real, situation: [social, investigation]` --- ### Variant B: Terminal First (Cold Arrival) **Initial condition:** No pre-contact. The detective enters the Terminal directly. **Starting location:** The Terminal entrance **Opening state:** The dock floor is active. Dock workers register the Commission presence and adjust. Voss is visible and approaches. **Terminal read line:** ```yaml - id: pc-detective_m_d_030 character: detective trigger: enter_location location: the-terminal text: "Logistics hub. Standard prefab, heavy foot traffic. Let's see what the shift change tells me." mood: [analytical, professional] tags: [opening_hook, variant_b] ``` **Voss approach (first adversarial NPC):** ```yaml - id: pc-detective_m_d_031 character: detective trigger: observe_npc target: npc:voss text: "There's the shift supervisor. Saw me come in. He's deciding whether to approach or wait. Approaching. Good — I was going to find him anyway." mood: [analytical, professional] tags: [opening_hook, variant_b] ``` **Voss opening exchange (institutional friction):** *Authored dialogue line for Voss (territorial greeting):* > "Commission liaison. Right. I was told you'd be coming by. I've got the manifest copies from last quarter ready. Standard compliance package." > `access: [authority], trust: surface, situation: [greeting, investigation]` *Detective response cue (not authored — player choice from dialogue options):* Standard question options: "Thank you, I'll need those." / "Tell me about your shift crew." / [Observe without responding] --- ### Variant C: Evidence in Hand **Initial condition:** The detective has reviewed additional case file data overnight and arrives with two specific manifest discrepancies already flagged — container 4471 and one other. **Starting location:** The Terminal, arriving at the manifest terminal directly **Opening state:** The detective enters with a purpose they didn't have on day one. Something from the overnight analysis sharpened the investigation. **Investigative focus line:** ```yaml - id: pc-detective_m_d_040 character: detective trigger: enter_location location: the-terminal text: "Container 4471. Three separate appearances in the anomaly cluster. Same container ID, different cargo entries. That's not clerical error." mood: [analytical, focused] tags: [opening_hook, variant_c] - id: pc-detective_m_d_041 character: detective trigger: observe_anomaly location: the-terminal text: "The manifest terminal. Maret's territory. She processes the corrections here. I want to see what corrections look like in the unfiltered log." mood: [analytical, investigative] tags: [opening_hook, variant_c] ``` --- ### Variant D: Institutional Escort **Initial condition:** A Commission compliance officer accompanies the detective for the first 10 minutes — standard procedure for new postings. The escort is Torek Lintar. **Starting location:** Terminal entrance, arriving with Torek **Opening state:** The district sees the badge + escort together. Social walls go up faster than normal. Torek is helpful but slightly evasive about district social dynamics. **Escort read lines:** ```yaml - id: pc-detective_m_d_050 character: detective trigger: observe_npc target: npc:torek-lintar text: "Lintar. Commission compliance, four years on Sova. He'll know the social texture better than any case file." mood: [professional, curious] tags: [opening_hook, variant_d] - id: pc-detective_m_d_051 character: detective trigger: observe_npc target: npc:torek-lintar text: "He's being helpful but steering me away from something. Not sure what yet. File it." mood: [analytical, suspicious] tags: [opening_hook, variant_d] notes: "Fires after 3+ minutes with Torek. The detective is already reading Torek as slightly off." ``` **Torek orientation dialogue cue:** *Authored dialogue line for Torek (escort mode):* > "The Terminal's well-run. Voss has been here eight years — knows his people. Maret handles scheduling, she's thorough. Drin does inspections, solid record. You'll find it's a tight operation." > `access: [authority], trust: surface, situation: [social, investigation]` > *Notes: The complimentary framing is slightly too smooth. The detective's monologue (open_051) flags this.* --- ## 3. Cross-Character Notes for Content Authors ### What both characters encounter in the first 3-4 minutes | Element | Smuggler | Detective | |---------|---------|-----------| | Station ambient | Active from frame 0 | Active from frame 0 | | Entity color landscape | Green (Kael), teal (other known NPCs) | Grey/teal (mostly Unknown/Known) | | First NPC interaction | Kael (warm, first-name) | Voss or Sera (institutional or pre-established) | | First insert use | Schedule board (operational) | Case file (investigative) | | First monologue chime | Within 15 seconds | Within 15 seconds | | Emotional tone | Comfort in familiarity | Alertness in unfamiliarity | ### What the opening must NOT do - Use the name "Kael" before the player has LOS to Kael (smuggler) - Use the surname "Davan" when the smuggler addresses Kael (always first-name) - Use the first name "Sera" before the detective has established visual contact - Reference operational facts the smuggler knows ("the ring") in any way that reads as exposition - Reference investigation facts the detective knows (manifest discrepancies) in opening lines before arriving at the manifest terminal - Have any NPC behave unexpectedly in the first 90 seconds — baseline must be established before deviation --- *Ticket #260 — Opening hook content per character. v0.1 scope. Unblocked by #259.*