feat: Implement three-tier NPC conversation hub architecture

CRITICAL BUG FIXES:
- Fixed double-prefix variable naming bugs in all three NPC files
  * npc_npc_netherton_* → npc_netherton_*
  * npc_npc_chen_* → npc_chen_*
  * npc_chen_npc_chen_* → npc_chen_*
  * npc_haxolottle_npc_haxolottle_* → npc_haxolottle_*

NEW ARCHITECTURE:
- Created central hub files for each NPC that mix personal + mission content
  * netherton_hub.ink - Director hub with mission briefings & tactical support
  * chen_hub.ink - Tech support hub with equipment & experimental tech
  * haxolottle_hub.ink - Handler hub with crisis support & coordination

FEATURES:
- Context-aware conversation menus based on:
  * current_mission_id - What mission is active
  * mission_phase - Planning, active, debriefing, downtime
  * npc_location - Where conversation happens
  * operational_stress_level - Crisis prioritization (Haxolottle)
  * equipment_status - Repair/upgrade priority (Dr. Chen)

- Hybrid approach combines:
  * Separate files for modularity (personal vs mission content)
  * Context-aware presentation (right topics at right time)
  * Helper functions to check topic availability
  * Priority-ordered option menus

EXAMPLES:
- Created netherton_mission_ghost_example.ink showing:
  * Mission briefing system
  * Tactical support during active operations
  * Emergency extraction coordination
  * Post-mission debriefing with performance evaluation

DOCUMENTATION:
- NPC_HUB_ARCHITECTURE.md - Comprehensive documentation including:
  * File structure and organization
  * How hub pattern works
  * Variable scoping (PERSISTENT, GLOBAL, EXTERNAL)
  * Context-aware conversation flow examples
  * Pros/cons of different architectural approaches
  * Best practices and naming conventions
  * Integration requirements for game engine
  * Instructions for adding new missions

BENEFITS:
✓ Clean separation of personal vs mission content
✓ Reusable personal conversations across all missions
✓ Easy to add new missions without touching personal files
✓ Version control friendly (different writers, different files)
✓ Context-aware topic presentation
✓ Scalable to dozens of missions
✓ Natural conversation flow mixing personal & professional

Related to previous work:
- Builds on three-tier variable persistence system
- Uses npc_<npcname>_<variable> scoping convention
- Leverages total_missions_completed for progression
This commit is contained in:
Z. Cliffe Schreuders
2025-11-19 13:44:28 +00:00
parent 04a85f36cf
commit bd5ffc4d0c
8 changed files with 2410 additions and 71 deletions

View File

