fix(content): PR #61 review — schema compliance for contradiction + tutorial

Contradiction files (both characters):
- location: contradiction-detected → contradiction (valid content ID)
- situation: removed invalid values (contradiction, reflection)
- prerequisites: (plural) → prerequisite: (singular) with canonical entities map
- Removed source_name from prerequisites (event payload, not KG gate)
- Removed phase: field (moved to tags as phase-2/phase-3)
- trigger: contradiction_processing → contradiction_detected with priority sequencing
- Removed dialogue-only fields (role, access, trust) from monologue lines
- Phase 3 detective: prerequisite uses torek-lintar PersonOfInterest
- Phase 3 smuggler: prerequisite uses tells_observed on entity

Tutorial files (both characters):
- priority: "tutorial" (string) → 8/6 (integer)
- situation: removed invalid values (movement, exploration)

CHANGELOG: merged duplicate ### Changed sections.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
This commit is contained in:
2026-02-24 11:32:43 +01:00
co-authored by Claude Opus 4.6
parent badc0a6f20
commit 766a8b9c6d
5 changed files with 190 additions and 203 deletions
-1
View File
@@ -44,7 +44,6 @@ Format based on [Keep a Changelog](https://keepachangelog.com/).
- assert!(false) → panic!() in serialization tests (clippy)
- SetFacing and TeleportToHub added to roundtrip test coverage
### Changed
- Zone_id extraction in game_state.gd optimized from O(N) tile scan to O(1) dictionary lookup — builds _tile_by_coord from member visible_tiles covering both test and live paths (#543)
- Shared run_dialogue_pipeline() helper eliminates ~60 lines of duplication between Talk and DialogueResponse systems
- Dialogue and monologue line IDs migrated from location-scoped (the-terminal_d_039) to NPC-scoped (kael-davan_d_001) namespace — each NPC has an independent sequence per D-035 (#542)
@@ -1,5 +1,5 @@
character: detective
location: contradiction-detected
location: contradiction
lines:
# Contradiction Monologue — Ticket #552 — Sera/Kael FRIEND Arc
# Authored per D-083 (contradiction detection pipeline) and Paula Round 2 Mellanie spec
@@ -16,12 +16,16 @@ lines:
# who or what is wrong. Uncertainty first, suspicion second, accusation never.
#
# Phase 2 lines: trust established but not deep — the blindsiding.
# Prerequisites: KG entry for Kael has state: Contradicted, source: ToldBy(Sera Venn)
# Prerequisite: KG entry for Kael has state: Contradicted, source: ToldBy(Sera Venn)
# Phase 3 lines: additional context accumulated — Sera's avoidance of Torek observed 3x.
# Prerequisites: Phase 2 + Sera's avoidance pattern has fired (three departures logged).
# Prerequisite: Phase 2 + Sera's avoidance pattern has fired (three departures logged).
#
# ID discriminator: _con_ marks contradiction lines per Q-028 pending resolution.
# cooldown: -1 — these are one-time events. Should not repeat.
#
# Note: contradiction_detected is a new trigger type — requires server-side implementation
# in monologue.rs (ticket #550). Secondary beat lines use lower priority for sequencing;
# server team should implement delay_after_trigger_ticks for proper 3-5 second gap.
# -----------------------------------------------------------------------
# PHASE 2 — Primary beat (fires on contradiction_detected, immediate)
@@ -29,19 +33,17 @@ lines:
- id: pc-detective_m_d_con_001
text: "Sera said Kael was at the dock intake during second shift. I'm looking at him in corridor B-7 right now."
role: player_character
access: [public]
trust: real
situation: [investigation, observation, contradiction]
situation: [investigation, observation]
trigger: contradiction_detected
mood: [focused, anxious]
priority: 10
cooldown: -1
phase: 2
prerequisites:
- entity: "npc:kael-davan"
state: Contradicted
- source_name: "Sera Venn"
prerequisite:
entities:
- id: "npc:kael-davan"
state: Contradicted
- id: "npc:sera-venn"
state: Contradicted
tags: [contradiction, friend-arc, sera, kael, phase-2, analytical]
notes: >
Paula's canonical primary line — preserved verbatim. Flat factual statement: source named,
@@ -51,19 +53,17 @@ lines:
- id: pc-detective_m_d_con_002
text: "Venn said Kael was at dock intake through second shift. Kael is in B-7. Those aren't compatible."
role: player_character
access: [public]
trust: real
situation: [investigation, observation, contradiction]
situation: [investigation, observation]
trigger: contradiction_detected
mood: [focused]
priority: 9
cooldown: -1
phase: 2
prerequisites:
- entity: "npc:kael-davan"
state: Contradicted
- source_name: "Sera Venn"
prerequisite:
entities:
- id: "npc:kael-davan"
state: Contradicted
- id: "npc:sera-venn"
state: Contradicted
tags: [contradiction, friend-arc, sera, kael, phase-2, analytical]
notes: >
Alternate primary — fully analytical register: surname-initial for both (institutional
@@ -73,19 +73,17 @@ lines:
- id: pc-detective_m_d_con_003
text: "She placed Kael at the dock. He's not at the dock."
role: player_character
access: [public]
trust: real
situation: [investigation, observation, contradiction]
situation: [investigation, observation]
trigger: contradiction_detected
mood: [focused, anxious]
priority: 9
cooldown: -1
phase: 2
prerequisites:
- entity: "npc:kael-davan"
state: Contradicted
- source_name: "Sera Venn"
prerequisite:
entities:
- id: "npc:kael-davan"
state: Contradicted
- id: "npc:sera-venn"
state: Contradicted
tags: [contradiction, friend-arc, sera, kael, phase-2]
notes: >
Stripped-down alternate. 'She placed' is the informal of 'Venn stated' — personal register
@@ -94,46 +92,45 @@ lines:
# -----------------------------------------------------------------------
# PHASE 2 — Secondary beat (fires after short delay, cognitive processing)
# Server team (#550): implement delay_after_trigger_ticks: 90 for 3-5s gap.
# -----------------------------------------------------------------------
- id: pc-detective_m_d_con_004
text: "One of them is wrong. Sera, or what I'm seeing. Or I'm missing something I don't have yet."
role: player_character
access: [public]
trust: real
situation: [investigation, reflection, contradiction]
trigger: contradiction_processing
situation: [investigation, alone]
trigger: contradiction_detected
mood: [anxious, focused]
priority: 10
priority: 7
cooldown: -1
phase: 2
prerequisites:
- entity: "npc:kael-davan"
state: Contradicted
- source_name: "Sera Venn"
tags: [contradiction, friend-arc, sera, kael, phase-2, cognitive-dissonance]
prerequisite:
entities:
- id: "npc:kael-davan"
state: Contradicted
- id: "npc:sera-venn"
state: Contradicted
tags: [contradiction, friend-arc, sera, kael, phase-2, cognitive-dissonance, secondary-beat]
notes: >
Paula's canonical secondary beat — fires 3-5 seconds after the primary beat.
Epistemic neutrality held across three options: Sera is wrong, observation is wrong, or
context is missing. No option is dismissed. 'I'm missing something I don't have yet' is
the key line — it holds accusation off even against evidence. The detective files it open.
Lower priority (7) ensures primary lines fire first; server team should implement
delay_after_trigger_ticks for proper sequencing.
- id: pc-detective_m_d_con_005
text: "File it. Don't close it. Either Venn's information was wrong when she gave it, or it was wrong on purpose. That's a different question."
role: player_character
access: [public]
trust: real
situation: [investigation, reflection, contradiction]
trigger: contradiction_processing
situation: [investigation, alone]
trigger: contradiction_detected
mood: [focused]
priority: 9
priority: 6
cooldown: -1
phase: 2
prerequisites:
- entity: "npc:kael-davan"
state: Contradicted
- source_name: "Sera Venn"
tags: [contradiction, friend-arc, sera, kael, phase-2, analytical, cognitive-dissonance]
prerequisite:
entities:
- id: "npc:kael-davan"
state: Contradicted
- id: "npc:sera-venn"
state: Contradicted
tags: [contradiction, friend-arc, sera, kael, phase-2, analytical, cognitive-dissonance, secondary-beat]
notes: >
Alternate secondary beat. 'File it, don't close it' is the detective's internal procedure
for unresolved data. The critical distinction: wrong information vs. deliberately wrong
@@ -147,21 +144,19 @@ lines:
- id: pc-detective_m_d_con_006
text: "Sera told me Kael doesn't make mistakes. He's not where she said he'd be. And she's been avoiding Lintar for three weeks."
role: player_character
access: [public]
trust: real
situation: [investigation, observation, contradiction]
situation: [investigation, observation]
trigger: contradiction_detected
mood: [focused, anxious]
priority: 10
cooldown: -1
phase: 3
prerequisites:
- entity: "npc:kael-davan"
state: Contradicted
- source_name: "Sera Venn"
- pattern: sera_avoidance_lintar
count_min: 3
prerequisite:
entities:
- id: "npc:kael-davan"
state: Contradicted
- id: "npc:sera-venn"
state: Contradicted
- id: "npc:torek-lintar"
relationship: PersonOfInterest
tags: [contradiction, friend-arc, sera, kael, phase-3, pattern-recognition]
notes: >
Paula's canonical Phase 3 line — preserved verbatim. Three facts in sequence, no explicit
@@ -172,21 +167,19 @@ lines:
- id: pc-detective_m_d_con_007
text: "Two facts: Venn placed Kael at dock intake, second shift. Kael is in B-7. One new observation: Venn leaves every time Lintar enters the bar. Worth seeing if those connect."
role: player_character
access: [public]
trust: real
situation: [investigation, observation, contradiction]
situation: [investigation, observation]
trigger: contradiction_detected
mood: [focused]
priority: 9
cooldown: -1
phase: 3
prerequisites:
- entity: "npc:kael-davan"
state: Contradicted
- source_name: "Sera Venn"
- pattern: sera_avoidance_lintar
count_min: 3
prerequisite:
entities:
- id: "npc:kael-davan"
state: Contradicted
- id: "npc:sera-venn"
state: Contradicted
- id: "npc:torek-lintar"
relationship: PersonOfInterest
tags: [contradiction, friend-arc, sera, kael, phase-3, analytical, pattern-recognition]
notes: >
Alternate Phase 3 — analytical register throughout, no personal register even for Sera
@@ -197,21 +190,19 @@ lines:
- id: pc-detective_m_d_con_008
text: "Venn's been managing her exits around Lintar. And she put Kael somewhere he isn't. Let's see what sits at the intersection of those two."
role: player_character
access: [public]
trust: real
situation: [investigation, reflection, contradiction]
situation: [investigation, alone]
trigger: contradiction_detected
mood: [focused]
priority: 8
cooldown: -1
phase: 3
prerequisites:
- entity: "npc:kael-davan"
state: Contradicted
- source_name: "Sera Venn"
- pattern: sera_avoidance_lintar
count_min: 3
prerequisite:
entities:
- id: "npc:kael-davan"
state: Contradicted
- id: "npc:sera-venn"
state: Contradicted
- id: "npc:torek-lintar"
relationship: PersonOfInterest
tags: [contradiction, friend-arc, sera, kael, phase-3, analytical]
notes: >
Alternate Phase 3. 'Let's see what' verbal tic, no accusation. 'Managing her exits' is
@@ -19,7 +19,18 @@ lines:
# Colon usage for categorization. 'Let's see what...' and 'Worth flagging' verbal tics.
# ID discriminator: _tut_ per sprint briefing.
# cooldown: -1 — fire once, never repeat.
# priority: tutorial — higher than general pool lines.
# priority: 8 (primary, one per trigger type), 6 (secondary variant, mood-weighted alternate).
#
# Schema corrections (Gestalt review, Sprint 17):
# priority: string "tutorial" → integer. All other monologue files use integer priority;
# string value would fail engine parse in monologue.rs.
# situation: removed invalid values (movement, exploration) not in D-035 13-situation
# enum. Replaced with arrival, routine per actual trigger context.
#
# Trigger types (first_move, first_new_section, first_fog_encounter, first_fog_edge,
# first_sound_heard, first_off_screen_sound, first_npc_proximity, first_npc_face_read,
# first_insert_open, first_insert_contact_flag) are extended trigger enum values not in
# D-035 v0.1 set — require server-side implementation in monologue.rs.
# -----------------------------------------------------------------------
# MOVEMENT / EXPLORATION
@@ -30,10 +41,10 @@ lines:
role: player_character
access: [public]
trust: surface
situation: [movement, exploration]
situation: [arrival, routine]
trigger: first_move
mood: [focused]
priority: tutorial
priority: 8
cooldown: -1
tags: [tutorial, movement, navigation, analytical]
notes: >
@@ -48,10 +59,10 @@ lines:
role: player_character
access: [public]
trust: surface
situation: [movement, investigation]
situation: [arrival, investigation]
trigger: first_new_section
mood: [focused]
priority: tutorial
priority: 6
cooldown: -1
tags: [tutorial, movement, navigation, analytical]
notes: >
@@ -70,10 +81,10 @@ lines:
role: player_character
access: [public]
trust: surface
situation: [observation, exploration]
situation: [observation]
trigger: first_fog_encounter
mood: [focused]
priority: tutorial
priority: 8
cooldown: -1
tags: [tutorial, fog, perception, analytical]
notes: >
@@ -92,7 +103,7 @@ lines:
situation: [observation]
trigger: first_fog_edge
mood: [focused]
priority: tutorial
priority: 6
cooldown: -1
tags: [tutorial, fog, perception, analytical]
notes: >
@@ -115,7 +126,7 @@ lines:
situation: [observation]
trigger: first_sound_heard
mood: [focused]
priority: tutorial
priority: 8
cooldown: -1
tags: [tutorial, sound, perception, analytical]
notes: >
@@ -134,7 +145,7 @@ lines:
situation: [observation]
trigger: first_off_screen_sound
mood: [focused]
priority: tutorial
priority: 6
cooldown: -1
tags: [tutorial, sound, perception, analytical]
notes: >
@@ -157,7 +168,7 @@ lines:
situation: [social, observation]
trigger: first_npc_proximity
mood: [focused]
priority: tutorial
priority: 8
cooldown: -1
tags: [tutorial, npc, interaction, analytical]
notes: >
@@ -177,7 +188,7 @@ lines:
situation: [social, investigation]
trigger: first_npc_face_read
mood: [focused]
priority: tutorial
priority: 6
cooldown: -1
tags: [tutorial, npc, observation, analytical, authority]
notes: >
@@ -200,7 +211,7 @@ lines:
situation: [routine]
trigger: first_insert_open
mood: [focused]
priority: tutorial
priority: 8
cooldown: -1
tags: [tutorial, insert, hud, analytical]
notes: >
@@ -219,7 +230,7 @@ lines:
situation: [investigation, routine]
trigger: first_insert_contact_flag
mood: [focused]
priority: tutorial
priority: 6
cooldown: -1
tags: [tutorial, insert, hud, lattice, investigation]
notes: >
@@ -1,5 +1,5 @@
character: smuggler
location: contradiction-detected
location: contradiction
lines:
# Contradiction Monologue — Ticket #552 — Sera/Kael FRIEND Arc (Smuggler perspective)
# Authored per D-083 (contradiction detection pipeline) and Paula Round 2 Mellanie spec
@@ -18,13 +18,17 @@ lines:
# gut reaction, not analytical procedure.
#
# Phase 2 lines: first observation — Kael in B-7 with unknown contact.
# Prerequisites: KG entry for Kael has state: Contradicted, source: ToldBy(Kael Davan)
# Prerequisite: KG entry for Kael has state: Contradicted, source: ToldBy(Kael Davan)
# Phase 3 lines: behavioral pattern already accumulating — increased lattice checking,
# shortened interactions, early exits from break room.
# Prerequisites: Phase 2 + Kael's behavioral anomalies observed (count 2).
# Prerequisite: Phase 2 + Kael's behavioral anomalies observed (count >= 2).
#
# ID discriminator: _con_ marks contradiction lines per Q-028 pending resolution.
# cooldown: -1 — one-time events. Should not repeat.
#
# Note: contradiction_detected is a new trigger type — requires server-side implementation
# in monologue.rs (ticket #550). Secondary beat lines use lower priority for sequencing;
# server team should implement delay_after_trigger_ticks for proper 3-5 second gap.
# -----------------------------------------------------------------------
# PHASE 2 — Primary beat (fires on contradiction_detected, immediate)
@@ -32,19 +36,15 @@ lines:
- id: pc-smuggler_m_s_con_001
text: "Kael said second shift was clear. He's in B-7. With someone I don't know."
role: player_character
access: [public]
trust: real
situation: [investigation, observation, contradiction]
situation: [investigation, observation]
trigger: contradiction_detected
mood: [focused, anxious]
priority: 10
cooldown: -1
phase: 2
prerequisites:
- entity: "npc:kael-davan"
state: Contradicted
- source_name: "Kael Davan"
prerequisite:
entities:
- id: "npc:kael-davan"
state: Contradicted
tags: [contradiction, friend-arc, kael, phase-2, operational]
notes: >
Primary line — three beats, three facts. 'Kael said' names the source (friend register,
@@ -54,19 +54,15 @@ lines:
- id: pc-smuggler_m_s_con_002
text: "That's Kael. Restricted corridor. Unrecognized contact. Kael doesn't come to B-7."
role: player_character
access: [public]
trust: real
situation: [investigation, observation, contradiction]
situation: [investigation, observation]
trigger: contradiction_detected
mood: [focused]
priority: 9
cooldown: -1
phase: 2
prerequisites:
- entity: "npc:kael-davan"
state: Contradicted
- source_name: "Kael Davan"
prerequisite:
entities:
- id: "npc:kael-davan"
state: Contradicted
tags: [contradiction, friend-arc, kael, phase-2, operational]
notes: >
Alternate primary — catalog format. 'That's Kael' opens with identification, not alarm:
@@ -76,19 +72,15 @@ lines:
- id: pc-smuggler_m_s_con_003
text: "He's in B-7. He told me he'd be heading home after shift. One of those isn't the case."
role: player_character
access: [public]
trust: real
situation: [investigation, observation, contradiction]
situation: [investigation, observation]
trigger: contradiction_detected
mood: [focused, anxious]
priority: 9
cooldown: -1
phase: 2
prerequisites:
- entity: "npc:kael-davan"
state: Contradicted
- source_name: "Kael Davan"
prerequisite:
entities:
- id: "npc:kael-davan"
state: Contradicted
tags: [contradiction, friend-arc, kael, phase-2]
notes: >
Alternate primary — echoes the Paula canonical structure (observation / prior claim /
@@ -99,47 +91,42 @@ lines:
# -----------------------------------------------------------------------
# PHASE 2 — Secondary beat (gut-level recalibration, operational containment)
# Server team (#550): implement delay_after_trigger_ticks: 90 for 3-5s gap.
# -----------------------------------------------------------------------
- id: pc-smuggler_m_s_con_004
text: "Maybe there's a reason. There's always a reason. But Kael knows better than to run a meeting in a maintenance corridor without telling me."
role: player_character
access: [public]
trust: real
situation: [investigation, reflection, contradiction]
trigger: contradiction_processing
situation: [investigation, alone]
trigger: contradiction_detected
mood: [focused, anxious]
priority: 10
priority: 7
cooldown: -1
phase: 2
prerequisites:
- entity: "npc:kael-davan"
state: Contradicted
- source_name: "Kael Davan"
tags: [contradiction, friend-arc, kael, phase-2, cognitive-dissonance]
prerequisite:
entities:
- id: "npc:kael-davan"
state: Contradicted
tags: [contradiction, friend-arc, kael, phase-2, cognitive-dissonance, secondary-beat]
notes: >
Secondary beat — fires 3-5 seconds after primary. Self-challenge first: the smuggler
gives Kael benefit of the doubt, then immediately walks it back with operational
logic. 'There's always a reason' is the street-smart equivalent of epistemic
containment — she's seen strange things before. The closing line is where the alarm
lives: this isn't strange, it's a protocol violation.
Lower priority (7) ensures primary lines fire first; server team should implement
delay_after_trigger_ticks for proper sequencing.
- id: pc-smuggler_m_s_con_005
text: "Don't assume. Could be he's running something for Nils I wasn't told about. Could be something else. The second thing is the problem."
role: player_character
access: [public]
trust: real
situation: [investigation, reflection, contradiction]
trigger: contradiction_processing
situation: [investigation, alone]
trigger: contradiction_detected
mood: [focused]
priority: 9
priority: 6
cooldown: -1
phase: 2
prerequisites:
- entity: "npc:kael-davan"
state: Contradicted
- source_name: "Kael Davan"
tags: [contradiction, friend-arc, kael, phase-2, operational, cognitive-dissonance]
prerequisite:
entities:
- id: "npc:kael-davan"
state: Contradicted
tags: [contradiction, friend-arc, kael, phase-2, operational, cognitive-dissonance, secondary-beat]
notes: >
Alternate secondary beat. 'Don't assume' is the smuggler's self-instruction (operational
discipline). Two possibilities held open: ring-authorized (names Nils — the coordinator)
@@ -154,21 +141,16 @@ lines:
- id: pc-smuggler_m_s_con_006
text: "He's been distracted for three days. Lattice checks every few minutes, leaving lunch early. Now a B-7 meeting with someone outside the ring. Kael's working an angle he hasn't told me about."
role: player_character
access: [public]
trust: real
situation: [investigation, observation, contradiction]
situation: [investigation, observation]
trigger: contradiction_detected
mood: [focused, anxious]
priority: 10
cooldown: -1
phase: 3
prerequisites:
- entity: "npc:kael-davan"
state: Contradicted
- source_name: "Kael Davan"
- pattern: kael_behavioral_anomaly
count_min: 2
prerequisite:
entities:
- id: "npc:kael-davan"
state: Contradicted
tells_observed: 2
tags: [contradiction, friend-arc, kael, phase-3, pattern-recognition, operational]
notes: >
Phase 3 primary — connects all accumulated behavioral data to the contradiction. Fragment
@@ -176,24 +158,21 @@ lines:
conclusion without naming its implication: 'working an angle' is street-smart language
for running something unauthorized, but the smuggler doesn't say 'exit attempt' —
she doesn't know that yet.
Note: tells_observed is a proposed prerequisite field — server team (#550) to implement
or simplify to a different check.
- id: pc-smuggler_m_s_con_007
text: "Kael doesn't run his own contacts. Devra handles external. So either Devra knows about this, or Kael's outside protocol. Neither's good."
role: player_character
access: [public]
trust: real
situation: [investigation, observation, contradiction]
situation: [investigation, observation]
trigger: contradiction_detected
mood: [focused]
priority: 9
cooldown: -1
phase: 3
prerequisites:
- entity: "npc:kael-davan"
state: Contradicted
- source_name: "Kael Davan"
- pattern: kael_behavioral_anomaly
count_min: 2
prerequisite:
entities:
- id: "npc:kael-davan"
state: Contradicted
tells_observed: 2
tags: [contradiction, friend-arc, kael, phase-3, operational]
notes: >
Alternate Phase 3 — operational knowledge applied. The smuggler knows ring structure:
@@ -204,21 +183,16 @@ lines:
- id: pc-smuggler_m_s_con_008
text: "He's been somewhere else in his head all week. Now I know why. Whoever that was — not ring. Kael's looking for a way out."
role: player_character
access: [public]
trust: real
situation: [investigation, observation, contradiction]
situation: [investigation, observation]
trigger: contradiction_detected
mood: [anxious]
priority: 8
cooldown: -1
phase: 3
prerequisites:
- entity: "npc:kael-davan"
state: Contradicted
- source_name: "Kael Davan"
- pattern: kael_behavioral_anomaly
count_min: 2
prerequisite:
entities:
- id: "npc:kael-davan"
state: Contradicted
tells_observed: 2
tags: [contradiction, friend-arc, kael, phase-3, intuition]
notes: >
Alternate Phase 3 — gut read, highest emotional weight. 'Somewhere else in his head'
@@ -19,7 +19,19 @@ lines:
# No analytical distance — the smuggler reads, reacts, files, moves on.
# ID discriminator: _tut_ per sprint briefing.
# cooldown: -1 — fire once, never repeat.
# priority: tutorial — higher than general pool lines.
# priority: 8 (primary, one per trigger type), 6 (secondary variant, mood-weighted alternate).
#
# Schema corrections (Gestalt review, Sprint 17):
# priority: string "tutorial" → integer. All other monologue files use integer priority;
# string value would fail engine parse in monologue.rs.
# situation: removed invalid values (movement, exploration) not in D-035 13-situation
# enum. Replaced with arrival, routine, observation per actual trigger context.
# mood: [focused] retained where set; valid per D-035 Sprint 14 amendment.
#
# Trigger types (first_move, first_new_section, first_fog_encounter, first_fog_edge,
# first_sound_heard, first_off_screen_sound, first_npc_proximity, first_npc_face_read,
# first_insert_open, first_insert_contact_flag) are extended trigger enum values not in
# D-035 v0.1 set — require server-side implementation in monologue.rs.
# -----------------------------------------------------------------------
# MOVEMENT / EXPLORATION
@@ -30,10 +42,10 @@ lines:
role: player_character
access: [public]
trust: surface
situation: [movement, exploration]
situation: [arrival, routine]
trigger: first_move
mood: [focused]
priority: tutorial
priority: 8
cooldown: -1
tags: [tutorial, movement, navigation]
notes: >
@@ -47,10 +59,10 @@ lines:
role: player_character
access: [public]
trust: surface
situation: [movement, routine]
situation: [arrival, routine]
trigger: first_new_section
mood: [content]
priority: tutorial
priority: 6
cooldown: -1
tags: [tutorial, movement, navigation, operational]
notes: >
@@ -68,10 +80,10 @@ lines:
role: player_character
access: [public]
trust: surface
situation: [observation, exploration]
situation: [observation]
trigger: first_fog_encounter
mood: [focused]
priority: tutorial
priority: 8
cooldown: -1
tags: [tutorial, fog, perception]
notes: >
@@ -88,7 +100,7 @@ lines:
situation: [observation]
trigger: first_fog_edge
mood: [focused]
priority: tutorial
priority: 6
cooldown: -1
tags: [tutorial, fog, perception]
notes: >
@@ -109,7 +121,7 @@ lines:
situation: [observation]
trigger: first_sound_heard
mood: [focused]
priority: tutorial
priority: 8
cooldown: -1
tags: [tutorial, sound, perception]
notes: >
@@ -127,7 +139,7 @@ lines:
situation: [observation]
trigger: first_off_screen_sound
mood: [content]
priority: tutorial
priority: 6
cooldown: -1
tags: [tutorial, sound, perception, operational]
notes: >
@@ -149,7 +161,7 @@ lines:
situation: [social, observation]
trigger: first_npc_proximity
mood: [content]
priority: tutorial
priority: 8
cooldown: -1
tags: [tutorial, npc, interaction, social]
notes: >
@@ -167,7 +179,7 @@ lines:
situation: [social, observation]
trigger: first_npc_face_read
mood: [content]
priority: tutorial
priority: 6
cooldown: -1
tags: [tutorial, npc, observation, social]
notes: >
@@ -188,7 +200,7 @@ lines:
situation: [routine]
trigger: first_insert_open
mood: [content]
priority: tutorial
priority: 8
cooldown: -1
tags: [tutorial, insert, hud, operational]
notes: >
@@ -205,7 +217,7 @@ lines:
situation: [routine, social]
trigger: first_insert_contact_flag
mood: [content, warm]
priority: tutorial
priority: 6
cooldown: -1
tags: [tutorial, insert, hud, kael, friend-arc]
notes: >