Files
BreakEscape/scenarios/ink/ONGOING_CONVERSATIONS_README.md
Z. Cliffe Schreuders b982158ce5 refactor: Move ink source files to scenarios/ink and add compilation script
Consolidated all ink source files into scenarios/ink directory for better
organization. All ink source files and documentation are now in the same
location as their compiled JSON output.

Changes:
1. Moved all .ink source files from story_design/ink/ to scenarios/ink/
   - chen_hub.ink and supporting files
   - netherton_hub.ink and supporting files
   - haxolottle_hub.ink and supporting files
   - All other ink source files

2. Moved documentation files to scenarios/ink/
   - INK_BEST_PRACTICES.md
   - NPC_HUB_ARCHITECTURE.md
   - ONGOING_CONVERSATIONS_README.md
   - README.md

3. Added scripts/compile-ink.sh
   - Automatically compiles all .ink files in scenarios/ink/
   - Outputs JSON to the same directory
   - Shows colored output with success/failure status
   - Provides compilation summary

Usage:
  ./scripts/compile-ink.sh

This consolidates the ink development workflow into a single directory
and provides an easy way to recompile all ink files after making changes.
2025-11-19 13:44:30 +00:00

20 KiB

Haxolottle Ongoing Conversations System

Overview

This system provides a progressive, drip-fed friendship development between the player (Agent 0x00) and their handler (Agent 0x99 "Haxolottle") across multiple missions. Conversations deepen naturally over time while respecting SAFETYNET's identity protection protocols.

Design Philosophy

Core Principles

  1. Genuine Friendship Within Constraints: Build a real emotional bond between characters who can never know each other's real identities
  2. Progressive Revelation: Unlock deeper, more vulnerable topics as friendship develops
  3. Drip-Fed Content: Spread conversations across 15+ missions to create long-term investment
  4. Respect Protocol 47-Alpha: Characters can share personal interests, philosophies, fears—but never identifying information
  5. Emotional Authenticity: Make the constraint itself part of the emotional depth, not just a limitation

What Makes This Different

Unlike the general lore exploration hub, these conversations:

  • Are specifically with Haxolottle (not generic NPC system)
  • Build a single ongoing relationship over time
  • Track emotional progression (friendship_level 0-100)
  • Unlock based on mission count, not just influence
  • Explore vulnerability, personal loss, philosophical questions
  • Address the burden of hidden identities directly

Files

haxolottle_ongoing_conversations.ink

Missions 1-10 (Phases 1-2)

Phase 1 Topics (Missions 1-5):

  • General hobbies and interests
  • The axolotl obsession deep dive
  • Music taste and preferences
  • Coffee/tea preferences
  • Stress management strategies

Phase 2 Topics (Missions 6-10):

  • How philosophy has evolved over years
  • What handler life is really like
  • Nostalgia for field work
  • Weird habits developed from the job
  • Favorite past operations
  • Difficult day/personal struggle moment

haxolottle_ongoing_conversations_advanced.ink

Missions 11+ (Phases 3-4)

Phase 3 Topics (Missions 11-15):

  • Fears and anxieties about the work
  • "What if I'd chosen differently?" alternate life discussion
  • Meaning and purpose of the work
  • Friendship within constraints
  • Dreams for the future
  • Personal loss story (high friendship)

Phase 4 Topics (Missions 16+):

  • The burden of hidden identity
  • Loneliness of secrecy
  • Temptation to share real names
  • What happens after SAFETYNET?
  • Explicit friendship acknowledgment
  • Secret hobby reveal (poetry writing)

Progression System

Friendship Level Tracking

VAR friendship_level = 0  // 0-100 scale

Friendship Level Gains:

  • Basic conversation: +3 to +5
  • Thoughtful question: +8 to +12
  • Personal sharing by player: +10 to +20
  • Vulnerable mutual sharing: +20 to +40
  • Deep trust moments: +40 to +65

Friendship Level Gates:

Level What Unlocks
0-20 Basic topics only
20-40 Some personal topics
40-60 Vulnerable conversations
60-80 Deep friendship topics
80-100 Most intimate revelations

Mission-Based Unlocking

VAR missions_together = current_mission_number

