feat(content): add monologue pool and news ticker headlines (#399, #395)

200 monologue lines (100 per character) across 8 location files:
arrival flavor, NPC commentary, knowledge-gated contradiction lines.
20 dual-lens news ticker headlines for The Last Shift bar. First real
content load for the monologue system.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
This commit is contained in:
2026-02-13 00:58:57 +01:00
co-authored by Claude Opus 4.6
parent 086988a42f
commit e7f6444567
9 changed files with 1477 additions and 16 deletions
@@ -1,2 +1,52 @@
# TODO: Revise structure when automatic dialogue/monologue generators mature (D-028 Tier 2).
# Monologue: detective at general
character: detective
location: general
lines:
- id: general_m_d_001
text: "Sova Transit District. Population twelve thousand and change. Let's narrow that down."
trigger: enter_location
tags: [arrival, analytical]
- id: general_m_d_002
text: "The span gate resonance is constant here. Background radiation of a freight hub."
trigger: hear_sound
tags: [environmental]
- id: general_m_d_003
text: "First week on station. The case file is thin. The manifest discrepancies are not."
trigger: time_idle
tags: [investigation, orientation]
- id: general_m_d_004
text: "Everyone knows I'm Commission. The conversations stop when I walk in. Noted."
trigger: time_idle
tags: [investigation, social]
- id: general_m_d_005
text: "Station gravity's point-nine-three standard. Enough to notice after a long shift."
trigger: time_idle
tags: [environmental, personal]
- id: general_m_d_006
text: "The previous liaison rotated out three months ago. That gap matters."
trigger: time_idle
tags: [investigation, analytical]
- id: general_m_d_007
text: "Back in the district. Let's see what changed while I wasn't watching."
trigger: return_visit
tags: [arrival, analytical]
- id: general_m_d_008
text: "Recycled air, industrial residue, and that constant gate hum. Sova in three notes."
trigger: enter_location
tags: [environmental, atmospheric]
- id: general_m_d_009
text: "Communities like this close ranks around outsiders. Patient work."
trigger: time_idle
tags: [reflection, social]
- id: general_m_d_010
text: "The manifest data goes back eighteen months. The pattern starts around month six."
trigger: time_idle
tags: [investigation, analytical]
@@ -1,2 +1,174 @@
# TODO: Revise structure when automatic dialogue/monologue generators mature (D-028 Tier 2).
# Monologue: detective at maintenance-corridors
character: detective
location: maintenance-corridors
lines:
# --- Arrival + Environmental Flavor ---
- id: maintenance-corridors_m_d_001
text: "Maintenance level. Low lighting, exposed conduit, restricted access nobody enforces."
trigger: enter_location
tags: [arrival, environmental]
- id: maintenance-corridors_m_d_002
text: "The air's different down here. Cooler. Damper. Less filtered."
trigger: enter_location
tags: [environmental, atmospheric]
- id: maintenance-corridors_m_d_003
text: "Service corridor B-section. Not on the public transit map. Interesting routing options."
trigger: enter_location
tags: [arrival, investigation]
- id: maintenance-corridors_m_d_004
text: "Water recycling conduits. The station's circulatory system, hidden from view."
trigger: hear_sound
tags: [environmental]
- id: maintenance-corridors_m_d_005
text: "Pipe network branching three directions. Good for maintenance. Better for privacy."
trigger: enter_location
tags: [environmental, analytical]
- id: maintenance-corridors_m_d_006
text: "Emergency lighting only. Visibility reduced, but so is surveillance coverage."
trigger: enter_location
tags: [environmental, investigation]
- id: maintenance-corridors_m_d_007
text: "The rust smell is stronger near junction B-7. Older section. Less maintenance."
trigger: enter_location
tags: [environmental, atmospheric]
- id: maintenance-corridors_m_d_008
text: "Back in the corridors. Different route this time — mapping the alternatives."
trigger: return_visit
tags: [arrival, investigation]
# --- Investigation Observations ---
- id: maintenance-corridors_m_d_009
text: "Scuff marks on the floor. Recent, heavy. Cargo weight, not foot traffic."
trigger: observe_anomaly
tags: [investigation, evidence]
- id: maintenance-corridors_m_d_010
text: "The service hatch has been used recently. Oil on the handle, dust disturbed."
trigger: observe_anomaly
tags: [investigation, evidence]
- id: maintenance-corridors_m_d_011
text: "Restricted access, but the lock plate shows wear. Regular use by someone with clearance."
trigger: observe_anomaly
tags: [investigation, evidence]
- id: maintenance-corridors_m_d_012
text: "Sound carries differently down here. Voices from two junctions away, if you're patient."
trigger: hear_sound
tags: [environmental, investigation]
- id: maintenance-corridors_m_d_013
text: "Chalk marks on the wall. Low, deliberate. Not maintenance notation — wrong color."
trigger: observe_anomaly
tags: [investigation, evidence]
- id: maintenance-corridors_m_d_014
text: "This corridor connects bay four to temp storage. Bypasses the main freight floor entirely."
trigger: enter_location
tags: [investigation, operational]
- id: maintenance-corridors_m_d_015
text: "Footsteps ahead. Single set, moving fast. Someone who knows where they're going."
trigger: hear_sound
tags: [investigation, caution]
- id: maintenance-corridors_m_d_016
text: "The temp storage access from this side isn't logged on the manifest system. Blind spot."
trigger: observe_anomaly
tags: [investigation, evidence]
# --- Knowledge-Gated Lines ---
- id: maintenance-corridors_m_d_017
text: "The cargo scuff pattern matches bay four containers. Dock to corridor to storage — the route."
trigger: observe_anomaly
prerequisites:
facts:
- fact_id: smuggling_route
min_confidence: suspects
priority: 8
tags: [investigation, evidence, breakthrough]
- id: maintenance-corridors_m_d_018
text: "Those chalk marks match the courier's timing. Renn's route markers, if I had to guess."
trigger: observe_anomaly
prerequisites:
facts:
- fact_id: renn_courier_role
min_confidence: knows_of
priority: 7
tags: [npc, renn, investigation, evidence]
- id: maintenance-corridors_m_d_019
text: "Camera blind spot at junction C-2. Coincidence, or someone mapped the coverage?"
trigger: observe_anomaly
prerequisites:
facts:
- fact_id: surveillance_gaps
min_confidence: suspects
tags: [investigation, operational]
- id: maintenance-corridors_m_d_020
text: "Standard container, no manifest checkpoint along this route. That's the gap."
trigger: time_idle
prerequisites:
facts:
- fact_id: smuggling_route
min_confidence: knows_details
priority: 9
tags: [investigation, breakthrough]
- id: maintenance-corridors_m_d_021
text: "Hatch lubricant is fresh. Someone's maintaining this access point. Not station maintenance."
trigger: observe_anomaly
prerequisites:
facts:
- fact_id: corridor_regular_use
min_confidence: knows_of
tags: [investigation, evidence]
- id: maintenance-corridors_m_d_022
text: "Davan was seen near B-7 during off-shift. Cross-reference with container movements."
trigger: time_idle
prerequisites:
facts:
- fact_id: kael_corridor_sighting
min_confidence: suspects
priority: 7
tags: [npc, kael, investigation]
- id: maintenance-corridors_m_d_023
text: "Two access routes, one manifest checkpoint. Someone designed this gap. Or discovered it."
trigger: time_idle
prerequisites:
facts:
- fact_id: oversight_gap_pattern
min_confidence: knows_details
tags: [investigation, analytical]
- id: maintenance-corridors_m_d_024
text: "Rosta's gambling debt gives me leverage. But using it makes me the authority they resent."
trigger: time_idle
prerequisites:
facts:
- fact_id: drin_gambling_debt
min_confidence: knows_details
priority: 6
tags: [npc, drin, investigation, moral]
- id: maintenance-corridors_m_d_025
text: "Evidence is accumulating. Names, routes, timing. But I still can't see the full picture."
trigger: time_idle
prerequisites:
facts:
- fact_id: ring_existence
min_confidence: suspects
tags: [investigation, reflection]
@@ -1,2 +1,202 @@
# TODO: Revise structure when automatic dialogue/monologue generators mature (D-028 Tier 2).
# Monologue: detective at the-last-shift
character: detective
location: the-last-shift
lines:
# --- Arrival + Environmental Flavor ---
- id: the-last-shift_m_d_001
text: "The Last Shift. Only place in this district that doesn't smell like freight lubricant."
trigger: enter_location
tags: [arrival, atmospheric]
- id: the-last-shift_m_d_002
text: "Grain spirit and low conversation. The social nexus of Sova Transit."
trigger: enter_location
tags: [arrival, analytical]
- id: the-last-shift_m_d_003
text: "Bar's busy tonight. Good — crowds talk. Bad — they notice outsiders."
trigger: enter_location
tags: [arrival, investigation]
- id: the-last-shift_m_d_004
text: "Standard district bar. Prefab fixtures, aftermarket lighting, a menu board nobody reads."
trigger: enter_location
tags: [arrival, environmental]
- id: the-last-shift_m_d_005
text: "The Meridian feed on the wall display. Local news, freight indices, Assembly coverage."
trigger: enter_location
tags: [environmental]
- id: the-last-shift_m_d_006
text: "The overhead vent rattles every thirty seconds. Like clockwork. Nobody else notices."
trigger: hear_sound
tags: [environmental]
- id: the-last-shift_m_d_007
text: "The conversation volume dropped when I walked in. Recovering now. They're adjusting."
trigger: enter_location
tags: [social, investigation]
- id: the-last-shift_m_d_008
text: "Back at the bar. Same booth. Let's see who's here and who isn't."
trigger: return_visit
tags: [arrival, analytical]
- id: the-last-shift_m_d_009
text: "Kitchen's running. Fried protein and something spiced. The bar's other currency: hot food."
trigger: enter_location
tags: [environmental, atmospheric]
- id: the-last-shift_m_d_010
text: "Someone carved initials into this table. Old. A history I don't have."
trigger: time_idle
tags: [environmental, reflection]
# --- NPC Commentary ---
- id: the-last-shift_m_d_011
text: "The bartender — Sessik, L. Knows everyone. Watches everything. Gives away nothing."
trigger: observe_npc
tags: [npc, lera, analytical]
- id: the-last-shift_m_d_012
text: "Good to see Sera. At least someone in this district speaks my language."
trigger: observe_npc
tags: [npc, sera, warm]
- id: the-last-shift_m_d_013
text: "Lintar, T. — the loud one at the bar. Spends freely. Where's the money from?"
trigger: observe_npc
tags: [npc, torek, investigation]
- id: the-last-shift_m_d_014
text: "A woman at the corner table — Tamm, N., according to Sera. Davan's partner."
trigger: observe_npc
tags: [npc, naia, analytical]
- id: the-last-shift_m_d_015
text: "The regulars have assigned seating. Unofficial, but enforced. I don't have a spot yet."
trigger: observe_npc
tags: [social, atmospheric]
- id: the-last-shift_m_d_016
text: "Sessik greeted three people by name since I sat down. I got a nod. Progress."
trigger: witness_interaction
tags: [npc, lera, social]
- id: the-last-shift_m_d_017
text: "Two dock workers in the corner. Heads close, voices low. Not unusual for after-shift."
trigger: witness_interaction
tags: [social, investigation]
- id: the-last-shift_m_d_018
text: "Sera introduced me to Tamm. Brief, polite, guarded. Expected."
trigger: post_conversation
tags: [npc, sera, naia, social]
- id: the-last-shift_m_d_019
text: "Sessik poured my drink without asking. She remembered. Small thing, but noted."
trigger: observe_npc
tags: [npc, lera, social, warm]
- id: the-last-shift_m_d_020
text: "The old man by the window hasn't spoken to anyone all evening. Watching, though."
trigger: observe_npc
tags: [social, atmospheric]
# --- Knowledge-Gated Lines ---
- id: the-last-shift_m_d_021
text: "Sera left when Torek arrived. Second time. Different excuse. Same result."
trigger: observe_anomaly
prerequisites:
facts:
- fact_id: sera_avoidance_pattern
min_confidence: suspects
priority: 7
tags: [npc, sera, torek, tell, friend-arc]
- id: the-last-shift_m_d_022
text: "That's the third time. Three excuses, one result. That's data."
trigger: observe_anomaly
prerequisites:
facts:
- fact_id: sera_avoidance_pattern
min_confidence: knows_of
priority: 9
tags: [npc, sera, torek, tell, friend-arc, contradiction]
- id: the-last-shift_m_d_023
text: "Lintar's spending doesn't match a dock worker's salary. Source unknown."
trigger: observe_npc
prerequisites:
facts:
- fact_id: torek_spending_pattern
min_confidence: knows_of
tags: [npc, torek, investigation]
- id: the-last-shift_m_d_024
text: "Sessik's eyes tracked me when I sat near the back room. Protective, not hostile."
trigger: observe_npc
prerequisites:
facts:
- fact_id: bar_back_room_significance
min_confidence: suspects
tags: [npc, lera, investigation]
- id: the-last-shift_m_d_025
text: "Sera's being extra helpful tonight. Names, backgrounds, context. Compensating?"
trigger: post_conversation
prerequisites:
relationship:
target: sera_venn
state: person_of_interest
priority: 7
tags: [npc, sera, friend-arc, behavioral]
- id: the-last-shift_m_d_026
text: "Same booth. Same warm smile. Same offer to buy me a drink. Everything except the truth."
trigger: observe_npc
prerequisites:
relationship:
target: sera_venn
state: person_of_interest
priority: 8
tags: [npc, sera, contaminated-trust, friend-arc]
- id: the-last-shift_m_d_027
text: "Tamm seems distressed tonight. Not her baseline. Something at home, or something she heard?"
trigger: observe_npc
prerequisites:
relationship:
target: naia_tamm
state: known
tags: [npc, naia, behavioral]
- id: the-last-shift_m_d_028
text: "Sessik just redirected a conversation away from freight schedules. Protective reflex?"
trigger: witness_interaction
prerequisites:
facts:
- fact_id: bar_ring_awareness
min_confidence: suspects
tags: [npc, lera, investigation]
- id: the-last-shift_m_d_029
text: "Davan and his partner at the bar. She's talking. He's not listening. Noted."
trigger: witness_interaction
prerequisites:
relationship:
target: kael_davan
state: known
tags: [npc, kael, naia, behavioral]
- id: the-last-shift_m_d_030
text: "The regulars are warming up. Three visits and I'm almost furniture. Almost."
trigger: return_visit
prerequisites:
facts:
- fact_id: bar_regular_status
min_confidence: knows_of
tags: [social, progress]
@@ -1,2 +1,234 @@
# TODO: Revise structure when automatic dialogue/monologue generators mature (D-028 Tier 2).
# Monologue: detective at the-terminal
character: detective
location: the-terminal
lines:
# --- Arrival + Environmental Flavor ---
- id: the-terminal_m_d_001
text: "Logistics hub. Standard prefab, heavy foot traffic. Let's see what the shift change tells me."
trigger: enter_location
tags: [arrival, analytical]
- id: the-terminal_m_d_002
text: "Sixteen bays, four loading arms, one manifest board. Everything routes through here."
trigger: enter_location
tags: [arrival, orientation]
- id: the-terminal_m_d_003
text: "Cargo lubricant and recycled air. The smell of honest work. Or a convincing imitation."
trigger: enter_location
tags: [arrival, atmospheric]
- id: the-terminal_m_d_004
text: "Loading arm three has a grind in its cycle. Maintenance deferred — budget, or negligence?"
trigger: hear_sound
tags: [environmental, analytical]
- id: the-terminal_m_d_005
text: "Shift change in twenty minutes. The handover period is where oversight gets thin."
trigger: time_idle
tags: [investigation, operational]
- id: the-terminal_m_d_006
text: "The manifest board updates in real-time. Container movement, weight, destination. All logged."
trigger: enter_location
tags: [environmental, orientation]
- id: the-terminal_m_d_007
text: "Heavy foot traffic at shift change. Good — observation is easier in a crowd."
trigger: enter_location
tags: [arrival, investigation]
- id: the-terminal_m_d_008
text: "Containers stacked to regulation height in most bays. Bay four is the exception."
trigger: observe_anomaly
tags: [environmental, investigation]
- id: the-terminal_m_d_009
text: "Back at the hub. Different shift, different faces. Same manifest board."
trigger: return_visit
tags: [arrival]
- id: the-terminal_m_d_010
text: "The dock lights are running half-cycle. Saves power. Also reduces visibility."
trigger: enter_location
tags: [environmental, analytical]
- id: the-terminal_m_d_011
text: "Something in the air beyond the lubricant. Chemical, faint. Not standard freight residue."
trigger: enter_location
tags: [environmental, investigation]
- id: the-terminal_m_d_012
text: "Overhead conveyor running at capacity. The manifest says otherwise. Interesting."
trigger: hear_sound
tags: [environmental, investigation]
# --- NPC Commentary ---
- id: the-terminal_m_d_013
text: "Shift supervisor Voss. Tense posture, checking the dock more than the schedule."
trigger: observe_npc
tags: [npc, voss, behavioral]
- id: the-terminal_m_d_014
text: "Korr, M. — freight scheduler. Efficient, focused. Either very good or very careful."
trigger: observe_npc
tags: [npc, maret, analytical]
- id: the-terminal_m_d_015
text: "Rosta, D. — dock inspector. Quick checks, minimal documentation. That's a pattern."
trigger: observe_npc
tags: [npc, drin, investigation]
- id: the-terminal_m_d_016
text: "Dock worker. Davan, K. Unremarkable on paper. But he knows the bay layout cold."
trigger: observe_npc
tags: [npc, kael]
- id: the-terminal_m_d_017
text: "Conversations stop when I pass. Standard response to Commission presence. Expected."
trigger: witness_interaction
tags: [social, investigation]
- id: the-terminal_m_d_018
text: "Two workers talking by bay six. One sees me, taps the other. Both go quiet."
trigger: witness_interaction
tags: [social, investigation]
- id: the-terminal_m_d_019
text: "Voss gave Davan a look across the bay. Brief. Loaded. Filing it."
trigger: witness_interaction
tags: [npc, voss, kael, behavioral]
- id: the-terminal_m_d_020
text: "The courier — Renn — moves fast. Efficient routing. Knows these corridors well."
trigger: observe_npc
tags: [npc, renn, analytical]
- id: the-terminal_m_d_021
text: "New shift starting. Different bodies, same avoidance radius around me."
trigger: observe_npc
tags: [social, atmospheric]
- id: the-terminal_m_d_022
text: "Rosta's inspection of bay four took forty seconds. The others: three minutes each."
trigger: observe_npc
tags: [npc, drin, investigation, behavioral]
- id: the-terminal_m_d_023
text: "Voss deflected when I asked about overnight containers. Smooth, but I caught it."
trigger: post_conversation
tags: [npc, voss, investigation]
- id: the-terminal_m_d_024
text: "Korr won't make eye contact. Not hostility — something else. Anxiety, maybe."
trigger: observe_npc
tags: [npc, maret, behavioral]
# --- Knowledge-Gated Lines ---
- id: the-terminal_m_d_025
text: "Davan's lattice activity spiked. Expecting a message? Or checking for surveillance?"
trigger: observe_anomaly
prerequisites:
relationship:
target: kael_davan
state: known
tags: [npc, kael, behavioral, tell]
- id: the-terminal_m_d_026
text: "Container 4471. Logged for temp storage overnight. Turnaround should be sub-eight hours."
trigger: observe_anomaly
prerequisites:
facts:
- fact_id: manifest_discrepancy
min_confidence: knows_of
priority: 7
tags: [investigation, evidence]
- id: the-terminal_m_d_027
text: "Weight discrepancy on the bay four manifest. Point-three kilos over declared. Noted."
trigger: observe_anomaly
prerequisites:
facts:
- fact_id: manifest_discrepancy
min_confidence: suspects
tags: [investigation, evidence]
- id: the-terminal_m_d_028
text: "Rosta's gambling debts are in the case file. Leverage, if I need it. Do I need it?"
trigger: time_idle
prerequisites:
facts:
- fact_id: drin_gambling_debt
min_confidence: knows_details
tags: [npc, drin, investigation, moral]
- id: the-terminal_m_d_029
text: "Three names keep appearing near the anomalous manifests: Voss, Davan, Renn. Coincidence?"
trigger: time_idle
prerequisites:
facts:
- fact_id: manifest_discrepancy
min_confidence: knows_of
priority: 7
tags: [investigation, analytical]
- id: the-terminal_m_d_030
text: "The shift transition creates a twenty-minute gap in active oversight. Every cycle."
trigger: time_idle
prerequisites:
facts:
- fact_id: oversight_gap_pattern
min_confidence: knows_details
priority: 7
tags: [investigation, operational]
- id: the-terminal_m_d_031
text: "Korr changed the schedule after our conversation. Covering tracks, or just doing her job?"
trigger: observe_anomaly
prerequisites:
entity_attributes:
- entity: maret_korr
key: behavior_flags
value: schedule_modification
tags: [npc, maret, investigation]
- id: the-terminal_m_d_032
text: "Rosta inspects everything else by the book. Bay four is the exception. That's the tell."
trigger: observe_npc
prerequisites:
facts:
- fact_id: drin_inspection_pattern
min_confidence: knows_of
priority: 8
tags: [npc, drin, investigation, behavioral]
- id: the-terminal_m_d_033
text: "Davan's at an unusual terminal. Not his assigned bay. Why the move?"
trigger: observe_anomaly
prerequisites:
relationship:
target: kael_davan
state: known
tags: [npc, kael, investigation]
- id: the-terminal_m_d_034
text: "Voss is watching me watch his people. He knows what I'm here for."
trigger: observe_npc
prerequisites:
facts:
- fact_id: voss_awareness
min_confidence: suspects
priority: 6
tags: [npc, voss, investigation]
- id: the-terminal_m_d_035
text: "The routing logs and the physical movement don't match. Someone's hand-editing."
trigger: discover_evidence
prerequisites:
facts:
- fact_id: manifest_discrepancy
min_confidence: knows_details
priority: 9
tags: [investigation, evidence, breakthrough]
@@ -1,2 +1,52 @@
# TODO: Revise structure when automatic dialogue/monologue generators mature (D-028 Tier 2).
# Monologue: smuggler at general
character: smuggler
location: general
lines:
- id: general_m_s_001
text: "Another day on Sova. Same air, same hum, same faces."
trigger: enter_location
tags: [arrival, atmospheric]
- id: general_m_s_002
text: "The span gate hum's louder today. Maintenance hasn't touched it in weeks."
trigger: hear_sound
tags: [environmental]
- id: general_m_s_003
text: "Twenty minutes between shifts. That's the window. Always has been."
trigger: time_idle
tags: [operational, orientation]
- id: general_m_s_004
text: "People talk about leaving Sova. Nobody actually does."
trigger: time_idle
tags: [reflection]
- id: general_m_s_005
text: "Two years of this. Still not used to the gate vibration in my teeth."
trigger: hear_sound
tags: [environmental, personal]
- id: general_m_s_006
text: "The money's good. The risk's manageable. Keep telling yourself that."
trigger: time_idle
tags: [reflection, operational]
- id: general_m_s_007
text: "Back again. Same corridors, same shortcuts, same reasons."
trigger: return_visit
tags: [arrival]
- id: general_m_s_008
text: "Commission patrols are thinner this cycle. Good or bad — hard to say."
trigger: observe_anomaly
tags: [operational, caution]
- id: general_m_s_009
text: "If anyone asks, I'm clocking overtime. That's always the story."
trigger: time_idle
tags: [operational, cover]
- id: general_m_s_010
text: "Recycled air tastes different near the outer ring. Sharper. More machine."
trigger: enter_location
tags: [environmental, atmospheric]
@@ -1,2 +1,170 @@
# TODO: Revise structure when automatic dialogue/monologue generators mature (D-028 Tier 2).
# Monologue: smuggler at maintenance-corridors
character: smuggler
location: maintenance-corridors
lines:
# --- Arrival + Environmental Flavor ---
- id: maintenance-corridors_m_s_001
text: "Service corridor. Dim lights, damp walls, and the constant drip of condensation."
trigger: enter_location
tags: [arrival, atmospheric]
- id: maintenance-corridors_m_s_002
text: "Cooler down here. The ventilation doesn't reach this far."
trigger: enter_location
tags: [environmental, atmospheric]
- id: maintenance-corridors_m_s_003
text: "The access panel's still loose. Good — our route's intact."
trigger: enter_location
tags: [arrival, operational]
- id: maintenance-corridors_m_s_004
text: "Pipes groaning overhead. Station's old. These corridors are older."
trigger: hear_sound
tags: [environmental, atmospheric]
- id: maintenance-corridors_m_s_005
text: "Water recycling rumbles through the walls down here. Constant."
trigger: hear_sound
tags: [environmental]
- id: maintenance-corridors_m_s_006
text: "Back in the maintenance tunnels. Rust and coolant."
trigger: return_visit
tags: [arrival, atmospheric]
- id: maintenance-corridors_m_s_007
text: "Emergency lighting only. Just enough to see where you're going."
trigger: enter_location
tags: [environmental]
- id: maintenance-corridors_m_s_008
text: "Footsteps echo different down here. You learn to listen."
trigger: hear_sound
tags: [environmental, operational]
# --- NPC + Operational ---
- id: maintenance-corridors_m_s_009
text: "Renn's chalk marks on the wall. Route's been used recently."
trigger: observe_anomaly
tags: [operational, renn]
- id: maintenance-corridors_m_s_010
text: "Someone left a crate at junction B-4. Not one of ours."
trigger: observe_anomaly
tags: [operational, caution]
- id: maintenance-corridors_m_s_011
text: "The temp storage hatch is warm. Cargo cycled through recently."
trigger: enter_location
tags: [operational]
- id: maintenance-corridors_m_s_012
text: "Scratches on the lock plate. Someone's been forcing this access point."
trigger: observe_anomaly
tags: [environmental, caution]
- id: maintenance-corridors_m_s_013
text: "Timer says twelve minutes until the oversight gap closes. Plenty."
trigger: time_idle
tags: [operational]
- id: maintenance-corridors_m_s_014
text: "That's Renn's jacket on the pipe junction. He was here."
trigger: observe_anomaly
tags: [npc, renn, operational]
- id: maintenance-corridors_m_s_015
text: "Voices echoing from the junction. Can't make out words yet."
trigger: hear_sound
tags: [caution]
- id: maintenance-corridors_m_s_016
text: "The route through B-section is clear. Voss kept his word."
trigger: enter_location
tags: [operational, voss]
# --- Knowledge-Gated Lines ---
- id: maintenance-corridors_m_s_017
text: "Corridor B-7. This is where I saw Kael. With someone I don't know."
trigger: enter_location
prerequisites:
facts:
- fact_id: kael_corridor_meeting
min_confidence: suspects
priority: 8
tags: [npc, kael, contradiction, friend-arc]
- id: maintenance-corridors_m_s_018
text: "Fresh boot prints in the dust. Two sets. Different sizes."
trigger: observe_anomaly
prerequisites:
facts:
- fact_id: kael_corridor_meeting
min_confidence: suspects
tags: [evidence, kael, friend-arc]
- id: maintenance-corridors_m_s_019
text: "New scratch marks on the service hatch. Someone's using our route."
trigger: observe_anomaly
prerequisites:
facts:
- fact_id: ring_route_compromise
min_confidence: suspects
priority: 7
tags: [operational, caution]
- id: maintenance-corridors_m_s_020
text: "The container in temp was supposed to move last shift. It didn't. Why?"
trigger: observe_anomaly
prerequisites:
facts:
- fact_id: container_delay
min_confidence: knows_of
tags: [operational, contraband]
- id: maintenance-corridors_m_s_021
text: "Camera's been repositioned at junction C-2. Who authorized that?"
trigger: observe_anomaly
prerequisites:
facts:
- fact_id: surveillance_change
min_confidence: suspects
priority: 7
tags: [investigation, caution]
- id: maintenance-corridors_m_s_022
text: "If Kael's meeting people down here without telling us, the whole route's exposed."
trigger: time_idle
prerequisites:
facts:
- fact_id: kael_unknown_contact
min_confidence: knows_of
priority: 8
tags: [npc, kael, operational, friend-arc]
- id: maintenance-corridors_m_s_023
text: "Sealed containers don't end up in temp storage by accident. Someone rerouted."
trigger: observe_anomaly
prerequisites:
facts:
- fact_id: ring_routing_knowledge
min_confidence: knows_details
tags: [operational, contraband]
- id: maintenance-corridors_m_s_024
text: "Kael's not answering his lattice. He was supposed to meet me here."
trigger: time_idle
prerequisites:
relationship:
target: kael_davan
state: person_of_interest
priority: 7
tags: [npc, kael, concern, friend-arc]
- id: maintenance-corridors_m_s_025
text: "Someone wiped the dust off this hatch. Recently. Carefully."
trigger: observe_anomaly
tags: [environmental, caution]
@@ -1,2 +1,201 @@
# TODO: Revise structure when automatic dialogue/monologue generators mature (D-028 Tier 2).
# Monologue: smuggler at the-last-shift
character: smuggler
location: the-last-shift
lines:
# --- Arrival + Environmental Flavor ---
- id: the-last-shift_m_s_001
text: "Lera's. Grain spirit and noise. Could use both right now."
trigger: enter_location
tags: [arrival, atmospheric]
- id: the-last-shift_m_s_002
text: "Bar's half full. The after-shift crowd's starting to filter in."
trigger: enter_location
tags: [arrival]
- id: the-last-shift_m_s_003
text: "Lera's got the Meridian feed running. Same headlines, different day."
trigger: enter_location
tags: [arrival, environmental]
- id: the-last-shift_m_s_004
text: "Smells like fried protein and cheap grain spirit. Perfect."
trigger: enter_location
tags: [environmental, atmospheric]
- id: the-last-shift_m_s_005
text: "My booth's free. Small victories."
trigger: enter_location
tags: [arrival, personal]
- id: the-last-shift_m_s_006
text: "The overhead light's still buzzing. Lera says it adds character."
trigger: hear_sound
tags: [environmental]
- id: the-last-shift_m_s_007
text: "Music's louder tonight. Lera's in a good mood, or drowning something out."
trigger: hear_sound
tags: [environmental, atmospheric]
- id: the-last-shift_m_s_008
text: "Back at Lera's. Same booth, same drink, same crowd."
trigger: return_visit
tags: [arrival]
- id: the-last-shift_m_s_009
text: "The ventilation rattles when the kitchen's on. You learn to talk over it."
trigger: hear_sound
tags: [environmental]
- id: the-last-shift_m_s_010
text: "Quiet night at Lera's. Fewer people means fewer ears."
trigger: enter_location
tags: [arrival, operational]
# --- NPC Commentary ---
- id: the-last-shift_m_s_011
text: "Lera's behind the bar. Good — she keeps things steady."
trigger: observe_npc
tags: [npc, lera]
- id: the-last-shift_m_s_012
text: "Kael's at the corner table. Looks relaxed. That's something."
trigger: observe_npc
tags: [npc, kael]
- id: the-last-shift_m_s_013
text: "Torek's buying rounds again. That man doesn't know the word 'discreet.'"
trigger: observe_npc
tags: [npc, torek, caution]
- id: the-last-shift_m_s_014
text: "Sera's here. Commission field tech. She keeps to herself — mostly."
trigger: observe_npc
tags: [npc, sera, commission]
- id: the-last-shift_m_s_015
text: "Naia's laughing at something Lera said. Nice to see her relaxed."
trigger: observe_npc
tags: [npc, naia]
- id: the-last-shift_m_s_016
text: "Old Pael's in his usual spot. Hasn't moved in three hours. Impressive."
trigger: observe_npc
tags: [npc, atmospheric]
- id: the-last-shift_m_s_017
text: "Lera just cut someone off. Smooth about it, but firm."
trigger: witness_interaction
tags: [npc, lera]
- id: the-last-shift_m_s_018
text: "Kael and Naia at the bar. Leaning into each other. They look good together."
trigger: witness_interaction
tags: [npc, kael, naia]
- id: the-last-shift_m_s_019
text: "Voss is drinking alone. Not his usual pace."
trigger: observe_npc
tags: [npc, voss]
- id: the-last-shift_m_s_020
text: "That new face in the corner — been nursing the same drink for an hour."
trigger: observe_npc
tags: [npc, caution]
# --- Knowledge-Gated Lines ---
- id: the-last-shift_m_s_021
text: "Sera left when Torek walked in. Coincidence? Maybe."
trigger: observe_anomaly
prerequisites:
facts:
- fact_id: sera_avoidance_pattern
min_confidence: suspects
tags: [npc, sera, torek, pattern]
- id: the-last-shift_m_s_022
text: "Torek just paid cash credit, not station account. Sloppy."
trigger: observe_npc
prerequisites:
facts:
- fact_id: torek_spending_pattern
min_confidence: knows_of
tags: [npc, torek, operational]
- id: the-last-shift_m_s_023
text: "Lera gave me that look. The one that says 'not here, not now.'"
trigger: post_conversation
prerequisites:
facts:
- fact_id: ring_bar_operations
min_confidence: knows_details
tags: [npc, lera, operational]
- id: the-last-shift_m_s_024
text: "Naia looks tired. Has Kael been coming home late again?"
trigger: observe_npc
prerequisites:
relationship:
target: naia_tamm
state: known
tags: [npc, naia, kael, concern]
- id: the-last-shift_m_s_025
text: "The detective is here. At the bar. My bar."
trigger: observe_npc
prerequisites:
facts:
- fact_id: detective_presence
min_confidence: knows_of
priority: 8
tags: [investigation, caution]
- id: the-last-shift_m_s_026
text: "Sera and the detective sharing a booth. Commission people stick together."
trigger: witness_interaction
prerequisites:
facts:
- fact_id: detective_presence
min_confidence: knows_of
tags: [npc, sera, investigation]
- id: the-last-shift_m_s_027
text: "Kael didn't save my seat tonight. First time in months."
trigger: observe_anomaly
prerequisites:
relationship:
target: kael_davan
state: person_of_interest
priority: 8
tags: [npc, kael, contaminated-trust, friend-arc]
- id: the-last-shift_m_s_028
text: "The back room light's on. Nils is here, then."
trigger: observe_anomaly
prerequisites:
facts:
- fact_id: ring_bar_operations
min_confidence: knows_details
tags: [operational, nils]
- id: the-last-shift_m_s_029
text: "Kael bought Naia a drink but barely looked at her. That's new."
trigger: witness_interaction
prerequisites:
facts:
- fact_id: kael_behavioral_change
min_confidence: suspects
tags: [npc, kael, naia, tell, friend-arc]
- id: the-last-shift_m_s_030
text: "Everyone's a little too quiet tonight. Something happened. I can feel it."
trigger: enter_location
prerequisites:
facts:
- fact_id: ring_tension_escalation
min_confidence: suspects
priority: 7
tags: [atmospheric, caution, operational]
@@ -1,2 +1,235 @@
# TODO: Revise structure when automatic dialogue/monologue generators mature (D-028 Tier 2).
# Monologue: smuggler at the-terminal
character: smuggler
location: the-terminal
lines:
# --- Arrival + Environmental Flavor ---
- id: the-terminal_m_s_001
text: "Morning shift. Recycled air and cargo lubricant. Home sweet home."
trigger: enter_location
tags: [arrival, atmospheric]
- id: the-terminal_m_s_002
text: "The loading arms are cycling. Freight's on schedule — for once."
trigger: enter_location
tags: [arrival, operational]
- id: the-terminal_m_s_003
text: "Shift board's already full. Voss has everyone running double today."
trigger: enter_location
tags: [arrival, operational]
- id: the-terminal_m_s_004
text: "Cargo lubricant and ozone. You'd think I'd stop noticing."
trigger: enter_location
tags: [environmental, atmospheric]
- id: the-terminal_m_s_005
text: "Loading arm three is grinding again. Someone should file that."
trigger: hear_sound
tags: [environmental]
- id: the-terminal_m_s_006
text: "Containers stacked six high in bay four. That's new."
trigger: observe_anomaly
tags: [environmental, operational]
- id: the-terminal_m_s_007
text: "The freight manifest board's flickering. Always flickering."
trigger: enter_location
tags: [environmental]
- id: the-terminal_m_s_008
text: "Dock lights are on half-cycle. Budget cuts again."
trigger: enter_location
tags: [environmental, atmospheric]
- id: the-terminal_m_s_009
text: "Back at the hub. Shift transition in fifty minutes."
trigger: return_visit
tags: [arrival, operational]
- id: the-terminal_m_s_010
text: "Quiet morning. Containers moving, nobody talking. I like it this way."
trigger: enter_location
tags: [arrival, atmospheric]
- id: the-terminal_m_s_011
text: "Bay three's been sealed off. Inspection, or something else?"
trigger: observe_anomaly
tags: [environmental, caution]
- id: the-terminal_m_s_012
text: "The conveyor hums at a different pitch when it's loaded heavy. This one's heavy."
trigger: hear_sound
tags: [environmental, operational]
# --- NPC Commentary ---
- id: the-terminal_m_s_013
text: "Kael's already at the dock. Good. The day's better when he's on shift."
trigger: observe_npc
tags: [npc, kael, warm]
- id: the-terminal_m_s_014
text: "Voss is pacing. Never a good sign."
trigger: observe_npc
tags: [npc, voss, caution]
- id: the-terminal_m_s_015
text: "Maret's got her scheduling face on. Tight lips, fast hands on the terminal."
trigger: observe_npc
tags: [npc, maret]
- id: the-terminal_m_s_016
text: "New face at dock seven. Temp worker, or someone I should know about?"
trigger: observe_npc
tags: [npc, caution]
- id: the-terminal_m_s_017
text: "Drin's at inspection again. Going through the motions, same as always."
trigger: observe_npc
tags: [npc, drin]
- id: the-terminal_m_s_018
text: "Renn's running late. Third time this week."
trigger: observe_npc
tags: [npc, renn, operational]
- id: the-terminal_m_s_019
text: "Voss and Maret talking by the schedule board. Both look tense."
trigger: witness_interaction
tags: [npc, voss, maret]
- id: the-terminal_m_s_020
text: "Kael nodded at me across the bay. Business as usual."
trigger: observe_npc
tags: [npc, kael]
- id: the-terminal_m_s_021
text: "Someone I don't recognize talking to Drin. Drin's smiling. Drin never smiles."
trigger: witness_interaction
tags: [npc, drin, anomaly]
- id: the-terminal_m_s_022
text: "Torek's on the dock. Shouldn't be — his shift ended two hours ago."
trigger: observe_anomaly
tags: [npc, torek, caution]
- id: the-terminal_m_s_023
text: "Nils isn't here yet. That's unusual."
trigger: observe_anomaly
tags: [npc, nils, operational]
- id: the-terminal_m_s_024
text: "Kael's eating alone today. He always eats with me."
trigger: observe_anomaly
tags: [npc, kael, concern]
# --- Knowledge-Gated Lines ---
- id: the-terminal_m_s_025
text: "Kael keeps checking his lattice. Waiting for a message? Not like him to be jumpy."
trigger: observe_anomaly
prerequisites:
relationship:
target: kael_davan
state: friendly
priority: 7
tags: [npc, kael, tell, friend-arc]
- id: the-terminal_m_s_026
text: "Container 4471's been in temp since yesterday. That's not the normal routing."
trigger: observe_anomaly
prerequisites:
facts:
- fact_id: ring_routing_knowledge
min_confidence: knows_details
tags: [operational, contraband]
- id: the-terminal_m_s_027
text: "Voss changed the rotation again. Third time this month. Covering something."
trigger: observe_anomaly
prerequisites:
facts:
- fact_id: voss_ring_involvement
min_confidence: knows_of
tags: [npc, voss, operational]
- id: the-terminal_m_s_028
text: "That detective's back. Asking questions near bay four. Stay calm."
trigger: observe_npc
prerequisites:
facts:
- fact_id: detective_presence
min_confidence: knows_of
priority: 8
tags: [investigation, caution]
- id: the-terminal_m_s_029
text: "Maret hasn't looked at me all shift. She noticed something. I know she did."
trigger: observe_npc
prerequisites:
entity_attributes:
- entity: maret_korr
key: behavior_flags
value: avoidance
priority: 6
tags: [npc, maret, paranoia]
- id: the-terminal_m_s_030
text: "Shift transition in ten. If the route's clean, we move tonight."
trigger: time_idle
prerequisites:
facts:
- fact_id: ring_routing_knowledge
min_confidence: knows_details
tags: [operational, contraband]
- id: the-terminal_m_s_031
text: "Kael was in corridor B-7 last night. Off-shift. Off-route. That's not nothing."
trigger: time_idle
prerequisites:
facts:
- fact_id: kael_corridor_meeting
min_confidence: suspects
priority: 8
tags: [npc, kael, contradiction, friend-arc]
- id: the-terminal_m_s_032
text: "Who was Kael talking to? Not anyone from our rotation. I'd know the face."
trigger: time_idle
prerequisites:
facts:
- fact_id: kael_unknown_contact
min_confidence: suspects
priority: 9
tags: [npc, kael, contradiction, friend-arc]
- id: the-terminal_m_s_033
text: "He looked left before answering. He always looks left when he's lying."
trigger: post_conversation
prerequisites:
facts:
- fact_id: kael_evasion
min_confidence: direct
priority: 9
tags: [npc, kael, tell, friend-arc]
- id: the-terminal_m_s_034
text: "Torek's spending too much at Lera's. Someone's going to notice."
trigger: observe_npc
prerequisites:
facts:
- fact_id: torek_spending_pattern
min_confidence: knows_of
tags: [npc, torek, operational, caution]
- id: the-terminal_m_s_035
text: "Same old Kael. Same jokes, same routine. ...What are you not telling me?"
trigger: post_conversation
prerequisites:
relationship:
target: kael_davan
state: person_of_interest
priority: 9
tags: [npc, kael, contaminated-trust, friend-arc]
@@ -0,0 +1,157 @@
# News ticker headline pool — The Last Shift bar
# Meridian Feed (Krenn System local news network)
# Dual-lens content: each headline reads differently to smuggler vs detective.
# v0.1: static background text. v0.2: cycling ticker system.
location: the-last-shift
feed: meridian
headlines:
# --- Freight / Commodity (6) ---
- id: ticker_001
text: "KRENN FREIGHT INDEX: Lattice components +12% on Syndic supply restrictions"
category: freight
dual_lens:
smuggler: "Prices up. Every run is worth more — and every run is riskier."
detective: "Supply restrictions mean increased black market pressure. Watch for volume spikes."
- id: ticker_002
text: "SOVA DOCKING: Revised rates effective cycle 14 — bulk freight +0.8 cred/tonne"
category: freight
dual_lens:
smuggler: "Costs going up. Nils won't be happy. Margins are already thin."
detective: "Administrative noise. But fee changes affect which routes are economically viable."
- id: ticker_003
text: "ROUTE ADVISORY: Span gate maintenance on Krenn-Havara corridor — 48hr delays"
category: freight
dual_lens:
smuggler: "Havara corridor's down. If Sabel's shipments are routed through there, we wait."
detective: "Transit disruption changes shipping patterns. New routes create new anomalies."
- id: ticker_004
text: "COMMODITY ALERT: Medical-grade neural components — backorder extends to 6 cycles"
category: freight
dual_lens:
smuggler: "Six cycles. People need those replacements now. That's why we do this."
detective: "Extended shortage increases incentive for diversion. Motive for the operation."
- id: ticker_005
text: "FREIGHT QUARTERLY: Sova throughput up 3% year-on-year — transit district credited"
category: freight
dual_lens:
smuggler: "More volume, more cover. Good news for us."
detective: "Increased throughput makes statistical anomalies harder to spot. More noise."
- id: ticker_006
text: "INSURANCE: Premium review for manifest discrepancy incidents — sector-wide audit"
category: freight
dual_lens:
smuggler: "Manifest discrepancies. If the insurers are looking, the Commission's next."
detective: "Insurance sector flagging the same pattern I'm seeing. Independent confirmation."
# --- Assembly Politics (4) ---
- id: ticker_007
text: "ASSEMBLY: Lattice regulation amendments tabled — vote deferred to next session"
category: politics
dual_lens:
smuggler: "Deferred. Status quo holds. The demand stays, the supply stays illegal."
detective: "Regulatory gap continues. No political will to address the root cause."
- id: ticker_008
text: "ASSEMBLY VOTE: Infrastructure bill passes 312-287 — Reach districts gain allocations"
category: politics
dual_lens:
smuggler: "More money for the Reach. Maybe Sova gets a refit. Maybe things change."
detective: "Allocation shifts. New infrastructure means new oversight — or new blind spots."
- id: ticker_009
text: "DELEGATE PROFILE: Rep. Hask (Krenn) calls for Commission oversight review"
category: politics
dual_lens:
smuggler: "Commission oversight review. Could mean more patrols. Could mean fewer. Either way, noise."
detective: "Political pressure on Commission operations. Budget review affects field resources."
- id: ticker_010
text: "POLICY WATCH: Cross-system freight harmonization bill enters second reading"
category: politics
dual_lens:
smuggler: "Harmonization means standardization. Standardization means fewer gaps in the paperwork."
detective: "Cross-system data sharing would connect manifest anomalies across jurisdictions."
# --- Local Infrastructure (4) ---
- id: ticker_011
text: "SOVA STATION: Deck 4 ventilation overhaul — expect cycled air disruptions"
category: infrastructure
dual_lens:
smuggler: "Construction crews on Deck 4. More people in the corridors. Watch the routes."
detective: "Infrastructure work. Construction means altered access patterns."
- id: ticker_012
text: "TRANSIT: Corridor B maintenance scheduled cycle 16-18 — alternate routing posted"
category: infrastructure
dual_lens:
smuggler: "Corridor B. That's our route. Maintenance means official access. We shut down for three cycles."
detective: "Scheduled maintenance on a corridor near the freight bays. Who requested it?"
- id: ticker_013
text: "WATER RECYCLING: Stage 2 filter replacement ahead of schedule — capacity at 97%"
category: infrastructure
dual_lens:
smuggler: "Good. One less thing to worry about."
detective: "Infrastructure baseline. Station systems functioning normally."
- id: ticker_014
text: "POWER GRID: Outer ring voltage fluctuations traced to span gate resonance"
category: infrastructure
dual_lens:
smuggler: "Voltage fluctuations in the outer ring. Cameras might glitch. Useful."
detective: "Power issues could affect surveillance systems. Note the timing."
# --- Sports (3) ---
- id: ticker_015
text: "GRAV-BALL: Sova Drifters fall to Havara United 3-1 — playoff hopes dim"
category: sports
dual_lens:
smuggler: "Drifters lost again. Lera's going to be in a mood."
detective: "Sports. The universal social lubricant. File under 'conversation openers.'"
- id: ticker_016
text: "LEAGUE TABLE: Krenn Conference — Sova 4th, Mirren Station leads"
category: sports
dual_lens:
smuggler: "Fourth. We were second last season. This place is sliding."
detective: "Local standings. Note who cares about the Drifters — it's a belonging marker."
- id: ticker_017
text: "HIGHLIGHT: Drifters' Pael Tev named to All-Reach reserve squad"
category: sports
dual_lens:
smuggler: "Tev made the reserves. Good for him. At least someone's getting out."
detective: "The name Tev — any relation to dock personnel? Check roster."
# --- Commission Advisories (3) ---
- id: ticker_018
text: "COMMISSION: Manifest compliance audits scheduled — Sova Transit, cycles 15-20"
category: commission
dual_lens:
smuggler: "Compliance audits. Cycle 15. That's five cycles from now. We need to be clean by then."
detective: "Scheduled audits. Standard, but the timing aligns with my investigation window."
- id: ticker_019
text: "ADVISORY: Unlicensed lattice modifications carry Category 3 penalties — report anonymously"
category: commission
dual_lens:
smuggler: "Category 3. Years in detention. Same poster, same message, same empty threat. Until it isn't."
detective: "Public messaging campaign. Commission HQ wants visible enforcement. Pressure from above."
- id: ticker_020
text: "ENFORCEMENT: Commission confirms 'routine assessment' of Reach freight operations"
category: commission
dual_lens:
smuggler: "'Routine assessment.' Is that the detective? Is that why he's here?"
detective: "That's my cover story. Or headquarters' way of telling me the clock is running."