mirror of
https://github.com/cliffe/BreakEscape.git
synced 2026-02-21 11:18:08 +00:00
feat: Implement mission_hub pattern for NPC conversation routing
- Standardize all NPC hub files with a consistent 'mission_hub' knot - Rename chen_main_hub → mission_hub in chen_hub.ink - Rename netherton_main_hub → mission_hub in netherton_hub.ink - Rename haxolottle_main_hub → mission_hub in haxolottle_hub.ink - Add #exit_conversation tag handling in both conversation classes - PersonChatConversation: Add handleExitConversation() method - PhoneChatConversation: Add processTags() and handleExitConversation() - When personal conversations end, automatically navigate back to mission_hub - Allows seamless flow between personal/mission topics within same conversation This creates a hub-and-spoke pattern where: - mission_hub = central routing point (not visible to player) - Personal conversations branch off and return to hub - Mission-specific topics branch off and return to hub - Player sees continuous conversation, game manages routing
This commit is contained in:
@@ -414,6 +414,10 @@ export default class PersonChatConversation {
|
||||
this.handlePersonalSpace(params[0]);
|
||||
break;
|
||||
|
||||
case 'exit_conversation':
|
||||
this.handleExitConversation();
|
||||
break;
|
||||
|
||||
default:
|
||||
console.log(`⚠️ Unknown tag: ${action}`);
|
||||
}
|
||||
@@ -560,6 +564,29 @@ export default class PersonChatConversation {
|
||||
console.log(`↔️ Set NPC ${this.npcId} personal space: ${distance}px`);
|
||||
}
|
||||
|
||||
/**
|
||||
* Handle exit_conversation tag - navigate back to NPC's mission hub
|
||||
* Tag: #exit_conversation
|
||||
* This returns the player to the mission hub after personal conversations
|
||||
*/
|
||||
handleExitConversation() {
|
||||
console.log(`🔙 Exit conversation - navigating back to mission_hub for ${this.npc.id}`);
|
||||
|
||||
// Navigate back to the mission_hub knot in this NPC's hub file
|
||||
if (this.inkEngine) {
|
||||
try {
|
||||
this.inkEngine.goToKnot('mission_hub');
|
||||
|
||||
// Advance to get the new content at mission_hub
|
||||
this.advance();
|
||||
|
||||
console.log(`✅ Returned to mission_hub for ${this.npc.id}`);
|
||||
} catch (error) {
|
||||
console.error(`❌ Error navigating to mission_hub:`, error);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Check if conversation can continue
|
||||
* @returns {boolean} True if more dialogue/choices available
|
||||
|
||||
@@ -242,7 +242,12 @@ export default class PhoneChatConversation {
|
||||
|
||||
try {
|
||||
const result = this.engine.continue();
|
||||
|
||||
|
||||
// Process tags for side effects (like #exit_conversation)
|
||||
if (result.tags && result.tags.length > 0) {
|
||||
this.processTags(result.tags);
|
||||
}
|
||||
|
||||
// Check if story has ended (no more content and no choices)
|
||||
if (!result.canContinue && (!result.choices || result.choices.length === 0)) {
|
||||
this.storyEnded = true;
|
||||
@@ -251,13 +256,60 @@ export default class PhoneChatConversation {
|
||||
} else {
|
||||
result.hasEnded = false;
|
||||
}
|
||||
|
||||
|
||||
return result;
|
||||
} catch (error) {
|
||||
console.error('❌ Error continuing story:', error);
|
||||
return { text: '', choices: [], tags: [], canContinue: false, hasEnded: true };
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Process Ink tags for game actions
|
||||
* @param {Array} tags - Tags from current line
|
||||
*/
|
||||
processTags(tags) {
|
||||
if (!tags || tags.length === 0) return;
|
||||
|
||||
tags.forEach(tag => {
|
||||
console.log(`🏷️ Processing tag: ${tag}`);
|
||||
|
||||
// Tag format: "action:param1:param2"
|
||||
const [action, ...params] = tag.split(':');
|
||||
|
||||
switch (action.trim().toLowerCase()) {
|
||||
case 'exit_conversation':
|
||||
this.handleExitConversation();
|
||||
break;
|
||||
|
||||
default:
|
||||
// Unknown tags are okay - they might be processed by the UI layer
|
||||
console.log(`ℹ️ Unhandled tag: ${action}`);
|
||||
}
|
||||
});
|
||||
}
|
||||
|
||||
/**
|
||||
* Handle exit_conversation tag - navigate back to NPC's mission hub
|
||||
* Tag: #exit_conversation
|
||||
* This returns the player to the mission hub after personal conversations
|
||||
*/
|
||||
handleExitConversation() {
|
||||
console.log(`🔙 Exit conversation - navigating back to mission_hub for ${this.npcId}`);
|
||||
|
||||
// Navigate back to the mission_hub knot in this NPC's hub file
|
||||
if (this.engine) {
|
||||
try {
|
||||
this.engine.goToKnot('mission_hub');
|
||||
|
||||
// Get the new content at mission_hub (but don't auto-continue)
|
||||
// The UI will handle displaying it
|
||||
console.log(`✅ Returned to mission_hub for ${this.npcId}`);
|
||||
} catch (error) {
|
||||
console.error(`❌ Error navigating to mission_hub:`, error);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Make a choice and continue the story
|
||||
|
||||
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
@@ -50,14 +50,15 @@ EXTERNAL equipment_status() // LOCAL - Status of player's equipment
|
||||
Dr. Chen: Hey! What brings you by?
|
||||
}
|
||||
|
||||
-> chen_main_hub
|
||||
-> mission_hub
|
||||
|
||||
// ===========================================
|
||||
// MAIN HUB - CONTEXT-AWARE CONVERSATION MENU
|
||||
// Dynamically shows personal + technical + mission topics
|
||||
// MISSION HUB - Central routing point
|
||||
// Routes to personal conversations or mission-related topics
|
||||
// Game returns here after #exit_conversation from personal talks
|
||||
// ===========================================
|
||||
|
||||
=== chen_main_hub ===
|
||||
=== mission_hub ===
|
||||
|
||||
// Show different options based on location, mission phase, and relationship level
|
||||
|
||||
@@ -213,19 +214,19 @@ Dr. Chen: This is fixable, but it'll take some time. What happened out there?
|
||||
Dr. Chen: Give me about two hours. I'll have this repaired and reinforced.
|
||||
~ npc_chen_rapport += 5
|
||||
#equipment_repair_started
|
||||
-> chen_main_hub
|
||||
-> mission_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
|
||||
-> mission_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
|
||||
-> mission_hub
|
||||
|
||||
=== equipment_upgrade_menu ===
|
||||
Dr. Chen: *brings up equipment catalog on holographic display*
|
||||
@@ -243,21 +244,21 @@ What interests you?
|
||||
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
|
||||
-> mission_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
|
||||
-> mission_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
|
||||
-> mission_hub
|
||||
|
||||
+ [Ask what they recommend]
|
||||
Dr. Chen: *considers your mission profile*
|
||||
@@ -296,13 +297,13 @@ 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
|
||||
-> mission_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_hub
|
||||
|
||||
=== mission_ghost_equipment_briefing ===
|
||||
Dr. Chen: *pulls up equipment display with visible excitement*
|
||||
@@ -345,7 +346,7 @@ Dr. Chen: Any other questions about the gear? Or are you ready for me to configu
|
||||
~ npc_chen_rapport += 5
|
||||
}
|
||||
#equipment_configured
|
||||
-> chen_main_hub
|
||||
-> mission_hub
|
||||
|
||||
=== mission_ghost_tech_debrief ===
|
||||
Dr. Chen: *eager for feedback* Okay, tell me everything! How did the equipment perform?
|
||||
@@ -355,7 +356,7 @@ Dr. Chen: *eager for feedback* Okay, tell me everything! How did the equipment p
|
||||
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
|
||||
-> mission_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?
|
||||
@@ -364,7 +365,7 @@ Dr. Chen: *eager for feedback* Okay, tell me everything! How did the equipment p
|
||||
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
|
||||
-> mission_hub
|
||||
|
||||
+ [Honestly, it saved my life]
|
||||
Dr. Chen: *becomes emotional* It... really? Tell me what happened.
|
||||
@@ -373,7 +374,7 @@ Dr. Chen: *eager for feedback* Okay, tell me everything! How did the equipment p
|
||||
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_hub
|
||||
|
||||
=== mission_sanctuary_tech_overview ===
|
||||
Dr. Chen: *brings up Data Sanctuary schematics*
|
||||
@@ -387,18 +388,18 @@ Dr. Chen: If ENTROPY tries to breach this, they'll need nation-state level capab
|
||||
+ [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
|
||||
-> mission_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
|
||||
-> mission_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
|
||||
-> mission_hub
|
||||
|
||||
=== experimental_tech_discussion ===
|
||||
Dr. Chen: *absolute enthusiasm* Oh! Okay, so I'm working on some really exciting stuff right now!
|
||||
@@ -423,7 +424,7 @@ Which interests you?
|
||||
+ [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
|
||||
-> mission_hub
|
||||
|
||||
=== experimental_mirage_details ===
|
||||
Dr. Chen: Mirage is about learning adaptation. Current camouflage is static—I configure it, you deploy it.
|
||||
@@ -471,7 +472,7 @@ Dr. Chen: I promise to build in safety margins. Fallback systems. Kill switches.
|
||||
Dr. Chen: We're partners in this. Thank you.
|
||||
~ npc_chen_rapport += 20
|
||||
~ npc_chen_tech_collaboration += 3
|
||||
-> chen_main_hub
|
||||
-> mission_hub
|
||||
|
||||
+ [What would I be testing specifically?]
|
||||
Dr. Chen: Depends on your next mission profile. Probably the adaptive camouflage or improved detection tools.
|
||||
@@ -480,7 +481,7 @@ Dr. Chen: I promise to build in safety margins. Fallback systems. Kill switches.
|
||||
|
||||
+ [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
|
||||
-> mission_hub
|
||||
|
||||
=== technical_training_discussion ===
|
||||
Dr. Chen: Technical training! I love teaching!
|
||||
@@ -492,23 +493,23 @@ Dr. Chen: What interests you? Network security? Hardware hacking? Cryptography?
|
||||
Dr. Chen: I can run you through penetration testing, protocol analysis, intrusion detection...
|
||||
~ professional_reputation += 2
|
||||
#training_scheduled_network
|
||||
-> chen_main_hub
|
||||
-> mission_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
|
||||
-> mission_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
|
||||
-> mission_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
|
||||
-> mission_hub
|
||||
|
||||
@@ -51,14 +51,15 @@ EXTERNAL operational_stress_level() // LOCAL - How stressed the current situ
|
||||
Haxolottle: {player_name()}! What brings you by?
|
||||
}
|
||||
|
||||
-> haxolottle_main_hub
|
||||
-> mission_hub
|
||||
|
||||
// ===========================================
|
||||
// MAIN HUB - CONTEXT-AWARE CONVERSATION MENU
|
||||
// Dynamically shows personal + operational + mission topics
|
||||
// MISSION HUB - Central routing point
|
||||
// Routes to personal conversations or mission-related topics
|
||||
// Game returns here after #exit_conversation from personal talks
|
||||
// ===========================================
|
||||
|
||||
=== haxolottle_main_hub ===
|
||||
=== mission_hub ===
|
||||
|
||||
// Show different options based on location, mission phase, stress level, and friendship
|
||||
|
||||
@@ -233,19 +234,19 @@ 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
|
||||
-> mission_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
|
||||
-> mission_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
|
||||
-> mission_hub
|
||||
|
||||
+ [Ask for their recommendation]
|
||||
Haxolottle: *appreciates being consulted*
|
||||
@@ -279,7 +280,7 @@ Haxolottle: I'll coordinate while Chen troubleshoots the tech. Two-handler suppo
|
||||
[This would integrate with Chen's technical support systems]
|
||||
|
||||
#multi_handler_crisis_support
|
||||
-> haxolottle_main_hub
|
||||
-> mission_hub
|
||||
|
||||
// ===========================================
|
||||
// ACTIVE MISSION SUPPORT
|
||||
@@ -291,12 +292,12 @@ 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
|
||||
-> mission_hub
|
||||
|
||||
+ [Need security status update]
|
||||
Haxolottle: *checking feeds* Security status: [describes guard patterns, surveillance state]
|
||||
Haxolottle: Best infiltration window is in 12 minutes. That work for you?
|
||||
-> haxolottle_main_hub
|
||||
-> mission_hub
|
||||
|
||||
+ [Requesting abort confirmation]
|
||||
Haxolottle: *serious* You want to abort? Talk to me. What's the situation?
|
||||
@@ -305,7 +306,7 @@ Haxolottle: *professional focus* What kind of support do you need?
|
||||
+ [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
|
||||
-> mission_hub
|
||||
|
||||
=== intel_update_active ===
|
||||
Haxolottle: *real-time analysis on monitors*
|
||||
@@ -318,7 +319,7 @@ 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
|
||||
-> mission_hub
|
||||
|
||||
+ [Intel doesn't match what I'm seeing]
|
||||
Haxolottle: *immediately alert* Explain. What are you seeing that I'm not?
|
||||
@@ -355,12 +356,12 @@ 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
|
||||
-> mission_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
|
||||
-> mission_hub
|
||||
|
||||
+ [Got a better idea]
|
||||
Haxolottle: *interested* I'm listening. What are you thinking?
|
||||
@@ -376,18 +377,18 @@ Haxolottle: But help me understand—is this "mission parameters changed beyond
|
||||
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
|
||||
-> mission_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
|
||||
-> mission_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
|
||||
-> mission_hub
|
||||
|
||||
=== intel_discrepancy_resolution ===
|
||||
Haxolottle: *very focused* Intel discrepancy is serious. Describe exactly what you're seeing.
|
||||
@@ -403,7 +404,7 @@ Haxolottle: Recommend trusting your eyes over my monitors. Proceed with extreme
|
||||
~ npc_haxolottle_friendship_level += 5
|
||||
}
|
||||
|
||||
-> haxolottle_main_hub
|
||||
-> mission_hub
|
||||
|
||||
// ===========================================
|
||||
// MISSION-SPECIFIC HANDLER BRIEFINGS
|
||||
@@ -434,7 +435,7 @@ Haxolottle: If compromised: Emergency extraction protocols ready. Three waypoint
|
||||
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_hub
|
||||
|
||||
=== mission_sanctuary_handler_plan ===
|
||||
Haxolottle: Data Sanctuary defensive operation. Different from infiltration—we're protecting rather than penetrating.
|
||||
@@ -449,7 +450,7 @@ Haxolottle: This requires trusting my tactical picture. I'll be seeing things yo
|
||||
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
|
||||
-> mission_hub
|
||||
|
||||
+ [What if I see something you don't?]
|
||||
Haxolottle: *good question* Always report anomalies immediately. You're my eyes on the ground.
|
||||
@@ -473,18 +474,18 @@ Haxolottle: The axolotl principle—*smiles*—regeneration over rigidity. Plans
|
||||
+ [Walk me through the contingencies for this mission]
|
||||
Haxolottle: *details specific contingencies based on current mission*
|
||||
~ npc_haxolottle_friendship_level += 5
|
||||
-> haxolottle_main_hub
|
||||
-> mission_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
|
||||
-> mission_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
|
||||
-> mission_hub
|
||||
|
||||
// ===========================================
|
||||
// DEBRIEFING
|
||||
@@ -549,7 +550,7 @@ Haxolottle: Debrief complete. After-action report will go to Netherton and opera
|
||||
Haxolottle: You did good work, {player_name()}. Really.
|
||||
|
||||
#debrief_complete
|
||||
-> haxolottle_main_hub
|
||||
-> mission_hub
|
||||
|
||||
// ===========================================
|
||||
// GENERAL OPERATIONAL DISCUSSIONS
|
||||
@@ -566,17 +567,17 @@ Haxolottle: We're adapting. Dr. Chen is developing new countermeasures. Netherto
|
||||
|
||||
+ [Ask about specific threats]
|
||||
Haxolottle: *provides detailed threat analysis*
|
||||
-> haxolottle_main_hub
|
||||
-> mission_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
|
||||
-> mission_hub
|
||||
|
||||
+ [Thank them for the update]
|
||||
Haxolottle: *nods* Situational awareness matters. Stay informed, stay effective.
|
||||
-> haxolottle_main_hub
|
||||
-> mission_hub
|
||||
|
||||
=== operational_advice_from_handler ===
|
||||
Haxolottle: Handler perspective on operations. What do you want to know?
|
||||
@@ -585,13 +586,13 @@ Haxolottle: Handler perspective on operations. What do you want to know?
|
||||
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
|
||||
-> mission_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
|
||||
-> mission_hub
|
||||
|
||||
+ [How to work better with you specifically]
|
||||
Haxolottle: *appreciates the question* Honestly? You already work well with me.
|
||||
@@ -600,7 +601,7 @@ Haxolottle: Handler perspective on operations. What do you want to know?
|
||||
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
|
||||
-> mission_hub
|
||||
|
||||
=== handler_tradecraft_discussion ===
|
||||
Haxolottle: Handler tradecraft! The behind-the-scenes magic.
|
||||
@@ -615,7 +616,7 @@ Haxolottle: And honestly? A lot of it is managing stress. Yours and ours. Keepin
|
||||
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
|
||||
-> mission_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.
|
||||
@@ -623,7 +624,7 @@ Haxolottle: And honestly? A lot of it is managing stress. Yours and ours. Keepin
|
||||
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
|
||||
-> mission_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.
|
||||
@@ -631,7 +632,7 @@ Haxolottle: And honestly? A lot of it is managing stress. Yours and ours. Keepin
|
||||
~ professional_reputation += 2
|
||||
~ npc_haxolottle_friendship_level += 10
|
||||
#handler_training_offered
|
||||
-> haxolottle_main_hub
|
||||
-> mission_hub
|
||||
|
||||
// ===========================================
|
||||
// STUB KNOTS - To be implemented
|
||||
@@ -640,29 +641,29 @@ Haxolottle: And honestly? A lot of it is managing stress. Yours and ours. Keepin
|
||||
=== deep_intel_analysis ===
|
||||
Haxolottle: *analyzing data* I'm pulling deeper intelligence sources now. Give me a moment...
|
||||
Haxolottle: Alright, here's what I'm seeing from the extended analysis...
|
||||
-> haxolottle_main_hub
|
||||
-> mission_hub
|
||||
|
||||
=== crisis_triage ===
|
||||
Haxolottle: *focused triage mode* Okay, let's prioritize. First, secure your immediate position. Second, we assess escape routes.
|
||||
Haxolottle: Talk to me. What's the most pressing threat right now?
|
||||
-> haxolottle_main_hub
|
||||
-> mission_hub
|
||||
|
||||
=== abort_assessment ===
|
||||
Haxolottle: *methodical assessment* Let's walk through the abort decision together. What's driving this?
|
||||
Haxolottle: Sometimes abort is the right call. Sometimes we just need to adapt. Let's figure out which this is.
|
||||
-> haxolottle_main_hub
|
||||
-> mission_hub
|
||||
|
||||
=== agent_alternative_plan ===
|
||||
Haxolottle: *collaborative planning* Okay, you have an alternative approach in mind. Walk me through it.
|
||||
Haxolottle: I'll assess feasibility from my end while you explain the concept.
|
||||
-> haxolottle_main_hub
|
||||
-> mission_hub
|
||||
|
||||
=== detailed_debrief_questions ===
|
||||
Haxolottle: *detailed questioning* I need you to walk me through the timeline step by step.
|
||||
Haxolottle: What happened first? What was your decision-making process at each critical point?
|
||||
-> haxolottle_main_hub
|
||||
-> mission_hub
|
||||
|
||||
=== handler_perspective_debrief ===
|
||||
Haxolottle: *handler analysis* From my monitoring position, here's what I observed during your operation...
|
||||
Haxolottle: There were moments where communication could have been clearer, but overall solid execution.
|
||||
-> haxolottle_main_hub
|
||||
-> mission_hub
|
||||
|
||||
@@ -50,14 +50,15 @@ EXTERNAL mission_phase() // LOCAL - Phase of current mission ("pr
|
||||
Netherton: Agent {player_name()}. What requires my attention?
|
||||
}
|
||||
|
||||
-> netherton_main_hub
|
||||
-> mission_hub
|
||||
|
||||
// ===========================================
|
||||
// MAIN HUB - CONTEXT-AWARE CONVERSATION MENU
|
||||
// Dynamically shows personal + mission topics based on context
|
||||
// MISSION HUB - Central routing point
|
||||
// Routes to personal conversations or mission-related topics
|
||||
// Game returns here after #exit_conversation from personal talks
|
||||
// ===========================================
|
||||
|
||||
=== netherton_main_hub ===
|
||||
=== mission_hub ===
|
||||
|
||||
// Show different options based on location, mission phase, and relationship level
|
||||
|
||||
@@ -222,7 +223,7 @@ Netherton: Questions?
|
||||
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_hub
|
||||
|
||||
=== mission_ghost_tactical_support ===
|
||||
Netherton: *monitoring your position* I'm tracking your progress. What do you need?
|
||||
@@ -232,18 +233,18 @@ Netherton: *monitoring your position* I'm tracking your progress. What do you ne
|
||||
// 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
|
||||
-> mission_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
|
||||
-> mission_hub
|
||||
|
||||
+ [Just checking in]
|
||||
Netherton: Acknowledged. You're performing well. Maintain operational tempo.
|
||||
-> netherton_main_hub
|
||||
-> mission_hub
|
||||
|
||||
=== mission_ghost_debrief ===
|
||||
Netherton: Your mission report indicates success. The backdoor has been neutralized. ENTROPY remains unaware of our intervention.
|
||||
@@ -261,7 +262,7 @@ Netherton: Dr. Chen is analyzing the technical data you extracted. It may provid
|
||||
Netherton: Take forty-eight hours downtime. Then report for next assignment.
|
||||
|
||||
#mission_complete
|
||||
-> netherton_main_hub
|
||||
-> mission_hub
|
||||
|
||||
=== mission_sanctuary_discussion ===
|
||||
Netherton: The Data Sanctuary operation. We're protecting a secure storage facility that houses classified intelligence from multiple allied agencies.
|
||||
@@ -272,7 +273,7 @@ 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
|
||||
-> mission_hub
|
||||
|
||||
+ [Ask why ENTROPY wants this data]
|
||||
Netherton: The sanctuary contains operation records, agent identities, tactical intelligence. A treasure trove for our adversaries.
|
||||
@@ -281,7 +282,7 @@ Netherton: Your role will be defensive support. Not glamorous, but critical.
|
||||
|
||||
+ [This mission sounds important]
|
||||
Netherton: Every mission is important, Agent. But yes—this one has particularly high stakes.
|
||||
-> netherton_main_hub
|
||||
-> mission_hub
|
||||
|
||||
=== operational_advice_discussion ===
|
||||
Netherton: You want operational advice. *considers* On what specific matter?
|
||||
@@ -291,14 +292,14 @@ Netherton: You want operational advice. *considers* On what specific matter?
|
||||
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
|
||||
-> mission_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
|
||||
-> mission_hub
|
||||
|
||||
+ [How to advance in SAFETYNET]
|
||||
Netherton: Consistent excellence. That's the path.
|
||||
@@ -306,7 +307,7 @@ Netherton: You want operational advice. *considers* On what specific matter?
|
||||
Netherton: Most importantly: Maintain integrity. Technical skills can be trained. Character cannot.
|
||||
~ npc_netherton_respect += 8
|
||||
~ professional_reputation += 1
|
||||
-> netherton_main_hub
|
||||
-> mission_hub
|
||||
|
||||
=== safetynet_status_update ===
|
||||
Netherton: *brings up classified display*
|
||||
@@ -319,17 +320,17 @@ 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
|
||||
-> mission_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
|
||||
-> mission_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
|
||||
-> mission_hub
|
||||
|
||||
=== training_discussion ===
|
||||
Netherton: Training opportunities. What areas interest you?
|
||||
@@ -337,16 +338,16 @@ 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
|
||||
-> mission_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
|
||||
-> mission_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
|
||||
-> mission_hub
|
||||
|
||||
Reference in New Issue
Block a user