diff --git a/content/campaigns/main/systems/krenn/stations/sova/districts/transit/dialogue/maintenance-corridors/transit-worker.yaml b/content/campaigns/main/systems/krenn/stations/sova/districts/transit/dialogue/maintenance-corridors/transit-worker.yaml new file mode 100644 index 000000000..fce0e3a83 --- /dev/null +++ b/content/campaigns/main/systems/krenn/stations/sova/districts/transit/dialogue/maintenance-corridors/transit-worker.yaml @@ -0,0 +1,77 @@ +# Dialogue: transit-worker at Maintenance Corridors +# NPC: Tev Osel (Tier 3, NOBODY/CIVILIAN) +# Voice: patient, mildly distracted, confused why anyone is asking him anything. +# KEY LINE: maintenance-corridors_d_001 — sounds like surveillance positioning inquiry +# Actually: Tev missed Kosse at the corridor junction and is looking for them +# Ticket: #307 | Sprint: 12 + +location: maintenance-corridors +role: transit-worker +lines: + + # ========================================== + # "SEEMS IMPORTANT BUT ISN'T" LINE + # Sounds like Tev is checking who came through a surveillance point. + # Actually: Tev missed his partner at the regular meeting spot. + # ========================================== + + - id: maintenance-corridors_d_001 + text: "You see which way Kosse went? Should've been through here twenty minutes ago." + role: transit-worker + access: [public] + trust: surface + situation: [routine, observation] + topic: [colleague, personal] + mood: [comfortable] + tags: [tev, seems-important-but-isnt, waiting, kosse] + dual_lens: + smuggler: "Someone asking who came through the corridor. Tev. Harmless — checking for a partner." + detective: "NPC at corridor junction, tracking who passed through. Possible lookout. Follow up: who is Kosse?" + notes: > + THE key flat NPC line for Tev. Sounds like Tev monitors corridor traffic + for operational reasons. Is someone who missed a meeting time with their + partner. The detective's suspicion is reasonable; it resolves to nothing. + + # ========================================== + # ROUTINE LINES + # ========================================== + + - id: maintenance-corridors_d_002 + text: "They shifted the freight route again. Always forget which junction." + role: transit-worker + access: [public] + trust: surface + situation: [routine] + topic: [routine, cargo] + mood: [comfortable] + tags: [tev, atmospheric] + + - id: maintenance-corridors_d_003 + text: "Just on break. Out of your way in a minute." + role: transit-worker + access: [public] + trust: surface + situation: [routine] + topic: [routine] + mood: [comfortable] + tags: [tev, incidental] + + - id: maintenance-corridors_d_004 + text: "Late freight route runs long. Can't do anything about it." + role: transit-worker + access: [public] + trust: surface + situation: [routine, night_shift] + topic: [routine, cargo] + mood: [comfortable] + tags: [tev, atmospheric] + + - id: maintenance-corridors_d_005 + text: "Waiting for someone. Shouldn't be long." + role: transit-worker + access: [public] + trust: surface + situation: [routine, observation] + topic: [personal] + mood: [comfortable] + tags: [tev, waiting] diff --git a/content/campaigns/main/systems/krenn/stations/sova/districts/transit/dialogue/the-last-shift/day-worker.yaml b/content/campaigns/main/systems/krenn/stations/sova/districts/transit/dialogue/the-last-shift/day-worker.yaml new file mode 100644 index 000000000..73ae54d50 --- /dev/null +++ b/content/campaigns/main/systems/krenn/stations/sova/districts/transit/dialogue/the-last-shift/day-worker.yaml @@ -0,0 +1,90 @@ +# Dialogue: day-worker at The Last Shift +# NPC: Ren Tosse (Tier 3, NOBODY/CIVILIAN) +# Voice: casual-observant, asks questions without social friction. Just drifting. +# KEY LINE: the-last-shift_d_001 — sounds like intel gathering on night operations +# Actually: asking about after-hours freight work availability +# Ticket: #307 | Sprint: 12 + +location: the-last-shift +role: day-worker +lines: + + # ========================================== + # "SEEMS IMPORTANT BUT ISN'T" LINE + # Sounds like Ren is casing night shift operations. + # Actually: asking if there's paid after-hours freight work available. + # ========================================== + + - id: the-last-shift_d_001 + text: "Night rotation still short-handed? Heard the after-hours freight pays decent." + role: day-worker + access: [public] + trust: surface + situation: [bar_evening, social] + topic: [money, cargo] + mood: [comfortable] + tags: [ren, seems-important-but-isnt, job-seeking, night-shift] + dual_lens: + smuggler: "Someone asking about the night rotation. Probably nothing. Watch them anyway." + detective: "Interest in night shift freight operations. Drifter, irregular schedule. Logging." + notes: > + THE key flat NPC line for Ren. Sounds like Ren is interested in the + night operation window for operational reasons. Is standard day-worker + job-seeking: which shift has openings, which shift pays best. + + # ========================================== + # ROUTINE LINES + # ========================================== + + - id: the-last-shift_d_002 + text: "Bay seven any better this cycle? The super was a problem last time." + role: day-worker + access: [public] + trust: surface + situation: [social, bar_evening] + topic: [routine, colleague] + mood: [comfortable] + tags: [ren, job-seeking] + + - id: the-last-shift_d_003 + text: "Sova's decent. Station layout makes sense once you learn it." + role: day-worker + access: [public] + trust: surface + situation: [social, bar_evening] + topic: [routine] + mood: [comfortable] + tags: [ren, atmospheric] + + - id: the-last-shift_d_004 + text: "Just passing through. Maybe not. Depends on the work." + role: day-worker + access: [public] + trust: surface + situation: [social] + topic: [personal, routine] + mood: [comfortable] + tags: [ren, drifter] + + - id: the-last-shift_d_005 + text: "Cheap drink here's better than most stations I've stopped at." + role: day-worker + access: [public] + trust: surface + situation: [bar_evening, social] + topic: [personal] + mood: [comfortable] + tags: [ren, atmospheric] + + - id: the-last-shift_d_006 + text: "Any idea when the manifest deadline runs? Trying to time when the work window opens." + role: day-worker + access: [public] + trust: surface + situation: [social, bar_evening] + topic: [cargo, routine] + mood: [comfortable] + tags: [ren, seems-important-but-isnt, job-seeking] + notes: > + Second "seems important" line. Asking about manifest deadlines sounds + like operational intelligence. Is logistics scheduling for day work. diff --git a/content/campaigns/main/systems/krenn/stations/sova/districts/transit/dialogue/the-terminal/maintenance-tech.yaml b/content/campaigns/main/systems/krenn/stations/sova/districts/transit/dialogue/the-terminal/maintenance-tech.yaml new file mode 100644 index 000000000..04a97e3bb --- /dev/null +++ b/content/campaigns/main/systems/krenn/stations/sova/districts/transit/dialogue/the-terminal/maintenance-tech.yaml @@ -0,0 +1,86 @@ +# Dialogue: maintenance-tech at The Terminal +# NPC: Pael Varren (Tier 3, NOBODY/CIVILIAN) +# Voice: tired-competent, minimal, dry. Knows the infrastructure. Knows nothing else. +# KEY LINE: the-terminal_d_040 — sounds like surveillance knowledge, is a maintenance complaint +# Ticket: #307 | Sprint: 12 + +location: the-terminal +role: maintenance-tech +lines: + + # ========================================== + # "SEEMS IMPORTANT BUT ISN'T" LINE + # Sounds like Pael monitors corridor traffic for a reason. + # Actually: the B-7 seal fails when people use the corridor too much. Pael notices load. + # ========================================== + + - id: the-terminal_d_040 + text: "B-7's had three seal failures this cycle. Someone's been through there more than they should." + role: maintenance-tech + access: [public] + trust: surface + situation: [routine] + topic: [routine] + mood: [comfortable] + tags: [pael, seems-important-but-isnt, maintenance, b7] + dual_lens: + smuggler: "Pael knows the corridor's been used. But Pael knows nothing — this is an HVAC complaint." + detective: "Corridor B-7 traffic. A maintenance tech noticing irregular use. Unreliable but worth noting." + notes: > + THE key flat NPC line for Pael. Sounds like environmental intelligence. + Is a complaint about a recurring seal failure caused by foot traffic. + Pael doesn't know what the traffic is from. Never will. + + # ========================================== + # ROUTINE LINES + # ========================================== + + - id: the-terminal_d_041 + text: "Air recycler's running hot again. Third deferred ticket this week." + role: maintenance-tech + access: [public] + trust: surface + situation: [routine] + topic: [routine] + mood: [comfortable] + tags: [pael, atmospheric] + + - id: the-terminal_d_042 + text: "Loading arm three's been on my list for a month. Management keeps deferring it." + role: maintenance-tech + access: [public] + trust: surface + situation: [routine] + topic: [routine] + mood: [comfortable] + tags: [pael, atmospheric] + + - id: the-terminal_d_043 + text: "If the gate tone shifts, stay clear of bay six. She needs recalibration." + role: maintenance-tech + access: [public] + trust: surface + situation: [routine] + topic: [routine] + mood: [comfortable] + tags: [pael, warning, helpful] + + - id: the-terminal_d_044 + text: "Not me. I just fix them." + role: maintenance-tech + access: [public] + trust: surface + situation: [routine, social] + topic: [routine] + mood: [comfortable] + tags: [pael, response] + + - id: the-terminal_d_045 + text: "Gate hum's been three cycles off-spec. Nobody cares until it stops completely." + role: maintenance-tech + access: [public] + trust: surface + situation: [routine] + topic: [routine] + mood: [comfortable] + tags: [pael, atmospheric] diff --git a/content/campaigns/main/systems/krenn/stations/sova/districts/transit/environmental/maintenance-corridors.yaml b/content/campaigns/main/systems/krenn/stations/sova/districts/transit/environmental/maintenance-corridors.yaml new file mode 100644 index 000000000..28e1704a9 --- /dev/null +++ b/content/campaigns/main/systems/krenn/stations/sova/districts/transit/environmental/maintenance-corridors.yaml @@ -0,0 +1,195 @@ +# Environmental Text: Maintenance Corridors +# Signs, terminals, documents, readable objects. +# Investigation-heavy. This is where the operational evidence lives. +# Ticket: #262 | Sprint: 12 + +location: maintenance-corridors +items: + + # ========================================== + # ACCESS RESTRICTION SIGN — corridor entrance + # ========================================== + + - id: env_corridor_001 + type: sign + label: "Restricted Access Notice" + visibility: always + text: > + RESTRICTED ACCESS — MAINTENANCE PERSONNEL ONLY + + B-CORRIDOR SECTOR — AUTHORIZED ENTRY REQUIRED + + Unauthorized entry subject to Sova Station Authority review. + Commission Order 7741-B applies. + + Report unauthorized personnel to: Station Security (Lattice: SovaStation/Security) + dual_lens: + smuggler: "Nobody calls Station Security for corridor access. Everyone goes through here." + detective: > + Restricted zone, active posting. Unauthorized entry is a violation + of Commission Order 7741-B. If the ring is using this corridor, + they're committing a documented infraction on every run. + tags: [atmospheric, b7-corridor] + + # ========================================== + # MERIDIAN COVERAGE SCHEDULE — posted on corridor wall + # Most investigation-relevant item in the game. + # ========================================== + + - id: env_corridor_002 + type: document + label: "Meridian Scan Schedule" + visibility: examine_only + text: > + MERIDIAN SURVEILLANCE COVERAGE — SOVA TRANSIT DISTRICT + MAINTENANCE CORRIDOR SECTOR — CURRENT CYCLE + + Active coverage windows (full corridor monitoring): + 06:00-07:30 | 10:00-11:00 | 14:00-15:30 | 22:00-23:00 + + Reduced coverage (perimeter only): + 07:30-10:00 | 11:00-14:00 | 15:30-22:00 | 23:00-06:00 + + NOTE: Span gate maintenance cycles create signal interference. + Coverage gaps during gate calibration: approx 14:20-14:45. + + Posted by: Sova Meridian Network Maintenance Division + dual_lens: + smuggler: > + 14:20-14:45. That's the window. Twenty-five minutes of clean dead zone + during the shift transition. The ring didn't find this. It's posted. + detective: > + Posted surveillance schedule with documented gap. 14:20-14:45 during + shift transition. The ring isn't sophisticated — they're using + publicly posted maintenance data. That means anyone could have + identified this gap. + tags: [investigation-relevant, meridian, surveillance-gap, critical] + knowledge_grant: + fact_id: "location.surveillance_gaps" + confidence: knows_details + + # ========================================== + # MAINTENANCE LOG SHEET — handwritten clipboard at corridor junction + # ========================================== + + - id: env_corridor_003 + type: document + label: "Maintenance Log (B-7 Corridor)" + visibility: examine_only + text: > + B-7 CORRIDOR — MAINTENANCE LOG + Logged by: Pael Varren + + [Month 11, Day 4] + Air scrubber pressure variance. Reset. Source unclear. + + [Month 11, Day 12] + Seal failure B-7 junction. Third occurrence. Replaced again. + Noted: floor wear pattern inconsistent with posted traffic. + Possible deferred maintenance backlog creating additional load. + + [Month 11, Day 22] + Recurring seal failure. Escalated to deferred queue. + NOTE: Pressure sensors reading elevated load during 14:00-15:00 + window. Does not match shift transition foot traffic. + Filed maintenance anomaly report — awaiting management review. + dual_lens: + smuggler: > + Pael's logged the pressure anomaly. It'll sit in the queue. + Management never reviews the anomaly reports. + detective: > + Maintenance anomaly report filed, awaiting management review. + The report documents irregular pressure load during exact operation + window. If management reviews it, the window closes. + tags: [investigation-relevant, b7-corridor, pael, critical] + knowledge_grant: + fact_id: "location.corridor_b7_restricted" + confidence: knows_of + + # ========================================== + # ROUTING DIAGRAM — cargo flow map posted at junction + # ========================================== + + - id: env_corridor_004 + type: sign + label: "Cargo Routing Diagram" + visibility: always + text: > + SOVA TRANSIT — MAINTENANCE CORRIDOR ROUTING + [Technical diagram showing freight flow paths] + + Standard freight path: Bay > Terminal > Surface Storage + Emergency reroute: Bay > B-corridor > Temporary Hold (C-4) + Maintenance access: B-corridor > Service Lift > Environmental Systems + + [Someone has drawn a thin pencil line from Bay 4 to C-4 to + the service lift, bypassing the standard terminal route] + dual_lens: + smuggler: "Someone mapped the reroute. That's not how we were shown it. That's cleaner." + detective: > + Pencil annotation on the official diagram. Whoever added it knows + the layout and took time to trace an alternative route. Not vandalism. + Operational planning. + tags: [investigation-relevant, b7-corridor, smuggling-route] + knowledge_grant: + fact_id: "location.smuggling_route" + confidence: suspects + + # ========================================== + # ENVIRONMENTAL WARNING — recycled air quality + # ========================================== + + - id: env_corridor_005 + type: sign + label: "Environmental Quality Notice" + visibility: always + text: > + CORRIDOR ENVIRONMENTAL STATUS — CURRENT READINGS + + CO2: 0.12% [ACCEPTABLE — upper threshold 0.15%] + Particulate: ELEVATED — see maintenance queue + Temperature: 19.4°C [nominal] + Recycled air freshness: 73% [minimum recommended: 80%] + + If recycled air quality falls below 70%, report to maintenance. + Current status: Monitor. + dual_lens: + smuggler: "Recycled air's worse than the terminal. You get used to it." + detective: "Air quality below recommended. Maintenance deferred. Nobody's prioritizing this corridor." + tags: [atmospheric, environmental] + + # ========================================== + # TEMPORARY STORAGE MANIFEST SHEET + # At the C-4 temporary hold point + # ========================================== + + - id: env_corridor_006 + type: document + label: "Temporary Storage Log (C-4)" + visibility: examine_only + text: > + C-4 TEMPORARY HOLD — CONTENTS LOG + [Printed manifest, partial, two pages visible] + + Container 4466 — Cleared — removed Month 11 Day 1 + Container 4467 — Cleared — removed Month 11 Day 3 + Container 4468 — Cleared — removed Month 11 Day 3 + Container 4469 — [NO ENTRY] + Container 4470 — Cleared — removed Month 11 Day 8 + Container 4471 — [PENDING — entered Month 11 Day 15, no removal logged] + Container 4472 — Cleared — removed Month 11 Day 18 + + [Gap in numbering between 4469-4470 has no explanation column] + dual_lens: + smuggler: > + 4471 is still logged as pending. It should have been moved during + last transition. Either it wasn't, or the log wasn't updated. + Either is a problem. + detective: > + Container 4471 in the C-4 hold log, entered Month 11, no removal + logged. Same container flagged in the terminal manifest. And 4469 + is a gap with no explanation. This is the thread. + tags: [investigation-relevant, container-4471, critical] + knowledge_grant: + fact_id: "investigation.cargo_anomaly" + confidence: knows_of diff --git a/content/campaigns/main/systems/krenn/stations/sova/districts/transit/environmental/the-last-shift.yaml b/content/campaigns/main/systems/krenn/stations/sova/districts/transit/environmental/the-last-shift.yaml new file mode 100644 index 000000000..93050a4e6 --- /dev/null +++ b/content/campaigns/main/systems/krenn/stations/sova/districts/transit/environmental/the-last-shift.yaml @@ -0,0 +1,209 @@ +# Environmental Text: The Last Shift (Bar) +# Signs, terminals, documents, readable objects. +# Atmosphere-heavy. Some investigation relevance through social texture. +# Ticket: #262 | Sprint: 12 + +location: the-last-shift +items: + + # ========================================== + # DRINK MENU — handwritten, scratched-out prices + # Above the bar. Visible to anyone. + # ========================================== + + - id: env_bar_001 + type: sign + label: "Drink Menu" + visibility: always + text: > + THE LAST SHIFT + (Lera's) + + Krenn grain spirit — 4c + Pale station brew — 3c ~~2c~~ + Dark station brew — 3c + Import (off-station) — 8c + Sova standard water — 1c + Meal (hot, whatever's running) — 6c + + No tabs. No Commission business at the bar. + House rules posted. + dual_lens: + smuggler: "Import's doubled since last year. Everything's tighter." + detective: > + "No Commission business at the bar." That's Lera's personal policy. + She'll have opinions about why. + tags: [atmospheric] + + # ========================================== + # LERA'S RULES — above the bar + # ========================================== + + - id: env_bar_002 + type: sign + label: "House Rules" + visibility: always + text: > + LERA'S — HOUSE RULES + + 1. Pay before you're too drunk to remember. + 2. Arguments outside. Always. + 3. What's said at the bar stays at the bar. + 4. No job talk after 20:00. + 5. Torek Lintar runs his own tab. Don't ask. + dual_lens: + smuggler: "Rule 5. Lera's been running Torek's tab for years. Old arrangement." + detective: > + Rule 5 is specific. Named. Torek Lintar has a standing arrangement + here. That's the third time his name has come up without context. + tags: [investigation-relevant, torek-lintar, lera] + knowledge_grant: + fact_id: "relationship.torek_bar_arrangement" + confidence: suspects + + # ========================================== + # NOTICE BOARD — general community notices + # Examine to read individual notices. + # ========================================== + + - id: env_bar_003 + type: readable_object + label: "Notice Board" + visibility: always + text: > + [NOTICE BOARD — various papers pinned over each other] + + MISSING: Vessels Tamm, last seen Sova Transit District, Month 11. + Contact: Lattice Commission Sova liaison or speak to Lera. + + CARGO WORKERS' ASSOCIATION — Monthly meeting, back room, Month 12, + evening shift. All Sova Transit workers welcome. Bring your own. + + ROOM AVAILABLE: Residential pod B-3, lower level. Quiet. Short-term. + Speak to Harek at the bar. + + [handwritten, pinned over the others:] + ANYONE KNOW WHO LEFT A TRANSIT BAG IN THE STORAGE ROOM? + IT'S BEEN THREE WEEKS. + dual_lens: + smuggler: > + Vessels Tamm. Missing person notice. That name's from the Tamm family — + Naia's connection? Or coincidence. Probably coincidence. + detective: > + Missing persons notice. Vessels Tamm. Sova Transit District. Cross-reference + Tamm with case file — possible Naia Tamm relation. Flag for follow-up. + tags: [investigation-relevant, naia-tamm-adjacent, harek] + knowledge_grant: + fact_id: "relationship.tamm_family" + confidence: suspects + + # ========================================== + # GRAFFITI — bathroom wall + # Examine to read. + # ========================================== + + - id: env_bar_004 + type: readable_object + label: "Graffiti (Bathroom Wall)" + visibility: examine_only + text: > + [scratched into the wall surface over several years] + + Voss doesn't check bay 4. Never has. Never will. + + The Commission sees what it wants to see. + + Lera knows. + + [someone added in different handwriting:] + Lera doesn't know anything. She just sells drinks. + + [original hand, below:] + Keep telling yourself that. + dual_lens: + smuggler: "Graffiti's been here since before I started. The Voss line is right, though." + detective: > + "Lera knows." Someone believes the bar owner has information. + Someone else pushes back. The debate is years old. + tags: [atmospheric, voss, lera, investigation-adjacent] + + # ========================================== + # TONIGHT'S SPECIALS — chalkboard near the kitchen + # ========================================== + + - id: env_bar_005 + type: sign + label: "Tonight's Specials" + visibility: always + text: > + TONIGHT: + Hot grain porridge (Velen style) — 5c + Station fish fry — 7c + + Ask Lera what Velen style means. + She'll tell you about it for twenty minutes. + dual_lens: + smuggler: "Lera's from Velen originally. She makes everyone ask." + detective: "Lera Sessik. Originally from Velen surface. Personal detail noted." + tags: [atmospheric, lera-backstory] + + # ========================================== + # LATTICE-FREE ZONE SIGN — near the entrance + # ========================================== + + - id: env_bar_006 + type: sign + label: "Lattice-Free Zone Notice" + visibility: always + text: > + VOLUNTARY LATTICE-FREE ZONE + + By Lera's request: please disable active lattice scanning + and recording functions while at the bar. + + Conversation here is conversation. Not data. + + This is not a Commission-recognized designation. + Lera doesn't care. + dual_lens: + smuggler: > + Everyone honors this. It's one of the reasons the bar works for + what it works for. + detective: > + Not legally enforceable. But anyone who honors it voluntarily is + actively choosing to reduce their surveillance footprint here. + Who honors it and who doesn't is worth noting. + tags: [investigation-relevant, lera, lattice-free] + + # ========================================== + # CARGO WORKERS' ASSOCIATION FLYER — pinned to the bar + # ========================================== + + - id: env_bar_007 + type: document + label: "Association Meeting Flyer" + visibility: examine_only + text: > + SOVA TRANSIT CARGO WORKERS' ASSOCIATION + Monthly Meeting + + Topic: Shift change protocols — the thirty-minute handoff window + and why it isn't long enough. + + Also on agenda: Updated manifest compliance requirements from + the Commission (new reporting window: 6 hours, down from 8). + + Back room. Evening shift. All welcome. + Bring your concerns, bring a drink. + dual_lens: + smuggler: > + Commission shortened the reporting window to six hours. That's + tighter than the eight-hour buffer. Someone noticed the gap. + detective: > + Agenda item: thirty-minute handoff window. Workers complaining + about it publicly means the window is known beyond the ring. + Or is being discussed for reasons that are less innocent. + tags: [investigation-relevant, shift-transition, commission] + knowledge_grant: + fact_id: "world.shift_schedule" + confidence: knows_of diff --git a/content/campaigns/main/systems/krenn/stations/sova/districts/transit/environmental/the-terminal.yaml b/content/campaigns/main/systems/krenn/stations/sova/districts/transit/environmental/the-terminal.yaml new file mode 100644 index 000000000..3a44cf766 --- /dev/null +++ b/content/campaigns/main/systems/krenn/stations/sova/districts/transit/environmental/the-terminal.yaml @@ -0,0 +1,199 @@ +# Environmental Text: The Terminal (Logistics Hub) +# Signs, terminals, documents, readable objects. +# Both characters can examine these. Interpretation differs. +# Ticket: #262 | Sprint: 12 + +location: the-terminal +items: + + # ========================================== + # SHIFT BOARD — posted schedule + # Always visible. High-traffic reference point. + # ========================================== + + - id: env_terminal_001 + type: sign + label: "Shift Schedule Board" + visibility: always + text: > + SOVA TRANSIT DISTRICT — LOGISTICS HUB + CURRENT ROTATION — CYCLE 47 + + BAY 1-4: Day Shift 06:00-14:00 (Voss, K. — Supervisor) + BAY 5-8: Day Shift 06:00-14:00 (Maret, K. — Scheduler) + TRANSITION: 13:45-14:15 (30-min handoff window) + Night Shift 22:00-06:00 — ROSTER PENDING + [Bay 6: MAINTENANCE HOLD — see Pael Varren] + dual_lens: + smuggler: "Thirty-minute transition window. That's the window. Posted for everyone to see." + detective: "Night roster blank. Either unassigned or deliberately obscured. Logging the gap." + + # ========================================== + # MANIFEST TRACKING TERMINAL — cargo status display + # Active terminal. Can be read from appropriate distance in investigation mode. + # ========================================== + + - id: env_terminal_002 + type: terminal + label: "Cargo Tracking Terminal" + visibility: always + text: > + ACTIVE MANIFEST QUEUE — SOVA LOGISTICS + Last updated: 06:23 + + Container 4471 — [PENDING REVIEW] — Bay 4 + Container 4472 — CLEARED — Bay 2 + Container 4473 — CLEARED — Bay 2 + Container 4474 — [WEIGHT DISCREPANCY — 47kg] — Bay 4 + Container 4475 — CLEARED — Bay 3 + Container 4476 — PROCESSING — Bay 7 + [8 additional items — scroll to continue] + dual_lens: + smuggler: "4471 is still in the queue. Kael hasn't cleared it yet. On schedule." + detective: > + 4471 pending review with a 4474 weight discrepancy in the same bay. + Two anomalies, same location. Not random. + tags: [investigation-relevant, manifest-discrepancy] + knowledge_grant: + fact_id: "investigation.manifest_discrepancy" + confidence: suspects + + # ========================================== + # MAINTENANCE REQUEST CLIPBOARD + # Physical clipboard near loading arm 3. Examine to read. + # ========================================== + + - id: env_terminal_003 + type: document + label: "Maintenance Request Log" + visibility: examine_only + text: > + DEFERRED MAINTENANCE — CURRENT QUEUE + (Submitted: Pael Varren, Maintenance) + + Loading arm 3 — Grinding during lift cycle — DEFERRED x4 + Bay 6 environmental seal — Recurring failure — DEFERRED x3 (HOLD) + B-7 corridor air scrubber — Pressure variance — DEFERRED x1 + Gate calibration bay 5-6 — Off-spec hum — DEFERRED x2 + Recycling unit C-4 — Thermal spike — DEFERRED x1 + + Note: B-7 corridor showing irregular pressure load on sensor. + Traffic heavier than logged shift count explains. Investigating. + — P. Varren + dual_lens: + smuggler: "Pael's noticed the B-7 pressure log doesn't match posted traffic. Nothing they can do about it." + detective: > + Maintenance log records irregular pressure load in B-7. + The tech attributes it to unlogged foot traffic. That's exactly right. + tags: [investigation-relevant, b7-corridor] + knowledge_grant: + fact_id: "location.corridor_b7_restricted" + confidence: suspects + + # ========================================== + # COMMISSION COMPLIANCE NOTICE + # Standard posting. Required by regulation. Two years old. + # ========================================== + + - id: env_terminal_004 + type: sign + label: "Commission Compliance Notice" + visibility: always + text: > + LATTICE COMMISSION — FREIGHT OPERATIONS COMPLIANCE + + All manifest discrepancies exceeding 15kg must be reported + within 8 hours of discovery. + + All cargo flagged PENDING REVIEW must be cleared by assigned + inspector before shift transition. + + Unauthorized access to restricted maintenance corridors + will result in immediate suspension pending review. + + Posted: Lattice Commission, Sova Station Authority + Reference: Commission Order 7741-B + dual_lens: + smuggler: > + Eight-hour window on discrepancy reporting. In practice, the window + to move anything is the thirty-minute shift transition. + detective: > + 8-hour reporting window. If discrepancy 4474 was logged at 06:23, + compliance deadline is 14:23. I have time. + tags: [atmospheric, institutional] + + # ========================================== + # WORK ORDER NOTE — handwritten, coffee-stained + # Personal communication between dock workers. Examine to read. + # ========================================== + + - id: env_terminal_005 + type: document + label: "Handwritten Note (Coffee-Stained)" + visibility: examine_only + text: > + Kael — + + Bay 4 queue backed up again. Maret says it's a weight issue + but she's not flagging it officially. If it's still there when + you come in, just route it through 7 like last time. Voss + won't check. + + — D. + dual_lens: + smuggler: > + "D." is Drin. Route it through 7 like last time — dock-side + workaround, happens constantly. Probably nothing operational. + detective: > + Unsigned note, initial D. Maret not flagging a weight discrepancy + officially. Voss complicit or uninformed. Follow up with Maret. + tags: [investigation-relevant, maret, drin, voss] + knowledge_grant: + fact_id: "investigation.drin_inspection_pattern" + confidence: suspects + + # ========================================== + # SAFETY PROCEDURES PLACARD — standard, faded + # ========================================== + + - id: env_terminal_006 + type: sign + label: "Emergency Procedures" + visibility: always + text: > + IN CASE OF EMERGENCY: + + 1. Activate hull breach alarm (red panel, every 20m) + 2. Proceed to nearest designated shelter (yellow markers) + 3. Do not use freight lifts during emergency protocols + 4. Await station authority clearance before resuming operations + + Last safety review: Month 4, Year 312 (Krenn calendar) + dual_lens: + smuggler: "Two years out of date. Nobody bothers." + detective: "Last review was two cycles ago. Standard compliance lag for a district this size." + tags: [atmospheric] + + # ========================================== + # BAY STATUS BOARD — current bay availability + # ========================================== + + - id: env_terminal_007 + type: sign + label: "Bay Status Board" + visibility: always + text: > + BAY STATUS — CURRENT CYCLE + + BAY 1: ACTIVE + BAY 2: ACTIVE + BAY 3: ACTIVE + BAY 4: ACTIVE — PENDING REVIEW (2 items) + BAY 5: ACTIVE + BAY 6: MAINTENANCE HOLD — Est. clear: next cycle + BAY 7: ACTIVE + BAY 8: SCHEDULED DOWNTIME 13:00-15:00 + dual_lens: + smuggler: "Bay 8 scheduled downtime 13:00-15:00. That overlaps the transition window. Useful." + detective: "Bay 8 downtime during transition window. Reduced oversight at peak movement time." + tags: [investigation-relevant, operational] diff --git a/content/campaigns/main/systems/krenn/stations/sova/districts/transit/insert/detective.yaml b/content/campaigns/main/systems/krenn/stations/sova/districts/transit/insert/detective.yaml new file mode 100644 index 000000000..697437194 --- /dev/null +++ b/content/campaigns/main/systems/krenn/stations/sova/districts/transit/insert/detective.yaml @@ -0,0 +1,225 @@ +# Diegetic Insert Flavor Text — Detective Character +# Neural lattice interface strings: POI labels, notifications, system status. +# Ticket: #331 | Sprint: 12 | Owner: Mellanie + Araminta +# +# Voice principle: the detective's insert is issued Commission equipment. +# Institutional, precise, surname-first. The vocabulary is the job. +# When personal breaks through, it's notable — the first name appears +# only for allies. Shift to first name IS a relationship marker. + +character: detective + +# ========================================== +# POI LABELS — displayed in perception mode overlay +# Appears on NPCs when viewed through insert interface. +# State-dependent: shifts as relationship changes. +# ========================================== + +poi_labels: + defaults: + unknown: "Unknown subject" + known: "{surname}, {initial}." + friendly: "{first_name}" + person_of_interest: "{surname} — POI" + hostile: "{surname} — AVOID" + + npc_overrides: + kael_davan: + phase_1_unknown: "Unknown subject" + phase_1_known: "Davan, K." + person_of_interest: "Davan, K. — POI" + flagged: "Davan, K. — FLAGGED" + sera_venn: + friendly: "Sera" + phase_3_poi: "Sera — ?" + phase_4_poi: "Venn — REVIEW" + voss: + default: "Voss, K. — Supervisor" + cooperative: "Voss — cooperative" + torek_lintar: + default: "Lintar, T." + flagged: "Lintar, T. — FLAG" + commission_personnel: + default: "{surname} — Commission" + ring_member_suspected: + default: "{surname} — suspect" + +# ========================================== +# NOTIFICATIONS — status strings, message previews +# Displayed as brief overlay text. 40 char max per line. +# ========================================== + +notifications: + case_file: + - id: insert_d_001 + trigger: case_file_update + template: "Case update: {subject_name}" + example: "Case update: Davan, K." + tags: [investigation] + + - id: insert_d_002 + trigger: evidence_logged + text: "Evidence logged" + tags: [investigation] + + - id: insert_d_003 + trigger: manifest_discrepancy_filed + text: "Discrepancy filed" + tags: [investigation, manifest] + + - id: insert_d_004 + trigger: knowledge_updated + template: "KG updated: {fact_category}" + example: "KG updated: relationship" + tags: [investigation] + + - id: insert_d_005 + trigger: poi_status_change + template: "{surname} — status updated" + example: "Davan — status updated" + tags: [investigation] + + - id: insert_d_006 + trigger: tell_logged + template: "{surname} — behavior logged" + example: "Davan — behavior logged" + tags: [investigation, tell] + + - id: insert_d_007 + trigger: pattern_confirmed + template: "{surname} — pattern confirmed" + example: "Venn — pattern confirmed" + tags: [investigation, pattern] + + commission: + - id: insert_d_008 + trigger: commission_advisory + text: "Commission advisory" + tags: [institutional] + + - id: insert_d_009 + trigger: commission_advisory_urgent + text: "Commission advisory — urgent" + tags: [institutional, priority] + + - id: insert_d_010 + trigger: clearance_required + template: "{zone} — clearance required" + example: "Sector B — clearance required" + tags: [institutional] + + - id: insert_d_011 + trigger: clearance_confirmed + template: "{zone} — clearance confirmed" + example: "B-7 — clearance confirmed" + tags: [institutional] + + - id: insert_d_012 + trigger: case_status_active + template: "Case #{case_id}: active" + example: "Case #4471: active" + tags: [institutional, investigation] + + field: + - id: insert_d_013 + trigger: observation_mode_active + text: "Observation: logging" + tags: [field] + + - id: insert_d_014 + trigger: restricted_area_entered + text: "Restricted zone — logged" + tags: [field, institutional] + + - id: insert_d_015 + trigger: anomaly_detected + template: "Anomaly: {location}" + example: "Anomaly: B-7 corridor" + tags: [field, investigation] + + - id: insert_d_016 + trigger: no_anomaly + text: "Sector: nominal" + tags: [field] + +# ========================================== +# SYSTEM STATUS — persistent interface text +# Small-print labels in perception mode corners. +# ========================================== + +system_status: + - id: insert_d_100 + context: default + text: "Analytical lattice: active" + + - id: insert_d_101 + context: perception_mode_active + text: "Perception mode: on" + + - id: insert_d_102 + context: fog_layer_present + text: "Reduced visibility" + + - id: insert_d_103 + context: meridian_active + text: "Meridian: nominal" + + - id: insert_d_104 + context: meridian_inactive + text: "Meridian: offline" + + - id: insert_d_105 + context: investigation_active + text: "Case: active" + + - id: insert_d_106 + context: case_status_flagged + text: "Case: flagged subjects present" + + - id: insert_d_107 + context: case_status_critical + text: "Case: escalation threshold" + + - id: insert_d_108 + context: lattice_scan_complete + text: "Scan: complete" + +# ========================================== +# EXAMINATION LABELS — text shown when examining environmental objects +# ========================================== + +examination_labels: + - id: insert_d_200 + object_type: document + text: "Examine" + + - id: insert_d_201 + object_type: terminal + text: "Query manifest" + + - id: insert_d_202 + object_type: container_flagged + text: "Container 4471 — discrepancy logged" + + - id: insert_d_203 + object_type: restricted_area + text: "Restricted — B-7 sector" + + - id: insert_d_204 + object_type: surveillance_gap + text: "Coverage gap — logged" + + - id: insert_d_205 + object_type: evidence_item + text: "Log as evidence" + + - id: insert_d_206 + object_type: known_meeting_point + text: "Meeting point — flagged" + +notes: > + Voice: institutional, precise, Commission equipment. Surname-first for + targets and unknowns. First name appears only for allies (Sera). + That shift IS the relationship marker — the player notices when + "Venn" becomes "Sera" and knows it means something. + Araminta coordinates on visual presentation constraints (#331 co-owner). diff --git a/content/campaigns/main/systems/krenn/stations/sova/districts/transit/insert/smuggler.yaml b/content/campaigns/main/systems/krenn/stations/sova/districts/transit/insert/smuggler.yaml new file mode 100644 index 000000000..36ee0c6cb --- /dev/null +++ b/content/campaigns/main/systems/krenn/stations/sova/districts/transit/insert/smuggler.yaml @@ -0,0 +1,193 @@ +# Diegetic Insert Flavor Text — Smuggler Character +# Neural lattice interface strings: POI labels, notifications, system status. +# Ticket: #331 | Sprint: 12 | Owner: Mellanie + Araminta +# +# Voice principle: the smuggler's insert is slightly informal, modified hardware. +# It's a tool that's been lived with, not issued equipment. Short labels. +# Uses first names and operational shorthand, not institutional vocabulary. + +character: smuggler + +# ========================================== +# POI LABELS — displayed in perception mode overlay +# Appears on NPCs when viewed through insert interface. +# State-dependent: shifts as relationship changes. +# ========================================== + +poi_labels: + defaults: + unknown: "Unknown" + known: "{first_name}" + friendly: "{first_name} — OK" + person_of_interest: "{first_name} — WATCH" + hostile: "{first_name} — AVOID" + + npc_overrides: + kael_davan: + phase_1: "Kael" + phase_2: "Kael — ?" + phase_3: "Kael — WATCH" + phase_4: "Kael — LYING" + phase_5: "Kael — COMPROMISED" + voss: + default: "Voss" + hostile: "Voss — PROBLEM" + commission_personnel: + default: "Commission" + investigation_active: "Commission — ACTIVE" + ring_member: + default: "{first_name}" + operational: "{first_name} — RING" + +# ========================================== +# NOTIFICATIONS — status strings, message previews +# Displayed as brief overlay text. 40 char max per line. +# ========================================== + +notifications: + messages: + - id: insert_s_001 + trigger: message_from_contact + template: "Msg: {contact_name}" + example: "Msg: Kael" + tags: [ring-operational] + + - id: insert_s_002 + trigger: message_from_contact_urgent + template: "Msg: {contact_name} — urgent" + example: "Msg: Nils — urgent" + tags: [ring-operational, priority] + + - id: insert_s_003 + trigger: drop_point_update + text: "Drop point updated" + tags: [ring-operational] + + - id: insert_s_004 + trigger: drop_point_confirmed + text: "Drop point confirmed — proceed" + tags: [ring-operational] + + - id: insert_s_005 + trigger: meridian_window_opening + template: "Window: {duration}m" + example: "Window: 25m" + tags: [operational, timing] + + - id: insert_s_006 + trigger: meridian_window_closing + template: "Window closing — {time_remaining}m" + example: "Window closing — 3m" + tags: [operational, timing, priority] + + - id: insert_s_007 + trigger: ring_checkin_overdue + text: "Check-in overdue" + tags: [ring-operational, concern] + + - id: insert_s_008 + trigger: contact_unavailable + template: "{contact_name} — no response" + example: "Kael — no response" + tags: [ring-operational, concern] + + - id: insert_s_009 + trigger: commission_patrol_detected + text: "Commission in sector" + tags: [caution, operational] + + - id: insert_s_010 + trigger: commission_patrol_cleared + text: "Sector clear" + tags: [operational] + + evidence: + - id: insert_s_011 + trigger: observation_logged + text: "Logged" + tags: [observation] + + - id: insert_s_012 + trigger: tell_observed + template: "{npc_name} — tell logged" + example: "Kael — tell logged" + tags: [observation, tell] + + - id: insert_s_013 + trigger: contradiction_observed + template: "{npc_name} — anomaly" + example: "Kael — anomaly" + tags: [observation, contradiction] + +# ========================================== +# SYSTEM STATUS — persistent interface text +# Small-print labels in perception mode corners. +# ========================================== + +system_status: + - id: insert_s_100 + context: default + text: "Lattice: Sova Transit" + + - id: insert_s_101 + context: perception_mode_active + text: "Perception: active" + + - id: insert_s_102 + context: fog_layer_present + text: "Fog layer" + + - id: insert_s_103 + context: meridian_dead_zone + text: "Meridian: inactive" + + - id: insert_s_104 + context: meridian_active + text: "Meridian: active — caution" + + - id: insert_s_105 + context: ring_status_stable + text: "Status: stable" + + - id: insert_s_106 + context: ring_status_elevated + text: "Status: elevated" + + - id: insert_s_107 + context: ring_status_compromised + text: "Status: compromised" + +# ========================================== +# EXAMINATION LABELS — text shown when examining environmental objects +# ========================================== + +examination_labels: + - id: insert_s_200 + object_type: document + text: "Read" + + - id: insert_s_201 + object_type: terminal + text: "Check manifest" + + - id: insert_s_202 + object_type: container_flagged + text: "4471 — flagged" + + - id: insert_s_203 + object_type: restricted_area + text: "B-7 — restricted" + + - id: insert_s_204 + object_type: dead_drop + text: "Drop point" + + - id: insert_s_205 + object_type: safe_location + text: "Safe" + +notes: > + Voice: informal, operational shorthand. This is a modified civilian + lattice, not issued equipment. First names, not titles. Short. + Labels should feel like something you'd put on your own interface. + Araminta coordinates on visual presentation constraints (#331 co-owner). diff --git a/content/campaigns/main/systems/krenn/stations/sova/districts/transit/npcs/pael.yaml b/content/campaigns/main/systems/krenn/stations/sova/districts/transit/npcs/pael.yaml new file mode 100644 index 000000000..385f32093 --- /dev/null +++ b/content/campaigns/main/systems/krenn/stations/sova/districts/transit/npcs/pael.yaml @@ -0,0 +1,62 @@ +# NPC Profile: Pael Varren +# Tier 3 — NOBODY / CIVILIAN +# Flat NPC — noise floor. Knows nothing about the ring. +# Observable presence near B-corridor is legitimate maintenance, not surveillance. +# Ticket: #307 | Sprint: 12 + +canonical_id: "npc:pael" +display_name: "Pael Varren" +tier: 3 +pattern: "NOBODY" +motivation: "CIVILIAN" + +description: > + Station maintenance tech, early 40s. Has worked Sova Transit District for + fifteen years. Knows every duct, every failing seal, every air recycler + running off-spec. Appears throughout the district because maintenance is + everywhere. Carries a scanner everywhere; hands are perpetually stained with + lubricant. Pael has no ring connection, no secrets beyond a quiet resentment + of deferred maintenance tickets. Is frequently near B-corridor because the + environmental seal there fails on a cycle of roughly three weeks, without + fail, regardless of what Pael does about it. + +want: + primary: "Happiness" + description: > + To get through a single shift without a new deferred ticket appearing on + the queue. Fifteen years of Sova has narrowed the definition of a good day. + +routine: + summary: > + Arrives before any shift (05:30 entry), does a diagnostic walk of the + full district, starts on the highest-priority deferred tickets during + low-traffic windows. Reappears at the B-corridor junction around mid-shift + because the environmental seal there is always the problem. Leaves when + the shift cycle turns over. Pattern is completely predictable. That's the + point — Pael is never where they shouldn't be, they're just always where + the problems are. + +personality: + demeanor: "tired-competent, dry humor, no interest in drama" + social_style: "minimal — answers when addressed, doesn't linger" + stress_response: "files a maintenance ticket and moves on" + +tells: [] + +skills: + combat_trained: false + skills: + maintenance: 9 + environmental_systems: 8 + +trust_levels: + surface: > + Fifteen years of Sova maintenance. "If it breaks, I've seen it break + before. Usually the same three things." + +notes: > + NOBODY + CIVILIAN: pure noise floor. The "seems important but isn't" quality + is positional — frequent presence near B-corridor for genuine maintenance + reasons. One memorable observable trait: scanner always open, lubricant + stains on both hands even at shift start. Paula owns the trait design. + Mellanie owns the lines (#307). diff --git a/content/campaigns/main/systems/krenn/stations/sova/districts/transit/npcs/ren.yaml b/content/campaigns/main/systems/krenn/stations/sova/districts/transit/npcs/ren.yaml new file mode 100644 index 000000000..374f2c60c --- /dev/null +++ b/content/campaigns/main/systems/krenn/stations/sova/districts/transit/npcs/ren.yaml @@ -0,0 +1,63 @@ +# NPC Profile: Ren Tosse +# Tier 3 — NOBODY / CIVILIAN +# Flat NPC — noise floor. Drifter with no ring connection. +# Asks too many questions about cargo schedules. Is just looking for work. +# Ticket: #307 | Sprint: 12 + +canonical_id: "npc:ren" +display_name: "Ren Tosse" +tier: 3 +pattern: "NOBODY" +motivation: "CIVILIAN" + +description: > + Day worker, early 30s. Comes through Sova Transit on irregular rotations — + picks up freight work when it's available, moves on when it isn't. Knows the + station the way drifters do: which bays are short-handed, which supervisors + ask fewer questions, what the bar's cheap nights are. Has a worn transit bag + and a slightly too-casual awareness of exits — not operational awareness, + just the low-level situational alertness of someone who has moved through + too many unfamiliar stations. Genuinely unremarkable. No ring connection, + no secrets. Asks too many questions about night rotations and cargo schedules + because that's how you find short-handed bays. + +want: + primary: "Wealth" + description: > + Regular work. Enough to stop moving for a while. Sova's a decent stop — + the freight work is steady when it comes through. + +routine: + summary: > + Arrives after 10:00 when the day shift is settled. Checks the job board + at the terminal entrance. Wanders to The Last Shift for a drink and + whatever bar conversation yields useful shift information. Leaves by late + afternoon unless day work came through. Pattern is irregular by design — + no fixed schedule because there's no fixed role. + +personality: + demeanor: "casual, observant, asks questions as if entitled to answers" + social_style: "sociable enough to get information, quiet when there's nothing useful" + stress_response: "moves on. There's always another station." + +tells: [] + +skills: + combat_trained: false + skills: + cargo_handling: 6 + freight_routing: 5 + +trust_levels: + surface: > + Passing through, looking for work. "Sova seems decent. Depends on + the freight situation." + +notes: > + NOBODY + CIVILIAN: pure noise floor. The "seems important but isn't" quality + comes from drifter behavior patterns that mimic operative reconnaissance: + asking about night rotations, checking cargo schedules, casual interest in + specific bays. All genuine job-seeking. One memorable observable trait: + worn transit bag with tags from three different station systems, slightly + too-casual awareness of exits. Paula owns the trait design. Mellanie owns + the lines (#307). diff --git a/content/campaigns/main/systems/krenn/stations/sova/districts/transit/npcs/tev.yaml b/content/campaigns/main/systems/krenn/stations/sova/districts/transit/npcs/tev.yaml new file mode 100644 index 000000000..0cd315a4b --- /dev/null +++ b/content/campaigns/main/systems/krenn/stations/sova/districts/transit/npcs/tev.yaml @@ -0,0 +1,58 @@ +# NPC Profile: Tev Osel +# Tier 3 — NOBODY / CIVILIAN +# Flat NPC — noise floor. Stands like a lookout. Is waiting for his partner. +# No ring connection. The resemblance to surveillance posture is accidental. +# Ticket: #307 | Sprint: 12 + +canonical_id: "npc:tev" +display_name: "Tev Osel" +tier: 3 +pattern: "NOBODY" +motivation: "CIVILIAN" + +description: > + Cargo staging worker, late 20s. Has an unfortunate habit of positioning + himself exactly where someone running corridor surveillance would stand — + at junctions, in doorways, facing the approach. This is where he waits for + Kosse, his partner, who works the late freight bay and takes the same route + back through the maintenance corridors. Tev times his breaks to the late + route schedule. He has no idea how this looks to someone tracking corridor + traffic. No ring connection. No secrets. + +want: + primary: "Connection" + description: > + For Kosse to finish shift on time for once. It never happens on time. + +routine: + summary: > + Works cargo staging 06:00-14:00. During break windows, drifts to corridor + junction C-4 to wait for Kosse on the late freight route home. Returns to + staging when Kosse doesn't appear within the break window. After shift: + walks home with Kosse when schedules align, alone otherwise. The junction + positioning is consistent and timing-predictable. + +personality: + demeanor: "patient, unassuming, mildly distracted when waiting" + social_style: "polite if addressed, slightly confused why anyone is talking to him" + stress_response: "checks lattice. Waits longer." + +tells: [] + +skills: + combat_trained: false + skills: + cargo_staging: 6 + +trust_levels: + surface: > + Waiting for someone. "Kosse's running late again. You know how the freight + bay is." + +notes: > + NOBODY + CIVILIAN: pure noise floor. The "seems important but isn't" quality + is entirely positional — standing at corridor junctions, watching approach + traffic, checking the time, stationing himself in threshold positions. All + of this is to meet a partner after shift. One memorable observable trait: + weight always on the wrong foot, perpetually glancing the same direction. + Paula owns the trait design. Mellanie owns the lines (#307).