refactor: Add three-tier variable persistence system to NPC conversation files

Updated all three ongoing conversation files (Netherton, Chen, Haxolottle) with
clear PERSISTENT/GLOBAL/LOCAL variable annotations and proper scoping:

PERSISTENT variables:
- Save/load between game sessions
- Use scoped naming (npc_netherton_*, npc_chen_*, npc_haxolottle_*)
- Include all relationship stats, discussed topics, and special moments

GLOBAL variables:
- Session-only, span across NPCs
- total_missions_completed (replaces sequential mission tracking)
- professional_reputation

LOCAL variables:
- Conversation-specific EXTERNAL variables
- player_name, current_mission_id

This enables order-independent mission completion while maintaining
persistent conversation state across game sessions.
This commit is contained in:
Z. Cliffe Schreuders
2025-11-18 10:36:09 +00:00
parent 88b4722a81
commit 04a85f36cf
3 changed files with 884 additions and 852 deletions

File diff suppressed because it is too large Load Diff

View File

@@ -7,51 +7,63 @@
// Respects Protocol 47-Alpha: No real identity disclosure
// ===========================================
// Friendship progression tracking
VAR friendship_level = 0 // 0-100: Overall relationship depth
VAR missions_together = 0 // Counter for how many missions completed
VAR conversations_had = 0 // Total personal conversations
VAR trust_moments = 0 // Times player shared something personal
VAR humor_shared = 0 // Funny moments experienced together
VAR vulnerable_moments = 0 // Times either shared something difficult
// ===========================================
// PERSISTENT VARIABLES
// These MUST be saved/loaded between game sessions
// Your game engine must persist these across ALL missions
// ===========================================
// Conversation topic tracking - Phase 1 (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
VAR npc_haxolottle_npc_haxolottle_friendship_level = 0 // PERSISTENT - Overall relationship depth (0-100)
VAR npc_haxolottle_npc_haxolottle_conversations_had = 0 // PERSISTENT - Total personal conversations
VAR npc_haxolottle_npc_haxolottle_trust_moments = 0 // PERSISTENT - Times player shared something personal
VAR npc_haxolottle_npc_haxolottle_humor_shared = 0 // PERSISTENT - Funny moments experienced together
VAR npc_haxolottle_npc_haxolottle_vulnerable_moments = 0 // PERSISTENT - Times either shared something difficult
VAR npc_haxolottle_npc_haxolottle_player_shared_personal = 0 // PERSISTENT - Count of player vulnerable moments
// Conversation topic tracking - Phase 2 (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
// Topic tracking - ALL PERSISTENT (never reset)
VAR npc_haxolottle_npc_haxolottle_talked_hobbies_general = false // PERSISTENT
VAR npc_haxolottle_npc_haxolottle_talked_axolotl_obsession = false // PERSISTENT
VAR npc_haxolottle_npc_haxolottle_talked_music_taste = false // PERSISTENT
VAR npc_haxolottle_npc_haxolottle_talked_coffee_preferences = false // PERSISTENT
VAR npc_haxolottle_npc_haxolottle_talked_stress_management = false // PERSISTENT
VAR npc_haxolottle_npc_haxolottle_talked_philosophy_change = false // PERSISTENT
VAR npc_haxolottle_npc_haxolottle_talked_handler_life = false // PERSISTENT
VAR npc_haxolottle_npc_haxolottle_talked_field_nostalgia = false // PERSISTENT
VAR npc_haxolottle_npc_haxolottle_talked_weird_habits = false // PERSISTENT
VAR npc_haxolottle_npc_haxolottle_talked_favorite_operations = false // PERSISTENT
VAR npc_haxolottle_npc_haxolottle_talked_fears_anxieties = false // PERSISTENT
VAR npc_haxolottle_npc_haxolottle_talked_what_if_different = false // PERSISTENT
VAR npc_haxolottle_npc_haxolottle_talked_meaning_work = false // PERSISTENT
VAR npc_haxolottle_npc_haxolottle_talked_friendship_boundaries = false // PERSISTENT
VAR npc_haxolottle_npc_haxolottle_talked_future_dreams = false // PERSISTENT
VAR npc_haxolottle_npc_haxolottle_talked_identity_burden = false // PERSISTENT
VAR npc_haxolottle_npc_haxolottle_talked_loneliness_secrecy = false // PERSISTENT
VAR npc_haxolottle_npc_haxolottle_talked_real_name_temptation = false // PERSISTENT
VAR npc_haxolottle_npc_haxolottle_talked_after_safetynet = false // PERSISTENT
VAR npc_haxolottle_npc_haxolottle_talked_genuine_friendship = false // PERSISTENT
// Conversation topic tracking - Phase 3 (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
// Deep personal reveals - PERSISTENT
VAR npc_haxolottle_shared_loss = false // PERSISTENT
VAR npc_haxolottle_shared_doubt = false // PERSISTENT
VAR npc_haxolottle_shared_secret_hobby = false // PERSISTENT
// Conversation topic tracking - Phase 4 (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
// ===========================================
// GLOBAL VARIABLES (session-only, span NPCs)
// These exist for the current mission only
// Reset when mission ends
// ===========================================
// Deep personal reveals (rare, high friendship)
VAR hax_shared_loss = false
VAR hax_shared_doubt = false
VAR hax_shared_secret_hobby = false
VAR player_shared_personal = 0 // Count of player vulnerable moments
VAR total_missions_completed = 0 // GLOBAL - Total missions done (affects all NPCs)
VAR professional_reputation = 0 // GLOBAL - Agent standing (affects all NPCs)
// External variables
EXTERNAL player_name
EXTERNAL current_mission_number
// ===========================================
// LOCAL VARIABLES (this conversation only)
// These only exist during this specific interaction
// Provided by game engine when conversation starts
// ===========================================
EXTERNAL player_name // LOCAL - Player's agent name
EXTERNAL current_mission_id // LOCAL - Current mission identifier
// ===========================================
// ENTRY POINT - Conversation Selector
@@ -59,16 +71,15 @@ EXTERNAL current_mission_number
=== start ===
// This determines which conversation is available based on progression
~ missions_together = current_mission_number
{
- missions_together <= 5:
- total_missions_completed <= 5:
-> phase_1_hub
- missions_together <= 10:
- total_missions_completed <= 10:
-> phase_2_hub
- missions_together <= 15:
- total_missions_completed <= 15:
-> phase_3_hub
- missions_together > 15:
- total_missions_completed > 15:
-> phase_4_hub
}
@@ -79,21 +90,21 @@ EXTERNAL current_mission_number
=== phase_1_hub ===
{missions_together == 1:
{total_missions_completed == 1:
Haxolottle: So, we've got some downtime. Want to chat about non-work stuff? Per Regulation 847, personal conversation is encouraged for psychological wellbeing.
- else:
Haxolottle: Got a moment? I could use a break from staring at security feeds.
}
+ {not talked_hobbies_general} [Ask what they do for fun]
+ {not npc_haxolottle_talked_hobbies_general} [Ask what they do for fun]
-> hobbies_general
+ {not talked_axolotl_obsession} [Ask about the axolotl thing]
+ {not npc_haxolottle_talked_axolotl_obsession} [Ask about the axolotl thing]
-> axolotl_deep_dive
+ {not talked_music_taste} [Ask what music they listen to]
+ {not npc_haxolottle_talked_music_taste} [Ask what music they listen to]
-> music_discussion
+ {not talked_coffee_preferences and talked_hobbies_general} [Talk about coffee/tea preferences]
+ {not npc_haxolottle_talked_coffee_preferences and npc_haxolottle_talked_hobbies_general} [Talk about coffee/tea preferences]
-> coffee_chat
+ {not talked_stress_management and friendship_level >= 15} [Ask how they handle stress]
+ {not npc_haxolottle_talked_stress_management and npc_haxolottle_friendship_level >= 15} [Ask how they handle stress]
-> stress_management
+ [That's all for now]
-> conversation_end
@@ -103,9 +114,9 @@ EXTERNAL current_mission_number
// ----------------
=== hobbies_general ===
~ talked_hobbies_general = true
~ friendship_level += 5
~ conversations_had += 1
~ npc_haxolottle_talked_hobbies_general = true
~ npc_haxolottle_friendship_level += 5
~ npc_haxolottle_conversations_had += 1
Haxolottle: What do I do for fun? Good question. Let's see...
@@ -118,23 +129,23 @@ Haxolottle: I also swim. Not competitively or anything, just... swimming. There'
Haxolottle: And I tinker with old electronics. Pull apart vintage computers, repair them, sometimes just see how they work. It's methodical. Soothing. Unlike field operations where everything is chaos and improvisation.
* [Share that you also read]
~ friendship_level += 5
~ player_shared_personal += 1
~ npc_haxolottle_friendship_level += 5
~ npc_haxolottle_player_shared_personal += 1
You: I'm a reader too. What kind of sci-fi?
-> hobbies_scifi_followup
* [Mention you've never been good at swimming]
~ friendship_level += 3
~ npc_haxolottle_friendship_level += 3
You: I've never been much of a swimmer. More of a land-based person.
-> hobbies_swimming_followup
* [Ask about the electronics tinkering]
~ friendship_level += 3
~ npc_haxolottle_friendship_level += 3
You: Electronics tinkering? That's an interesting hobby for someone in our line of work.
-> hobbies_electronics_followup
=== hobbies_scifi_followup ===
~ friendship_level += 5
~ npc_haxolottle_friendship_level += 5
Haxolottle: Oh, you read sci-fi? Nice! I'm partial to the stuff that explores emergence and complexity—you know, how simple rules create complex systems.
@@ -147,19 +158,19 @@ Haxolottle: What about you? What kind of stories do you gravitate toward?
* [Mention you like cyberpunk]
You: Cyberpunk, mostly. The whole corporate dystopia thing feels... relevant.
Haxolottle: *laughs* Yeah, we're kind of living it. Except the corporations aren't our enemy—ENTROPY is. Different dystopia, same aesthetic.
~ friendship_level += 5
~ npc_haxolottle_friendship_level += 5
-> phase_1_hub
* [Say you prefer non-fiction]
You: Actually, I'm more of a non-fiction person. Technical books, security research.
Haxolottle: Ah, the pragmatist. Fair enough. Though I'd argue our job is weird enough to count as science fiction.
~ friendship_level += 3
~ npc_haxolottle_friendship_level += 3
-> phase_1_hub
* [Keep it vague to protect identity]
You: Different things, depending on mood.
Haxolottle: Keeping it mysterious. I respect that. Protocol 47-Alpha and all.
~ friendship_level += 2
~ npc_haxolottle_friendship_level += 2
-> phase_1_hub
=== hobbies_swimming_followup ===
@@ -172,7 +183,7 @@ Haxolottle: I didn't learn until I was an adult, actually. Taught myself after j
Haxolottle: Plus, it's one of the few activities where I can guarantee I'm not carrying surveillance devices. Hard to bug a swimsuit.
~ friendship_level += 3
~ npc_haxolottle_friendship_level += 3
-> phase_1_hub
=== hobbies_electronics_followup ===
@@ -187,7 +198,7 @@ Haxolottle: At home? I'm fixing things. Bringing dead hardware back to life. It'
Haxolottle: Plus, there's satisfaction in making a thirty-year-old computer boot up again. Persistence over entropy. Both kinds of entropy.
~ friendship_level += 5
~ npc_haxolottle_friendship_level += 5
-> phase_1_hub
// ----------------
@@ -195,9 +206,9 @@ Haxolottle: Plus, there's satisfaction in making a thirty-year-old computer boot
// ----------------
=== axolotl_deep_dive ===
~ talked_axolotl_obsession = true
~ friendship_level += 8
~ conversations_had += 1
~ npc_haxolottle_talked_axolotl_obsession = true
~ npc_haxolottle_friendship_level += 8
~ npc_haxolottle_conversations_had += 1
Haxolottle: Ah, you want the full story behind the axolotl obsession?
@@ -212,18 +223,18 @@ Haxolottle: Found this section on axolotls—*Ambystoma mexicanum*. These amazin
-> axolotl_operation_connection
* [Ask about the biology]
~ friendship_level += 3
~ npc_haxolottle_friendship_level += 3
You: That's incredible. How do they do that?
-> axolotl_biology_detail
* [Make a joke]
~ friendship_level += 5
~ humor_shared += 1
~ npc_haxolottle_friendship_level += 5
~ npc_haxolottle_humor_shared += 1
You: So you're saying you identified with a salamander?
-> axolotl_joke_response
=== axolotl_operation_connection ===
~ friendship_level += 5
~ npc_haxolottle_friendship_level += 5
Haxolottle: It gave me a framework. See, I'd lost my original cover story—that identity was "severed" when the real person appeared. Dead. Gone.
@@ -235,11 +246,11 @@ Haxolottle: In that moment, I stopped being the person I was impersonating and b
Haxolottle: The metaphor stuck. Now every operation that goes sideways, I think: What would an axolotl do? And the answer is always: regenerate, adapt, survive.
~ friendship_level += 8
~ npc_haxolottle_friendship_level += 8
-> phase_1_hub
=== axolotl_biology_detail ===
~ friendship_level += 5
~ npc_haxolottle_friendship_level += 5
Haxolottle: *lights up with enthusiasm*
@@ -255,12 +266,12 @@ Haxolottle: It's like... they have options. Paths. They're not locked into one f
Haxolottle: Sorry, I can talk about this for hours. The point is: regeneration, adaptation, flexibility. That's what got me through that operation and a lot of others.
~ friendship_level += 8
~ npc_haxolottle_friendship_level += 8
-> phase_1_hub
=== axolotl_joke_response ===
~ friendship_level += 8
~ humor_shared += 1
~ npc_haxolottle_friendship_level += 8
~ npc_haxolottle_humor_shared += 1
Haxolottle: *laughs*
@@ -276,8 +287,8 @@ Haxolottle: Plus, they smile. Permanently. Look up pictures—axolotls have thes
Haxolottle: You're laughing, but I'm serious. The metaphor has kept me sane for years. Sometimes you need something absurd to hold onto in this work.
~ friendship_level += 10
~ trust_moments += 1
~ npc_haxolottle_friendship_level += 10
~ npc_haxolottle_trust_moments += 1
-> phase_1_hub
// ----------------
@@ -285,9 +296,9 @@ Haxolottle: You're laughing, but I'm serious. The metaphor has kept me sane for
// ----------------
=== music_discussion ===
~ talked_music_taste = true
~ friendship_level += 5
~ conversations_had += 1
~ npc_haxolottle_talked_music_taste = true
~ npc_haxolottle_friendship_level += 5
~ npc_haxolottle_conversations_had += 1
Haxolottle: Music? Oh, I have eclectic taste. Probably too eclectic.
@@ -298,24 +309,24 @@ Haxolottle: For workouts or when I need energy, I go full electronic. Techno, dr
Haxolottle: And then sometimes... *looks slightly embarrassed* ...sometimes I listen to nature sounds. Ocean waves. Rain. Thunderstorms.
* [Say you also like ambient music]
~ friendship_level += 5
~ player_shared_personal += 1
~ npc_haxolottle_friendship_level += 5
~ npc_haxolottle_player_shared_personal += 1
You: Ambient music is great for concentration. What's your favorite?
-> music_ambient_detail
* [Admit you prefer silence while working]
~ friendship_level += 3
~ npc_haxolottle_friendship_level += 3
You: I actually prefer silence when I'm concentrating.
-> music_silence_response
* [Tease them about nature sounds]
~ friendship_level += 5
~ humor_shared += 1
~ npc_haxolottle_friendship_level += 5
~ npc_haxolottle_humor_shared += 1
You: Nature sounds? That's adorably wholesome for a spy.
-> music_nature_tease
=== music_ambient_detail ===
~ friendship_level += 5
~ npc_haxolottle_friendship_level += 5
Haxolottle: Oh, good taste! For concentration, I keep coming back to Eno's *Music for Airports*. It's designed to be ignorable but interesting—perfect for background.
@@ -328,13 +339,13 @@ Haxolottle: What about you? Any favorites?
* [Mention specific artists (safe to share)]
You: I'm into [vague genre description]. Keeps me focused.
Haxolottle: Nice. I might check that out during my next long monitoring session.
~ friendship_level += 3
~ npc_haxolottle_friendship_level += 3
-> phase_1_hub
* [Keep it vague]
You: Different things depending on the task.
Haxolottle: Adaptive playlist for adaptive operations. I like it.
~ friendship_level += 2
~ npc_haxolottle_friendship_level += 2
-> phase_1_hub
=== music_silence_response ===
@@ -345,12 +356,12 @@ Haxolottle: I can't do it, personally. Total silence makes me too aware of my ow
Haxolottle: But everyone's different. That's why we have noise-cancelling headphones in the equipment list—Section 8, Article 4.
~ friendship_level += 3
~ npc_haxolottle_friendship_level += 3
-> phase_1_hub
=== music_nature_tease ===
~ friendship_level += 8
~ humor_shared += 1
~ npc_haxolottle_friendship_level += 8
~ npc_haxolottle_humor_shared += 1
Haxolottle: *laughs* Okay, yes, I know how it sounds. "Elite SAFETYNET handler unwinds with gentle rain sounds."
@@ -364,7 +375,7 @@ Haxolottle: Plus, there's something soothing about storms specifically. All that
Haxolottle: You can judge me, but I won't stop. I have a whole collection. "Thunderstorm in Forest," "Ocean Waves at Night," "Heavy Rain on Tent." It's a whole genre.
~ friendship_level += 8
~ npc_haxolottle_friendship_level += 8
-> phase_1_hub
// ----------------
@@ -372,9 +383,9 @@ Haxolottle: You can judge me, but I won't stop. I have a whole collection. "Thun
// ----------------
=== coffee_chat ===
~ talked_coffee_preferences = true
~ friendship_level += 4
~ conversations_had += 1
~ npc_haxolottle_talked_coffee_preferences = true
~ npc_haxolottle_friendship_level += 4
~ npc_haxolottle_conversations_had += 1
Haxolottle: Coffee preferences? Oh, we're getting into the important questions now.
@@ -385,23 +396,23 @@ Haxolottle: Specifically, I drink green tea. Jasmine green tea when I can get it
Haxolottle: Dr. Chen thinks I'm weird for it. They survive on energy drinks and what I'm pretty sure is just pure espresso.
* [Say you're also a tea drinker]
~ friendship_level += 5
~ player_shared_personal += 1
~ npc_haxolottle_friendship_level += 5
~ npc_haxolottle_player_shared_personal += 1
You: Tea for me too. Coffee's too harsh.
-> coffee_tea_solidarity
* [Defend coffee]
~ friendship_level += 3
~ npc_haxolottle_friendship_level += 3
You: Coffee is essential. I don't trust tea to keep me functional.
-> coffee_defense
* [Ask about the axolotl mug]
~ friendship_level += 5
~ npc_haxolottle_friendship_level += 5
You: Is that axolotl mug I keep seeing in video calls yours?
-> coffee_mug_discussion
=== coffee_tea_solidarity ===
~ friendship_level += 5
~ npc_haxolottle_friendship_level += 5
Haxolottle: A fellow tea person! Excellent. We're a minority in SAFETYNET.
@@ -411,7 +422,7 @@ Haxolottle: If you ever need to decompress after a mission, find that break room
Haxolottle: Consider it insider knowledge. Handler privilege.
~ friendship_level += 8
~ npc_haxolottle_friendship_level += 8
-> phase_1_hub
=== coffee_defense ===
@@ -422,12 +433,12 @@ Haxolottle: Different metabolisms, different needs. That's the thing about SAFET
Haxolottle: As long as you're alert and functional, I don't care if you're powered by coffee, tea, energy drinks, or pure spite.
~ friendship_level += 3
~ npc_haxolottle_friendship_level += 3
-> phase_1_hub
=== coffee_mug_discussion ===
~ friendship_level += 8
~ humor_shared += 1
~ npc_haxolottle_friendship_level += 8
~ npc_haxolottle_humor_shared += 1
Haxolottle: *laughs* You noticed! Yes, that's mine. Got it custom-made.
@@ -439,7 +450,7 @@ Haxolottle: I have three of them, actually. One for the office, one for home, on
Haxolottle: Director Netherton pretends not to notice it in briefings, but I've caught him almost smiling at it once. Progress.
~ friendship_level += 8
~ npc_haxolottle_friendship_level += 8
-> phase_1_hub
// ----------------
@@ -447,10 +458,10 @@ Haxolottle: Director Netherton pretends not to notice it in briefings, but I've
// ----------------
=== stress_management ===
~ talked_stress_management = true
~ friendship_level += 10
~ conversations_had += 1
~ vulnerable_moments += 1
~ npc_haxolottle_talked_stress_management = true
~ npc_haxolottle_friendship_level += 10
~ npc_haxolottle_conversations_had += 1
~ npc_haxolottle_vulnerable_moments += 1
Haxolottle: How do I handle stress? That's... a good question. And kind of personal, but I'll answer.
@@ -461,25 +472,25 @@ Haxolottle: But honestly? The hardest part is when agents are in danger and I ca
Haxolottle: I've had agents get hurt. I've had operations go wrong despite everything we planned. That weight... it doesn't go away.
* [Thank them for being honest]
~ friendship_level += 10
~ player_shared_personal += 1
~ npc_haxolottle_friendship_level += 10
~ npc_haxolottle_player_shared_personal += 1
You: Thank you for trusting me with that. It helps to know you feel it too.
-> stress_honest_response
* [Share your own stress management]
~ friendship_level += 12
~ player_shared_personal += 2
~ trust_moments += 1
~ npc_haxolottle_friendship_level += 12
~ npc_haxolottle_player_shared_personal += 2
~ npc_haxolottle_trust_moments += 1
You: I feel that pressure too. From a different angle, but still there.
-> stress_mutual_understanding
* [Ask how they cope with the weight]
~ friendship_level += 8
~ npc_haxolottle_friendship_level += 8
You: How do you keep going when it feels like too much?
-> stress_coping_methods
=== stress_honest_response ===
~ friendship_level += 10
~ npc_haxolottle_friendship_level += 10
Haxolottle: Of course. We're in this together, Agent. I'm not just a voice on comms—I'm a person who cares about whether you come back safe.
@@ -487,13 +498,13 @@ Haxolottle: The handbook talks about professional distance, but Regulation 299 s
Haxolottle: You're not just an asset to me. You're a colleague. Maybe even a friend. And I want you to succeed and be okay.
~ friendship_level += 15
~ trust_moments += 1
~ npc_haxolottle_friendship_level += 15
~ npc_haxolottle_trust_moments += 1
-> phase_1_hub
=== stress_mutual_understanding ===
~ friendship_level += 15
~ trust_moments += 2
~ npc_haxolottle_friendship_level += 15
~ npc_haxolottle_trust_moments += 2
Haxolottle: Yeah. Different angles, same weight. You're worried about getting caught, about the mission failing, about making the wrong call in the moment.
@@ -507,12 +518,12 @@ Haxolottle: That's why the axolotl thing matters, I think. Regeneration isn't ju
Haxolottle: And we do it together. That makes it bearable.
~ friendship_level += 20
~ vulnerable_moments += 1
~ npc_haxolottle_friendship_level += 20
~ npc_haxolottle_vulnerable_moments += 1
-> phase_1_hub
=== stress_coping_methods ===
~ friendship_level += 10
~ npc_haxolottle_friendship_level += 10
Haxolottle: Honestly? I remind myself why we do this. ENTROPY is real. The threats are real. The people we protect—even though they don't know we exist—they're real.
@@ -522,7 +533,7 @@ Haxolottle: The weight is heavy because the work matters. If it was easy, if it
Haxolottle: And... *slight smile* ...I have my ridiculous axolotl metaphors. When things get dark, I think about something absurd and resilient, and it helps.
~ friendship_level += 12
~ npc_haxolottle_friendship_level += 12
-> phase_1_hub
// ===========================================
@@ -538,17 +549,17 @@ Haxolottle: And... *slight smile* ...I have my ridiculous axolotl metaphors. Whe
Haxolottle: Hey, Agent. Want to chat for a bit? I could use a break from the technical stuff.
}
+ {not talked_philosophy_change} [Ask how their philosophy has changed over the years]
+ {not npc_haxolottle_talked_philosophy_change} [Ask how their philosophy has changed over the years]
-> philosophy_evolution
+ {not talked_handler_life} [Ask what handler life is really like]
+ {not npc_haxolottle_talked_handler_life} [Ask what handler life is really like]
-> handler_reality
+ {not talked_field_nostalgia and friendship_level >= 30} [Ask if they miss field work]
+ {not npc_haxolottle_talked_field_nostalgia and npc_haxolottle_friendship_level >= 30} [Ask if they miss field work]
-> field_nostalgia
+ {not talked_weird_habits} [Talk about weird habits you've developed]
+ {not npc_haxolottle_talked_weird_habits} [Talk about weird habits you've developed]
-> weird_habits_discussion
+ {not talked_favorite_operations and friendship_level >= 35} [Ask about their favorite operations]
+ {not npc_haxolottle_talked_favorite_operations and npc_haxolottle_friendship_level >= 35} [Ask about their favorite operations]
-> favorite_operations
+ {friendship_level >= 40 and not hax_shared_loss} [Notice they seem different today]
+ {npc_haxolottle_friendship_level >= 40 and not npc_haxolottle_shared_loss} [Notice they seem different today]
-> hax_difficult_day
+ [That's all for now]
-> conversation_end
@@ -558,9 +569,9 @@ Haxolottle: And... *slight smile* ...I have my ridiculous axolotl metaphors. Whe
// ----------------
=== philosophy_evolution ===
~ talked_philosophy_change = true
~ friendship_level += 10
~ conversations_had += 1
~ npc_haxolottle_talked_philosophy_change = true
~ npc_haxolottle_friendship_level += 10
~ npc_haxolottle_conversations_had += 1
Haxolottle: How has my philosophy changed? *laughs softly* That's a heavier question than you might think.
@@ -575,14 +586,14 @@ Haxolottle: I've seen good people do questionable things for good reasons. I've
Haxolottle: The philosophy that's stuck is: Do the work as ethically as you can within impossible constraints. Protect people. Try not to become the thing you're fighting.
* [Express agreement]
~ friendship_level += 10
~ player_shared_personal += 1
~ npc_haxolottle_friendship_level += 10
~ npc_haxolottle_player_shared_personal += 1
You: I've been thinking about that too. The gray areas are... uncomfortable.
-> philosophy_gray_areas
* [Ask what call haunts them most]
~ friendship_level += 15
~ vulnerable_moments += 1
~ npc_haxolottle_friendship_level += 15
~ npc_haxolottle_vulnerable_moments += 1
You: Is there one decision that still bothers you?
-> philosophy_haunting_decision
@@ -591,8 +602,8 @@ Haxolottle: The philosophy that's stuck is: Do the work as ethically as you can
-> philosophy_immediate_good
=== philosophy_gray_areas ===
~ friendship_level += 15
~ trust_moments += 1
~ npc_haxolottle_friendship_level += 15
~ npc_haxolottle_trust_moments += 1
Haxolottle: Yeah. Uncomfortable is the word. We're essentially breaking laws under authorization that's classified, targeting people who might be criminals or might be victims.
@@ -602,13 +613,13 @@ Haxolottle: But you know what? The fact that you're thinking about it, questioni
Haxolottle: The day we stop feeling uncomfortable with the gray areas is the day we've gone too far.
~ friendship_level += 15
~ npc_haxolottle_friendship_level += 15
-> phase_2_hub
=== philosophy_haunting_decision ===
~ friendship_level += 20
~ vulnerable_moments += 2
~ hax_shared_doubt = true
~ npc_haxolottle_friendship_level += 20
~ npc_haxolottle_vulnerable_moments += 2
~ npc_haxolottle_shared_doubt = true
Haxolottle: *long pause*
@@ -627,20 +638,20 @@ Haxolottle: They recovered. They're still with SAFETYNET. But I dream about maki
Haxolottle: And I don't know if I would. If I could do it again, with the same information... I might make the same call. That's what haunts me.
* [Offer comfort]
~ friendship_level += 20
~ trust_moments += 2
~ npc_haxolottle_friendship_level += 20
~ npc_haxolottle_trust_moments += 2
You: You made the best call you could with what you knew. That agent knew the risks.
-> philosophy_comfort_response
* [Share something personal]
~ friendship_level += 25
~ player_shared_personal += 3
~ trust_moments += 2
~ npc_haxolottle_friendship_level += 25
~ npc_haxolottle_player_shared_personal += 3
~ npc_haxolottle_trust_moments += 2
You: I carry similar weight. We all do. It doesn't make it easier, but you're not alone in it.
-> philosophy_shared_burden
=== philosophy_comfort_response ===
~ friendship_level += 15
~ npc_haxolottle_friendship_level += 15
Haxolottle: *slight smile* Thank you. I know that, intellectually. Regulation 911—mission objectives sometimes outweigh agent safety when lives are at stake.
@@ -648,12 +659,12 @@ Haxolottle: Doesn't make it easier. But it helps to hear it from someone who und
Haxolottle: You're a good person, Agent {player_name}. I'm glad we're working together.
~ friendship_level += 15
~ npc_haxolottle_friendship_level += 15
-> phase_2_hub
=== philosophy_shared_burden ===
~ friendship_level += 25
~ trust_moments += 3
~ npc_haxolottle_friendship_level += 25
~ npc_haxolottle_trust_moments += 3
Haxolottle: *looks genuinely touched*
@@ -665,11 +676,11 @@ Haxolottle: I wish we could grab coffee like normal colleagues. Talk about this
Haxolottle: And what we have is this. Honest conversations within the boundaries we're given. That's real friendship, I think. Even with the constraints.
~ friendship_level += 30
~ npc_haxolottle_friendship_level += 30
-> phase_2_hub
=== philosophy_immediate_good ===
~ friendship_level += 8
~ npc_haxolottle_friendship_level += 8
Haxolottle: That's a healthy approach. Zoom in on what you can control, the immediate impact. Today's mission. This operation. This prevented attack.
@@ -677,7 +688,7 @@ Haxolottle: The big picture can overwhelm you if you let it. Better to focus on
Haxolottle: That's sustainable. I should probably do more of that myself.
~ friendship_level += 8
~ npc_haxolottle_friendship_level += 8
-> phase_2_hub
// ----------------
@@ -685,9 +696,9 @@ Haxolottle: That's sustainable. I should probably do more of that myself.
// ----------------
=== handler_reality ===
~ talked_handler_life = true
~ friendship_level += 12
~ conversations_had += 1
~ npc_haxolottle_talked_handler_life = true
~ npc_haxolottle_friendship_level += 12
~ npc_haxolottle_conversations_had += 1
Haxolottle: Handler life? It's weird. I sit in a comfortable office with good tea and multiple monitors, while you're crawling through server rooms and dodging security.
@@ -698,24 +709,24 @@ Haxolottle: From the inside? I'm watching you take risks I used to take. Providi
Haxolottle: And when things go wrong, I can only watch. I can't run in and help. Can't pull you out physically. Just... talk. Provide information. Hope it's enough.
* [Say you appreciate having them there]
~ friendship_level += 15
~ player_shared_personal += 1
~ npc_haxolottle_friendship_level += 15
~ npc_haxolottle_player_shared_personal += 1
You: Your voice on comms makes a huge difference. I'm never alone out there.
-> handler_appreciation
* [Ask if they'd go back to field work]
~ friendship_level += 10
~ npc_haxolottle_friendship_level += 10
You: Would you ever go back to field operations?
-> handler_field_return_question
* [Acknowledge the invisible stress]
~ friendship_level += 12
~ npc_haxolottle_friendship_level += 12
You: That sounds exhausting in a completely different way than field work.
-> handler_stress_acknowledgment
=== handler_appreciation ===
~ friendship_level += 20
~ trust_moments += 1
~ npc_haxolottle_friendship_level += 20
~ npc_haxolottle_trust_moments += 1
Haxolottle: *clearly moved*
@@ -725,11 +736,11 @@ Haxolottle: Knowing it makes a difference—that you feel less alone—that's wh
Haxolottle: We're a team. You're my eyes and hands in the field. I'm your strategic perspective and support system. Neither of us succeeds without the other.
~ friendship_level += 20
~ npc_haxolottle_friendship_level += 20
-> phase_2_hub
=== handler_field_return_question ===
~ friendship_level += 12
~ npc_haxolottle_friendship_level += 12
Haxolottle: *considers carefully*
@@ -741,11 +752,11 @@ Haxolottle: Transitioning to handler was regeneration. Different work, same miss
Haxolottle: Plus, I'm better at this. Supporting multiple agents, seeing the strategic picture, staying calm under pressure. My field skills were good. My handler skills are better.
~ friendship_level += 12
~ npc_haxolottle_friendship_level += 12
-> phase_2_hub
=== handler_stress_acknowledgment ===
~ friendship_level += 15
~ npc_haxolottle_friendship_level += 15
Haxolottle: It really is. Different kind of exhaustion.
@@ -757,7 +768,7 @@ Haxolottle: I end the day mentally drained in a way field work never did. But al
Haxolottle: Trade-offs. Everything in SAFETYNET is trade-offs.
~ friendship_level += 15
~ npc_haxolottle_friendship_level += 15
-> phase_2_hub
// ----------------
@@ -765,9 +776,9 @@ Haxolottle: Trade-offs. Everything in SAFETYNET is trade-offs.
// ----------------
=== field_nostalgia ===
~ talked_field_nostalgia = true
~ friendship_level += 15
~ conversations_had += 1
~ npc_haxolottle_talked_field_nostalgia = true
~ npc_haxolottle_friendship_level += 15
~ npc_haxolottle_conversations_had += 1
Haxolottle: Do I miss field work? Sometimes. Mostly small moments, not the overall experience.
@@ -778,23 +789,23 @@ Haxolottle: I miss the problem-solving in real-time. When you're in the field, e
Haxolottle: And honestly? I miss the simplicity. One mission, one objective, handle it and move on. As a handler, I'm juggling multiple agents, operations, responsibilities. It's more complex.
* [Ask what they don't miss]
~ friendship_level += 10
~ npc_haxolottle_friendship_level += 10
You: What don't you miss about it?
-> field_nostalgia_negative
* [Share what you love about field work]
~ friendship_level += 15
~ player_shared_personal += 1
~ npc_haxolottle_friendship_level += 15
~ npc_haxolottle_player_shared_personal += 1
You: I feel that rush too. That moment when everything clicks.
-> field_nostalgia_shared_joy
* [Ask about their most memorable infiltration]
~ friendship_level += 12
~ npc_haxolottle_friendship_level += 12
You: What's your most memorable field operation?
-> field_nostalgia_memorable_op
=== field_nostalgia_negative ===
~ friendship_level += 15
~ npc_haxolottle_friendship_level += 15
Haxolottle: *laughs* Oh, plenty. The fear, for one. That sustained low-level anxiety of maintaining cover, wondering if today's the day someone sees through it.
@@ -804,12 +815,12 @@ Haxolottle: And the physical toll. I'm not young anymore. Eight years of irregul
Haxolottle: Plus, I hated the paperwork. At least as a handler, I'm the one receiving the reports instead of writing them.
~ friendship_level += 15
~ npc_haxolottle_friendship_level += 15
-> phase_2_hub
=== field_nostalgia_shared_joy ===
~ friendship_level += 20
~ trust_moments += 1
~ npc_haxolottle_friendship_level += 20
~ npc_haxolottle_trust_moments += 1
Haxolottle: Yes! Exactly! That rush when everything aligns—the timing, the technique, the execution. It's beautiful when it works.
@@ -819,11 +830,11 @@ Haxolottle: Different from doing it myself, but still genuine. Like watching a m
Haxolottle: That's part of why I love this partnership. You're really good at what you do. Makes my job easier and more satisfying.
~ friendship_level += 20
~ npc_haxolottle_friendship_level += 20
-> phase_2_hub
=== field_nostalgia_memorable_op ===
~ friendship_level += 15
~ npc_haxolottle_friendship_level += 15
Haxolottle: Most memorable? Hard to pick one... but there was this operation in Prague. Corporate espionage case, ENTROPY front company.
@@ -837,7 +848,7 @@ Haxolottle: Completed the mission with zero suspicion. They thought I was just a
Haxolottle: That was the operation that convinced me I'd found the right line of work. Chaos, adaptation, success. Everything I'm good at.
~ friendship_level += 15
~ npc_haxolottle_friendship_level += 15
-> phase_2_hub
// ----------------
@@ -845,10 +856,10 @@ Haxolottle: That was the operation that convinced me I'd found the right line of
// ----------------
=== weird_habits_discussion ===
~ talked_weird_habits = true
~ friendship_level += 10
~ conversations_had += 1
~ humor_shared += 1
~ npc_haxolottle_talked_weird_habits = true
~ npc_haxolottle_friendship_level += 10
~ npc_haxolottle_conversations_had += 1
~ npc_haxolottle_humor_shared += 1
Haxolottle: Weird habits? Oh, I've developed plenty in this job.
@@ -861,27 +872,27 @@ Haxolottle: And I keep three versions of my origin story ready depending on who
Haxolottle: SAFETYNET gets in your head. You start treating normal life like an operation.
* [Admit you do the same]
~ friendship_level += 15
~ player_shared_personal += 1
~ humor_shared += 1
~ npc_haxolottle_friendship_level += 15
~ npc_haxolottle_player_shared_personal += 1
~ npc_haxolottle_humor_shared += 1
You: I map exits too! And I check reflections for surveillance.
-> weird_habits_shared
* [Share a different weird habit]
~ friendship_level += 15
~ player_shared_personal += 2
~ trust_moments += 1
~ npc_haxolottle_friendship_level += 15
~ npc_haxolottle_player_shared_personal += 2
~ npc_haxolottle_trust_moments += 1
You: I've developed some similar habits...
-> weird_habits_player_share
* [Ask if they think it's unhealthy]
~ friendship_level += 8
~ npc_haxolottle_friendship_level += 8
You: Is that unhealthy? Should we be concerned?
-> weird_habits_healthy_question
=== weird_habits_shared ===
~ friendship_level += 20
~ humor_shared += 1
~ npc_haxolottle_friendship_level += 20
~ npc_haxolottle_humor_shared += 1
Haxolottle: *laughs* Right? It's impossible to turn off! I went to a casual dinner with—well, with someone in my life—and spent the first ten minutes analyzing sight lines and potential surveillance.
@@ -891,12 +902,12 @@ Haxolottle: We're professionally paranoid. It's both a survival skill and a mino
Haxolottle: But hey, if there ever IS an emergency at a grocery store, we'll be the most prepared people there. Silver lining.
~ friendship_level += 20
~ npc_haxolottle_friendship_level += 20
-> phase_2_hub
=== weird_habits_player_share ===
~ friendship_level += 20
~ trust_moments += 2
~ npc_haxolottle_friendship_level += 20
~ npc_haxolottle_trust_moments += 2
Haxolottle: Oh, tell me yours. I love hearing what habits other agents develop. It's like a support group for occupational paranoia.
@@ -908,11 +919,11 @@ Haxolottle: We should start a handbook addendum: "Common Psychological Adaptatio
Haxolottle: Honestly, it helps to know we're all doing this. Makes it feel less like slowly losing our minds and more like... adaptive behavior in a weird profession.
~ friendship_level += 25
~ npc_haxolottle_friendship_level += 25
-> phase_2_hub
=== weird_habits_healthy_question ===
~ friendship_level += 10
~ npc_haxolottle_friendship_level += 10
Haxolottle: *considers* Probably somewhere in between healthy professional awareness and mild paranoia.
@@ -922,7 +933,7 @@ Haxolottle: I think as long as the habits aren't interfering with normal life, t
Haxolottle: But it's worth checking in with yourself. "Is this useful vigilance or is it anxiety?" That line can blur.
~ friendship_level += 10
~ npc_haxolottle_friendship_level += 10
-> phase_2_hub
// Continue with Phase 3 and 4 hubs (later missions)...
@@ -936,13 +947,13 @@ Haxolottle: But it's worth checking in with yourself. "Is this useful vigilance
=== conversation_end ===
{conversations_had >= 5 and friendship_level >= 40:
{npc_haxolottle_conversations_had >= 5 and npc_haxolottle_friendship_level >= 40:
Haxolottle: I really appreciate these talks, Agent {player_name}. Makes the work feel less isolating.
- else:
Haxolottle: Alright. Back to the mission. Talk later.
}
{friendship_level >= 60:
{npc_haxolottle_friendship_level >= 60:
Haxolottle: And hey... you're becoming a real friend. Within the constraints of Protocol 47-Alpha, but a friend nonetheless.
}

File diff suppressed because it is too large Load Diff