diff --git a/CHANGELOG.md b/CHANGELOG.md index a075297e9..58344cc5b 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -7,7 +7,7 @@ Format based on [Keep a Changelog](https://keepachangelog.com/). ## [Unreleased] ### Added -- Triangle activation proximity monologue lines — 4 smuggler lines (Kael Davan) and 5 detective lines (Sera Venn/Torek Lintar) that fire when observing triangle anchor NPCs post-activation (#597, D-039) +- Triangle activation proximity monologue lines — 5 smuggler lines (Kael Davan) and 5 detective lines (Sera Venn/Torek Lintar) that fire when observing triangle anchor NPCs post-activation (#597, D-035, D-039) ## [v0.1.23] — 2026-03-04 diff --git a/content/_schema/monologue-pool.schema.json b/content/_schema/monologue-pool.schema.json index 83abdd5bd..fc02fc45e 100644 --- a/content/_schema/monologue-pool.schema.json +++ b/content/_schema/monologue-pool.schema.json @@ -81,7 +81,7 @@ }, "minItems": 1, "uniqueItems": true, - "description": "D-035 structural tag: situations in which this monologue line is contextually appropriate. 15 v0.1 values (triangle_activated added Sprint 24). The engine selects using trigger; situation provides additional authoring context for filtering by the caller. NOTE: 'greeting' is not yet in server/src/content/line_pool.rs Situation enum." + "description": "D-035 structural tag: situations in which this monologue line is contextually appropriate. 15 v0.1 values (triangle_activated added Sprint 24). The engine selects using trigger; situation provides additional authoring context for filtering by the caller. NOTE: 'greeting' and 'triangle_activated' are not yet in server/src/content/line_pool.rs Situation enum." }, "trigger": { "type": "string", diff --git a/content/campaigns/main/systems/krenn/stations/sova/districts/transit/monologue/detective/the-terminal.yaml b/content/campaigns/main/systems/krenn/stations/sova/districts/transit/monologue/detective/the-terminal.yaml index 22415c76a..3a6f34ced 100644 --- a/content/campaigns/main/systems/krenn/stations/sova/districts/transit/monologue/detective/the-terminal.yaml +++ b/content/campaigns/main/systems/krenn/stations/sova/districts/transit/monologue/detective/the-terminal.yaml @@ -447,7 +447,7 @@ lines: priority: 8 tags: [npc, kael, investigation, evidence, analytical] - # --- Triangle Activation: Sera Venn / Torek Lintar (T2 informant-question) --- + # --- Triangle Activation: Sera Venn / Torek Lintar (T2: Sera-Detective-Commission, D-087) --- # Fires post-TriangleActivated when player has LOS to Sera or Torek. One beat per line. # Beat 1: pattern recognition. Beat 2: deviation logged. Beat 3: hypothesis. Beat 4: inference. Beat 5: procedural next step. @@ -480,7 +480,7 @@ lines: npc_in_los: true - id: pc-detective_m_d_043 - text: "If she knows about the manifest discrepancy, why has she not reported it?" + text: "Avoidance without cause. Either she does not know about the discrepancy, or she knows and has chosen silence." role: player_character access: [public] trust: surface @@ -494,7 +494,7 @@ lines: npc_in_los: true - id: pc-detective_m_d_044 - text: "She is protecting something. Or someone. The distinction matters." + text: "Possible explanations: fear, loyalty, complicity. Insufficient data to distinguish." role: player_character access: [public] trust: surface diff --git a/content/campaigns/main/systems/krenn/stations/sova/districts/transit/monologue/smuggler/the-terminal.yaml b/content/campaigns/main/systems/krenn/stations/sova/districts/transit/monologue/smuggler/the-terminal.yaml index 820396ec8..051d400d6 100644 --- a/content/campaigns/main/systems/krenn/stations/sova/districts/transit/monologue/smuggler/the-terminal.yaml +++ b/content/campaigns/main/systems/krenn/stations/sova/districts/transit/monologue/smuggler/the-terminal.yaml @@ -374,9 +374,9 @@ lines: priority: 9 tags: [npc, kael, contaminated-trust, friend-arc] - # --- Triangle Activation: Kael Davan (T1 hub-power) --- + # --- Triangle Activation: Kael Davan (T1: Kael-Smuggler-Ring, D-087) --- # Fires post-TriangleActivated when player has LOS to Kael. One beat per line. - # Beat 1: physical observation. Beat 2: rationalization. Beat 3: doubt. Beat 4: doubt breaks. + # Beat 1: physical observation. Beat 2: rationalization. Beat 3: doubt. Beat 4: sensory confirmation. Beat 5: emotional break. - id: pc-smuggler_m_s_036 text: "Kael's in the main corridor. He doesn't usually come through here." @@ -435,7 +435,7 @@ lines: npc_in_los: true - id: pc-smuggler_m_s_040 - text: "I don't know what I'm looking at. But I know Kael. And this isn't Kael." + text: "I don't know what I'm seeing. But I know Kael. And this isn't Kael." role: player_character access: [public] trust: surface diff --git a/decisions/content.md b/decisions/content.md index c89c40b96..bccc9d576 100644 --- a/decisions/content.md +++ b/decisions/content.md @@ -84,6 +84,7 @@ How narrative, NPCs, and world content are created: content tiers, NPC generatio - **Dissent:** None. Minor consolidations: Mellanie's 8 moods mapped to Gestalt's 8 (different names, same concepts). Mellanie's `crime` topic deliberately excluded (NPCs think of it as `cargo` or `money`). - **Amendment (Sprint 8):** `focused` added as 9th mood (used in Kael dialogue at The Terminal and maintenance corridors). `greeting` added as 14th situation (used in PC dialogue pools for initial contact lines). Schema updated to match. - **Amendment (Sprint 14):** Mood vocabulary renamed to match voice guide (monologue-voice-guide.md). Old → new: `fond`→`warm`, `comfortable`→`content`, `worried`→`anxious`, `concerned`→`frustrated`. Dropped: `analytical` (merged into `focused`), `conflicted` (modeled as `suspicious`+`warm` collision). Added: `hostile`. Final 8 moods: `anxious`, `frustrated`, `content`, `suspicious`, `warm`, `hostile`, `relieved`, `focused`. Neutral = untagged. +- **Amendment (Sprint 24):** `triangle_activated` added as 15th situation (fires post-TriangleActivated when player observes anchor NPCs). Two freeform tags registered as conventions: `triangle-signal` (line is part of the triangle activation sequence) and `tell-observation` (line observes a behavioral tell without naming its cause). `npc_in_los` prerequisite added for LOS-gated monologue lines. Schema updated to match. - **Amendment (Sprint 15):** Line ID namespace changed from location-scoped to NPC-scoped. Old scheme: `{location_slug}_{d|m}_{###}` (e.g., `the-terminal_d_039`) — all NPCs at a location share one ID sequence, requiring cross-file coordination and causing collisions at scale. New scheme: `{npc-slug}_{d|m}_{###}` for dialogue, `{npc-slug}_m_{s|d}_{###}` for monologue (e.g., `kael-davan_d_001`, `dock-worker_d_001`). Each NPC's IDs are independent — no cross-file coordination needed. Auto-generated NPCs use their generated slug. Schema regex patterns unchanged (prefix is still `^[a-z][a-z0-9-]*`), only the `description` field and convention documentation update. Migration: mechanical rename of all existing line IDs across ~20 dialogue files and monologue pools. ### D-036: Sova Transit District / Krenn System as v0.1 setting