# Eavesdrop Pipeline — D-071, D-072, D-078 # Overheard NPC-to-NPC conversation: occlusion filter (server-authoritative), # ListeningFocus boost, passive dialogue panel, dual-channel principle. vars: { color-bg: "#2a3040" color-stroke: "#333340" color-text: "#c8d0e0" color-accent: "#c8d8f0" color-dim: "#1a1e24" } direction: down npc_convo: NPC-to-NPC Conversation\n(authored at full fidelity by copy team) { shape: oval style.fill: ${color-bg} style.stroke: ${color-accent} style.font-color: ${color-text} } murmur: Universal Murmur Asset (D-072)\nsingle asset plays everywhere { shape: package style.fill: ${color-bg} style.stroke: ${color-stroke} style.font-color: ${color-text} } zone_ambient: Zone Ambient Level { shape: diamond style.fill: ${color-bg} style.stroke: ${color-stroke} style.font-color: ${color-text} } conspicuousness: Conversation Conspicuousness { style.fill: ${color-dim} style.stroke: ${color-stroke} style.font-color: ${color-text} bar: Bar (high ambient)\nhidden in murmur, needs proximity { style.fill: ${color-bg} style.stroke: ${color-stroke} style.font-color: ${color-text} } workplace: Workplace (moderate)\nsemi-conspicuous, distance-dependent { style.fill: ${color-bg} style.stroke: ${color-stroke} style.font-color: ${color-text} } corridor: Corridor (low ambient)\nconspicuous, audible from distance { style.fill: ${color-bg} style.stroke: ${color-accent} style.font-color: ${color-text} } } server_occlusion: Server-side Occlusion Filter (D-078)\nper-word probability roll { style.fill: ${color-bg} style.stroke: ${color-accent} style.font-color: ${color-text} style.border-radius: 4 factors: Factors: distance · ambient noise\n· ListeningFocus stance { style.fill: ${color-dim} style.stroke: ${color-stroke} style.font-color: ${color-text} } stochastic: Stochastic per word\n(same scene can yield different fragments) { style.fill: ${color-dim} style.stroke: ${color-accent} style.font-color: ${color-text} } seeded: Seedable RNG per tick\n→ deterministic replay (D-010) { style.fill: ${color-dim} style.stroke: ${color-stroke} style.font-color: ${color-text} } } listen_focus: ListeningFocus Boost (D-071)\nWorld SFX +2 to +3dB\nstationary 30+ ticks { style.fill: ${color-bg} style.stroke: ${color-accent} style.font-color: ${color-text} style.border-radius: 4 } no_ambient_dip: No Ambient Dip for Eavesdrop\n(opposite of direct conversation dip) { style.fill: ${color-dim} style.stroke: ${color-stroke} style.font-color: ${color-text} style.stroke-dash: 4 } occluded_text: Pre-occluded text\n(words → "..." per roll) { shape: page style.fill: ${color-dim} style.stroke: ${color-stroke} style.font-color: ${color-text} } passive_panel: Passive Dialogue Panel (D-078)\n(D-061 box, read-only) { style.fill: ${color-bg} style.stroke: ${color-accent} style.font-color: ${color-text} style.border-radius: 4 speaker_label: Speaker format (e.g. Kael to Mira) { style.fill: ${color-dim} style.stroke: ${color-stroke} style.font-color: ${color-text} } reduced_opacity: Reduced opacity (0.9)\nvs active dialogue { style.fill: ${color-dim} style.stroke: ${color-stroke} style.font-color: ${color-text} } no_responses: No response options { style.fill: ${color-dim} style.stroke: ${color-stroke} style.font-color: ${color-text} } } monologue_channel: Monologue Channel\n(D-016 — separate pipeline) { style.fill: ${color-dim} style.stroke: ${color-stroke} style.font-color: ${color-text} witness_trigger: witness_interaction trigger\n→ character's reaction { style.fill: ${color-bg} style.stroke: ${color-stroke} style.font-color: ${color-text} } separate: Character reaction\n(thought · never quoted speech) { style.fill: ${color-bg} style.stroke: ${color-stroke} style.font-color: ${color-text} } } kg_entry: KnowledgeGraph entry\n(KnowsOf confidence unless\nListeningFocus + proximity → KnowsDetails) { shape: cylinder style.fill: ${color-bg} style.stroke: ${color-accent} style.font-color: ${color-text} } npc_convo -> murmur: "audio" { style.stroke: ${color-stroke} } npc_convo -> zone_ambient: "text goes through" { style.stroke: ${color-accent} } murmur -> zone_ambient: "conspicuousness shaped by" { style.stroke: ${color-stroke} } zone_ambient -> conspicuousness zone_ambient -> server_occlusion: "noise penalty" { style.stroke: ${color-stroke} } listen_focus -> server_occlusion: "probability curve shift" { style.stroke: ${color-accent} } no_ambient_dip -> listen_focus: "instead of dip" { style.stroke: ${color-stroke}; style.stroke-dash: 4 } server_occlusion -> occluded_text: "pre-occluded text sent to client" { style.stroke: ${color-accent} } occluded_text -> passive_panel: "client renders exactly what it receives" { style.stroke: ${color-accent} } passive_panel -> monologue_channel: "triggers witness_interaction" { style.stroke: ${color-stroke} style.stroke-dash: 4 } passive_panel -> kg_entry: "overheard info enters KG" { style.stroke: ${color-accent} }