Conversations are gated by both friendship level AND mission count:

  • Prevents rushing through all content immediately
  • Creates natural pacing across campaign
  • Rewards long-term player investment

Additional Tracking Variables

VAR conversations_had = 0           // Total personal conversations
VAR trust_moments = 0               // Times genuine trust was shown
VAR humor_shared = 0                // Funny moments together
VAR vulnerable_moments = 0          // Times vulnerability was shared
VAR player_shared_personal = 0      // Player openness counter

These create a rich profile of the relationship that can be referenced later.

Topic Structure

Typical Conversation Flow

Hub → Topic Selection → Main Content → Player Choice → Response → Return to Hub

Each topic:

  1. Sets discussion flag (talked_X = true) to prevent repetition
  2. Grants friendship points based on depth
  3. Increments conversation counter
  4. Offers player choices that affect friendship
  5. May unlock related topics or special moments

Player Choice Types

Supportive Choices (+10 to +20 friendship):

  • Express understanding
  • Offer comfort
  • Affirm Haxolottle's feelings

Sharing Choices (+15 to +35 friendship):

  • Reveal player's similar experiences
  • Share personal struggles (within protocol)
  • Mutual vulnerability

Humor Choices (+5 to +15 friendship):

  • Gentle teasing
  • Shared jokes
  • Light moments

Analytical Choices (+8 to +15 friendship):

  • Ask deeper questions
  • Explore philosophical angles
  • Challenge thoughtfully

Protocol 47-Alpha Integration

What Can Be Shared

Per Regulation 847 and Protocol 180, agents may discuss:

Allowed:

  • Personal interests and hobbies (swimming, reading, music)
  • Philosophies and worldviews
  • Emotional struggles and fears
  • Past operational experiences (anonymized)
  • Future dreams and aspirations
  • Stress management techniques
  • Weird habits and quirks
  • Creative outlets (poetry, art, etc.)

Forbidden:

  • Real names
  • Home addresses
  • Family member names/details
  • Specific previous employment (if identifying)
  • Educational institutions (if identifying)
  • Unique biographical details
  • Any identifying personal information

How Characters Navigate This

The conversations themselves explore this constraint:

Haxolottle: I don't need to know your real name to know you're
a good person who cares about doing this work right.

The limitation becomes part of the depth, not just a restriction.

Integration Guide

Adding to Missions

Option 1: Downtime Moments

=== mission_safe_moment ===
You've reached a secure location. Your phone buzzes with a message.

+ [Check message from Haxolottle]
    -> start_haxolottle_conversation
+ [Focus on mission]
    -> continue_mission

Option 2: Post-Mission Debrief

=== mission_complete_debrief ===
#speaker:agent_haxolottle
Haxolottle: Good work today. Before we close out... got a minute to talk?
Not about the mission—just... talk?

