# UI Microcopy — The Settled Reach v0.1 # # Ticket: #409 | Sprint: 5 # Author: Mellanie (Copywriter) # Date: 2026-02-13 # # All player-facing UI text. Organized by category. # Voice: Sova Transit District (D-036) — working-class pragmatic, quotidian-with-undertow. # Diegetic frame: most UI elements are neural insert overlays, not game chrome. # # Integration: Stig imports these into client/scripts/constants/ or reads at runtime. # Keys are stable identifiers. Values are display strings. # ============================================================ # INTERACTION PROMPTS # Displayed as "E - {label}" when player is near an interactable. # Server sends verb kind + label. These are the canonical labels. # Keep short: max 12 characters. Must read instantly during gameplay. # ============================================================ interaction_verbs: talk: "Talk" examine_npc: "Look" examine_object: "Examine" read: "Read" pick_up: "Pick up" use: "Use" open: "Open" listen: "Listen" # ============================================================ # RELATIONSHIP STATE DESCRIPTORS # Shown in knowledge panel when player inspects an entity. # Maps to RelationshipState enum (server/src/knowledge/types.rs). # These should feel like insert-generated assessments, not game labels. # ============================================================ relationship_states: unknown: label: "Unknown" description: "No prior contact." known: label: "Recognized" description: "Seen before. No relationship established." friendly: label: "Trusted" description: "Known contact. Cooperative." person_of_interest: label: "Flagged" description: "Behavioral anomaly noted." hostile: label: "Hostile" description: "Known threat." # ============================================================ # HUD LABELS # Top-level HUD elements. Diegetic: these are the insert's status readouts. # Format mirrors a low-key neural overlay — terse, functional. # ============================================================ hud: health: "Condition" health_values: full: "Normal" wounded: "Injured" critical: "Critical" time_prefix: "" # No prefix — time displays as raw value (e.g., "14:30") perception_mode_prefix: "" # No prefix — mode name displays directly # ============================================================ # PERCEPTION MODE LABELS # The insert's active sensing mode. Per D-017. # Smuggler has Baseline. Detective has Standard Professional. # Labels should feel like the insert's own status readout. # ============================================================ perception_modes: standard: "Standard" analytical: "Analytical" social: "Social" surveillance: "Surveillance" # ============================================================ # NOTIFICATION TEXT # Brief messages that appear when game state changes. # Max 40 characters. Must read in under 2 seconds. # Diegetic: these are insert alerts, not achievement popups. # ============================================================ notifications: # Location discovery location_discovered: "New location logged." location_revisit: "Returning to {location}." # NPC knowledge contact_new: "New contact: {name}." contact_updated: "Contact updated: {name}." contact_flagged: "{name} flagged." # Relationship shifts relationship_improved: "{name} — trust increased." relationship_degraded: "{name} — trust decreased." relationship_hostile: "{name} — hostile." # Evidence / observation evidence_found: "Evidence logged." anomaly_detected: "Anomaly noted." pattern_recognized: "Pattern flagged." # System save_complete: "Progress saved." load_complete: "Session restored." save_failed: "Save failed." load_failed: "Load failed." connection_lost: "Signal interrupted." connection_restored: "Signal restored." loading: "Resuming..." # ============================================================ # KNOWLEDGE PANEL LABELS # When the player opens the knowledge view to review what they know. # Insert-flavored: reads like a personal filing system, not a game menu. # ============================================================ knowledge_panel: tab_contacts: "Contacts" tab_locations: "Locations" tab_evidence: "Notes" section_known_attributes: "Known" section_last_seen: "Last seen" section_relationship: "Status" section_observations: "Observations" empty_state: "Nothing logged yet." confidence_high: "Confirmed" confidence_medium: "Likely" confidence_low: "Unconfirmed" confidence_rumor: "Hearsay" # D-041 KnowledgeConfidence levels — displayed in journal panel confidence_direct: "Confirmed" confidence_knowsdetails: "Detailed" confidence_knowsof: "Known" confidence_suspects: "Unconfirmed" # D-041 KnowledgeSource labels — displayed in journal panel source_directobservation: "Observed" source_toldby: "Told" source_heard: "Overheard" source_inferred: "Inferred" source_background: "Prior" # ============================================================ # TUTORIAL TEXT (DIEGETIC) # Delivered via internal monologue (D-016), not UI overlay. # These are NOT traditional tutorial prompts. They're the character # thinking about what they can do, filtered through their voice. # Smuggler and detective variants are in the monologue pools. # These are the GENERIC fallback strings if monologue doesn't fire. # ============================================================ tutorial_prompts: move_hint: "Use the directional keys to move." interact_hint: "Press E near someone to interact." examine_hint: "Press E to take a closer look." listen_hint: "Move closer to overhear conversations." monologue_hint: "Your thoughts appear as text on screen." perception_hint: "Switch perception modes to see differently." minimap_hint: "The overlay shows the area around you." knowledge_hint: "Open your notes to review what you know." # ============================================================ # DIALOGUE # Text displayed during dialogue interactions. # D-063: Confrontation beat monologue — character's internal hesitation. # ============================================================ dialogue: confrontation_beat: "This changes things. No taking it back." # ============================================================ # MENU AND SYSTEM TEXT # Non-diegetic. Standard game UI. Clean, no flavor text. # ============================================================ menu: pause_title: "Paused" resume: "Resume" new_game: "New Game" continue: "Continue" settings: "Settings" save_game: "Save" load_game: "Load" quit_to_menu: "Quit to Menu" quit_game: "Quit" confirm_quit: "Unsaved progress will be lost." confirm_yes: "Yes" confirm_no: "No" load_game_browse: "LOAD GAME" load_game_back: "BACK" load_game_empty: "No saves found." settings: audio_volume: "Volume" text_size: "Text Size" text_speed: "Text Speed" fullscreen: "Fullscreen" language: "Language" # #646: AI-Enhanced Dialogue toggle (D-138) ai_section_header: "AI DIALOGUE" ai_dialogue_toggle: "AI-Enhanced Dialogue" ai_status_checking: "Speed not yet measured — will check on first enable." ai_status_ram_marginal: "Low memory — performance may vary." ai_battery_warning: "High battery usage" # ============================================================ # CHARACTER SELECTION (if applicable in v0.1) # ============================================================ character_select: title: "Choose your perspective." smuggler_name: "Logistics Operator" smuggler_tagline: "You know these people. You know the work. You know what's at stake." detective_name: "Commission Investigator" detective_tagline: "The manifests don't add up. Someone in this district knows why." confirm: "Begin" # #588: Card display strings — name, role, tone per archetype smuggler_card_name: "Smuggler" smuggler_card_role: "Freight logistics worker — Sova Transit" smuggler_card_tone: "Insider access. Social camouflage. The ring is your daily life." detective_card_name: "Detective" detective_card_role: "Commission investigator — External assignment" detective_card_tone: "Institutional authority. Analytical lattice. You were sent here." character_creation: btn_back: "[ESC] Back" btn_randomize: "[R] Randomize" btn_start: "[ENTER] Start" btn_rotate_left: "[Q] ◄" btn_rotate_right: "► [E]" search_placeholder: "Search…"