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