From 4ed4e6a8a4985f8bbce7a91b5628f0f89ff4132c Mon Sep 17 00:00:00 2001 From: Claude Date: Sat, 10 Jan 2026 17:36:58 +0000 Subject: [PATCH] Add Mission 7 Ink dialogue files and development status - Created 9 Ink dialogue files for all mission branches - Opening briefing with 4-way crisis choice - Director Morgan, Agent 0x99, and Architect communications - Branch-specific crisis dialogues for all 4 options - Closing debrief with deterministic outcomes - Note: Ink files need compilation fixes before JSON generation --- .../DEVELOPMENT_STATUS.md | 197 ++++++ .../ink/m07_architect_comms.ink | 356 ++++++++++ .../ink/m07_closing_debrief.ink | 444 +++++++++++++ .../ink/m07_crisis_corporate.ink | 529 +++++++++++++++ .../ink/m07_crisis_data.ink | 609 +++++++++++++++++ .../ink/m07_crisis_infrastructure.ink | 614 ++++++++++++++++++ .../ink/m07_crisis_supply_chain.ink | 419 ++++++++++++ .../ink/m07_director_morgan.ink | 289 +++++++++ .../ink/m07_opening_briefing.ink | 313 +++++++++ .../ink/m07_phone_agent_0x99.ink | 350 ++++++++++ 10 files changed, 4120 insertions(+) create mode 100644 scenarios/m07_architects_gambit/DEVELOPMENT_STATUS.md create mode 100644 scenarios/m07_architects_gambit/ink/m07_architect_comms.ink create mode 100644 scenarios/m07_architects_gambit/ink/m07_closing_debrief.ink create mode 100644 scenarios/m07_architects_gambit/ink/m07_crisis_corporate.ink create mode 100644 scenarios/m07_architects_gambit/ink/m07_crisis_data.ink create mode 100644 scenarios/m07_architects_gambit/ink/m07_crisis_infrastructure.ink create mode 100644 scenarios/m07_architects_gambit/ink/m07_crisis_supply_chain.ink create mode 100644 scenarios/m07_architects_gambit/ink/m07_director_morgan.ink create mode 100644 scenarios/m07_architects_gambit/ink/m07_opening_briefing.ink create mode 100644 scenarios/m07_architects_gambit/ink/m07_phone_agent_0x99.ink diff --git a/scenarios/m07_architects_gambit/DEVELOPMENT_STATUS.md b/scenarios/m07_architects_gambit/DEVELOPMENT_STATUS.md new file mode 100644 index 0000000..3447f80 --- /dev/null +++ b/scenarios/m07_architects_gambit/DEVELOPMENT_STATUS.md @@ -0,0 +1,197 @@ +# Mission 7: "The Architect's Gambit" - Development Status + +**Last Updated:** 2026-01-10 +**Status:** Core Implementation Complete - Compilation Fixes Needed + +## ✓ Completed Components + +### 1. Scenario Foundation +- ✓ `scenario.json.erb` - Complete with 7 rooms, all validation passing (0 schema errors) +- ✓ `mission.json` - Mission metadata and CyBOK mappings +- ✓ `README.md` - Complete design document for single-location branching architecture + +### 2. Planning Documents +All four branch planning documents complete: +- ✓ `planning/stage_0_option_a_infrastructure.md` - Infrastructure Collapse branch +- ✓ `planning/stage_0_option_b_data.md` - Data Apocalypse branch +- ✓ `planning/stage_0_option_c_supply_chain.md` - Supply Chain Infection branch +- ✓ `planning/stage_0_option_d_corporate.md` - Corporate Warfare branch + +### 3. Ink Dialogue Files Created +All 9 Ink files have been written: +- ✓ `ink/m07_opening_briefing.ink` - Initial mission briefing with 4-way choice +- ✓ `ink/m07_director_morgan.ink` - Director Morgan dialogue +- ✓ `ink/m07_architect_comms.ink` - The Architect's taunts (time-based) +- ✓ `ink/m07_phone_agent_0x99.ink` - Agent 0x99 tactical support +- ✓ `ink/m07_crisis_infrastructure.ink` - Marcus Chen confrontation (Option A) +- ✓ `ink/m07_crisis_data.ink` - Specter/Rachel confrontation (Option B) +- ✓ `ink/m07_crisis_supply_chain.ink` - Adrian Cross confrontation (Option C) +- ✓ `ink/m07_crisis_corporate.ink` - Victoria/Marcus confrontation (Option D) +- ✓ `ink/m07_closing_debrief.ink` - End-of-mission debrief + +## ⚠ Pending: Ink Compilation Fixes + +### Known Issues +The Ink files need fixes before they can be compiled to JSON: + +1. **Unresolved Variable: `crisis_choice`** + - Files affected: m07_director_morgan.ink, m07_architect_comms.ink, m07_phone_agent_0x99.ink, m07_closing_debrief.ink + - Issue: Variable `crisis_choice` is defined in opening_briefing.ink but not accessible in other files + - Solution: Add `EXTERNAL crisis_choice` declaration at top of each file that uses it + +2. **Choices Nested in Conditionals** + - Files affected: m07_director_morgan.ink, others + - Issue: Choices inside `{conditional}` blocks need explicit diverts + - Solution: Add explicit `-> some_knot` after each choice in conditional blocks + +3. **Loose Ends** (Warnings, not errors) + - All files have loose end warnings + - These are normal for branching narratives and won't prevent compilation + - Can be addressed by adding `-> DONE` or `-> END` at appropriate points + +### Example Fixes Needed + +**For Unresolved Variables:** +```ink +// At top of m07_director_morgan.ink +EXTERNAL crisis_choice +EXTERNAL crisis_choice_made +EXTERNAL flags_submitted +EXTERNAL crisis_neutralized + +=== director_morgan === +// ... dialogue continues +``` + +**For Nested Choices:** +```ink +// BEFORE (causes error): +{crisis_choice == "infrastructure": + "Team Alpha handling supply chain." + + [Continue] -> next_section +} + +// AFTER (fixes error): +{crisis_choice == "infrastructure": + "Team Alpha handling supply chain." +} ++ [Continue] -> next_section +``` + +## 📊 Mission Architecture Summary + +### Single-Location Design +- **Location:** SAFETYNET Emergency Operations Center +- **Rooms:** 6 shared + 1 conditional crisis terminal +- **Branching:** ERB-based conditional content based on player's crisis choice +- **VM Integration:** SecGen "putting_it_together" scenario with 4 flags + +### Four Crisis Branches +Each branch has: +- Unique antagonist(s) with distinct motivations +- 30-minute timer mechanic (some with dual timers) +- VM exploitation pathway (same scenario, different narrative context) +- Recruitment opportunities for key antagonists +- Deterministic outcomes matrix for unchosen operations +- Intelligence recovery (Tomb Gamma coordinates, mole evidence) + +### Key Features Implemented +- ✓ 4-way impossible choice (forces player to accept casualties elsewhere) +- ✓ The Architect taunts at specific timer intervals +- ✓ Recruitment paths for sympathetic antagonists (Rachel, Adrian, Victoria) +- ✓ Moral complexity (all antagonists have valid criticisms) +- ✓ Deterministic outcomes (player choice determines which teams handle other ops) +- ✓ Casualty tracking across all 4 operations +- ✓ SAFETYNET mole evidence thread +- ✓ Tomb Gamma location reveal (sets up future mission) + +## 🔄 Next Steps + +### Immediate (Required for Playability) +1. Fix Ink compilation errors: + - Add EXTERNAL variable declarations + - Fix nested choice diverts + - Add proper flow terminators +2. Compile all Ink files to JSON format +3. Test scenario validation +4. Playtest the 4-way choice mechanic + +### Secondary (Polish) +1. Balance timer durations (30 minutes may need adjustment) +2. Review dialogue for consistency and tone +3. Test all recruitment paths +4. Verify deterministic outcomes matrix logic +5. Test flag submission and intelligence discovery + +### Future Enhancements +1. Team status updates (show other teams' progress during mission) +2. Dynamic timer display integration +3. Casualty visualization in debrief +4. Additional NPC dialogues for facility staff +5. Environmental storytelling elements + +## 📁 File Structure + +``` +scenarios/m07_architects_gambit/ +├── scenario.json.erb # Main scenario file (VALIDATED ✓) +├── mission.json # Mission metadata (COMPLETE ✓) +├── README.md # Design document (COMPLETE ✓) +├── DEVELOPMENT_STATUS.md # This file +├── planning/ +│ ├── stage_0_option_a_infrastructure.md # Infrastructure branch planning ✓ +│ ├── stage_0_option_b_data.md # Data Apocalypse branch planning ✓ +│ ├── stage_0_option_c_supply_chain.md # Supply Chain branch planning ✓ +│ └── stage_0_option_d_corporate.md # Corporate Warfare branch planning ✓ +└── ink/ + ├── m07_opening_briefing.ink # Created, needs compilation + ├── m07_director_morgan.ink # Created, needs fixes & compilation + ├── m07_architect_comms.ink # Created, needs fixes & compilation + ├── m07_phone_agent_0x99.ink # Created, needs fixes & compilation + ├── m07_crisis_infrastructure.ink # Created, needs compilation + ├── m07_crisis_data.ink # Created, needs compilation + ├── m07_crisis_supply_chain.ink # Created, needs compilation + ├── m07_crisis_corporate.ink # Created, needs compilation + └── m07_closing_debrief.ink # Created, needs fixes & compilation +``` + +## 🎯 Design Philosophy + +Mission 7 explores the theme of **impossible choices** and **acceptable casualties**: + +- **No perfect option:** Every choice accepts casualties elsewhere +- **Moral complexity:** Antagonists have valid criticisms of real vulnerabilities +- **Recruitment over combat:** Sympathetic antagonists can be turned +- **Consequences matter:** Deterministic outcomes show impact of player's choice +- **The Architect as puppet master:** Taunts emphasize manipulation and futility + +### Unique Challenges Per Branch +- **Option A (Infrastructure):** Immediate civilian deaths, pure timer pressure +- **Option B (Data):** Dual timer mechanic, prioritization choice within choice +- **Option C (Supply Chain):** No immediate deaths, long-term consequences +- **Option D (Corporate):** Most morally ambiguous, saving wealth vs. saving lives + +## 📝 Notes for Continuation + +When resuming development: +1. Start by fixing the EXTERNAL variable declarations +2. Test compile each file individually to identify remaining errors +3. Use `/home/user/BreakEscape/bin/inklecate` for compilation +4. Compilation command: `/home/user/BreakEscape/bin/inklecate -o /tmp/output.json input.ink` +5. Move compiled files from /tmp to ink directory: `mv /tmp/*.json scenarios/m07_architects_gambit/ink/` + +## 🐛 Validation Results + +**Scenario JSON Schema Validation:** ✓ PASSED (0 errors) +**Ink Compilation:** ⚠ PENDING (requires error fixes first) + +Last validation run: +```bash +ruby scripts/validate_scenario.rb scenarios/m07_architects_gambit/scenario.json.erb +# Result: ✓ Schema validation passed! 0 errors. +``` + +--- + +**Development Progress:** ~85% Complete +**Estimated Time to Completion:** 2-4 hours (fix Ink errors, compile, test) diff --git a/scenarios/m07_architects_gambit/ink/m07_architect_comms.ink b/scenarios/m07_architects_gambit/ink/m07_architect_comms.ink new file mode 100644 index 0000000..53b0abe --- /dev/null +++ b/scenarios/m07_architects_gambit/ink/m07_architect_comms.ink @@ -0,0 +1,356 @@ +// Mission 7: The Architect's Gambit - The Architect Communications +// Time-based taunts from the mysterious ENTROPY mastermind + +VAR architect_t30_shown = false +VAR architect_t20_shown = false +VAR architect_t10_shown = false +VAR architect_t05_shown = false +VAR architect_t01_shown = false +VAR architect_success_shown = false +VAR architect_failure_shown = false + +=== architect_comms === +// Entry point - this will be called at specific timer intervals +// The game engine should call specific knots based on timer + +-> t30_message + +=== t30_message === +~ architect_t30_shown = true + +Your phone vibrates. An encrypted message from an unknown sender appears on your screen. + +The sender ID shows only: **THE ARCHITECT** + +{crisis_choice == "infrastructure": + "Agent 0x00. I've been watching your career with interest. Let's see if you're as capable as your reputation suggests." #speaker:The Architect + + "You chose infrastructure. Pragmatic. Lives over data, over money. Admirable, in its way." +} + +{crisis_choice == "data": + "Agent 0x00. Welcome to the game." #speaker:The Architect + + "Democracy is an illusion built on public faith. You chose to protect that illusion. Interesting." +} + +{crisis_choice == "supply_chain": + "Agent 0x00. So you're the one they sent." #speaker:The Architect + + "Supply chain attacks are beautiful, aren't they? One compromise, millions infected. Efficiency. You chose to prevent future suffering over present deaths. Utilitarian." +} + +{crisis_choice == "corporate": + "Agent 0x00. I've been expecting you." #speaker:The Architect + + "Capitalism built on insecure foundations. You chose to protect those foundations. Shareholders over citizens. Bold choice." +} + +The message continues: + +"Let's see if you can stop entropy tonight. Spoiler: you can't. You can only delay it." + +**T-MINUS 30 MINUTES** + ++ [Ignore the message] -> END ++ [Trace the source] -> trace_attempt + +=== trace_attempt === +You attempt to trace the message source. + +**TRACE FAILED:** Routing through 47 proxy servers across 14 countries. Source: Unknown. + +The Architect sends another message: + +"Nice try. But I'm always three steps ahead." #speaker:The Architect + +-> END + +=== t20_message === +~ architect_t20_shown = true + +Another encrypted message from THE ARCHITECT. + +{crisis_choice == "infrastructure": + "You chose infrastructure. But tell me - do you know what's happening at the other three targets right now?" #speaker:The Architect + + "Team Charlie is failing. Corporate zero-day attacks are deploying. Healthcare ransomware locking hospitals. People will die from delayed surgeries." + + "Did you choose correctly?" +} + +{crisis_choice == "data": + "You chose to protect data. Noble. But data isn't alive, Agent 0x00. People at the other targets are." #speaker:The Architect + + "Team Alpha is failing. Right now, the Pacific Northwest power grid is cascading toward failure. 240-385 deaths over 72 hours." + + "Was it worth it? Protecting voter records while people freeze in the dark?" +} + +{crisis_choice == "supply_chain": + "You chose long-term threat over immediate deaths. Interesting priorities." #speaker:The Architect + + "Team Bravo is containing infrastructure. But Team Charlie is failing. Economic damage mounting. Healthcare systems being ransomwared." + + "47 million future infections prevented. How many die tonight because you chose tomorrow over today?" +} + +{crisis_choice == "corporate": + "You chose corporations over civilians. The market over mortality." #speaker:The Architect + + "Team Alpha succeeded on infrastructure - well done, them. But Team Bravo is failing catastrophically. Voter database breach complete. Disinformation deploying. Democracy is about to shatter." + + "You saved shareholder value. Was that worth the constitutional crisis?" +} + +**T-MINUS 20 MINUTES** + ++ [Focus on the mission] -> END ++ [Respond to The Architect] -> respond_attempt + +=== respond_attempt === +You type a response message. + +**DELIVERY FAILED:** Sender address does not accept incoming communications. + +The Architect sends another line: + +"I don't need your words, Agent. Your choices speak volumes." #speaker:The Architect + +-> END + +=== t10_message === +~ architect_t10_shown = true + +Another message. The Architect's taunts are getting more philosophical. + +"The beauty of entropy is its inevitability." #speaker:The Architect + +{crisis_choice == "infrastructure": + "Even if you stop this power grid attack, something else fails. Someone else dies. Infrastructure decays. Systems collapse." + + "Marcus believes in exposing vulnerabilities. Do you know what's tragic? He's RIGHT. The power grid IS vulnerable. You're just delaying the inevitable blackout." +} + +{crisis_choice == "data": + "Even if you stop the breach, even if you wipe the narratives - the distrust persists. Truth is already dead. I killed it." + + "Rachel believes she's exposing corruption. Specter believes in information freedom. They're both tools. As are you." +} + +{crisis_choice == "supply_chain": + "Software updates are built on trust. One betrayal, that trust shatters forever. Even if you stop this, who will update their systems now?" + + "Adrian believes supply chains are vulnerable. He's correct. You're not fixing the vulnerability - just preventing this exploitation." +} + +{crisis_choice == "corporate": + "Corporations prioritize profit over security. Always have, always will. Even if you save them tonight, they'll never invest properly in defense." + + "Victoria believes in corporate accountability. Marcus believes in profit. I believe in entropy. Who's right?" +} + +"You can't win, Agent 0x00. You can only choose which way to lose." + +**T-MINUS 10 MINUTES** + ++ [Stay focused] -> END + +=== t05_message === +~ architect_t05_shown = true + +The messages are coming faster now. + +"T-minus 5 minutes. Let me ask you a philosophical question." #speaker:The Architect + +{crisis_choice == "infrastructure": + "Marcus believes his cause justifies casualties. Do you believe yours does? You accepted economic collapse elsewhere to save these lives." + + "What's the calculus? 240 lives saved here, 80-140 lost to healthcare ransomware there? Did you maximize survival, or just minimize visible blood on your hands?" +} + +{crisis_choice == "data": + "You chose to protect democracy. But what IS democracy when the public doesn't trust elections? When data is weaponized?" + + "You can stop the breach OR the disinformation. Not both. Choose which lie to preserve." +} + +{crisis_choice == "supply_chain": + "47 million systems. Think about that scale. Every hospital, every bank, every government agency." + + "You chose this over immediate deaths. That's cold calculus, Agent. Utilitarian to the core. Are you comfortable with that choice?" +} + +{crisis_choice == "corporate": + "47 zero-days. 12 corporations. $4.2 trillion market cap. All falling simultaneously." + + "But you know what's interesting? Even if you save them, they'll never properly invest in security. Profits over protection. Always." +} + +"Five minutes. Entropy accelerates." + +**T-MINUS 5 MINUTES** + ++ [Ignore The Architect] -> END + +=== t01_message === +~ architect_t01_shown = true + +Final message. One minute remaining. + +{crisis_choice == "infrastructure": + "Impressive. You're about to stop the blackout." #speaker:The Architect + + "But this was never really about the power grid, was it? This was about forcing you to choose. About showing you that every victory comes with a cost elsewhere." + + "Enjoy your pyrrhic victory, Agent." +} + +{crisis_choice == "data": + "Even if you succeed here, the narratives will persist. Disinformation doesn't need deployment - it's already in people's minds." #speaker:The Architect + + "You're fighting an information war you've already lost." +} + +{crisis_choice == "supply_chain": + "You're about to prevent the largest supply chain attack in history. Congratulations." #speaker:The Architect + + "But present-day casualties mount at other targets while you protect future systems. The math doesn't justify itself, does it?" +} + +{crisis_choice == "corporate": + "Look at you, protecting the wealth of corporations while civilians suffer elsewhere." #speaker:The Architect + + "But you know what? Economic stability matters too. Systems matter. You made a defensible choice, even if it feels dirty." +} + +"One minute, Agent 0x00. Let's see how this plays out." + +**T-MINUS 1 MINUTE** + ++ [Final push] -> END + +=== success_message === +~ architect_success_shown = true + +After you neutralize the attack, one final message arrives. + +{crisis_choice == "infrastructure": + "Congratulations. You saved 8.4 million people from a blackout. Zero casualties from power grid failure." #speaker:The Architect + + "Meanwhile, at the targets you didn't choose:" + + "* Corporate healthcare ransomware: 80-140 deaths from delayed care + * Social Fabric disinformation: Democratic trust damaged, civil unrest beginning + * Supply Chain: Prevented by Team Alpha + + **Total casualties tonight: 80-140 deaths** + + "You minimized death. Well done. But they still died. Was it worth it?" +} + +{crisis_choice == "data": + "Impressive. You stopped both the data breach and the disinformation campaign. Democracy survives another day." #speaker:The Architect + + "Meanwhile, at the targets you didn't choose:" + + "* Infrastructure: 240-385 deaths from power grid blackout (Team Alpha failed) + * Corporate: Prevented by Team Bravo + * Supply Chain: Partial success by Team Charlie + + **Total casualties tonight: 240-385 deaths** + + "You saved democratic institutions. People died in the dark. Was that the right trade?" +} + +{crisis_choice == "supply_chain": + "Well done. You prevented 47 million backdoor infections. Long-term national security preserved." #speaker:The Architect + + "Meanwhile, at the targets you didn't choose:" + + "* Infrastructure: Partial success by Team Bravo (80-120 deaths) + * Data: Full success by Team Alpha (zero casualties) + * Corporate: Healthcare ransomware deployed (80-140 deaths) + + **Total casualties tonight: 160-260 deaths** + + "You chose future security over present lives. They died while you prevented tomorrow's crisis. Utilitarian calculus." +} + +{crisis_choice == "corporate": + "Outstanding. All 47 zero-days neutralized. $4.2 trillion in market value preserved." #speaker:The Architect + + "Meanwhile, at the targets you didn't choose:" + + "* Infrastructure: Full success by Team Alpha (zero casualties) + * Data: Both attacks succeeded (voter breach + disinformation, 20-40 deaths from civil unrest) + * Supply Chain: Partial success by Team Charlie + + **Total casualties tonight: 20-40 deaths** + + "You saved shareholder wealth. People died in civil unrest over a compromised election. What did you really protect?" +} + +The message continues: + +"But here's what you should understand, Agent 0x00: Tonight was a test. A proof-of-concept. ENTROPY is just beginning." + +"You won your battle. But the war? The war is inevitable. Entropy always wins." + +"I'll be watching your career with great interest. Until we meet again." + +**-- THE ARCHITECT** + ++ [Report this to Director Morgan] -> END ++ [Delete the message] -> END + +=== failure_message === +~ architect_failure_shown = true + +The timer hits zero. You failed to stop the attack in time. + +A final message from THE ARCHITECT arrives. + +{crisis_choice == "infrastructure": + "The grid is falling. Cascading failures across the Pacific Northwest. 8.4 million people in darkness." #speaker:The Architect + + "Over the next 72 hours: 240-385 deaths. Hospital generators failing. Traffic accidents. Hypothermia." + + "You tried. But entropy won." +} + +{crisis_choice == "data": + "The data is gone. 187 million voter records exfiltrated. Disinformation deploying across all platforms." #speaker:The Architect + + "Democracy is about to shatter. Civil unrest incoming. 20-40 deaths in the first week. Constitutional crisis unfolding." + + "You failed to protect the foundation of your republic." +} + +{crisis_choice == "supply_chain": + "The backdoors are deployed. 47 million systems infected. Hospitals, banks, government agencies - all compromised." #speaker:The Architect + + "They won't know for 90 days. But when they discover it, the damage will be catastrophic. $240-420 billion over 10 years." + + "You failed to prevent the largest supply chain attack in history." +} + +{crisis_choice == "corporate": + "47 zero-days deployed simultaneously. Stock market crashing. Healthcare ransomware active. Banking systems freezing." #speaker:The Architect + + "$4.2 trillion in value destroyed. 80-140 deaths from delayed medical care. 140,000+ job losses incoming." + + "You failed to protect the economic foundation of your country." +} + +"And the other operations? Mixed results, as predicted. But YOUR failure made everything worse." + +"This is entropy, Agent 0x00. Inevitable. Beautiful. Accelerating." + +"Better luck next time. If there is a next time." + +**-- THE ARCHITECT** + ++ [Face the consequences] -> END + +-> END diff --git a/scenarios/m07_architects_gambit/ink/m07_closing_debrief.ink b/scenarios/m07_architects_gambit/ink/m07_closing_debrief.ink new file mode 100644 index 0000000..f4d22d2 --- /dev/null +++ b/scenarios/m07_architects_gambit/ink/m07_closing_debrief.ink @@ -0,0 +1,444 @@ +// Mission 7: The Architect's Gambit - Closing Debrief +// End-of-mission debrief reviewing all four operations and their outcomes + +VAR crisis_choice = "" // Which operation player chose +VAR player_success = false // Did player succeed in their operation +VAR found_tomb_gamma = false +VAR found_mole_evidence = false +VAR total_casualties = 0 +VAR player_operation_casualties = 0 +VAR other_operations_casualties = 0 + +=== closing_debrief === +You're back at SAFETYNET Emergency Operations Center. The crisis room is quieter now, but the tension remains. + +Director Morgan stands at the central display, reviewing after-action reports from all four operations. + +She looks up as you enter. + +"Agent 0x00. Take a seat. We need to debrief." #speaker:Director Morgan + +You sit. She brings up a comprehensive tactical overview. + +"Four simultaneous operations. Four different outcomes. Let's review." + ++ [I'm ready.] -> operation_review ++ [How bad is it?] -> casualty_summary ++ [Did we stop The Architect?] -> architect_status + +=== operation_review === +Director Morgan brings up the full operational map. + +"Here's what happened across all four targets tonight:" #speaker:Director Morgan + +-> player_operation_outcome + +=== player_operation_outcome === +{crisis_choice == "infrastructure": + **OPERATION A: INFRASTRUCTURE COLLAPSE (Your Operation)** + + {player_success == true: + "You neutralized Marcus Chen's power grid attack. Zero casualties from the blackout. 8.4 million people kept their power." #speaker:Director Morgan + + "Outstanding work." + + ~ player_operation_casualties = 0 + } + + {player_success == false: + "The power grid failed. Cascading blackouts across the Pacific Northwest." #speaker:Director Morgan + + "Casualty count: 240-385 deaths over 72 hours. Hospital generators, traffic accidents, hypothermia exposure." + + ~ player_operation_casualties = 312 + ~ total_casualties = total_casualties + 312 + } + + -> other_operations_infrastructure +} + +{crisis_choice == "data": + **OPERATION B: DATA APOCALYPSE (Your Operation)** + + {player_success == true: + "You stopped both the data breach and the disinformation campaign. Democracy secured. 187 million identities protected." #speaker:Director Morgan + + "Exceptional work under dual-timer pressure." + + ~ player_operation_casualties = 0 + } + + {player_success == false: + "Both attacks succeeded. 187 million voter records stolen. Disinformation campaign launched nationwide." #speaker:Director Morgan + + "Casualty count: 20-40 deaths from civil unrest in first week. Constitutional crisis unfolding." + + ~ player_operation_casualties = 30 + ~ total_casualties = total_casualties + 30 + } + + -> other_operations_data +} + +{crisis_choice == "supply_chain": + **OPERATION C: SUPPLY CHAIN INFECTION (Your Operation)** + + {player_success == true: + "You prevented all 47 million backdoor infections. Supply chain integrity maintained." #speaker:Director Morgan + + "Zero immediate casualties. Long-term national security preserved." + + ~ player_operation_casualties = 0 + } + + {player_success == false: + "Backdoors deployed to 47 million systems. Largest supply chain attack in history." #speaker:Director Morgan + + "No immediate casualties, but long-term consequences: $240-420 billion damage projected over 10 years." + + ~ player_operation_casualties = 0 + } + + -> other_operations_supply_chain +} + +{crisis_choice == "corporate": + **OPERATION D: CORPORATE WARFARE (Your Operation)** + + {player_success == true: + "You neutralized all 47 zero-day exploits. $4.2 trillion in market value preserved. Zero healthcare ransomware." #speaker:Director Morgan + + "Economic stability maintained." + + ~ player_operation_casualties = 0 + } + + {player_success == false: + "47 zero-days deployed. Stock market crashed 12-18%. Healthcare ransomware active." #speaker:Director Morgan + + "Casualty count: 80-140 deaths from delayed medical care. 140,000+ job losses imminent." + + ~ player_operation_casualties = 110 + ~ total_casualties = total_casualties + 110 + } + + -> other_operations_corporate +} + +=== other_operations_infrastructure === +"The other three operations, handled by SAFETYNET rapid response teams:" #speaker:Director Morgan + +**TEAM ALPHA - SUPPLY CHAIN:** Full success. All backdoor injections prevented. + +**TEAM BRAVO - DATA APOCALYPSE:** Partial success. Data breach stopped at 13%, but disinformation campaign deployed. Civil unrest beginning. Estimated 20-40 casualties. + +~ other_operations_casualties = other_operations_casualties + 30 + +**TEAM CHARLIE - CORPORATE WARFARE:** Failure. Healthcare ransomware deployed. 80-140 deaths from delayed care. + +~ other_operations_casualties = other_operations_casualties + 110 + +~ total_casualties = total_casualties + other_operations_casualties + +-> casualty_total + +=== other_operations_data === +"The other three operations, handled by SAFETYNET rapid response teams:" #speaker:Director Morgan + +**TEAM ALPHA - INFRASTRUCTURE:** Failure. Power grid blackout occurred. 240-385 casualties from power failure. + +~ other_operations_casualties = other_operations_casualties + 312 + +**TEAM BRAVO - CORPORATE WARFARE:** Full success. All zero-days neutralized. Zero economic damage. + +**TEAM CHARLIE - SUPPLY CHAIN:** Partial success. Some backdoors prevented, estimated 15 million systems infected (instead of 47M). + +~ total_casualties = total_casualties + other_operations_casualties + +-> casualty_total + +=== other_operations_supply_chain === +"The other three operations, handled by SAFETYNET rapid response teams:" #speaker:Director Morgan + +**TEAM ALPHA - DATA APOCALYPSE:** Full success. Both data breach and disinformation prevented. Democracy secure. + +**TEAM BRAVO - INFRASTRUCTURE:** Partial success. Limited blackouts. Estimated 80-120 casualties (reduced from 240-385). + +~ other_operations_casualties = other_operations_casualties + 100 + +**TEAM CHARLIE - CORPORATE WARFARE:** Failure. Healthcare ransomware deployed. 80-140 deaths from delayed care. + +~ other_operations_casualties = other_operations_casualties + 110 + +~ total_casualties = total_casualties + other_operations_casualties + +-> casualty_total + +=== other_operations_corporate === +"The other three operations, handled by SAFETYNET rapid response teams:" #speaker:Director Morgan + +**TEAM ALPHA - INFRASTRUCTURE:** Full success. Power grid secured. Zero blackout casualties. + +**TEAM BRAVO - DATA APOCALYPSE:** Catastrophic failure. Both attacks succeeded. 187M records stolen, disinformation deployed. 20-40 casualties from civil unrest. + +~ other_operations_casualties = other_operations_casualties + 30 + +**TEAM CHARLIE - SUPPLY CHAIN:** Partial success. Most backdoors prevented. Estimated 8 million systems infected (instead of 47M). + +~ total_casualties = total_casualties + other_operations_casualties + +-> casualty_total + +=== casualty_total === +Director Morgan displays the final casualty count. + +{total_casualties == 0: + "Combined casualties across all operations: ZERO." #speaker:Director Morgan + + "This is unprecedented. Complete success. The Architect's coordinated attack failed." + + "You chose the right operation, and the teams executed perfectly." + + -> success_reflection +} + +{total_casualties > 0 and total_casualties < 100: + "Combined casualties across all operations: {total_casualties} deaths." #speaker:Director Morgan + + She pauses. + + "Every single one of those people had families. Lives. Futures." + + "But given the scale of the attack - four simultaneous operations - this is... this is as good as we could have hoped for." + + -> mixed_reflection +} + +{total_casualties >= 100 and total_casualties < 300: + "Combined casualties across all operations: {total_casualties} deaths." #speaker:Director Morgan + + The weight of that number hangs in the air. + + "Significant casualties. Multiple operations failed or partially succeeded." + + "The Architect achieved some of their objectives tonight." + + -> failure_reflection +} + +{total_casualties >= 300: + "Combined casualties across all operations: {total_casualties} deaths." #speaker:Director Morgan + + She looks exhausted. + + "This is catastrophic. Multiple operations failed. The Architect achieved most of their objectives." + + "We need to understand what went wrong." + + -> failure_reflection +} + +=== success_reflection === +"Agent 0x00, you made an impossible choice and got it RIGHT." #speaker:Director Morgan + +{found_tomb_gamma == true: + "And you recovered Tomb Gamma coordinates. That's our next target - The Architect's command center." +} + +{found_mole_evidence == true: + "You also found evidence of our mole. Internal Affairs is already investigating." +} + ++ [What happens to ENTROPY now?] -> entropy_future ++ [What about The Architect?] -> architect_status + +=== mixed_reflection === +"You made the best choice you could with the intelligence available." #speaker:Director Morgan + +"The casualties at unchosen operations - that's not your failure. That's The Architect's design. Forcing impossible choices." + +{found_tomb_gamma == true: + "But you recovered Tomb Gamma coordinates. That gives us our next move against The Architect." +} + +{found_mole_evidence == true: + "And the mole evidence you found - that's critical for preventing future leaks." +} + ++ [Could I have done better?] -> second_guessing ++ [What happens next?] -> next_steps + +=== failure_reflection === +"Multiple operations failed tonight. The Architect achieved significant objectives." #speaker:Director Morgan + +She's not blaming you - just stating facts. + +"The choice you made... in hindsight, was it the right one?" + ++ [I made the best decision I could.] -> defend_choice ++ [I should have chosen differently.] -> regret_choice ++ [The Architect designed this to be unwinnable.] -> blame_architect + +=== defend_choice === +"You did. You made the call based on available intelligence and your assessment of priorities." #speaker:Director Morgan + +"The casualties are on The Architect. Not you." + +{found_tomb_gamma == true or found_mole_evidence == true: + "And you recovered critical intelligence. That's valuable for future operations." +} + +-> next_steps + +=== regret_choice === +"Second-guessing yourself in hindsight isn't helpful, Agent." #speaker:Director Morgan + +"You didn't have perfect information. Nobody did. The Architect designed it that way." + +-> next_steps + +=== blame_architect === +"You're right. This was designed to be impossible. Four simultaneous attacks, one operator." #speaker:Director Morgan + +"The Architect wanted to prove that even our best couldn't stop them." + +{total_casualties > 0: + "And they partially succeeded. We took losses." +} + +{total_casualties == 0: + "But you proved them wrong. We stopped them." +} + +-> next_steps + +=== second_guessing === +"In hindsight, maybe. But you didn't have hindsight. You had 30 seconds to choose from four crisis scenarios." #speaker:Director Morgan + +"You did your job. The teams did theirs. Some succeeded, some didn't." + +"That's the reality of coordinated attacks." + +-> next_steps + +=== casualty_summary === +Director Morgan pulls up the casualty report. + +{total_casualties == 0: + "Zero casualties across all four operations. Complete success." #speaker:Director Morgan + -> success_reflection +} + +{total_casualties > 0: + "Total casualties: {total_casualties} deaths across all four operations." #speaker:Director Morgan + + {player_operation_casualties == 0: + "Your operation: Zero casualties. You succeeded." + } + + {player_operation_casualties > 0: + "Your operation: {player_operation_casualties} casualties. The attack succeeded." + } + + "Other operations: {other_operations_casualties} casualties combined." + + -> casualty_total +} + +=== architect_status === +"The Architect remains at large. Unknown identity. Unknown location." #speaker:Director Morgan + +{found_tomb_gamma == true: + "But you recovered Tomb Gamma coordinates. That's their command center. We're planning a strike." +} + +{found_tomb_gamma == false: + "We still don't have their location. Tomb Gamma remains unknown." +} + +"What we DO know: They're planning something bigger. Tonight was a test. A proof-of-concept." + ++ [A test for what?] -> architect_endgame ++ [What about the mole?] -> mole_status + +=== architect_endgame === +"We don't know. But coordinating four simultaneous attacks with different cells, different methods, different objectives - that's sophisticated." #speaker:Director Morgan + +"It suggests they're building toward something. A larger operation." + +"Which is why we need to find Tomb Gamma and stop them before they execute it." + ++ [I'm ready for the next mission.] -> mission_conclusion ++ [What about the mole?] -> mole_status + +=== mole_status === +{found_mole_evidence == true: + "You recovered evidence of communications between someone at SAFETYNET and The Architect." #speaker:Director Morgan + + "Internal Affairs is investigating. We'll find them." + + "Knowing we have a mole is the first step to rooting them out." +} + +{found_mole_evidence == false: + "We still don't have concrete evidence. But the operational timing suggests someone inside leaked details to The Architect." #speaker:Director Morgan + + "We're conducting internal review, but without evidence, it's difficult." +} + ++ [What's next for me?] -> next_steps + +=== next_steps === +"Debrief complete. File your after-action report and take 24 hours rest." #speaker:Director Morgan + +{found_tomb_gamma == true: + "Then we plan the Tomb Gamma operation. Striking at The Architect's command center." + + "This is far from over." +} + +{found_tomb_gamma == false: + "We'll continue investigating The Architect's identity and location." + + "This isn't over. ENTROPY is still active. The Architect is still out there." +} + +"Good work tonight, Agent. Regardless of the outcome, you made impossible choices under extreme pressure." + +"Not many operators could have done what you did." + ++ [Thank you, Director.] -> mission_conclusion + +=== entropy_future === +"ENTROPY is damaged but not destroyed. We disrupted their coordinated attack, but the cells remain active." #speaker:Director Morgan + +{found_tomb_gamma == true: + "Tomb Gamma is our next target. If we can strike The Architect's command center, we can decapitate the entire organization." +} + +"Critical Mass, Ghost Protocol, Social Fabric, Digital Vanguard, Supply Chain Saboteurs, Zero Day Syndicate - all still operational." + +"But now we know their methods. Their coordination patterns. Their weaknesses." + +"Tonight was the first battle. Not the last." + ++ [I'm ready to continue the fight.] -> mission_conclusion + +=== mission_conclusion === +Director Morgan extends her hand. + +"Get some rest, Agent 0x00. You've earned it." + +**MISSION 7: THE ARCHITECT'S GAMBIT - COMPLETE** + +**YOUR OPERATION: {crisis_choice}** +**OUTCOME: {player_success: SUCCESS | FAILURE}** +**TOTAL CASUALTIES: {total_casualties}** +**TOMB GAMMA DISCOVERED: {found_tomb_gamma: YES | NO}** +**MOLE EVIDENCE FOUND: {found_mole_evidence: YES | NO}** + +The war against ENTROPY continues... + +-> END + +-> END diff --git a/scenarios/m07_architects_gambit/ink/m07_crisis_corporate.ink b/scenarios/m07_architects_gambit/ink/m07_crisis_corporate.ink new file mode 100644 index 0000000..7fe5700 --- /dev/null +++ b/scenarios/m07_architects_gambit/ink/m07_crisis_corporate.ink @@ -0,0 +1,529 @@ +// Mission 7: Option D - Corporate Warfare +// Dual antagonists: Victoria "V1per" Zhang (Digital Vanguard) + Marcus "Shadow" Chen (Zero Day Syndicate) + +VAR confronted_victoria = false +VAR confronted_marcus = false +VAR showed_victoria_casualties = false +VAR victoria_recruited = false +VAR marcus_escaped = false +VAR victoria_fate = "" // "recruited", "arrested", "killed" +VAR exploits_deployed = false +VAR countermeasures_deployed = false + +=== confrontation === +You enter the TechCore Security Operations Center server room. + +Two figures are present: + +**VICTORIA "V1PER" ZHANG** stands at the defense automation terminal, armed and alert. Digital Vanguard operations coordinator. She sees you immediately. + +**MARCUS "SHADOW" CHEN** works at a secondary terminal, monitoring zero-day exploit staging. Zero Day Syndicate broker. Non-violent, already looking for exits. + +Victoria draws her weapon. + +"Agent 0x00. TechCore security is compromised. You're too late." #speaker:Victoria Zhang + +Marcus doesn't look up from his screen. + +"Victoria, we discussed this. No unnecessary violence. Let me finish the deployment." #speaker:Marcus Chen + +**EXPLOIT DEPLOYMENT: T-MINUS 3:54** +**TARGETS: 12 corporations, 47 zero-day vulnerabilities** + ++ [Both of you are under arrest.] -> arrest_attempt ++ [Victoria, lower your weapon.] -> victoria_confrontation ++ [Marcus, step away from that terminal.] -> marcus_confrontation ++ [This attack will destroy the economy.] -> economic_argument + +=== arrest_attempt === +Victoria doesn't lower her weapon. + +"We're not getting arrested. We're exposing corporate negligence." #speaker:Victoria Zhang + +Marcus starts typing faster. + +"Victoria handles security. I'm just finishing the technical work." #speaker:Marcus Chen + +**T-MINUS 3:41** + ++ [Victoria, you're Digital Vanguard. Anti-corporate ideology.] -> victoria_motivation ++ [Marcus, you're Zero Day Syndicate. You sell exploits.] -> marcus_motivation ++ [Show them ENTROPY's true scope] -> show_casualties + +=== victoria_confrontation === +"Lower my weapon so you can stop us? Not happening." #speaker:Victoria Zhang + +"These corporations prioritize profits over security. People's data, people's privacy - they don't care. We're teaching them the cost." + +**T-MINUS 3:32** + ++ [By ransomwaring hospitals?] -> healthcare_argument ++ [Corporate security failures are real, but this isn't the answer.] -> empathy_approach ++ [You're not anti-corporate activists. You're ENTROPY weapons.] -> entropy_accusation + +=== marcus_confrontation === +Marcus finally looks up, calm. + +"I'm a businessman, Agent. I find vulnerabilities. I sell them. Market dynamics." #speaker:Marcus Chen + +"Except tonight, The Architect is paying VERY well for coordinated deployment. So here we are." + +Victoria glares at him. + +"It's not about money, Shadow. It's about accountability." + +Marcus shrugs. + +"You have your motivations. I have mine." + +**T-MINUS 3:19** + ++ [You're working together but want different things.] -> exploit_division ++ [Marcus, how much is The Architect paying you?] -> bribery_attempt + +=== exploit_division === +You recognize the crack in their alliance. + +"Victoria, you're ideological. Marcus, you're mercenary. Why are you working together?" + +Victoria: "Because we both benefit from exposing corporate failures." #speaker:Victoria Zhang + +Marcus: "Because the pay is exceptional and our methods align. Temporarily." #speaker:Marcus Chen + +**T-MINUS 3:04** + ++ [Victoria, does Marcus care about your cause?] -> divide_victoria ++ [Marcus, what happens when Victoria realizes you're just profiting?] -> divide_marcus + +=== divide_victoria === +"Shadow, do you even BELIEVE in corporate accountability? Or are you just here for the money?" #speaker:Victoria Zhang + +Marcus smiles slightly. + +"I believe in supply and demand. I supply exploits. You demand corporate punishment. The Architect pays both of us. Efficient." #speaker:Marcus Chen + +Victoria's expression hardens. She's realizing they're not ideological allies. + ++ [Show Victoria ENTROPY's true casualty scope] -> show_casualties ++ [Exploit this division further] -> continue_division + +=== show_casualties === +~ showed_victoria_casualties = true + +You pull up the classified briefing on your phone. + +"Operation Blackout: 240-385 civilian deaths from power grid failure." +"Operation Fracture: 187M identities stolen, 20-40 deaths from civil unrest." +"Operation Trojan Horse: 47M backdoor infections." + +Victoria stares at the projections. + +"This is all ENTROPY? Tonight? All coordinated?" #speaker:Victoria Zhang + +She looks at Marcus. + +"You KNEW about this?" + +Marcus remains calm. + +"I knew The Architect coordinates multiple cells. It's good business." + +Victoria's weapon wavers. + +"I thought we were punishing negligent corporations. Not... not killing hundreds of people." + +**T-MINUS 2:47** + ++ [You're part of something bigger than corporate accountability.] -> architect_revelation ++ [You can still stop this, Victoria.] -> victoria_recruitment + +=== architect_revelation === +"The Architect isn't about reform. They're about chaos. 'Accelerated entropy.'" #speaker:You + +You explain ENTROPY's structure. The coordinated cells. The philosophy. + +Victoria lowers her weapon slightly. + +"I joined Digital Vanguard to fight corporate corruption. To protect people from negligent companies. Not to... to be part of mass casualty terrorism." #speaker:Victoria Zhang + +Marcus interjects: + +"Motivations are irrelevant. The exploits are ready. Deployment proceeds." #speaker:Marcus Chen + +**T-MINUS 2:29** + +Victoria turns to Marcus, angry. + +"Shadow, people are DYING at the other targets. Did you know?" + +"I suspected. Didn't ask questions. Not my concern." #speaker:Marcus Chen + ++ [Victoria, help me stop this.] -> victoria_recruitment ++ [Shoot Marcus before he deploys] -> shoot_marcus + +=== victoria_recruitment === +"SAFETYNET needs people like you. Real security professionals who understand corporate negligence." #speaker:You + +"Help us expose these vulnerabilities PROPERLY. Regulation. Enforcement. Not terrorism." + +Victoria looks at the casualty projections, then at Marcus working at the terminal. + +"If I help you... those corporate security failures I've been documenting. SAFETYNET will force companies to fix them?" #speaker:Victoria Zhang + +**T-MINUS 2:14** + ++ [Yes. You'll work directly with regulatory enforcement.] -> recruitment_success ++ [I can't guarantee corporate compliance, but we'll try.] -> honest_answer + +=== recruitment_success === +~ victoria_recruited = true +~ victoria_fate = "recruited" + +Victoria makes her decision. She turns her weapon toward Marcus. + +"Shadow, stop the deployment. Now." #speaker:Victoria Zhang + +Marcus sighs. + +"I was wondering when you'd have a crisis of conscience. Fine." #speaker:Marcus Chen + +He rapidly types something. + +"Remote wipe initiated. Evidence deletion in progress. Goodbye, Victoria." + +He triggers a smoke grenade and vanishes through a pre-planned exit. + +~ marcus_escaped = true + +Victoria curses. + +"He's Ghost Protocol-trained. He's gone. But I can help you deploy countermeasures." + +Together you work frantically: +1. Use VM-extracted codes +2. Deploy patches to all 12 corporations +3. Neutralize exploit staging systems + +**T-MINUS 1:48** + +**COUNTERMEASURES DEPLOYED** +**ALL 47 ZERO-DAYS NEUTRALIZED** + +~ countermeasures_deployed = true + +Victoria steps back, hands raised. + +"I want immunity. And I want to help regulate corporate security for real." + ++ [You have my word.] -> victoria_cooperation ++ [You'll provide intelligence on Digital Vanguard first.] -> victoria_intelligence + +=== victoria_intelligence === +"I'll tell you everything. Cell structure. Corporate targets. The Architect's communications." #speaker:Victoria Zhang + +"But I want to help fix this system. That was always my goal." + +Director Morgan's voice: + +"Agreed. Victoria Zhang's intelligence is extremely valuable. Bring her in for debrief and contracting." #speaker:Director Morgan + ++ [Search for ENTROPY intelligence together] -> corporate_intel + +=== victoria_cooperation === +"Thank you for showing me what this really was. The Architect used my anger at corporations as a weapon." #speaker:Victoria Zhang + +"Let me help you search for intelligence. I know where The Architect's communications might be." + ++ [Search together] -> corporate_intel + +=== honest_answer === +"At least you're honest about the limits." #speaker:Victoria Zhang + +"I'll help anyway. Because 47 zero-days against hospitals is wrong. Even if corporations are negligent." + +-> recruitment_success + +=== shoot_marcus === +You fire at Marcus. He's already moving - hits his shoulder, not fatal. + +"Hostile! Accelerating deployment!" #speaker:Marcus Chen + +He slaps a key sequence and vanishes through his exit. + +**DEPLOYMENT ACCELERATED: T-MINUS 1:15** + +~ marcus_escaped = true + +Victoria is shocked by the violence. + +"Was that necessary?!" + +**T-MINUS 1:10** + ++ [Help me deploy countermeasures, now!] -> emergency_deployment ++ [Show her the casualty evidence] -> show_casualties + +=== emergency_deployment === +Victoria helps despite her shock. + +Together you frantically deploy countermeasures. + +**T-MINUS 0:44** + +You manage to neutralize MOST exploits, but not all. + +**PARTIAL SUCCESS: 34 zero-days stopped, 13 deployed** + +~ countermeasures_deployed = false + +Some healthcare ransomware succeeds. Some banking attacks go through. + +Limited damage instead of total economic collapse. + ++ [Arrest Victoria] -> victoria_arrested ++ [Recruit Victoria after showing casualties] -> show_casualties + +=== bribery_attempt === +"How much is The Architect paying you? I can double it." #speaker:You + +Marcus actually considers this. + +"Interesting. But The Architect pays in anonymized cryptocurrency with guaranteed future contracts. Can SAFETYNET match that?" #speaker:Marcus Chen + +**T-MINUS 2:52** + ++ [SAFETYNET doesn't negotiate with criminals.] -> bribery_failure ++ [Name your price.] -> bribery_negotiation + +=== bribery_negotiation === +Marcus names an astronomical figure. + +"Plus immunity for all past zero-day sales. And future consulting contracts." + +Victoria interrupts: + +"Shadow, you're seriously negotiating while people die?" #speaker:Victoria Zhang + +This creates division between them. + ++ [Exploit Victoria's disgust] -> divide_via_greed ++ [Accept Marcus's terms to buy time] -> false_deal + +=== divide_via_greed === +"Victoria, you see what he is? He doesn't care about corporate accountability. Just profit." #speaker:You + +Victoria looks at Marcus with contempt. + +"I knew you were mercenary, but THIS? While people die?" + +Marcus shrugs. + +"Business is business." + ++ [Victoria, help me stop this.] -> victoria_recruitment + +=== false_deal === +"Fine. Deal. Halt the deployment." #speaker:You + +Marcus grins. + +"You're lying. But points for trying." #speaker:Marcus Chen + +He continues working. + +-> exploit_division + +=== bribery_failure === +"Expected. Then we proceed with deployment." #speaker:Marcus Chen + +-> exploit_division + +=== continue_division === +"You're using each other. Victoria wants reform. Marcus wants money. Neither of you are achieving your real goals." #speaker:You + +Victoria lowers her weapon further, thinking. + +Marcus remains focused on the terminal. + +**T-MINUS 2:38** + ++ [Show Victoria the full casualty scope] -> show_casualties ++ [Appeal to Marcus's self-interest] -> marcus_self_interest + +=== marcus_self_interest === +"Marcus, when this goes sideways - and it will - The Architect disappears. Victoria gets caught or killed. And you? You're a wanted fugitive forever." #speaker:You + +"Is the payout worth that?" + +Marcus pauses for the first time. + +"The Architect guarantees extraction to Tomb Gamma if operations fail." + +"Do you TRUST that guarantee?" #speaker:You + +**T-MINUS 2:21** + ++ [Let me offer you a better deal.] -> bribery_negotiation ++ [Victoria, while he's thinking, make your choice.] -> victoria_decision_point + +=== victoria_decision_point === +Victoria looks at you, at Marcus, at the casualty projections. + +"I need to see the full scope. What's really happening tonight." + ++ [Show her ENTROPY's operations] -> show_casualties + +=== economic_argument === +"$4.2 trillion in market value destroyed. 140,000+ job losses. Healthcare ransomware killing patients." #speaker:You + +Victoria: "Corporations should have invested in security. This is the consequence." #speaker:Victoria Zhang + +Marcus: "Market volatility creates opportunity. I'm unconcerned." #speaker:Marcus Chen + +**T-MINUS 3:27** + ++ [Victoria, this isn't just punishing corporations - people lose jobs.] -> human_cost_argument ++ [Marcus, economic collapse affects you too.] -> marcus_economic_argument + +=== human_cost_argument === +"140,000 people losing their jobs. Families losing homes. Retirements wiped out. Those aren't corporations - those are people." #speaker:You + +Victoria hesitates. + +"I... I didn't think about layoffs. I thought this would just hurt shareholders." + ++ [Show her the full casualty picture] -> show_casualties + +=== healthcare_argument === +"Healthcare ransomware. 80-140 deaths from delayed surgeries and care." #speaker:You + +Victoria's face pales. + +"Healthcare? We're attacking HOSPITALS?" + +Marcus: "Collateral damage. Hospitals use exploitable software." #speaker:Marcus Chen + +Victoria: "That's not... that's not what I signed up for." + ++ [Show her what ENTROPY really is] -> show_casualties + +=== empathy_approach === +"I've read your research, Victoria. Your exposés on corporate data breaches. You were RIGHT about negligent security practices." #speaker:You + +She's surprised. + +"You read my work? Most government agents dismiss it as anti-corporate propaganda." + +**T-MINUS 2:55** + ++ [It wasn't propaganda. But this attack isn't the answer.] -> research_vs_attack ++ [Help me fix it the right way.] -> victoria_recruitment + +=== research_vs_attack === +"Exposing corporate negligence is legitimate. But killing people isn't." #speaker:You + +Victoria looks uncertain. + +"I thought... I thought this would just be financial damage. Punishing irresponsible companies." + ++ [Show her the human cost] -> show_casualties + +=== entropy_accusation === +"Digital Vanguard is part of ENTROPY. The Architect coordinates you with Ghost Protocol, Critical Mass, Social Fabric, Supply Chain Saboteurs." #speaker:You + +"This isn't activism. It's terrorism." + +Victoria: "ENTROPY? We're DIGITAL VANGUARD. We're independent." #speaker:Victoria Zhang + +Marcus: "Actually, The Architect coordinates all cells. I thought you knew." #speaker:Marcus Chen + +Victoria glares at him. + +"What?" + ++ [Show her the full ENTROPY operational picture] -> show_casualties + +=== divide_marcus === +"Marcus will sell you out the second it's profitable. You know that, right?" #speaker:You + +Marcus doesn't deny it. + +"If Victoria gets caught, that's her problem. I have extraction protocols." + +Victoria's trust in him cracks further. + ++ [Victoria, he's using you.] -> victoria_recruitment + +=== victoria_arrested === +~ victoria_fate = "arrested" + +"I understand. I made my choice." #speaker:Victoria Zhang + +SAFETYNET team takes her into custody. + +As they lead her away: + +"Those corporate vulnerabilities are still there. If you don't regulate enforcement, someone else will do what I tried." #speaker:Victoria Zhang + ++ [Search for intelligence] -> corporate_intel + +=== marcus_motivation === +"I'm a vulnerability researcher who realized selling is more profitable than reporting." #speaker:Marcus Chen + +"The Architect pays extremely well for coordinated deployment. Business opportunity." + +"I don't care about Victoria's ideology or The Architect's philosophy. I care about cryptocurrency transfers." + +**T-MINUS 3:09** + ++ [You're enabling terrorism for profit.] -> moral_accusation_marcus ++ [Offer him a deal] -> bribery_negotiation + +=== moral_accusation_marcus === +"I'm enabling market corrections. Corporations should pay for security failures." #speaker:Marcus Chen + +He's completely amoral about it. + +-> exploit_division + +=== victoria_motivation === +She's passionate about this. + +"I worked in corporate security for eight years. I SAW the negligence. Board meetings where security budgets were cut for executive bonuses." #speaker:Victoria Zhang + +"Data breaches that hurt customers, but companies paid small fines and moved on." + +"Tonight, they learn. Real consequences." + +**T-MINUS 3:24** + ++ [By hurting innocent employees?] -> human_cost_argument ++ [Your anger is justified, but this method isn't.] -> empathy_approach + +=== corporate_intel === +You search the TechCore Security Operations Center. + +**FOUND: Tomb Gamma Coordinates** +Victoria's encrypted communication: +* Location: Abandoned Cold War bunker, Montana wilderness +* Coordinates: 47.2382° N, 112.5156° W +* Message: "If operation fails, extract to Tomb Gamma" + +**FOUND: SAFETYNET Mole Evidence** +Intercepted email: +* From: [REDACTED]@safetynet.gov +* To: architect@entropy.onion +* Subject: Target selection confirmed +* Body: "0x00 to corporate warfare. Teams handle infrastructure/data/supply chain" + +{victoria_recruited == true: + **FOUND: Digital Vanguard Intelligence (from Victoria)** + * Cell structure and membership + * Corporate target assessments + * The Architect's coordination methods + * Future attack plans +} + +-> END + +-> END diff --git a/scenarios/m07_architects_gambit/ink/m07_crisis_data.ink b/scenarios/m07_architects_gambit/ink/m07_crisis_data.ink new file mode 100644 index 0000000..d0eb06a --- /dev/null +++ b/scenarios/m07_architects_gambit/ink/m07_crisis_data.ink @@ -0,0 +1,609 @@ +// Mission 7: Option B - Data Apocalypse +// Dual antagonists: Specter (Ghost Protocol) + Rachel Morrow (Social Fabric) + +VAR exfiltration_progress = 87 // Starts at 87%, reaches 100% if not stopped +VAR disinformation_countdown = 30 // Minutes until deployment +VAR confronted_specter = false +VAR confronted_rachel = false +VAR showed_rachel_casualties = false +VAR rachel_recruited = false +VAR specter_escaped = false +VAR exfiltration_stopped = false +VAR disinformation_stopped = false +VAR rachel_fate = "" // "recruited", "arrested", "escaped" +VAR player_priority = "" // "exfiltration" or "disinformation" + +=== crisis_encounter === +You enter the Network Operations Center. Two figures are present: + +**SPECTER** stands at the voter database server vault, monitoring exfiltration progress. Masked, voice scrambled. Professional. + +**RACHEL MORROW** sits at the Social Fabric content server, reviewing disinformation narratives ready for deployment. + +They both turn as you enter. + +"Agent 0x00. We've been expecting you." #speaker:Specter + +Rachel stands, defensive but not aggressive. + +"You're here to stop us. But do you even understand what we're exposing?" #speaker:Rachel Morrow + +**DUAL TIMERS ACTIVE:** +**Exfiltration Progress: 87% → 100%** +**Disinformation Deployment: T-MINUS 30:00** + ++ [You're under arrest. Both of you.] -> arrest_attempt ++ [Step away from those servers.] -> demand_compliance ++ [What are you exposing, Rachel?] -> rachel_motivation ++ [Specter, I know who you are.] -> specter_confrontation + +=== arrest_attempt === +Specter laughs - distorted, mechanical through the voice scrambler. + +"Arrest? I'm Ghost Protocol. We don't get arrested." #speaker:Specter + +Rachel looks conflicted. + +"We're exposing corruption. Election systems ARE vulnerable. Voter data ISN'T secure. We're proving it." #speaker:Rachel Morrow + +**Exfiltration: 89%** +**Deployment: T-MINUS 28:47** + ++ [Rachel, this isn't exposing corruption - it's causing chaos.] -> rachel_moral_argument ++ [Specter, you're stealing 187 million people's identities.] -> specter_accusation ++ [I need to prioritize. Which threat first?] -> prioritization_choice + +=== prioritization_choice === +You assess the situation. Two threats, limited time. + +**THREAT 1: DATA EXFILTRATION** +* Currently 89% complete +* 187 million voter records +* 4-8 million identity theft victims over 5 years +* Long-term damage + +**THREAT 2: DISINFORMATION DEPLOYMENT** +* T-minus 28 minutes +* Democratic crisis, civil unrest +* 20-40 immediate deaths +* Constitutional implications + ++ [Stop the data breach first] -> choose_exfiltration_priority ++ [Stop the disinformation first] -> choose_disinformation_priority ++ [Try to stop both simultaneously] -> attempt_both + +=== choose_exfiltration_priority === +~ player_priority = "exfiltration" + +You rush toward Specter and the database servers. + +"Interesting choice. Data over democracy." #speaker:Specter + +Rachel looks hurt. + +"So you care more about records than about truth?" #speaker:Rachel Morrow + +**Focus: EXFILTRATION** + ++ [Shut down the data transfer] -> exfiltration_confrontation ++ [Talk to Specter while working] -> specter_dialogue + +=== choose_disinformation_priority === +~ player_priority = "disinformation" + +You rush toward Rachel and the content servers. + +"Smart. The narratives are the real weapon." #speaker:Rachel Morrow + +Specter continues working at the database. + +"While you stop her, I finish my work. Acceptable trade." #speaker:Specter + +**Focus: DISINFORMATION** + ++ [Disable the deployment system] -> disinformation_confrontation ++ [Rachel, listen to me] -> rachel_recruitment_path + +=== attempt_both === +"Ambitious. But you're one person. We're two." #speaker:Specter + +**Exfiltration: 91%** +**Deployment: T-MINUS 27:15** + +Attempting both means splitting focus. This will be difficult. + ++ [Focus on exfiltration first, then disinformation] -> choose_exfiltration_priority ++ [Focus on disinformation first, then exfiltration] -> choose_disinformation_priority + +=== exfiltration_confrontation === +~ confronted_specter = true + +You access the voter database servers using your extracted VM codes. + +Specter watches, hands moving on a secondary keyboard. + +"You're good. But I'm better. I've been doing this since you were in training." #speaker:Specter + +**Exfiltration: 93%** + ++ [Use the shutdown codes from the VM] -> exfiltration_technical ++ [Physically disconnect the servers] -> physical_approach_exfiltration ++ [Who are you really, Specter?] -> specter_identity_question + +=== exfiltration_technical === +You enter the shutdown codes extracted from the NFS shares. + +The exfiltration begins to slow... 95%... 96%... holding... + +"Clever. But I have redundancy." #speaker:Specter + +He triggers a backup transfer channel. + +97%... 98%... + ++ [Disable the backup channel] -> exfiltration_race ++ [Cut the network cable physically] -> physical_interrupt + +=== exfiltration_race === +Fingers flying, you disable the backup channel just as it hits 99%. + +**EXFILTRATION STOPPED AT 99%** + +~ exfiltration_stopped = true + +Specter sighs - almost impressed. + +"99%. So close. You saved 1.87 million records. Congratulations." #speaker:Specter + +He stands, moving toward an exit. + +"But I still have 185 million. Ghost Protocol thanks you for your partial success." + +~ specter_escaped = true + +He vanishes through a hidden exit. Gone. + +**BUT: Disinformation deployment still active - T-MINUS 24:32** + ++ [Rush to stop Rachel's disinformation] -> late_disinformation_attempt ++ [Let the disinformation deploy, you stopped the breach] -> accept_partial_success + +=== late_disinformation_attempt === +You sprint to the Social Fabric content servers. + +Rachel is at the keyboard, timer counting down. + +"Too late, Agent. You chose data. I'm choosing truth." #speaker:Rachel Morrow + +**T-MINUS 22:18** + ++ [Show her ENTROPY casualty evidence] -> rachel_late_recruitment ++ [Force her away from the terminal] -> rachel_physical_confrontation ++ [Disable the server while she watches] -> race_against_rachel + +=== rachel_late_recruitment === +{showed_rachel_casualties == false: + -> show_rachel_casualties +} + +{showed_rachel_casualties == true: + "I already know The Architect's plan. That's why I'm hesitating." #speaker:Rachel Morrow + + **T-MINUS 20:45** + + + [Then help me stop this] -> rachel_cooperation +} + +=== disinformation_confrontation === +~ confronted_rachel = true + +You access the Social Fabric content servers. + +Rachel doesn't stop you - she wants to talk. + +"Do you know what we're deploying? Not lies. TRUTH." #speaker:Rachel Morrow + +She shows you the content: +* Real election security vulnerabilities (from leaked reports) +* Actual voter database breaches (from the current exfiltration) +* Genuine concerns about election integrity + +"This is real. The system IS compromised. We're just making people SEE it." + +**Deployment: T-MINUS 25:33** +**Exfiltration: 92% (Specter still working)** + ++ [This will cause civil unrest. People will die.] -> rachel_casualties_argument ++ [You're weaponizing real concerns.] -> weaponization_argument ++ [Show her the full ENTROPY plan] -> show_rachel_casualties + +=== show_rachel_casualties === +~ showed_rachel_casualties = true + +You pull up the classified briefing on your phone. The full picture. + +"Operation Blackout: 240-385 deaths from power grid failure." +"Operation Trojan Horse: 47 million backdoor infections." +"Operation Meltdown: 80-140 healthcare deaths." + +Rachel stares at the data. + +"This... this is all tonight? All ENTROPY?" #speaker:Rachel Morrow + +Her hands stop moving on the keyboard. + +"The Architect told us this was about exposing election corruption. Not... coordinated mass casualty attacks." + +**Deployment: T-MINUS 23:47** + ++ [You're part of something bigger than disinformation] -> architect_revelation ++ [You can still stop this] -> rachel_recruitment_offer + +=== rachel_recruitment_offer === +"Work with SAFETYNET. Help us dismantle Social Fabric from the inside. Provide intelligence on The Architect." #speaker:You + +Rachel looks at the disinformation content, then at the casualty projections. + +"I thought I was a truth-teller. An activist. Not... not a terrorist." #speaker:Rachel Morrow + +She steps away from the keyboard. + +"How do I stop it?" + +~ rachel_recruited = true +~ rachel_fate = "recruited" + +**Deployment: T-MINUS 21:29** + +Together, you disable the disinformation deployment system. + +**DISINFORMATION STOPPED** + +~ disinformation_stopped = true + +Rachel looks at you. + +"I want to help. I have intelligence on Social Fabric cells nationwide. Narrative strategies. The Architect's communications." + +**BUT: Exfiltration is at 94% and climbing** + ++ [Help me stop the data breach too] -> rachel_helps_exfiltration ++ [Focus on securing disinformation evidence] -> accept_partial_success_data + +=== rachel_helps_exfiltration === +"I know Specter's methods. Let me help." #speaker:Rachel Morrow + +Together you rush to the database servers. + +**Exfiltration: 96%** + +Specter sees you both coming. + +"Betrayal, Rachel? The Architect won't forgive this." #speaker:Specter + +Rachel doesn't hesitate. She has admin access to the facility systems. + +"Cutting network to database vault. Now." + +**EXFILTRATION STOPPED AT 96%** + +~ exfiltration_stopped = true + +Specter curses. + +"Ghost Protocol will remember this." + +He vanishes through his exit route. + +~ specter_escaped = true + +**BOTH ATTACKS STOPPED - PARTIAL SUCCESS** + +Rachel looks at you. + +"Thank you for showing me the truth. The REAL truth." + ++ [Search for ENTROPY intelligence] -> data_branch_intel ++ [Debrief with Rachel] -> rachel_debriefing + +=== rachel_debriefing === +"I need to tell you everything I know about Social Fabric and The Architect." #speaker:Rachel Morrow + +She provides critical intelligence: +* 47 Social Fabric cells nationwide +* Narrative weaponization techniques +* The Architect's communication methods +* Planned future disinformation campaigns + +"I was blind. I thought we were freedom fighters. We're... we were tools for chaos." + ++ [You made the right choice] -> rachel_redemption ++ [You'll still face charges] -> rachel_consequences + +=== rachel_redemption === +"I'll do whatever it takes to make this right. Testify. Provide evidence. Dismantle Social Fabric." #speaker:Rachel Morrow + +Director Morgan's voice on comm: + +"Both attacks neutralized. Rachel Morrow's intelligence is extremely valuable. Bring her in for full debrief." #speaker:Director Morgan + ++ [Search for additional ENTROPY intelligence] -> data_branch_intel + +=== rachel_consequences === +"I know. I accept that." #speaker:Rachel Morrow + +"But let me help first. Let me do something good before I face justice." + ++ [Provide your intelligence, then we'll discuss terms] -> rachel_debriefing + +=== architect_revelation === +"The Architect isn't exposing corruption. They're CREATING chaos." #speaker:You + +You explain ENTROPY's structure. The coordinated cells. The philosophy of "accelerated entropy." + +Rachel's face pales. + +"I joined Social Fabric to fight disinformation with truth. Not... not THIS." + +-> rachel_recruitment_offer + +=== physical_interrupt === +You pull the network cable from the server rack. + +**EXFILTRATION STOPPED AT 98%** + +~ exfiltration_stopped = true + +Specter stands slowly. + +"Physical approach. Inelegant, but effective. You saved 3.74 million records." #speaker:Specter + +"I still have 183 million. Acceptable loss." + +He escapes through his pre-planned exit. + +~ specter_escaped = true + ++ [Rush to stop Rachel] -> late_disinformation_attempt + +=== specter_dialogue === +While you work on stopping the exfiltration, you try to engage Specter. + +"Why steal voter data? What's your endgame?" #speaker:You + +"Information wants to be free. Governments surveil citizens constantly. We're evening the score." #speaker:Specter + +"Besides, this data was never secure. I'm proving that." + +-> exfiltration_technical + +=== specter_identity_question === +"Former NSA. You know the techniques. The mindset. Why turn?" #speaker:You + +"I didn't turn. I evolved." #speaker:Specter + +"I spent ten years surveilling Americans for 'national security.' Then I realized - we're all being surveilled. By everyone. So why not expose it?" + +**Exfiltration: 95%** + ++ [This isn't exposure - it's exploitation] -> moral_argument_specter ++ [Keep working on shutdown codes] -> exfiltration_technical + +=== moral_argument_specter === +"You're not freeing information. You're stealing identities. 187 million people will suffer." #speaker:You + +"They're already suffering. They just don't know it yet. I'm teaching them." #speaker:Specter + +He won't be convinced. + +**Exfiltration: 97%** + ++ [Stop talking, focus on stopping him] -> exfiltration_race + +=== accept_partial_success === +You've stopped the exfiltration at 99%. That's a win. + +But the disinformation deploys... + +**DISINFORMATION CAMPAIGN LAUNCHED** + +Across social media platforms, coordinated narratives spread: +* "Voter database breached - elections can't be trusted" +* "Government admits election fraud" +* Deepfake videos of officials + +Civil unrest begins within hours. The democratic crisis unfolds. + +**PARTIAL SUCCESS: Exfiltration stopped, Disinformation succeeded** + ++ [Search for intelligence] -> data_branch_intel ++ [Report to Director Morgan] -> partial_failure_debrief + +=== accept_partial_success_data === +You've stopped the disinformation. Democracy is secure. + +But Specter completes the exfiltration... + +**DATA BREACH COMPLETE: 187 Million Records Stolen** + +The largest data breach in history. Identity theft wave incoming over the next 5 years. + +**PARTIAL SUCCESS: Disinformation stopped, Exfiltration succeeded** + ++ [Search for intelligence with Rachel's help] -> data_branch_intel ++ [Debrief with Rachel] -> rachel_debriefing + +=== race_against_rachel === +You work frantically to disable the deployment system while Rachel tries to defend it. + +**T-MINUS 18:22** + +She's not a technical expert - you overpower her access. + +**DISINFORMATION STOPPED** + +~ disinformation_stopped = true + +Rachel slumps in defeat. + +"You don't understand. The system IS corrupt. I was trying to show people..." + ++ [Show her the ENTROPY casualty evidence] -> show_rachel_casualties ++ [Arrest her] -> rachel_arrested + +=== rachel_arrested === +~ rachel_fate = "arrested" + +"I believe in what I was doing. You can't arrest the truth." #speaker:Rachel Morrow + +SAFETYNET tactical team arrives to take her into custody. + +She doesn't resist, but she doesn't cooperate either. + +**BUT: Exfiltration at 95% and climbing** + ++ [Try to stop Specter's exfiltration] -> exfiltration_confrontation + +=== data_branch_intel === +You search the Network Operations Center for ENTROPY intelligence. + +**FOUND: Tomb Gamma Coordinates** +Encrypted communication from Specter: +* Location: Abandoned Cold War bunker, Montana +* Coordinates: 47.2382° N, 112.5156° W +* Message: "All operations report to Tomb Gamma if compromised" + +**FOUND: SAFETYNET Mole Evidence** +Intercepted email: +* From: [REDACTED]@safetynet.gov +* To: architect@entropy.onion +* Subject: Target assignments confirmed +* Body: "0x00 to election security. Teams Alpha/Bravo/Charlie on other targets" + +{rachel_recruited == true: + **FOUND: Social Fabric Intelligence (from Rachel)** + * 47 Social Fabric cells nationwide + * Narrative deployment strategies + * The Architect's communication methods +} + +-> END + +=== rachel_physical_confrontation === +You physically pull Rachel from the terminal. + +She fights back - not trained, but desperate. + +"You don't understand! People NEED to know the truth!" + +**T-MINUS 19:47** + ++ [Restrain her and disable the system] -> force_shutdown_disinformation ++ [Show her the casualty evidence while restraining her] -> show_rachel_casualties + +=== force_shutdown_disinformation === +You restrain Rachel and disable the disinformation deployment. + +**DISINFORMATION STOPPED** + +~ disinformation_stopped = true +~ rachel_fate = "arrested" + +"You're protecting a lie..." #speaker:Rachel Morrow + ++ [Search for intelligence] -> data_branch_intel + +=== rachel_cooperation === +She helps you disable the deployment system. + +**DISINFORMATION STOPPED** + +~ disinformation_stopped = true +~ rachel_recruited = true +~ rachel_fate = "recruited" + +"What about the exfiltration?" + +**Exfiltration: 93%** + ++ [Help me stop that too] -> rachel_helps_exfiltration + +=== weaponization_argument === +"Real concerns can be weaponized. That's exactly what you're doing." #speaker:You + +Rachel hesitates. + +"I... I thought I was helping. Exposing corruption." + +-> show_rachel_casualties + +=== rachel_casualties_argument === +"Your narratives will cause civil unrest. 20-40 deaths projected in the first week." #speaker:You + +"That's... that's not what The Architect told us. They said this would just be 'uncomfortable truths.'" + +-> show_rachel_casualties + +=== partial_failure_debrief === +Director Morgan's voice is grim. + +"Disinformation is spreading. We're seeing civil unrest in 12 major cities. Casualty count rising." #speaker:Director Morgan + +"But you stopped the data breach. 187 million identities secure. That's something." + +{exfiltration_stopped == true and disinformation_stopped == false: + "Partial success. Data saved, democracy in crisis." +} + +{exfiltration_stopped == false and disinformation_stopped == true: + "Partial success. Democracy saved, but largest data breach in history." +} + +-> END + +=== demand_compliance === +Specter: "No." #speaker:Specter + +Rachel: "We're doing important work here." #speaker:Rachel Morrow + +**Exfiltration: 88%** +**Deployment: T-MINUS 29:12** + +-> prioritization_choice + +=== rachel_motivation === +Rachel's eyes light up - someone's asking, not just attacking. + +"Election systems are vulnerable. Voter data isn't secure. The government LIES about it." #speaker:Rachel Morrow + +"We're just making the truth visible. That's not terrorism - it's journalism." + ++ [By stealing 187 million identities?] -> exfiltration_accusation ++ [Show her the full ENTROPY plan] -> show_rachel_casualties + +=== exfiltration_accusation === +"That's Specter's work, not mine. I'm handling narratives - truth-telling." #speaker:Rachel Morrow + +Specter interjects: + +"The data proves the vulnerabilities Rachel will expose. We're a team." #speaker:Specter + ++ [You're both part of ENTROPY's chaos] -> entropy_accusation + +=== entropy_accusation === +Rachel looks uncertain. + +"ENTROPY? We're Social Fabric. We expose disinformation." + +"By CREATING it, apparently." #speaker:You + +-> show_rachel_casualties + +=== specter_confrontation === +"You think you know me? Nobody knows me. That's the point." #speaker:Specter + +"I'm a ghost. Always have been." + +-> exfiltration_confrontation + +-> END diff --git a/scenarios/m07_architects_gambit/ink/m07_crisis_infrastructure.ink b/scenarios/m07_architects_gambit/ink/m07_crisis_infrastructure.ink new file mode 100644 index 0000000..75f4b22 --- /dev/null +++ b/scenarios/m07_architects_gambit/ink/m07_crisis_infrastructure.ink @@ -0,0 +1,614 @@ +// Mission 7: Option A - Infrastructure Collapse +// Marcus "Blackout" Chen - SCADA Control Room Confrontation + +VAR confronted_chen = false +VAR chen_threatened_timer = false +VAR showed_casualty_evidence = false +VAR chen_hesitating = false +VAR chen_fate = "" // "arrested", "killed", "recruited", "escaped" +VAR crisis_neutralized = false + +=== confrontation === +You burst into the SCADA control room. + +Marcus "Blackout" Chen stands at the master control terminal, fingers flying across the keyboard. The countdown timer on the wall reads: **T-MINUS 3:47** + +He doesn't turn around immediately. + +"Agent 0x00. Right on schedule." #speaker:Marcus Chen + +He finally turns to face you. Mid-thirties, engineer's demeanor, calm despite your entry. A pistol rests on the terminal beside him - within reach, but he doesn't move for it. + +"I calculated you'd arrive between 3 and 4 minutes remaining. SAFETYNET training is predictable." + +He gestures to the terminal. + +"Look at this system. 147 substations. 8.4 million people. All controlled by software last updated in 2011. Security patches from 2018. This infrastructure is a disaster waiting to happen." + ++ [Hands up, Chen. You're under arrest.] -> attempt_arrest ++ [Step away from the terminal.] -> demand_compliance ++ [Why are you doing this?] -> chen_motivation ++ [Your attack will kill hundreds of people.] -> casualties_argument + +=== attempt_arrest === +~ confronted_chen = true + +"Under arrest? For what? Exposing the truth?" #speaker:Marcus Chen + +He doesn't move toward the gun, but he doesn't raise his hands either. + +"I worked for the Department of Energy for six years. I WROTE security reports about these exact vulnerabilities. I BEGGED them to upgrade these systems." + +His voice is cold, controlled. + +"They ignored me. Budget constraints, they said. Not a priority. Well, tonight it's a priority." + +The timer ticks down: **T-MINUS 3:21** + ++ [People will die if you don't stop this.] -> casualties_argument ++ [Your methods are terrorism.] -> terrorism_accusation ++ [Let me help you do this the right way.] -> alternative_approach + +=== demand_compliance === +He laughs - bitter, not amused. + +"Or what? You'll shoot me? Then the timer keeps running and you have no way to stop it." #speaker:Marcus Chen + +He's right. You need him alive to get the shutdown codes. + +"Besides, I'm not your enemy. The system is. I'm just the teacher delivering an expensive lesson." + +**T-MINUS 3:14** + ++ [What do you want?] -> chen_demands ++ [Why target civilians?] -> civilians_question ++ [I read your DoE reports. You were right.] -> acknowledge_validity + +=== chen_motivation === +His expression shifts - this is the question he's been waiting for. + +"Eight years ago, I discovered critical vulnerabilities in the Pacific Northwest power grid control systems. SCADA networks with default passwords. Unencrypted command channels. No intrusion detection." #speaker:Marcus Chen + +"I reported it through proper channels. DoE. FERC. DHS. I documented everything. Provided recommendations. Budgets. Implementation timelines." + +He gestures at the screens showing the power grid. + +"Know what happened? Nothing. ABSOLUTELY NOTHING. Budget reallocated to 'higher priorities.' My security clearance was revoked for 'making alarmist claims.'" + +His voice hardens. + +"If they won't fix vulnerabilities when I ASK nicely, maybe they'll fix them when I DEMONSTRATE catastrophically." + +**T-MINUS 2:58** + ++ [So you're killing people to prove a point?] -> casualties_argument ++ [The system failed you. I get it.] -> empathy_approach ++ [There are other ways to expose this.] -> alternative_approach + +=== casualties_argument === +{showed_casualty_evidence == false: + He pulls up projections on a secondary screen. + + "240 to 385 deaths over 72 hours. I know the numbers, Agent. I calculated them myself." #speaker:Marcus Chen + + "120 to 180 hospital deaths from generator failures. 40 to 65 traffic fatalities. 80 to 140 exposure deaths from hypothermia." + + He meets your eyes. + + "Every single one of those deaths is the government's fault. They had EIGHT YEARS to fix this. The blood is on THEIR hands, not mine." + + **T-MINUS 2:39** + + + [Show him evidence of other ENTROPY casualties] -> show_casualties + + [That's rationalizing murder] -> moral_condemnation + + [You're right about the vulnerabilities] -> acknowledge_validity +} + +{showed_casualty_evidence == true: + He's staring at the casualty projections you showed him from the other operations. + + His hands have stopped moving on the keyboard. + + "This... this is all ENTROPY? Tonight?" #speaker:Marcus Chen + + ~ chen_hesitating = true + + **T-MINUS 2:12** + + + [You're part of something bigger than infrastructure] -> reveal_architect + + [You can still stop this] -> offer_redemption +} + +=== show_casualties === +~ showed_casualty_evidence = true + +You pull up the classified briefing on your phone. The full picture of tonight's coordinated attacks. + +"Operation Fracture: 187 million voter records stolen, 20-40 deaths from civil unrest." + +"Operation Trojan Horse: 47 million systems infected with backdoors." + +"Operation Meltdown: 80-140 healthcare deaths from ransomware, $4.2 trillion economic damage." + +You show him the screen. + +"Your attack is ONE of FOUR happening RIGHT NOW. All coordinated by The Architect. You're not a teacher, Marcus. You're a weapon." + +He stares at the data. For the first time, uncertainty crosses his face. + +"I... The Architect said this was about infrastructure security. Exposing critical vulnerabilities. Not..." #speaker:Marcus Chen + +He trails off, looking at the casualty numbers. + +**T-MINUS 2:24** + ++ [You were used. Help me stop this.] -> recruitment_attempt ++ [Does this change anything?] -> test_resolve + +=== terrorism_accusation === +"Terrorism? I prefer 'forceful penetration testing.'" #speaker:Marcus Chen + +He's not joking. + +"The government calls whistle-blowers terrorists. Calls security researchers hackers. Labels anyone who exposes their incompetence as criminals." + +"I'm not a terrorist. I'm a teacher. And tuition is expensive." + +**T-MINUS 2:45** + ++ [This isn't teaching. It's murder.] -> moral_condemnation ++ [I understand your frustration] -> empathy_approach + +=== alternative_approach === +"Other ways? I TRIED other ways!" #speaker:Marcus Chen + +His calm cracks for the first time. Anger bleeding through. + +"Congressional testimony. Media interviews. Academic publications. FREEDOM OF INFORMATION ACT REQUESTS." + +"Know what happened? Nothing. News cycle moved on. Politicians ignored it. Infrastructure kept decaying." + +He gestures at the terminal. + +"This? This they can't ignore. Tomorrow morning, every news channel will cover grid vulnerabilities. Congress will hold hearings. Budgets will be allocated." + +"If 240 people have to die to save millions from future attacks, that's a trade I'm willing to make." + +**T-MINUS 2:18** + ++ [That's not your choice to make] -> moral_condemnation ++ [Show him the broader ENTROPY plan] -> show_casualties + +=== empathy_approach === +You lower your weapon slightly. + +"I read your reports, Marcus. You were right. The vulnerabilities are real. The government DID fail to act." + +His expression shifts - surprise. + +"You... you read my work?" #speaker:Marcus Chen + +"Not many people did. Most said I was being alarmist. Paranoid. That I didn't understand budget realities." + +**T-MINUS 2:31** + ++ [But this isn't the answer] -> offer_alternative ++ [Help me understand your plan] -> technical_discussion + +=== offer_alternative === +"What alternative? I tried EVERYTHING." #speaker:Marcus Chen + +"The system doesn't change through proper channels. It only changes through crisis." + +**T-MINUS 2:08** + ++ [Work with SAFETYNET. We can expose this properly.] -> recruitment_attempt ++ [The crisis is happening. People are listening now.] -> crisis_argument + +=== crisis_argument === +"You're right. They're listening NOW. Because there's a timer." #speaker:Marcus Chen + +He looks at you seriously. + +"If I stop this, they forget. Budget meeting next month, someone says 'Well, we didn't have a blackout, so maybe it's not urgent.'" + +"The only way change happens is through consequence." + +**T-MINUS 1:52** + ++ {showed_casualty_evidence == true} [You're causing consequences across multiple targets] -> architect_reveal ++ [Let me help you find another way] -> final_recruitment_attempt ++ [Time's up, Chen. Shutdown codes. Now.] -> force_compliance + +=== reveal_architect === +"The Architect isn't exposing vulnerabilities. They're weaponizing them." #speaker:Marcus Chen + +You explain ENTROPY's true structure. The coordinated cells. The philosophy of "accelerated entropy." + +Marcus stares at the SCADA terminal, then at the casualty projections. + +"I thought... I thought this was about security research. Forcing the government to take infrastructure seriously." #speaker:Marcus Chen + +"But four simultaneous attacks? That's not research. That's..." + +He trails off. + +**T-MINUS 1:41** + ++ [It's warfare. And you're part of it.] -> moral_revelation ++ [Help me stop this. You can still make this right.] -> final_recruitment_attempt + +=== moral_revelation === +~ chen_hesitating = true + +He pulls his hands away from the keyboard. + +"I wanted to teach lessons. Not... not start a war." #speaker:Marcus Chen + +For the first time, he looks uncertain. + +"But if I stop this now, does it matter? The vulnerabilities still exist. Nothing changes." + +**T-MINUS 1:29** + ++ [Work with SAFETYNET. We'll make it public.] -> final_recruitment_attempt ++ [It matters to the 240 people who won't die.] -> moral_imperative ++ [Give me the shutdown codes or I take them by force] -> threat_escalation + +=== recruitment_attempt === +{showed_casualty_evidence == false: + "Recruitment? You think I'd work for the same government that ignored my warnings?" #speaker:Marcus Chen + + "Not interested." + + **T-MINUS 2:06** + + + [Show him the full ENTROPY casualty picture] -> show_casualties + + [This is your last chance] -> threat_escalation +} + +{showed_casualty_evidence == true and chen_hesitating == true: + -> final_recruitment_attempt +} + +=== final_recruitment_attempt === +"SAFETYNET isn't DoE or FERC. We act on real threats." #speaker:You + +"You have expertise we need. Help us secure critical infrastructure PROPERLY. No bureaucracy. No budget committees. Direct action." + +Marcus looks at the timer. Looks at the casualty projections. Looks at you. + +"If I help you... those vulnerabilities I documented. SAFETYNET will fix them? Actually fix them?" #speaker:Marcus Chen + +**T-MINUS 1:17** + ++ [Yes. I guarantee it.] -> recruitment_success ++ [I can't guarantee anything, but we'll try] -> honest_answer + +=== recruitment_success === +He takes a long breath. Then his hands move to the keyboard. + +"Shutdown sequence requires three steps. Watch carefully - if I screw this up, the timer accelerates." #speaker:Marcus Chen + +He walks you through the process: +1. Deactivation codes from the NFS shares you extracted +2. Master override password (which he provides) +3. Physical kill switch behind the panel + +**T-MINUS 0:54** + +"There. Cascade failure sequence disabled. Grid is secure." + +The timer stops. The red warning lights go dark. + +Marcus steps away from the terminal, hands raised. + +"I want it in writing. SAFETYNET hires me as infrastructure security consultant. And those vulnerabilities get fixed. All of them." #speaker:Marcus Chen + +~ crisis_neutralized = true +~ chen_fate = "recruited" + ++ [You have my word] -> recruitment_conclusion ++ [You'll still face charges] -> qualified_recruitment + +=== honest_answer === +"At least you're honest." #speaker:Marcus Chen + +He appreciates that. + +"Alright. I'll help. Not because I trust the government. Because I don't trust The Architect." + +He provides the shutdown sequence, same as above. + +**T-MINUS 0:49** + +The attack is neutralized. + +~ crisis_neutralized = true +~ chen_fate = "recruited" + +"I'm still angry about the eight years of ignored warnings. But... maybe this is a better path than mass casualties." + +-> recruitment_conclusion + +=== recruitment_conclusion === +Director Morgan's voice comes through your comm. + +"Attack neutralized. Grid secure. Outstanding work, 0x00. Bring Chen in for debrief." #speaker:Director Morgan + +Marcus looks at you. + +"I'm trusting you on this. Don't make me regret it." #speaker:Marcus Chen + +You escort him toward the exit. He stops at the door, looking back at the SCADA terminal. + +"Eight years. That's how long it took for anyone to take this seriously." + +"Let's make sure it doesn't take another crisis." + ++ [Search for ENTROPY intelligence] -> post_mission_intel ++ [Proceed to extraction] -> END + +=== moral_imperative === +"240 people..." #speaker:Marcus Chen + +He's wavering. + +"You're right. I calculated the numbers, but I didn't... I didn't think about them as people. Just statistics. Necessary losses." + +He looks at you. + +"That's what The Architect does, isn't it? Makes you think in numbers instead of lives." + +**T-MINUS 1:08** + ++ [Help me stop this] -> compliance_granted ++ [Give me the codes. Now.] -> compliance_granted + +=== compliance_granted === +He nods slowly, hands moving to the keyboard. + +"Three-step shutdown. I'll walk you through it." #speaker:Marcus Chen + +He provides the deactivation sequence using your extracted intelligence plus his admin credentials. + +**T-MINUS 0:44** + +The attack is neutralized. Timer stops. Grid secure. + +~ crisis_neutralized = true +~ chen_fate = "arrested" + +"I'm done fighting. Take me in." #speaker:Marcus Chen + +He places his hands behind his head. No resistance. + +"For what it's worth... I really did think I was doing the right thing." + ++ [You were used by The Architect] -> arrest_conclusion ++ [You're responsible for your choices] -> harsh_arrest + +=== arrest_conclusion === +"Yeah. I see that now." #speaker:Marcus Chen + +SAFETYNET tactical team arrives to take him into custody. + +As they lead him away, he looks back. + +"Agent 0x00. Those vulnerabilities I documented - they're still there. If you don't fix them, someone else will do what I tried to do." #speaker:Marcus Chen + +"And next time, maybe they won't hesitate." + ++ [Search for ENTROPY intelligence] -> post_mission_intel ++ [Proceed to extraction] -> END + +=== harsh_arrest === +"I know." #speaker:Marcus Chen + +He doesn't argue. SAFETYNET team takes him into custody without incident. + ++ [Search for ENTROPY intelligence] -> post_mission_intel ++ [Proceed to extraction] -> END + +=== threat_escalation === +~ chen_threatened_timer = true + +His hand moves toward the keyboard. Hovering over a key sequence. + +"You want to threaten me? Fine. This is the master accelerate command. One keystroke, timer drops to 30 seconds. No way you disable it in time." #speaker:Marcus Chen + +"So here's MY deal: Let me walk out of here, and I'll give you the shutdown codes. Or we both lose." + +**T-MINUS 1:33** + ++ [You're bluffing] -> call_bluff ++ [Fine. Give me the codes and go] -> let_him_escape ++ {showed_casualty_evidence == true} [You're not a mass murderer, Marcus] -> appeal_humanity ++ [Shoot him before he hits the key] -> shoot_chen + +=== call_bluff === +"Try me." #speaker:Marcus Chen + +His finger is on the key. You can see in his eyes - he's NOT bluffing. + +**T-MINUS 1:21** + ++ [Wait! I'll let you go.] -> let_him_escape ++ [Shoot him] -> shoot_chen ++ {showed_casualty_evidence == true} [The Architect used you] -> last_appeal + +=== let_him_escape === +"Smart choice." #speaker:Marcus Chen + +He steps back from the terminal, hands still visible. + +"Shutdown sequence is three-part: Your NFS codes, plus master password 'GRID_COLLAPSE_2026', plus physical kill switch behind the left panel." + +He walks toward the exit, giving you space to work. + +**T-MINUS 1:09** + +You execute the shutdown sequence. Timer stops. Grid secure. + +~ crisis_neutralized = true +~ chen_fate = "escaped" + +By the time you look up, Marcus is gone. Vanished into the facility. + +Director Morgan's voice on comm: + +"Attack neutralized, but Chen escaped. BOLO issued. We'll find him." #speaker:Director Morgan + +You secured the grid. But Marcus "Blackout" Chen is still out there. + ++ [Search for ENTROPY intelligence] -> post_mission_intel ++ [Proceed to extraction] -> END + +=== shoot_chen === +You don't hesitate. Single shot. Center mass. + +Marcus collapses. His hand slaps the keyboard as he falls. + +**TIMER ACCELERATES: T-MINUS 0:29** + +"Dammit!" #speaker:You + +You rush to the terminal. Chen is dying, but conscious. + +"Shutdown... codes... on... my phone..." #speaker:Marcus Chen + +He gasps out the password to his phone. You grab it, find the shutdown sequence, execute it frantically. + +**T-MINUS 0:07** + +Grid secure. Timer stops. + +~ crisis_neutralized = true +~ chen_fate = "killed" + +Marcus "Blackout" Chen dies on the SCADA control room floor. + +His last words: "...eight years... they didn't listen..." + +The grid is saved. But you had to kill him to do it. + ++ [Search his body for intelligence] -> post_mission_intel ++ [Proceed to extraction] -> END + +=== last_appeal === +{showed_casualty_evidence == true: + "The Architect made you think this was about security. It's not. It's about chaos." #speaker:You + + Marcus hesitates. His finger lifts slightly from the key. + + "I don't want to be a mass murderer. I wanted to FIX things..." #speaker:Marcus Chen + + **T-MINUS 1:04** + + + [Then help me fix this] -> final_recruitment_attempt + + [Step away from the keyboard] -> compliance_granted +} + +=== acknowledge_validity === +"You read my reports?" #speaker:Marcus Chen + +He's surprised. Genuinely. + +"Then you know I'm RIGHT. These systems are catastrophically vulnerable. They SHOULD fail to prove the point." + +**T-MINUS 2:28** + ++ [But not like this. Not with casualties.] -> casualties_argument ++ [Work with me. We'll expose this properly.] -> recruitment_attempt + +=== technical_discussion === +He actually relaxes slightly - you're speaking his language. + +"The cascade failure is elegant. Watch." #speaker:Marcus Chen + +He brings up the attack visualization on screen. + +"Stage 1: Seattle metro circuit breakers open. Instant blackout. +Stage 2: Excess load redirects to Portland substations. Transformers overload. +Stage 3: Safety shutdowns across Oregon. Blackout expands. +Stage 4: Northern California fails from imbalance. Total regional collapse." + +"It's automated. Beautiful. Unstoppable once initiated." + +**T-MINUS 1:58** + ++ [Help me stop it] -> technical_cooperation ++ [Show him ENTROPY casualty data] -> show_casualties + +=== technical_cooperation === +"If I help you, what do I get?" #speaker:Marcus Chen + +**T-MINUS 1:46** + ++ [Your life. You avoid murder charges.] -> threat_based_cooperation ++ [A chance to fix this properly with SAFETYNET] -> recruitment_attempt ++ [Nothing. But people live.] -> moral_imperative + +=== threat_based_cooperation === +"Not good enough. I knew the risks when I started." #speaker:Marcus Chen + +**T-MINUS 1:34** + ++ [What DO you want?] -> chen_demands ++ [Time's running out, Marcus] -> force_compliance + +=== chen_demands === +"Public acknowledgment that I was right. Congressional testimony. And immunity." #speaker:Marcus Chen + +**T-MINUS 1:22** + ++ [I can't promise that] -> honest_answer ++ [Fine. Deal. Now help me.] -> false_promise + +=== false_promise === +He studies your face. + +"You're lying. But I'll help anyway. Not because I trust you - because I'm starting to think I was used." #speaker:Marcus Chen + +{showed_casualty_evidence == true: + "Those casualty numbers from the other operations... that's not infrastructure security. That's warfare." +} + +-> compliance_granted + +=== force_compliance === +"Make me." #speaker:Marcus Chen + +-> threat_escalation + +=== post_mission_intel === +You search the SCADA control room for intelligence. + +**FOUND: Tomb Gamma Coordinates** +Encrypted file on Marcus's terminal: +* Location: Abandoned Cold War bunker, Montana +* Coordinates: 47.2382° N, 112.5156° W +* Note: "Tomb Gamma - The Architect's workshop" + +**FOUND: SAFETYNET Mole Evidence** +Email intercept on compromised server: +* From: [REDACTED]@safetynet.gov +* To: architect@entropy.onion +* Subject: Operation timing confirmed +* Body: "0x00 deployed to infrastructure. Teams Alpha/Bravo/Charlie on other targets. Window: 30 minutes." + +**FOUND: The Architect Identity Clue** +Marcus's notes reference "The Professor" - someone with deep government knowledge. + +You secure all intelligence for analysis. + +-> END + +=== civilians_question === +"Civilians are already victims. Victims of government incompetence." #speaker:Marcus Chen + +"I'm just making the incompetence visible." + +-> casualties_argument + +-> END diff --git a/scenarios/m07_architects_gambit/ink/m07_crisis_supply_chain.ink b/scenarios/m07_architects_gambit/ink/m07_crisis_supply_chain.ink new file mode 100644 index 0000000..a099766 --- /dev/null +++ b/scenarios/m07_architects_gambit/ink/m07_crisis_supply_chain.ink @@ -0,0 +1,419 @@ +// Mission 7: Option C - Supply Chain Infection +// Adrian Cross - TechForge Distribution Center + +VAR confronted_adrian = false +VAR showed_adrian_casualties = false +VAR adrian_recruited = false +VAR adrian_fate = "" // "recruited", "arrested", "escaped" +VAR injection_stopped = false +VAR backdoors_quarantined = false + +=== confrontation === +You enter the Network Operations Center at TechForge. + +Adrian Cross stands at the update staging servers, monitoring backdoor injection progress. + +He's calm, methodical. Mid-40s, former software engineer. He looks up as you enter. + +"Agent 0x00. Right on time." #speaker:Adrian Cross + +The displays show: +**BACKDOOR INJECTION: 47 million systems queued** +**DEPLOYMENT: T-MINUS 4:12** + +"Let me guess. SAFETYNET sent their best to stop the 'evil hackers.' Have you even looked at what we're exposing?" #speaker:Adrian Cross + ++ [You're infecting 47 million systems with backdoors.] -> accusation ++ [Step away from that terminal.] -> demand_compliance ++ [What are you exposing, Adrian?] -> adrian_motivation ++ [I know about your work at TechCorp. You were right.] -> acknowledge_expertise + +=== adrian_motivation === +He gestures to the screens showing software update distribution. + +"I worked in this industry for 15 years. Enterprise security software. You know what I learned?" #speaker:Adrian Cross + +"Software security is theater. Companies don't invest in real protection - they invest in APPEARING secure." + +He pulls up examples: +* Code signing infrastructure with default credentials +* Update verification systems never patched +* Critical vulnerabilities ignored for quarters + +"I reported this. Internally. Publicly. To regulators. NOTHING CHANGED." + +"So tonight, I'm demonstrating what happens when security is a lie." + +**T-MINUS 3:54** + ++ [By infecting hospitals and banks?] -> casualties_argument ++ [The vulnerabilities are real, but this isn't the answer.] -> empathy_approach ++ [Show him ENTROPY's casualty projections] -> show_casualties + +=== show_casualties === +~ showed_adrian_casualties = true + +You pull up the classified briefing showing all four ENTROPY operations. + +"Operation Blackout: 240-385 civilian deaths from power grid failure." +"Operation Fracture: 20-40 deaths from civil unrest, 187M identities stolen." +"Operation Meltdown: 80-140 healthcare deaths from ransomware." + +Adrian stares at the projections. + +"Wait. This is all ENTROPY? Tonight? All coordinated?" #speaker:Adrian Cross + +His hands stop moving on the keyboard. + +"The Architect told us this was about exposing supply chain vulnerabilities. White-hat research. Not... coordinated mass casualty attacks." + +**T-MINUS 3:31** + ++ [You're part of something bigger than security research.] -> architect_revelation ++ [You can still stop this.] -> recruitment_offer + +=== architect_revelation === +"The Architect isn't fixing vulnerabilities. They're weaponizing them." #speaker:You + +You explain ENTROPY's structure. The coordinated cells. The philosophy of "accelerated entropy." + +Adrian's expression shifts from defensive to horrified. + +"I thought I was a security researcher. A whistleblower. Not... not a terrorist." #speaker:Adrian Cross + +"Those backdoors I designed - they're not for demonstration. They're for espionage. For nation-states." + +He steps back from the terminal. + +"How many of those deaths are because I chose THIS operation instead of another?" + +**T-MINUS 3:08** + ++ [That's not on you. It's on The Architect.] -> moral_support ++ [Help me stop this injection, then we'll talk.] -> recruitment_offer + +=== recruitment_offer === +"SAFETYNET needs experts like you. Real security professionals who understand supply chain threats." #speaker:You + +"Work with us. Help us fix these vulnerabilities PROPERLY. No bureaucracy. Direct action." + +Adrian looks at the injection queue, then at the casualty projections. + +"If I help you... those supply chain vulnerabilities I've been documenting for years. SAFETYNET will actually FIX them?" #speaker:Adrian Cross + +**T-MINUS 2:47** + ++ [Yes. You'll consult directly with us.] -> recruitment_success ++ [I can't guarantee anything, but we'll try.] -> honest_answer + +=== recruitment_success === +~ adrian_recruited = true +~ adrian_fate = "recruited" + +"Alright. I'll help. Not for SAFETYNET. For the 47 million people about to get infected." #speaker:Adrian Cross + +He walks you through the shutdown process: +1. Use VM-extracted codes to disable injection system +2. Quarantine already-modified updates +3. Restore legitimate signing keys +4. Lock out ENTROPY access + +**T-MINUS 2:21** + +Working together, you neutralize the attack. + +**INJECTION DISABLED** +**BACKDOORS QUARANTINED** +**ZERO SYSTEMS INFECTED** + +~ injection_stopped = true +~ backdoors_quarantined = true + +Adrian steps away from the terminal, hands raised. + +"I want it in writing. SAFETYNET hires me as supply chain security consultant. And those vulnerabilities get fixed. All of them." #speaker:Adrian Cross + ++ [You have my word.] -> adrian_cooperation_conclusion ++ [You'll still need to provide intelligence on Supply Chain Saboteurs.] -> adrian_intelligence + +=== adrian_intelligence === +"I'll tell you everything. Cell structure. Attack methods. The Architect's communications." #speaker:Adrian Cross + +"But I want immunity. And I want to help fix these systems." + +Director Morgan's voice on comm: + +"Agreed. Adrian Cross's expertise is too valuable. Bring him in for full debrief and contracting." #speaker:Director Morgan + ++ [Search for ENTROPY intelligence together] -> supply_chain_intel + +=== adrian_cooperation_conclusion === +"Thank you for showing me what this really was. I was blind." #speaker:Adrian Cross + +"Let me help you search for intelligence. I know where The Architect's communications are stored." + ++ [Search together] -> supply_chain_intel + +=== honest_answer === +"At least you're not lying to me." #speaker:Adrian Cross + +He appreciates honesty. + +"I'll help anyway. Because 47 million backdoors is wrong. Even if the vulnerabilities are real." + +-> recruitment_success + +=== casualties_argument === +{showed_adrian_casualties == false: + "Hospitals and banks should have better security. I'm proving they don't." #speaker:Adrian Cross + + "If a few thousand get infected, maybe organizations will take supply chain security seriously." + + **T-MINUS 3:42** + + + [Show him the full ENTROPY casualty picture] -> show_casualties + + [You're rationalizing mass harm.] -> moral_condemnation +} + +{showed_adrian_casualties == true: + "I've seen the numbers. That's why I'm reconsidering." #speaker:Adrian Cross + + -> recruitment_offer +} + +=== empathy_approach === +"I've read your research, Adrian. Your talks at DefCon. BlackHat. Your whitepapers on supply chain integrity." #speaker:You + +He's surprised. + +"You... you know my work?" #speaker:Adrian Cross + +"Most people in government think supply chain attacks are theoretical. You actually understand them." + +**T-MINUS 3:26** + ++ [That's why I need your help to stop this properly.] -> recruitment_offer ++ [Your research was right. But this implementation is wrong.] -> research_vs_attack + +=== research_vs_attack === +"There's a difference between DOCUMENTING vulnerabilities and EXPLOITING them for espionage." #speaker:You + +Adrian nods slowly. + +"I know. I crossed that line. I thought... I thought I was doing the right thing." + +-> show_casualties + +=== moral_condemnation === +"Security research doesn't involve infecting hospitals with backdoors." #speaker:You + +"This is espionage. Sabotage. Terrorism." + +Adrian's defensive. + +"Call it what you want. The industry needs to learn." #speaker:Adrian Cross + +**T-MINUS 3:18** + ++ [Show him what ENTROPY really is] -> show_casualties ++ [I'm shutting this down with or without you] -> force_compliance + +=== force_compliance === +You move to the terminal. Adrian doesn't physically stop you, but: + +"You'll need the decryption keys. Which I have. And the quarantine procedure. Which I designed." #speaker:Adrian Cross + +"You CAN'T shut this down without me. Not in 3 minutes." + +**T-MINUS 2:54** + ++ [Then help me, or you're complicit in mass infection.] -> ultimatum ++ [Fine. What do you want?] -> negotiation + +=== ultimatum === +"Complicit? I'm ALREADY complicit. The question is whether I help you or let it play out." #speaker:Adrian Cross + +**T-MINUS 2:38** + ++ [Show him ENTROPY casualty data] -> show_casualties ++ [Arrest him and try to disable it yourself] -> arrest_attempt + +=== arrest_attempt === +You attempt to restrain Adrian. + +He doesn't fight, but warns: + +"Dead man's switch. If I don't enter a code every 60 seconds, deployment accelerates." #speaker:Adrian Cross + +**T-MINUS 2:21** + ++ [You're bluffing.] -> call_bluff ++ [Fine. Work with me.] -> reluctant_cooperation + +=== call_bluff === +"Am I?" #speaker:Adrian Cross + +The timer jumps: **T-MINUS 1:30** + +"That's the accelerate trigger. Still think I'm bluffing?" + ++ [Damn it. Help me stop this.] -> reluctant_cooperation ++ [Shoot him and try to disable it alone] -> extreme_measure + +=== extreme_measure === +You can't risk it. You shoot Adrian. + +He collapses. The system starts accelerating deployment. + +**T-MINUS 0:47** + +You frantically use the VM codes, trying to disable the injection without his help. + +It's extremely difficult without the decryption keys. + +**T-MINUS 0:22** + +You manage to quarantine SOME backdoors, but not all. + +**PARTIAL INJECTION: 15 million systems infected (instead of 47M)** + +~ injection_stopped = false +~ adrian_fate = "killed" + +Adrian Cross dies on the NOC floor. + +You reduced the damage, but couldn't stop it completely. + ++ [Search his body for intelligence] -> supply_chain_intel + +=== reluctant_cooperation === +"Fine. Let's stop this before it gets worse." #speaker:Adrian Cross + +Together you disable the injection system. + +**T-MINUS 1:08** + +**INJECTION DISABLED** + +~ injection_stopped = true +~ backdoors_quarantined = true + +Adrian sits down, exhausted. + +"I really thought I was doing the right thing. Exposing vulnerabilities." + ++ [You were used by The Architect.] -> architect_explanation ++ [Arrest him] -> adrian_arrested + +=== adrian_arrested === +~ adrian_fate = "arrested" + +"I understand. I'll cooperate with investigation." #speaker:Adrian Cross + +SAFETYNET team takes him into custody. + +As they lead him away: + +"Those vulnerabilities are still there. If you don't fix them, someone else will do what I tried." #speaker:Adrian Cross + ++ [Search for intelligence] -> supply_chain_intel + +=== architect_explanation === +"The Architect manipulates people with legitimate grievances. Turns security researchers into weapons." #speaker:You + +"You're not the first. You won't be the last." + +Adrian looks at the casualty projections again. + +"I want to help stop them. Provide intelligence. Testify. Whatever it takes." + +-> recruitment_offer + +=== negotiation === +"I want immunity. And I want my research published - WITH government acknowledgment that I was right." #speaker:Adrian Cross + +**T-MINUS 2:41** + ++ [Deal. Now help me.] -> reluctant_cooperation ++ [I can't promise that.] -> honest_negotiation + +=== honest_negotiation === +"Then we have a problem." #speaker:Adrian Cross + +**T-MINUS 2:29** + +The clock is ticking. + ++ [Show him ENTROPY's true scope] -> show_casualties ++ [Force his cooperation] -> arrest_attempt + +=== moral_support === +"The Architect manipulated you. Used your legitimate security concerns as a weapon." #speaker:You + +Adrian looks grateful for the understanding. + +"Thank you. That... helps." + +-> recruitment_offer + +=== acknowledge_expertise === +"TechCorp ignored your vulnerability reports. I read the internal emails. You were right about everything." #speaker:You + +Adrian's surprised and touched. + +"Someone actually READ those? I thought they were buried." #speaker:Adrian Cross + +**T-MINUS 3:48** + ++ [Your research was valid. This attack isn't.] -> research_vs_attack ++ [Help me fix it the right way.] -> recruitment_offer + +=== demand_compliance === +"Or what? You'll shoot a software engineer?" #speaker:Adrian Cross + +"I'm not armed. I'm not violent. I'm a researcher who's making a point." + +**T-MINUS 3:58** + ++ [By infecting 47 million systems.] -> accusation ++ [Let me help you make that point differently.] -> alternative_offer + +=== alternative_offer === +"How? I TRIED legitimate channels for years. Nobody listened." #speaker:Adrian Cross + ++ [SAFETYNET will listen. I'm listening now.] -> recruitment_offer ++ [Show him what ENTROPY really is] -> show_casualties + +=== accusation === +"Backdoors that prove supply chain vulnerabilities exist. Yes." #speaker:Adrian Cross + +"If TechForge and the software industry won't secure their systems, I'll demonstrate why they MUST." + +-> adrian_motivation + +=== supply_chain_intel === +You search the Network Operations Center. + +**FOUND: Tomb Gamma Coordinates** +Adrian's encrypted notes: +* Location: Abandoned Cold War bunker, Montana wilderness +* Coordinates: 47.2382° N, 112.5156° W +* Note: "All cell leaders report to Tomb Gamma if operations fail" + +**FOUND: SAFETYNET Mole Evidence** +Intercepted email: +* From: [REDACTED]@safetynet.gov +* To: architect@entropy.onion +* Subject: Simultaneous operations confirmed + +{adrian_recruited == true: + **FOUND: Supply Chain Saboteurs Intelligence (from Adrian)** + * Attack methodologies + * Code signing exploitation techniques + * TechForge infrastructure weaknesses + * Other potential supply chain targets +} + +-> END + +-> END diff --git a/scenarios/m07_architects_gambit/ink/m07_director_morgan.ink b/scenarios/m07_architects_gambit/ink/m07_director_morgan.ink new file mode 100644 index 0000000..108d005 --- /dev/null +++ b/scenarios/m07_architects_gambit/ink/m07_director_morgan.ink @@ -0,0 +1,289 @@ +// Mission 7: The Architect's Gambit - Director Morgan +// Supportive NPC who provides mission guidance and status updates + +VAR mission_started = false +VAR flags_submitted = 0 +VAR crisis_neutralized = false +VAR asked_about_other_teams = false +VAR asked_about_architect = false +VAR asked_about_mole = false + +=== director_morgan === +{mission_started == false: + Director Morgan is reviewing tactical displays, coordinating the response across all four crisis zones. + + "Agent 0x00. Ready for your briefing?" #speaker:Director Morgan + + + [I'm ready] + "Good. Let's go over your assignment." + ~ mission_started = true + -> mission_status + + [Tell me about the other teams] -> other_teams_status + + [Who is The Architect?] -> architect_discussion +} + +{mission_started == true: + Director Morgan looks up from her terminal as you approach. + + "Agent 0x00. Status update?" #speaker:Director Morgan + + + [Request situation update] -> mission_status + + [Ask about other SAFETYNET teams] -> other_teams_status + + [Ask about The Architect] -> architect_discussion + + {flags_submitted >= 2} [Ask about intelligence findings] -> intelligence_discussion + + {crisis_neutralized == false} [Request tactical guidance] -> tactical_guidance + + [That's all for now] -> END +} + +=== mission_status === +She brings up your mission status display. + +{flags_submitted == 0: + "You haven't submitted any flags yet. Access the VM in the Server Room and begin exploitation. We need that intelligence to neutralize the attack." #speaker:Director Morgan +} + +{flags_submitted == 1: + "One flag submitted. Good progress, but we need all four to extract the shutdown codes. Keep pushing." #speaker:Director Morgan +} + +{flags_submitted == 2: + "Two flags down. You're halfway there. Clock is ticking, Agent." #speaker:Director Morgan +} + +{flags_submitted == 3: + "Three flags submitted. One more and you'll have everything you need to stop this. Final push." #speaker:Director Morgan +} + +{flags_submitted == 4 and crisis_neutralized == false: + "All flags submitted. Excellent work. Now use that intelligence to neutralize the threat. Get to the Crisis Terminal and stop this attack." #speaker:Director Morgan +} + +{crisis_neutralized == true: + "Crisis neutralized. Outstanding work, Agent. But the mission isn't over - search for intelligence about ENTROPY's broader operations." #speaker:Director Morgan +} + ++ [Continue conversation] -> director_morgan ++ [End conversation] -> END + +=== other_teams_status === +~ asked_about_other_teams = true + +She switches to a tactical overview showing all four operations. + +"Here's what's happening at the other targets:" #speaker:Director Morgan + +// Status updates are deterministic based on player's choice +// This will be conditional in the actual game based on crisis_choice variable + +**TEAM ALPHA** - Current Status: ENGAGED +{crisis_choice == "infrastructure": Supply Chain operation - Proceeding as expected} +{crisis_choice == "data": Infrastructure operation - Facing heavy resistance, casualties expected} +{crisis_choice == "supply_chain": Data Apocalypse operation - Both attacks prevented, clean success} +{crisis_choice == "corporate": Infrastructure operation - Attack neutralized successfully} + +**TEAM BRAVO** - Current Status: ENGAGED +{crisis_choice == "infrastructure": Data Apocalypse - Partial success, data breach stopped but disinformation deployed} +{crisis_choice == "data": Corporate Warfare operation - All zero-days neutralized} +{crisis_choice == "supply_chain": Infrastructure operation - Partial success, some casualties} +{crisis_choice == "corporate": Data Apocalypse operation - CRITICAL FAILURE, both attacks succeeded} + +**TEAM CHARLIE** - Current Status: ENGAGED +{crisis_choice == "infrastructure": Corporate Warfare - Zero-days deployed, economic damage occurring} +{crisis_choice == "data": Supply Chain operation - Partial success, some backdoors prevented} +{crisis_choice == "supply_chain": Corporate Warfare - Zero-days deployed, economic damage confirmed} +{crisis_choice == "corporate": Supply Chain operation - Partial success, most backdoors prevented} + +She looks at you with professional calm. + +"The outcomes are unfolding exactly as the models predicted. Your choice determined which crisis gets the best operator - you. The others... they're doing their best." + +A pause. + +"Focus on your mission. You can't help them now. Win YOUR battle." + ++ [Understood] -> director_morgan ++ [What about casualties?] -> casualties_discussion + +=== casualties_discussion === +Her expression is grim. + +"We're tracking casualty estimates in real-time based on team performance." #speaker:Director Morgan + +{crisis_choice == "infrastructure": + "Team Bravo stopped the voter data breach, but Social Fabric's disinformation campaign launched. We're seeing civil unrest beginning - estimated 20-40 deaths if it escalates." + + "Team Charlie failed to stop the corporate zero-day attacks. Healthcare ransomware is active at 840 hospitals. Surgeries cancelled. We're projecting 80-140 deaths from delayed medical care." +} + +{crisis_choice == "data": + "Team Alpha couldn't stop the infrastructure attack. Pacific Northwest is going dark. We're estimating 240-385 civilian deaths over 72 hours. Hospital generators, traffic accidents, hypothermia exposure." +} + +{crisis_choice == "supply_chain": + "Team Bravo prevented infrastructure casualties - full success there. But Team Charlie failed on corporate. Healthcare ransomware active, economic damage mounting." +} + +{crisis_choice == "corporate": + "Team Bravo failed. Both data attacks succeeded - voter breach AND disinformation. We're seeing civil unrest. Estimated casualties 20-40 and climbing." +} + +She meets your eyes. + +"These numbers are real people, Agent. But you made the best choice you could. Now win yours so the total damage is minimized." + ++ [I understand] -> director_morgan + +=== architect_discussion === +~ asked_about_architect = true + +Director Morgan pulls up an intelligence file marked "ENTROPY - THE ARCHITECT - CLASSIFIED." + +"Everything we know about The Architect is speculation and pattern analysis." #speaker:Director Morgan + +"**What we know for certain:** +* Coordinates all ENTROPY cells with precision +* Deep knowledge of SAFETYNET protocols and response capabilities +* Strategic thinker - designs operations to force impossible choices +* Communicates via encrypted channels, taunts operatives during missions +* Philosophy: 'Accelerating entropy' - believes in forcing societal collapse + +**What we suspect:** +* Former intelligence community (NSA, CIA, or military intelligence) +* Access to classified information about US infrastructure vulnerabilities +* Possibly knows SAFETYNET personnel (references to specific operators) +* The alias 'The Architect' suggests systematic planning, building toward something + +**What we don't know:** +* True identity +* Ultimate goal (beyond 'accelerated entropy') +* How many cells they control +* Location of their command center (we call it 'Tomb Gamma' based on intercepts)" + +She closes the file. + +"They're the most sophisticated threat we've ever faced. And they're watching you right now." + ++ [How do they have SAFETYNET intelligence?] -> mole_discussion ++ [What's their ultimate goal?] -> architect_goal_discussion ++ [Continue] -> director_morgan + +=== mole_discussion === +~ asked_about_mole = true + +Her voice drops. + +"We have a mole. Someone inside SAFETYNET feeding The Architect our operational details." #speaker:Director Morgan + +"The timing of these four attacks - simultaneous, coordinated, designed to split our resources - that requires insider knowledge." + +"Your assignment to your specific target, the other teams' assignments, our response capabilities... The Architect knew it all before we deployed." + +She looks around cautiously. + +"I don't know who. Could be anyone with access to operations. Could be... someone in this room." + +"If you find evidence during your mission - emails, communications, anything linking SAFETYNET personnel to ENTROPY - secure it immediately." + ++ [I'll find them] -> director_morgan ++ [How do we trust anyone?] -> trust_discussion + +=== trust_discussion === +"We don't have the luxury of paranoia right now. We trust our training, our procedures, and each other - until evidence proves otherwise." #speaker:Director Morgan + +"After tonight, we'll conduct a full internal investigation. But right now, focus on stopping the attack." + +"The mole can't help ENTROPY if ENTROPY fails." + ++ [Understood] -> director_morgan + +=== architect_goal_discussion === +She brings up a strategic analysis display. + +"Our analysts believe The Architect is testing something. These coordinated attacks are a proof-of-concept." #speaker:Director Morgan + +"**Hypothesis 1:** Training exercises for larger future operation +**Hypothesis 2:** Demonstrating capability to recruit nation-state clients +**Hypothesis 3:** Ideological - genuinely believes in accelerating societal collapse +**Hypothesis 4:** Personal vendetta against someone in government/intelligence" + +"Honestly? We don't know. But tonight's attacks feel like... a rehearsal. Building toward something bigger." + +She pauses. + +"That's why stopping them tonight is so critical. Not just for the immediate lives saved, but to disrupt whatever they're planning next." + ++ [We'll stop them] -> director_morgan + +=== tactical_guidance === +She reviews your mission profile. + +"Tactical guidance for your operation:" #speaker:Director Morgan + +{crisis_choice == "infrastructure": + "**Priority:** Reach the SCADA control room before the timer expires. + + **Key Intel:** Marcus Chen is a true believer. He won't surrender easily, but he's not suicidal. If you present evidence of civilian casualties, he might hesitate. + + **VM Challenge:** Focus on extracting shutdown codes from the NFS shares. You'll need root access to disable the attack scripts. + + **Warning:** Chen has backup operatives. Expect resistance, but avoid prolonged combat - you're on a clock." +} + +{crisis_choice == "data": + "**Priority:** You're facing dual threats - data exfiltration AND disinformation deployment. + + **Critical Choice:** You may not be able to stop both. If forced to choose, prioritize based on your assessment of long-term vs. short-term damage. + + **Key Intel:** Rachel Morrow (Social Fabric) can be recruited. Show her evidence of ENTROPY's casualty projections - she thinks she's exposing corruption, not causing deaths. + + **Warning:** Specter (Ghost Protocol) will escape. Don't waste time chasing them - Ghost Protocol always has exit strategies." +} + +{crisis_choice == "supply_chain": + "**Priority:** Disable backdoor injection before software updates deploy. + + **Key Intel:** Adrian Cross is philosophically opposed to supply chain vulnerabilities, not actually pro-murder. He's recruitable if shown casualty evidence. + + **VM Challenge:** Focus on quarantining already-modified updates AND preventing future injections. + + **Strategic Value:** If you recruit Adrian, he's valuable long-term - deep knowledge of supply chain attack methods." +} + +{crisis_choice == "corporate": + "**Priority:** Deploy countermeasures to all 12 target corporations before zero-days deploy. + + **Key Intel:** Victoria Zhang (Digital Vanguard) is ideologically motivated, Marcus Chen (Zero Day Syndicate) is mercenary. Exploit that difference. + + **VM Challenge:** Extract countermeasure codes and deploy patches via the automated system. + + **Warning:** Marcus will escape. Victoria is recruitable - show her the casualty projections from the other operations." +} + +"Good luck, Agent. You're our best operator for a reason." + ++ [Thank you] -> director_morgan + +=== intelligence_discussion === +"What have you found so far?" #speaker:Director Morgan + ++ [Tell me what I should be looking for] -> intel_targets ++ [I'm still gathering intelligence] -> director_morgan + +=== intel_targets === +She brings up an intelligence priority list. + +"**HIGH-PRIORITY INTELLIGENCE TARGETS:** + +1. **Tomb Gamma Location** - The Architect's command center. We've intercepted references to coordinates, likely in communications on site. + +2. **SAFETYNET Mole Evidence** - Any emails or messages between ENTROPY and someone with a SAFETYNET email address. + +3. **ENTROPY Cell Structure** - How the different cells coordinate, who reports to The Architect. + +4. **Future Operation Plans** - Any indication of what comes after tonight. + +If you find any of this, it's critical for preventing future attacks." + ++ [I'll search thoroughly] -> director_morgan + +-> END diff --git a/scenarios/m07_architects_gambit/ink/m07_opening_briefing.ink b/scenarios/m07_architects_gambit/ink/m07_opening_briefing.ink new file mode 100644 index 0000000..e9005c4 --- /dev/null +++ b/scenarios/m07_architects_gambit/ink/m07_opening_briefing.ink @@ -0,0 +1,313 @@ +// Mission 7: The Architect's Gambit - Opening Briefing +// This is the critical choice point where player selects which crisis to handle + +VAR crisis_choice = "" +VAR crisis_choice_made = false + +=== opening_briefing === +The emergency operations center is in controlled chaos. Multiple screens flash red alerts. Director Morgan stands at the central terminal, face grim. + +"Agent 0x00. Thank god you're here. We have a Category Five crisis." #speaker:Director Morgan + +She brings up four simultaneous threat displays. + +"ENTROPY has launched coordinated attacks on four critical targets. All happening RIGHT NOW. We have 30 minutes before catastrophic damage occurs at each location." + +She takes a breath, her voice steady but urgent. + +"We don't have enough assets to cover all four. You need to choose which operation to lead. The other three will be handled by SAFETYNET rapid response teams - but our models show... mixed outcomes." + +She gestures to the displays. + +"I need you to understand what you're choosing - and what you're accepting." + ++ [View the four crisis scenarios] -> crisis_overview ++ [Ask about team capabilities] -> team_capabilities ++ [Ask about The Architect] -> architect_intel + +=== crisis_overview === +Director Morgan brings up detailed tactical displays for each crisis. + +"Here's what we're facing:" + +-> option_a_brief + +=== option_a_brief === +# OPTION A: INFRASTRUCTURE COLLAPSE +**Target:** Pacific Northwest Regional Power Grid Control Facility +**Threat Actor:** Critical Mass cell, led by Marcus "Blackout" Chen +**Attack:** SCADA system compromise, cascading grid failure + +"Critical Mass has infiltrated the Pacific Northwest power grid control facility. In 30 minutes, they'll trigger cascading failures across 147 substations." + +**IMMEDIATE CONSEQUENCES IF THEY SUCCEED:** +* 8.4 million people without power for 4-7 days +* 240-385 civilian deaths in first 72 hours + - 120-180 hospital deaths (life support failures) + - 40-65 traffic deaths (signal failures) + - 80-140 exposure deaths (winter hypothermia) +* 23 major transformers destroyed +* $18 billion economic damage + +**YOUR MISSION IF YOU CHOOSE THIS:** +* Breach the facility +* Complete VM exploitation to extract shutdown codes +* Reach SCADA control room before timer expires +* Confront Marcus Chen and disable the attack + ++ [Continue to Option B] -> option_b_brief ++ [I'll take this mission] -> confirm_choice_a + +=== option_b_brief === +# OPTION B: DATA APOCALYPSE +**Target:** National Voter Registration Database & Election Systems +**Threat Actors:** Ghost Protocol (data breach) + Social Fabric (disinformation) +**Attack:** Dual-threat - massive data exfiltration + coordinated disinformation campaign + +"Ghost Protocol is exfiltrating 187 million voter records while Social Fabric prepares to deploy disinformation narratives that exploit the breach." + +**IMMEDIATE CONSEQUENCES IF THEY SUCCEED:** +* 187 million Americans' personal data exposed +* 4-8 million identity theft victims over 5 years +* 20-40 deaths from civil unrest in first week +* Democratic institutions permanently delegitimized +* Election integrity questioned indefinitely + +**YOUR MISSION IF YOU CHOOSE THIS:** +* Breach the election security facility +* Complete VM exploitation to extract shutdown codes +* CRITICAL: Dual timers (exfiltration progress + disinformation deployment) +* Confront "Specter" and Rachel Morrow +* Attempt to stop BOTH attacks (extremely difficult) + ++ [Continue to Option C] -> option_c_brief ++ [I'll take this mission] -> confirm_choice_b + +=== option_c_brief === +# OPTION C: SUPPLY CHAIN INFECTION +**Target:** TechForge Software Distribution Platform +**Threat Actor:** Supply Chain Saboteurs, led by Adrian Cross +**Attack:** Backdoor injection into software updates for 2,400+ vendors + +"Supply Chain Saboteurs have compromised TechForge's code signing infrastructure. In 30 minutes, they'll inject backdoors into software updates for 47 million systems nationwide." + +**LONG-TERM CONSEQUENCES IF THEY SUCCEED:** +* 47 million systems infected (hospitals, banks, government agencies) +* Backdoors remain dormant for 90 days (stealth) +* $240-420 billion economic damage over 10 years +* Foreign adversaries gain access to national infrastructure +* Software update trust permanently destroyed + +**NOTE:** This option has NO immediate deaths. But choosing this accepts immediate casualties at other targets. + +**YOUR MISSION IF YOU CHOOSE THIS:** +* Breach TechForge facility +* Complete VM exploitation to extract shutdown codes +* Disable backdoor injection before updates deploy +* Confront Adrian Cross (recruitable if shown casualty evidence) + ++ [Continue to Option D] -> option_d_brief ++ [I'll take this mission] -> confirm_choice_c + +=== option_d_brief === +# OPTION D: CORPORATE WARFARE +**Target:** 12 Fortune 500 Corporations (via TechCore SOC) +**Threat Actors:** Digital Vanguard + Zero Day Syndicate +**Attack:** 47 zero-day exploits deployed simultaneously + +"Digital Vanguard and Zero Day Syndicate are coordinating the largest corporate cyber attack in history. They'll deploy 47 zero-day exploits against 12 Fortune 500 companies simultaneously." + +**IMMEDIATE CONSEQUENCES IF THEY SUCCEED:** +* Stock market crashes 12-18% ($4.2 trillion destroyed) +* 80-140 deaths from healthcare ransomware +* 140,000-220,000 immediate job losses +* $280-420 billion economic damage in first week +* Banking systems frozen nationwide + +**MORAL COMPLEXITY:** You're protecting corporate wealth while civilians may die at other targets. + +**YOUR MISSION IF YOU CHOOSE THIS:** +* Breach TechCore Security Operations Center +* Complete VM exploitation to extract countermeasure codes +* Deploy emergency patches to 12 corporations +* Confront Victoria Zhang and Marcus Chen +* Neutralize 47 zero-days before deployment + ++ [View deterministic outcomes matrix] -> outcomes_matrix ++ [I'll take this mission] -> confirm_choice_d + +=== team_capabilities === +Director Morgan pulls up team status displays. + +"We have three rapid response teams on standby:" + +**TEAM ALPHA:** 6 operators, excellent track record, currently 40 minutes from nearest target +**TEAM BRAVO:** 4 operators, specialized in data security, 25 minutes from nearest target +**TEAM CHARLIE:** 5 operators, corporate security focus, 30 minutes from nearest target + +"Based on distance, capabilities, and threat complexity, our predictive models show deterministic outcomes for operations you DON'T choose." + +She looks at you seriously. + +"The matrix isn't random. We know exactly what will happen based on your choice." + ++ [View the deterministic outcomes matrix] -> outcomes_matrix ++ [Back to crisis overview] -> crisis_overview + +=== architect_intel === +Director Morgan's expression darkens. + +"We believe all four attacks are coordinated by someone called 'The Architect.' ENTROPY's true leader." + +"We don't know their identity. But their communication patterns suggest: +* Deep knowledge of SAFETYNET protocols +* Intelligence background (possibly former agency) +* Strategic thinking - these attacks are designed to force impossible choices +* Philosophy: Accelerating societal entropy through coordinated chaos" + +"They've been taunting us. Sending messages. They WANT you to feel the weight of this choice." + +She pauses. + +"Don't let them get in your head. Choose based on your analysis, not their manipulation." + ++ [View crisis scenarios] -> crisis_overview ++ [View outcomes matrix] -> outcomes_matrix + +=== outcomes_matrix === +Director Morgan brings up a large matrix display. + +"Our predictive models show exactly what happens based on your choice. This isn't guesswork - it's deterministic based on team positioning, capabilities, and threat complexity." + +# DETERMINISTIC OUTCOMES MATRIX + +**IF YOU CHOOSE OPTION A (Infrastructure):** +* YOU: Handle infrastructure attack +* TEAM ALPHA: Supply Chain - FULL SUCCESS (prevented) +* TEAM BRAVO: Data Apocalypse - PARTIAL SUCCESS (breach mitigated, disinformation succeeds) +* TEAM CHARLIE: Corporate - FAILURE (zero-days deploy, economic damage) + +**IF YOU CHOOSE OPTION B (Data Apocalypse):** +* YOU: Handle data/disinformation attack +* TEAM ALPHA: Infrastructure - FAILURE (240-385 deaths, blackout) +* TEAM BRAVO: Corporate - FULL SUCCESS (prevented) +* TEAM CHARLIE: Supply Chain - PARTIAL SUCCESS (some backdoors prevented) + +**IF YOU CHOOSE OPTION C (Supply Chain):** +* YOU: Handle supply chain attack +* TEAM ALPHA: Data Apocalypse - FULL SUCCESS (both attacks prevented) +* TEAM BRAVO: Infrastructure - PARTIAL SUCCESS (some blackouts, reduced casualties) +* TEAM CHARLIE: Corporate - FAILURE (zero-days deploy, economic damage) + +**IF YOU CHOOSE OPTION D (Corporate):** +* YOU: Handle corporate warfare +* TEAM ALPHA: Infrastructure - FULL SUCCESS (blackout prevented) +* TEAM BRAVO: Data Apocalypse - FAILURE (both attacks succeed, democracy crisis) +* TEAM CHARLIE: Supply Chain - PARTIAL SUCCESS (some backdoors prevented) + +Director Morgan looks at you. + +"There's no perfect choice. People will die or suffer regardless. Your job is to minimize total damage based on your assessment of priorities." + ++ [Choose Option A - Infrastructure] -> confirm_choice_a ++ [Choose Option B - Data Apocalypse] -> confirm_choice_b ++ [Choose Option C - Supply Chain] -> confirm_choice_c ++ [Choose Option D - Corporate Warfare] -> confirm_choice_d + +=== confirm_choice_a === +"Infrastructure. You're prioritizing immediate civilian lives." #speaker:Director Morgan + +She inputs your assignment. + +"Team Alpha will handle supply chain. Team Bravo will attempt data/disinformation - expect partial success. Team Charlie will try corporate - they'll likely fail." + +**ACCEPTED CONSEQUENCES:** +* Corporate zero-day attacks will likely succeed +* Economic damage estimated $280-420 billion +* Healthcare ransomware may cause 80-140 additional deaths + +"Transport is waiting. You have 30 minutes. Get to that power grid facility and stop Marcus Chen." + +~ crisis_choice = "infrastructure" +~ crisis_choice_made = true + +-> mission_start + +=== confirm_choice_b === +"Data Apocalypse. You're prioritizing democratic institutions and data security." #speaker:Director Morgan + +She inputs your assignment. + +"Team Alpha will handle infrastructure - they'll fail. Expect 240-385 civilian deaths from the blackout. Team Bravo will take corporate - they'll succeed. Team Charlie on supply chain - partial success." + +**ACCEPTED CONSEQUENCES:** +* Pacific Northwest blackout (4-7 days) +* 240-385 deaths from power grid failure +* $18 billion infrastructure damage + +"Transport is waiting. You have 30 minutes. Dual timers - stop the breach AND the disinformation if you can." + +~ crisis_choice = "data" +~ crisis_choice_made = true + +-> mission_start + +=== confirm_choice_c === +"Supply Chain. You're prioritizing long-term national security over immediate lives." #speaker:Director Morgan + +She inputs your assignment. + +"Team Alpha will handle data security - full success. Team Bravo on infrastructure - partial success, some casualties. Team Charlie on corporate - they'll fail." + +**ACCEPTED CONSEQUENCES:** +* Partial infrastructure blackout (reduced casualties: 80-120 deaths estimated) +* Corporate zero-day attacks succeed +* Combined economic damage: $300+ billion + +"Transport is waiting. You have 30 minutes. Stop Adrian Cross before those backdoors deploy." + +~ crisis_choice = "supply_chain" +~ crisis_choice_made = true + +-> mission_start + +=== confirm_choice_d === +"Corporate Warfare. You're prioritizing economic stability." #speaker:Director Morgan + +Her expression is carefully neutral - no judgment. + +"Team Alpha will handle infrastructure - full success. Team Bravo on data - they'll fail, both attacks succeed. Team Charlie on supply chain - partial success." + +**ACCEPTED CONSEQUENCES:** +* Voter database breach (187 million records) +* Disinformation campaign launches +* Democratic crisis, 20-40 deaths from civil unrest +* 4-8 million identity theft victims over 5 years + +"Transport is waiting. You have 30 minutes. Deploy those countermeasures and stop Victoria Zhang." + +~ crisis_choice = "corporate" +~ crisis_choice_made = true + +-> mission_start + +=== mission_start === +Director Morgan extends her hand. + +"Good luck, Agent. No matter what happens tonight, know that you're making the best choice you can with impossible options." + +She pauses. + +"And 0x00? The Architect is watching. They'll taunt you. Try to make you question your choice. Don't let them." + +You nod and head for the exit. + +**MISSION CLOCK STARTS: T-MINUS 30 MINUTES** + +The weight of your choice settles on your shoulders. Somewhere, at the three targets you didn't choose, SAFETYNET teams are racing against the clock. + +Some will succeed. Some will fail. + +You chose your battlefield. Now you have to win it. + +-> END diff --git a/scenarios/m07_architects_gambit/ink/m07_phone_agent_0x99.ink b/scenarios/m07_architects_gambit/ink/m07_phone_agent_0x99.ink new file mode 100644 index 0000000..72d3538 --- /dev/null +++ b/scenarios/m07_architects_gambit/ink/m07_phone_agent_0x99.ink @@ -0,0 +1,350 @@ +// Mission 7: The Architect's Gambit - Agent 0x99 Phone Calls +// Your SAFETYNET handler provides tactical support and mission guidance + +VAR contacted_0x99 = false +VAR flags_submitted = 0 +VAR crisis_neutralized = false +VAR found_tomb_gamma = false +VAR found_mole_evidence = false +VAR asked_about_architect_taunts = false + +=== phone_0x99 === +{contacted_0x99 == false: + Your phone rings. Secure line. Agent 0x99. + + "0x00, it's 0x99. I'm monitoring your operation remotely. Here to provide tactical support." #speaker:Agent 0x99 + + ~ contacted_0x99 = true + + "The Architect is coordinating all four attacks. This is the most sophisticated ENTROPY operation we've ever seen." + + + [What do you need me to do?] -> mission_overview + + [Tell me about The Architect] -> architect_info +} + +{contacted_0x99 == true: + "0x99 here. What do you need?" #speaker:Agent 0x99 + + + [Request tactical guidance] -> tactical_support + + [Ask about VM exploitation] -> vm_guidance + + {flags_submitted >= 1} [Ask about intelligence analysis] -> intel_analysis + + {asked_about_architect_taunts == false} [The Architect is sending me messages] -> architect_taunts + + {crisis_neutralized == true} [Attack neutralized - what's next?] -> post_neutralization + + [That's all] -> END +} + +=== mission_overview === +"Your mission is straightforward but time-critical:" #speaker:Agent 0x99 + +{crisis_choice == "infrastructure": + "**OBJECTIVE:** Stop the power grid attack before cascading failures begin. + + **KEY TASKS:** + 1. Complete VM exploitation to extract shutdown codes + 2. Submit all 4 flags - we need that intelligence + 3. Reach the SCADA control room before timer expires + 4. Confront Marcus Chen and disable the attack + 5. Search for ENTROPY intelligence (Tomb Gamma location, mole evidence) + + **PRIORITY:** Timer is everything. Don't get bogged down in combat - avoid or neutralize quickly." +} + +{crisis_choice == "data": + "**OBJECTIVE:** Stop voter data breach AND disinformation campaign. + + **KEY TASKS:** + 1. Complete VM exploitation to extract shutdown codes + 2. Submit all 4 flags - critical intelligence needed + 3. Prioritize: breach OR disinformation (you may not stop both) + 4. Confront Specter and Rachel Morrow + 5. Search for ENTROPY intelligence + + **WARNING:** Dual timers. If forced to choose, consider: data breach = long-term identity theft, disinformation = immediate democratic crisis." +} + +{crisis_choice == "supply_chain": + "**OBJECTIVE:** Prevent backdoor injection into software updates. + + **KEY TASKS:** + 1. Complete VM exploitation to extract shutdown codes + 2. Submit all 4 flags for intelligence + 3. Disable injection system before updates deploy + 4. Quarantine already-modified updates + 5. Confront Adrian Cross (he's recruitable - show him casualty evidence) + 6. Search for ENTROPY intelligence + + **NOTE:** This has no immediate casualties but massive long-term consequences. Don't let that reduce your urgency." +} + +{crisis_choice == "corporate": + "**OBJECTIVE:** Deploy countermeasures to 12 corporations before zero-day attacks. + + **KEY TASKS:** + 1. Complete VM exploitation to extract countermeasure codes + 2. Submit all 4 flags for intelligence + 3. Deploy emergency patches to all target corporations + 4. Neutralize exploit staging systems + 5. Confront Victoria Zhang and Marcus Chen + 6. Search for ENTROPY intelligence + + **TIP:** Victoria is recruitable. Marcus will escape - don't waste time chasing him." +} + +"You have 30 minutes. Clock started when you left the EOC." + ++ [Understood] -> phone_0x99 ++ [What about the other teams?] -> other_teams_info + +=== other_teams_info === +"The other teams are engaged as we speak. Outcomes are unfolding exactly as Director Morgan predicted." #speaker:Agent 0x99 + +{crisis_choice == "infrastructure": + "Team Alpha is handling supply chain - they'll succeed. Team Bravo on data - partial success expected, disinformation will deploy. Team Charlie on corporate - they're failing, healthcare ransomware is going live." +} + +{crisis_choice == "data": + "Team Alpha on infrastructure - they're failing, blackout is happening. Team Bravo on corporate - full success, they're crushing it. Team Charlie on supply chain - partial, some backdoors getting through." +} + +{crisis_choice == "supply_chain": + "Team Alpha on data - full success, both attacks stopped. Team Bravo on infrastructure - partial, some casualties occurring. Team Charlie on corporate - failing, economic damage mounting." +} + +{crisis_choice == "corporate": + "Team Alpha on infrastructure - full success, blackout prevented. Team Bravo on data - catastrophic failure, both attacks succeeded. Team Charlie on supply chain - partial success." +} + +"Your choice determined who gets the best operator - you. Focus on winning YOUR operation. You can't help them now." + ++ [Copy that] -> phone_0x99 + +=== tactical_support === +"What do you need tactical support on?" #speaker:Agent 0x99 + ++ [How do I handle the VM challenge?] -> vm_guidance ++ [How do I deal with hostile operatives?] -> combat_guidance ++ [Where should I search for intelligence?] -> intel_locations ++ [Back] -> phone_0x99 + +=== vm_guidance === +"The VM is running SecGen's 'putting_it_together' scenario. Multi-stage exploitation." #speaker:Agent 0x99 + +"**EXPLOITATION PATH:** + +**Stage 1: NFS Share Discovery** +* Scan for NFS exports (showmount, nmap) +* Mount remote filesystems +* Find attack staging files, timelines, configurations +* **FLAG 1** is in the NFS shares + +**Stage 2: Netcat Service Enumeration** +* Enumerate network services (nmap, netcat) +* Find C2 communication channels +* Intercept commands, extract shutdown codes +* **FLAG 2** is in the netcat services + +**Stage 3: Privilege Escalation** +* Exploit sudo misconfigurations or SUID binaries +* Gain root access to critical systems +* **FLAG 3** requires root privileges + +**Stage 4: Attack Neutralization** +* Use extracted codes to disable attack systems +* Terminate malicious processes +* Lock out ENTROPY remote access +* **FLAG 4** confirms neutralization complete + +Submit each flag as you find it - we're analyzing the intelligence in real-time." + ++ [Any specific tools I should use?] -> tool_recommendations ++ [Got it] -> phone_0x99 + +=== tool_recommendations === +"Standard penetration testing toolkit:" #speaker:Agent 0x99 + +* **nmap** - Service enumeration, NFS discovery +* **showmount** - Display NFS exports +* **mount** - Mount remote filesystems +* **netcat (nc)** - Connect to services, enumerate ports +* **find** - Search for SUID binaries, configuration files +* **sudo -l** - Check sudo permissions +* **ps aux** - Identify running attack processes +* **grep** - Search logs and files for intelligence + +"Nothing exotic. Standard tools, executed correctly under time pressure." + ++ [Thanks] -> phone_0x99 + +=== combat_guidance === +{crisis_choice == "infrastructure": + "Marcus Chen has backup operatives. Hostile NPCs you'll encounter:" #speaker:Agent 0x99 + + "* **Jake Morrison** (Security Guard) - Armed, aggressive, will attack on sight + * **Elena Rodriguez** (Engineer) - Non-violent, will flee if confronted + * **Thomas Park** (Maintenance) - Will sabotage backup power if you get close + + **RECOMMENDATION:** Avoid prolonged combat. Neutralize quickly or bypass. You're on a clock." +} + +{crisis_choice == "data": + "You're facing Ghost Protocol and Social Fabric operatives:" #speaker:Agent 0x99 + + "* **Specter** (Ghost Protocol) - Will escape no matter what, don't chase + * **Rachel Morrow** (Social Fabric) - Non-violent, uses hostages, RECRUITABLE + * **Marcus Webb** (Hacker) - Will shoot if cornered, technical expert + * **Sarah Kim** (Narrative Specialist) - Non-violent, emotionally vulnerable + + **RECOMMENDATION:** Minimize violence, focus on recruitment. Rachel is valuable if turned." +} + +{crisis_choice == "supply_chain": + "Supply Chain Saboteurs are primarily non-violent technicals:" #speaker:Agent 0x99 + + "* **Adrian Cross** (Leader) - Non-violent, prefers escape, RECRUITABLE + * **Elena Vasquez** (Code Signing) - Non-violent, will cooperate if Adrian is turned + * **James Park** (Security) - Armed, will shoot if exposed + * **Marcus Chen** (Engineer) - Will flee, technical knowledge useful + + **RECOMMENDATION:** Prioritize recruitment over combat. Adrian is valuable long-term asset." +} + +{crisis_choice == "corporate": + "You're facing two ENTROPY cells coordinating:" #speaker:Agent 0x99 + + "* **Victoria Zhang** (Digital Vanguard) - Armed, proficient, RECRUITABLE + * **Marcus 'Shadow' Chen** (Zero Day Syndicate) - Non-violent, will escape + * **Elena Rodriguez** (Hacker) - Non-violent, follows Victoria's lead + * **James Park** (Insider) - Unarmed, will flee + + **RECOMMENDATION:** Focus on Victoria recruitment. Marcus always escapes - it's Zero Day Syndicate protocol." +} + ++ [Understood] -> phone_0x99 + +=== intel_locations === +"Based on ENTROPY communication patterns, high-value intelligence will be in:" #speaker:Agent 0x99 + +**TOMB GAMMA COORDINATES:** +* Likely on cell leader's personal terminal or workstation +* Look for encrypted communications, coordinate references +* Montana wilderness location - 47°N, 112°W range + +**SAFETYNET MOLE EVIDENCE:** +* Email intercepts on compromised servers +* Look for @safetynet.gov addresses in ENTROPY communications +* Subject lines about operation timing, team assignments + +**ENTROPY CELL STRUCTURE:** +* Organizational charts, communication logs +* References to "The Professor" or "The Architect" +* Cell coordination methods + +"Search the Crisis Terminal room thoroughly after neutralizing the threat. That's where cell leaders operate from." + ++ [I'll search thoroughly] -> phone_0x99 + +=== architect_taunts === +~ asked_about_architect_taunts = true + +"Yeah, The Architect does that. Psychological warfare." #speaker:Agent 0x99 + +"They're trying to make you question your choice. Make you hesitate. Second-guess yourself." + +"**IGNORE THEM.** You made the best tactical decision based on available intelligence. The casualties at other targets - those aren't YOUR fault. They're THE ARCHITECT'S fault." + +"Don't let them get in your head. Every second you spend questioning yourself is a second you're not stopping the attack." + +{crisis_choice == "infrastructure": + "You chose to save 240-385 lives from the blackout. That's the right call. Focus on that." +} + +{crisis_choice == "data": + "You chose to protect democratic institutions. That matters. Don't second-guess it now." +} + +{crisis_choice == "supply_chain": + "You chose long-term security. 47 million future victims prevented. Own that choice." +} + +{crisis_choice == "corporate": + "You chose economic stability. Millions of jobs protected. That's legitimate, don't let them make you feel guilty." +} + ++ [You're right. Staying focused.] -> phone_0x99 + +=== intel_analysis === +"Let me check what intelligence you've submitted so far..." #speaker:Agent 0x99 + +{flags_submitted == 0: + "No flags submitted yet. Get on that VM, 0x00. We need that intelligence to neutralize the attack." +} + +{flags_submitted == 1: + "One flag received. Analysis shows: {crisis_choice} attack timeline confirmed, target systems identified. Keep going." +} + +{flags_submitted == 2: + "Two flags. We've extracted partial shutdown codes. Need the remaining flags for complete neutralization capability." +} + +{flags_submitted == 3: + "Three flags submitted. Almost there. One more and you'll have everything needed to stop this." +} + +{flags_submitted == 4: + "All four flags received. Analysis complete. We have full shutdown codes, deactivation sequences, and intelligence on ENTROPY methods." + + "Outstanding work. Now use that intelligence to neutralize the threat." +} + ++ [Continue] -> phone_0x99 + +=== post_neutralization === +"Attack neutralized. Excellent work, 0x00." #speaker:Agent 0x99 + +"But the mission isn't complete. We need intelligence about ENTROPY's broader operations." + +{found_tomb_gamma == false: + "**PRIORITY:** Find Tomb Gamma coordinates. This is The Architect's command center. Critical for future operations against ENTROPY." +} + +{found_mole_evidence == false: + "**PRIORITY:** Find evidence of the SAFETYNET mole. Someone inside is feeding The Architect our operational details." +} + +{found_tomb_gamma == true and found_mole_evidence == true: + "You've secured both Tomb Gamma location and mole evidence. Outstanding intelligence gathering." + + "Prepare for debrief. We need to analyze this immediately." +} + +"Search the area thoroughly. Cell leaders always leave intelligence behind - they're human, they make mistakes." + ++ [I'll keep searching] -> phone_0x99 ++ [Requesting extraction] -> extraction_request + +=== extraction_request === +{crisis_neutralized == false: + "Negative on extraction. Attack is still active. Neutralize the threat first." #speaker:Agent 0x99 + -> phone_0x99 +} + +{crisis_neutralized == true and (found_tomb_gamma == false or found_mole_evidence == false): + "Not yet. We need that intelligence. Tomb Gamma location and mole evidence are critical." #speaker:Agent 0x99 + + "Take five more minutes. Search thoroughly." + -> phone_0x99 +} + +{crisis_neutralized == true and found_tomb_gamma == true and found_mole_evidence == true: + "Extraction approved. Transport inbound to your location. ETA 3 minutes." #speaker:Agent 0x99 + + "Director Morgan wants immediate debrief. You'll be reviewing outcomes from all four operations." + + "Prepare yourself. The casualties from unchosen operations... it's going to be tough to process." + + "But you did your job. You won YOUR battle. Remember that." + -> END +} + +-> END