@@ -0,0 +1,477 @@
# NPC Conversation Hub Architecture
## Overview
The NPC hub architecture implements a three-tier system for organizing NPC conversations in Ink:
1. **Hub Files** (`*_hub.ink`) - Central entry points that mix personal + mission content
2. **Personal Conversation Files** (`*_ongoing_conversations.ink`) - Relationship building across all missions
3. **Mission-Specific Files** (`*_mission_*.ink`) - Content specific to individual missions
This architecture allows:
- **Context-aware conversations** - Different topics based on mission phase, location, and stress level
- **Separation of concerns** - Personal relationships vs. mission content in separate files
- **Easy expansion** - Add new missions without touching personal conversations
- **Natural flow** - Players can seamlessly move between personal chat and mission discussion
## File Structure
```
story_design/ink/
├── netherton_hub.ink # Central hub for Netherton
├── netherton_ongoing_conversations.ink # Personal relationship (all missions)
├── netherton_mission_ghost_example.ink # Mission-specific content example
├── chen_hub.ink # Central hub for Dr. Chen
├── dr_chen_ongoing_conversations.ink # Personal friendship (all missions)
├── chen_mission_ghost_equipment.ink # Mission equipment support
├── haxolottle_hub.ink # Central hub for Haxolottle
├── haxolottle_ongoing_conversations.ink # Personal friendship (all missions)
└── haxolottle_mission_ghost_handler.ink # Mission handler support
```
## How It Works
### 1. Hub Files (Central Entry Points)
Hub files are the **main entry point** when the player talks to an NPC. They:
- **Include** both personal and mission-specific files
- **Present context-aware options** based on:
- `current_mission_id` - What mission is active
- `mission_phase` - Planning, active, debriefing, or downtime
- `npc_location` - Where the conversation happens
- `operational_stress_level` - How urgent the situation is (for Haxolottle)
- `equipment_status` - Equipment condition (for Dr. Chen)
**Example from `netherton_hub.ink`:**
```ink
=== netherton_main_hub ===
// PERSONAL option (always available if topics exist)
+ {has_available_personal_topics() and mission_phase != "active"}
[How are you, Director?]
-> jump_to_personal_conversations
// MISSION-SPECIFIC options (context-dependent)
+ {current_mission_id == "ghost_in_machine" and mission_phase == "pre_briefing"}
[Request briefing for Ghost Protocol operation]
-> mission_ghost_briefing
+ {current_mission_id == "ghost_in_machine" and mission_phase == "active"}
[Request tactical guidance]
-> mission_ghost_tactical_support
```
### 2. Personal Conversation Files
These files contain **ongoing relationship development** that persists across all missions:
- Phase 1 (Missions 1-5): Getting to know the NPC
- Phase 2 (Missions 6-10): Deepening friendship/respect
- Phase 3 (Missions 11-15): Genuine trust and vulnerability
- Phase 4 (Missions 16+): Deep friendship/partnership
**Key Feature: Hub Returns**
Personal conversations need to support returning to the hub. This is done by creating `_with_return` versions of phase hubs:
```ink
// In netherton_ongoing_conversations.ink
=== phase_1_hub_with_return ===
// Present personal topics
+ {not npc_netherton_discussed_handbook}
[Ask about the Field Operations Handbook]
-> handbook_discussion
// After discussion, return to this hub (tunnel pattern)
-> phase_1_hub_with_return
// When player is done with personal chat, return via tunnel
+ [That will be all for personal discussion]
->-> // Return to calling hub via tunnel
```
### 3. Mission-Specific Files
These files contain content for **specific missions only**:
- Mission briefings
- Tactical support during operations
- Technical equipment discussions (Dr. Chen)
- Handler coordination (Haxolottle)
- Mission debriefs
**Example: `netherton_mission_ghost_example.ink`**
Contains:
- `=== ghost_briefing ===` - Pre-mission briefing
- `=== ghost_tactical_support ===` - Active mission support
- `=== ghost_debrief ===` - Post-mission debrief
## Variable Scoping (Three-Tier System)
### PERSISTENT Variables
**Saved between game sessions** - Never reset
```ink
VAR npc_netherton_respect = 50 // PERSISTENT
VAR npc_netherton_discussed_handbook = false // PERSISTENT
```
Examples:
- NPC relationship stats (respect, rapport, friendship_level)
- Discussed topics (so they don't repeat)
- Achievement flags (shared_vulnerability, earned_trust)
### GLOBAL Variables
**Session-only, span all NPCs** - Reset when mission ends
```ink
VAR total_missions_completed = 0 // GLOBAL
VAR professional_reputation = 0 // GLOBAL
```
Examples:
- Mission completion count
- Professional reputation
- Current threat level
### EXTERNAL/LOCAL Variables
**Provided by game engine per conversation**
```ink
EXTERNAL player_name // Player's agent codename
EXTERNAL current_mission_id // Which mission is active
EXTERNAL npc_location // Where conversation happens
EXTERNAL mission_phase // Planning, active, debriefing, downtime
```
## Context-Aware Conversation Flow
### Example: Talking to Netherton
**Scenario 1: Downtime, in his office, missions 1-5**
```
Player talks to Netherton
netherton_hub.ink → netherton_conversation_entry
Shows: "How are you, Director?" (personal)
"Ask about SAFETYNET operations status" (general)
Player chooses personal → jumps to netherton_ongoing_conversations.ink
Shows Phase 1 personal topics (handbook, leadership, etc.)
Player finishes personal chat → returns to hub
Player exits conversation
```
**Scenario 2: Active mission, field comms, Ghost Protocol**
```
Player talks to Netherton (via comms)
netherton_hub.ink → netherton_conversation_entry
Shows: "Request tactical guidance" (mission-specific)
"Request emergency extraction" (crisis option)
Player requests guidance → jumps to netherton_mission_ghost_example.ink
Shows tactical support options for Ghost Protocol
Netherton provides guidance → player continues mission
```
**Scenario 3: Debriefing after mission**
```
Player talks to Netherton
netherton_hub.ink → netherton_conversation_entry
Shows: "Debrief Ghost Protocol operation" (mission-specific)
"How are you doing?" (personal, if topics available)
Player debriefs → netherton_mission_ghost_example.ink → ghost_debrief
Performance evaluation, feedback, next assignment discussion
Returns to hub → player can then do personal chat or exit
```
## NPC-Specific Patterns
### Netherton (Director - Formal Authority)
**Context Variables:**
- `npc_location`: "office", "briefing_room", "field", "safehouse"
- Focuses on: Mission briefings, tactical decisions, strategic counsel
**Personality Adaptation:**
- In office: Formal but slightly more personal
- In briefing room: Strictly professional
- Over field comms: Terse, tactical
- In safehouse: More open to personal discussion
### Dr. Chen (Tech Support - Enthusiastic Collaboration)
**Context Variables:**
- `npc_location`: "lab", "equipment_room", "briefing_room", "field_support"
- `equipment_status`: "nominal", "damaged", "needs_upgrade"
**Priority Topics:**
- Equipment repairs (highest priority if damaged)
- Mission-specific tech briefings
- Experimental technology discussions
- Personal friendship (when not in crisis)
**Personality Adaptation:**
- In lab: Enthusiastic, eager to show experiments
- Equipment room: Professional but excited about gear
- Field support: Focused, concerned, solution-oriented
- Downtime: Friend mode, personal conversations
### Haxolottle (Handler - Calm Under Pressure)
**Context Variables:**
- `npc_location`: "handler_station", "briefing_room", "comms_active", "safehouse"
- `operational_stress_level`: "low", "moderate", "high", "crisis"
- `mission_phase`: Determines support type
**Priority System:**
1. **Crisis situations** - Overrides everything
2. **Active mission support** - Handler guidance during ops
3. **Mission planning** - Contingency planning, handler coordination
4. **Personal friendship** - Only during downtime
**Personality Adaptation:**
- Crisis: Absolutely focused, calm, methodical
- Active mission: Professional handler mode
- Planning: Collaborative, detail-oriented
- Downtime: Relaxed friend, personal chat
## Adding New Missions
To add a new mission:
1. **Create mission-specific file**: `npc_mission_newmission.ink`
```ink
=== newmission_briefing ===
// Briefing content
-> END
=== newmission_tactical_support ===
// Active mission support
-> END
=== newmission_debrief ===
// Post-mission debrief
-> END
```
2. **Add INCLUDE to hub file**: `npc_hub.ink`
```ink
INCLUDE npc_mission_newmission.ink
```
3. **Add hub options** based on context:
```ink
=== npc_main_hub ===
+ {current_mission_id == "newmission" and mission_phase == "pre_briefing"}
[Request briefing for new mission]
-> newmission_briefing
+ {current_mission_id == "newmission" and mission_phase == "active"}
[Request support]
-> newmission_tactical_support
```
**The personal conversation files don't need to change!** Relationship building is independent of specific missions.
## Pros and Cons
### Approach: Separate Files with Hub Integration (Current Implementation)
#### Pros:
**Clean separation** - Personal vs. mission content in different files
**Context-aware presentation** - Right topics at right time
**Reusable personal conversations** - Same file across all missions
**Easy to add missions** - Create new file, add to hub, done
**Version control friendly** - Changes to one mission don't affect others
**Scalable** - Can have dozens of missions without bloat
**Team collaboration** - Different writers can work on different missions
**Testing** - Can test mission content independently
#### Cons:
**Requires INCLUDE management** - Must track which files are included
**Variable scope complexity** - Need to ensure variables accessible across files
**Hub return pattern** - Personal files need special "with_return" versions
**More files to manage** - Hub + personal + N mission files per NPC
### Alternative: Single File with Tunnels
#### Pros:
**Everything in one place** - Simpler file structure
**No INCLUDE complexity** - Single file, no includes
**Easier tunneling** - `->->` returns work naturally
#### Cons:
**File bloat** - Personal + all missions in one huge file
**Hard to navigate** - Thousands of lines per NPC
**Version control conflicts** - Everyone editing same file
**Testing difficulty** - Can't isolate mission content
**Not scalable** - Gets worse with each mission added
### Alternative: Context-Aware Mixed Hub (No Separation)
#### Pros:
**Most natural flow** - Personal and mission topics mixed seamlessly
**Maximum flexibility** - Can show any topic based on any context
#### Cons:
**Everything in hub file** - Becomes massive
**No reusability** - Personal content duplicated per mission
**Hard to maintain** - Changes ripple everywhere
**Difficult to write** - Context logic becomes extremely complex
## Best Practices
### 1. Use Helper Functions for Availability Checks
```ink
=== function has_available_personal_topics() ===
// Centralized logic for when personal chat is available
{
- total_missions_completed <= 5:
{
- not npc_netherton_discussed_handbook: ~ return true
- not npc_netherton_discussed_leadership: ~ return true
- else: ~ return false
}
// ... more phases
}
```
### 2. Context Variables Should Be Meaningful
Good:
```ink
EXTERNAL mission_phase // "planning", "active", "debriefing", "downtime"
EXTERNAL npc_location // "office", "lab", "field", "safehouse"
```
Bad:
```ink
EXTERNAL phase // What phase? Mission? Relationship?
EXTERNAL loc // Unclear abbreviation
```
### 3. Priority Ordering in Hubs
Show options in priority order:
1. Crisis/emergency options (highest priority)
2. Mission-critical options
3. Equipment/support options
4. Personal conversation options
5. General topics
6. Exit options (always last)
### 4. Use Comments to Explain Context Logic
```ink
// PERSONAL RELATIONSHIP OPTION
// Only available during downtime (not during active missions)
// Only if there are topics they haven't discussed yet
+ {has_available_personal_topics() and mission_phase != "active"}
[How are you, Director?]
-> jump_to_personal_conversations
```
### 5. Consistent Naming Conventions
- Hub files: `npcname_hub.ink`
- Personal files: `npcname_ongoing_conversations.ink`
- Mission files: `npcname_mission_missionname.ink`
- Hub entry: `=== npcname_conversation_entry ===`
- Main hub: `=== npcname_main_hub ===`
## Integration with Game Engine
### Required Engine Support
1. **Variable Persistence**
- Save/load PERSISTENT variables between game sessions
- Reset GLOBAL variables when appropriate
- Provide EXTERNAL variables each conversation
2. **Conversation Triggering**
- Call appropriate hub entry point: `npcname_conversation_entry`
- Set context variables before calling
- Handle `#exit_conversation` tag
3. **Context Tracking**
- Track current mission ID
- Track mission phase (planning → active → debriefing → downtime)
- Track NPC location
- Track operational stress level (for Haxolottle)
- Track equipment status (for Dr. Chen)
### Example Engine Call
```typescript
// Player talks to Netherton during Ghost Protocol mission
conversationEngine.startConversation({
npc: "netherton",
entry_point: "netherton_conversation_entry",
context: {
player_name: player.codename,
current_mission_id: "ghost_in_machine",
mission_phase: "active",
npc_location: "field", // Over comms
total_missions_completed: player.missionsCompleted,
professional_reputation: player.reputation
}
});
```
## Future Enhancements
### Potential Additions:
1. **Cross-NPC References**
- Netherton mentioning Chen's equipment: "Dr. Chen has prepared specialized gear."
- Chen asking about field experience: "How did the mission with Haxolottle go?"
2. **Dynamic Context Variables**
- `time_of_day`: "morning", "afternoon", "evening", "late_night"
- `recent_mission_outcome`: "success", "partial", "failure"
- `agent_injury_status`: "healthy", "wounded", "recovering"
3. **Relationship Cross-Talk**
- High rapport with Chen unlocks technical topics with Netherton
- Trust with Haxolottle affects handler briefings
4. **Mood/Emotion System**
- NPC mood based on recent events
- Player stress level affects conversation tone
## Summary
The hub architecture provides:
- **Modularity**: Personal and mission content separated
- **Context-Awareness**: Right conversations at right time
- **Scalability**: Easy to add new missions
- **Maintainability**: Changes isolated to relevant files
- **Natural Flow**: Seamless mix of personal and professional
This architecture scales from 3 NPCs across 5 missions to 20 NPCs across 50 missions without becoming unwieldy.

View File

@@ -0,0 +1,519 @@
// ===========================================
// DR. CHEN CONVERSATION HUB
// Break Escape Universe
// ===========================================
// Central entry point for all Dr. Chen conversations
// Mixes personal friendship building with technical support
// Context-aware based on current mission and equipment needs
// ===========================================
// Include personal relationship file
INCLUDE dr_chen_ongoing_conversations.ink
// Include mission-specific files (examples - add more as missions are created)
// INCLUDE chen_mission_ghost_equipment.ink
// INCLUDE chen_mission_data_sanctuary_tech.ink
// ===========================================
// EXTERNAL CONTEXT VARIABLES
// These are provided by the game engine
// ===========================================
EXTERNAL player_name // LOCAL - Player's agent name
EXTERNAL current_mission_id // LOCAL - Current mission being discussed
EXTERNAL npc_location // LOCAL - Where conversation happens ("lab", "equipment_room", "briefing_room", "field_support")
EXTERNAL mission_phase // LOCAL - Phase of current mission ("pre_briefing", "active", "debriefing", "downtime")
EXTERNAL equipment_status // LOCAL - Status of player's equipment ("nominal", "damaged", "needs_upgrade")
// ===========================================
// GLOBAL VARIABLES (shared across all NPCs)
// ===========================================
VAR total_missions_completed = 0 // GLOBAL - Total missions done
VAR professional_reputation = 0 // GLOBAL - Agent standing
// ===========================================
// MAIN ENTRY POINT
// Called by game engine when player talks to Dr. Chen
// ===========================================
=== chen_conversation_entry ===
// This is the main entry point - game engine calls this
{npc_location == "lab":
Dr. Chen: {player_name}! *looks up from workbench* Perfect timing. Come check this out!
- npc_location == "equipment_room":
Dr. Chen: Oh hey! Here for gear? I just finished calibrating some new equipment.
- npc_location == "briefing_room":
Dr. Chen: Agent {player_name}. *gestures to technical displays* Let's talk about the tech side of this operation.
- npc_location == "field_support":
Dr. Chen: *over comms* Reading you loud and clear. What do you need?
- else:
Dr. Chen: Hey! What brings you by?
}
-> chen_main_hub
// ===========================================
// MAIN HUB - CONTEXT-AWARE CONVERSATION MENU
// Dynamically shows personal + technical + mission topics
// ===========================================
=== chen_main_hub ===
// Show different options based on location, mission phase, and relationship level
// PERSONAL FRIENDSHIP OPTION (always available if topics exist)
+ {has_available_personal_topics() and mission_phase != "active"} [How are you doing, Dr. Chen?]
Dr. Chen: Oh! *surprised by personal question*
{npc_chen_rapport >= 70:
Dr. Chen: You know, I really appreciate when people ask that. Want to chat for a bit?
- else:
Dr. Chen: I'm good! Busy, but good. What's up?
}
-> jump_to_personal_conversations
// EQUIPMENT AND TECHNICAL SUPPORT (high priority when damaged or needs upgrade)
+ {equipment_status == "damaged"} [My equipment took damage in the field]
Dr. Chen: *immediately concerned* Let me see it. What happened?
-> equipment_repair_discussion
+ {equipment_status == "needs_upgrade"} [Request equipment upgrades for upcoming mission]
Dr. Chen: Upgrades! Yes! I've been working on some new gear. Let me show you what's available.
-> equipment_upgrade_menu
+ {mission_phase == "active" and npc_location == "field_support"} [I need technical support in the field]
Dr. Chen: *alert* Okay, talk to me. What's the technical problem?
-> field_technical_support
// MISSION-SPECIFIC TECHNICAL DISCUSSIONS
+ {current_mission_id == "ghost_in_machine" and mission_phase == "pre_briefing"} [What tech will I need for Ghost Protocol?]
Dr. Chen: Ghost Protocol! Okay, so I've prepared some specialized equipment for this one. Let me walk you through it.
-> mission_ghost_equipment_briefing
+ {current_mission_id == "ghost_in_machine" and mission_phase == "debriefing"} [Technical debrief for Ghost Protocol]
Dr. Chen: How did the equipment perform? I need field data to improve the designs.
-> mission_ghost_tech_debrief
+ {current_mission_id == "data_sanctuary"} [What tech is protecting the Data Sanctuary?]
Dr. Chen: *pulls up schematics* The sanctuary has multi-layered security. Let me explain the architecture.
-> mission_sanctuary_tech_overview
// GENERAL TECHNICAL TOPICS
+ {mission_phase == "downtime"} [Ask about experimental technology]
Dr. Chen: *eyes light up* Oh! You want to hear about the experimental stuff? Because I have some REALLY cool projects going.
-> experimental_tech_discussion
+ {mission_phase == "downtime" and npc_chen_rapport >= 50} [Offer to help test experimental equipment]
Dr. Chen: *excited* You'd volunteer for field testing? That would be incredibly helpful!
-> volunteer_field_testing
+ {npc_chen_rapport >= 60} [Ask for technical training]
Dr. Chen: You want technical training? I love teaching! What area interests you?
-> technical_training_discussion
// EXIT OPTIONS
+ {mission_phase == "active" and npc_location == "field_support"} [That's all I needed, thanks]
Dr. Chen: Roger that. I'll keep monitoring your situation. Call if you need anything!
#exit_conversation
-> END
+ [That's all for now, Chen]
{npc_chen_rapport >= 80:
Dr. Chen: Sounds good! *warm smile* Always great talking with you. Stay safe out there!
- npc_chen_rapport >= 50:
Dr. Chen: Alright! Let me know if you need anything. Seriously, anytime.
- else:
Dr. Chen: Okay. Good luck with the mission!
}
#exit_conversation
-> END
// ===========================================
// HELPER FUNCTION - Check for available personal topics
// ===========================================
=== function has_available_personal_topics() ===
// Returns true if there are any personal conversation topics available
{
// Phase 1 topics (missions 1-5)
- total_missions_completed <= 5:
{
- not npc_chen_discussed_tech_philosophy: ~ return true
- not npc_chen_discussed_entropy_tech: ~ return true
- not npc_chen_discussed_chen_background: ~ return true
- not npc_chen_discussed_favorite_projects and npc_chen_rapport >= 55: ~ return true
- else: ~ return false
}
// Phase 2 topics (missions 6-10)
- total_missions_completed <= 10:
{
- not npc_chen_discussed_experimental_tech: ~ return true
- not npc_chen_discussed_research_frustrations and npc_chen_rapport >= 65: ~ return true
- not npc_chen_discussed_field_vs_lab: ~ return true
- not npc_chen_discussed_ethical_tech and npc_chen_rapport >= 70: ~ return true
- else: ~ return false
}
// Phase 3 topics (missions 11-15)
- total_missions_completed <= 15:
{
- not npc_chen_discussed_dream_projects and npc_chen_rapport >= 80: ~ return true
- not npc_chen_discussed_tech_risks and npc_chen_rapport >= 75: ~ return true
- not npc_chen_discussed_work_life_balance: ~ return true
- not npc_chen_discussed_mentorship and npc_chen_rapport >= 80: ~ return true
- else: ~ return false
}
// Phase 4 topics (missions 16+)
- total_missions_completed > 15:
{
- not npc_chen_discussed_future_vision and npc_chen_rapport >= 90: ~ return true
- not npc_chen_discussed_friendship_value and npc_chen_rapport >= 85: ~ return true
- not npc_chen_discussed_collaborative_legacy and npc_chen_rapport >= 90: ~ return true
- not npc_chen_discussed_beyond_safetynet and npc_chen_rapport >= 88: ~ return true
- else: ~ return false
}
- else:
~ return false
}
// ===========================================
// JUMP TO PERSONAL CONVERSATIONS
// Routes to the appropriate phase hub in personal file
// ===========================================
=== jump_to_personal_conversations ===
// Jump to appropriate phase hub based on progression, then return here
{
- total_missions_completed <= 5:
-> dr_chen_ongoing_conversations.phase_1_hub_with_return ->
- total_missions_completed <= 10:
-> dr_chen_ongoing_conversations.phase_2_hub_with_return ->
- total_missions_completed <= 15:
-> dr_chen_ongoing_conversations.phase_3_hub_with_return ->
- total_missions_completed > 15:
-> dr_chen_ongoing_conversations.phase_4_hub_with_return ->
}
// Return from personal conversations
Dr. Chen: *switches back to tech mode* So, what else did you need?
-> chen_main_hub
// ===========================================
// EQUIPMENT AND TECHNICAL SUPPORT
// ===========================================
=== equipment_repair_discussion ===
Dr. Chen: *examines the damaged equipment* Okay, let me see... *muttering technical analysis*
Dr. Chen: This is fixable, but it'll take some time. What happened out there?
+ [Explain the damage honestly]
You explain how the equipment was damaged during the operation.
Dr. Chen: *nods* Okay, that's actually really useful feedback. I can improve the durability in the next version.
Dr. Chen: Give me about two hours. I'll have this repaired and reinforced.
~ npc_chen_rapport += 5
#equipment_repair_started
-> chen_main_hub
+ [Say it was your fault]
Dr. Chen: Hey, no—don't beat yourself up. Field conditions are unpredictable. That's why we build redundancy.
Dr. Chen: Let me fix this and add some additional protection. You're not the first agent to damage gear in the field.
~ npc_chen_rapport += 8
-> chen_main_hub
+ [Blame the equipment design]
Dr. Chen: *slight frown* Okay... I mean, there's always room for improvement. But the equipment is rated for standard field conditions.
Dr. Chen: I'll repair it. And I'll review the design specs. But be more careful with the gear, alright?
~ npc_chen_rapport -= 3
-> chen_main_hub
=== equipment_upgrade_menu ===
Dr. Chen: *brings up equipment catalog on holographic display*
Dr. Chen: Alright, so here's what's available for your access level:
Dr. Chen: Network infiltration package—improved encryption bypass, faster data extraction.
Dr. Chen: Surveillance countermeasures—better detection avoidance, signal jamming upgrades.
Dr. Chen: Physical security tools—advanced lockpicks, biometric spoofing, RFID cloning.
What interests you?
+ [Network infiltration upgrade]
Dr. Chen: Good choice. *pulls equipment* This has the latest decryption algorithms. Should shave minutes off your infiltration time.
Dr. Chen: I'll add it to your loadout. Don't lose this one—it's expensive!
#equipment_upgraded_network
~ professional_reputation += 1
-> chen_main_hub
+ [Surveillance countermeasures]
Dr. Chen: Smart. Staying undetected is half the job. *configures equipment*
Dr. Chen: This should make you nearly invisible to standard monitoring systems. Field test it and let me know how it performs.
#equipment_upgraded_surveillance
~ professional_reputation += 1
-> chen_main_hub
+ [Physical security tools]
Dr. Chen: The classics, updated. *hands over toolkit*
Dr. Chen: New biometric spoofer uses quantum randomization—way harder to detect than the old version.
#equipment_upgraded_physical
~ professional_reputation += 1
-> chen_main_hub
+ [Ask what they recommend]
Dr. Chen: *considers your mission profile*
{current_mission_id == "ghost_in_machine":
Dr. Chen: For Ghost Protocol? Definitely the network package. You'll be dealing with sophisticated digital security.
- else:
Dr. Chen: Based on your recent missions... I'd say surveillance countermeasures. You're running a lot of infiltration ops.
}
Dr. Chen: But it's your call. You know what you need in the field.
-> equipment_upgrade_menu
=== field_technical_support ===
Dr. Chen: *focused* Okay, I'm pulling up your equipment telemetry. What's the technical issue?
+ [System won't connect to target network]
Dr. Chen: *checking diagnostics* Hmm, they might be using non-standard protocols. Try cycling through alt-frequencies. Settings menu, third tab.
Dr. Chen: If that doesn't work, there might be active jamming. I can try remote boost, but it'll make you more detectable.
-> field_support_followup
+ [Encryption is taking too long]
Dr. Chen: Yeah, they upgraded their security. Um... *rapid thinking* ...okay, try the quantum bypass. It's experimental but it should work.
Dr. Chen: Quantum menu, enable fast-mode. Warning: it generates a lot of heat. Don't run it for more than five minutes.
~ npc_chen_rapport += 5
-> field_support_followup
+ [Equipment is malfunctioning]
Dr. Chen: *concerned* Malfunctioning how? Be specific.
Dr. Chen: Actually, I'm seeing some anomalous readings on my end. Let me try a remote reset... *working*
Dr. Chen: There. Try now. That should stabilize it.
-> field_support_followup
=== field_support_followup ===
Dr. Chen: Did that help? Are you good to continue?
+ [Yes, that fixed it. Thanks!]
Dr. Chen: *relieved* Oh good! Okay, I'll keep monitoring. Call if anything else goes wrong.
~ npc_chen_rapport += 8
-> chen_main_hub
+ [Still having issues]
Dr. Chen: *more concerned* Okay, this might be a hardware problem. Can you safely abort and extract?
Dr. Chen: I don't want you stuck in there with malfunctioning equipment. Your safety is more important than the mission.
~ npc_chen_rapport += 10
-> chen_main_hub
=== mission_ghost_equipment_briefing ===
Dr. Chen: *pulls up equipment display with visible excitement*
Dr. Chen: Okay! So for Ghost Protocol, I've prepared some specialized gear. This is actually really cool tech.
Dr. Chen: First—active network camouflage. Makes your digital signature look like normal traffic. You'll blend into their network like you're just another employee.
Dr. Chen: Second—enhanced data exfiltration tools. Faster extraction, better compression, leaves minimal traces.
Dr. Chen: Third—and this is experimental—quantum-encrypted comms. Even if they intercept your transmissions to Haxolottle, they can't decrypt them.
+ [Ask how the network camouflage works]
Dr. Chen: *launches into technical explanation* ...so basically, it analyzes local traffic patterns and generates fake activity that matches the statistical profile...
-> ghost_equipment_details
+ [Ask about the risks of experimental tech]
Dr. Chen: *appreciates the question* Good thinking. The quantum comms are 95% reliable in testing. If they fail, you default to standard encrypted comms.
Dr. Chen: I've built in fallbacks. Worst case, you lose some capability but not all capability.
~ npc_chen_rapport += 5
-> ghost_equipment_details
+ [Express confidence in the tech]
Dr. Chen: *grins* I'm glad you trust my work! I've tested this extensively. You'll be well-equipped.
~ npc_chen_rapport += 8
-> ghost_equipment_details
=== ghost_equipment_details ===
Dr. Chen: Any other questions about the gear? Or are you ready for me to configure your loadout?
+ [More questions about technical specs]
Dr. Chen: *happily explains more details*
-> ghost_equipment_details
+ [I'm ready. Configure my loadout.]
Dr. Chen: Perfect! Give me twenty minutes. I'll have everything calibrated to your biometrics.
Dr. Chen: *genuine* And hey... be careful out there, okay? I built good equipment, but you're the one taking the risks.
{npc_chen_rapport >= 60:
Dr. Chen: Come back safe. The tech works better when the operator survives.
~ npc_chen_rapport += 5
}
#equipment_configured
-> chen_main_hub
=== mission_ghost_tech_debrief ===
Dr. Chen: *eager for feedback* Okay, tell me everything! How did the equipment perform?
+ [Everything worked perfectly]
Dr. Chen: *extremely pleased* Yes! That's what I want to hear! The camouflage held up? No detection issues?
Dr. Chen: This is great data. I can certify this tech for wider deployment now.
~ npc_chen_rapport += 10
~ npc_chen_tech_collaboration += 1
-> chen_main_hub
+ [Mostly good, but had some issues with X]
Dr. Chen: *immediately taking notes* Okay, tell me specifics. What were the exact conditions when the issue occurred?
You provide detailed feedback.
Dr. Chen: Perfect. This is exactly the field data I need. I can iterate on the design and fix that problem.
Dr. Chen: Thank you for the thorough report. Seriously. This makes my job so much easier.
~ npc_chen_rapport += 15
~ npc_chen_tech_collaboration += 2
-> chen_main_hub
+ [Honestly, it saved my life]
Dr. Chen: *becomes emotional* It... really? Tell me what happened.
You explain how the equipment got you out of a dangerous situation.
Dr. Chen: *voice cracks slightly* That's... that's why I do this. Building tech that keeps agents safe.
Dr. Chen: I'm really glad you're okay. And thank you for the feedback. I'll keep improving it.
~ npc_chen_rapport += 20
~ npc_chen_tech_collaboration += 2
-> chen_main_hub
=== mission_sanctuary_tech_overview ===
Dr. Chen: *brings up Data Sanctuary schematics*
Dr. Chen: The sanctuary has probably the most sophisticated security architecture SAFETYNET has ever built. Multi-layered, redundant, paranoid design.
Dr. Chen: Physical layer: Biometric access, man-traps, Faraday shielding. Digital layer: Air-gapped systems, quantum encryption, intrusion detection AI.
Dr. Chen: If ENTROPY tries to breach this, they'll need nation-state level capabilities. Which... *worried* ...they might have.
+ [Ask if the defenses are enough]
Dr. Chen: *honest* Should be. But ENTROPY has surprised us before. That's why we're adding additional measures.
Dr. Chen: And why agents like you are on standby. Tech is great, but humans adapt in ways systems can't.
-> chen_main_hub
+ [Ask what your role will be]
Dr. Chen: You'll be part of the rapid response team. If ENTROPY attempts intrusion, you'll help counter them.
Dr. Chen: I'm preparing specialized defensive equipment. Detection tools, countermeasure packages, emergency lockdown access.
-> chen_main_hub
+ [Express concern about ENTROPY's capabilities]
Dr. Chen: *sighs* Yeah, me too. They're getting better. Faster. More sophisticated.
Dr. Chen: That's why I work late. Every improvement I make might be the difference between holding the line and catastrophic breach.
~ npc_chen_rapport += 5
-> chen_main_hub
=== experimental_tech_discussion ===
Dr. Chen: *absolute enthusiasm* Oh! Okay, so I'm working on some really exciting stuff right now!
Dr. Chen: Project Mirage—adaptive network camouflage that learns from each deployment. Gets better over time.
Dr. Chen: Project Sentinel—predictive threat detection AI. Tries to identify attacks before they happen.
Dr. Chen: Project Fortress—quantum-resistant encryption for critical communications. Future-proofing against quantum computing threats.
Which interests you?
+ [Tell me about Project Mirage]
-> experimental_mirage_details
+ [Explain Project Sentinel]
-> experimental_sentinel_details
+ [Describe Project Fortress]
-> experimental_fortress_details
+ [All of it sounds amazing]
Dr. Chen: *huge grin* Right?! This is why I love this job. Every project is pushing boundaries!
~ npc_chen_rapport += 10
-> chen_main_hub
=== experimental_mirage_details ===
Dr. Chen: Mirage is about learning adaptation. Current camouflage is static—I configure it, you deploy it.
Dr. Chen: Mirage learns from each mission. Analyzes what worked, what didn't. Automatically improves its disguise algorithms.
Dr. Chen: Eventually, it becomes customized to your specific operational patterns. Personalized stealth.
Dr. Chen: Still in early testing, but the results are promising!
-> experimental_tech_discussion
=== experimental_sentinel_details ===
Dr. Chen: Sentinel is my attempt at precognition through data analysis.
Dr. Chen: It monitors network traffic, security logs, ENTROPY communication patterns. Looks for pre-attack indicators.
Dr. Chen: Not perfect—lots of false positives still. But when it works? We get warning hours before ENTROPY strikes.
Dr. Chen: Could revolutionize our defensive posture if I can refine it.
-> experimental_tech_discussion
=== experimental_fortress_details ===
Dr. Chen: Fortress addresses a scary problem—quantum computers breaking current encryption.
Dr. Chen: When quantum computing becomes widespread, every encrypted message we've ever sent becomes readable. That's terrifying.
Dr. Chen: Fortress uses quantum-resistant mathematics. Should remain secure even against quantum decryption.
Dr. Chen: It's mathematically beautiful and operationally critical.
-> experimental_tech_discussion
=== volunteer_field_testing ===
Dr. Chen: *lights up* You'd really volunteer? Most agents avoid experimental gear!
Dr. Chen: I need field testing data. Lab conditions can't replicate real operational stress.
Dr. Chen: I promise to build in safety margins. Fallback systems. Kill switches. Your safety comes first.
+ [I trust your work. I'll test it.]
Dr. Chen: *emotional* That trust means everything. Seriously.
Dr. Chen: I'll prepare test equipment for your next mission. Thorough briefing beforehand. Real-time monitoring during deployment.
Dr. Chen: We're partners in this. Thank you.
~ npc_chen_rapport += 20
~ npc_chen_tech_collaboration += 3
-> chen_main_hub
+ [What would I be testing specifically?]
Dr. Chen: Depends on your next mission profile. Probably the adaptive camouflage or improved detection tools.
Dr. Chen: Nothing that could catastrophically fail. Just new features that need validation.
-> volunteer_field_testing
+ [Maybe next time]
Dr. Chen: No pressure! Experimental testing should always be voluntary. But if you change your mind, let me know!
-> chen_main_hub
=== technical_training_discussion ===
Dr. Chen: Technical training! I love teaching!
Dr. Chen: What interests you? Network security? Hardware hacking? Cryptography? Sensor systems?
+ [Network security]
Dr. Chen: Excellent choice. Understanding networks makes you better at infiltrating them.
Dr. Chen: I can run you through penetration testing, protocol analysis, intrusion detection...
~ professional_reputation += 2
#training_scheduled_network
-> chen_main_hub
+ [Hardware hacking]
Dr. Chen: Oh, fun! Physical access to systems. Let me teach you about circuit analysis, firmware exploitation, hardware implants...
~ professional_reputation += 2
#training_scheduled_hardware
-> chen_main_hub
+ [Cryptography]
Dr. Chen: *very excited* My specialty! I can teach you encryption theory, code-breaking techniques, quantum cryptography basics...
~ professional_reputation += 2
~ npc_chen_rapport += 5
#training_scheduled_crypto
-> chen_main_hub
+ [Just make me better at my job]
Dr. Chen: *grins* I can do that. Let me design a custom training program based on your recent missions.
Dr. Chen: I'll mix practical skills with theoretical knowledge. Make you a more effective operator.
~ professional_reputation += 3
-> chen_main_hub
=== END

View File

@@ -13,33 +13,33 @@
// Your game engine must persist these across ALL missions
// ===========================================
VAR npc_npc_chen_rapport = 50 // PERSISTENT - Dr. Chen's rapport with agent (0-100)
VAR npc_chen_npc_chen_tech_collaboration = 0 // PERSISTENT - Successful tech collaborations
VAR npc_chen_npc_chen_shared_discoveries = 0 // PERSISTENT - Technical breakthroughs together
VAR npc_chen_npc_chen_personal_conversations = 0 // PERSISTENT - Non-work discussions
VAR npc_chen_rapport = 50 // PERSISTENT - Dr. Chen's rapport with agent (0-100)
VAR npc_chen_tech_collaboration = 0 // PERSISTENT - Successful tech collaborations
VAR npc_chen_shared_discoveries = 0 // PERSISTENT - Technical breakthroughs together
VAR npc_chen_personal_conversations = 0 // PERSISTENT - Non-work discussions
// Topic tracking - ALL PERSISTENT (never reset)
VAR npc_chen_npc_chen_discussed_tech_philosophy = false // PERSISTENT
VAR npc_chen_npc_chen_discussed_entropy_tech = false // PERSISTENT
VAR npc_chen_npc_chen_discussed_chen_background = false // PERSISTENT
VAR npc_chen_npc_chen_discussed_favorite_projects = false // PERSISTENT
VAR npc_chen_npc_chen_discussed_experimental_tech = false // PERSISTENT
VAR npc_chen_npc_chen_discussed_research_frustrations = false // PERSISTENT
VAR npc_chen_npc_chen_discussed_field_vs_lab = false // PERSISTENT
VAR npc_chen_npc_chen_discussed_ethical_tech = false // PERSISTENT
VAR npc_chen_npc_chen_discussed_dream_projects = false // PERSISTENT
VAR npc_chen_npc_chen_discussed_tech_risks = false // PERSISTENT
VAR npc_chen_npc_chen_discussed_work_life_balance = false // PERSISTENT
VAR npc_chen_npc_chen_discussed_mentorship = false // PERSISTENT
VAR npc_chen_npc_chen_discussed_future_vision = false // PERSISTENT
VAR npc_chen_npc_chen_discussed_friendship_value = false // PERSISTENT
VAR npc_chen_npc_chen_discussed_collaborative_legacy = false // PERSISTENT
VAR npc_chen_npc_chen_discussed_beyond_safetynet = false // PERSISTENT
VAR npc_chen_discussed_tech_philosophy = false // PERSISTENT
VAR npc_chen_discussed_entropy_tech = false // PERSISTENT
VAR npc_chen_discussed_chen_background = false // PERSISTENT
VAR npc_chen_discussed_favorite_projects = false // PERSISTENT
VAR npc_chen_discussed_experimental_tech = false // PERSISTENT
VAR npc_chen_discussed_research_frustrations = false // PERSISTENT
VAR npc_chen_discussed_field_vs_lab = false // PERSISTENT
VAR npc_chen_discussed_ethical_tech = false // PERSISTENT
VAR npc_chen_discussed_dream_projects = false // PERSISTENT
VAR npc_chen_discussed_tech_risks = false // PERSISTENT
VAR npc_chen_discussed_work_life_balance = false // PERSISTENT
VAR npc_chen_discussed_mentorship = false // PERSISTENT
VAR npc_chen_discussed_future_vision = false // PERSISTENT
VAR npc_chen_discussed_friendship_value = false // PERSISTENT
VAR npc_chen_discussed_collaborative_legacy = false // PERSISTENT
VAR npc_chen_discussed_beyond_safetynet = false // PERSISTENT
// Special moments - PERSISTENT
VAR npc_npc_chen_shared_personal_story = false // PERSISTENT
VAR npc_chen_npc_chen_breakthrough_together = false // PERSISTENT
VAR npc_chen_npc_chen_earned_research_partner_status = false // PERSISTENT
VAR npc_chen_shared_personal_story = false // PERSISTENT
VAR npc_chen_breakthrough_together = false // PERSISTENT
VAR npc_chen_earned_research_partner_status = false // PERSISTENT
// ===========================================
// GLOBAL VARIABLES (session-only, span NPCs)

View File

@@ -0,0 +1,640 @@
// ===========================================
// HAXOLOTTLE CONVERSATION HUB
// Break Escape Universe
// ===========================================
// Central entry point for all Haxolottle (Agent 0x99) conversations
// Mixes personal friendship building with handler support
// Context-aware based on mission phase and operational needs
// Protocol 47-Alpha: No real identities disclosed
// ===========================================
// Include personal friendship file
INCLUDE haxolottle_ongoing_conversations.ink
// Include mission-specific files (examples - add more as missions are created)
// INCLUDE haxolottle_mission_ghost_handler.ink
// INCLUDE haxolottle_mission_data_sanctuary_support.ink
// ===========================================
// EXTERNAL CONTEXT VARIABLES
// These are provided by the game engine
// ===========================================
EXTERNAL player_name // LOCAL - Player's agent codename (not real name!)
EXTERNAL current_mission_id // LOCAL - Current mission being discussed
EXTERNAL npc_location // LOCAL - Where conversation happens ("handler_station", "briefing_room", "comms_active", "safehouse")
EXTERNAL mission_phase // LOCAL - Phase of current mission ("planning", "active", "debriefing", "downtime")
EXTERNAL operational_stress_level // LOCAL - How stressed the current situation is ("low", "moderate", "high", "crisis")
// ===========================================
// GLOBAL VARIABLES (shared across all NPCs)
// ===========================================
VAR total_missions_completed = 0 // GLOBAL - Total missions done
VAR professional_reputation = 0 // GLOBAL - Agent standing
// ===========================================
// MAIN ENTRY POINT
// Called by game engine when player talks to Haxolottle
// ===========================================
=== haxolottle_conversation_entry ===
// This is the main entry point - game engine calls this
{npc_location == "handler_station":
Haxolottle: Agent {player_name}! *swivels chair around from monitors* Good to see you. What's up?
- npc_location == "briefing_room":
Haxolottle: *sits across from you with tablet* Okay, let's review the handler support plan for this operation.
- npc_location == "comms_active":
Haxolottle: *over secure comms, calm and focused* Reading you clearly, {player_name}. How can I help?
- npc_location == "safehouse":
Haxolottle: *relaxed posture, coffee mug nearby* Hey. Safe to talk here. What do you need?
- else:
Haxolottle: {player_name}! What brings you by?
}
-> haxolottle_main_hub
// ===========================================
// MAIN HUB - CONTEXT-AWARE CONVERSATION MENU
// Dynamically shows personal + operational + mission topics
// ===========================================
=== haxolottle_main_hub ===
// Show different options based on location, mission phase, stress level, and friendship
// CRISIS HANDLING (takes priority during high-stress situations)
+ {operational_stress_level == "crisis" and mission_phase == "active"} [I need immediate handler support!]
Haxolottle: *instantly alert* Talk to me. What's happening?
-> crisis_handler_support
// PERSONAL FRIENDSHIP OPTION (available during downtime if topics exist)
+ {has_available_personal_topics() and mission_phase == "downtime"} [Want to chat? Non-work stuff?]
Haxolottle: *grins* Personal conversation? According to Regulation 847, that's encouraged for psychological wellbeing.
{npc_haxolottle_friendship_level >= 60:
Haxolottle: And honestly, I could use a break from staring at monitors. What's on your mind?
- else:
Haxolottle: Sure, I've got time. What do you want to talk about?
}
-> jump_to_personal_conversations
// ACTIVE MISSION HANDLER SUPPORT
+ {mission_phase == "active" and operational_stress_level != "crisis"} [Request handler support]
Haxolottle: On it. What do you need?
-> active_mission_handler_support
+ {mission_phase == "active"} [Request intel update]
Haxolottle: *pulls up intel feeds* Let me give you the current situation...
-> intel_update_active
+ {mission_phase == "active" and operational_stress_level == "high"} [Situation is getting complicated]
Haxolottle: *focused* Okay. Talk me through what's happening. We'll adapt.
-> complicated_situation_support
// MISSION PLANNING AND BRIEFING
+ {current_mission_id == "ghost_in_machine" and mission_phase == "planning"} [Review handler plan for Ghost Protocol]
Haxolottle: Ghost Protocol. Right. *pulls up mission docs* Let's go through the support plan.
-> mission_ghost_handler_briefing
+ {current_mission_id == "data_sanctuary" and mission_phase == "planning"} [Discuss Data Sanctuary handler support]
Haxolottle: Data Sanctuary defensive operation. I'll be coordinating multi-agent support. Here's how we'll handle it.
-> mission_sanctuary_handler_plan
+ {mission_phase == "planning"} [Ask about contingency planning]
Haxolottle: Contingencies! Yes. Let's talk about what happens when things go sideways.
Haxolottle: Per the axolotl principle—*slight smile*—we plan for regeneration.
-> contingency_planning_discussion
// DEBRIEFING
+ {mission_phase == "debriefing"} [Debrief the operation]
Haxolottle: *opens debrief form* Alright. Let's walk through what happened. Start from the beginning.
-> operation_debrief
+ {mission_phase == "debriefing" and operational_stress_level == "high"} [That mission was rough]
Haxolottle: *concerned* Yeah, I saw. Are you okay? Physically? Mentally?
-> rough_mission_debrief
// GENERAL HANDLER TOPICS (available during downtime)
+ {mission_phase == "downtime"} [Ask about current threat landscape]
Haxolottle: *brings up threat analysis dashboard* So, here's what ENTROPY is up to lately...
-> threat_landscape_update
+ {mission_phase == "downtime" and npc_haxolottle_friendship_level >= 40} [Ask for operational advice]
Haxolottle: You want my handler perspective? *settles in* Sure. What's the question?
-> operational_advice_from_handler
+ {npc_haxolottle_friendship_level >= 50 and mission_phase == "downtime"} [Ask about handler tradecraft]
Haxolottle: Handler tradecraft! You're interested in the behind-the-scenes stuff?
-> handler_tradecraft_discussion
// EXIT OPTIONS
+ {mission_phase == "active"} [That's all I needed. Thanks, Hax.]
Haxolottle: Roger. I'm monitoring your situation. Call if you need anything. Stay safe out there.
#exit_conversation
-> END
+ [That's all for now]
{npc_haxolottle_friendship_level >= 70:
Haxolottle: Alright, {player_name}. *genuine warmth* Always good talking with you. Take care of yourself.
- npc_haxolottle_friendship_level >= 40:
Haxolottle: Sounds good. Let me know if you need anything. Really, anytime.
- else:
Haxolottle: Okay. Talk later!
}
#exit_conversation
-> END
// ===========================================
// HELPER FUNCTION - Check for available personal topics
// ===========================================
=== function has_available_personal_topics() ===
// Returns true if there are any personal conversation topics available
{
// Phase 1 topics (missions 1-5)
- total_missions_completed <= 5:
{
- not npc_haxolottle_talked_hobbies_general: ~ return true
- not npc_haxolottle_talked_axolotl_obsession: ~ return true
- not npc_haxolottle_talked_music_taste: ~ return true
- not npc_haxolottle_talked_coffee_preferences and npc_haxolottle_talked_hobbies_general: ~ return true
- not npc_haxolottle_talked_stress_management and npc_haxolottle_friendship_level >= 15: ~ return true
- else: ~ return false
}
// Phase 2 topics (missions 6-10)
- total_missions_completed <= 10:
{
- not npc_haxolottle_talked_philosophy_change: ~ return true
- not npc_haxolottle_talked_handler_life: ~ return true
- not npc_haxolottle_talked_field_nostalgia and npc_haxolottle_friendship_level >= 30: ~ return true
- not npc_haxolottle_talked_weird_habits: ~ return true
- not npc_haxolottle_talked_favorite_operations and npc_haxolottle_friendship_level >= 35: ~ return true
- else: ~ return false
}
// Phase 3 and 4 topics would go here (file only has Phase 1-2 currently)
- else:
~ return false
}
// ===========================================
// JUMP TO PERSONAL CONVERSATIONS
// Routes to the appropriate phase hub in personal file
// ===========================================
=== jump_to_personal_conversations ===
// Jump to appropriate phase hub based on progression, then return here
{
- total_missions_completed <= 5:
-> haxolottle_ongoing_conversations.phase_1_hub_with_return ->
- total_missions_completed <= 10:
-> haxolottle_ongoing_conversations.phase_2_hub_with_return ->
}
// Return from personal conversations
Haxolottle: *shifts back to handler mode* So, anything else operational?
-> haxolottle_main_hub
// ===========================================
// CRISIS HANDLER SUPPORT
// ===========================================
=== crisis_handler_support ===
Haxolottle: *absolutely focused* Okay. Deep breath. You've trained for this.
Haxolottle: Tell me the situation. What's the immediate threat?
+ [Explain the crisis situation]
You quickly explain the critical situation you're facing.
Haxolottle: *processing rapidly* Okay. Okay. Here's what we're going to do...
-> crisis_solution_planning
+ [I'm compromised. Need extraction.]
Haxolottle: *immediately types* Extraction protocol initiated. I'm coordinating with Netherton now.
Haxolottle: Get to emergency waypoint Bravo. Fifteen minutes. Can you make it?
-> emergency_extraction_coordination
+ [Equipment failure in critical situation]
Haxolottle: *contacts Dr. Chen on second channel* Chen, I need you. Equipment failure, active operation.
Haxolottle: Agent {player_name}, Chen is on comms now. Walk them through the problem.
-> equipment_crisis_support
=== crisis_solution_planning ===
Haxolottle: *calm and methodical despite crisis*
Haxolottle: Alright. You have options. None are perfect, but you can regenerate from this.
Haxolottle: Option Alpha: [describes tactical approach]. Risk level: moderate. Success probability: 65%.
Haxolottle: Option Bravo: [describes alternative]. Risk level: high. Success probability: 80% if it works.
Haxolottle: Option Charlie: Abort and extract. Risk level: moderate. Mission fails but you live.
Which approach do you want to take?
+ [Option Alpha]
Haxolottle: Good call. I agree. Here's how we execute...
#crisis_resolved_alpha
-> haxolottle_main_hub
+ [Option Bravo]
Haxolottle: High risk, but yeah, the payoff justifies it. I'll support you. Let's do this carefully.
#crisis_resolved_bravo
-> haxolottle_main_hub
+ [Option Charlie - extract]
Haxolottle: Smart. Live to fight another day. Coordinates extraction...
Haxolottle: You made the right call. Equipment and missions are replaceable. You're not.
~ npc_haxolottle_friendship_level += 10
#crisis_extraction
-> haxolottle_main_hub
+ [Ask for their recommendation]
Haxolottle: *appreciates being consulted*
{operational_stress_level == "crisis":
Haxolottle: Honest assessment? Extract. The mission isn't worth your life. But it's your call.
- else:
Haxolottle: I'd try Alpha. Calculated risk with decent probability. But you're the one in the field.
}
-> crisis_solution_planning
=== emergency_extraction_coordination ===
Haxolottle: *rapid coordination on multiple channels*
Haxolottle: Netherton has authorized emergency extraction. Asset protection priority.
Haxolottle: Route to waypoint Bravo: *provides detailed navigation*
Haxolottle: I've got eyes on security feeds. I'll guide you around patrol patterns.
Haxolottle: {player_name}—*firm but caring*—you've got this. I'm with you every step. Move now.
#emergency_extraction_active
-> END
=== equipment_crisis_support ===
// Dr. Chen joins the comms channel
Dr. Chen: *over comms* Okay, I'm here. What's failing?
Haxolottle: I'll coordinate while Chen troubleshoots the tech. Two-handler support.
[This would integrate with Chen's technical support systems]
#multi_handler_crisis_support
-> haxolottle_main_hub
// ===========================================
// ACTIVE MISSION SUPPORT
// ===========================================
=== active_mission_handler_support ===
Haxolottle: *professional focus* What kind of support do you need?
+ [Intel refresh - what am I walking into?]
Haxolottle: *pulls up real-time intel* Current situation: [describes updated tactical picture]
Haxolottle: Changes from briefing: [notes differences]. Adapt accordingly.
-> haxolottle_main_hub
+ [Need security status update]
Haxolottle: *checking feeds* Security status: [describes guard patterns, surveillance state]
Haxolottle: Best infiltration window is in {twelve} minutes. That work for you?
-> haxolottle_main_hub
+ [Requesting abort confirmation]
Haxolottle: *serious* You want to abort? Talk to me. What's the situation?
-> abort_request_discussion
+ [Just checking in]
Haxolottle: *reassuring* All good. You're doing great. Operational tempo is solid. Keep it up.
~ npc_haxolottle_friendship_level += 3
-> haxolottle_main_hub
=== intel_update_active ===
Haxolottle: *real-time analysis on monitors*
Haxolottle: Current intel picture: ENTROPY activity level {moderate}. No indication they're aware of you.
Haxolottle: Target location status: [describes current state based on surveillance]
Haxolottle: Recommended approach: [tactical suggestion based on current intel]
+ [Acknowledge and proceed]
Haxolottle: Roger. I'll keep monitoring. Call if situation changes.
-> haxolottle_main_hub
+ [Intel doesn't match what I'm seeing]
Haxolottle: *immediately alert* Explain. What are you seeing that I'm not?
-> intel_discrepancy_resolution
+ [Request deeper analysis]
Haxolottle: *types rapidly* Give me two minutes. I'll pull additional sources...
-> deep_intel_analysis
=== complicated_situation_support ===
Haxolottle: *calm under pressure* Okay. Complications are normal. We adapt.
Haxolottle: Talk me through the specific complication. What changed?
+ [Explain the complication]
You describe how the situation has become more complex.
Haxolottle: *processes* Alright. That's not ideal, but it's manageable. Here's how we adjust...
Haxolottle: Remember the axolotl principle. Original approach failed. Time to regenerate a new one.
~ npc_haxolottle_friendship_level += 5
-> adaptation_planning
+ [Multiple things going wrong]
Haxolottle: *focused* Okay, let's triage. What's the most immediate problem?
-> crisis_triage
+ [I think I need to abort]
Haxolottle: *supportive* That's a valid option. Let's assess together. Walk me through your reasoning.
-> abort_assessment
=== adaptation_planning ===
Haxolottle: New plan: [outlines adapted approach based on the complication]
Haxolottle: This should account for the changes you're seeing. Thoughts?
+ [Sounds good. Proceeding with adapted plan.]
Haxolottle: Excellent. Execute when ready. I'm monitoring your six.
-> haxolottle_main_hub
+ [Still risky. What if it doesn't work?]
Haxolottle: Fair concern. Backup plan: [outlines contingency]
Haxolottle: You'll have options. That's what matters.
-> haxolottle_main_hub
+ [Got a better idea]
Haxolottle: *interested* I'm listening. What are you thinking?
-> agent_alternative_plan
=== abort_request_discussion ===
Haxolottle: *takes it seriously* Okay. If you want to abort, we abort. Your judgment in the field is what matters.
Haxolottle: But help me understand—is this "mission parameters changed beyond acceptable risk" or "something feels wrong"?
+ [Risk has exceeded acceptable parameters]
Haxolottle: *nods* Operational assessment. Respected. I'll coordinate extraction.
Haxolottle: Netherton might push back, but I'll support your call. You're the one taking the risk.
~ npc_haxolottle_friendship_level += 8
#mission_aborted
-> haxolottle_main_hub
+ [Something feels wrong - can't explain it]
Haxolottle: *trusts your instinct* That's valid. Field intuition saves lives. Abort authorized.
Haxolottle: We can analyze what felt wrong afterwards. Right now, get clear.
~ npc_haxolottle_friendship_level += 10
#mission_aborted_intuition
-> haxolottle_main_hub
+ [Actually, let me try one more thing first]
Haxolottle: *supportive* Okay. But the abort option stays on the table. I've got your back either way.
-> haxolottle_main_hub
=== intel_discrepancy_resolution ===
Haxolottle: *very focused* Intel discrepancy is serious. Describe exactly what you're seeing.
You explain the difference between Haxolottle's intel and ground truth.
Haxolottle: *urgent typing* Okay. Either my feeds are compromised or ENTROPY changed something recently.
Haxolottle: Recommend trusting your eyes over my monitors. Proceed with extreme caution. I'm investigating the discrepancy.
{npc_haxolottle_friendship_level >= 50:
Haxolottle: *concerned* And {player_name}? Be careful. If my intel is wrong, you're more exposed than we thought.
~ npc_haxolottle_friendship_level += 5
}
-> haxolottle_main_hub
// ===========================================
// MISSION-SPECIFIC HANDLER BRIEFINGS
// ===========================================
=== mission_ghost_handler_briefing ===
Haxolottle: *reviews mission documents*
Haxolottle: Ghost Protocol. High-stakes infiltration. Here's the handler support plan.
Haxolottle: Before you go in: I'll have access to facility security feeds, external surveillance, and ENTROPY communication intercepts.
Haxolottle: During infiltration: I'll provide real-time guidance on security patrols, alert you to threats, guide route adjustments.
Haxolottle: If compromised: Emergency extraction protocols ready. Three waypoints prepared.
+ [How reliable is the security feed access?]
Haxolottle: 85% confidence. Dr. Chen provided the access tools. They're good, but not perfect.
Haxolottle: If feeds cut out, you'll need to go silent running. We've prepared for that contingency.
-> mission_ghost_handler_briefing
+ [What if comms go down?]
Haxolottle: Good question. If we lose comms: fall back to pre-planned exfiltration route Alpha.
Haxolottle: I'll send periodic encrypted status pings. If you don't respond, I initiate extraction protocols.
-> mission_ghost_handler_briefing
+ [Sounds solid. I'm confident in this plan.]
Haxolottle: *slight smile* Good. Because I've run hundreds of handler ops, and this is one of my better plans.
Haxolottle: We've got this. Partnership.
~ npc_haxolottle_friendship_level += 5
-> haxolottle_main_hub
=== mission_sanctuary_handler_plan ===
Haxolottle: Data Sanctuary defensive operation. Different from infiltration—we're protecting rather than penetrating.
Haxolottle: I'll be coordinating four agents plus security personnel. Central tactical coordinator role.
Haxolottle: Your position will be [describes defensive position]. If ENTROPY attempts breach, you respond to my directions.
Haxolottle: This requires trusting my tactical picture. I'll be seeing things you can't. Follow my instructions precisely.
+ [I trust your tactical judgment]
Haxolottle: *appreciates that* Thank you. Command is easier when agents trust the handler.
Haxolottle: I won't let you down.
~ npc_haxolottle_friendship_level += 8
-> haxolottle_main_hub
+ [What if I see something you don't?]
Haxolottle: *good question* Always report anomalies immediately. You're my eyes on the ground.
Haxolottle: I coordinate big picture. You provide ground truth. Both matter.
-> mission_sanctuary_handler_plan
+ [Coordinating four agents sounds complex]
Haxolottle: It is. But I've done multi-agent ops before. As long as everyone follows instructions, it works.
Haxolottle: Just need everyone to trust the system. And me.
-> mission_sanctuary_handler_plan
=== contingency_planning_discussion ===
Haxolottle: Contingencies! My favorite part of planning.
Haxolottle: *pulls up contingency matrix* For every mission, I plan at least three "what if" scenarios.
Haxolottle: What if you're detected? What if extraction fails? What if comms are compromised? What if everything goes perfectly but ENTROPY adapted?
Haxolottle: The axolotl principle—*smiles*—regeneration over rigidity. Plans that can adapt.
+ [Walk me through the contingencies for this mission]
Haxolottle: *details specific contingencies based on current mission*
~ npc_haxolottle_friendship_level += 5
-> haxolottle_main_hub
+ [This seems paranoid]
Haxolottle: *shrugs* I've had too many operations go sideways. Paranoid preparation saves lives.
Haxolottle: When you're in the field and things go wrong, you'll be glad we planned for it.
-> haxolottle_main_hub
+ [I appreciate the thoroughness]
Haxolottle: *genuine* That means a lot. Handlers live and die by preparation.
Haxolottle: Knowing you value that preparation makes the late nights worth it.
~ npc_haxolottle_friendship_level += 8
-> haxolottle_main_hub
// ===========================================
// DEBRIEFING
// ===========================================
=== operation_debrief ===
Haxolottle: *opens debrief form* Standard post-operation debrief. Walk me through it chronologically.
+ [Provide thorough debrief]
You provide a detailed account of the operation.
Haxolottle: *taking notes* Good detail. This is exactly what I need for the after-action report.
{npc_haxolottle_friendship_level >= 40:
Haxolottle: And more importantly—are you okay? Physically? Mentally?
~ npc_haxolottle_friendship_level += 3
}
-> debrief_completion
+ [Give abbreviated version]
Haxolottle: *slight frown* I need more detail for the report. What specific challenges did you encounter?
-> detailed_debrief_questions
+ [Ask if they want their perspective first]
Haxolottle: *appreciates the question* Actually, yes. Let me tell you what I saw from handler perspective, then you fill gaps.
-> handler_perspective_debrief
=== rough_mission_debrief ===
Haxolottle: *concerned* Yeah, I was watching. That got intense.
Haxolottle: Before we do the formal debrief—are you actually okay? Not the professional "I'm fine." The real answer.
+ [Be honest about the difficulty]
You admit the mission was harder than expected and took a toll.
Haxolottle: *empathetic* Thank you for being honest. That mission pushed limits. You handled it, but pushing limits has costs.
Haxolottle: Take additional recovery time. I'll handle Netherton if they push back. Your wellbeing matters.
~ npc_haxolottle_friendship_level += 15
~ npc_haxolottle_trust_moments += 1
-> debrief_completion
+ [Downplay it professionally]
Haxolottle: *sees through it* Agent {player_name}. I watched that mission. It was rough. Don't minimize it.
Haxolottle: Acknowledging difficulty isn't weakness. It's accurate assessment.
-> rough_mission_debrief
+ [Thank them for asking]
Haxolottle: *genuine* Of course I ask. I watched you face that. I care about more than mission success—I care about you.
{npc_haxolottle_friendship_level >= 50:
Haxolottle: You're not just an asset to manage. You're... *hesitates* ...a colleague I value. A friend, within the constraints of Protocol 47-Alpha.
~ npc_haxolottle_friendship_level += 10
}
-> debrief_completion
=== debrief_completion ===
Haxolottle: *finalizes debrief documentation*
Haxolottle: Debrief complete. After-action report will go to Netherton and operational archives.
{mission_phase:
Haxolottle: Mission status: {total_missions_completed + 1} operations completed successfully.
~ total_missions_completed += 1
}
Haxolottle: You did good work, {player_name}. Really.
#debrief_complete
-> haxolottle_main_hub
// ===========================================
// GENERAL OPERATIONAL DISCUSSIONS
// ===========================================
=== threat_landscape_update ===
Haxolottle: *brings up classified threat dashboard*
Haxolottle: Current ENTROPY activity: [describes threat level based on mission count and patterns]
Haxolottle: Recent patterns suggest they're shifting tactics. More sophisticated network infiltration. Less brute force.
Haxolottle: We're adapting. Dr. Chen is developing new countermeasures. Netherton is adjusting operational protocols.
+ [Ask about specific threats]
Haxolottle: *provides detailed threat analysis*
-> haxolottle_main_hub
+ [Express concern about escalation]
Haxolottle: *serious* Yeah, me too. The escalation pattern is concerning.
Haxolottle: But that's why we're here. SAFETYNET exists to counter this. And we're getting better at it.
~ npc_haxolottle_friendship_level += 3
-> haxolottle_main_hub
+ [Thank them for the update]
Haxolottle: *nods* Situational awareness matters. Stay informed, stay effective.
-> haxolottle_main_hub
=== operational_advice_from_handler ===
Haxolottle: Handler perspective on operations. What do you want to know?
+ [How to be a better field agent]
Haxolottle: From handler perspective? Communicate clearly. Trust your handler's intel but verify with your eyes. Adapt when plans fail.
Haxolottle: Best agents treat handlers as partners, not support staff. We succeed together or fail together.
~ professional_reputation += 1
-> haxolottle_main_hub
+ [What mistakes do agents make?]
Haxolottle: *thoughtful* Biggest mistake: not calling for help until it's too late. Pride gets people hurt.
Haxolottle: Ask for support early. That's what handlers are for. We can't help if we don't know there's a problem.
~ professional_reputation += 1
-> haxolottle_main_hub
+ [How to work better with you specifically]
Haxolottle: *appreciates the question* Honestly? You already work well with me.
Haxolottle: You communicate clearly. You trust my intel while using your judgment. You understand the partnership.
{npc_haxolottle_friendship_level >= 50:
Haxolottle: You're one of the best agents I've handled. And I've handled a lot.
~ npc_haxolottle_friendship_level += 8
}
-> haxolottle_main_hub
=== handler_tradecraft_discussion ===
Haxolottle: Handler tradecraft! The behind-the-scenes magic.
Haxolottle: Handlers balance multiple information streams—security feeds, ENTROPY intercepts, agent biometrics, tactical maps—and synthesize it into actionable guidance.
Haxolottle: We're pattern recognition engines. Spotting threats before they manifest. Identifying opportunities you can't see from your position.
Haxolottle: And honestly? A lot of it is managing stress. Yours and ours. Keeping calm when everything is chaotic.
+ [That sounds incredibly complex]
Haxolottle: It is. But it's also what I'm good at. Turns out eight years of field experience translates well to handler work.
Haxolottle: I know what you're experiencing because I've experienced it. That empathy makes me better at support.
~ npc_haxolottle_friendship_level += 5
-> haxolottle_main_hub
+ [How do you manage your own stress?]
Haxolottle: *honest* Varies. Swimming helps. Reading. Listening to rain sounds while pretending I'm not worried about agents in danger.
{npc_haxolottle_friendship_level >= 40:
Haxolottle: Conversations like this help too. Knowing the agents I support see me as more than a voice on comms.
~ npc_haxolottle_friendship_level += 8
}
-> haxolottle_main_hub
+ [Could you teach me handler skills?]
Haxolottle: *interested* You want cross-training? Actually, that would make you a better field agent. Understanding both sides improves collaboration.
Haxolottle: I can set up some handler shadowing. You observe while I run someone else's operation. Educational for both roles.
~ professional_reputation += 2
~ npc_haxolottle_friendship_level += 10
#handler_training_offered
-> haxolottle_main_hub
=== END

View File

@@ -13,34 +13,34 @@
// Your game engine must persist these across ALL missions
// ===========================================
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
VAR npc_haxolottle_friendship_level = 0 // PERSISTENT - Overall relationship depth (0-100)
VAR npc_haxolottle_conversations_had = 0 // PERSISTENT - Total personal conversations
VAR npc_haxolottle_trust_moments = 0 // PERSISTENT - Times player shared something personal
VAR npc_haxolottle_humor_shared = 0 // PERSISTENT - Funny moments experienced together
VAR npc_haxolottle_vulnerable_moments = 0 // PERSISTENT - Times either shared something difficult
VAR npc_haxolottle_player_shared_personal = 0 // PERSISTENT - Count of player vulnerable moments
// 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
VAR npc_haxolottle_talked_hobbies_general = false // PERSISTENT
VAR npc_haxolottle_talked_axolotl_obsession = false // PERSISTENT
VAR npc_haxolottle_talked_music_taste = false // PERSISTENT
VAR npc_haxolottle_talked_coffee_preferences = false // PERSISTENT
VAR npc_haxolottle_talked_stress_management = false // PERSISTENT
VAR npc_haxolottle_talked_philosophy_change = false // PERSISTENT
VAR npc_haxolottle_talked_handler_life = false // PERSISTENT
VAR npc_haxolottle_talked_field_nostalgia = false // PERSISTENT
VAR npc_haxolottle_talked_weird_habits = false // PERSISTENT
VAR npc_haxolottle_talked_favorite_operations = false // PERSISTENT
VAR npc_haxolottle_talked_fears_anxieties = false // PERSISTENT
VAR npc_haxolottle_talked_what_if_different = false // PERSISTENT
VAR npc_haxolottle_talked_meaning_work = false // PERSISTENT
VAR npc_haxolottle_talked_friendship_boundaries = false // PERSISTENT
VAR npc_haxolottle_talked_future_dreams = false // PERSISTENT
VAR npc_haxolottle_talked_identity_burden = false // PERSISTENT
VAR npc_haxolottle_talked_loneliness_secrecy = false // PERSISTENT
VAR npc_haxolottle_talked_real_name_temptation = false // PERSISTENT
VAR npc_haxolottle_talked_after_safetynet = false // PERSISTENT
VAR npc_haxolottle_talked_genuine_friendship = false // PERSISTENT
// Deep personal reveals - PERSISTENT
VAR npc_haxolottle_shared_loss = false // PERSISTENT

View File

@@ -0,0 +1,358 @@
// ===========================================
// NETHERTON CONVERSATION HUB
// Break Escape Universe
// ===========================================
// Central entry point for all Netherton conversations
// Mixes personal relationship building with mission-specific content
// Context-aware based on current mission and location
// ===========================================
// Include personal relationship file
INCLUDE netherton_ongoing_conversations.ink
// Include mission-specific files (examples - add more as missions are created)
// INCLUDE netherton_mission_ghost_in_machine.ink
// INCLUDE netherton_mission_data_sanctuary.ink
// INCLUDE netherton_mission_protocol_breach.ink
// ===========================================
// EXTERNAL CONTEXT VARIABLES
// These are provided by the game engine
// ===========================================
EXTERNAL player_name // LOCAL - Player's agent name
EXTERNAL current_mission_id // LOCAL - Current mission being discussed
EXTERNAL npc_location // LOCAL - Where conversation happens ("office", "safehouse", "field", "briefing_room")
EXTERNAL mission_phase // LOCAL - Phase of current mission ("pre_briefing", "active", "debriefing", "downtime")
// ===========================================
// GLOBAL VARIABLES (shared across all NPCs)
// ===========================================
VAR total_missions_completed = 0 // GLOBAL - Total missions done
VAR professional_reputation = 0 // GLOBAL - Agent standing
// ===========================================
// MAIN ENTRY POINT
// Called by game engine when player talks to Netherton
// ===========================================
=== netherton_conversation_entry ===
// This is the main entry point - game engine calls this
{npc_location == "office":
Netherton: Agent {player_name}. *gestures to chair* What do you need?
- npc_location == "briefing_room":
Netherton: Agent. *stands at tactical display* We have matters to discuss.
- npc_location == "field":
Netherton: *over secure comms* Agent. Report.
- npc_location == "safehouse":
Netherton: *sits across from you in the secure room* We're clear to talk here. What's on your mind?
- else:
Netherton: Agent {player_name}. What requires my attention?
}
-> netherton_main_hub
// ===========================================
// MAIN HUB - CONTEXT-AWARE CONVERSATION MENU
// Dynamically shows personal + mission topics based on context
// ===========================================
=== netherton_main_hub ===
// Show different options based on location, mission phase, and relationship level
// PERSONAL RELATIONSHIP OPTION (always available if topics exist)
+ {has_available_personal_topics() and mission_phase != "active"} [How are you, Director?]
Netherton: *slight pause, as if surprised by personal question*
{npc_netherton_respect >= 70:
Netherton: That's... considerate of you to ask, Agent. I have a moment for personal discussion.
- else:
Netherton: An unusual question. But acceptable. What do you wish to discuss?
}
-> jump_to_personal_conversations
// MISSION-SPECIFIC CONVERSATIONS (context-dependent)
+ {current_mission_id == "ghost_in_machine" and mission_phase == "pre_briefing"} [Request briefing for Ghost Protocol operation]
Netherton: Very well. Let me bring you up to speed on Ghost Protocol.
-> mission_ghost_briefing
+ {current_mission_id == "ghost_in_machine" and mission_phase == "active"} [Request tactical guidance]
Netherton: *reviews your position on tactical display* What do you need?
-> mission_ghost_tactical_support
+ {current_mission_id == "ghost_in_machine" and mission_phase == "debriefing"} [Debrief Ghost Protocol operation]
Netherton: Submit your report, Agent.
-> mission_ghost_debrief
+ {current_mission_id == "data_sanctuary"} [About the Data Sanctuary operation...]
Netherton: The Data Sanctuary. A delicate situation. What questions do you have?
-> mission_sanctuary_discussion
+ {mission_phase == "downtime" and npc_netherton_respect >= 60} [Ask for operational advice]
Netherton: You want my counsel? *slight approval* Very well.
-> operational_advice_discussion
// GENERAL PROFESSIONAL TOPICS (available when not in active mission)
+ {mission_phase != "active"} [Ask about SAFETYNET operations status]
Netherton: *brings up secure display* Current operations status...
-> safetynet_status_update
+ {professional_reputation >= 50 and mission_phase == "downtime"} [Request additional training opportunities]
Netherton: Initiative. Good. What areas do you wish to develop?
-> training_discussion
// EXIT OPTIONS
+ {mission_phase == "active"} [That's all I needed, Director]
Netherton: Understood. Execute the mission. Report any developments.
#exit_conversation
-> END
+ [That will be all, Director]
{npc_netherton_respect >= 80:
Netherton: Very well, Agent {player_name}. *almost warm* Continue your excellent work.
- npc_netherton_respect >= 60:
Netherton: Dismissed. Maintain your current performance level.
- else:
Netherton: Dismissed.
}
#exit_conversation
-> END
// ===========================================
// HELPER FUNCTION - Check for available personal topics
// ===========================================
=== function has_available_personal_topics() ===
// Returns true if there are any personal conversation topics available
{
// Phase 1 topics (missions 1-5)
- total_missions_completed <= 5:
{
- not npc_netherton_discussed_handbook: ~ return true
- not npc_netherton_discussed_leadership: ~ return true
- not npc_netherton_discussed_safetynet_history: ~ return true
- not npc_netherton_discussed_expectations and npc_netherton_respect >= 55: ~ return true
- else: ~ return false
}
// Phase 2 topics (missions 6-10)
- total_missions_completed <= 10:
{
- not npc_netherton_discussed_difficult_decisions: ~ return true
- not npc_netherton_discussed_agent_development: ~ return true
- not npc_netherton_discussed_bureau_politics and npc_netherton_respect >= 65: ~ return true
- not npc_netherton_discussed_field_vs_command and npc_netherton_respect >= 60: ~ return true
- else: ~ return false
}
// Phase 3 topics (missions 11-15)
- total_missions_completed <= 15:
{
- not npc_netherton_discussed_weight_of_command and npc_netherton_respect >= 75: ~ return true
- not npc_netherton_discussed_agent_losses and npc_netherton_respect >= 70: ~ return true
- not npc_netherton_discussed_ethical_boundaries and npc_netherton_respect >= 70: ~ return true
- not npc_netherton_discussed_personal_cost and npc_netherton_respect >= 75: ~ return true
- else: ~ return false
}
// Phase 4 topics (missions 16+)
- total_missions_completed > 15:
{
- not npc_netherton_discussed_legacy and npc_netherton_respect >= 85: ~ return true
- not npc_netherton_discussed_trust and npc_netherton_respect >= 80: ~ return true
- not npc_netherton_discussed_rare_praise and npc_netherton_respect >= 85: ~ return true
- not npc_netherton_discussed_beyond_protocol and npc_netherton_respect >= 90: ~ return true
- else: ~ return false
}
- else:
~ return false
}
// ===========================================
// JUMP TO PERSONAL CONVERSATIONS
// Routes to the appropriate phase hub in personal file
// ===========================================
=== jump_to_personal_conversations ===
// Jump to appropriate phase hub based on progression, then return here
{
- total_missions_completed <= 5:
-> netherton_ongoing_conversations.phase_1_hub_with_return ->
- total_missions_completed <= 10:
-> netherton_ongoing_conversations.phase_2_hub_with_return ->
- total_missions_completed <= 15:
-> netherton_ongoing_conversations.phase_3_hub_with_return ->
- total_missions_completed > 15:
-> netherton_ongoing_conversations.phase_4_hub_with_return ->
}
// Return from personal conversations
Netherton: *returns to professional mode* Anything else you need to discuss?
-> netherton_main_hub
// ===========================================
// MISSION-SPECIFIC CONTENT STUBS
// These would be expanded in separate mission files
// ===========================================
=== mission_ghost_briefing ===
Netherton: Ghost Protocol targets a critical infrastructure backdoor. ENTROPY has embedded themselves in the power grid control systems for three states.
Netherton: Your objective: Infiltrate their command node, identify the attack vector, and disable their access without alerting them to SAFETYNET's awareness.
Netherton: Dr. Chen has prepared specialized equipment. Haxolottle will provide handler support during infiltration.
Netherton: Questions?
+ [Ask about the strategic importance]
Netherton: If ENTROPY activates this backdoor, they can cause cascading power failures across the region. Hospitals. Emergency services. Data centers. Millions affected.
Netherton: We cannot allow that capability to remain in hostile hands.
-> mission_ghost_briefing
+ [Ask about tactical considerations]
Netherton: The facility has physical security and digital monitoring. You'll need to bypass both simultaneously.
Netherton: Haxolottle has mapped their patrol patterns. Dr. Chen's camouflage system should mask your digital presence. But you'll need sound fieldcraft.
-> mission_ghost_briefing
+ [Ask about extraction plan]
Netherton: Standard extraction protocols apply. Complete the objective, egress quietly. If compromised, Protocol 7 authorizes forced extraction.
Netherton: I'd prefer you complete this quietly. Burned operations create complications.
-> mission_ghost_briefing
+ [I'm ready to proceed]
Netherton: Excellent. *hands you mission packet* Review the details. Brief with Dr. Chen for equipment. Haxolottle will coordinate deployment.
Netherton: Agent {player_name}—*direct look*—execute this cleanly. We're counting on you.
#mission_briefing_complete
-> netherton_main_hub
=== mission_ghost_tactical_support ===
Netherton: *monitoring your position* I'm tracking your progress. What do you need?
+ [Request permission to deviate from plan]
Netherton: Explain the deviation and justification.
// This would branch based on player's explanation
Netherton: ... Acceptable. Use your judgment. I trust your field assessment.
~ npc_netherton_respect += 5
-> netherton_main_hub
+ [Request emergency extraction]
Netherton: *immediately alert* Situation?
// This would handle emergency extraction logic
Netherton: Extraction authorized. Get to waypoint Charlie. Haxolottle is coordinating pickup.
#emergency_extraction_authorized
-> netherton_main_hub
+ [Just checking in]
Netherton: Acknowledged. You're performing well. Maintain operational tempo.
-> netherton_main_hub
=== mission_ghost_debrief ===
Netherton: Your mission report indicates success. The backdoor has been neutralized. ENTROPY remains unaware of our intervention.
{npc_netherton_respect >= 70:
Netherton: Excellent work, Agent. Your execution was textbook. This is exactly the kind of operational performance SAFETYNET requires.
~ npc_netherton_respect += 10
- else:
Netherton: Adequate performance. Mission objectives achieved. Some aspects could be refined.
~ npc_netherton_respect += 5
}
Netherton: Dr. Chen is analyzing the technical data you extracted. It may provide intelligence on other ENTROPY operations.
Netherton: Take forty-eight hours downtime. Then report for next assignment.
#mission_complete
-> netherton_main_hub
=== mission_sanctuary_discussion ===
Netherton: The Data Sanctuary operation. We're protecting a secure storage facility that houses classified intelligence from multiple allied agencies.
Netherton: ENTROPY has been probing the facility's defenses. They want what's inside.
Netherton: Your role will be defensive support. Not glamorous, but critical.
+ [Understood. What's my specific assignment?]
Netherton: Details forthcoming. I wanted to brief you on strategic context first.
-> netherton_main_hub
+ [Ask why ENTROPY wants this data]
Netherton: The sanctuary contains operation records, agent identities, tactical intelligence. A treasure trove for our adversaries.
Netherton: If compromised, dozens of ongoing operations burn. Agents in the field become exposed. The damage would be severe.
-> mission_sanctuary_discussion
+ [This mission sounds important]
Netherton: Every mission is important, Agent. But yes—this one has particularly high stakes.
-> netherton_main_hub
=== operational_advice_discussion ===
Netherton: You want operational advice. *considers* On what specific matter?
+ [How to handle ambiguous situations in the field]
Netherton: Ambiguity is constant in our work. The handbook provides framework, but you must exercise judgment.
Netherton: When faced with ambiguous situation: Assess risk. Identify options. Select least-worst approach. Execute decisively.
Netherton: Hesitation kills. Make the call and commit.
~ npc_netherton_respect += 5
-> netherton_main_hub
+ [How to improve mission planning]
Netherton: Read after-action reports from successful operations. Study what worked. Identify patterns.
Netherton: Anticipate failure modes. For each plan, ask: What could go wrong? How would I adapt?
Netherton: The axolotl principle—Haxolottle's term. Plan for regeneration when the original approach fails.
~ npc_netherton_respect += 5
-> netherton_main_hub
+ [How to advance in SAFETYNET]
Netherton: Consistent excellence. That's the path.
Netherton: Demonstrate competence. Show sound judgment. Develop specialized capabilities. Volunteer for challenging assignments.
Netherton: Most importantly: Maintain integrity. Technical skills can be trained. Character cannot.
~ npc_netherton_respect += 8
~ professional_reputation += 1
-> netherton_main_hub
=== safetynet_status_update ===
Netherton: *brings up classified display*
Netherton: Current threat level: Elevated. ENTROPY has increased activity across three operational theaters.
Netherton: CYBER-PHYSICAL division is running {total_missions_completed + 15} active operations. Your work is part of that larger campaign.
Netherton: We're making progress. But ENTROPY adapts. The fight continues.
+ [Ask about specific threats]
Netherton: Classified beyond your current access level. Your focus should remain on assigned missions.
-> netherton_main_hub
+ [Ask how the division is performing]
Netherton: We meet operational objectives consistently. Success rate is {85 + (npc_netherton_respect / 10)} percent over the past quarter.
Netherton: Acceptable, but there's room for improvement. Every failed operation represents unmitigated risk.
-> netherton_main_hub
+ [Thank them for the update]
Netherton: *nods* Maintaining situational awareness is important. Don't become narrowly focused on individual missions.
Netherton: Understand the larger context. Your work contributes to strategic objectives.
-> netherton_main_hub
=== training_discussion ===
Netherton: Training opportunities. What areas interest you?
+ [Advanced infiltration techniques]
Netherton: We run quarterly advanced tradecraft seminars. I'll add you to the roster. Expect rigorous training. High washout rate.
~ professional_reputation += 2
-> netherton_main_hub
+ [Leadership development]
Netherton: *slight approval* Thinking about command responsibilities. Good.
Netherton: There's a leadership program for senior agents. Application process is competitive. I can recommend you if your performance continues.
~ professional_reputation += 3
~ npc_netherton_respect += 10
-> netherton_main_hub
+ [Technical specialization]
Netherton: Dr. Chen runs technical workshops. I'll arrange access. They'll be pleased to have an agent interested in deep technical capability.
~ professional_reputation += 2
-> netherton_main_hub
=== END

View File

@@ -0,0 +1,345 @@
// ===========================================
// NETHERTON - GHOST IN THE MACHINE MISSION
// Break Escape Universe
// ===========================================
// Mission-specific dialogue for Ghost in the Machine operation
// This is an EXAMPLE showing how mission-specific files work
// Each mission can have its own file per NPC
// ===========================================
// Mission-specific variables (would be in global space or mission-specific save data)
VAR ghost_mission_briefed = false
VAR ghost_mission_active = false
VAR ghost_mission_complete = false
VAR ghost_player_asked_about_stakes = false
VAR ghost_player_requested_tactical_advice = false
// ===========================================
// MISSION BRIEFING
// Called from netherton_hub.ink
// ===========================================
=== ghost_briefing ===
Netherton: *activates secure display showing power grid infrastructure*
Netherton: Operation: Ghost in the Machine. Codename reflects the nature of the threat—ENTROPY has embedded malicious code into control systems that manage critical infrastructure.
Netherton: Target: Midwest Regional Power Coordination Center. ENTROPY has infiltrated their operational technology network and installed a persistent backdoor.
Netherton: *highlights affected regions on map*
Netherton: If activated, this backdoor grants ENTROPY control over power distribution for three states. Hospitals. Emergency services. Data centers. Millions of lives depend on stable power.
~ ghost_mission_briefed = true
* [Ask about strategic importance]
Netherton: Strategic importance is severe. ENTROPY gains leverage over critical infrastructure. They could trigger cascading failures. Hold populations hostage. Create chaos that serves their ideology.
Netherton: We cannot allow that capability to remain in hostile hands. This operation is defensive priority one.
~ ghost_player_asked_about_stakes = true
-> ghost_briefing
* [Ask about tactical considerations]
Netherton: Tactical complexity is high. The facility has both physical security—guards, surveillance, access controls—and digital monitoring—intrusion detection, network analysis.
Netherton: You must bypass both simultaneously. Physical infiltration without digital signature. Digital operations without physical detection.
Netherton: Dr. Chen has prepared specialized equipment. Active network camouflage will mask your digital presence. But you'll need sound tradecraft for physical infiltration.
~ ghost_player_requested_tactical_advice = true
-> ghost_briefing
* [Ask about the intelligence source]
Netherton: *slight hesitation*
Netherton: Intelligence derived from signals intercept and human source reporting. Reliability assessed as high. But not perfect.
Netherton: You should assume the intelligence is directionally accurate. Specific details may vary. Maintain operational flexibility.
-> ghost_briefing
* [Ask about rules of engagement]
Netherton: Rules of engagement: Non-lethal unless absolutely necessary for self-defense. This is a stealth operation. Violence creates complications.
Netherton: Facility personnel are civilians. They are not ENTROPY. They are unaware their systems have been compromised. Treat them as innocents.
Netherton: Your target is the ENTROPY backdoor code. Not the people who work there.
~ npc_netherton_respect += 5
-> ghost_briefing
* [Ask about extraction plan]
Netherton: Extraction follows standard protocols. Complete objective, egress quietly using planned route. Haxolottle will coordinate transportation.
Netherton: If compromised: Protocol 7 authorizes emergency extraction. Three prepared waypoints. Haxolottle has the coordinates.
Netherton: *firm look* I would prefer you complete this operation quietly. Burned operations create cascading problems. But your safety takes priority over operational security.
{npc_netherton_respect >= 70:
Netherton: *rare vulnerability* I'd rather you come back safe with a failed mission than not come back at all.
~ npc_netherton_respect += 5
}
-> ghost_briefing
* {ghost_player_asked_about_stakes and ghost_player_requested_tactical_advice} [I'm ready to proceed. Assign the mission.]
Netherton: *slight nod of approval*
Netherton: Mission assigned. *hands over classified mission packet*
Netherton: Review operational details thoroughly. Brief with Dr. Chen for equipment familiarization. Coordinate timing with Haxolottle.
Netherton: Agent {player_name}—*direct eye contact*—you're one of our most capable operators. That's why you're receiving this assignment.
{npc_netherton_respect >= 80:
Netherton: *almost warm* I have confidence in your abilities. Execute this mission with the excellence you've consistently demonstrated.
- npc_netherton_respect >= 60:
Netherton: Execute this cleanly. Demonstrate the operational skill I expect from agents of your caliber.
- else:
Netherton: Complete the mission. Maintain operational standards.
}
Netherton: Dismissed. Begin preparation.
~ ghost_mission_active = true
~ professional_reputation += 2
#mission_ghost_assigned
-> END
* [This seems like high-pressure assignment]
Netherton: *doesn't soften*
Netherton: It is high pressure. All our assignments carry weight. This particular operation has severe consequences for failure.
Netherton: That's why I'm assigning it to you. You've proven capable of handling pressure. This is not beyond your abilities.
{npc_netherton_respect >= 70:
Netherton: *slight reassurance* I would not assign you a mission I believed you couldn't complete. Trust your training. Trust your capabilities.
~ npc_netherton_respect += 5
}
-> ghost_briefing
// ===========================================
// TACTICAL SUPPORT DURING MISSION
// Called from netherton_hub.ink when mission is active
// ===========================================
=== ghost_tactical_support ===
Netherton: *monitoring your position on tactical display*
Netherton: Agent {player_name}, I have your location. What do you need?
* [Request permission to deviate from infiltration plan]
Netherton: Explain the deviation and tactical justification.
** [Explain that security patterns changed]
Netherton: *considers* Security adaptation is expected. If original route is compromised, alternate approach is reasonable.
Netherton: Granted. Use tactical judgment. Haxolottle will adjust monitoring based on new route.
~ npc_netherton_respect += 5
#deviation_approved
-> ghost_tactical_support
** [Explain that you found better approach]
Netherton: *evaluates*
{npc_netherton_respect >= 70:
Netherton: Your field assessment carries weight. If you've identified superior approach, I trust your judgment.
- else:
Netherton: Explain why your approach is superior to planned method.
}
Netherton: Approved. Execute your plan. Report results.
~ npc_netherton_respect += 8
#alternate_approach_approved
-> ghost_tactical_support
** [Explain that situation is more dangerous than expected]
Netherton: *concerned* How much more dangerous? Assess risk level.
Netherton: If deviation reduces risk while maintaining mission viability, approved. If risk exceeds acceptable parameters, consider abort.
Netherton: Your safety matters, Agent. Make the call.
~ npc_netherton_respect += 10
-> ghost_tactical_support
* [Request emergency extraction]
Netherton: *immediately alert* Situation report. Are you compromised?
** [Yes, position is compromised]
Netherton: *rapid coordination* Extraction authorized. Proceed to waypoint Charlie immediately. Haxolottle is scrambling pickup.
Netherton: Evade pursuit. Maintain comms if possible. We're getting you out.
#emergency_extraction_authorized
-> END
** [Not compromised but mission parameters exceeded]
Netherton: *assessing* Understood. Operational assessment indicating abort?
Netherton: Extraction authorized. Mission can be re-attempted with adjusted parameters. Agent safety is priority.
{npc_netherton_respect >= 70:
Netherton: Good call recognizing when to withdraw. Better to extract safely than push beyond limits.
~ npc_netherton_respect += 10
}
#tactical_abort_authorized
-> END
** [Equipment failure requiring extraction]
Netherton: Dr. Chen is monitoring your channel. Stand by.
Netherton: *to Chen* Can you remote-diagnose the failure?
// This would integrate with Chen's systems
Netherton: If equipment cannot be restored, extraction is authorized. Decision is yours, Agent.
-> ghost_tactical_support
* [Request real-time intel update]
Netherton: *checks multiple feeds*
Netherton: Current intel: [describes security status, ENTROPY activity, facility operations]
Netherton: Haxolottle reports: [provides handler assessment]
Netherton: Recommended action: [tactical suggestion]
Netherton: Questions?
-> ghost_tactical_support
* [Report mission objective complete]
Netherton: *verification* Confirm: ENTROPY backdoor has been neutralized? Evidence captured?
** [Confirm objective complete]
Netherton: Excellent. Begin exfiltration using planned route. Haxolottle will guide egress.
{npc_netherton_respect >= 80:
Netherton: *rare approval* Outstanding work, Agent. Textbook execution.
- npc_netherton_respect >= 60:
Netherton: Well done. Proceed to extraction point.
- else:
Netherton: Acknowledged. Extract.
}
~ ghost_mission_complete = true
~ npc_netherton_respect += 15
#mission_objective_complete
-> END
** [Objective complete but complications occurred]
Netherton: Elaborate on complications.
// Would branch based on specific complications
Netherton: Understood. Exfiltrate. We'll debrief complications after you're secure.
~ ghost_mission_complete = true
~ npc_netherton_respect += 10
#mission_complete_with_complications
-> END
* [Just checking in, all nominal]
Netherton: *brief acknowledgment* Acknowledged. Operational tempo is solid. Continue mission.
{npc_netherton_respect >= 60:
Netherton: You're performing well. Maintain current approach.
~ npc_netherton_respect += 3
}
-> END
// ===========================================
// MISSION DEBRIEF
// Called from netherton_hub.ink after mission completion
// ===========================================
=== ghost_debrief ===
Netherton: *mission after-action review display active*
Netherton: Agent {player_name}. Debrief for Operation Ghost in the Machine.
Netherton: Mission outcome: {ghost_mission_complete: Success | Failure}. ENTROPY backdoor status: {ghost_mission_complete: Neutralized | Remains active}.
{ghost_mission_complete:
Netherton: Your operational execution was {npc_netherton_respect >= 85: exemplary | npc_netherton_respect >= 70: highly competent | npc_netherton_respect >= 55: satisfactory | adequate}.
Netherton: The facility's power grid control systems have been secured. ENTROPY's capability to trigger cascading failures has been eliminated.
Netherton: Dr. Chen is analyzing the technical data you extracted. Initial assessment indicates this backdoor was part of a larger ENTROPY infrastructure campaign.
{npc_netherton_respect >= 80:
Netherton: *genuine approval* This is exactly the kind of operational performance SAFETYNET requires. You executed under pressure, adapted to complications, and achieved mission objectives without compromise.
~ npc_netherton_respect += 15
- npc_netherton_respect >= 65:
Netherton: Solid work. Mission objectives achieved. Some aspects could be refined in future operations, but overall performance meets standards.
~ npc_netherton_respect += 10
- else:
Netherton: Adequate performance. Mission complete. There are areas for improvement we'll address in training.
~ npc_netherton_respect += 5
}
~ professional_reputation += 5
~ total_missions_completed += 1
- else:
Netherton: Mission did not achieve primary objectives. ENTROPY backdoor remains in place. This is... disappointing.
Netherton: However, you exfiltrated safely. Equipment and personnel are recoverable. Mission can be re-attempted.
{npc_netherton_respect >= 60:
Netherton: The fact that you recognized when to abort shows sound judgment. Better to withdraw safely than to force failure into catastrophe.
~ npc_netherton_respect += 5
- else:
Netherton: We'll analyze what went wrong. Identify lessons learned. Prepare for second attempt.
}
}
* [Request detailed feedback on performance]
Netherton: *pulls up performance analysis*
Netherton: Technical execution: {npc_netherton_respect >= 75: Excellent | npc_netherton_respect >= 60: Competent | Needs improvement}. You demonstrated {npc_netherton_respect >= 70: strong | adequate} tradecraft.
Netherton: Decision-making under pressure: {npc_netherton_respect >= 75: Sound judgment consistently applied | npc_netherton_respect >= 60: Generally solid with minor questionable calls | Requires development}.
Netherton: Adaptation to complications: {npc_netherton_respect >= 75: Excellent flexibility and problem-solving | npc_netherton_respect >= 60: Adequate adaptation | Struggled with unexpected variables}.
{npc_netherton_respect >= 70:
Netherton: Areas for continued development: [specific constructive feedback]
Netherton: But overall, this was strong work. Continue this trajectory.
~ npc_netherton_respect += 5
- else:
Netherton: Areas requiring improvement: [specific critical feedback]
Netherton: Focus on these elements in training. Standards must be maintained.
}
-> ghost_debrief
* [Ask about the larger ENTROPY campaign]
Netherton: *brings up classified intelligence display*
Netherton: The backdoor you neutralized is consistent with ENTROPY's "Infrastructure Compromise Initiative"—their term, intercepted from communications.
Netherton: They're embedding persistent access in critical systems across multiple sectors. Power. Water. Communications. Transportation.
Netherton: Your operation denied them one attack vector. But the campaign continues. This is long-term conflict.
{npc_netherton_respect >= 70:
Netherton: *rare transparency* Which is why operatives like you are critical. Every operation you complete successfully degrades ENTROPY's capabilities.
Netherton: The work matters. You matter. Remember that.
~ npc_netherton_respect += 8
}
-> ghost_debrief
* [Ask about next assignment]
Netherton: *approves the professional focus*
Netherton: Take seventy-two hours recovery time. Regulation 412—mandatory rest after high-stress operations.
Netherton: After recovery period, report for next assignment briefing. I have several operations in development. Your performance on Ghost Protocol will inform assignment selection.
{npc_netherton_respect >= 75:
Netherton: Given your demonstrated capabilities, I'm considering you for increasingly complex operations. Keep performing at this level.
~ professional_reputation += 2
}
-> ghost_debrief
* {ghost_mission_complete} [This mission felt significant. Thank you for the assignment.]
Netherton: *slight surprise at the personal acknowledgment*
{npc_netherton_respect >= 70:
Netherton: You're welcome. Though the gratitude should flow both directions—you executed excellently.
Netherton: Assigning capable agents to critical missions is easy. Having agents who justify that confidence is rarer.
~ npc_netherton_respect += 10
~ npc_netherton_personal_moments += 1
- else:
Netherton: *formal* Assignment is based on operational requirements and agent capabilities. You met requirements. That's sufficient.
}
-> ghost_debrief
* [Request time for personal decompression]
Netherton: *approves immediately*
Netherton: Granted. High-stress operations take psychological toll. Take the time you need.
{npc_netherton_respect >= 65:
Netherton: *rare concern* Regulation 299 requires self-care. If you need counseling services, they're available. No judgment. No impact on operational status.
Netherton: I've used them myself after difficult operations. It helps.
~ npc_netherton_respect += 8
~ npc_netherton_personal_moments += 1
}
Netherton: Report when you're ready for next assignment. Not before.
-> ghost_debrief
* [That will be all, Director.]
Netherton: *nods*
{ghost_mission_complete and npc_netherton_respect >= 75:
Netherton: Excellent work on this operation, Agent {player_name}. *almost warm* Truly excellent.
Netherton: Dismissed. Take your recovery time. Return ready for the next challenge.
- ghost_mission_complete:
Netherton: Dismissed. Review the operational lessons learned. Apply them to future assignments.
- else:
Netherton: We'll revisit this mission. Learn from what went wrong. Dismissed.
}
#debrief_complete
-> END
=== END

View File

@@ -13,32 +13,32 @@
// Your game engine must persist these across ALL missions
// ===========================================
VAR npc_npc_netherton_respect = 50 // PERSISTENT - Director's respect for agent (0-100)
VAR npc_netherton_npc_netherton_serious_conversations = 0 // PERSISTENT - Formal discussions held
VAR npc_netherton_npc_netherton_personal_moments = 0 // PERSISTENT - Rare vulnerable moments
VAR npc_netherton_respect = 50 // PERSISTENT - Director's respect for agent (0-100)
VAR npc_netherton_serious_conversations = 0 // PERSISTENT - Formal discussions held
VAR npc_netherton_personal_moments = 0 // PERSISTENT - Rare vulnerable moments
// Topic tracking - ALL PERSISTENT (never reset)
VAR npc_netherton_npc_netherton_discussed_handbook = false // PERSISTENT
VAR npc_netherton_npc_netherton_discussed_leadership = false // PERSISTENT
VAR npc_netherton_npc_netherton_discussed_safetynet_history = false // PERSISTENT
VAR npc_netherton_npc_netherton_discussed_expectations = false // PERSISTENT
VAR npc_netherton_npc_netherton_discussed_difficult_decisions = false // PERSISTENT
VAR npc_netherton_npc_netherton_discussed_agent_development = false // PERSISTENT
VAR npc_netherton_npc_netherton_discussed_bureau_politics = false // PERSISTENT
VAR npc_netherton_npc_netherton_discussed_field_vs_command = false // PERSISTENT
VAR npc_netherton_npc_netherton_discussed_weight_of_command = false // PERSISTENT
VAR npc_netherton_npc_netherton_discussed_agent_losses = false // PERSISTENT
VAR npc_netherton_npc_netherton_discussed_ethical_boundaries = false // PERSISTENT
VAR npc_netherton_npc_netherton_discussed_personal_cost = false // PERSISTENT
VAR npc_netherton_npc_netherton_discussed_legacy = false // PERSISTENT
VAR npc_netherton_npc_netherton_discussed_trust = false // PERSISTENT
VAR npc_netherton_npc_netherton_discussed_rare_praise = false // PERSISTENT
VAR npc_netherton_npc_netherton_discussed_beyond_protocol = false // PERSISTENT
VAR npc_netherton_discussed_handbook = false // PERSISTENT
VAR npc_netherton_discussed_leadership = false // PERSISTENT
VAR npc_netherton_discussed_safetynet_history = false // PERSISTENT
VAR npc_netherton_discussed_expectations = false // PERSISTENT
VAR npc_netherton_discussed_difficult_decisions = false // PERSISTENT
VAR npc_netherton_discussed_agent_development = false // PERSISTENT
VAR npc_netherton_discussed_bureau_politics = false // PERSISTENT
VAR npc_netherton_discussed_field_vs_command = false // PERSISTENT
VAR npc_netherton_discussed_weight_of_command = false // PERSISTENT
VAR npc_netherton_discussed_agent_losses = false // PERSISTENT
VAR npc_netherton_discussed_ethical_boundaries = false // PERSISTENT
VAR npc_netherton_discussed_personal_cost = false // PERSISTENT
VAR npc_netherton_discussed_legacy = false // PERSISTENT
VAR npc_netherton_discussed_trust = false // PERSISTENT
VAR npc_netherton_discussed_rare_praise = false // PERSISTENT
VAR npc_netherton_discussed_beyond_protocol = false // PERSISTENT
// Achievement flags - PERSISTENT
VAR npc_npc_netherton_shared_vulnerability = false // PERSISTENT
VAR npc_netherton_npc_netherton_earned_personal_trust = false // PERSISTENT
VAR npc_netherton_npc_netherton_received_commendation = false // PERSISTENT
VAR npc_netherton_shared_vulnerability = false // PERSISTENT
VAR npc_netherton_earned_personal_trust = false // PERSISTENT
VAR npc_netherton_received_commendation = false // PERSISTENT
// ===========================================
// GLOBAL VARIABLES (session-only, span NPCs)