feat: Unify all NPC relationships to use 'influence' scoring

BREAKING CHANGE: Unified relationship variable naming

Old System (Per-NPC Variables):
- Dr. Chen: npc_chen_rapport with #rapport_gained/lost tags
- Director Netherton: npc_netherton_respect with #respect_gained/lost tags
- Haxolottle: npc_haxolottle_friendship_level with #friendship_gained/lost tags

New System (Unified Influence):
- Dr. Chen: npc_chen_influence with #influence_gained/lost tags
- Director Netherton: npc_netherton_influence with #influence_gained/lost tags
- Haxolottle: npc_haxolottle_influence with #influence_gained/lost tags

Benefits:
- Consistent scoring system across all NPCs
- Simpler to understand and balance
- Unified tag system (#influence_gained/lost)
- Messages still customized per NPC based on their personality

Files Changed:
- dr_chen_ongoing_conversations.ink: rapport → influence
- chen_hub.ink: rapport → influence
- netherton_ongoing_conversations.ink: respect → influence
- netherton_hub.ink: respect → influence
- haxolottle_ongoing_conversations.ink: friendship_level → influence
- haxolottle_hub.ink: friendship_level → influence
- PersonChatConversation.js: Updated getInfluenceMessage() for unified system
  - Now detects NPC ID and provides appropriate messages
  - Supports legacy tag names for backward compatibility
- INK_BEST_PRACTICES.md: Updated all examples and documentation
  - Variable naming conventions
  - Tag system documentation
  - All code examples
  - NPC-specific sections
- NPC_HUB_ARCHITECTURE.md: Updated influence system documentation
- Recompiled all hub JSON files

Messages by NPC:
- Dr. Chen: "Dr. Chen appreciates that" / "Dr. Chen is disappointed"
- Netherton: "Director Netherton approves" / "Director Netherton is displeased"
- Haxolottle: "Haxolottle likes that" / "Haxolottle seems disappointed"

All files compile successfully with unified influence system.
This commit is contained in:
Z. Cliffe Schreuders
2025-11-19 13:44:30 +00:00
parent acc793815b
commit 06685b5328
12 changed files with 1095 additions and 1074 deletions

View File

@@ -612,11 +612,33 @@ export default class PersonChatConversation {
getInfluenceMessage(type, amount, direction) {
const baseType = type.replace('_gained', '').replace('_lost', '');
const messages = {
influence: {
gained: amount >= 10 ? 'Influence significantly increased' : 'Influence increased',
lost: amount >= 10 ? 'Influence significantly decreased' : 'Influence decreased'
},
// Unified influence messages based on NPC and amount
const npcId = this.npc.id;
if (baseType === 'influence') {
if (direction === 'gained') {
if (npcId === 'dr_chen') {
return amount >= 10 ? 'Dr. Chen really likes that' : 'Dr. Chen appreciates that';
} else if (npcId === 'director_netherton') {
return amount >= 10 ? 'Director Netherton is impressed' : 'Director Netherton approves';
} else if (npcId === 'haxolottle') {
return amount >= 10 ? 'Haxolottle really appreciates that' : 'Haxolottle likes that';
}
return amount >= 10 ? 'Influence significantly increased' : 'Influence increased';
} else {
if (npcId === 'dr_chen') {
return amount >= 10 ? 'Dr. Chen is disappointed' : 'Dr. Chen seems uncertain';
} else if (npcId === 'director_netherton') {
return amount >= 10 ? 'Director Netherton is displeased' : 'Director Netherton notes this';
} else if (npcId === 'haxolottle') {
return amount >= 10 ? 'Haxolottle is hurt' : 'Haxolottle seems disappointed';
}
return amount >= 10 ? 'Influence significantly decreased' : 'Influence decreased';
}
}
// Legacy support for old tag types (if any remain)
const legacyMessages = {
rapport: {
gained: amount >= 10 ? 'Dr. Chen likes that' : 'Dr. Chen appreciates that',
lost: amount >= 10 ? 'Dr. Chen is disappointed' : 'Dr. Chen is uncertain'
@@ -631,7 +653,7 @@ export default class PersonChatConversation {
}
};
return messages[baseType]?.[direction] || `${baseType} ${direction}`;
return legacyMessages[baseType]?.[direction] || `${baseType} ${direction}`;
}
/**

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

View File

@@ -68,31 +68,32 @@ Dr. Chen: Great talking with you!
### Visual Feedback for Relationship Changes
Every time an NPC's influence/rapport/respect/friendship changes, add a tag for visual feedback to the player.
Every time an NPC's influence changes, add a tag for visual feedback to the player.
**All NPCs now use unified `influence` scoring** for consistency and simplicity.
### Tag Format
```ink
// Variable change
~ npc_chen_rapport += 5
~ npc_chen_influence += 5
// Visual feedback tag (on next line)
#rapport_gained:5
#influence_gained:5
```
### Available Tags
**Positive Changes:**
- `#rapport_gained:X` - Dr. Chen likes this (+X rapport)
- `#respect_gained:X` - Director Netherton approves (+X respect)
- `#friendship_gained:X` - Haxolottle appreciates this (+X friendship)
- `#influence_gained:X` - Generic influence increase
- `#influence_gained:X` - NPC appreciates this (+X influence)
**Negative Changes:**
- `#rapport_lost:X` - Dr. Chen is disappointed (-X rapport)
- `#respect_lost:X` - Director Netherton disapproves (-X respect)
- `#friendship_lost:X` - Haxolottle is hurt (-X friendship)
- `#influence_lost:X` - Generic influence decrease
- `#influence_lost:X` - NPC is disappointed (-X influence)
**Note:** The game automatically customizes the message based on which NPC it is:
- Dr. Chen: "Dr. Chen appreciates that" / "Dr. Chen is disappointed"
- Director Netherton: "Director Netherton approves" / "Director Netherton is displeased"
- Haxolottle: "Haxolottle likes that" / "Haxolottle seems disappointed"
### Complete Example
@@ -101,39 +102,36 @@ Every time an NPC's influence/rapport/respect/friendship changes, add a tag for
You: I want to understand the tech better.
Dr. Chen: That's great! Let me explain...
// Small rapport gain for showing interest
~ npc_chen_rapport += 3
#rapport_gained:3
// Small influence gain for showing interest
~ npc_chen_influence += 3
#influence_gained:3
+ [Ask follow-up questions]
You: Can you tell me more?
Dr. Chen: Of course! *enthusiastically explains*
// Larger rapport gain for deeper engagement
~ npc_chen_rapport += 8
#rapport_gained:8
// Larger influence gain for deeper engagement
~ npc_chen_influence += 8
#influence_gained:8
+ [Dismiss the explanation]
You: Never mind, not important.
Dr. Chen: Oh... okay. *slightly hurt*
// Lose rapport for being dismissive
~ npc_chen_rapport -= 5
#rapport_lost:5
// Lose influence for being dismissive
~ npc_chen_influence -= 5
#influence_lost:5
```
### Visual Feedback Messages
The game displays context-appropriate messages based on the tag:
The game displays context-appropriate messages based on the NPC and amount:
| Tag | Small Change (<10) | Large Change (≥10) |
|-----|-------------------|-------------------|
| `#rapport_gained` | "Dr. Chen appreciates that" | "Dr. Chen likes that" |
| `#rapport_lost` | "Dr. Chen is uncertain" | "Dr. Chen is disappointed" |
| `#respect_gained` | "Director Netherton approves" | "Director Netherton is impressed" |
| `#respect_lost` | "Director Netherton notes this" | "Director Netherton is displeased" |
| `#friendship_gained` | "Haxolottle likes that" | "Haxolottle really appreciates that" |
| `#friendship_lost` | "Haxolottle seems disappointed" | "Haxolottle is hurt" |
| NPC | Small Gain (<10) | Large Gain (≥10) | Small Loss (<10) | Large Loss (≥10) |
|-----|------------------|------------------|------------------|------------------|
| **Dr. Chen** | "Dr. Chen appreciates that" | "Dr. Chen really likes that" | "Dr. Chen seems uncertain" | "Dr. Chen is disappointed" |
| **Director Netherton** | "Director Netherton approves" | "Director Netherton is impressed" | "Director Netherton notes this" | "Director Netherton is displeased" |
| **Haxolottle** | "Haxolottle likes that" | "Haxolottle really appreciates that" | "Haxolottle seems disappointed" | "Haxolottle is hurt" |
### When to Use Influence Tags
@@ -159,22 +157,22 @@ Haxolottle: I lost an agent six months ago. Still think about them.
+ [Express sympathy]
You: I'm so sorry. That must be really hard.
Haxolottle: Thanks. It helps to talk about it.
~ npc_haxolottle_friendship_level += 10
#friendship_gained:10
~ npc_haxolottle_influence += 10
#influence_gained:10
-> conversation_continues
+ [Ask tactical questions only]
You: What was the mission profile?
Haxolottle: *pause* ...Let's focus on your current operation.
~ npc_haxolottle_friendship_level -= 3
#friendship_lost:3
~ npc_haxolottle_influence -= 3
#influence_lost:3
-> conversation_continues
+ [Share your own loss]
You: I understand. I've lost people too.
Haxolottle: *eyes soften* Yeah. You get it.
~ npc_haxolottle_friendship_level += 15
#friendship_gained:15
~ npc_haxolottle_influence += 15
#influence_gained:15
~ npc_haxolottle_shared_loss = true
-> deeper_connection
```
@@ -254,10 +252,10 @@ EXTERNAL mission_phase()
### Naming Conventions
```ink
// Persistent relationship variables
VAR PERSISTENT npc_chen_rapport = 0 // Dr. Chen's relationship
VAR PERSISTENT npc_netherton_respect = 0 // Netherton's respect
VAR PERSISTENT npc_haxolottle_friendship_level = 0 // Haxolottle's friendship
// Persistent relationship variables - ALL NPCs use "influence"
VAR PERSISTENT npc_chen_influence = 0 // Dr. Chen's influence
VAR PERSISTENT npc_netherton_influence = 0 // Netherton's influence
VAR PERSISTENT npc_haxolottle_influence = 0 // Haxolottle's influence
// Conversation flags (has this topic been discussed?)
VAR PERSISTENT npc_chen_talked_childhood = false
@@ -328,9 +326,9 @@ Always end personal conversations by returning to mission_hub:
```ink
=== conversation_end ===
{
- npc_chen_rapport >= 70:
- npc_chen_influence >= 70:
Dr. Chen: Always a pleasure, {player_name()}!
- npc_chen_rapport >= 50:
- npc_chen_influence >= 50:
Dr. Chen: Thanks for the chat.
- else:
Dr. Chen: Talk later.
@@ -349,11 +347,11 @@ Vary NPC responses based on relationship level:
```ink
=== greeting ===
{
- npc_haxolottle_friendship_level >= 70:
- npc_haxolottle_influence >= 70:
Haxolottle: {player_name()}! *genuine smile* Always good to see you.
- npc_haxolottle_friendship_level >= 40:
- npc_haxolottle_influence >= 40:
Haxolottle: Hey {player_name()}. What's up?
- npc_haxolottle_friendship_level >= 20:
- npc_haxolottle_influence >= 20:
Haxolottle: Agent {player_name()}. Need something?
- else:
Haxolottle: Agent. What do you need?
@@ -365,11 +363,11 @@ Vary NPC responses based on relationship level:
Lock topics behind relationship thresholds:
```ink
+ {npc_netherton_respect >= 60 and not npc_netherton_shared_past}
+ {npc_netherton_influence >= 60 and not npc_netherton_shared_past}
[Ask about Netherton's field days]
-> netherton_field_stories
+ {npc_chen_rapport >= 80 and not npc_chen_shared_doubts}
+ {npc_chen_influence >= 80 and not npc_chen_shared_doubts}
[Notice Dr. Chen seems troubled]
-> chen_vulnerability_moment
```
@@ -385,20 +383,20 @@ Netherton: Do you think the ends justify the means?
+ [Agree completely]
You: Always. Results matter more than methods.
Netherton: *approving nod* Practical thinking.
~ npc_netherton_respect += 10
#respect_gained:10
~ npc_netherton_influence += 10
#influence_gained:10
+ [Disagree completely]
You: No. How we achieve our goals defines who we are.
Netherton: *slight frown* Idealistic. But noted.
~ npc_netherton_respect -= 5
#respect_lost:5
~ npc_netherton_influence -= 5
#influence_lost:5
+ [It's complicated]
You: It depends on the situation and the stakes.
Netherton: *considering* Nuanced. Good.
~ npc_netherton_respect += 5
#respect_gained:5
~ npc_netherton_influence += 5
#influence_gained:5
```
---
@@ -423,7 +421,7 @@ Netherton: Do you think the ends justify the means?
**Wrong:**
```ink
{player_name} // Missing parentheses
~ npc_chen_rapport += 5 // No visual feedback tag
~ npc_chen_rapport += 5 // Old variable name (use influence)
-> chen_hub // Non-standard hub name
#exit_conversation // Old tag name
-> END // Doesn't preserve state
@@ -432,8 +430,8 @@ Netherton: Do you think the ends justify the means?
**Correct:**
```ink
{player_name()} // External function with parentheses
~ npc_chen_rapport += 5 // Variable change
#rapport_gained:5 // Visual feedback tag
~ npc_chen_influence += 5 // Unified influence variable
#influence_gained:5 // Visual feedback tag
-> mission_hub // Standard hub knot name
#end_conversation // Correct tag to close UI
-> mission_hub // Preserves state for next interaction
@@ -444,22 +442,25 @@ Netherton: Do you think the ends justify the means?
## Examples by NPC Type
### Dr. Chen (Technical Specialist)
- **Rapport** variable for relationship
- **Influence** variable: `npc_chen_influence`
- **Equipment-focused** mission content
- **Enthusiasm** in dialogue for high rapport
- **Enthusiasm** in dialogue for high influence
- **Collaborative** personal conversations
- Messages: "Dr. Chen appreciates that" / "Dr. Chen is disappointed"
### Director Netherton (Authority Figure)
- **Respect** variable for relationship
- **Influence** variable: `npc_netherton_influence`
- **Strategic** mission content
- **Professional distance** that slowly softens
- **Rare vulnerability** at high respect levels
- **Rare vulnerability** at high influence levels
- Messages: "Director Netherton approves" / "Director Netherton is displeased"
### Haxolottle (Handler/Support)
- **Friendship** variable for relationship
- **Influence** variable: `npc_haxolottle_influence`
- **Real-time support** during missions
- **Humor and references** (axolotls, regeneration metaphors)
- **Trust built through** shared operational stress
- Messages: "Haxolottle likes that" / "Haxolottle seems disappointed"
---

View File

@@ -464,30 +464,28 @@ For detailed implementation examples, see **INK_BEST_PRACTICES.md**.
### Visual Feedback for Relationship Changes
Every relationship variable change now includes a corresponding tag for visual player feedback:
Every relationship variable change now includes a corresponding tag for visual player feedback.
**All NPCs use unified `influence` scoring** for consistency:
```ink
~ npc_chen_rapport += 5
#rapport_gained:5
~ npc_chen_influence += 5
#influence_gained:5
~ npc_netherton_respect -= 3
#respect_lost:3
~ npc_netherton_influence -= 3
#influence_lost:3
~ npc_haxolottle_friendship_level += 10
#friendship_gained:10
~ npc_haxolottle_influence += 10
#influence_gained:10
```
### Tag Types
**Positive Changes:**
- `#rapport_gained:X` - Dr. Chen (technical specialist)
- `#respect_gained:X` - Director Netherton (authority figure)
- `#friendship_gained:X` - Haxolottle (handler/support)
- `#influence_gained:X` - NPC appreciates this (+X influence)
**Negative Changes:**
- `#rapport_lost:X`
- `#respect_lost:X`
- `#friendship_lost:X`
- `#influence_lost:X` - NPC is disappointed (-X influence)
### Game Handler Integration

View File

@@ -66,7 +66,7 @@ EXTERNAL equipment_status() // LOCAL - Status of player's equipment
+ {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:
- npc_chen_influence >= 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?
@@ -104,11 +104,11 @@ EXTERNAL equipment_status() // LOCAL - Status of player's equipment
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]
+ {mission_phase() == "downtime" and npc_chen_influence >= 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]
+ {npc_chen_influence >= 60} [Ask for technical training]
Dr. Chen: You want technical training? I love teaching! What area interests you?
-> technical_training_discussion
@@ -120,9 +120,9 @@ EXTERNAL equipment_status() // LOCAL - Status of player's equipment
+ [That's all for now, Chen]
{
- npc_chen_rapport >= 80:
- npc_chen_influence >= 80:
Dr. Chen: Sounds good! *warm smile* Always great talking with you. Stay safe out there!
- npc_chen_rapport >= 50:
- npc_chen_influence >= 50:
Dr. Chen: Alright! Let me know if you need anything. Seriously, anytime.
- else:
Dr. Chen: Okay. Good luck with the mission!
@@ -143,7 +143,7 @@ EXTERNAL equipment_status() // LOCAL - Status of player's equipment
- 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
- not npc_chen_discussed_favorite_projects and npc_chen_influence >= 55: ~ return true
- else: ~ return false
}
@@ -151,29 +151,29 @@ EXTERNAL equipment_status() // LOCAL - Status of player's equipment
- 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_research_frustrations and npc_chen_influence >= 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
- not npc_chen_discussed_ethical_tech and npc_chen_influence >= 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_dream_projects and npc_chen_influence >= 80: ~ return true
- not npc_chen_discussed_tech_risks and npc_chen_influence >= 75: ~ return true
- not npc_chen_discussed_work_life_balance: ~ return true
- not npc_chen_discussed_mentorship and npc_chen_rapport >= 80: ~ return true
- not npc_chen_discussed_mentorship and npc_chen_influence >= 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
- not npc_chen_discussed_future_vision and npc_chen_influence >= 90: ~ return true
- not npc_chen_discussed_friendship_value and npc_chen_influence >= 85: ~ return true
- not npc_chen_discussed_collaborative_legacy and npc_chen_influence >= 90: ~ return true
- not npc_chen_discussed_beyond_safetynet and npc_chen_influence >= 88: ~ return true
- else: ~ return false
}
@@ -212,23 +212,23 @@ Dr. Chen: This is fixable, but it'll take some time. What happened out there?
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
#rapport_gained:5
~ npc_chen_influence += 5
#influence_gained:5
#equipment_repair_started
-> 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
#rapport_gained:8
~ npc_chen_influence += 8
#influence_gained:8
-> 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
#rapport_lost:3
~ npc_chen_influence -= 3
#influence_lost:3
-> mission_hub
=== equipment_upgrade_menu ===
@@ -285,8 +285,8 @@ Dr. Chen: *focused* Okay, I'm pulling up your equipment telemetry. What's the te
+ [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
#rapport_gained:5
~ npc_chen_influence += 5
#influence_gained:5
-> field_support_followup
+ [Equipment is malfunctioning]
@@ -300,15 +300,15 @@ 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
#rapport_gained:8
~ npc_chen_influence += 8
#influence_gained:8
-> 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
#rapport_gained:10
~ npc_chen_influence += 10
#influence_gained:10
-> mission_hub
=== mission_ghost_equipment_briefing ===
@@ -329,14 +329,14 @@ Dr. Chen: Third—and this is experimental—quantum-encrypted comms. Even if th
+ [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
#rapport_gained:5
~ npc_chen_influence += 5
#influence_gained: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
#rapport_gained:8
~ npc_chen_influence += 8
#influence_gained:8
-> ghost_equipment_details
=== ghost_equipment_details ===
@@ -349,10 +349,10 @@ Dr. Chen: Any other questions about the gear? Or are you ready for me to configu
+ [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:
{npc_chen_influence >= 60:
Dr. Chen: Come back safe. The tech works better when the operator survives.
~ npc_chen_rapport += 5
#rapport_gained:5
~ npc_chen_influence += 5
#influence_gained:5
}
#equipment_configured
-> mission_hub
@@ -363,8 +363,8 @@ Dr. Chen: *eager for feedback* Okay, tell me everything! How did the equipment p
+ [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
#rapport_gained:10
~ npc_chen_influence += 10
#influence_gained:10
~ npc_chen_tech_collaboration += 1
-> mission_hub
@@ -373,8 +373,8 @@ Dr. Chen: *eager for feedback* Okay, tell me everything! How did the equipment p
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
#rapport_gained:15
~ npc_chen_influence += 15
#influence_gained:15
~ npc_chen_tech_collaboration += 2
-> mission_hub
@@ -383,8 +383,8 @@ Dr. Chen: *eager for feedback* Okay, tell me everything! How did the equipment p
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
#rapport_gained:20
~ npc_chen_influence += 20
#influence_gained:20
~ npc_chen_tech_collaboration += 2
-> mission_hub
@@ -410,8 +410,8 @@ Dr. Chen: If ENTROPY tries to breach this, they'll need nation-state level capab
+ [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
#rapport_gained:5
~ npc_chen_influence += 5
#influence_gained:5
-> mission_hub
=== experimental_tech_discussion ===
@@ -436,8 +436,8 @@ 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
#rapport_gained:10
~ npc_chen_influence += 10
#influence_gained:10
-> mission_hub
=== experimental_mirage_details ===
@@ -484,8 +484,8 @@ Dr. Chen: I promise to build in safety margins. Fallback systems. Kill switches.
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
#rapport_gained:20
~ npc_chen_influence += 20
#influence_gained:20
~ npc_chen_tech_collaboration += 3
-> mission_hub
@@ -519,8 +519,8 @@ Dr. Chen: What interests you? Network security? Hardware hacking? Cryptography?
+ [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
#rapport_gained:5
~ npc_chen_influence += 5
#influence_gained:5
#training_scheduled_crypto
-> mission_hub

File diff suppressed because it is too large Load Diff

View File

@@ -72,7 +72,7 @@ EXTERNAL operational_stress_level() // LOCAL - How stressed the current situ
+ {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:
- npc_haxolottle_influence >= 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?
@@ -120,11 +120,11 @@ EXTERNAL operational_stress_level() // LOCAL - How stressed the current situ
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]
+ {mission_phase() == "downtime" and npc_haxolottle_influence >= 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]
+ {npc_haxolottle_influence >= 50 and mission_phase() == "downtime"} [Ask about handler tradecraft]
Haxolottle: Handler tradecraft! You're interested in the behind-the-scenes stuff?
-> handler_tradecraft_discussion
@@ -136,9 +136,9 @@ EXTERNAL operational_stress_level() // LOCAL - How stressed the current situ
+ [That's all for now]
{
- npc_haxolottle_friendship_level >= 70:
- npc_haxolottle_influence >= 70:
Haxolottle: Alright, {player_name()}. *genuine warmth* Always good talking with you. Take care of yourself.
- npc_haxolottle_friendship_level >= 40:
- npc_haxolottle_influence >= 40:
Haxolottle: Sounds good. Let me know if you need anything. Really, anytime.
- else:
Haxolottle: Okay. Talk later!
@@ -160,7 +160,7 @@ EXTERNAL operational_stress_level() // LOCAL - How stressed the current situ
- 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
- not npc_haxolottle_talked_stress_management and npc_haxolottle_influence >= 15: ~ return true
- else: ~ return false
}
@@ -169,9 +169,9 @@ EXTERNAL operational_stress_level() // LOCAL - How stressed the current situ
{
- 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_field_nostalgia and npc_haxolottle_influence >= 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
- not npc_haxolottle_talked_favorite_operations and npc_haxolottle_influence >= 35: ~ return true
- else: ~ return false
}
@@ -244,8 +244,8 @@ Which approach do you want to take?
+ [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
#friendship_gained:10
~ npc_haxolottle_influence += 10
#influence_gained:10
#crisis_extraction
-> mission_hub
@@ -306,8 +306,8 @@ 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
#friendship_gained:3
~ npc_haxolottle_influence += 3
#influence_gained:3
-> mission_hub
=== intel_update_active ===
@@ -340,8 +340,8 @@ Haxolottle: Talk me through the specific complication. What changed?
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
#friendship_gained:5
~ npc_haxolottle_influence += 5
#influence_gained:5
-> adaptation_planning
+ [Multiple things going wrong]
@@ -378,16 +378,16 @@ Haxolottle: But help me understand—is this "mission parameters changed beyond
+ [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
#friendship_gained:8
~ npc_haxolottle_influence += 8
#influence_gained:8
#mission_aborted
-> 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
#friendship_gained:10
~ npc_haxolottle_influence += 10
#influence_gained:10
#mission_aborted_intuition
-> mission_hub
@@ -404,10 +404,10 @@ Haxolottle: *urgent typing* Okay. Either my feeds are compromised or ENTROPY cha
Haxolottle: Recommend trusting your eyes over my monitors. Proceed with extreme caution. I'm investigating the discrepancy.
{npc_haxolottle_friendship_level >= 50:
{npc_haxolottle_influence >= 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
#friendship_gained:5
~ npc_haxolottle_influence += 5
#influence_gained:5
}
-> mission_hub
@@ -440,8 +440,8 @@ Haxolottle: If compromised: Emergency extraction protocols ready. Three waypoint
+ [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
#friendship_gained:5
~ npc_haxolottle_influence += 5
#influence_gained:5
-> mission_hub
=== mission_sanctuary_handler_plan ===
@@ -456,8 +456,8 @@ Haxolottle: This requires trusting my tactical picture. I'll be seeing things yo
+ [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
#friendship_gained:8
~ npc_haxolottle_influence += 8
#influence_gained:8
-> mission_hub
+ [What if I see something you don't?]
@@ -481,8 +481,8 @@ 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
#friendship_gained:5
~ npc_haxolottle_influence += 5
#influence_gained:5
-> mission_hub
+ [This seems paranoid]
@@ -493,8 +493,8 @@ Haxolottle: The axolotl principle—*smiles*—regeneration over rigidity. Plans
+ [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
#friendship_gained:8
~ npc_haxolottle_influence += 8
#influence_gained:8
-> mission_hub
// ===========================================
@@ -507,10 +507,10 @@ Haxolottle: *opens debrief form* Standard post-operation debrief. Walk me throug
+ [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:
{npc_haxolottle_influence >= 40:
Haxolottle: And more importantly—are you okay? Physically? Mentally?
~ npc_haxolottle_friendship_level += 3
#friendship_gained:3
~ npc_haxolottle_influence += 3
#influence_gained:3
}
-> debrief_completion
@@ -531,8 +531,8 @@ Haxolottle: Before we do the formal debrief—are you actually okay? Not the pro
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
#friendship_gained:15
~ npc_haxolottle_influence += 15
#influence_gained:15
~ npc_haxolottle_trust_moments += 1
-> debrief_completion
@@ -543,10 +543,10 @@ Haxolottle: Before we do the formal debrief—are you actually okay? Not the pro
+ [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:
{npc_haxolottle_influence >= 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
#friendship_gained:10
~ npc_haxolottle_influence += 10
#influence_gained:10
}
-> debrief_completion
@@ -585,8 +585,8 @@ Haxolottle: We're adapting. Dr. Chen is developing new countermeasures. Netherto
+ [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
#friendship_gained:3
~ npc_haxolottle_influence += 3
#influence_gained:3
-> mission_hub
+ [Thank them for the update]
@@ -611,10 +611,10 @@ Haxolottle: Handler perspective on operations. What do you want to know?
+ [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:
{npc_haxolottle_influence >= 50:
Haxolottle: You're one of the best agents I've handled. And I've handled a lot.
~ npc_haxolottle_friendship_level += 8
#friendship_gained:8
~ npc_haxolottle_influence += 8
#influence_gained:8
}
-> mission_hub
@@ -630,16 +630,16 @@ Haxolottle: And honestly? A lot of it is managing stress. Yours and ours. Keepin
+ [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
#friendship_gained:5
~ npc_haxolottle_influence += 5
#influence_gained:5
-> 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.
{npc_haxolottle_friendship_level >= 40:
{npc_haxolottle_influence >= 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
#friendship_gained:8
~ npc_haxolottle_influence += 8
#influence_gained:8
}
-> mission_hub
@@ -647,8 +647,8 @@ Haxolottle: And honestly? A lot of it is managing stress. Yours and ours. Keepin
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
#friendship_gained:10
~ npc_haxolottle_influence += 10
#influence_gained:10
#handler_training_offered
-> mission_hub

View File

@@ -13,7 +13,7 @@
// Your game engine must persist these across ALL missions
// ===========================================
VAR npc_haxolottle_friendship_level = 0 // PERSISTENT - Overall relationship depth (0-100)
VAR npc_haxolottle_influence = 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
@@ -105,7 +105,7 @@ EXTERNAL current_mission_id() // LOCAL - Current mission identifier
-> music_discussion
+ {not npc_haxolottle_talked_coffee_preferences and npc_haxolottle_talked_hobbies_general} [Talk about coffee/tea preferences]
-> coffee_chat
+ {not npc_haxolottle_talked_stress_management and npc_haxolottle_friendship_level >= 15} [Ask how they handle stress]
+ {not npc_haxolottle_talked_stress_management and npc_haxolottle_influence >= 15} [Ask how they handle stress]
-> stress_management
+ [That's all for now]
-> conversation_end
@@ -116,8 +116,8 @@ EXTERNAL current_mission_id() // LOCAL - Current mission identifier
=== hobbies_general ===
~ npc_haxolottle_talked_hobbies_general = true
~ npc_haxolottle_friendship_level += 5
#friendship_gained:5
~ npc_haxolottle_influence += 5
#influence_gained:5
~ npc_haxolottle_conversations_had += 1
Haxolottle: What do I do for fun? Good question. Let's see...
@@ -131,27 +131,27 @@ Haxolottle: I also swim. Not competitively or anything, just... swimming. There'
Haxolottle: And I tinker with old electronics. Pull apart vintage computers, repair them, sometimes just see how they work. It's methodical. Soothing. Unlike field operations where everything is chaos and improvisation.
* [Share that you also read]
~ npc_haxolottle_friendship_level += 5
#friendship_gained:5
~ npc_haxolottle_influence += 5
#influence_gained:5
~ npc_haxolottle_player_shared_personal += 1
You: I'm a reader too. What kind of sci-fi?
-> hobbies_scifi_followup
* [Mention you've never been good at swimming]
~ npc_haxolottle_friendship_level += 3
#friendship_gained:3
~ npc_haxolottle_influence += 3
#influence_gained:3
You: I've never been much of a swimmer. More of a land-based person.
-> hobbies_swimming_followup
* [Ask about the electronics tinkering]
~ npc_haxolottle_friendship_level += 3
#friendship_gained:3
~ npc_haxolottle_influence += 3
#influence_gained:3
You: Electronics tinkering? That's an interesting hobby for someone in our line of work.
-> hobbies_electronics_followup
=== hobbies_scifi_followup ===
~ npc_haxolottle_friendship_level += 5
#friendship_gained:5
~ npc_haxolottle_influence += 5
#influence_gained:5
Haxolottle: Oh, you read sci-fi? Nice! I'm partial to the stuff that explores emergence and complexity—you know, how simple rules create complex systems.
@@ -164,22 +164,22 @@ Haxolottle: What about you? What kind of stories do you gravitate toward?
* [Mention you like cyberpunk]
You: Cyberpunk, mostly. The whole corporate dystopia thing feels... relevant.
Haxolottle: *laughs* Yeah, we're kind of living it. Except the corporations aren't our enemy—ENTROPY is. Different dystopia, same aesthetic.
~ npc_haxolottle_friendship_level += 5
#friendship_gained:5
~ npc_haxolottle_influence += 5
#influence_gained:5
-> phase_1_hub
* [Say you prefer non-fiction]
You: Actually, I'm more of a non-fiction person. Technical books, security research.
Haxolottle: Ah, the pragmatist. Fair enough. Though I'd argue our job is weird enough to count as science fiction.
~ npc_haxolottle_friendship_level += 3
#friendship_gained:3
~ npc_haxolottle_influence += 3
#influence_gained:3
-> phase_1_hub
* [Keep it vague to protect identity]
You: Different things, depending on mood.
Haxolottle: Keeping it mysterious. I respect that. Protocol 47-Alpha and all.
~ npc_haxolottle_friendship_level += 2
#friendship_gained:2
~ npc_haxolottle_influence += 2
#influence_gained:2
-> phase_1_hub
=== hobbies_swimming_followup ===
@@ -192,8 +192,8 @@ Haxolottle: I didn't learn until I was an adult, actually. Taught myself after j
Haxolottle: Plus, it's one of the few activities where I can guarantee I'm not carrying surveillance devices. Hard to bug a swimsuit.
~ npc_haxolottle_friendship_level += 3
#friendship_gained:3
~ npc_haxolottle_influence += 3
#influence_gained:3
-> phase_1_hub
=== hobbies_electronics_followup ===
@@ -208,8 +208,8 @@ Haxolottle: At home? I'm fixing things. Bringing dead hardware back to life. It'
Haxolottle: Plus, there's satisfaction in making a thirty-year-old computer boot up again. Persistence over entropy. Both kinds of entropy.
~ npc_haxolottle_friendship_level += 5
#friendship_gained:5
~ npc_haxolottle_influence += 5
#influence_gained:5
-> phase_1_hub
// ----------------
@@ -218,8 +218,8 @@ Haxolottle: Plus, there's satisfaction in making a thirty-year-old computer boot
=== axolotl_deep_dive ===
~ npc_haxolottle_talked_axolotl_obsession = true
~ npc_haxolottle_friendship_level += 8
#friendship_gained:8
~ npc_haxolottle_influence += 8
#influence_gained:8
~ npc_haxolottle_conversations_had += 1
Haxolottle: Ah, you want the full story behind the axolotl obsession?
@@ -235,21 +235,21 @@ Haxolottle: Found this section on axolotls—*Ambystoma mexicanum*. These amazin
-> axolotl_operation_connection
* [Ask about the biology]
~ npc_haxolottle_friendship_level += 3
#friendship_gained:3
~ npc_haxolottle_influence += 3
#influence_gained:3
You: That's incredible. How do they do that?
-> axolotl_biology_detail
* [Make a joke]
~ npc_haxolottle_friendship_level += 5
#friendship_gained:5
~ npc_haxolottle_influence += 5
#influence_gained:5
~ npc_haxolottle_humor_shared += 1
You: So you're saying you identified with a salamander?
-> axolotl_joke_response
=== axolotl_operation_connection ===
~ npc_haxolottle_friendship_level += 5
#friendship_gained:5
~ npc_haxolottle_influence += 5
#influence_gained:5
Haxolottle: It gave me a framework. See, I'd lost my original cover story—that identity was "severed" when the real person appeared. Dead. Gone.
@@ -261,13 +261,13 @@ Haxolottle: In that moment, I stopped being the person I was impersonating and b
Haxolottle: The metaphor stuck. Now every operation that goes sideways, I think: What would an axolotl do? And the answer is always: regenerate, adapt, survive.
~ npc_haxolottle_friendship_level += 8
#friendship_gained:8
~ npc_haxolottle_influence += 8
#influence_gained:8
-> phase_1_hub
=== axolotl_biology_detail ===
~ npc_haxolottle_friendship_level += 5
#friendship_gained:5
~ npc_haxolottle_influence += 5
#influence_gained:5
Haxolottle: *lights up with enthusiasm*
@@ -283,13 +283,13 @@ Haxolottle: It's like... they have options. Paths. They're not locked into one f
Haxolottle: Sorry, I can talk about this for hours. The point is: regeneration, adaptation, flexibility. That's what got me through that operation and a lot of others.
~ npc_haxolottle_friendship_level += 8
#friendship_gained:8
~ npc_haxolottle_influence += 8
#influence_gained:8
-> phase_1_hub
=== axolotl_joke_response ===
~ npc_haxolottle_friendship_level += 8
#friendship_gained:8
~ npc_haxolottle_influence += 8
#influence_gained:8
~ npc_haxolottle_humor_shared += 1
Haxolottle: *laughs*
@@ -306,8 +306,8 @@ Haxolottle: Plus, they smile. Permanently. Look up pictures—axolotls have thes
Haxolottle: You're laughing, but I'm serious. The metaphor has kept me sane for years. Sometimes you need something absurd to hold onto in this work.
~ npc_haxolottle_friendship_level += 10
#friendship_gained:10
~ npc_haxolottle_influence += 10
#influence_gained:10
~ npc_haxolottle_trust_moments += 1
-> phase_1_hub
@@ -317,8 +317,8 @@ Haxolottle: You're laughing, but I'm serious. The metaphor has kept me sane for
=== music_discussion ===
~ npc_haxolottle_talked_music_taste = true
~ npc_haxolottle_friendship_level += 5
#friendship_gained:5
~ npc_haxolottle_influence += 5
#influence_gained:5
~ npc_haxolottle_conversations_had += 1
Haxolottle: Music? Oh, I have eclectic taste. Probably too eclectic.
@@ -330,28 +330,28 @@ Haxolottle: For workouts or when I need energy, I go full electronic. Techno, dr
Haxolottle: And then sometimes... *looks slightly embarrassed* ...sometimes I listen to nature sounds. Ocean waves. Rain. Thunderstorms.
* [Say you also like ambient music]
~ npc_haxolottle_friendship_level += 5
#friendship_gained:5
~ npc_haxolottle_influence += 5
#influence_gained:5
~ npc_haxolottle_player_shared_personal += 1
You: Ambient music is great for concentration. What's your favorite?
-> music_ambient_detail
* [Admit you prefer silence while working]
~ npc_haxolottle_friendship_level += 3
#friendship_gained:3
~ npc_haxolottle_influence += 3
#influence_gained:3
You: I actually prefer silence when I'm concentrating.
-> music_silence_response
* [Tease them about nature sounds]
~ npc_haxolottle_friendship_level += 5
#friendship_gained:5
~ npc_haxolottle_influence += 5
#influence_gained:5
~ npc_haxolottle_humor_shared += 1
You: Nature sounds? That's adorably wholesome for a spy.
-> music_nature_tease
=== music_ambient_detail ===
~ npc_haxolottle_friendship_level += 5
#friendship_gained:5
~ npc_haxolottle_influence += 5
#influence_gained:5
Haxolottle: Oh, good taste! For concentration, I keep coming back to Eno's *Music for Airports*. It's designed to be ignorable but interesting—perfect for background.
@@ -364,15 +364,15 @@ Haxolottle: What about you? Any favorites?
* [Mention specific artists (safe to share)]
You: I'm into [vague genre description]. Keeps me focused.
Haxolottle: Nice. I might check that out during my next long monitoring session.
~ npc_haxolottle_friendship_level += 3
#friendship_gained:3
~ npc_haxolottle_influence += 3
#influence_gained:3
-> phase_1_hub
* [Keep it vague]
You: Different things depending on the task.
Haxolottle: Adaptive playlist for adaptive operations. I like it.
~ npc_haxolottle_friendship_level += 2
#friendship_gained:2
~ npc_haxolottle_influence += 2
#influence_gained:2
-> phase_1_hub
=== music_silence_response ===
@@ -383,13 +383,13 @@ Haxolottle: I can't do it, personally. Total silence makes me too aware of my ow
Haxolottle: But everyone's different. That's why we have noise-cancelling headphones in the equipment list—Section 8, Article 4.
~ npc_haxolottle_friendship_level += 3
#friendship_gained:3
~ npc_haxolottle_influence += 3
#influence_gained:3
-> phase_1_hub
=== music_nature_tease ===
~ npc_haxolottle_friendship_level += 8
#friendship_gained:8
~ npc_haxolottle_influence += 8
#influence_gained:8
~ npc_haxolottle_humor_shared += 1
Haxolottle: *laughs* Okay, yes, I know how it sounds. "Elite SAFETYNET handler unwinds with gentle rain sounds."
@@ -404,8 +404,8 @@ Haxolottle: Plus, there's something soothing about storms specifically. All that
Haxolottle: You can judge me, but I won't stop. I have a whole collection. "Thunderstorm in Forest," "Ocean Waves at Night," "Heavy Rain on Tent." It's a whole genre.
~ npc_haxolottle_friendship_level += 8
#friendship_gained:8
~ npc_haxolottle_influence += 8
#influence_gained:8
-> phase_1_hub
// ----------------
@@ -414,8 +414,8 @@ Haxolottle: You can judge me, but I won't stop. I have a whole collection. "Thun
=== coffee_chat ===
~ npc_haxolottle_talked_coffee_preferences = true
~ npc_haxolottle_friendship_level += 4
#friendship_gained:4
~ npc_haxolottle_influence += 4
#influence_gained:4
~ npc_haxolottle_conversations_had += 1
Haxolottle: Coffee preferences? Oh, we're getting into the important questions now.
@@ -427,27 +427,27 @@ Haxolottle: Specifically, I drink green tea. Jasmine green tea when I can get it
Haxolottle: Dr. Chen thinks I'm weird for it. They survive on energy drinks and what I'm pretty sure is just pure espresso.
* [Say you're also a tea drinker]
~ npc_haxolottle_friendship_level += 5
#friendship_gained:5
~ npc_haxolottle_influence += 5
#influence_gained:5
~ npc_haxolottle_player_shared_personal += 1
You: Tea for me too. Coffee's too harsh.
-> coffee_tea_solidarity
* [Defend coffee]
~ npc_haxolottle_friendship_level += 3
#friendship_gained:3
~ npc_haxolottle_influence += 3
#influence_gained:3
You: Coffee is essential. I don't trust tea to keep me functional.
-> coffee_defense
* [Ask about the axolotl mug]
~ npc_haxolottle_friendship_level += 5
#friendship_gained:5
~ npc_haxolottle_influence += 5
#influence_gained:5
You: Is that axolotl mug I keep seeing in video calls yours?
-> coffee_mug_discussion
=== coffee_tea_solidarity ===
~ npc_haxolottle_friendship_level += 5
#friendship_gained:5
~ npc_haxolottle_influence += 5
#influence_gained:5
Haxolottle: A fellow tea person! Excellent. We're a minority in SAFETYNET.
@@ -457,8 +457,8 @@ Haxolottle: If you ever need to decompress after a mission, find that break room
Haxolottle: Consider it insider knowledge. Handler privilege.
~ npc_haxolottle_friendship_level += 8
#friendship_gained:8
~ npc_haxolottle_influence += 8
#influence_gained:8
-> phase_1_hub
=== coffee_defense ===
@@ -469,13 +469,13 @@ Haxolottle: Different metabolisms, different needs. That's the thing about SAFET
Haxolottle: As long as you're alert and functional, I don't care if you're powered by coffee, tea, energy drinks, or pure spite.
~ npc_haxolottle_friendship_level += 3
#friendship_gained:3
~ npc_haxolottle_influence += 3
#influence_gained:3
-> phase_1_hub
=== coffee_mug_discussion ===
~ npc_haxolottle_friendship_level += 8
#friendship_gained:8
~ npc_haxolottle_influence += 8
#influence_gained:8
~ npc_haxolottle_humor_shared += 1
Haxolottle: *laughs* You noticed! Yes, that's mine. Got it custom-made.
@@ -488,8 +488,8 @@ Haxolottle: I have three of them, actually. One for the office, one for home, on
Haxolottle: Director Netherton pretends not to notice it in briefings, but I've caught him almost smiling at it once. Progress.
~ npc_haxolottle_friendship_level += 8
#friendship_gained:8
~ npc_haxolottle_influence += 8
#influence_gained:8
-> phase_1_hub
// ----------------
@@ -498,8 +498,8 @@ Haxolottle: Director Netherton pretends not to notice it in briefings, but I've
=== stress_management ===
~ npc_haxolottle_talked_stress_management = true
~ npc_haxolottle_friendship_level += 10
#friendship_gained:10
~ npc_haxolottle_influence += 10
#influence_gained:10
~ npc_haxolottle_conversations_had += 1
~ npc_haxolottle_vulnerable_moments += 1
@@ -512,29 +512,29 @@ Haxolottle: But honestly? The hardest part is when agents are in danger and I ca
Haxolottle: I've had agents get hurt. I've had operations go wrong despite everything we planned. That weight... it doesn't go away.
* [Thank them for being honest]
~ npc_haxolottle_friendship_level += 10
#friendship_gained:10
~ npc_haxolottle_influence += 10
#influence_gained:10
~ npc_haxolottle_player_shared_personal += 1
You: Thank you for trusting me with that. It helps to know you feel it too.
-> stress_honest_response
* [Share your own stress management]
~ npc_haxolottle_friendship_level += 12
#friendship_gained:12
~ npc_haxolottle_influence += 12
#influence_gained:12
~ npc_haxolottle_player_shared_personal += 2
~ npc_haxolottle_trust_moments += 1
You: I feel that pressure too. From a different angle, but still there.
-> stress_mutual_understanding
* [Ask how they cope with the weight]
~ npc_haxolottle_friendship_level += 8
#friendship_gained:8
~ npc_haxolottle_influence += 8
#influence_gained:8
You: How do you keep going when it feels like too much?
-> stress_coping_methods
=== stress_honest_response ===
~ npc_haxolottle_friendship_level += 10
#friendship_gained:10
~ npc_haxolottle_influence += 10
#influence_gained:10
Haxolottle: Of course. We're in this together, Agent. I'm not just a voice on comms—I'm a person who cares about whether you come back safe.
@@ -542,14 +542,14 @@ Haxolottle: The handbook talks about professional distance, but Regulation 299 s
Haxolottle: You're not just an asset to me. You're a colleague. Maybe even a friend. And I want you to succeed and be okay.
~ npc_haxolottle_friendship_level += 15
#friendship_gained:15
~ npc_haxolottle_influence += 15
#influence_gained:15
~ npc_haxolottle_trust_moments += 1
-> phase_1_hub
=== stress_mutual_understanding ===
~ npc_haxolottle_friendship_level += 15
#friendship_gained:15
~ npc_haxolottle_influence += 15
#influence_gained:15
~ npc_haxolottle_trust_moments += 2
Haxolottle: Yeah. Different angles, same weight. You're worried about getting caught, about the mission failing, about making the wrong call in the moment.
@@ -564,14 +564,14 @@ Haxolottle: That's why the axolotl thing matters, I think. Regeneration isn't ju
Haxolottle: And we do it together. That makes it bearable.
~ npc_haxolottle_friendship_level += 20
#friendship_gained:20
~ npc_haxolottle_influence += 20
#influence_gained:20
~ npc_haxolottle_vulnerable_moments += 1
-> phase_1_hub
=== stress_coping_methods ===
~ npc_haxolottle_friendship_level += 10
#friendship_gained:10
~ npc_haxolottle_influence += 10
#influence_gained:10
Haxolottle: Honestly? I remind myself why we do this. ENTROPY is real. The threats are real. The people we protect—even though they don't know we exist—they're real.
@@ -581,8 +581,8 @@ Haxolottle: The weight is heavy because the work matters. If it was easy, if it
Haxolottle: And... *slight smile* ...I have my ridiculous axolotl metaphors. When things get dark, I think about something absurd and resilient, and it helps.
~ npc_haxolottle_friendship_level += 12
#friendship_gained:12
~ npc_haxolottle_influence += 12
#influence_gained:12
-> phase_1_hub
// ===========================================
@@ -603,13 +603,13 @@ Haxolottle: And... *slight smile* ...I have my ridiculous axolotl metaphors. Whe
-> philosophy_evolution
+ {not npc_haxolottle_talked_handler_life} [Ask what handler life is really like]
-> handler_reality
+ {not npc_haxolottle_talked_field_nostalgia and npc_haxolottle_friendship_level >= 30} [Ask if they miss field work]
+ {not npc_haxolottle_talked_field_nostalgia and npc_haxolottle_influence >= 30} [Ask if they miss field work]
-> field_nostalgia
+ {not npc_haxolottle_talked_weird_habits} [Talk about weird habits you've developed]
-> weird_habits_discussion
+ {not npc_haxolottle_talked_favorite_operations and npc_haxolottle_friendship_level >= 35} [Ask about their favorite operations]
+ {not npc_haxolottle_talked_favorite_operations and npc_haxolottle_influence >= 35} [Ask about their favorite operations]
-> favorite_operations
+ {npc_haxolottle_friendship_level >= 40 and not npc_haxolottle_shared_loss} [Notice they seem different today]
+ {npc_haxolottle_influence >= 40 and not npc_haxolottle_shared_loss} [Notice they seem different today]
-> hax_difficult_day
+ [That's all for now]
-> conversation_end
@@ -620,8 +620,8 @@ Haxolottle: And... *slight smile* ...I have my ridiculous axolotl metaphors. Whe
=== philosophy_evolution ===
~ npc_haxolottle_talked_philosophy_change = true
~ npc_haxolottle_friendship_level += 10
#friendship_gained:10
~ npc_haxolottle_influence += 10
#influence_gained:10
~ npc_haxolottle_conversations_had += 1
Haxolottle: How has my philosophy changed? *laughs softly* That's a heavier question than you might think.
@@ -637,15 +637,15 @@ Haxolottle: I've seen good people do questionable things for good reasons. I've
Haxolottle: The philosophy that's stuck is: Do the work as ethically as you can within impossible constraints. Protect people. Try not to become the thing you're fighting.
* [Express agreement]
~ npc_haxolottle_friendship_level += 10
#friendship_gained:10
~ npc_haxolottle_influence += 10
#influence_gained:10
~ npc_haxolottle_player_shared_personal += 1
You: I've been thinking about that too. The gray areas are... uncomfortable.
-> philosophy_gray_areas
* [Ask what call haunts them most]
~ npc_haxolottle_friendship_level += 15
#friendship_gained:15
~ npc_haxolottle_influence += 15
#influence_gained:15
~ npc_haxolottle_vulnerable_moments += 1
You: Is there one decision that still bothers you?
-> philosophy_haunting_decision
@@ -655,8 +655,8 @@ Haxolottle: The philosophy that's stuck is: Do the work as ethically as you can
-> philosophy_immediate_good
=== philosophy_gray_areas ===
~ npc_haxolottle_friendship_level += 15
#friendship_gained:15
~ npc_haxolottle_influence += 15
#influence_gained:15
~ npc_haxolottle_trust_moments += 1
Haxolottle: Yeah. Uncomfortable is the word. We're essentially breaking laws under authorization that's classified, targeting people who might be criminals or might be victims.
@@ -667,13 +667,13 @@ Haxolottle: But you know what? The fact that you're thinking about it, questioni
Haxolottle: The day we stop feeling uncomfortable with the gray areas is the day we've gone too far.
~ npc_haxolottle_friendship_level += 15
#friendship_gained:15
~ npc_haxolottle_influence += 15
#influence_gained:15
-> phase_2_hub
=== philosophy_haunting_decision ===
~ npc_haxolottle_friendship_level += 20
#friendship_gained:20
~ npc_haxolottle_influence += 20
#influence_gained:20
~ npc_haxolottle_vulnerable_moments += 2
~ npc_haxolottle_shared_doubt = true
@@ -694,23 +694,23 @@ Haxolottle: They recovered. They're still with SAFETYNET. But I dream about maki
Haxolottle: And I don't know if I would. If I could do it again, with the same information... I might make the same call. That's what haunts me.
* [Offer comfort]
~ npc_haxolottle_friendship_level += 20
#friendship_gained:20
~ npc_haxolottle_influence += 20
#influence_gained:20
~ npc_haxolottle_trust_moments += 2
You: You made the best call you could with what you knew. That agent knew the risks.
-> philosophy_comfort_response
* [Share something personal]
~ npc_haxolottle_friendship_level += 25
#friendship_gained:25
~ npc_haxolottle_influence += 25
#influence_gained:25
~ npc_haxolottle_player_shared_personal += 3
~ npc_haxolottle_trust_moments += 2
You: I carry similar weight. We all do. It doesn't make it easier, but you're not alone in it.
-> philosophy_shared_burden
=== philosophy_comfort_response ===
~ npc_haxolottle_friendship_level += 15
#friendship_gained:15
~ npc_haxolottle_influence += 15
#influence_gained:15
Haxolottle: *slight smile* Thank you. I know that, intellectually. Regulation 911—mission objectives sometimes outweigh agent safety when lives are at stake.
@@ -718,13 +718,13 @@ Haxolottle: Doesn't make it easier. But it helps to hear it from someone who und
Haxolottle: You're a good person, Agent {player_name()}. I'm glad we're working together.
~ npc_haxolottle_friendship_level += 15
#friendship_gained:15
~ npc_haxolottle_influence += 15
#influence_gained:15
-> phase_2_hub
=== philosophy_shared_burden ===
~ npc_haxolottle_friendship_level += 25
#friendship_gained:25
~ npc_haxolottle_influence += 25
#influence_gained:25
~ npc_haxolottle_trust_moments += 3
Haxolottle: *looks genuinely touched*
@@ -737,13 +737,13 @@ Haxolottle: I wish we could grab coffee like normal colleagues. Talk about this
Haxolottle: And what we have is this. Honest conversations within the boundaries we're given. That's real friendship, I think. Even with the constraints.
~ npc_haxolottle_friendship_level += 30
#friendship_gained:30
~ npc_haxolottle_influence += 30
#influence_gained:30
-> phase_2_hub
=== philosophy_immediate_good ===
~ npc_haxolottle_friendship_level += 8
#friendship_gained:8
~ npc_haxolottle_influence += 8
#influence_gained:8
Haxolottle: That's a healthy approach. Zoom in on what you can control, the immediate impact. Today's mission. This operation. This prevented attack.
@@ -751,8 +751,8 @@ Haxolottle: The big picture can overwhelm you if you let it. Better to focus on
Haxolottle: That's sustainable. I should probably do more of that myself.
~ npc_haxolottle_friendship_level += 8
#friendship_gained:8
~ npc_haxolottle_influence += 8
#influence_gained:8
-> phase_2_hub
// ----------------
@@ -761,8 +761,8 @@ Haxolottle: That's sustainable. I should probably do more of that myself.
=== handler_reality ===
~ npc_haxolottle_talked_handler_life = true
~ npc_haxolottle_friendship_level += 12
#friendship_gained:12
~ npc_haxolottle_influence += 12
#influence_gained:12
~ npc_haxolottle_conversations_had += 1
Haxolottle: Handler life? It's weird. I sit in a comfortable office with good tea and multiple monitors, while you're crawling through server rooms and dodging security.
@@ -774,27 +774,27 @@ Haxolottle: From the inside? I'm watching you take risks I used to take. Providi
Haxolottle: And when things go wrong, I can only watch. I can't run in and help. Can't pull you out physically. Just... talk. Provide information. Hope it's enough.
* [Say you appreciate having them there]
~ npc_haxolottle_friendship_level += 15
#friendship_gained:15
~ npc_haxolottle_influence += 15
#influence_gained:15
~ npc_haxolottle_player_shared_personal += 1
You: Your voice on comms makes a huge difference. I'm never alone out there.
-> handler_appreciation
* [Ask if they'd go back to field work]
~ npc_haxolottle_friendship_level += 10
#friendship_gained:10
~ npc_haxolottle_influence += 10
#influence_gained:10
You: Would you ever go back to field operations?
-> handler_field_return_question
* [Acknowledge the invisible stress]
~ npc_haxolottle_friendship_level += 12
#friendship_gained:12
~ npc_haxolottle_influence += 12
#influence_gained:12
You: That sounds exhausting in a completely different way than field work.
-> handler_stress_acknowledgment
=== handler_appreciation ===
~ npc_haxolottle_friendship_level += 20
#friendship_gained:20
~ npc_haxolottle_influence += 20
#influence_gained:20
~ npc_haxolottle_trust_moments += 1
Haxolottle: *clearly moved*
@@ -805,13 +805,13 @@ Haxolottle: Knowing it makes a difference—that you feel less alone—that's wh
Haxolottle: We're a team. You're my eyes and hands in the field. I'm your strategic perspective and support system. Neither of us succeeds without the other.
~ npc_haxolottle_friendship_level += 20
#friendship_gained:20
~ npc_haxolottle_influence += 20
#influence_gained:20
-> phase_2_hub
=== handler_field_return_question ===
~ npc_haxolottle_friendship_level += 12
#friendship_gained:12
~ npc_haxolottle_influence += 12
#influence_gained:12
Haxolottle: *considers carefully*
@@ -823,13 +823,13 @@ Haxolottle: Transitioning to handler was regeneration. Different work, same miss
Haxolottle: Plus, I'm better at this. Supporting multiple agents, seeing the strategic picture, staying calm under pressure. My field skills were good. My handler skills are better.
~ npc_haxolottle_friendship_level += 12
#friendship_gained:12
~ npc_haxolottle_influence += 12
#influence_gained:12
-> phase_2_hub
=== handler_stress_acknowledgment ===
~ npc_haxolottle_friendship_level += 15
#friendship_gained:15
~ npc_haxolottle_influence += 15
#influence_gained:15
Haxolottle: It really is. Different kind of exhaustion.
@@ -841,8 +841,8 @@ Haxolottle: I end the day mentally drained in a way field work never did. But al
Haxolottle: Trade-offs. Everything in SAFETYNET is trade-offs.
~ npc_haxolottle_friendship_level += 15
#friendship_gained:15
~ npc_haxolottle_influence += 15
#influence_gained:15
-> phase_2_hub
// ----------------
@@ -851,8 +851,8 @@ Haxolottle: Trade-offs. Everything in SAFETYNET is trade-offs.
=== field_nostalgia ===
~ npc_haxolottle_talked_field_nostalgia = true
~ npc_haxolottle_friendship_level += 15
#friendship_gained:15
~ npc_haxolottle_influence += 15
#influence_gained:15
~ npc_haxolottle_conversations_had += 1
Haxolottle: Do I miss field work? Sometimes. Mostly small moments, not the overall experience.
@@ -864,27 +864,27 @@ Haxolottle: I miss the problem-solving in real-time. When you're in the field, e
Haxolottle: And honestly? I miss the simplicity. One mission, one objective, handle it and move on. As a handler, I'm juggling multiple agents, operations, responsibilities. It's more complex.
* [Ask what they don't miss]
~ npc_haxolottle_friendship_level += 10
#friendship_gained:10
~ npc_haxolottle_influence += 10
#influence_gained:10
You: What don't you miss about it?
-> field_nostalgia_negative
* [Share what you love about field work]
~ npc_haxolottle_friendship_level += 15
#friendship_gained:15
~ npc_haxolottle_influence += 15
#influence_gained:15
~ npc_haxolottle_player_shared_personal += 1
You: I feel that rush too. That moment when everything clicks.
-> field_nostalgia_shared_joy
* [Ask about their most memorable infiltration]
~ npc_haxolottle_friendship_level += 12
#friendship_gained:12
~ npc_haxolottle_influence += 12
#influence_gained:12
You: What's your most memorable field operation?
-> field_nostalgia_memorable_op
=== field_nostalgia_negative ===
~ npc_haxolottle_friendship_level += 15
#friendship_gained:15
~ npc_haxolottle_influence += 15
#influence_gained:15
Haxolottle: *laughs* Oh, plenty. The fear, for one. That sustained low-level anxiety of maintaining cover, wondering if today's the day someone sees through it.
@@ -894,13 +894,13 @@ Haxolottle: And the physical toll. I'm not young anymore. Eight years of irregul
Haxolottle: Plus, I hated the paperwork. At least as a handler, I'm the one receiving the reports instead of writing them.
~ npc_haxolottle_friendship_level += 15
#friendship_gained:15
~ npc_haxolottle_influence += 15
#influence_gained:15
-> phase_2_hub
=== field_nostalgia_shared_joy ===
~ npc_haxolottle_friendship_level += 20
#friendship_gained:20
~ npc_haxolottle_influence += 20
#influence_gained:20
~ npc_haxolottle_trust_moments += 1
Haxolottle: Yes! Exactly! That rush when everything aligns—the timing, the technique, the execution. It's beautiful when it works.
@@ -911,13 +911,13 @@ Haxolottle: Different from doing it myself, but still genuine. Like watching a m
Haxolottle: That's part of why I love this partnership. You're really good at what you do. Makes my job easier and more satisfying.
~ npc_haxolottle_friendship_level += 20
#friendship_gained:20
~ npc_haxolottle_influence += 20
#influence_gained:20
-> phase_2_hub
=== field_nostalgia_memorable_op ===
~ npc_haxolottle_friendship_level += 15
#friendship_gained:15
~ npc_haxolottle_influence += 15
#influence_gained:15
Haxolottle: Most memorable? Hard to pick one... but there was this operation in Prague. Corporate espionage case, ENTROPY front company.
@@ -931,8 +931,8 @@ Haxolottle: Completed the mission with zero suspicion. They thought I was just a
Haxolottle: That was the operation that convinced me I'd found the right line of work. Chaos, adaptation, success. Everything I'm good at.
~ npc_haxolottle_friendship_level += 15
#friendship_gained:15
~ npc_haxolottle_influence += 15
#influence_gained:15
-> phase_2_hub
// ----------------
@@ -941,8 +941,8 @@ Haxolottle: That was the operation that convinced me I'd found the right line of
=== weird_habits_discussion ===
~ npc_haxolottle_talked_weird_habits = true
~ npc_haxolottle_friendship_level += 10
#friendship_gained:10
~ npc_haxolottle_influence += 10
#influence_gained:10
~ npc_haxolottle_conversations_had += 1
~ npc_haxolottle_humor_shared += 1
@@ -957,30 +957,30 @@ Haxolottle: And I keep three versions of my origin story ready depending on who
Haxolottle: SAFETYNET gets in your head. You start treating normal life like an operation.
* [Admit you do the same]
~ npc_haxolottle_friendship_level += 15
#friendship_gained:15
~ npc_haxolottle_influence += 15
#influence_gained:15
~ npc_haxolottle_player_shared_personal += 1
~ npc_haxolottle_humor_shared += 1
You: I map exits too! And I check reflections for surveillance.
-> weird_habits_shared
* [Share a different weird habit]
~ npc_haxolottle_friendship_level += 15
#friendship_gained:15
~ npc_haxolottle_influence += 15
#influence_gained:15
~ npc_haxolottle_player_shared_personal += 2
~ npc_haxolottle_trust_moments += 1
You: I've developed some similar habits...
-> weird_habits_player_share
* [Ask if they think it's unhealthy]
~ npc_haxolottle_friendship_level += 8
#friendship_gained:8
~ npc_haxolottle_influence += 8
#influence_gained:8
You: Is that unhealthy? Should we be concerned?
-> weird_habits_healthy_question
=== weird_habits_shared ===
~ npc_haxolottle_friendship_level += 20
#friendship_gained:20
~ npc_haxolottle_influence += 20
#influence_gained:20
~ npc_haxolottle_humor_shared += 1
Haxolottle: *laughs* Right? It's impossible to turn off! I went to a casual dinner with—well, with someone in my life—and spent the first ten minutes analyzing sight lines and potential surveillance.
@@ -991,13 +991,13 @@ Haxolottle: We're professionally paranoid. It's both a survival skill and a mino
Haxolottle: But hey, if there ever IS an emergency at a grocery store, we'll be the most prepared people there. Silver lining.
~ npc_haxolottle_friendship_level += 20
#friendship_gained:20
~ npc_haxolottle_influence += 20
#influence_gained:20
-> phase_2_hub
=== weird_habits_player_share ===
~ npc_haxolottle_friendship_level += 20
#friendship_gained:20
~ npc_haxolottle_influence += 20
#influence_gained:20
~ npc_haxolottle_trust_moments += 2
Haxolottle: Oh, tell me yours. I love hearing what habits other agents develop. It's like a support group for occupational paranoia.
@@ -1010,13 +1010,13 @@ Haxolottle: We should start a handbook addendum: "Common Psychological Adaptatio
Haxolottle: Honestly, it helps to know we're all doing this. Makes it feel less like slowly losing our minds and more like... adaptive behavior in a weird profession.
~ npc_haxolottle_friendship_level += 25
#friendship_gained:25
~ npc_haxolottle_influence += 25
#influence_gained:25
-> phase_2_hub
=== weird_habits_healthy_question ===
~ npc_haxolottle_friendship_level += 10
#friendship_gained:10
~ npc_haxolottle_influence += 10
#influence_gained:10
Haxolottle: *considers* Probably somewhere in between healthy professional awareness and mild paranoia.
@@ -1026,8 +1026,8 @@ Haxolottle: I think as long as the habits aren't interfering with normal life, t
Haxolottle: But it's worth checking in with yourself. "Is this useful vigilance or is it anxiety?" That line can blur.
~ npc_haxolottle_friendship_level += 10
#friendship_gained:10
~ npc_haxolottle_influence += 10
#influence_gained:10
-> phase_2_hub
// Continue with Phase 3 and 4 hubs (later missions)...
@@ -1042,14 +1042,14 @@ Haxolottle: But it's worth checking in with yourself. "Is this useful vigilance
=== conversation_end ===
{
- npc_haxolottle_conversations_had >= 5 and npc_haxolottle_friendship_level >= 40:
- npc_haxolottle_conversations_had >= 5 and npc_haxolottle_influence >= 40:
Haxolottle: I really appreciate these talks, Agent {player_name()}. Makes the work feel less isolating.
- else:
Haxolottle: Alright. Back to the mission. Talk later.
}
{
- npc_haxolottle_friendship_level >= 60:
- npc_haxolottle_influence >= 60:
Haxolottle: And hey... you're becoming a real friend. Within the constraints of Protocol 47-Alpha, but a friend nonetheless.
}
@@ -1075,8 +1075,8 @@ Haxolottle: *checking in* How's it going, {player_name()}?
=== favorite_operations ===
Haxolottle: Favorite operations? That's tough. Every successful op is satisfying in its own way.
Haxolottle: But yeah, there are some that stand out. The ones where everything clicks between handler and agent.
~ npc_haxolottle_friendship_level += 5
#friendship_gained:5
~ npc_haxolottle_influence += 5
#influence_gained:5
~ npc_haxolottle_talked_favorite_operations = true
-> phase_2_hub
@@ -1086,13 +1086,13 @@ Haxolottle: Lost an agent six months ago. Today would have been their birthday.
Haxolottle: Sorry. Shouldn't burden you with that.
+ [I'm sorry for your loss]
Haxolottle: *appreciates it* Thanks. It's part of the job, but it never gets easier.
~ npc_haxolottle_friendship_level += 10
#friendship_gained:10
~ npc_haxolottle_influence += 10
#influence_gained:10
~ npc_haxolottle_shared_loss = true
+ [You can talk about it if you need to]
Haxolottle: Maybe another time. Right now I just need to keep working. Helping you helps.
~ npc_haxolottle_friendship_level += 8
#friendship_gained:8
~ npc_haxolottle_influence += 8
#influence_gained:8
~ npc_haxolottle_shared_loss = true
-> phase_2_hub

View File

@@ -66,7 +66,7 @@ EXTERNAL mission_phase() // LOCAL - Phase of current mission ("pr
+ {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:
- npc_netherton_influence >= 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?
@@ -90,7 +90,7 @@ EXTERNAL mission_phase() // LOCAL - Phase of current mission ("pr
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]
+ {mission_phase() == "downtime" and npc_netherton_influence >= 60} [Ask for operational advice]
Netherton: You want my counsel? *slight approval* Very well.
-> operational_advice_discussion
@@ -111,9 +111,9 @@ EXTERNAL mission_phase() // LOCAL - Phase of current mission ("pr
+ [That will be all, Director]
{
- npc_netherton_respect >= 80:
- npc_netherton_influence >= 80:
Netherton: Very well, Agent {player_name()}. *almost warm* Continue your excellent work.
- npc_netherton_respect >= 60:
- npc_netherton_influence >= 60:
Netherton: Dismissed. Maintain your current performance level.
- else:
Netherton: Dismissed.
@@ -134,7 +134,7 @@ EXTERNAL mission_phase() // LOCAL - Phase of current mission ("pr
- 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
- not npc_netherton_discussed_expectations and npc_netherton_influence >= 55: ~ return true
- else: ~ return false
}
@@ -143,28 +143,28 @@ EXTERNAL mission_phase() // LOCAL - Phase of current mission ("pr
{
- 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
- not npc_netherton_discussed_bureau_politics and npc_netherton_influence >= 65: ~ return true
- not npc_netherton_discussed_field_vs_command and npc_netherton_influence >= 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
- not npc_netherton_discussed_weight_of_command and npc_netherton_influence >= 75: ~ return true
- not npc_netherton_discussed_agent_losses and npc_netherton_influence >= 70: ~ return true
- not npc_netherton_discussed_ethical_boundaries and npc_netherton_influence >= 70: ~ return true
- not npc_netherton_discussed_personal_cost and npc_netherton_influence >= 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
- not npc_netherton_discussed_legacy and npc_netherton_influence >= 85: ~ return true
- not npc_netherton_discussed_trust and npc_netherton_influence >= 80: ~ return true
- not npc_netherton_discussed_rare_praise and npc_netherton_influence >= 85: ~ return true
- not npc_netherton_discussed_beyond_protocol and npc_netherton_influence >= 90: ~ return true
- else: ~ return false
}
@@ -232,8 +232,8 @@ Netherton: *monitoring your position* I'm tracking your progress. What do you ne
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
#respect_gained:5
~ npc_netherton_influence += 5
#influence_gained:5
-> mission_hub
+ [Request emergency extraction]
@@ -250,14 +250,14 @@ Netherton: *monitoring your position* I'm tracking your progress. What do you ne
=== mission_ghost_debrief ===
Netherton: Your mission report indicates success. The backdoor has been neutralized. ENTROPY remains unaware of our intervention.
{npc_netherton_respect >= 70:
{npc_netherton_influence >= 70:
Netherton: Excellent work, Agent. Your execution was textbook. This is exactly the kind of operational performance SAFETYNET requires.
~ npc_netherton_respect += 10
#respect_gained:10
~ npc_netherton_influence += 10
#influence_gained:10
- else:
Netherton: Adequate performance. Mission objectives achieved. Some aspects could be refined.
~ npc_netherton_respect += 5
#respect_gained:5
~ npc_netherton_influence += 5
#influence_gained:5
}
Netherton: Dr. Chen is analyzing the technical data you extracted. It may provide intelligence on other ENTROPY operations.
@@ -294,24 +294,24 @@ Netherton: You want operational advice. *considers* On what specific matter?
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
#respect_gained:5
~ npc_netherton_influence += 5
#influence_gained:5
-> 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
#respect_gained:5
~ npc_netherton_influence += 5
#influence_gained:5
-> mission_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
#respect_gained:8
~ npc_netherton_influence += 8
#influence_gained:8
~ professional_reputation += 1
-> mission_hub
@@ -329,7 +329,7 @@ Netherton: We're making progress. But ENTROPY adapts. The fight continues.
-> 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: We meet operational objectives consistently. Success rate is {85 + (npc_netherton_influence / 10)} percent over the past quarter.
Netherton: Acceptable, but there's room for improvement. Every failed operation represents unmitigated risk.
-> mission_hub
@@ -350,8 +350,8 @@ Netherton: Training opportunities. What areas interest you?
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
#respect_gained:10
~ npc_netherton_influence += 10
#influence_gained:10
-> mission_hub
+ [Technical specialization]

File diff suppressed because it is too large Load Diff