feat(content): populate knowledge fact catalogs for v0.1 transit district
Add machine-readable fact catalog YAML files for all knowledge categories.
Makes the check-fact-ids pre-commit hook validation functional.
New files: awareness.yaml, behavioral.yaml, knowledge.yaml, social.yaml
Populated: investigation.yaml, contraband.yaml, location.yaml,
relationship.yaml, world.yaml, progress.yaml
50+ canonical fact IDs covering: smuggling ring operations, investigation
findings, behavioral patterns, situational awareness, location facts,
inter-NPC relationships, and social positioning. Character starting
confidence annotated per fact. Derived from knowledge-vocabulary-v01.md (#368).
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
This commit is contained in:
@@ -0,0 +1,42 @@
|
||||
# Fact catalog: awareness
|
||||
# Situational awareness — who's present, active threats, operational status
|
||||
# Source: docs/design/knowledge-vocabulary-v01.md §4.2 (#368)
|
||||
|
||||
facts:
|
||||
|
||||
- fact_id: awareness.detective_presence
|
||||
description: A Commission detective is operating on Sova Station
|
||||
typical_confidence: knows_of
|
||||
characters: [smuggler]
|
||||
notes: "Smuggler learns through rumor or direct observation. Detective does not hold this fact about themselves."
|
||||
|
||||
- fact_id: awareness.detective_investigating_ring
|
||||
description: The detective is specifically targeting the smuggling ring, not a routine audit
|
||||
typical_confidence: knows_details
|
||||
characters: [smuggler]
|
||||
|
||||
- fact_id: awareness.commission_audit_scheduled
|
||||
description: A Commission audit is coming — officially scheduled
|
||||
typical_confidence: knows_of
|
||||
characters: [smuggler, detective]
|
||||
|
||||
- fact_id: awareness.ring_route_compromise
|
||||
description: The current drop route may be compromised or under observation
|
||||
typical_confidence: suspects
|
||||
characters: [smuggler]
|
||||
|
||||
- fact_id: awareness.surveillance_change
|
||||
description: Surveillance patterns in the maintenance corridors have changed recently
|
||||
typical_confidence: suspects
|
||||
characters: [smuggler]
|
||||
|
||||
- fact_id: awareness.ring_tension_escalation
|
||||
description: Something is wrong inside the ring — someone is scared or making moves
|
||||
typical_confidence: suspects
|
||||
characters: [smuggler]
|
||||
|
||||
- fact_id: awareness.inspection_sweep_active
|
||||
description: Active inspection sweep in progress right now
|
||||
typical_confidence: direct
|
||||
characters: [smuggler, detective]
|
||||
notes: "direct confidence — set by environmental observation, not investigation"
|
||||
@@ -0,0 +1,42 @@
|
||||
# Fact catalog: behavioral
|
||||
# Behavioral patterns recognized through repeated observation across multiple scenes
|
||||
# Source: docs/design/knowledge-vocabulary-v01.md §4.3 (#368)
|
||||
|
||||
facts:
|
||||
|
||||
- fact_id: behavioral.kael_evasion
|
||||
description: Kael looks left when lying — personal tell recognized post-conversation
|
||||
typical_confidence: direct
|
||||
characters: [smuggler]
|
||||
notes: "Set during a conversation where evasion is detected. direct confidence = just confirmed."
|
||||
|
||||
- fact_id: behavioral.kael_behavioral_change
|
||||
description: Kael's behavior has noticeably changed — quieter, distracted, different routine
|
||||
typical_confidence: suspects
|
||||
characters: [smuggler]
|
||||
|
||||
- fact_id: behavioral.sera_avoidance_pattern
|
||||
description: Sera consistently avoids Torek Lintar — leaves when he arrives, repositions
|
||||
typical_confidence: suspects
|
||||
characters: [smuggler, detective]
|
||||
notes: "One observation = suspects; three observations = knows_of (pattern confirmed for detective)"
|
||||
|
||||
- fact_id: behavioral.sera_topic_deflection
|
||||
description: Sera deflects specific topics — Commission work, manifest audits, freight
|
||||
typical_confidence: suspects
|
||||
characters: [smuggler, detective]
|
||||
|
||||
- fact_id: behavioral.sera_kiosk_pattern
|
||||
description: Sera habitually stops at the same Commission kiosk at the same time
|
||||
typical_confidence: knows_of
|
||||
characters: [smuggler, detective]
|
||||
|
||||
- fact_id: behavioral.sera_knowledge_detail
|
||||
description: Sera's offhand comments reveal detailed knowledge of manifest routing she shouldn't have
|
||||
typical_confidence: knows_of
|
||||
characters: [smuggler]
|
||||
|
||||
- fact_id: behavioral.voss_awareness
|
||||
description: Voss is tracking people — situational awareness beyond normal supervisor behavior
|
||||
typical_confidence: suspects
|
||||
characters: [detective]
|
||||
@@ -1 +1,39 @@
|
||||
# Fact catalog: contraband
|
||||
# Smuggling ring world facts — existence, components, operations, supply chain
|
||||
# Source: docs/design/knowledge-vocabulary-v01.md §4.5 (#368)
|
||||
|
||||
facts:
|
||||
|
||||
- fact_id: contraband.ring_exists
|
||||
description: A smuggling operation is running through Sova Transit District
|
||||
typical_confidence: suspects
|
||||
characters: [smuggler, detective]
|
||||
notes: "Smuggler starts at knows_details (Background — they ARE in the ring). Detective starts at suspects."
|
||||
|
||||
- fact_id: contraband.ring_lattice_components
|
||||
description: The ring moves unlicensed lattice components — aftermarket neural mods
|
||||
typical_confidence: knows_of
|
||||
characters: [smuggler, detective]
|
||||
notes: "Smuggler starts at knows_details (Background). Detective discovers through investigation."
|
||||
|
||||
- fact_id: contraband.ring_medical_components
|
||||
description: The ring also diverts medical-grade lattice replacements from Syndic supply chains
|
||||
typical_confidence: knows_details
|
||||
characters: [smuggler, detective]
|
||||
notes: "Deep investigation only — the moral dimension of the operation"
|
||||
|
||||
- fact_id: contraband.supply_chain
|
||||
description: Understanding of the ring's supply chain — where components come from
|
||||
typical_confidence: knows_details
|
||||
characters: [smuggler, detective]
|
||||
|
||||
- fact_id: contraband.severance_tech_presence
|
||||
description: Severance counter-surveillance technology is in play on the station
|
||||
typical_confidence: suspects
|
||||
characters: [detective]
|
||||
|
||||
- fact_id: contraband.drop_tonight
|
||||
description: A drop is scheduled for tonight specifically
|
||||
typical_confidence: knows_details
|
||||
characters: [smuggler]
|
||||
notes: "Seed-dependent — only relevant in seeds where a drop is scheduled during play session"
|
||||
|
||||
@@ -1 +1,127 @@
|
||||
# Fact catalog: investigation
|
||||
# Case-specific findings — events witnessed, evidence discovered, NPC behaviors confirmed
|
||||
# Source: docs/design/knowledge-vocabulary-v01.md §4.1 (#368)
|
||||
|
||||
facts:
|
||||
|
||||
- fact_id: investigation.kael_corridor_meeting
|
||||
description: Kael was seen in corridor B-7 off-shift, apparently meeting someone
|
||||
typical_confidence: suspects
|
||||
characters: [smuggler, detective]
|
||||
notes: "Shared fact ID; smuggler perspective = operational security breach; detective perspective = initial observation"
|
||||
|
||||
- fact_id: investigation.kael_corridor_sighting
|
||||
description: Detective's initial B-7 observation — Kael spotted in maintenance corridors at unusual hour
|
||||
typical_confidence: suspects
|
||||
characters: [detective]
|
||||
notes: "Detective-only initial ID; may upgrade to kael_corridor_meeting after corroboration"
|
||||
|
||||
- fact_id: investigation.kael_unknown_contact
|
||||
description: The person Kael met in B-7 is unknown — not from the regular rotation
|
||||
typical_confidence: suspects
|
||||
characters: [smuggler, detective]
|
||||
|
||||
- fact_id: investigation.kael_ring_membership
|
||||
description: Kael is a member of the smuggling ring
|
||||
typical_confidence: suspects
|
||||
characters: [smuggler, detective]
|
||||
|
||||
- fact_id: investigation.kael_exit_attempt
|
||||
description: Kael is actively trying to leave the ring
|
||||
typical_confidence: knows_of
|
||||
characters: [smuggler, detective]
|
||||
|
||||
- fact_id: investigation.manifest_discrepancy
|
||||
description: Cargo manifests show irregularities — containers, weights, routing anomalies
|
||||
typical_confidence: suspects
|
||||
characters: [smuggler, detective]
|
||||
notes: "Detective starts with this at suspects (Background). Smuggler may encounter it during operational checks."
|
||||
|
||||
- fact_id: investigation.cargo_anomaly
|
||||
description: A specific cargo anomaly — wrong container, wrong weight, wrong route
|
||||
typical_confidence: suspects
|
||||
characters: [detective]
|
||||
|
||||
- fact_id: investigation.shift_mismatch
|
||||
description: Shift records don't match observed personnel — someone is covering for someone
|
||||
typical_confidence: knows_of
|
||||
characters: [smuggler, detective]
|
||||
|
||||
- fact_id: investigation.voss_ring_involvement
|
||||
description: Voss manages schedule changes to cover drops — involved in ring operations
|
||||
typical_confidence: knows_of
|
||||
characters: [smuggler, detective]
|
||||
|
||||
- fact_id: investigation.torek_spending_pattern
|
||||
description: Torek is spending beyond his dock-worker means — visible at bar
|
||||
typical_confidence: knows_of
|
||||
characters: [smuggler, detective]
|
||||
|
||||
- fact_id: investigation.drin_inspection_pattern
|
||||
description: Drin's inspections are conspicuously lax — clearing containers without real checking
|
||||
typical_confidence: knows_of
|
||||
characters: [detective]
|
||||
|
||||
- fact_id: investigation.drin_gambling_debt
|
||||
description: Drin has a gambling debt — leverage for whoever is running him
|
||||
typical_confidence: knows_details
|
||||
characters: [detective]
|
||||
|
||||
- fact_id: investigation.oversight_gap_pattern
|
||||
description: Inspection gaps are systematic, not accidental — someone designed the blind spots
|
||||
typical_confidence: knows_of
|
||||
characters: [detective]
|
||||
|
||||
- fact_id: investigation.surveillance_gaps
|
||||
description: Specific surveillance camera blind spots in the maintenance corridors
|
||||
typical_confidence: knows_details
|
||||
characters: [smuggler, detective]
|
||||
notes: "Smuggler knows from Background (operational necessity). Detective discovers through investigation."
|
||||
|
||||
- fact_id: investigation.smuggling_route
|
||||
description: The specific smuggling route through the station
|
||||
typical_confidence: knows_details
|
||||
characters: [smuggler, detective]
|
||||
|
||||
- fact_id: investigation.ring_existence
|
||||
description: A smuggling ring is definitely operating through Sova Transit (detective's confirmation)
|
||||
typical_confidence: suspects
|
||||
characters: [detective]
|
||||
notes: "Detective starts with suspects from manifest anomalies. Smuggler knows via Background (knows_details)."
|
||||
|
||||
- fact_id: investigation.renn_courier_role
|
||||
description: Renn operates as a courier in the ring — runs packages between drop sites
|
||||
typical_confidence: knows_of
|
||||
characters: [detective]
|
||||
|
||||
- fact_id: investigation.corridor_regular_use
|
||||
description: The maintenance corridors are regularly used for smuggling, not just incidentally
|
||||
typical_confidence: knows_of
|
||||
characters: [detective]
|
||||
|
||||
- fact_id: investigation.container_delay
|
||||
description: A specific container has been held in temporary storage longer than normal
|
||||
typical_confidence: suspects
|
||||
characters: [smuggler]
|
||||
|
||||
- fact_id: investigation.sera_evidence_held
|
||||
description: Sera has unreported evidence about manifest irregularities — sitting on it deliberately
|
||||
typical_confidence: suspects
|
||||
characters: [detective]
|
||||
notes: "suspects from avoidance pattern; knows_details only if Sera discloses or evidence found independently"
|
||||
|
||||
- fact_id: investigation.naia_lattice_condition
|
||||
description: Naia's neural lattice is degrading — the medical components are for her
|
||||
typical_confidence: knows_details
|
||||
characters: [smuggler, detective]
|
||||
notes: "Requires Kael disclosure or independent medical evidence"
|
||||
|
||||
- fact_id: investigation.ring_leadership
|
||||
description: Who directs ring operations — late-game discovery
|
||||
typical_confidence: knows_details
|
||||
characters: [smuggler, detective]
|
||||
|
||||
- fact_id: investigation.drin_inspection_pattern
|
||||
description: Drin's inspection patterns protect specific containers at specific shift windows
|
||||
typical_confidence: knows_of
|
||||
characters: [detective]
|
||||
|
||||
@@ -0,0 +1,32 @@
|
||||
# Fact catalog: knowledge
|
||||
# Operational knowledge — ring procedures, social dynamics, institutional mechanics
|
||||
# Source: docs/design/knowledge-vocabulary-v01.md §4.4 (#368)
|
||||
|
||||
facts:
|
||||
|
||||
- fact_id: knowledge.ring_routing_knowledge
|
||||
description: Full knowledge of the ring's drop routes and timing protocols
|
||||
typical_confidence: knows_details
|
||||
characters: [smuggler]
|
||||
notes: "Smuggler starts at knows_details (Background). Not available to detective through normal investigation paths."
|
||||
|
||||
- fact_id: knowledge.ring_bar_operations
|
||||
description: The bar (The Last Shift) has a role in ring communications or social cover
|
||||
typical_confidence: knows_of
|
||||
characters: [smuggler, detective]
|
||||
|
||||
- fact_id: knowledge.bar_back_room_significance
|
||||
description: The bar's back room is significant — meeting space, handoff point, or storage
|
||||
typical_confidence: suspects
|
||||
characters: [detective]
|
||||
|
||||
- fact_id: knowledge.bar_ring_awareness
|
||||
description: Bar regulars have varying levels of awareness of the ring — open secret at some level
|
||||
typical_confidence: knows_of
|
||||
characters: [smuggler, detective]
|
||||
|
||||
- fact_id: knowledge.kael_exit_plan
|
||||
description: Kael has a specific exit plan — timing, conditions, contact
|
||||
typical_confidence: knows_details
|
||||
characters: [smuggler, detective]
|
||||
notes: "Only available through Kael's deep trust disclosure or independent investigation"
|
||||
@@ -1 +1,51 @@
|
||||
# Fact catalog: location
|
||||
# Location-specific access, restrictions, and significance
|
||||
# Source: docs/design/knowledge-vocabulary-v01.md §4.6 (#368)
|
||||
|
||||
facts:
|
||||
|
||||
- fact_id: location.corridor_b7_restricted
|
||||
description: Corridor B-7 is a restricted access zone — requires credentials
|
||||
typical_confidence: knows_of
|
||||
characters: [smuggler, detective]
|
||||
notes: "Both characters have this from Background (signage, institutional knowledge)"
|
||||
|
||||
- fact_id: location.corridor_b7_drop_site
|
||||
description: B-7 is an active drop site for the ring
|
||||
typical_confidence: knows_details
|
||||
characters: [smuggler, detective]
|
||||
notes: "Smuggler from Background. Detective through investigation."
|
||||
|
||||
- fact_id: location.maintenance_corridors_access
|
||||
description: Character knows the maintenance corridor layout and can navigate it
|
||||
typical_confidence: knows_of
|
||||
characters: [smuggler, detective]
|
||||
notes: "Smuggler at knows_details (Background — daily operational space). Detective at knows_of after investigation."
|
||||
|
||||
- fact_id: location.bay4_sealed
|
||||
description: Bay 4 is sealed — inspection or deliberate cover
|
||||
typical_confidence: suspects
|
||||
characters: [smuggler, detective]
|
||||
|
||||
- fact_id: location.span_gate_schedule_gap
|
||||
description: The span gate schedule has a window that enables unseen cargo drops
|
||||
typical_confidence: knows_details
|
||||
characters: [smuggler]
|
||||
|
||||
- fact_id: location.smuggling_route
|
||||
description: The complete physical route the ring uses through the station
|
||||
typical_confidence: knows_details
|
||||
characters: [smuggler, detective]
|
||||
notes: "Smuggler from Background. Detective from deep investigation."
|
||||
|
||||
- fact_id: location.surveillance_gaps
|
||||
description: Specific camera blind spots in the maintenance corridor network
|
||||
typical_confidence: knows_details
|
||||
characters: [smuggler, detective]
|
||||
notes: "Smuggler from Background. Detective must discover independently."
|
||||
|
||||
- fact_id: location.dead_drop_location
|
||||
description: Specific dead drop location(s) used for handoffs
|
||||
typical_confidence: knows_details
|
||||
characters: [smuggler]
|
||||
notes: "Smuggler operational knowledge"
|
||||
|
||||
@@ -1 +1,36 @@
|
||||
# Fact catalog: progress
|
||||
# Narrative milestone flags
|
||||
# Note: progress.* facts are NOT recommended for direct authoring in prerequisite blocks.
|
||||
# Use investigation fact chains and relationship states instead.
|
||||
# These exist for potential storyteller/arc-tracking use.
|
||||
# Source: docs/design/knowledge-vocabulary-v01.md §3.2 (#368)
|
||||
|
||||
facts:
|
||||
|
||||
- fact_id: progress.friend_arc_phase_1
|
||||
description: FRIEND arc Phase 1 warmth established (baseline positive relationship)
|
||||
notes: "Set by relationship state transition to Friendly. Do not author directly — use relationship checks."
|
||||
|
||||
- fact_id: progress.friend_arc_phase_2
|
||||
description: FRIEND arc Phase 2 trust built (deep rapport + initial social context)
|
||||
notes: "Set by trust tier advancement. Do not author directly — use investigation + relationship checks."
|
||||
|
||||
- fact_id: progress.friend_arc_contradiction
|
||||
description: FRIEND contradiction discovered (KnowledgeState → Contradicted)
|
||||
notes: "Set by contradiction detection system. Use relationship state person_of_interest + investigation fact instead."
|
||||
|
||||
- fact_id: progress.friend_arc_confrontation
|
||||
description: FRIEND confronted about contradiction
|
||||
notes: "Set post-confrontation by dialogue system."
|
||||
|
||||
- fact_id: progress.opening_complete
|
||||
description: Opening tutorial sequence completed (first 5 minutes)
|
||||
notes: "Set by storyteller after initial objective sequence."
|
||||
|
||||
- fact_id: progress.first_ring_contact
|
||||
description: Smuggler completed first ring operation during play session
|
||||
characters: [smuggler]
|
||||
|
||||
- fact_id: progress.first_evidence_filed
|
||||
description: Detective filed first manifest discrepancy evidence
|
||||
characters: [detective]
|
||||
|
||||
@@ -1 +1,33 @@
|
||||
# Fact catalog: relationship
|
||||
# Inter-NPC connections — what one character knows about relationships between others
|
||||
# Source: docs/design/knowledge-vocabulary-v01.md §4.7 (#368)
|
||||
|
||||
facts:
|
||||
|
||||
- fact_id: relationship.kael_naia_connection
|
||||
description: Kael and Naia are romantically partnered — not just colleagues
|
||||
typical_confidence: knows_of
|
||||
characters: [smuggler, detective]
|
||||
notes: "Smuggler may know from background or Kael mentioning Naia. Detective through social observation."
|
||||
|
||||
- fact_id: relationship.ring_membership
|
||||
description: Character has identified specific ring members
|
||||
typical_confidence: knows_of
|
||||
characters: [smuggler, detective]
|
||||
notes: "knows_of = partial list; knows_details = full ring membership identified"
|
||||
|
||||
- fact_id: relationship.trust_network
|
||||
description: Understanding of who trusts whom inside the ring — operational reliability mapping
|
||||
typical_confidence: knows_details
|
||||
characters: [smuggler]
|
||||
notes: "Smuggler-specific operational knowledge"
|
||||
|
||||
- fact_id: relationship.tamm_family
|
||||
description: Connection between Naia Tamm and her family situation
|
||||
typical_confidence: knows_of
|
||||
characters: [smuggler, detective]
|
||||
|
||||
- fact_id: relationship.torek_bar_arrangement
|
||||
description: Torek has a financial arrangement related to the bar or its operations
|
||||
typical_confidence: knows_of
|
||||
characters: [smuggler, detective]
|
||||
|
||||
@@ -0,0 +1,11 @@
|
||||
# Fact catalog: social
|
||||
# Social positioning facts — standing in a specific social context
|
||||
# Source: docs/design/knowledge-vocabulary-v01.md §4.8 (#368)
|
||||
|
||||
facts:
|
||||
|
||||
- fact_id: social.bar_regular_status
|
||||
description: Character is an established regular at The Last Shift — recognized, trusted in that context
|
||||
typical_confidence: knows_of
|
||||
characters: [smuggler, detective]
|
||||
notes: "Smuggler may have this from Background. Detective builds it through multiple bar visits."
|
||||
@@ -1 +1,35 @@
|
||||
# Fact catalog: world
|
||||
# Faction and institutional knowledge — Commission, lattice regulation, broader context
|
||||
# Source: docs/design/knowledge-vocabulary-v01.md §4.6 (#368)
|
||||
|
||||
facts:
|
||||
|
||||
- fact_id: world.lattice_regulation_active
|
||||
description: Commission actively regulates neural lattice component access in this system
|
||||
typical_confidence: knows_of
|
||||
characters: [smuggler, detective]
|
||||
notes: "Both characters have this from Background"
|
||||
|
||||
- fact_id: world.unlicensed_lattice_demand
|
||||
description: High demand for unlicensed lattice upgrades on working-class stations like Sova
|
||||
typical_confidence: knows_of
|
||||
characters: [smuggler, detective]
|
||||
notes: "The moral context of the operation — smuggler knows it as justification; detective may learn it as complication"
|
||||
|
||||
- fact_id: world.commission_sova_jurisdiction
|
||||
description: Commission has jurisdiction over Sova Transit District
|
||||
typical_confidence: knows_details
|
||||
characters: [detective]
|
||||
notes: "Detective Background knowledge — institutional mandate"
|
||||
|
||||
- fact_id: world.ring_cross_system
|
||||
description: The ring operates across multiple star systems — Sova is one node
|
||||
typical_confidence: knows_details
|
||||
characters: [smuggler, detective]
|
||||
notes: "Late-game discovery — changes scope of the operation"
|
||||
|
||||
- fact_id: world.shift_schedule
|
||||
description: Sova Transit District shift schedule — who works when
|
||||
typical_confidence: knows_of
|
||||
characters: [smuggler, detective]
|
||||
notes: "Smuggler from Background (colleague). Detective through investigation."
|
||||
|
||||
@@ -0,0 +1,490 @@
|
||||
# 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: transit_m_s_open_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: transit_m_s_open_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: transit_m_s_open_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: transit_m_s_open_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: transit_m_s_open_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: transit_m_s_open_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: transit_m_s_open_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: transit_m_s_open_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: transit_m_s_open_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: transit_m_s_open_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: transit_m_s_open_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: transit_m_s_open_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: transit_m_s_open_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: transit_m_d_open_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: transit_m_d_open_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: transit_m_d_open_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: transit_m_d_open_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: transit_m_d_open_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: transit_m_d_open_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: transit_m_d_open_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: transit_m_d_open_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: transit_m_d_open_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: transit_m_d_open_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: transit_m_d_open_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: transit_m_d_open_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: transit_m_d_open_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: transit_m_d_open_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.*
|
||||
Reference in New Issue
Block a user