+ [Sure, let's talk]
    -> start_haxolottle_conversation
+ [Maybe next time]
    -> end_debrief

Option 3: Pre-Mission Ritual

=== mission_briefing_complete ===
#speaker:agent_haxolottle
Haxolottle: Briefing done. You've got 15 minutes before deployment.
Want to chat and decompress before the operation?

+ [Let's talk for a bit]
    -> start_haxolottle_conversation
+ [I'll use the time to prepare]
    -> mission_prep

Entry Points

// For missions 1-10
-> start  // in haxolottle_ongoing_conversations.ink

// For missions 11-15
-> phase_3_hub  // in haxolottle_ongoing_conversations_advanced.ink

// For missions 16+
-> phase_4_hub  // in haxolottle_ongoing_conversations_advanced.ink
  • Missions 1-5: Offer conversation every 1-2 missions
  • Missions 6-10: Offer every 1-2 missions, some optional
  • Missions 11-15: Offer every 2-3 missions (deeper content)
  • Missions 16+: Offer as special moments, not every mission

Rule of thumb: Don't force it. Let players initiate when they want deeper connection.

Emotional Arcs

Phase 1 (Missions 1-5): Getting to Know You

Tone: Light, friendly, establishing rapport Topics: Hobbies, interests, surface-level personal info Goal: Build basic friendship and comfort

Key moments:

  • Discovering the axolotl obsession
  • Finding shared interests
  • First vulnerable admission (stress management)

Phase 2 (Missions 6-10): Deepening Connection

Tone: More personal, some vulnerability Topics: Philosophy, handler life reality, past experiences Goal: Establish genuine trust

Key moments:

  • Haxolottle shares haunting decision
  • Discussion of gray areas in work
  • Acknowledging weird habits together

Phase 3 (Missions 11-15): Genuine Friendship

Tone: Vulnerable, honest, meaningful Topics: Fears, alternate paths, meaning of work Goal: Create deep emotional bond

Key moments:

  • Mutual fear sharing
  • "Friendship within constraints" discussion
  • Personal loss revelation

Phase 4 (Missions 16+): Deep Bond

Tone: Intimate (platonically), questioning identity Topics: Identity burden, name temptation, lasting friendship Goal: Acknowledge profound connection despite constraints

Key moments:

  • Temptation to share real names
  • Explicit friendship acknowledgment
  • Secret hobby reveal
  • "You're one of my closest friends" moment

Special High-Friendship Events

The Personal Loss Story

Requirement: friendship_level >= 70, Phase 3+ Trigger: -> hax_personal_loss

Haxolottle shares story of losing someone important when choosing SAFETYNET. Major vulnerability moment.

The Secret Hobby Reveal

Requirement: friendship_level >= 85, Phase 4 Trigger: -> hax_secret_hobby

Haxolottle reveals they write poetry to process the work. Can share a poem if player wants.

The Name Temptation

Requirement: friendship_level >= 75, Phase 4 Trigger: -> name_temptation

Explicit discussion of wanting to share real names but choosing not to for safety. Most direct addressing of Protocol 47-Alpha's emotional cost.

The Friendship Acknowledgment

Requirement: friendship_level >= 80, Phase 4 Trigger: -> friendship_acknowledgment

Haxolottle explicitly states player is one of their closest friends. Can reach friendship_level 90-100.

Variable Reference

Core Tracking

VAR friendship_level = 0            // 0-100 overall relationship
VAR missions_together = 0           // Mission count
VAR conversations_had = 0           // Total personal conversations
VAR trust_moments = 0               // Genuine trust shown
VAR humor_shared = 0                // Funny moments together
VAR vulnerable_moments = 0          // Vulnerability shared
VAR player_shared_personal = 0      // Player openness

Phase 1 Topics (Missions 1-5)

VAR talked_hobbies_general = false
VAR talked_axolotl_obsession = false
VAR talked_music_taste = false
VAR talked_coffee_preferences = false
VAR talked_stress_management = false

Phase 2 Topics (Missions 6-10)

VAR talked_philosophy_change = false
VAR talked_handler_life = false
VAR talked_field_nostalgia = false
VAR talked_weird_habits = false
VAR talked_favorite_operations = false

Phase 3 Topics (Missions 11-15)

VAR talked_fears_anxieties = false
VAR talked_what_if_different = false
VAR talked_meaning_work = false
VAR talked_friendship_boundaries = false
VAR talked_future_dreams = false

Phase 4 Topics (Missions 16+)

VAR talked_identity_burden = false
VAR talked_loneliness_secrecy = false
VAR talked_real_name_temptation = false
VAR talked_after_safetynet = false
VAR talked_genuine_friendship = false

Special Events

VAR hax_shared_loss = false         // Personal loss story told
VAR hax_shared_doubt = false        // Shared professional doubts
VAR hax_shared_secret_hobby = false // Poetry writing revealed

Character Voice Guidelines

Haxolottle's Voice

Early Conversations (Phases 1-2):

  • Professional but warm
  • Occasional axolotl metaphors (not every conversation)
  • Supportive mentor energy
  • Some humor, mostly light

Later Conversations (Phases 3-4):

  • More vulnerable and honest
  • Philosophical and reflective
  • Direct about emotional realities
  • Still warm but with more weight

Key Phrases:

  • "Like an axolotl regenerating..." (adaptation metaphor)
  • "Protocol 47-Alpha says... but..."
  • "You're a good person, Agent {player_name}"
  • "That means more than you know"
  • "We're doing something impossible here"

Player Response Guidance

Players should have options to:

  1. Support - Offer comfort and understanding
  2. Share - Reveal their own experiences (within protocol)
  3. Question - Ask deeper or clarifying questions
  4. Deflect - Keep some distance if they choose

Avoid: Making player automatically vulnerable. Give them agency over how much they share.

Writing New Conversations

Template Structure

=== new_topic_name ===
#speaker:agent_haxolottle
~ talked_new_topic_name = true
~ friendship_level += [5-15 for basic, 15-30 for deep]
~ conversations_had += 1
~ [vulnerable_moments += 1 if appropriate]

[Haxolottle's opening about the topic]

[Content - 3-6 exchanges]

* [Player Choice 1 - Supportive]
    ~ friendship_level += [appropriate amount]
    ~ [possibly player_shared_personal += 1]
    You: [Player response]
    -> new_topic_response_1

* [Player Choice 2 - Sharing]
    ~ friendship_level += [higher amount]
    ~ player_shared_personal += [1-3]
    ~ trust_moments += [possibly 1-2]
    You: [Player shares something]
    -> new_topic_response_2

* [Player Choice 3 - Question or alternative]
    ~ friendship_level += [moderate amount]
    You: [Player asks or responds differently]
    -> new_topic_response_3

=== new_topic_response_1 ===
[Haxolottle's response to supportive choice]
~ friendship_level += [additional points]
-> [return to hub]

[Repeat for other responses]

Quality Checklist

  • Does it respect Protocol 47-Alpha? (No identifying info)
  • Does it advance friendship naturally?
  • Does it offer meaningful player choices?
  • Does Haxolottle's voice stay consistent?
  • Does it grant appropriate friendship points?
  • Does it mark the topic as discussed?
  • Does it return to hub properly?
  • Is it gated by appropriate friendship/mission levels?

Persistence Across Sessions

Required Variables to Save

friendship_level
missions_together
conversations_had
trust_moments
vulnerable_moments
player_shared_personal

// All "talked_X" flags
// All "hax_shared_X" flags
  • After each conversation
  • At mission completion
  • During autosave moments

Reset Considerations

Never Reset:

  • friendship_level
  • talked_X flags (topics should stay discussed)
  • hax_shared_X flags (special events shouldn't repeat)

Can Reset:

  • missions_together (if starting new campaign)
  • But consider carrying friendship over for NG+

Usage Examples

Example 1: Early Mission Downtime

=== safe_house_moment ===
You've secured the location. Time to catch your breath.

Your phone buzzes—message from Haxolottle.

+ [Read message]
    #speaker:agent_haxolottle
    Haxolottle: You've got some breathing room. Want to chat while you wait?
    ++ [Sure]
        {missions_together <= 5:
            -> phase_1_hub  // Early missions
        - missions_together <= 10:
            -> phase_2_hub  // Middle missions
        - missions_together <= 15:
            -> phase_3_hub  // Later missions
        - else:
            -> phase_4_hub  // Deep friendship
        }
    ++ [Maybe later]
        Haxolottle: No problem. Focus on the mission.
        -> continue_mission

Example 2: Post-Mission Check-In

=== mission_debrief_personal ===
#speaker:agent_haxolottle

{missions_together == 6:
    Haxolottle: Six missions together now. That's... that's starting to feel like a real partnership.
    Haxolottle: Not just professional—we're building something here, aren't we?
    -> phase_2_hub
- missions_together == 11:
    Haxolottle: Over ten missions. I don't know your real name, Agent {player_name}, but I know you. Really know you.
    Haxolottle: Want to talk about that?
    -> phase_3_hub
- else:
    Haxolottle: Good work today. Need to talk about anything?
    -> [appropriate hub based on mission count]
}

Example 3: Player-Initiated Conversation

=== player_phone_menu ===
You have a moment of downtime.

+ [Call Haxolottle]
    {friendship_level >= 30:
        -> call_haxolottle_friendly
    - else:
        -> call_haxolottle_professional
    }
+ [Continue mission]
    -> next_objective

=== call_haxolottle_friendly ===
#speaker:agent_haxolottle
Haxolottle: Hey! Not an emergency call, which is good. What's up?

+ [Just wanted to talk]
    Haxolottle: I'm glad you called. I could use a break from monitoring feeds anyway.
    -> [appropriate conversation hub]
+ [Actually, never mind]
    Haxolottle: No worries. I'm here if you need me.
    -> player_phone_menu

Narrative Impact

How This Affects the Overall Story

Early Game:

  • Establishes Haxolottle as more than just mission support
  • Creates emotional investment in handler-agent relationship
  • Provides relief from mission tension

Mid Game:

  • Deepens understanding of SAFETYNET culture
  • Explores ethical complexities through personal lens
  • Makes Protocol 47-Alpha feel real and consequential

Late Game:

  • Provides emotional anchor during intense missions
  • Demonstrates the personal cost of secret work
  • Creates genuine stakes beyond mission success

Player Investment Mechanisms

  1. Slow Burn: Relationship develops over 15+ missions
  2. Player Agency: Players choose how much to engage
  3. Mutual Vulnerability: Both characters share and grow
  4. Constrained Intimacy: Limitations create unique emotional texture
  5. Recognition: Haxolottle remembers and references past conversations

Future Expansion Ideas

Additional Conversation Paths

Crisis Moments:

  • Conversations triggered when player fails missions
  • Haxolottle helping player process mistakes
  • Rebuilding confidence together

Special Events:

  • Birthdays (handler and agent don't know each other's, discuss that)
  • SAFETYNET anniversaries
  • Milestone mission celebrations (50th, 100th)

Other Agents:

  • Haxolottle mentions their other agents (without details)
  • Player can ask about handler life juggling multiple agents
  • Discussions of different agent personalities

Philosophical Deep Dives:

  • Specific ethical dilemmas from missions
  • Theoretical discussions about surveillance vs. privacy
  • Debates about SAFETYNET's methods

Integration with Other Systems

Mission Performance Callbacks:

  • Haxolottle references player's approach styles
  • Discusses specific mission moments
  • Acknowledges player's growth

Lore System Integration:

  • Some conversations unlock LORE entries
  • LORE discoveries can trigger conversations
  • Deeper lore accessible through friendship

Multiple Handlers:

  • If player ever changes handlers, reference this friendship
  • Grief/adjustment to new handler
  • Staying in touch with Haxolottle in new role

Technical Notes

Performance Considerations

  • Hub pattern is efficient for branching
  • Boolean flags prevent re-computation
  • Friendship calculations are simple arithmetic
  • No complex nested conditionals

Testing Checklist

  • All conversation paths are reachable
  • Friendship gains are balanced
  • Phase gates work correctly
  • Variables persist across sessions
  • No orphaned diverts
  • Character voice is consistent
  • Protocol 47-Alpha is respected throughout
  • Player has meaningful choices
  • Conversations return to hub properly
  • Special events trigger at correct friendship levels

Common Pitfalls to Avoid

Don't:

  • Rush to Phase 4 content too quickly
  • Make Haxolottle reveal identifying information
  • Force vulnerability—let players choose
  • Repeat the axolotl metaphor every conversation
  • Make friendship_level increase too easily
  • Forget to mark topics as discussed
  • Break character voice in later phases

Do:

  • Let relationship develop naturally
  • Respect Protocol 47-Alpha as narrative element
  • Vary conversation tones (light and heavy)
  • Reference previous conversations
  • Give players agency over engagement depth
  • Make constraints part of the emotional story

Credits & References

Based On:

  • Character profile: Agent 0x99 "Haxolottle" (story_design/universe_bible/04_characters/safetynet/)
  • Character profile: Agent 0x00 (story_design/universe_bible/04_characters/safetynet/)
  • Rules of Engagement: Protocol 47-Alpha (story_design/universe_bible/02_organisations/safetynet/rules_of_engagement.md)
  • Ink Scripting Guide (story_design/story_dev_prompts/07_ink_scripting.md)

Design Philosophy:

  • Friendship despite constraints
  • Emotional authenticity within genre limits
  • Long-term player investment
  • Meaningful character development

Last Updated: 2025-11-18 Version: 1.0 Status: Ready for Integration