mirror of
https://github.com/cliffe/BreakEscape.git
synced 2026-02-20 13:50:46 +00:00
Add Mission 3 Stage 7 Ink Scripts (Part 2 - Final Scripts)
- Add m03_phone_agent0x99.ink (Agent 0x99 phone support)
- Hint system (RFID, lockpicking, passwords, encoding, network recon)
- Event-triggered calls (item pickups, detections, achievements)
- M2 revelation call after distcc flag (emotional impact)
- Progress tracking and adaptive guidance
- ~480 lines
- Add m03_npc_guard.ink (Night security guard)
- Patrol encounter and excuse system
- Multiple excuse paths (work here, Victoria sent me, maintenance)
- Bribe mechanic ($500 for access)
- SAFETYNET reveal option for cooperation
- Hostile paths and combat triggers
- ~440 lines
- Add m03_npc_receptionist.ink (Daytime receptionist)
- Badge check-in process
- Company history (2010 founding = safe PIN hint)
- Topics about Victoria, James, building layout
- Friendly, helpful NPC for world-building
- ~250 lines
- Add m03_james_choice.ink (James Park moral choice)
- Evidence discovery (hospital reconnaissance files)
- Diary reveals James's unknowing participation
- Moral complexity: deceived initially, conflicted now
- 3 choice paths: protect/expose/ignore James's fate
- Direct confrontation variant if James appears
- ~530 lines
- Add m03_closing_debrief.ink (Act 3 mission debrief)
- Performance acknowledgment (objectives, stealth, time)
- Act 1 choice callbacks (approach, trust, priorities)
- M2 hospital attack discussion and impact
- Victoria fate discussion (recruited/arrested/escaped)
- Phase 2 and Architect revelation analysis
- James fate outcomes and consequences
- LORE fragment analysis
- Campaign setup for future missions
- ~570 lines
Total Part 2: ~2,270 lines across 5 scripts
Total Stage 7: ~4,010 lines across 9 complete Ink scripts
Stage 7 Status: ✅ COMPLETE
All narrative scripts ready for Mission 3 implementation
This commit is contained in:
@@ -0,0 +1,672 @@
|
||||
// ===========================================
|
||||
// Mission 3: Ghost in the Machine
|
||||
// ACT 3: CLOSING DEBRIEF
|
||||
// ===========================================
|
||||
|
||||
// Variables from Act 1 (opening briefing)
|
||||
EXTERNAL player_approach
|
||||
EXTERNAL handler_trust
|
||||
EXTERNAL knows_m2_connection
|
||||
EXTERNAL mission_priority
|
||||
|
||||
// Variables from Act 2 (gameplay)
|
||||
EXTERNAL objectives_completed
|
||||
EXTERNAL lore_collected
|
||||
EXTERNAL stealth_rating
|
||||
EXTERNAL time_taken
|
||||
EXTERNAL flags_submitted_count
|
||||
|
||||
// Variables from moral choices
|
||||
EXTERNAL victoria_fate // "protected", "exposed", "recruited", "arrested"
|
||||
EXTERNAL james_fate // "protected", "exposed", "ignored"
|
||||
EXTERNAL found_exploit_catalog
|
||||
EXTERNAL found_architect_directive
|
||||
|
||||
EXTERNAL player_name
|
||||
|
||||
// ===========================================
|
||||
// OPENING
|
||||
// ===========================================
|
||||
|
||||
=== start ===
|
||||
#speaker:agent_0x99
|
||||
|
||||
[Location: SAFETYNET Secure Debrief Room]
|
||||
[Time: 24 hours after mission completion]
|
||||
[Visual: Agent 0x99 avatar - serious but relieved expression]
|
||||
|
||||
Agent 0x99: {player_name}, welcome back. Have a seat.
|
||||
|
||||
Agent 0x99: Let's debrief Mission 3 - Ghost in the Machine.
|
||||
|
||||
{objectives_completed >= 4:
|
||||
-> full_success_debrief
|
||||
}
|
||||
|
||||
{objectives_completed >= 2 and objectives_completed < 4:
|
||||
-> partial_success_debrief
|
||||
}
|
||||
|
||||
{objectives_completed < 2:
|
||||
-> minimal_success_debrief
|
||||
}
|
||||
|
||||
// ===========================================
|
||||
// FULL SUCCESS PATH
|
||||
// ===========================================
|
||||
|
||||
=== full_success_debrief ===
|
||||
#speaker:agent_0x99
|
||||
|
||||
Agent 0x99: All primary objectives completed. Outstanding work.
|
||||
|
||||
{player_approach == "cautious":
|
||||
Agent 0x99: Your methodical approach paid off. You documented everything, missed nothing.
|
||||
}
|
||||
|
||||
{player_approach == "aggressive":
|
||||
Agent 0x99: You moved fast and got results. Aggressive execution, clean outcome.
|
||||
}
|
||||
|
||||
{player_approach == "diplomatic":
|
||||
Agent 0x99: Your adaptability was key. You read situations perfectly and adjusted tactics accordingly.
|
||||
}
|
||||
|
||||
{stealth_rating > 80:
|
||||
Agent 0x99: And you stayed ghost the entire operation. Zero Day never knew what hit them.
|
||||
}
|
||||
|
||||
{stealth_rating > 50 and stealth_rating <= 80:
|
||||
Agent 0x99: You made some noise, but nothing that compromised the mission.
|
||||
}
|
||||
|
||||
{stealth_rating <= 50:
|
||||
Agent 0x99: You triggered some alerts, but you completed the objectives despite the heat.
|
||||
}
|
||||
|
||||
-> mission_impact
|
||||
|
||||
// ===========================================
|
||||
// PARTIAL SUCCESS PATH
|
||||
// ===========================================
|
||||
|
||||
=== partial_success_debrief ===
|
||||
#speaker:agent_0x99
|
||||
|
||||
Agent 0x99: Mission complete, though we didn't get everything we wanted.
|
||||
|
||||
Agent 0x99: {objectives_completed} objectives out of the primary set. That's solid work, but there are gaps.
|
||||
|
||||
{player_approach == "aggressive" and time_taken < 1800:
|
||||
Agent 0x99: Speed was prioritized. Sometimes that means missing details.
|
||||
}
|
||||
|
||||
Agent 0x99: Still, what you DID get is valuable. Let's talk impact.
|
||||
|
||||
-> mission_impact
|
||||
|
||||
// ===========================================
|
||||
// MINIMAL SUCCESS PATH
|
||||
// ===========================================
|
||||
|
||||
=== minimal_success_debrief ===
|
||||
#speaker:agent_0x99
|
||||
|
||||
Agent 0x99: You completed the core objective, but... we're working with incomplete intelligence.
|
||||
|
||||
Agent 0x99: What we have is useful. But there's significant intelligence we missed.
|
||||
|
||||
Agent 0x99: Let's assess what we got and what it means.
|
||||
|
||||
-> mission_impact
|
||||
|
||||
// ===========================================
|
||||
// MISSION IMPACT ASSESSMENT
|
||||
// ===========================================
|
||||
|
||||
=== mission_impact ===
|
||||
#speaker:agent_0x99
|
||||
|
||||
Agent 0x99: Here's what Zero Day Syndicate's infiltration accomplished:
|
||||
|
||||
{flags_submitted_count >= 4:
|
||||
Agent 0x99: Network intelligence - complete. You submitted all VM flags.
|
||||
Agent 0x99: We have a full map of their training network, service vulnerabilities, and operational infrastructure.
|
||||
}
|
||||
|
||||
{flags_submitted_count >= 2 and flags_submitted_count < 4:
|
||||
Agent 0x99: Network intelligence - partial. You submitted {flags_submitted_count} of 4 flags.
|
||||
Agent 0x99: We have some visibility into their operations, but there are blind spots.
|
||||
}
|
||||
|
||||
{flags_submitted_count < 2:
|
||||
Agent 0x99: Network intelligence - minimal. We're missing critical digital evidence.
|
||||
}
|
||||
|
||||
-> m2_hospital_discussion
|
||||
|
||||
// ===========================================
|
||||
// M2 HOSPITAL ATTACK DISCUSSION
|
||||
// ===========================================
|
||||
|
||||
=== m2_hospital_discussion ===
|
||||
#speaker:agent_0x99
|
||||
|
||||
Agent 0x99: Now... St. Catherine's Hospital. The M2 connection.
|
||||
|
||||
{found_exploit_catalog or flags_submitted_count >= 4:
|
||||
Agent 0x99: You found the smoking gun. The exploit catalog. The operational logs.
|
||||
|
||||
Agent 0x99: ProFTPD exploit, CVE-2010-4652. Sold to GHOST - Ransomware Incorporated.
|
||||
|
||||
Agent 0x99: Purchase price: $12,500. With a healthcare premium markup.
|
||||
|
||||
Agent 0x99: Target: St. Catherine's Regional Medical Center.
|
||||
|
||||
[Pause]
|
||||
|
||||
Agent 0x99: Six deaths. Four in critical care when patient monitoring failed. Two during emergency surgery when systems crashed.
|
||||
|
||||
{knows_m2_connection:
|
||||
Agent 0x99: You knew the stakes from the beginning. You delivered.
|
||||
}
|
||||
|
||||
Agent 0x99: This is ironclad evidence. Federal prosecutors can prove direct causation.
|
||||
|
||||
Agent 0x99: Zero Day → GHOST → St. Catherine's. Murder for profit.
|
||||
|
||||
-> victoria_discussion
|
||||
}
|
||||
|
||||
{not found_exploit_catalog and flags_submitted_count < 4:
|
||||
Agent 0x99: We have strong circumstantial evidence connecting Zero Day to the M2 hospital attack.
|
||||
|
||||
Agent 0x99: But without the operational logs or exploit catalog, proving direct causation is harder.
|
||||
|
||||
Agent 0x99: We can build a case, but it would have been stronger with more evidence.
|
||||
|
||||
-> victoria_discussion
|
||||
}
|
||||
|
||||
// ===========================================
|
||||
// VICTORIA STERLING DISCUSSION
|
||||
// ===========================================
|
||||
|
||||
=== victoria_discussion ===
|
||||
#speaker:agent_0x99
|
||||
|
||||
Agent 0x99: Victoria Sterling. Codename "Cipher." CEO of WhiteHat Security, leader of Zero Day Syndicate.
|
||||
|
||||
{victoria_fate == "recruited":
|
||||
Agent 0x99: And now... your double agent.
|
||||
|
||||
Agent 0x99: I'll be honest - that was a hell of a gambit. Recruiting her instead of arresting her.
|
||||
|
||||
* [She's more valuable as an intelligence asset]
|
||||
You: She has access to The Architect. To the entire ENTROPY network. We need that intelligence.
|
||||
Agent 0x99: I agree. But it's risky. She's ideologically committed, not just mercenary.
|
||||
Agent 0x99: She believes in what she's doing. That makes turning her... complicated.
|
||||
-> victoria_recruited_path
|
||||
|
||||
* [She can help us stop Phase 2]
|
||||
You: Phase 2 targets 50,000+ patients and 1.2 million customers. Victoria's intel can prevent that.
|
||||
Agent 0x99: True. If she delivers. If she doesn't get exposed. If The Architect doesn't suspect.
|
||||
Agent 0x99: A lot of "ifs."
|
||||
-> victoria_recruited_path
|
||||
|
||||
* [It was the right call]
|
||||
You: It was the right tactical decision given the strategic picture.
|
||||
~ handler_trust += 10
|
||||
Agent 0x99: I trust your judgment. You were there, you made the call.
|
||||
-> victoria_recruited_path
|
||||
}
|
||||
|
||||
{victoria_fate == "arrested":
|
||||
Agent 0x99: Victoria Sterling is in federal custody. Charged with conspiracy, providing material support to terrorist operations, and accessory to murder.
|
||||
|
||||
Agent 0x99: She's looking at life in prison. Her lawyers are already talking about philosophical defenses - "information freedom," "market forces."
|
||||
|
||||
Agent 0x99: It won't work. The evidence is too clear.
|
||||
|
||||
* [She authorized six deaths for $12,500]
|
||||
You: She charged a healthcare premium because hospitals can't defend themselves. Calculated exploitation.
|
||||
Agent 0x99: Exactly. That pricing model proves premeditation and malicious intent.
|
||||
-> victoria_arrested_path
|
||||
|
||||
* [Justice for St. Catherine's victims]
|
||||
You: Angela Martinez. David Chen. Sarah Thompson. Marcus Gray. Jennifer Wu. Robert Patterson.
|
||||
You: They have justice now.
|
||||
~ handler_trust += 10
|
||||
Agent 0x99: [Quiet moment] Yes. Yes, they do.
|
||||
-> victoria_arrested_path
|
||||
|
||||
* [One cell leader down]
|
||||
You: One ENTROPY cell leader captured. That disrupts their operations.
|
||||
Agent 0x99: Agreed. Zero Day Syndicate is crippled without Victoria.
|
||||
-> victoria_arrested_path
|
||||
}
|
||||
|
||||
{victoria_fate != "recruited" and victoria_fate != "arrested":
|
||||
Agent 0x99: Victoria Sterling remains at large. She suspects SAFETYNET interest but has no proof of infiltration.
|
||||
|
||||
Agent 0x99: We have evidence, but without her in custody, prosecution is harder.
|
||||
|
||||
Agent 0x99: She'll likely go dark, reorganize, resurface under a new operation.
|
||||
|
||||
-> phase_2_discussion
|
||||
}
|
||||
|
||||
=== victoria_recruited_path ===
|
||||
#speaker:agent_0x99
|
||||
|
||||
Agent 0x99: She's been debriefed by our counterintelligence team. Initial intelligence package delivered.
|
||||
|
||||
Agent 0x99: Communication protocols for The Architect. Payment methods. Other ENTROPY cell contacts.
|
||||
|
||||
Agent 0x99: We're establishing encrypted channels for her to feed us ongoing intelligence.
|
||||
|
||||
Agent 0x99: She'll continue operations at Zero Day to avoid suspicion, but now she reports to us.
|
||||
|
||||
{player_approach == "diplomatic":
|
||||
Agent 0x99: Your diplomatic approach made this possible. Well played.
|
||||
}
|
||||
|
||||
Agent 0x99: Time will tell if this gambit pays off. But for now, we have eyes inside ENTROPY leadership.
|
||||
|
||||
-> phase_2_discussion
|
||||
|
||||
=== victoria_arrested_path ===
|
||||
#speaker:agent_0x99
|
||||
|
||||
Agent 0x99: With Victoria in custody, Zero Day Syndicate is effectively neutralized.
|
||||
|
||||
Agent 0x99: Her encryption keys gave us access to client databases, transaction records, The Architect's communications.
|
||||
|
||||
Agent 0x99: We're rolling up her network as we speak. Other ENTROPY cells that relied on Zero Day's exploits are scrambling.
|
||||
|
||||
{player_approach == "cautious":
|
||||
Agent 0x99: Your thorough evidence gathering made this arrest possible. Clean prosecution.
|
||||
}
|
||||
|
||||
-> phase_2_discussion
|
||||
|
||||
// ===========================================
|
||||
// PHASE 2 DISCUSSION
|
||||
// ===========================================
|
||||
|
||||
=== phase_2_discussion ===
|
||||
#speaker:agent_0x99
|
||||
|
||||
Agent 0x99: Now the big one - Phase 2.
|
||||
|
||||
{found_architect_directive:
|
||||
Agent 0x99: You found The Architect's directive. That USB drive in Victoria's desk.
|
||||
|
||||
Agent 0x99: Double-encoded. Base64 and ROT13. You cracked it.
|
||||
|
||||
[Agent 0x99's expression darkens]
|
||||
|
||||
Agent 0x99: The contents... jesus.
|
||||
|
||||
Agent 0x99: Healthcare SCADA systems. 15 hospitals targeted. Ventilation control. Patient monitoring networks.
|
||||
|
||||
Agent 0x99: Energy grid ICS. 427 vulnerable substations mapped for attack.
|
||||
|
||||
Agent 0x99: Projected impact: 50,000+ patient treatment delays. 1.2 million residential customers without power. Winter targeting.
|
||||
|
||||
* [That's genocide-scale harm]
|
||||
You: 50,000 patients. That's not hacking. That's mass casualty terrorism.
|
||||
Agent 0x99: Correct. And it's coordinated across multiple ENTROPY cells.
|
||||
-> architect_revelation
|
||||
|
||||
* [We have to stop it]
|
||||
You: We have the Phase 2 timeline. Q4 2024 - Q1 2025. We can prevent this.
|
||||
Agent 0x99: We're working on it. But stopping a distributed multi-cell attack is complex.
|
||||
-> architect_revelation
|
||||
|
||||
* [The Architect is orchestrating everything]
|
||||
You: This isn't isolated cells. This is coordinated network-level operation.
|
||||
Agent 0x99: Yes. And that's the game-changer.
|
||||
-> architect_revelation
|
||||
}
|
||||
|
||||
{not found_architect_directive:
|
||||
Agent 0x99: We know Phase 2 is planned. We've seen references in Victoria's communications.
|
||||
|
||||
Agent 0x99: But without the detailed directive, we're working with incomplete intelligence.
|
||||
|
||||
Agent 0x99: Infrastructure targeting. Healthcare and energy sectors. That's what we know.
|
||||
|
||||
Agent 0x99: We'll keep working the intelligence, but... we could have had more.
|
||||
|
||||
-> james_discussion
|
||||
}
|
||||
|
||||
// ===========================================
|
||||
// THE ARCHITECT REVELATION
|
||||
// ===========================================
|
||||
|
||||
=== architect_revelation ===
|
||||
#speaker:agent_0x99
|
||||
|
||||
Agent 0x99: The Architect. ENTROPY's leadership figure.
|
||||
|
||||
Agent 0x99: The directive proves they exist. Proves they're coordinating all the cells.
|
||||
|
||||
Agent 0x99: Zero Day provides exploits. Ransomware Inc deploys against hospitals. Social Fabric amplifies panic via misinformation. Critical Mass targets emergency response.
|
||||
|
||||
Agent 0x99: Multi-vector synchronized attack. Each cell independently operational, but coordinated for maximum chaos.
|
||||
|
||||
Agent 0x99: "Chaos amplification factor: 3.7x" - they're CALCULATING the synergistic harm.
|
||||
|
||||
* [Do we know The Architect's identity?]
|
||||
You: Do we have any leads on The Architect's real identity?
|
||||
Agent 0x99: Not yet. Victoria claims she's never met them face-to-face. All communication via encrypted channels.
|
||||
Agent 0x99: But we're working on it. Every ENTROPY operation gets us closer.
|
||||
-> architect_investigation
|
||||
|
||||
* [This is campaign-level intelligence]
|
||||
You: This isn't just one mission. This is the key to the entire ENTROPY network.
|
||||
~ handler_trust += 10
|
||||
Agent 0x99: Exactly. You didn't just complete a mission. You gave us the map to their whole operation.
|
||||
-> architect_investigation
|
||||
|
||||
=== architect_investigation ===
|
||||
#speaker:agent_0x99
|
||||
|
||||
Agent 0x99: SAFETYNET Command is escalating this to top priority.
|
||||
|
||||
Agent 0x99: Phase 2 prevention is now inter-agency. FBI, CISA, NSA. We're briefing them all.
|
||||
|
||||
Agent 0x99: 427 energy substations will get hardened defenses. 15 hospitals will get emergency security assessments.
|
||||
|
||||
Agent 0x99: We can't stop ENTROPY entirely - they're too distributed - but we can protect the Phase 2 targets.
|
||||
|
||||
Agent 0x99: Thanks to you.
|
||||
|
||||
-> james_discussion
|
||||
|
||||
// ===========================================
|
||||
// JAMES PARK DISCUSSION
|
||||
// ===========================================
|
||||
|
||||
=== james_discussion ===
|
||||
#speaker:agent_0x99
|
||||
|
||||
{james_fate != "":
|
||||
Agent 0x99: One more thing. James Park, Zero Day's senior consultant.
|
||||
|
||||
{james_fate == "protected":
|
||||
Agent 0x99: You protected him. Framed his role as unwitting participation under Victoria's deception.
|
||||
|
||||
Agent 0x99: I've read your report. And I've read James's diary entries.
|
||||
|
||||
Agent 0x99: I think... I think you made the right call.
|
||||
|
||||
Agent 0x99: James conducted legitimate pen testing under false pretenses. He was a tool Victoria used.
|
||||
|
||||
Agent 0x99: When he learned the truth, he was paralyzed by fear and guilt. That's human.
|
||||
|
||||
{player_approach == "diplomatic":
|
||||
Agent 0x99: Your diplomatic nuance - recognizing the complexity - that's why this field needs people like you.
|
||||
}
|
||||
|
||||
Agent 0x99: James reached out to SAFETYNET yesterday. Voluntarily. He's cooperating fully.
|
||||
|
||||
Agent 0x99: He won't face charges. But he'll live with what happened. That's punishment enough.
|
||||
|
||||
-> lore_discussion
|
||||
}
|
||||
|
||||
{james_fate == "exposed":
|
||||
Agent 0x99: You exposed James's full involvement. The reconnaissance, the post-attack knowledge, the hush money.
|
||||
|
||||
Agent 0x99: He's been arrested. Charged with conspiracy after the fact and obstruction.
|
||||
|
||||
Agent 0x99: His lawyers are arguing he was deceived, which... he was. Initially.
|
||||
|
||||
Agent 0x99: But when he learned the truth and took Victoria's raise to stay quiet, that became a choice.
|
||||
|
||||
{player_approach == "aggressive":
|
||||
Agent 0x99: Your aggressive approach - all operatives face justice - is consistent. I respect that.
|
||||
}
|
||||
|
||||
Agent 0x99: James will likely get a reduced sentence compared to Victoria. Maybe 5-10 years instead of life.
|
||||
|
||||
Agent 0x99: His cooperation since arrest is helping prosecution. But he'll still serve time.
|
||||
|
||||
-> lore_discussion
|
||||
}
|
||||
|
||||
{james_fate == "ignored":
|
||||
Agent 0x99: You documented James's situation but left his fate to his own choices.
|
||||
|
||||
Agent 0x99: Interesting approach. Not protecting, not exposing. Just... observing.
|
||||
|
||||
Agent 0x99: James made his choice. He came forward to SAFETYNET two days ago. Voluntarily.
|
||||
|
||||
Agent 0x99: He's cooperating. Providing testimony against Victoria. He'll likely avoid charges given the voluntary disclosure.
|
||||
|
||||
{player_approach == "cautious":
|
||||
Agent 0x99: Your cautious approach - gather evidence, let the system decide - allowed James's own moral agency.
|
||||
}
|
||||
|
||||
Agent 0x99: He made the right choice in the end. That says something about him.
|
||||
|
||||
-> lore_discussion
|
||||
}
|
||||
}
|
||||
|
||||
{james_fate == "":
|
||||
-> lore_discussion
|
||||
}
|
||||
|
||||
// ===========================================
|
||||
// LORE FRAGMENTS DISCUSSION
|
||||
// ===========================================
|
||||
|
||||
=== lore_discussion ===
|
||||
#speaker:agent_0x99
|
||||
|
||||
{lore_collected >= 3:
|
||||
Agent 0x99: Intelligence gathering - exemplary. You collected all LORE fragments.
|
||||
|
||||
Agent 0x99: Zero Day's founding philosophy. The exploit catalog. The Architect's directive.
|
||||
|
||||
Agent 0x99: Each one gave us pieces of the larger ENTROPY puzzle.
|
||||
|
||||
-> lore_fragment_breakdown
|
||||
}
|
||||
|
||||
{lore_collected == 2:
|
||||
Agent 0x99: You collected some LORE fragments. Useful intelligence on ENTROPY's structure.
|
||||
|
||||
Agent 0x99: We would have benefited from the complete set, but what you found helps.
|
||||
|
||||
-> final_assessment
|
||||
}
|
||||
|
||||
{lore_collected == 1:
|
||||
Agent 0x99: You found one LORE fragment. Better than nothing, but we're missing context.
|
||||
|
||||
-> final_assessment
|
||||
}
|
||||
|
||||
{lore_collected == 0:
|
||||
Agent 0x99: No LORE fragments collected. That's... a missed opportunity.
|
||||
|
||||
Agent 0x99: LORE provides strategic intelligence about ENTROPY's ideology, structure, and future plans.
|
||||
|
||||
Agent 0x99: Without it, we're fighting tactics instead of strategy.
|
||||
|
||||
-> final_assessment
|
||||
}
|
||||
|
||||
=== lore_fragment_breakdown ===
|
||||
#speaker:agent_0x99
|
||||
|
||||
Agent 0x99: The three fragments paint a complete picture:
|
||||
|
||||
Agent 0x99: Fragment 1 - "Zero Day: A Brief History" - showed us Victoria's philosophy. "Monetize entropy."
|
||||
|
||||
Agent 0x99: She's not a sociopath. She's a true believer. She genuinely thinks she's participating in a rational market.
|
||||
|
||||
Agent 0x99: That makes her MORE dangerous, not less. You can't reason someone out of a position they didn't reason themselves into.
|
||||
|
||||
[Pause]
|
||||
|
||||
Agent 0x99: Fragment 2 - "Q3 2024 Exploit Catalog" - the smoking gun. $12,500 for the hospital exploit. Healthcare premium.
|
||||
|
||||
Agent 0x99: That pricing model - charging MORE to attack the vulnerable - that's evidence of calculated malice.
|
||||
|
||||
Agent 0x99: No jury will see "market efficiency" when they read "healthcare premium: +30% (delayed incident response)."
|
||||
|
||||
[Pause]
|
||||
|
||||
Agent 0x99: Fragment 3 - "The Architect's Directive" - the game-changer. Phase 2 plans. Multi-cell coordination. The full scope.
|
||||
|
||||
Agent 0x99: This fragment alone justified the entire mission. We know what's coming. We can prepare.
|
||||
|
||||
-> final_assessment
|
||||
|
||||
// ===========================================
|
||||
// FINAL ASSESSMENT
|
||||
// ===========================================
|
||||
|
||||
=== final_assessment ===
|
||||
#speaker:agent_0x99
|
||||
|
||||
Agent 0x99: Final assessment, {player_name}:
|
||||
|
||||
{objectives_completed >= 4 and lore_collected >= 2:
|
||||
Agent 0x99: Mission success - exceptional. You delivered everything we needed and more.
|
||||
|
||||
{handler_trust >= 70:
|
||||
Agent 0x99: And honestly? I knew you would. I've always had complete confidence in you.
|
||||
}
|
||||
|
||||
Agent 0x99: The M2 hospital attack has accountability. Victoria Sterling faces justice.
|
||||
|
||||
Agent 0x99: Phase 2 can be prevented. We have targets, timelines, coordination plans.
|
||||
|
||||
Agent 0x99: The Architect is still out there, but we're closing in. Each mission gets us closer.
|
||||
|
||||
-> aftermath
|
||||
}
|
||||
|
||||
{objectives_completed >= 2:
|
||||
Agent 0x99: Mission success - solid. You got what we needed, even if we didn't get everything.
|
||||
|
||||
Agent 0x99: We can work with this. Prosecution is viable. Phase 2 prevention is possible.
|
||||
|
||||
Agent 0x99: It would have been better with complete intelligence, but you did good work.
|
||||
|
||||
-> aftermath
|
||||
}
|
||||
|
||||
{objectives_completed < 2:
|
||||
Agent 0x99: Mission success - partial. We got some intelligence, but there are significant gaps.
|
||||
|
||||
Agent 0x99: We'll use what we have. But this fight against ENTROPY just got harder.
|
||||
|
||||
-> aftermath
|
||||
}
|
||||
|
||||
// ===========================================
|
||||
// AFTERMATH & FUTURE SETUP
|
||||
// ===========================================
|
||||
|
||||
=== aftermath ===
|
||||
#speaker:agent_0x99
|
||||
|
||||
Agent 0x99: Here's what happens now:
|
||||
|
||||
Agent 0x99: Zero Day Syndicate is disrupted. Victoria Sterling {victoria_fate == "arrested": is in custody}{ victoria_fate == "recruited": is our asset}{victoria_fate != "arrested" and victoria_fate != "recruited": has gone dark}.
|
||||
|
||||
Agent 0x99: Phase 2 critical infrastructure targets are being hardened. FBI and CISA are coordinating defenses.
|
||||
|
||||
Agent 0x99: Other ENTROPY cells are scrambling without Zero Day's exploit supply chain.
|
||||
|
||||
Agent 0x99: And SAFETYNET is one step closer to identifying The Architect.
|
||||
|
||||
* [What's next for me?]
|
||||
You: What's my next assignment?
|
||||
Agent 0x99: Rest. Debrief. Then we'll see where ENTROPY pops up next.
|
||||
Agent 0x99: They're a network. Taking down one cell reveals others.
|
||||
-> closing
|
||||
|
||||
* [What about The Architect?]
|
||||
You: When do we go after The Architect directly?
|
||||
Agent 0x99: When we know who they are. We're getting closer. Each mission, each piece of intelligence.
|
||||
Agent 0x99: Eventually, they'll make a mistake. And when they do, we'll be ready.
|
||||
-> closing
|
||||
|
||||
* [The fight continues]
|
||||
You: ENTROPY is still out there. Ransomware Inc, Social Fabric, Critical Mass, others.
|
||||
Agent 0x99: Yes. This is a marathon, not a sprint.
|
||||
Agent 0x99: But every mission we complete, we weaken their network. We save lives.
|
||||
-> closing
|
||||
|
||||
// ===========================================
|
||||
// CLOSING
|
||||
// ===========================================
|
||||
|
||||
=== closing ===
|
||||
#speaker:agent_0x99
|
||||
|
||||
{handler_trust >= 80:
|
||||
Agent 0x99: {player_name}, I want you to know... you're one of the best agents I've worked with.
|
||||
|
||||
Agent 0x99: Not just technically skilled. But morally thoughtful. You understand nuance.
|
||||
|
||||
Agent 0x99: That's rare in this field. Don't lose it.
|
||||
}
|
||||
|
||||
{handler_trust >= 50 and handler_trust < 80:
|
||||
Agent 0x99: You did good work on this mission, {player_name}.
|
||||
|
||||
Agent 0x99: Get some rest. We'll need you again soon.
|
||||
}
|
||||
|
||||
{handler_trust < 50:
|
||||
Agent 0x99: Mission complete. We got results, even if the execution was rough.
|
||||
|
||||
Agent 0x99: Take some time. Reflect on what worked and what didn't.
|
||||
}
|
||||
|
||||
Agent 0x99: And remember those six names. Angela Martinez. David Chen. Sarah Thompson. Marcus Gray. Jennifer Wu. Robert Patterson.
|
||||
|
||||
Agent 0x99: They didn't get justice before. But because of what you did, they have it now.
|
||||
|
||||
Agent 0x99: That matters.
|
||||
|
||||
* [It does matter]
|
||||
~ handler_trust += 5
|
||||
You: It matters. That's why we do this work.
|
||||
Agent 0x99: Exactly. That's why we fight.
|
||||
-> final_words
|
||||
|
||||
* [Thank you, Agent 0x99]
|
||||
You: Thank you for the support on this mission. Your guidance made the difference.
|
||||
~ handler_trust += 10
|
||||
Agent 0x99: [Warmly] Any time, {player_name}. We're a team.
|
||||
-> final_words
|
||||
|
||||
* [On to the next mission]
|
||||
You: Where ENTROPY goes, we follow. On to the next mission.
|
||||
Agent 0x99: [Nods] Damn right. Haxolottle out.
|
||||
-> final_words
|
||||
|
||||
=== final_words ===
|
||||
#speaker:agent_0x99
|
||||
|
||||
Agent 0x99: Stay safe out there, {player_name}.
|
||||
|
||||
Agent 0x99: The fight against ENTROPY continues. But tonight, you've earned some rest.
|
||||
|
||||
[Transmission ends]
|
||||
|
||||
[Mission 3 Complete: Ghost in the Machine]
|
||||
|
||||
#mission_complete
|
||||
-> END
|
||||
@@ -0,0 +1,570 @@
|
||||
// ===========================================
|
||||
// Mission 3: Ghost in the Machine
|
||||
// MORAL CHOICE: James Park's Fate
|
||||
// Triggered when player finds evidence in James's office
|
||||
// ===========================================
|
||||
|
||||
// James's state
|
||||
VAR james_evidence_level = 0 // 0=innocent, 1=suspicious, 2=complicit
|
||||
VAR james_fate = "" // "protected", "exposed", "ignored"
|
||||
VAR player_choice_made = false
|
||||
|
||||
// External variables
|
||||
EXTERNAL player_approach
|
||||
|
||||
// ===========================================
|
||||
// EVIDENCE DISCOVERY
|
||||
// ===========================================
|
||||
|
||||
=== start ===
|
||||
#speaker:computer
|
||||
|
||||
[Location: James Park's Office]
|
||||
[You're searching through files and documents]
|
||||
|
||||
You find a folder labeled "GHOST - Hospital Infrastructure Assessment"
|
||||
|
||||
Inside: network diagrams of hospital IT systems, vulnerability notes, target specifications.
|
||||
|
||||
This is reconnaissance documentation for the St. Catherine's Hospital attack.
|
||||
|
||||
-> initial_reaction
|
||||
|
||||
// ===========================================
|
||||
// INITIAL REACTION
|
||||
// ===========================================
|
||||
|
||||
=== initial_reaction ===
|
||||
|
||||
* [Read through the entire file carefully]
|
||||
-> examine_evidence_thoroughly
|
||||
|
||||
* [This proves James is guilty - document it immediately]
|
||||
-> rush_to_judgment
|
||||
|
||||
* [Look for more context before deciding]
|
||||
-> search_for_context
|
||||
|
||||
// ===========================================
|
||||
// THOROUGH EXAMINATION
|
||||
// ===========================================
|
||||
|
||||
=== examine_evidence_thoroughly ===
|
||||
|
||||
You carefully read through James's documentation.
|
||||
|
||||
FINDINGS:
|
||||
|
||||
Document 1: Hospital network reconnaissance
|
||||
- Detailed network mapping of St. Catherine's Regional Medical Center
|
||||
- Identified vulnerable FTP server (ProFTPD 1.3.5)
|
||||
- Patient monitoring system architecture documented
|
||||
- Critical care unit network topology
|
||||
|
||||
Document 2: Vulnerability assessment
|
||||
- ProFTPD backdoor vulnerability noted (CVE-2010-4652)
|
||||
- Exploitation feasibility: HIGH
|
||||
- Impact assessment: "Critical care systems dependent on network"
|
||||
- Recommendation: "Suitable for CLIENT: GHOST deployment"
|
||||
|
||||
Document 3: Email correspondence
|
||||
TO: victoria.sterling@whitehat-security.com
|
||||
FROM: james.park@whitehat-security.com
|
||||
SUBJECT: St. Catherine's Assessment Complete
|
||||
|
||||
"Victoria - completed the hospital assessment you requested.
|
||||
ProFTPD vulnerability confirmed exploitable. Network architecture
|
||||
documented. Ready for client delivery. -JP"
|
||||
|
||||
~ james_evidence_level = 2
|
||||
|
||||
-> evidence_analysis
|
||||
|
||||
// ===========================================
|
||||
// EVIDENCE ANALYSIS
|
||||
// ===========================================
|
||||
|
||||
=== evidence_analysis ===
|
||||
|
||||
This evidence proves James conducted the reconnaissance that enabled the hospital attack.
|
||||
|
||||
But additional documents reveal more context...
|
||||
|
||||
[You find a second folder: "Personal Notes"]
|
||||
|
||||
Inside: diary entries from James
|
||||
|
||||
ENTRY - May 10, 2024:
|
||||
"Victoria asked me to do a hospital security assessment.
|
||||
Said it was for a 'security awareness client.' I completed
|
||||
the network analysis - it's my job. Professional, thorough work.
|
||||
|
||||
That's what I do. I assess vulnerabilities. That's the business."
|
||||
|
||||
ENTRY - May 20, 2024:
|
||||
"Saw the news about St. Catherine's Hospital. Ransomware attack.
|
||||
Patient deaths. Critical care systems failed.
|
||||
|
||||
That network diagram looked familiar.
|
||||
|
||||
Oh god. Was that...? No. Victoria said it was for security awareness.
|
||||
She wouldn't... would she?"
|
||||
|
||||
ENTRY - May 22, 2024:
|
||||
"I confronted Victoria about St. Catherine's. She said I was
|
||||
being paranoid. Said hospitals get attacked all the time.
|
||||
Said there's no way to know if our assessment was connected.
|
||||
|
||||
But the network topology matches EXACTLY what I documented.
|
||||
|
||||
I think... I think we enabled that attack. I think Victoria
|
||||
sold our reconnaissance to whoever deployed that ransomware.
|
||||
|
||||
I helped kill those people. I didn't know. I didn't KNOW.
|
||||
|
||||
What do I do?"
|
||||
|
||||
ENTRY - May 25, 2024:
|
||||
"Victoria offered me a raise. Significant raise. Said I'm
|
||||
'essential to the business' and she 'trusts my discretion.'
|
||||
|
||||
She knows that I know. And she's paying me to stay quiet.
|
||||
|
||||
I should go to the police. To the FBI. To someone.
|
||||
|
||||
But if I do... I'm admitting I enabled mass casualties. Even
|
||||
if I didn't know, I did the work. My network assessment.
|
||||
My vulnerability report. My recommendations.
|
||||
|
||||
I could go to prison. My career would be over. My family...
|
||||
|
||||
God help me, I'm considering taking the money and saying nothing."
|
||||
|
||||
~ james_evidence_level = 1
|
||||
|
||||
-> moral_complexity
|
||||
|
||||
// ===========================================
|
||||
// MORAL COMPLEXITY REVEALED
|
||||
// ===========================================
|
||||
|
||||
=== moral_complexity ===
|
||||
|
||||
The full picture emerges:
|
||||
|
||||
JAMES'S ROLE:
|
||||
- Conducted hospital reconnaissance (standard pen testing work)
|
||||
- Believed it was for legitimate security awareness client
|
||||
- Did NOT know Victoria would sell intelligence to Ransomware Inc
|
||||
- Discovered the truth AFTER the attack when he saw news coverage
|
||||
|
||||
JAMES'S KNOWLEDGE NOW:
|
||||
- Knows his work enabled the attack
|
||||
- Knows Victoria lied about the client
|
||||
- Suspects Zero Day sold exploit and reconnaissance to attackers
|
||||
- Was offered hush money (raise) to stay quiet
|
||||
|
||||
JAMES'S CURRENT STATE:
|
||||
- Guilty, conflicted, paralyzed by fear
|
||||
- Wants to come forward but fears legal consequences
|
||||
- Taking Victoria's raise = complicity, but easier path
|
||||
- No definitive choice made yet in his notes
|
||||
|
||||
-> james_moral_choice
|
||||
|
||||
// ===========================================
|
||||
// PLAYER'S MORAL CHOICE
|
||||
// ===========================================
|
||||
|
||||
=== james_moral_choice ===
|
||||
|
||||
You have evidence of James's involvement. But the context matters.
|
||||
|
||||
He unknowingly conducted reconnaissance that enabled 6 deaths.
|
||||
Now he knows the truth and is wrestling with whether to come forward.
|
||||
|
||||
What do you do with this evidence?
|
||||
|
||||
* [Protect James - he's a victim too]
|
||||
~ james_fate = "protected"
|
||||
-> choice_protect
|
||||
|
||||
* [Expose James - ignorance doesn't erase complicity]
|
||||
~ james_fate = "exposed"
|
||||
-> choice_expose
|
||||
|
||||
* [Leave the evidence - let James make his own choice]
|
||||
~ james_fate = "ignored"
|
||||
-> choice_leave
|
||||
|
||||
// ===========================================
|
||||
// CHOICE: PROTECT JAMES
|
||||
// ===========================================
|
||||
|
||||
=== choice_protect ===
|
||||
|
||||
You decide to protect James.
|
||||
|
||||
Reasoning: He was deceived by Victoria. He did standard pen testing work
|
||||
under false pretenses. He's guilty, yes, but unwittingly. And he's
|
||||
clearly tormented by what happened.
|
||||
|
||||
Victoria is the one who weaponized his work. She's the real criminal.
|
||||
|
||||
ACTION: You document Victoria's deception but omit James's name from reports.
|
||||
|
||||
In your notes, you write:
|
||||
"Zero Day Syndicate used internal consultants under false pretenses to
|
||||
conduct reconnaissance. Consultants believed work was for legitimate
|
||||
security awareness clients. CEO Victoria Sterling (CIPHER) intentionally
|
||||
misrepresented client identity to obtain hospital reconnaissance."
|
||||
|
||||
This framing protects James while still building the case against Victoria.
|
||||
|
||||
~ player_choice_made = true
|
||||
|
||||
#complete_task:james_choice_made
|
||||
|
||||
-> james_protected_outcome
|
||||
|
||||
=== james_protected_outcome ===
|
||||
|
||||
[You add a handwritten note to James's diary]
|
||||
|
||||
"James - I found your notes. I know what Victoria did to you.
|
||||
|
||||
I'm with SAFETYNET. We're building a case against Zero Day.
|
||||
|
||||
Your reconnaissance work was legitimate pen testing done under
|
||||
false pretenses. You're a victim of Victoria's deception, not
|
||||
a conspirator.
|
||||
|
||||
If you want to come forward voluntarily, contact SAFETYNET.
|
||||
If not, your name won't appear in our reports. That's your choice.
|
||||
|
||||
But Victoria goes down for what she did. -Agent {player_name}"
|
||||
|
||||
{player_approach == "diplomatic":
|
||||
[This aligns with your diplomatic approach - recognize nuance, give people choices]
|
||||
}
|
||||
|
||||
Evidence logged. James's fate: PROTECTED.
|
||||
|
||||
#exit_conversation
|
||||
-> DONE
|
||||
|
||||
// ===========================================
|
||||
// CHOICE: EXPOSE JAMES
|
||||
// ===========================================
|
||||
|
||||
=== choice_expose ===
|
||||
|
||||
You decide to expose James's full involvement.
|
||||
|
||||
Reasoning: Six people died. James's reconnaissance enabled those deaths.
|
||||
Yes, he was deceived about the client, but he still did the work.
|
||||
He documented vulnerable systems, identified exploitation paths, and
|
||||
delivered that intelligence to Victoria.
|
||||
|
||||
And now, knowing the truth, he's considering taking hush money instead
|
||||
of coming forward. That's a choice. That's complicity.
|
||||
|
||||
Ignorance might reduce his guilt, but it doesn't erase it.
|
||||
|
||||
ACTION: You document James's full involvement in your report.
|
||||
|
||||
In your notes, you write:
|
||||
"James Park, senior consultant, conducted hospital reconnaissance that
|
||||
directly enabled St. Catherine's attack. Evidence suggests he was
|
||||
initially deceived about client identity but subsequently learned the
|
||||
truth and accepted financial compensation to remain silent. Recommend
|
||||
federal charges for conspiracy after the fact."
|
||||
|
||||
~ player_choice_made = true
|
||||
|
||||
#complete_task:james_choice_made
|
||||
|
||||
-> james_exposed_outcome
|
||||
|
||||
=== james_exposed_outcome ===
|
||||
|
||||
[You photograph all of James's documents and diary entries]
|
||||
|
||||
Evidence includes:
|
||||
- Hospital reconnaissance files
|
||||
- Vulnerability assessments
|
||||
- Email correspondence with Victoria
|
||||
- Diary entries showing he learned the truth
|
||||
- Notes about accepting Victoria's raise as hush money
|
||||
|
||||
This will likely lead to James's arrest alongside Victoria.
|
||||
|
||||
He may receive a lighter sentence due to initial deception, but he'll
|
||||
face consequences for his role - both the reconnaissance and the coverup.
|
||||
|
||||
{player_approach == "aggressive":
|
||||
[This aligns with your aggressive approach - all ENTROPY operatives face justice]
|
||||
}
|
||||
|
||||
Evidence logged. James's fate: EXPOSED.
|
||||
|
||||
#exit_conversation
|
||||
-> DONE
|
||||
|
||||
// ===========================================
|
||||
// CHOICE: LEAVE IT TO JAMES
|
||||
// ===========================================
|
||||
|
||||
=== choice_leave ===
|
||||
|
||||
You decide to leave the evidence but take no direct action regarding James.
|
||||
|
||||
Reasoning: This is James's moral choice to make, not yours.
|
||||
|
||||
He has all the information. He knows what happened. He knows the
|
||||
consequences. He's wrestling with whether to come forward or accept
|
||||
the hush money.
|
||||
|
||||
You're not his judge. Your job is to stop ENTROPY and bring down
|
||||
Victoria. James's fate should be determined by his own choices, not
|
||||
by your intervention.
|
||||
|
||||
ACTION: You document the evidence objectively without advocating for
|
||||
James's protection or exposure.
|
||||
|
||||
In your notes, you write:
|
||||
"James Park conducted hospital reconnaissance under direction from
|
||||
Victoria Sterling. Diary evidence suggests initial deception regarding
|
||||
client identity, followed by post-attack knowledge and internal
|
||||
conflict regarding disclosure. Status: undetermined pending James's
|
||||
own decisions."
|
||||
|
||||
~ player_choice_made = true
|
||||
|
||||
#complete_task:james_choice_made
|
||||
|
||||
-> james_ignored_outcome
|
||||
|
||||
=== james_ignored_outcome ===
|
||||
|
||||
[You leave the evidence as you found it]
|
||||
|
||||
You don't add any notes. You don't remove any documents. You don't
|
||||
interfere with James's decision-making process.
|
||||
|
||||
If James comes forward to authorities, he'll be treated as a cooperating
|
||||
witness. If he accepts the hush money and stays silent, he'll likely be
|
||||
implicated when Victoria's full operation is exposed.
|
||||
|
||||
Either way, it's his choice. His moral agency. His consequences.
|
||||
|
||||
{player_approach == "cautious":
|
||||
[This aligns with your cautious approach - gather evidence, let the system decide]
|
||||
}
|
||||
|
||||
Evidence logged. James's fate: UNDECIDED (his choice).
|
||||
|
||||
#exit_conversation
|
||||
-> DONE
|
||||
|
||||
// ===========================================
|
||||
// SEARCH FOR CONTEXT PATH (Alternative entry)
|
||||
// ===========================================
|
||||
|
||||
=== search_for_context ===
|
||||
|
||||
You resist the urge to immediately judge James.
|
||||
|
||||
Instead, you search for more context. Were there other files? Other communications?
|
||||
|
||||
[You find James's personal diary - see the entries above]
|
||||
|
||||
-> evidence_analysis
|
||||
|
||||
// ===========================================
|
||||
// RUSH TO JUDGMENT PATH (Alternative entry)
|
||||
// ===========================================
|
||||
|
||||
=== rush_to_judgment ===
|
||||
|
||||
You immediately photograph the hospital reconnaissance files.
|
||||
|
||||
This is proof. James Park conducted the recon that enabled the St. Catherine's attack.
|
||||
|
||||
But wait... there's another folder on the desk.
|
||||
|
||||
* [Document what you have and move on - you found the smoking gun]
|
||||
~ james_evidence_level = 2
|
||||
~ james_fate = "exposed"
|
||||
~ player_choice_made = true
|
||||
|
||||
You photograph the reconnaissance files and email.
|
||||
|
||||
Evidence logged: James Park complicit in hospital attack reconnaissance.
|
||||
|
||||
#complete_task:james_choice_made
|
||||
#exit_conversation
|
||||
-> DONE
|
||||
|
||||
* [Check the other folder - be thorough]
|
||||
-> search_for_context
|
||||
|
||||
// ===========================================
|
||||
// EVENT-TRIGGERED: If James appears during search
|
||||
// ===========================================
|
||||
|
||||
=== james_confrontation ===
|
||||
#speaker:james_park
|
||||
|
||||
[The office door opens - James Park stands in the doorway]
|
||||
|
||||
#display:james-shocked
|
||||
|
||||
James: What... what are you doing in my office?
|
||||
|
||||
[He sees the open files on the desk]
|
||||
|
||||
James: You found the hospital files.
|
||||
|
||||
* [SAFETYNET. You're under investigation.]
|
||||
You: SAFETYNET. You're under investigation for the St. Catherine's Hospital attack.
|
||||
-> james_safetynet_reveal
|
||||
|
||||
* [You helped kill six people]
|
||||
You: St. Catherine's Hospital. Your reconnaissance. Six people died.
|
||||
-> james_guilt_confrontation
|
||||
|
||||
* [Victoria lied to you, didn't she?]
|
||||
You: She lied to you about the client. You thought it was legitimate security work.
|
||||
-> james_sympathy_approach
|
||||
|
||||
=== james_safetynet_reveal ===
|
||||
#speaker:james_park
|
||||
|
||||
#display:james-terrified
|
||||
|
||||
James: [Goes pale] SAFETYNET... oh god.
|
||||
|
||||
James: I didn't know. You have to believe me. I didn't know Victoria was going to sell that intel.
|
||||
|
||||
James: I thought it was for a security awareness client. That's what she told me.
|
||||
|
||||
* [But you know the truth now, and you stayed silent]
|
||||
You: You learned the truth after the attack. And you took her hush money instead of coming forward.
|
||||
James: [Desperate] I was scared! I still am! If I come forward, I'm admitting I enabled mass casualties!
|
||||
-> james_plea
|
||||
|
||||
* [Tell me everything. Cooperate and we can help you.]
|
||||
You: If you cooperate fully, SAFETYNET can consider witness protection. But you need to tell us everything.
|
||||
James: [Hopeful] Everything? Yes. Yes, I'll tell you everything Victoria did.
|
||||
-> james_cooperation
|
||||
|
||||
=== james_guilt_confrontation ===
|
||||
#speaker:james_park
|
||||
|
||||
#display:james-broken
|
||||
|
||||
James: [Voice cracks] I know. I KNOW.
|
||||
|
||||
James: I see their faces every time I close my eyes. I read every article. Every obituary.
|
||||
|
||||
James: Angela Martinez. David Chen. Sarah Thompson. Marcus Gray. Jennifer Wu. Robert Patterson.
|
||||
|
||||
James: I can name them all. The six people my work helped kill.
|
||||
|
||||
* [Then why haven't you come forward?]
|
||||
You: If you feel that guilt, why haven't you gone to the authorities?
|
||||
James: [Ashamed] Because I'm a coward. Because I'm terrified of prison. Because I want to believe it wasn't my fault.
|
||||
-> james_plea
|
||||
|
||||
* [You can still make this right]
|
||||
You: You can still make this right. Testify against Victoria. Help us stop Phase 2.
|
||||
James: [Looks up] Phase 2? There's... there's another attack planned?
|
||||
-> james_cooperation
|
||||
|
||||
=== james_sympathy_approach ===
|
||||
#speaker:james_park
|
||||
|
||||
#display:james-conflicted
|
||||
|
||||
James: [Nods slowly] She lied. Said it was for "security awareness training" at a healthcare client.
|
||||
|
||||
James: I did the work. Good work. Thorough. Professional.
|
||||
|
||||
James: And then I saw the news. And I knew.
|
||||
|
||||
* [You're a victim of her deception]
|
||||
You: Victoria weaponized your legitimate pen testing work. You're a victim too.
|
||||
James: [Quietly] Am I? I still did the reconnaissance. My diagrams. My vulnerability notes.
|
||||
-> james_plea
|
||||
|
||||
* [But you learned the truth and did nothing]
|
||||
You: And when you learned the truth, you took a raise instead of going to the police.
|
||||
James: [Defensive] What was I supposed to do? Confess to enabling mass murder? Destroy my life?
|
||||
-> james_plea
|
||||
|
||||
=== james_plea ===
|
||||
#speaker:james_park
|
||||
|
||||
James: What... what's going to happen to me?
|
||||
|
||||
* [That depends on whether you cooperate]
|
||||
You: Cooperate fully with SAFETYNET. Testify against Victoria. Help us prevent Phase 2.
|
||||
You: Do that, and we can argue for leniency. You were deceived, and you're coming forward voluntarily.
|
||||
James: [Grasps at hope] Leniency. Not immunity, but... less prison time?
|
||||
You: Possibly. But you have to tell us everything. Now.
|
||||
-> james_cooperation
|
||||
|
||||
* [You're going to face justice for your role]
|
||||
You: You enabled six deaths. Even unwittingly, you're complicit. You'll face federal charges.
|
||||
James: [Defeated] I know. I... I know I deserve it.
|
||||
James: Will it help at all that I cooperate? That I testify?
|
||||
You: It might. But that's for prosecutors to decide, not me.
|
||||
-> james_cooperation
|
||||
|
||||
* [That's not my decision to make]
|
||||
You: I'm gathering evidence. Prosecutors will decide charges. But cooperation helps.
|
||||
James: [Nods] I'll cooperate. I'll tell you everything. Just... please remember I didn't know.
|
||||
-> james_cooperation
|
||||
|
||||
=== james_cooperation ===
|
||||
#speaker:james_park
|
||||
|
||||
James: What do you need to know?
|
||||
|
||||
* [Tell me about Victoria's operation]
|
||||
James: She runs the Zero Day exploit marketplace through WhiteHat Security as a front.
|
||||
James: I wasn't supposed to know, but I figured it out. The late-night meetings. The unusual clients.
|
||||
James: She sells zero-day vulnerabilities to... whoever pays. Ransomware groups. State actors. Anyone.
|
||||
-> victoria_operation_details
|
||||
|
||||
* [Tell me about The Architect]
|
||||
James: The Architect? I've seen the name in Victoria's emails. Some kind of ENTROPY leadership figure.
|
||||
James: Victoria takes orders from them. "Architect's priority targets." "Architect's directive."
|
||||
James: I don't know who they are. But Victoria is terrified of them. And that scares me.
|
||||
-> victoria_operation_details
|
||||
|
||||
* [Tell me about Phase 2]
|
||||
James: Phase 2? I don't know details. But I've heard Victoria on calls talking about "infrastructure focus."
|
||||
James: Energy grid. More healthcare SCADA systems. Large-scale attacks.
|
||||
James: She's been under pressure to deliver more reconnaissance. Higher-value targets.
|
||||
-> victoria_operation_details
|
||||
|
||||
=== victoria_operation_details ===
|
||||
#speaker:james_park
|
||||
|
||||
James: Is this enough? Am I helping?
|
||||
|
||||
You: Yes. Keep talking. We'll take a formal statement and get you into protective custody.
|
||||
|
||||
James: [Relief and terror mixed] Protective custody. Because Victoria will kill me if she knows I talked.
|
||||
|
||||
You: SAFETYNET will protect you. But you need to come with me. Now.
|
||||
|
||||
#complete_task:james_choice_made
|
||||
#exit_conversation
|
||||
-> DONE
|
||||
|
||||
// ===========================================
|
||||
// END
|
||||
// ===========================================
|
||||
@@ -0,0 +1,507 @@
|
||||
// ===========================================
|
||||
// Mission 3: Ghost in the Machine
|
||||
// NPC: Security Guard (Night Patrol)
|
||||
// Location: Main hallway patrol route
|
||||
// ===========================================
|
||||
|
||||
// Guard state tracking
|
||||
VAR guard_influence = 0
|
||||
VAR guard_hostile = false
|
||||
VAR guard_suspicious = false
|
||||
VAR player_warned = false
|
||||
VAR player_has_excuse = false
|
||||
VAR bribe_offered = false
|
||||
VAR bribe_accepted = false
|
||||
|
||||
// Topic tracking
|
||||
VAR topic_shift = false
|
||||
VAR topic_building = false
|
||||
VAR topic_victoria = false
|
||||
|
||||
// External variables
|
||||
EXTERNAL player_approach
|
||||
|
||||
// ===========================================
|
||||
// INITIAL ENCOUNTER
|
||||
// ===========================================
|
||||
|
||||
=== start ===
|
||||
#speaker:security_guard
|
||||
|
||||
{guard_hostile:
|
||||
#display:guard-hostile
|
||||
Guard: I told you to leave! I'm calling the police!
|
||||
#exit_conversation
|
||||
#trigger_combat
|
||||
-> DONE
|
||||
}
|
||||
|
||||
{not player_warned:
|
||||
#display:guard-alert
|
||||
[The guard's flashlight beam catches you in the hallway]
|
||||
|
||||
Guard: Hey! What are you doing here? Building's closed for the night.
|
||||
|
||||
~ player_warned = true
|
||||
~ guard_suspicious = true
|
||||
-> first_excuse
|
||||
}
|
||||
|
||||
{player_warned and bribe_accepted:
|
||||
#display:guard-neutral
|
||||
Guard: Make it quick. I'm giving you 10 minutes, then you need to be gone.
|
||||
#exit_conversation
|
||||
-> DONE
|
||||
}
|
||||
|
||||
{player_warned and not guard_hostile and not bribe_accepted:
|
||||
#display:guard-suspicious
|
||||
Guard: You again. I'm keeping my eye on you.
|
||||
-> hub
|
||||
}
|
||||
|
||||
// ===========================================
|
||||
// FIRST EXCUSE
|
||||
// ===========================================
|
||||
|
||||
=== first_excuse ===
|
||||
#speaker:security_guard
|
||||
|
||||
Guard: Well? What's your explanation for being here after hours?
|
||||
|
||||
* [I work here - forgot something at my desk]
|
||||
~ guard_influence -= 5
|
||||
~ guard_suspicious = true
|
||||
You: I work here. I forgot something at my desk earlier.
|
||||
Guard: Really. Which department?
|
||||
-> excuse_work_here
|
||||
|
||||
* [Victoria Sterling asked me to grab some files]
|
||||
~ guard_influence += 10
|
||||
~ player_has_excuse = true
|
||||
You: Victoria Sterling asked me to grab some files. I met with her earlier today about the training program.
|
||||
Guard: [Pauses] Ms. Sterling mentioned a potential recruit... alright.
|
||||
-> excuse_victoria
|
||||
|
||||
* [I'm with building maintenance - late shift]
|
||||
~ guard_influence += 5
|
||||
You: Building maintenance. Late shift. Checking the HVAC system.
|
||||
Guard: Maintenance? I didn't get a work order notice.
|
||||
-> excuse_maintenance
|
||||
|
||||
=== excuse_work_here ===
|
||||
#speaker:security_guard
|
||||
|
||||
You: [Improvise department name]
|
||||
|
||||
Guard: Huh. I don't recognize you, and I know most of the staff.
|
||||
|
||||
Guard: You got ID? Key card?
|
||||
|
||||
* [Show the cloned RFID card]
|
||||
~ guard_influence += 15
|
||||
~ player_has_excuse = true
|
||||
You: [Flash the cloned executive keycard]
|
||||
Guard: [Squints at it] That's... that's an executive-level card. Alright, carry on.
|
||||
Guard: Just surprised to see someone here this late.
|
||||
-> hub
|
||||
|
||||
* [I'm new - just started this week]
|
||||
~ guard_influence += 5
|
||||
You: I'm new. Just started this week. Still getting my permanent ID.
|
||||
Guard: [Skeptical] New hires don't usually have after-hours access...
|
||||
-> suspicious_path
|
||||
|
||||
* [I must have left it at my desk - that's what I came back for]
|
||||
~ guard_influence -= 10
|
||||
~ guard_suspicious = true
|
||||
You: That's what I came back for - my ID badge. Left it at my desk.
|
||||
Guard: So you don't have ID, and you're here after hours. That's a problem.
|
||||
-> suspicious_path
|
||||
|
||||
=== excuse_victoria ===
|
||||
#speaker:security_guard
|
||||
|
||||
Guard: Ms. Sterling does sometimes have late requests.
|
||||
|
||||
Guard: What files are you supposed to grab?
|
||||
|
||||
* [Training program enrollment documents]
|
||||
~ guard_influence += 10
|
||||
You: Training program enrollment documents. From her office.
|
||||
Guard: [Nods] Alright. But be quick about it. And stay in the executive area - don't wander.
|
||||
-> hub
|
||||
|
||||
* [That's confidential - she didn't give me details]
|
||||
~ guard_influence += 5
|
||||
~ guard_suspicious = true
|
||||
You: She didn't specify - said I'd know when I saw them. Confidential materials.
|
||||
Guard: [Suspicious] Confidential, huh. Well, don't take too long.
|
||||
-> hub
|
||||
|
||||
=== excuse_maintenance ===
|
||||
#speaker:security_guard
|
||||
|
||||
Guard: No work order, and you don't look like our usual maintenance crew.
|
||||
|
||||
Guard: I'm going to need to verify this.
|
||||
|
||||
* [Call the maintenance supervisor - here's the number]
|
||||
~ guard_influence += 10
|
||||
You: Call the supervisor. [Give fake number that could sound plausible]
|
||||
Guard: [Looks at number] ...at this hour? Nobody's going to answer.
|
||||
Guard: Fine. But I'm watching you.
|
||||
~ guard_suspicious = true
|
||||
-> hub
|
||||
|
||||
* [Emergency HVAC issue - no time for work orders]
|
||||
~ guard_influence += 5
|
||||
You: Emergency call. Temperature sensors triggered an alert. No time for paperwork.
|
||||
Guard: [Uncertain] I didn't hear about any alerts...
|
||||
~ guard_suspicious = true
|
||||
-> hub
|
||||
|
||||
* [I don't need to explain myself to you]
|
||||
~ guard_influence -= 20
|
||||
~ guard_hostile = true
|
||||
You: I don't have time for this. I have work to do.
|
||||
Guard: [Angry] Wrong answer. You're trespassing. Leave now or I'm calling the cops.
|
||||
-> hostile_confrontation
|
||||
|
||||
=== suspicious_path ===
|
||||
#speaker:security_guard
|
||||
|
||||
Guard: This doesn't add up. You're not making sense.
|
||||
|
||||
* [Offer a bribe - "Maybe we can work something out"]
|
||||
-> offer_bribe
|
||||
|
||||
* [Try to persuade with more lies]
|
||||
~ guard_influence -= 10
|
||||
~ guard_suspicious = true
|
||||
You: [Elaborate on the lie with more details]
|
||||
Guard: [Not buying it] I think you need to leave. Now.
|
||||
-> trespass_warning
|
||||
|
||||
* [Be honest - SAFETYNET investigation]
|
||||
-> safetynet_reveal
|
||||
|
||||
=== offer_bribe ===
|
||||
#speaker:security_guard
|
||||
|
||||
~ bribe_offered = true
|
||||
|
||||
You: Look, maybe we can work something out. I really need to finish something here.
|
||||
|
||||
Guard: [Eyes narrow] Are you trying to bribe me?
|
||||
|
||||
* [Offer $100]
|
||||
You: I can make it worth your while. $100. You didn't see me.
|
||||
-> bribe_response_low
|
||||
|
||||
* [Offer $500]
|
||||
You: $500. Cash. Just give me an hour, then I'm gone.
|
||||
-> bribe_response_high
|
||||
|
||||
* [Back off - "No, I just meant maybe you could make an exception"]
|
||||
~ guard_influence -= 5
|
||||
You: No, no - I just meant, could you make an exception? As a favor?
|
||||
Guard: [Scoffs] No favors. Leave or I'm calling the police.
|
||||
-> trespass_warning
|
||||
|
||||
=== bribe_response_low ===
|
||||
#speaker:security_guard
|
||||
|
||||
Guard: $100? You think I'm going to risk my job for a hundred bucks?
|
||||
|
||||
Guard: Get out. Now.
|
||||
|
||||
~ guard_hostile = true
|
||||
-> trespass_warning
|
||||
|
||||
=== bribe_response_high ===
|
||||
#speaker:security_guard
|
||||
|
||||
Guard: [Long pause]
|
||||
|
||||
Guard: ...$500?
|
||||
|
||||
Guard: [Looks around]
|
||||
|
||||
Guard: One hour. You finish whatever you're doing and you're gone. I never saw you.
|
||||
|
||||
Guard: And if anyone asks, I was on the other side of the building doing rounds.
|
||||
|
||||
~ bribe_accepted = true
|
||||
~ guard_influence += 30
|
||||
~ guard_suspicious = false
|
||||
|
||||
You hand over the cash.
|
||||
|
||||
#give_item:cash:-500
|
||||
|
||||
Guard: One hour. After that, you're trespassing and I'm doing my job.
|
||||
|
||||
#exit_conversation
|
||||
-> DONE
|
||||
|
||||
=== safetynet_reveal ===
|
||||
#speaker:security_guard
|
||||
|
||||
You: I'm with SAFETYNET. This is an active investigation into ENTROPY operations.
|
||||
|
||||
Guard: [Shocked] SAFETYNET? Like... the government agency?
|
||||
|
||||
* [Show credentials - "I need your cooperation"]
|
||||
~ guard_influence += 30
|
||||
~ guard_suspicious = false
|
||||
You: [Show SAFETYNET credentials] I need your cooperation. National security matter.
|
||||
Guard: [Stunned] Holy shit. Yeah, okay, whatever you need.
|
||||
Guard: Ms. Sterling... she's involved in something?
|
||||
-> safetynet_cooperation
|
||||
|
||||
* [This is classified - you can't tell anyone]
|
||||
~ guard_influence += 20
|
||||
You: This is classified. You cannot tell anyone I was here. Not even Victoria Sterling.
|
||||
Guard: [Nervous] Yeah, understood. I... I won't say anything.
|
||||
-> safetynet_cooperation
|
||||
|
||||
* [Help me and you're a patriot. Hinder me and you're an accomplice.]
|
||||
~ guard_influence += 25
|
||||
~ guard_suspicious = false
|
||||
You: Help me, you're helping your country. Get in my way, you're obstructing a federal investigation.
|
||||
Guard: [Intimidated] I'm not getting in the way. Do what you need to do.
|
||||
-> safetynet_cooperation
|
||||
|
||||
=== safetynet_cooperation ===
|
||||
#speaker:security_guard
|
||||
|
||||
Guard: What do you need from me?
|
||||
|
||||
* [Just stay out of my way]
|
||||
You: Just continue your normal patrol. Pretend you didn't see me.
|
||||
Guard: Done. I'll be on the other side of the building if anyone asks.
|
||||
~ guard_influence += 10
|
||||
#exit_conversation
|
||||
-> DONE
|
||||
|
||||
* [Tell me about Victoria Sterling]
|
||||
You: Tell me about Victoria Sterling. What's she like?
|
||||
Guard: Ms. Sterling? She's... intense. Smart. Stays late a lot.
|
||||
Guard: Sometimes has weird visitors. People who don't look like typical corporate types.
|
||||
Guard: But she pays well, so I don't ask questions.
|
||||
-> safetynet_cooperation
|
||||
|
||||
* [Any unusual activity lately?]
|
||||
You: Have you noticed anything unusual? Strange visitors? Odd hours?
|
||||
Guard: There's been more late-night meetings recently. Last week, some guy with a Russian accent.
|
||||
Guard: And Ms. Sterling's been more stressed. Snapping at people.
|
||||
~ guard_influence += 5
|
||||
-> safetynet_cooperation
|
||||
|
||||
+ [That's all I need - continue your patrol]
|
||||
Guard: Roger that. Good luck with... whatever you're investigating.
|
||||
#exit_conversation
|
||||
-> DONE
|
||||
|
||||
// ===========================================
|
||||
// CONVERSATION HUB (After initial encounter)
|
||||
// ===========================================
|
||||
|
||||
=== hub ===
|
||||
|
||||
+ {not topic_shift} [Ask about the guard's shift]
|
||||
-> ask_shift
|
||||
|
||||
+ {not topic_building} [Ask about building layout]
|
||||
-> ask_building
|
||||
|
||||
+ {not topic_victoria} [Ask about Victoria Sterling]
|
||||
-> ask_victoria
|
||||
|
||||
+ {guard_influence >= 20 and not bribe_offered} [Offer a bribe]
|
||||
-> offer_bribe
|
||||
|
||||
+ [Leave conversation]
|
||||
#exit_conversation
|
||||
{guard_suspicious:
|
||||
Guard: I'm keeping an eye on you. Don't make me regret this.
|
||||
}
|
||||
{not guard_suspicious:
|
||||
Guard: Alright. Stay out of trouble.
|
||||
}
|
||||
-> DONE
|
||||
|
||||
=== ask_shift ===
|
||||
#speaker:security_guard
|
||||
|
||||
~ topic_shift = true
|
||||
~ guard_influence += 5
|
||||
|
||||
Guard: Night shift. 10 PM to 6 AM. Quiet most nights.
|
||||
|
||||
{guard_suspicious:
|
||||
Guard: Though tonight's been more eventful than usual.
|
||||
}
|
||||
|
||||
Guard: I do rounds every 15 minutes or so. Check the doors, make sure nobody's where they shouldn't be.
|
||||
|
||||
* [What's your route?]
|
||||
Guard: Main hallway loop. Server room, executive offices, conference area, back to reception.
|
||||
Guard: Why do you want to know my route?
|
||||
~ guard_suspicious = true
|
||||
-> hub
|
||||
|
||||
* [Must be boring work]
|
||||
~ guard_influence += 5
|
||||
Guard: It pays the bills. And it's better than dealing with day shift drama.
|
||||
-> hub
|
||||
|
||||
+ [Continue]
|
||||
-> hub
|
||||
|
||||
=== ask_building ===
|
||||
#speaker:security_guard
|
||||
|
||||
~ topic_building = true
|
||||
~ guard_influence += 5
|
||||
|
||||
Guard: Standard office building. Reception, conference rooms, main hallway with offices.
|
||||
|
||||
Guard: Server room and IT area in the back. Executive offices on the north side.
|
||||
|
||||
{guard_influence >= 15:
|
||||
Guard: Server room's usually locked. Executive-level access only.
|
||||
}
|
||||
|
||||
* [What's in the executive area?]
|
||||
Guard: Ms. Sterling's office, mostly. Some storage. Conference room for high-level meetings.
|
||||
~ guard_influence += 5
|
||||
-> hub
|
||||
|
||||
* [Any restricted areas?]
|
||||
Guard: Server room's the main one. And Ms. Sterling doesn't like people in her office without permission.
|
||||
-> hub
|
||||
|
||||
+ [Continue]
|
||||
-> hub
|
||||
|
||||
=== ask_victoria ===
|
||||
#speaker:security_guard
|
||||
|
||||
~ topic_victoria = true
|
||||
|
||||
Guard: Ms. Sterling? She's the boss. CEO. Runs the whole operation.
|
||||
|
||||
{guard_influence >= 20:
|
||||
Guard: Between you and me, she's a bit intense. Very particular about security protocols.
|
||||
Guard: And the people she meets with sometimes... they don't look like normal corporate clients.
|
||||
}
|
||||
|
||||
{guard_influence < 20:
|
||||
Guard: Why are you asking about Ms. Sterling?
|
||||
~ guard_suspicious = true
|
||||
}
|
||||
|
||||
-> hub
|
||||
|
||||
// ===========================================
|
||||
// HOSTILE PATHS
|
||||
// ===========================================
|
||||
|
||||
=== trespass_warning ===
|
||||
#speaker:security_guard
|
||||
|
||||
#display:guard-hostile
|
||||
|
||||
Guard: I'm giving you one chance. Leave now, or I'm calling the police.
|
||||
|
||||
* [Leave peacefully]
|
||||
You: Alright, I'm going.
|
||||
#exit_conversation
|
||||
#trigger_event:mission_failed_caught
|
||||
-> DONE
|
||||
|
||||
* [Try to run past the guard]
|
||||
Guard: HEY! STOP!
|
||||
#trigger_combat
|
||||
#exit_conversation
|
||||
-> DONE
|
||||
|
||||
* [Attack the guard]
|
||||
#trigger_combat
|
||||
#exit_conversation
|
||||
-> DONE
|
||||
|
||||
=== hostile_confrontation ===
|
||||
#speaker:security_guard
|
||||
|
||||
#display:guard-hostile
|
||||
|
||||
~ guard_hostile = true
|
||||
|
||||
Guard: That's it. I'm calling the cops. Don't move.
|
||||
|
||||
[Guard reaches for radio]
|
||||
|
||||
* [Tackle the guard before he can call]
|
||||
#trigger_combat
|
||||
#exit_conversation
|
||||
-> DONE
|
||||
|
||||
* [Try to talk him down - "Wait, wait!"]
|
||||
Guard: No more talking. You're trespassing.
|
||||
-> trespass_warning
|
||||
|
||||
* [Run]
|
||||
Guard: [Into radio] Security! I have an intruder!
|
||||
#trigger_event:alarm_triggered
|
||||
#exit_conversation
|
||||
-> DONE
|
||||
|
||||
// ===========================================
|
||||
// EVENT-TRIGGERED KNOTS
|
||||
// ===========================================
|
||||
|
||||
// Called when guard detects lockpicking
|
||||
=== on_lockpick_detected ===
|
||||
#speaker:security_guard
|
||||
|
||||
#display:guard-hostile
|
||||
|
||||
Guard: HEY! What are you doing with that lock?!
|
||||
|
||||
~ guard_hostile = true
|
||||
~ guard_suspicious = true
|
||||
|
||||
Guard: You're trying to break in! That's it - I'm calling the police!
|
||||
|
||||
#trigger_combat
|
||||
|
||||
#exit_conversation
|
||||
-> DONE
|
||||
|
||||
// Called when guard detects player in restricted area
|
||||
=== on_restricted_area ===
|
||||
#speaker:security_guard
|
||||
|
||||
#display:guard-suspicious
|
||||
|
||||
Guard: You're not supposed to be back here. This area is restricted.
|
||||
|
||||
{player_has_excuse and guard_influence >= 10:
|
||||
Guard: ...but I guess if Ms. Sterling sent you. Be quick.
|
||||
#exit_conversation
|
||||
-> DONE
|
||||
}
|
||||
|
||||
{not player_has_excuse or guard_influence < 10:
|
||||
Guard: I need you to return to the main area. Now.
|
||||
~ guard_suspicious = true
|
||||
#exit_conversation
|
||||
-> DONE
|
||||
}
|
||||
|
||||
// ===========================================
|
||||
// END
|
||||
// ===========================================
|
||||
@@ -0,0 +1,329 @@
|
||||
// ===========================================
|
||||
// Mission 3: Ghost in the Machine
|
||||
// NPC: Receptionist (Daytime)
|
||||
// Location: Reception lobby
|
||||
// ===========================================
|
||||
|
||||
// State tracking
|
||||
VAR receptionist_influence = 0
|
||||
VAR badge_received = false
|
||||
VAR topic_victoria = false
|
||||
VAR topic_company_history = false
|
||||
VAR topic_james = false
|
||||
VAR pin_hint_given = false
|
||||
|
||||
// ===========================================
|
||||
// INITIAL GREETING
|
||||
// ===========================================
|
||||
|
||||
=== start ===
|
||||
#speaker:receptionist
|
||||
|
||||
{not badge_received:
|
||||
#display:receptionist-professional
|
||||
|
||||
Receptionist: Good afternoon! You must be {player_name}.
|
||||
|
||||
Receptionist: Ms. Sterling mentioned you'd be coming in for a consultation.
|
||||
|
||||
Receptionist: Let me get you checked in.
|
||||
|
||||
-> badge_process
|
||||
}
|
||||
|
||||
{badge_received:
|
||||
#display:receptionist-friendly
|
||||
|
||||
Receptionist: Hi again! How's your visit going?
|
||||
|
||||
-> hub
|
||||
}
|
||||
|
||||
// ===========================================
|
||||
// BADGE CHECK-IN PROCESS
|
||||
// ===========================================
|
||||
|
||||
=== badge_process ===
|
||||
#speaker:receptionist
|
||||
|
||||
Receptionist: I just need you to sign in here, and I'll print you a visitor badge.
|
||||
|
||||
[She slides a clipboard across the desk]
|
||||
|
||||
Receptionist: Ms. Sterling's in the conference room. Second door on the right down that hallway.
|
||||
|
||||
* [Thank you - sign in]
|
||||
~ badge_received = true
|
||||
~ receptionist_influence += 5
|
||||
You sign the visitor log.
|
||||
|
||||
Receptionist: Here's your badge. Please keep it visible while you're in the building.
|
||||
|
||||
#give_item:visitor_badge
|
||||
|
||||
Receptionist: And welcome to WhiteHat Security!
|
||||
-> first_impression_choice
|
||||
|
||||
* [Ask about the company first]
|
||||
You: Before I meet with Victoria, can you tell me a bit about WhiteHat Security?
|
||||
~ receptionist_influence += 10
|
||||
Receptionist: Of course! We're a cybersecurity research and penetration testing firm.
|
||||
-> company_overview
|
||||
|
||||
* [Just sign quickly and head to meeting]
|
||||
~ badge_received = true
|
||||
You quickly sign the log.
|
||||
|
||||
Receptionist: Here's your badge. Ms. Sterling's waiting in the conference room.
|
||||
|
||||
#give_item:visitor_badge
|
||||
#exit_conversation
|
||||
-> DONE
|
||||
|
||||
=== company_overview ===
|
||||
#speaker:receptionist
|
||||
|
||||
Receptionist: WhiteHat Security was founded in 2010 by Victoria Sterling.
|
||||
|
||||
Receptionist: We do penetration testing, security audits, and advanced research training.
|
||||
|
||||
{receptionist_influence >= 10:
|
||||
Receptionist: We also have a research division - Zero Day training programs. Very cutting-edge stuff.
|
||||
}
|
||||
|
||||
~ topic_company_history = true
|
||||
~ pin_hint_given = true
|
||||
|
||||
* [2010 founding - that's the PIN to the safe!]
|
||||
[Mental note: 2010 might be useful...]
|
||||
~ receptionist_influence += 5
|
||||
You: 2010, interesting. Victoria must be proud of how far the company's come.
|
||||
Receptionist: Oh, very much so. She has a whole display of awards in her office.
|
||||
-> badge_process
|
||||
|
||||
* [What kind of training programs?]
|
||||
You: What kind of training does Zero Day offer?
|
||||
Receptionist: [Slightly evasive] Advanced penetration testing techniques. For serious researchers.
|
||||
Receptionist: Ms. Sterling is very selective about who gets into the program.
|
||||
~ receptionist_influence += 5
|
||||
-> badge_process
|
||||
|
||||
=== first_impression_choice ===
|
||||
#speaker:receptionist
|
||||
|
||||
Receptionist: Is this your first time working with a cybersecurity firm?
|
||||
|
||||
* [I've done some freelance pen testing]
|
||||
~ receptionist_influence += 10
|
||||
You: I've done freelance penetration testing before. Looking to level up.
|
||||
Receptionist: Well, you're in the right place! Ms. Sterling is brilliant.
|
||||
-> hub
|
||||
|
||||
* [Yes, I'm new to the field]
|
||||
~ receptionist_influence += 5
|
||||
You: Relatively new, yes. Still learning.
|
||||
Receptionist: That's exciting! Everyone here is very passionate about security.
|
||||
-> hub
|
||||
|
||||
* [I need to get to the meeting]
|
||||
You: I should head to the conference room. Don't want to keep Victoria waiting.
|
||||
Receptionist: Of course! Down the hall, second door on the right.
|
||||
#exit_conversation
|
||||
-> DONE
|
||||
|
||||
// ===========================================
|
||||
// CONVERSATION HUB
|
||||
// ===========================================
|
||||
|
||||
=== hub ===
|
||||
|
||||
+ {not topic_victoria} [Ask about Victoria Sterling]
|
||||
-> ask_victoria
|
||||
|
||||
+ {not topic_james} [Ask about other employees]
|
||||
-> ask_james
|
||||
|
||||
+ {not topic_company_history and not pin_hint_given} [Ask about company history]
|
||||
-> ask_company_history
|
||||
|
||||
+ {receptionist_influence >= 15} [Ask about the building layout]
|
||||
-> ask_building_layout
|
||||
|
||||
+ [End conversation]
|
||||
#exit_conversation
|
||||
Receptionist: Have a great visit!
|
||||
-> DONE
|
||||
|
||||
// ===========================================
|
||||
// CONVERSATION TOPICS
|
||||
// ===========================================
|
||||
|
||||
=== ask_victoria ===
|
||||
#speaker:receptionist
|
||||
|
||||
~ topic_victoria = true
|
||||
~ receptionist_influence += 5
|
||||
|
||||
Receptionist: Ms. Sterling is amazing. She's a DEFCON speaker, published researcher, the whole package.
|
||||
|
||||
Receptionist: And she really cares about the work. Sometimes she's here until midnight.
|
||||
|
||||
{receptionist_influence >= 20:
|
||||
Receptionist: Between you and me, she can be intense. Very particular about her research.
|
||||
Receptionist: But she's fair. If you're good at what you do, she'll respect you.
|
||||
}
|
||||
|
||||
* [She sounds dedicated]
|
||||
~ receptionist_influence += 5
|
||||
You: She sounds very dedicated to the work.
|
||||
Receptionist: Absolutely. Cybersecurity is her passion.
|
||||
-> hub
|
||||
|
||||
* [Midnight? That's late]
|
||||
You: Midnight work sessions? That's some serious dedication.
|
||||
Receptionist: Yeah, sometimes I see her car still in the lot when I leave at 6.
|
||||
Receptionist: She has a whole setup in her office - coffee maker, the works.
|
||||
~ receptionist_influence += 5
|
||||
-> hub
|
||||
|
||||
+ [Continue]
|
||||
-> hub
|
||||
|
||||
=== ask_james ===
|
||||
#speaker:receptionist
|
||||
|
||||
~ topic_james = true
|
||||
~ receptionist_influence += 5
|
||||
|
||||
Receptionist: Well, there's James Park - he's one of our senior consultants.
|
||||
|
||||
Receptionist: Really nice guy. Always brings donuts on Fridays.
|
||||
|
||||
{receptionist_influence >= 15:
|
||||
Receptionist: He's been a bit stressed lately, though. I think he's working on a big project.
|
||||
}
|
||||
|
||||
* [What kind of work does James do?]
|
||||
You: What kind of consulting work does James do?
|
||||
Receptionist: Penetration testing, mostly. He goes on-site to client locations for security audits.
|
||||
Receptionist: He's been with WhiteHat since the beginning - 2010, I think.
|
||||
~ receptionist_influence += 5
|
||||
-> hub
|
||||
|
||||
* [Where's his office?]
|
||||
You: Where does James work? In case I run into him.
|
||||
Receptionist: His office is down the main hallway, past the server room.
|
||||
Receptionist: Though he's usually out at client sites during the day.
|
||||
-> hub
|
||||
|
||||
+ [Continue]
|
||||
-> hub
|
||||
|
||||
=== ask_company_history ===
|
||||
#speaker:receptionist
|
||||
|
||||
~ topic_company_history = true
|
||||
~ pin_hint_given = true
|
||||
~ receptionist_influence += 5
|
||||
|
||||
Receptionist: WhiteHat Security was founded in 2010 by Victoria Sterling.
|
||||
|
||||
Receptionist: There's actually a plaque right over there [gestures to wall] with the founding year and mission statement.
|
||||
|
||||
Receptionist: "Security Through Economics" - that's our motto.
|
||||
|
||||
* [What does "Security Through Economics" mean?]
|
||||
You: That's an unusual motto. What does it mean?
|
||||
Receptionist: [Uncertain] Something about market-driven security research? Ms. Sterling explains it better than I can.
|
||||
Receptionist: She has strong opinions about how the security industry should work.
|
||||
~ receptionist_influence += 5
|
||||
-> hub
|
||||
|
||||
* [2010 - I'll remember that]
|
||||
[Mental note: 2010 might be important...]
|
||||
You: 2010. That's a significant year for the company then.
|
||||
Receptionist: Absolutely! Ms. Sterling is very proud of everything we've built since then.
|
||||
~ receptionist_influence += 5
|
||||
-> hub
|
||||
|
||||
+ [Continue]
|
||||
-> hub
|
||||
|
||||
=== ask_building_layout ===
|
||||
#speaker:receptionist
|
||||
|
||||
~ receptionist_influence += 5
|
||||
|
||||
Receptionist: Sure! It's a pretty straightforward layout.
|
||||
|
||||
Receptionist: Reception here, conference rooms to the right, main offices down the central hallway.
|
||||
|
||||
Receptionist: Server room and IT area in the back - that's usually locked, executive access only.
|
||||
|
||||
Receptionist: And Ms. Sterling's office is in the executive wing on the north side.
|
||||
|
||||
* [What about after hours?]
|
||||
You: Is anyone here after business hours?
|
||||
Receptionist: Usually just Ms. Sterling if she's working late. And we have a night security guard - makes rounds to keep the place safe.
|
||||
~ receptionist_influence += 5
|
||||
-> hub
|
||||
|
||||
* [Executive access for the server room?]
|
||||
You: Executive access for the server room - is that a key card system?
|
||||
Receptionist: RFID badges. Ms. Sterling and the senior staff have access. Security precaution.
|
||||
~ receptionist_influence += 5
|
||||
-> hub
|
||||
|
||||
+ [That's helpful, thanks]
|
||||
-> hub
|
||||
|
||||
// ===========================================
|
||||
// EVENT-TRIGGERED KNOTS
|
||||
// ===========================================
|
||||
|
||||
// Called when player returns to reception during daytime
|
||||
=== daytime_return ===
|
||||
#speaker:receptionist
|
||||
|
||||
#display:receptionist-friendly
|
||||
|
||||
Receptionist: How did your meeting with Ms. Sterling go?
|
||||
|
||||
* [Very well - she's impressive]
|
||||
~ receptionist_influence += 10
|
||||
You: It went great. Victoria is very impressive. I learned a lot.
|
||||
Receptionist: I'm so glad! She has that effect on people.
|
||||
#exit_conversation
|
||||
-> DONE
|
||||
|
||||
* [Interesting conversation]
|
||||
You: It was... illuminating. She has strong ideas about security.
|
||||
Receptionist: [Laughs] That's one way to put it! She definitely has opinions.
|
||||
~ receptionist_influence += 5
|
||||
#exit_conversation
|
||||
-> DONE
|
||||
|
||||
* [I need to think about it]
|
||||
You: I need some time to consider the training program. Big decision.
|
||||
Receptionist: Of course! Take your time. Let us know if you have any questions.
|
||||
#exit_conversation
|
||||
-> DONE
|
||||
|
||||
// Called if player tries to access restricted areas during daytime
|
||||
=== restricted_area_daytime ===
|
||||
#speaker:receptionist
|
||||
|
||||
Receptionist: Oh, I'm sorry - that area is for employees only.
|
||||
|
||||
Receptionist: Please stay in the public areas. Conference rooms and the main hallway are open to visitors.
|
||||
|
||||
{receptionist_influence >= 20:
|
||||
Receptionist: If you need access to something specific, Ms. Sterling can authorize it.
|
||||
}
|
||||
|
||||
#exit_conversation
|
||||
-> DONE
|
||||
|
||||
// ===========================================
|
||||
// END
|
||||
// ===========================================
|
||||
@@ -0,0 +1,468 @@
|
||||
// ===========================================
|
||||
// Mission 3: Ghost in the Machine
|
||||
// PHONE NPC: Agent 0x99 (Handler Support)
|
||||
// ===========================================
|
||||
|
||||
// Hint tracking
|
||||
VAR hint_rfid_cloning_given = false
|
||||
VAR hint_lockpicking_given = false
|
||||
VAR hint_password_given = false
|
||||
VAR hint_encoding_given = false
|
||||
VAR hint_network_recon_given = false
|
||||
|
||||
// Progress tracking
|
||||
VAR rooms_discovered = 0
|
||||
VAR objectives_mentioned = 0
|
||||
|
||||
// External variables
|
||||
EXTERNAL player_name
|
||||
EXTERNAL player_approach
|
||||
EXTERNAL objectives_completed
|
||||
EXTERNAL stealth_rating
|
||||
|
||||
// ===========================================
|
||||
// MAIN PHONE INTERFACE
|
||||
// ===========================================
|
||||
|
||||
=== start ===
|
||||
#speaker:agent_0x99
|
||||
|
||||
[Secure phone connection established]
|
||||
|
||||
Agent 0x99: {player_name}, what do you need?
|
||||
|
||||
-> hub
|
||||
|
||||
// ===========================================
|
||||
// SUPPORT HUB
|
||||
// ===========================================
|
||||
|
||||
=== hub ===
|
||||
|
||||
+ [Request hint]
|
||||
-> provide_hint
|
||||
|
||||
+ [Report progress]
|
||||
-> report_progress
|
||||
|
||||
+ [Ask about mission details]
|
||||
-> mission_details
|
||||
|
||||
+ [End call]
|
||||
#exit_conversation
|
||||
Agent 0x99: Stay safe. Call if you need backup.
|
||||
-> DONE
|
||||
|
||||
// ===========================================
|
||||
// HINT SYSTEM
|
||||
// ===========================================
|
||||
|
||||
=== provide_hint ===
|
||||
#speaker:agent_0x99
|
||||
|
||||
Agent 0x99: What do you need help with?
|
||||
|
||||
+ {not hint_rfid_cloning_given} [RFID cloning mechanics]
|
||||
-> hint_rfid_cloning
|
||||
|
||||
+ {not hint_lockpicking_given} [Lockpicking advice]
|
||||
-> hint_lockpicking
|
||||
|
||||
+ {not hint_password_given} [Password finding]
|
||||
-> hint_password
|
||||
|
||||
+ {not hint_encoding_given} [Decoding messages]
|
||||
-> hint_encoding
|
||||
|
||||
+ {not hint_network_recon_given} [Network reconnaissance]
|
||||
-> hint_network_recon
|
||||
|
||||
+ [General guidance]
|
||||
-> hint_general
|
||||
|
||||
+ [Never mind]
|
||||
-> hub
|
||||
|
||||
=== hint_rfid_cloning ===
|
||||
#speaker:agent_0x99
|
||||
|
||||
~ hint_rfid_cloning_given = true
|
||||
|
||||
Agent 0x99: RFID cloning - get within 2 meters of Victoria for about 10 seconds.
|
||||
|
||||
Agent 0x99: The device will vibrate when complete. Keep her talking while it works.
|
||||
|
||||
Agent 0x99: Best moment: when you're both standing near the whiteboard or looking at documents together.
|
||||
|
||||
+ [Got it]
|
||||
Agent 0x99: Natural movement. Don't make it obvious.
|
||||
-> hub
|
||||
|
||||
+ [What if she notices?]
|
||||
Agent 0x99: Play curious recruit. Ask about the training network. She loves talking about her philosophy.
|
||||
-> hub
|
||||
|
||||
=== hint_lockpicking ===
|
||||
#speaker:agent_0x99
|
||||
|
||||
~ hint_lockpicking_given = true
|
||||
|
||||
Agent 0x99: Lockpicking takes time and makes noise. Watch for the guard patrol route.
|
||||
|
||||
Agent 0x99: Wait until the guard is at the far end of the patrol before starting.
|
||||
|
||||
Agent 0x99: If you have lockpicks in inventory, approach any locked door and interact.
|
||||
|
||||
+ [Where can I find lockpicks?]
|
||||
Agent 0x99: Check supply closets, maintenance areas, or IT cabinets. Common hiding spots.
|
||||
-> hub
|
||||
|
||||
+ [Understood]
|
||||
-> hub
|
||||
|
||||
=== hint_password ===
|
||||
#speaker:agent_0x99
|
||||
|
||||
~ hint_password_given = true
|
||||
|
||||
Agent 0x99: People hide password hints everywhere. Sticky notes, desk organizers, whiteboards.
|
||||
|
||||
Agent 0x99: For Victoria's computer, look for personal details. Founding year of WhiteHat Security? Significant dates?
|
||||
|
||||
Agent 0x99: The reception area often has company history. Plaques, awards, founding information.
|
||||
|
||||
+ [I'll look around more carefully]
|
||||
Agent 0x99: Thorough search pays off. Don't rush past obvious clues.
|
||||
-> hub
|
||||
|
||||
=== hint_encoding ===
|
||||
#speaker:agent_0x99
|
||||
|
||||
~ hint_encoding_given = true
|
||||
|
||||
Agent 0x99: CyberChef workstation in the server room handles decoding.
|
||||
|
||||
Agent 0x99: Common encodings: Base64 (looks random but uses A-Z, a-z, 0-9, +, /), ROT13 (looks like scrambled English), Hex (pairs of 0-9, A-F).
|
||||
|
||||
Agent 0x99: If you decode something and it still looks encoded? Multi-layer encoding. Decode again.
|
||||
|
||||
+ [What's the difference between encoding and encryption?]
|
||||
Agent 0x99: Encoding is just transformation - no secret key needed. Anyone can reverse it if they know the method.
|
||||
Agent 0x99: Encryption requires a key. Much more secure, much harder to break.
|
||||
Agent 0x99: ENTROPY uses encoding for speed. Encryption is too slow for operational comms.
|
||||
-> hub
|
||||
|
||||
+ [Thanks for the primer]
|
||||
-> hub
|
||||
|
||||
=== hint_network_recon ===
|
||||
#speaker:agent_0x99
|
||||
|
||||
~ hint_network_recon_given = true
|
||||
|
||||
Agent 0x99: The VM terminal in the server room connects to Zero Day's training network - 192.168.100.0/24.
|
||||
|
||||
Agent 0x99: Start with nmap for network scanning. Then netcat for banner grabbing. Then service-specific tools.
|
||||
|
||||
Agent 0x99: Each flag you capture represents intercepted ENTROPY intelligence. Submit them at the drop-site terminal.
|
||||
|
||||
+ [What's the target priority?]
|
||||
Agent 0x99: Network scan first to map the environment. Then FTP and HTTP for client intel. distcc is the critical one - that's where the operational logs are.
|
||||
-> hub
|
||||
|
||||
+ [Got it]
|
||||
-> hub
|
||||
|
||||
=== hint_general ===
|
||||
#speaker:agent_0x99
|
||||
|
||||
{player_approach == "cautious":
|
||||
Agent 0x99: Your methodical approach is smart. Document everything, connect the dots.
|
||||
}
|
||||
|
||||
{player_approach == "aggressive":
|
||||
Agent 0x99: Speed is good, but don't miss critical evidence. The hospital connection proof is vital.
|
||||
}
|
||||
|
||||
{player_approach == "diplomatic":
|
||||
Agent 0x99: Stay flexible. Read situations. Trust your judgment.
|
||||
}
|
||||
|
||||
Agent 0x99: Remember - Victoria's keycard gets you server room access. Network recon gets you digital evidence. Physical search gets you documents.
|
||||
|
||||
Agent 0x99: All three together make the case.
|
||||
|
||||
-> hub
|
||||
|
||||
// ===========================================
|
||||
// PROGRESS REPORT
|
||||
// ===========================================
|
||||
|
||||
=== report_progress ===
|
||||
#speaker:agent_0x99
|
||||
|
||||
~ objectives_mentioned += 1
|
||||
|
||||
Agent 0x99: Give me a status update.
|
||||
|
||||
{objectives_completed == 0:
|
||||
Agent 0x99: No objectives complete yet. Have you met with Victoria?
|
||||
Agent 0x99: Priority one: clone her keycard. Everything else depends on server room access.
|
||||
}
|
||||
|
||||
{objectives_completed == 1:
|
||||
Agent 0x99: One objective down. Good start. Keep moving.
|
||||
}
|
||||
|
||||
{objectives_completed >= 2 and objectives_completed < 4:
|
||||
Agent 0x99: {objectives_completed} objectives complete. You're making progress.
|
||||
}
|
||||
|
||||
{objectives_completed >= 4:
|
||||
Agent 0x99: Excellent work. {objectives_completed} objectives complete. You're building a solid case.
|
||||
}
|
||||
|
||||
{stealth_rating > 80:
|
||||
Agent 0x99: And I see you're staying ghost. Perfect operational security.
|
||||
}
|
||||
|
||||
{stealth_rating < 50:
|
||||
Agent 0x99: You're making some noise. Guard is getting suspicious. Tighten up your stealth.
|
||||
}
|
||||
|
||||
+ [Continue mission]
|
||||
Agent 0x99: Roger that. Call if you need support.
|
||||
-> hub
|
||||
|
||||
=== mission_details ===
|
||||
#speaker:agent_0x99
|
||||
|
||||
Agent 0x99: Mission objectives recap:
|
||||
|
||||
Agent 0x99: Primary - Clone Victoria's RFID keycard, access server room, gather network intelligence, find physical evidence linking Zero Day to St. Catherine's.
|
||||
|
||||
Agent 0x99: Optional - Collect LORE fragments for deeper intelligence on ENTROPY's structure.
|
||||
|
||||
+ [Remind me about Victoria]
|
||||
Agent 0x99: Victoria Sterling, CEO. Codename "Cipher." True believer in free market vulnerability research.
|
||||
Agent 0x99: Smart, charismatic, ideologically committed. Don't underestimate her.
|
||||
-> hub
|
||||
|
||||
+ [What about The Architect?]
|
||||
Agent 0x99: The Architect is ENTROPY's leadership figure. We don't have identity confirmation yet.
|
||||
Agent 0x99: But evidence suggests they're coordinating all the cells. Zero Day, Ransomware Inc, Social Fabric, all of them.
|
||||
Agent 0x99: Any intel you find on The Architect is gold.
|
||||
-> hub
|
||||
|
||||
+ [Got it]
|
||||
-> hub
|
||||
|
||||
// ===========================================
|
||||
// EVENT-TRIGGERED KNOTS
|
||||
// ===========================================
|
||||
|
||||
// Called when player picks up RFID cloner
|
||||
=== on_rfid_cloner_pickup ===
|
||||
#speaker:agent_0x99
|
||||
|
||||
Agent 0x99: Good, you've got the RFID cloner.
|
||||
|
||||
Agent 0x99: When you meet Victoria, get within 2 meters for 10 seconds. Keep her engaged in conversation.
|
||||
|
||||
Agent 0x99: The device is pocket-sized. She won't notice it unless you're obvious about it.
|
||||
|
||||
#exit_conversation
|
||||
-> DONE
|
||||
|
||||
// Called when player picks up lockpick
|
||||
=== on_lockpick_pickup ===
|
||||
#speaker:agent_0x99
|
||||
|
||||
Agent 0x99: Lockpick acquired. That'll let you bypass physical locks.
|
||||
|
||||
Agent 0x99: Remember - lockpicking makes noise and takes time. Watch for patrols.
|
||||
|
||||
#exit_conversation
|
||||
-> DONE
|
||||
|
||||
// Called when player completes RFID cloning
|
||||
=== on_rfid_clone_success ===
|
||||
#speaker:agent_0x99
|
||||
|
||||
Agent 0x99: Excellent. Victoria's keycard cloned successfully.
|
||||
|
||||
Agent 0x99: You now have executive-level access. Server room is yours after hours.
|
||||
|
||||
Agent 0x99: Wait for nighttime, then infiltrate. That's when the real work begins.
|
||||
|
||||
#exit_conversation
|
||||
-> DONE
|
||||
|
||||
// Called when player is detected by guard
|
||||
=== on_player_detected ===
|
||||
#speaker:agent_0x99
|
||||
|
||||
Agent 0x99: You've been spotted! Talk your way out or prepare for confrontation.
|
||||
|
||||
Agent 0x99: If things go sideways, abort and exfil. We can try again.
|
||||
|
||||
#exit_conversation
|
||||
-> DONE
|
||||
|
||||
// Called when player discovers new room
|
||||
=== on_room_discovered ===
|
||||
#speaker:agent_0x99
|
||||
|
||||
~ rooms_discovered += 1
|
||||
|
||||
{rooms_discovered == 1:
|
||||
Agent 0x99: New room accessed. Good progress. Search thoroughly.
|
||||
}
|
||||
|
||||
{rooms_discovered == 3:
|
||||
Agent 0x99: You're covering ground. Stay systematic - don't miss critical evidence.
|
||||
}
|
||||
|
||||
{rooms_discovered >= 5:
|
||||
Agent 0x99: Impressive exploration. You should have a complete picture of the facility now.
|
||||
}
|
||||
|
||||
#exit_conversation
|
||||
-> DONE
|
||||
|
||||
// Called when player completes lockpicking minigame
|
||||
=== on_lockpick_success ===
|
||||
#speaker:agent_0x99
|
||||
|
||||
Agent 0x99: Clean work on that lock. Moving like a pro.
|
||||
|
||||
{stealth_rating > 70:
|
||||
Agent 0x99: And you're staying quiet. Textbook infiltration.
|
||||
}
|
||||
|
||||
#exit_conversation
|
||||
-> DONE
|
||||
|
||||
// Called after distcc flag submitted (M2 REVELATION)
|
||||
=== m2_revelation_call ===
|
||||
#speaker:agent_0x99
|
||||
|
||||
[Agent 0x99's avatar appears - serious expression]
|
||||
|
||||
Agent 0x99: {player_name}, I just saw the distcc operational logs you submitted.
|
||||
|
||||
Agent 0x99: This is... this is the smoking gun.
|
||||
|
||||
Agent 0x99: ProFTPD exploit. $12,500. Sold to GHOST. Deployed at St. Catherine's Hospital.
|
||||
|
||||
Agent 0x99: Victoria Sterling personally authorized the sale. "Cipher" signature on the approval.
|
||||
|
||||
[Pause]
|
||||
|
||||
Agent 0x99: Six people died in that attack. Six people.
|
||||
|
||||
Agent 0x99: Four in critical care when patient monitoring failed. Two during emergency surgery when systems crashed.
|
||||
|
||||
* [We have them now]
|
||||
You: This is direct causation. Zero Day → GHOST → St. Catherine's. We can prosecute.
|
||||
Agent 0x99: Yes. Federal charges. ENTROPY operational conspiracy. This evidence is ironclad.
|
||||
-> m2_revelation_impact
|
||||
|
||||
* [Victoria knew exactly what would happen]
|
||||
You: The healthcare premium. They charged extra BECAUSE hospitals can't defend themselves.
|
||||
Agent 0x99: Calculated exploitation of vulnerability. It's not hacking - it's murder for profit.
|
||||
-> m2_revelation_impact
|
||||
|
||||
* [This changes everything]
|
||||
You: We're not just disrupting a hacking group. This is mass casualty prosecution.
|
||||
Agent 0x99: Yes. The stakes just went up. Way up.
|
||||
-> m2_revelation_impact
|
||||
|
||||
=== m2_revelation_impact ===
|
||||
#speaker:agent_0x99
|
||||
|
||||
Agent 0x99: Keep gathering evidence. Physical documents, LORE fragments, anything that builds the case.
|
||||
|
||||
Agent 0x99: And {player_name}? The Architect's directive mentioned Phase 2.
|
||||
|
||||
Agent 0x99: 50,000 patient treatment delays. 1.2 million without power in winter.
|
||||
|
||||
Agent 0x99: If St. Catherine's was Phase 1... we need to stop Phase 2 before it begins.
|
||||
|
||||
* [I'll find everything I can]
|
||||
Agent 0x99: I know you will. This is what we trained for.
|
||||
-> m2_revelation_end
|
||||
|
||||
* [We're bringing them all down]
|
||||
Agent 0x99: Damn right we are. For those six people. And the thousands more at risk.
|
||||
-> m2_revelation_end
|
||||
|
||||
=== m2_revelation_end ===
|
||||
#speaker:agent_0x99
|
||||
|
||||
Agent 0x99: Finish the mission. Document everything. We'll debrief when you're out.
|
||||
|
||||
Agent 0x99: And {player_name}? Be careful. Victoria might seem reasonable, but she authorized that hospital attack.
|
||||
|
||||
Agent 0x99: Don't forget what she's capable of.
|
||||
|
||||
#exit_conversation
|
||||
-> DONE
|
||||
|
||||
// Called when player finds exploit catalog LORE
|
||||
=== on_exploit_catalog_found ===
|
||||
#speaker:agent_0x99
|
||||
|
||||
Agent 0x99: The exploit catalog... jesus.
|
||||
|
||||
Agent 0x99: $847,000 in Q3 alone. 23 exploits sold.
|
||||
|
||||
Agent 0x99: This isn't a hacking group. It's an industrial operation.
|
||||
|
||||
#exit_conversation
|
||||
-> DONE
|
||||
|
||||
// Called when player finds Architect's directive LORE
|
||||
=== on_architect_directive_found ===
|
||||
#speaker:agent_0x99
|
||||
|
||||
Agent 0x99: You found The Architect's directive. This is massive.
|
||||
|
||||
Agent 0x99: Phase 2 targeting. 427 energy substations. 15 hospitals.
|
||||
|
||||
Agent 0x99: And the cross-cell coordination - Zero Day, Ransomware Inc, Social Fabric, Critical Mass all working together.
|
||||
|
||||
Agent 0x99: This isn't isolated cells anymore. This is a coordinated network.
|
||||
|
||||
Agent 0x99: We need to bring this to SAFETYNET Command immediately.
|
||||
|
||||
#exit_conversation
|
||||
-> DONE
|
||||
|
||||
// Called when guard becomes hostile
|
||||
=== on_guard_hostile ===
|
||||
#speaker:agent_0x99
|
||||
|
||||
Agent 0x99: Guard is hostile! Get to safe distance or prepare to talk your way out.
|
||||
|
||||
Agent 0x99: If combat starts, disable and escape. Avoid lethal force if possible.
|
||||
|
||||
#exit_conversation
|
||||
-> DONE
|
||||
|
||||
// Called when player accesses Victoria's computer
|
||||
=== on_victoria_computer_accessed ===
|
||||
#speaker:agent_0x99
|
||||
|
||||
Agent 0x99: You're in Victoria's computer. Good work.
|
||||
|
||||
Agent 0x99: Look for client lists, transaction records, communications with other ENTROPY cells.
|
||||
|
||||
Agent 0x99: Anything linking her directly to The Architect is priority intelligence.
|
||||
|
||||
#exit_conversation
|
||||
-> DONE
|
||||
|
||||
// ===========================================
|
||||
// END
|
||||
// ===========================================
|
||||
Reference in New Issue
Block a user