mirror of
https://github.com/cliffe/BreakEscape.git
synced 2026-02-21 11:18:08 +00:00
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:
477
story_design/ink/NPC_HUB_ARCHITECTURE.md
Normal file
477
story_design/ink/NPC_HUB_ARCHITECTURE.md
Normal 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.
|
||||
519
story_design/ink/chen_hub.ink
Normal file
519
story_design/ink/chen_hub.ink
Normal 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
|
||||
@@ -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)
|
||||
|
||||
640
story_design/ink/haxolottle_hub.ink
Normal file
640
story_design/ink/haxolottle_hub.ink
Normal 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
|
||||
@@ -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
|
||||
|
||||
358
story_design/ink/netherton_hub.ink
Normal file
358
story_design/ink/netherton_hub.ink
Normal 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
|
||||
345
story_design/ink/netherton_mission_ghost_example.ink
Normal file
345
story_design/ink/netherton_mission_ghost_example.ink
Normal 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
|
||||
@@ -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)
|
||||
|
||||
Reference in New Issue
Block a user