diff --git a/scenarios/m03_ghost_in_the_machine/ink/m03_closing_debrief.json b/scenarios/m03_ghost_in_the_machine/ink/m03_closing_debrief.json new file mode 100644 index 0000000..78c0972 --- /dev/null +++ b/scenarios/m03_ghost_in_the_machine/ink/m03_closing_debrief.json @@ -0,0 +1 @@ +{"inkVersion":21,"root":[[["done",{"#n":"g-0"}],null],"done",{"start":["#","^speaker:agent_0x99","/#","^[Location: SAFETYNET Secure Debrief Room]","\n","^[Time: 24 hours after mission completion]","\n","^[Visual: Agent 0x99 avatar - serious but relieved expression]","\n","^Agent 0x99: ","ev",{"x()":"player_name"},"out","/ev","^, welcome back. Have a seat.","\n","^Agent 0x99: Let's debrief Mission 3 - Ghost in the Machine.","\n","ev",{"x()":"objectives_completed"},4,">=","/ev",[{"->":".^.b","c":true},{"b":["\n",{"->":"full_success_debrief"},{"->":"start.24"},null]}],"nop","\n","ev",{"x()":"objectives_completed"},2,">=",{"x()":"objectives_completed"},4,"<","&&","/ev",[{"->":".^.b","c":true},{"b":["\n",{"->":"partial_success_debrief"},{"->":"start.36"},null]}],"nop","\n","ev",{"x()":"objectives_completed"},2,"<","/ev",[{"->":".^.b","c":true},{"b":["\n",{"->":"minimal_success_debrief"},{"->":"start.44"},null]}],"nop","\n",null],"full_success_debrief":["#","^speaker:agent_0x99","/#","^Agent 0x99: All primary objectives completed. Outstanding work.","\n","ev",{"x()":"player_approach"},"str","^cautious","/str","==","/ev",[{"->":".^.b","c":true},{"b":["\n","^Agent 0x99: Your methodical approach paid off. You documented everything, missed nothing.","\n",{"->":".^.^.^.13"},null]}],"nop","\n","ev",{"x()":"player_approach"},"str","^aggressive","/str","==","/ev",[{"->":".^.b","c":true},{"b":["\n","^Agent 0x99: You moved fast and got results. Aggressive execution, clean outcome.","\n",{"->":".^.^.^.23"},null]}],"nop","\n","ev",{"x()":"player_approach"},"str","^diplomatic","/str","==","/ev",[{"->":".^.b","c":true},{"b":["\n","^Agent 0x99: Your adaptability was key. You read situations perfectly and adjusted tactics accordingly.","\n",{"->":".^.^.^.33"},null]}],"nop","\n","ev",{"x()":"stealth_rating"},80,">","/ev",[{"->":".^.b","c":true},{"b":["\n","^Agent 0x99: And you stayed ghost the entire operation. Zero Day never knew what hit them.","\n",{"->":".^.^.^.41"},null]}],"nop","\n","ev",{"x()":"stealth_rating"},50,">",{"x()":"stealth_rating"},80,"<=","&&","/ev",[{"->":".^.b","c":true},{"b":["\n","^Agent 0x99: You made some noise, but nothing that compromised the mission.","\n",{"->":".^.^.^.53"},null]}],"nop","\n","ev",{"x()":"stealth_rating"},50,"<=","/ev",[{"->":".^.b","c":true},{"b":["\n","^Agent 0x99: You triggered some alerts, but you completed the objectives despite the heat.","\n",{"->":".^.^.^.61"},null]}],"nop","\n",{"->":"mission_impact"},null],"partial_success_debrief":["#","^speaker:agent_0x99","/#","^Agent 0x99: Mission complete, though we didn't get everything we wanted.","\n","^Agent 0x99: ","ev",{"x()":"objectives_completed"},"out","/ev","^ objectives out of the primary set. That's solid work, but there are gaps.","\n","ev",{"x()":"player_approach"},"str","^aggressive","/str","==",{"x()":"time_taken"},1800,"<","&&","/ev",[{"->":".^.b","c":true},{"b":["\n","^Agent 0x99: Speed was prioritized. Sometimes that means missing details.","\n",{"->":".^.^.^.24"},null]}],"nop","\n","^Agent 0x99: Still, what you DID get is valuable. Let's talk impact.","\n",{"->":"mission_impact"},null],"minimal_success_debrief":["#","^speaker:agent_0x99","/#","^Agent 0x99: You completed the core objective, but... we're working with incomplete intelligence.","\n","^Agent 0x99: What we have is useful. But there's significant intelligence we missed.","\n","^Agent 0x99: Let's assess what we got and what it means.","\n",{"->":"mission_impact"},null],"mission_impact":["#","^speaker:agent_0x99","/#","^Agent 0x99: Here's what Zero Day Syndicate's infiltration accomplished:","\n","ev",{"x()":"flags_submitted_count"},4,">=","/ev",[{"->":".^.b","c":true},{"b":["\n","^Agent 0x99: Network intelligence - complete. You submitted all VM flags.","\n","^Agent 0x99: We have a full map of their training network, service vulnerabilities, and operational infrastructure.","\n",{"->":".^.^.^.11"},null]}],"nop","\n","ev",{"x()":"flags_submitted_count"},2,">=",{"x()":"flags_submitted_count"},4,"<","&&","/ev",[{"->":".^.b","c":true},{"b":["\n","^Agent 0x99: Network intelligence - partial. You submitted ","ev",{"x()":"flags_submitted_count"},"out","/ev","^ of 4 flags.","\n","^Agent 0x99: We have some visibility into their operations, but there are blind spots.","\n",{"->":".^.^.^.23"},null]}],"nop","\n","ev",{"x()":"flags_submitted_count"},2,"<","/ev",[{"->":".^.b","c":true},{"b":["\n","^Agent 0x99: Network intelligence - minimal. We're missing critical digital evidence.","\n",{"->":".^.^.^.31"},null]}],"nop","\n",{"->":"m2_hospital_discussion"},null],"m2_hospital_discussion":["#","^speaker:agent_0x99","/#","^Agent 0x99: Now... St. Catherine's Hospital. The M2 connection.","\n","ev",{"x()":"found_exploit_catalog"},{"x()":"flags_submitted_count"},4,">=","||","/ev",[{"->":".^.b","c":true},{"b":["\n","^Agent 0x99: You found the smoking gun. The exploit catalog. The operational logs.","\n","^Agent 0x99: ProFTPD exploit, CVE-2010-4652. Sold to GHOST - Ransomware Incorporated.","\n","^Agent 0x99: Purchase price: $12,500. With a healthcare premium markup.","\n","^Agent 0x99: Target: St. Catherine's Regional Medical Center.","\n","^[Pause]","\n","^Agent 0x99: Six deaths. Four in critical care when patient monitoring failed. Two during emergency surgery when systems crashed.","\n","ev",{"x()":"knows_m2_connection"},"/ev",[{"->":".^.b","c":true},{"b":["\n","^Agent 0x99: You knew the stakes from the beginning. You delivered.","\n",{"->":".^.^.^.17"},null]}],"nop","\n","^Agent 0x99: This is ironclad evidence. Federal prosecutors can prove direct causation.","\n","^Agent 0x99: Zero Day → GHOST → St. Catherine's. Murder for profit.","\n",{"->":"victoria_discussion"},{"->":".^.^.^.13"},null]}],"nop","\n","ev",{"x()":"found_exploit_catalog"},"!",{"x()":"flags_submitted_count"},4,"<","&&","/ev",[{"->":".^.b","c":true},{"b":["\n","^Agent 0x99: We have strong circumstantial evidence connecting Zero Day to the M2 hospital attack.","\n","^Agent 0x99: But without the operational logs or exploit catalog, proving direct causation is harder.","\n","^Agent 0x99: We can build a case, but it would have been stronger with more evidence.","\n",{"->":"victoria_discussion"},{"->":".^.^.^.24"},null]}],"nop","\n",null],"victoria_discussion":["#","^speaker:agent_0x99","/#","^Agent 0x99: Victoria Sterling. Codename \"Cipher.\" CEO of WhiteHat Security, leader of Zero Day Syndicate.","\n","ev",{"x()":"victoria_fate"},"str","^recruited","/str","==","/ev",[{"->":".^.b","c":true},{"b":["\n","^Agent 0x99: And now... your double agent.","\n","^Agent 0x99: I'll be honest - that was a hell of a gambit. Recruiting her instead of arresting her.","\n","ev","str","^She's more valuable as an intelligence asset","/str","/ev",{"*":".^.c-0","flg":20},"ev","str","^She can help us stop Phase 2","/str","/ev",{"*":".^.c-1","flg":20},"ev","str","^It was the right call","/str","/ev",{"*":".^.c-2","flg":20},{"->":".^.^.^.13"},{"c-0":["\n","^You: She has access to The Architect. To the entire ENTROPY network. We need that intelligence.","\n","^Agent 0x99: I agree. But it's risky. She's ideologically committed, not just mercenary.","\n","^Agent 0x99: She believes in what she's doing. That makes turning her... complicated.","\n",{"->":"victoria_recruited_path"},{"#f":5}],"c-1":["\n","^You: Phase 2 targets 50,000+ patients and 1.2 million customers. Victoria's intel can prevent that.","\n","^Agent 0x99: True. If she delivers. If she doesn't get exposed. If The Architect doesn't suspect.","\n","^Agent 0x99: A lot of \"ifs.\"","\n",{"->":"victoria_recruited_path"},{"#f":5}],"c-2":["\n","^You: It was the right tactical decision given the strategic picture.","\n","ev",{"VAR?":"handler_trust"},10,"+",{"VAR=":"handler_trust","re":true},"/ev","^Agent 0x99: I trust your judgment. You were there, you made the call.","\n",{"->":"victoria_recruited_path"},{"#f":5}]}]}],"nop","\n","ev",{"x()":"victoria_fate"},"str","^arrested","/str","==","/ev",[{"->":".^.b","c":true},{"b":["\n","^Agent 0x99: Victoria Sterling is in federal custody. Charged with conspiracy, providing material support to terrorist operations, and accessory to murder.","\n","^Agent 0x99: She's looking at life in prison. Her lawyers are already talking about philosophical defenses - \"information freedom,\" \"market forces.\"","\n","^Agent 0x99: It won't work. The evidence is too clear.","\n","ev","str","^She authorized six deaths for $12,500","/str","/ev",{"*":".^.c-0","flg":20},"ev","str","^Justice for St. Catherine's victims","/str","/ev",{"*":".^.c-1","flg":20},"ev","str","^One cell leader down","/str","/ev",{"*":".^.c-2","flg":20},{"->":".^.^.^.23"},{"c-0":["\n","^You: She charged a healthcare premium because hospitals can't defend themselves. Calculated exploitation.","\n","^Agent 0x99: Exactly. That pricing model proves premeditation and malicious intent.","\n",{"->":"victoria_arrested_path"},{"#f":5}],"c-1":["\n","^You: Angela Martinez. David Chen. Sarah Thompson. Marcus Gray. Jennifer Wu. Robert Patterson.","\n","^You: They have justice now.","\n","ev",{"VAR?":"handler_trust"},10,"+",{"VAR=":"handler_trust","re":true},"/ev","^Agent 0x99: [Quiet moment] Yes. Yes, they do.","\n",{"->":"victoria_arrested_path"},{"#f":5}],"c-2":["\n","^You: One ENTROPY cell leader captured. That disrupts their operations.","\n","^Agent 0x99: Agreed. Zero Day Syndicate is crippled without Victoria.","\n",{"->":"victoria_arrested_path"},{"#f":5}]}]}],"nop","\n","ev",{"x()":"victoria_fate"},"str","^recruited","/str","!=",{"x()":"victoria_fate"},"str","^arrested","/str","!=","&&","/ev",[{"->":".^.b","c":true},{"b":["\n","^Agent 0x99: Victoria Sterling remains at large. She suspects SAFETYNET interest but has no proof of infiltration.","\n","^Agent 0x99: We have evidence, but without her in custody, prosecution is harder.","\n","^Agent 0x99: She'll likely go dark, reorganize, resurface under a new operation.","\n",{"->":"phase_2_discussion"},{"->":".^.^.^.39"},null]}],"nop","\n",null],"victoria_recruited_path":["#","^speaker:agent_0x99","/#","^Agent 0x99: She's been debriefed by our counterintelligence team. Initial intelligence package delivered.","\n","^Agent 0x99: Communication protocols for The Architect. Payment methods. Other ENTROPY cell contacts.","\n","^Agent 0x99: We're establishing encrypted channels for her to feed us ongoing intelligence.","\n","^Agent 0x99: She'll continue operations at Zero Day to avoid suspicion, but now she reports to us.","\n","ev",{"x()":"player_approach"},"str","^diplomatic","/str","==","/ev",[{"->":".^.b","c":true},{"b":["\n","^Agent 0x99: Your diplomatic approach made this possible. Well played.","\n",{"->":".^.^.^.19"},null]}],"nop","\n","^Agent 0x99: Time will tell if this gambit pays off. But for now, we have eyes inside ENTROPY leadership.","\n",{"->":"phase_2_discussion"},null],"victoria_arrested_path":["#","^speaker:agent_0x99","/#","^Agent 0x99: With Victoria in custody, Zero Day Syndicate is effectively neutralized.","\n","^Agent 0x99: Her encryption keys gave us access to client databases, transaction records, The Architect's communications.","\n","^Agent 0x99: We're rolling up her network as we speak. Other ENTROPY cells that relied on Zero Day's exploits are scrambling.","\n","ev",{"x()":"player_approach"},"str","^cautious","/str","==","/ev",[{"->":".^.b","c":true},{"b":["\n","^Agent 0x99: Your thorough evidence gathering made this arrest possible. Clean prosecution.","\n",{"->":".^.^.^.17"},null]}],"nop","\n",{"->":"phase_2_discussion"},null],"phase_2_discussion":["#","^speaker:agent_0x99","/#","^Agent 0x99: Now the big one - Phase 2.","\n","ev",{"x()":"found_architect_directive"},"/ev",[{"->":".^.b","c":true},{"b":["\n","^Agent 0x99: You found The Architect's directive. That USB drive in Victoria's desk.","\n","^Agent 0x99: Double-encoded. Base64 and ROT13. You cracked it.","\n","^[Agent 0x99's expression darkens]","\n","^Agent 0x99: The contents... jesus.","\n","^Agent 0x99: Healthcare SCADA systems. 15 hospitals targeted. Ventilation control. Patient monitoring networks.","\n","^Agent 0x99: Energy grid ICS. 427 vulnerable substations mapped for attack.","\n","^Agent 0x99: Projected impact: 50,000+ patient treatment delays. 1.2 million residential customers without power. Winter targeting.","\n","ev","str","^That's genocide-scale harm","/str","/ev",{"*":".^.c-0","flg":20},"ev","str","^We have to stop it","/str","/ev",{"*":".^.c-1","flg":20},"ev","str","^The Architect is orchestrating everything","/str","/ev",{"*":".^.c-2","flg":20},{"->":".^.^.^.9"},{"c-0":["\n","^You: 50,000 patients. That's not hacking. That's mass casualty terrorism.","\n","^Agent 0x99: Correct. And it's coordinated across multiple ENTROPY cells.","\n",{"->":"architect_revelation"},{"#f":5}],"c-1":["\n","^You: We have the Phase 2 timeline. Q4 2024 - Q1 2025. We can prevent this.","\n","^Agent 0x99: We're working on it. But stopping a distributed multi-cell attack is complex.","\n",{"->":"architect_revelation"},{"#f":5}],"c-2":["\n","^You: This isn't isolated cells. This is coordinated network-level operation.","\n","^Agent 0x99: Yes. And that's the game-changer.","\n",{"->":"architect_revelation"},{"#f":5}]}]}],"nop","\n","ev",{"x()":"found_architect_directive"},"!","/ev",[{"->":".^.b","c":true},{"b":["\n","^Agent 0x99: We know Phase 2 is planned. We've seen references in Victoria's communications.","\n","^Agent 0x99: But without the detailed directive, we're working with incomplete intelligence.","\n","^Agent 0x99: Infrastructure targeting. Healthcare and energy sectors. That's what we know.","\n","^Agent 0x99: We'll keep working the intelligence, but... we could have had more.","\n",{"->":"james_discussion"},{"->":".^.^.^.16"},null]}],"nop","\n",null],"architect_revelation":[["#","^speaker:agent_0x99","/#","^Agent 0x99: The Architect. ENTROPY's leadership figure.","\n","^Agent 0x99: The directive proves they exist. Proves they're coordinating all the cells.","\n","^Agent 0x99: Zero Day provides exploits. Ransomware Inc deploys against hospitals. Social Fabric amplifies panic via misinformation. Critical Mass targets emergency response.","\n","^Agent 0x99: Multi-vector synchronized attack. Each cell independently operational, but coordinated for maximum chaos.","\n","^Agent 0x99: \"Chaos amplification factor: 3.7x\" - they're CALCULATING the synergistic harm.","\n","ev","str","^Do we know The Architect's identity?","/str","/ev",{"*":".^.c-0","flg":20},"ev","str","^This is campaign-level intelligence","/str","/ev",{"*":".^.c-1","flg":20},{"c-0":["\n","^You: Do we have any leads on The Architect's real identity?","\n","^Agent 0x99: Not yet. Victoria claims she's never met them face-to-face. All communication via encrypted channels.","\n","^Agent 0x99: But we're working on it. Every ENTROPY operation gets us closer.","\n",{"->":"architect_investigation"},{"#f":5}],"c-1":["\n","^You: This isn't just one mission. This is the key to the entire ENTROPY network.","\n","ev",{"VAR?":"handler_trust"},10,"+",{"VAR=":"handler_trust","re":true},"/ev","^Agent 0x99: Exactly. You didn't just complete a mission. You gave us the map to their whole operation.","\n",{"->":"architect_investigation"},{"#f":5}]}],null],"architect_investigation":["#","^speaker:agent_0x99","/#","^Agent 0x99: SAFETYNET Command is escalating this to top priority.","\n","^Agent 0x99: Phase 2 prevention is now inter-agency. FBI, CISA, NSA. We're briefing them all.","\n","^Agent 0x99: 427 energy substations will get hardened defenses. 15 hospitals will get emergency security assessments.","\n","^Agent 0x99: We can't stop ENTROPY entirely - they're too distributed - but we can protect the Phase 2 targets.","\n","^Agent 0x99: Thanks to you.","\n",{"->":"james_discussion"},null],"james_discussion":["#","^speaker:agent_0x99","/#","ev",{"x()":"james_fate"},"str","^","/str","!=","/ev",[{"->":".^.b","c":true},{"b":["\n","^Agent 0x99: One more thing. James Park, Zero Day's senior consultant.","\n","ev",{"x()":"james_fate"},"str","^protected","/str","==","/ev",[{"->":".^.b","c":true},{"b":["\n","^Agent 0x99: You protected him. Framed his role as unwitting participation under Victoria's deception.","\n","^Agent 0x99: I've read your report. And I've read James's diary entries.","\n","^Agent 0x99: I think... I think you made the right call.","\n","^Agent 0x99: James conducted legitimate pen testing under false pretenses. He was a tool Victoria used.","\n","^Agent 0x99: When he learned the truth, he was paralyzed by fear and guilt. That's human.","\n","ev",{"x()":"player_approach"},"str","^diplomatic","/str","==","/ev",[{"->":".^.b","c":true},{"b":["\n","^Agent 0x99: Your diplomatic nuance - recognizing the complexity - that's why this field needs people like you.","\n",{"->":".^.^.^.19"},null]}],"nop","\n","^Agent 0x99: James reached out to SAFETYNET yesterday. Voluntarily. He's cooperating fully.","\n","^Agent 0x99: He won't face charges. But he'll live with what happened. That's punishment enough.","\n",{"->":"lore_discussion"},{"->":".^.^.^.11"},null]}],"nop","\n","ev",{"x()":"james_fate"},"str","^exposed","/str","==","/ev",[{"->":".^.b","c":true},{"b":["\n","^Agent 0x99: You exposed James's full involvement. The reconnaissance, the post-attack knowledge, the hush money.","\n","^Agent 0x99: He's been arrested. Charged with conspiracy after the fact and obstruction.","\n","^Agent 0x99: His lawyers are arguing he was deceived, which... he was. Initially.","\n","^Agent 0x99: But when he learned the truth and took Victoria's raise to stay quiet, that became a choice.","\n","ev",{"x()":"player_approach"},"str","^aggressive","/str","==","/ev",[{"->":".^.b","c":true},{"b":["\n","^Agent 0x99: Your aggressive approach - all operatives face justice - is consistent. I respect that.","\n",{"->":".^.^.^.17"},null]}],"nop","\n","^Agent 0x99: James will likely get a reduced sentence compared to Victoria. Maybe 5-10 years instead of life.","\n","^Agent 0x99: His cooperation since arrest is helping prosecution. But he'll still serve time.","\n",{"->":"lore_discussion"},{"->":".^.^.^.21"},null]}],"nop","\n","ev",{"x()":"james_fate"},"str","^ignored","/str","==","/ev",[{"->":".^.b","c":true},{"b":["\n","^Agent 0x99: You documented James's situation but left his fate to his own choices.","\n","^Agent 0x99: Interesting approach. Not protecting, not exposing. Just... observing.","\n","^Agent 0x99: James made his choice. He came forward to SAFETYNET two days ago. Voluntarily.","\n","^Agent 0x99: He's cooperating. Providing testimony against Victoria. He'll likely avoid charges given the voluntary disclosure.","\n","ev",{"x()":"player_approach"},"str","^cautious","/str","==","/ev",[{"->":".^.b","c":true},{"b":["\n","^Agent 0x99: Your cautious approach - gather evidence, let the system decide - allowed James's own moral agency.","\n",{"->":".^.^.^.17"},null]}],"nop","\n","^Agent 0x99: He made the right choice in the end. That says something about him.","\n",{"->":"lore_discussion"},{"->":".^.^.^.31"},null]}],"nop","\n",{"->":".^.^.^.11"},null]}],"nop","\n","ev",{"x()":"james_fate"},"str","^","/str","==","/ev",[{"->":".^.b","c":true},{"b":["\n",{"->":"lore_discussion"},{"->":".^.^.^.21"},null]}],"nop","\n",null],"lore_discussion":["#","^speaker:agent_0x99","/#","ev",{"x()":"lore_collected"},3,">=","/ev",[{"->":".^.b","c":true},{"b":["\n","^Agent 0x99: Intelligence gathering - exemplary. You collected all LORE fragments.","\n","^Agent 0x99: Zero Day's founding philosophy. The exploit catalog. The Architect's directive.","\n","^Agent 0x99: Each one gave us pieces of the larger ENTROPY puzzle.","\n",{"->":"lore_fragment_breakdown"},{"->":".^.^.^.9"},null]}],"nop","\n","ev",{"x()":"lore_collected"},2,"==","/ev",[{"->":".^.b","c":true},{"b":["\n","^Agent 0x99: You collected some LORE fragments. Useful intelligence on ENTROPY's structure.","\n","^Agent 0x99: We would have benefited from the complete set, but what you found helps.","\n",{"->":"final_assessment"},{"->":".^.^.^.17"},null]}],"nop","\n","ev",{"x()":"lore_collected"},1,"==","/ev",[{"->":".^.b","c":true},{"b":["\n","^Agent 0x99: You found one LORE fragment. Better than nothing, but we're missing context.","\n",{"->":"final_assessment"},{"->":".^.^.^.25"},null]}],"nop","\n","ev",{"x()":"lore_collected"},0,"==","/ev",[{"->":".^.b","c":true},{"b":["\n","^Agent 0x99: No LORE fragments collected. That's... a missed opportunity.","\n","^Agent 0x99: LORE provides strategic intelligence about ENTROPY's ideology, structure, and future plans.","\n","^Agent 0x99: Without it, we're fighting tactics instead of strategy.","\n",{"->":"final_assessment"},{"->":".^.^.^.33"},null]}],"nop","\n",null],"lore_fragment_breakdown":["#","^speaker:agent_0x99","/#","^Agent 0x99: The three fragments paint a complete picture:","\n","^Agent 0x99: Fragment 1 - \"Zero Day: A Brief History\" - showed us Victoria's philosophy. \"Monetize entropy.\"","\n","^Agent 0x99: She's not a sociopath. She's a true believer. She genuinely thinks she's participating in a rational market.","\n","^Agent 0x99: That makes her MORE dangerous, not less. You can't reason someone out of a position they didn't reason themselves into.","\n","^[Pause]","\n","^Agent 0x99: Fragment 2 - \"Q3 2024 Exploit Catalog\" - the smoking gun. $12,500 for the hospital exploit. Healthcare premium.","\n","^Agent 0x99: That pricing model - charging MORE to attack the vulnerable - that's evidence of calculated malice.","\n","^Agent 0x99: No jury will see \"market efficiency\" when they read \"healthcare premium: +30% (delayed incident response).\"","\n","^[Pause]","\n","^Agent 0x99: Fragment 3 - \"The Architect's Directive\" - the game-changer. Phase 2 plans. Multi-cell coordination. The full scope.","\n","^Agent 0x99: This fragment alone justified the entire mission. We know what's coming. We can prepare.","\n",{"->":"final_assessment"},null],"final_assessment":["#","^speaker:agent_0x99","/#","^Agent 0x99: Final assessment, ","ev",{"x()":"player_name"},"out","/ev","^:","\n","ev",{"x()":"objectives_completed"},4,">=",{"x()":"lore_collected"},2,">=","&&","/ev",[{"->":".^.b","c":true},{"b":["\n","^Agent 0x99: Mission success - exceptional. You delivered everything we needed and more.","\n","ev",{"VAR?":"handler_trust"},70,">=","/ev",[{"->":".^.b","c":true},{"b":["\n","^Agent 0x99: And honestly? I knew you would. I've always had complete confidence in you.","\n",{"->":".^.^.^.9"},null]}],"nop","\n","^Agent 0x99: The M2 hospital attack has accountability. Victoria Sterling faces justice.","\n","^Agent 0x99: Phase 2 can be prevented. We have targets, timelines, coordination plans.","\n","^Agent 0x99: The Architect is still out there, but we're closing in. Each mission gets us closer.","\n",{"->":"aftermath"},{"->":".^.^.^.20"},null]}],"nop","\n","ev",{"x()":"objectives_completed"},2,">=","/ev",[{"->":".^.b","c":true},{"b":["\n","^Agent 0x99: Mission success - solid. You got what we needed, even if we didn't get everything.","\n","^Agent 0x99: We can work with this. Prosecution is viable. Phase 2 prevention is possible.","\n","^Agent 0x99: It would have been better with complete intelligence, but you did good work.","\n",{"->":"aftermath"},{"->":".^.^.^.28"},null]}],"nop","\n","ev",{"x()":"objectives_completed"},2,"<","/ev",[{"->":".^.b","c":true},{"b":["\n","^Agent 0x99: Mission success - partial. We got some intelligence, but there are significant gaps.","\n","^Agent 0x99: We'll use what we have. But this fight against ENTROPY just got harder.","\n",{"->":"aftermath"},{"->":".^.^.^.36"},null]}],"nop","\n",null],"aftermath":[["#","^speaker:agent_0x99","/#","^Agent 0x99: Here's what happens now:","\n","^Agent 0x99: Zero Day Syndicate is disrupted. Victoria Sterling ","ev",{"x()":"victoria_fate"},"str","^arrested","/str","==","/ev",[{"->":".^.b","c":true},{"b":["^ is in custody",{"->":".^.^.^.14"},null]}],"nop","ev",{"x()":"victoria_fate"},"str","^recruited","/str","==","/ev",[{"->":".^.b","c":true},{"b":["^ is our asset",{"->":".^.^.^.23"},null]}],"nop","ev",{"x()":"victoria_fate"},"str","^arrested","/str","!=",{"x()":"victoria_fate"},"str","^recruited","/str","!=","&&","/ev",[{"->":".^.b","c":true},{"b":["^ has gone dark",{"->":".^.^.^.38"},null]}],"nop","^.","\n","^Agent 0x99: Phase 2 critical infrastructure targets are being hardened. FBI and CISA are coordinating defenses.","\n","^Agent 0x99: Other ENTROPY cells are scrambling without Zero Day's exploit supply chain.","\n","^Agent 0x99: And SAFETYNET is one step closer to identifying The Architect.","\n","ev","str","^What's next for me?","/str","/ev",{"*":".^.c-0","flg":20},"ev","str","^What about The Architect?","/str","/ev",{"*":".^.c-1","flg":20},"ev","str","^The fight continues","/str","/ev",{"*":".^.c-2","flg":20},{"c-0":["\n","^You: What's my next assignment?","\n","^Agent 0x99: Rest. Debrief. Then we'll see where ENTROPY pops up next.","\n","^Agent 0x99: They're a network. Taking down one cell reveals others.","\n",{"->":"closing"},{"#f":5}],"c-1":["\n","^You: When do we go after The Architect directly?","\n","^Agent 0x99: When we know who they are. We're getting closer. Each mission, each piece of intelligence.","\n","^Agent 0x99: Eventually, they'll make a mistake. And when they do, we'll be ready.","\n",{"->":"closing"},{"#f":5}],"c-2":["\n","^You: ENTROPY is still out there. Ransomware Inc, Social Fabric, Critical Mass, others.","\n","^Agent 0x99: Yes. This is a marathon, not a sprint.","\n","^Agent 0x99: But every mission we complete, we weaken their network. We save lives.","\n",{"->":"closing"},{"#f":5}]}],null],"closing":[["#","^speaker:agent_0x99","/#","ev",{"VAR?":"handler_trust"},80,">=","/ev",[{"->":".^.b","c":true},{"b":["\n","^Agent 0x99: ","ev",{"x()":"player_name"},"out","/ev","^, I want you to know... you're one of the best agents I've worked with.","\n","^Agent 0x99: Not just technically skilled. But morally thoughtful. You understand nuance.","\n","^Agent 0x99: That's rare in this field. Don't lose it.","\n",{"->":".^.^.^.9"},null]}],"nop","\n","ev",{"VAR?":"handler_trust"},50,">=",{"VAR?":"handler_trust"},80,"<","&&","/ev",[{"->":".^.b","c":true},{"b":["\n","^Agent 0x99: You did good work on this mission, ","ev",{"x()":"player_name"},"out","/ev","^.","\n","^Agent 0x99: Get some rest. We'll need you again soon.","\n",{"->":".^.^.^.21"},null]}],"nop","\n","ev",{"VAR?":"handler_trust"},50,"<","/ev",[{"->":".^.b","c":true},{"b":["\n","^Agent 0x99: Mission complete. We got results, even if the execution was rough.","\n","^Agent 0x99: Take some time. Reflect on what worked and what didn't.","\n",{"->":".^.^.^.29"},null]}],"nop","\n","^Agent 0x99: And remember those six names. Angela Martinez. David Chen. Sarah Thompson. Marcus Gray. Jennifer Wu. Robert Patterson.","\n","^Agent 0x99: They didn't get justice before. But because of what you did, they have it now.","\n","^Agent 0x99: That matters.","\n","ev","str","^It does matter","/str","/ev",{"*":".^.c-0","flg":20},"ev","str","^Thank you, Agent 0x99","/str","/ev",{"*":".^.c-1","flg":20},"ev","str","^On to the next mission","/str","/ev",{"*":".^.c-2","flg":20},{"c-0":["\n","ev",{"VAR?":"handler_trust"},5,"+",{"VAR=":"handler_trust","re":true},"/ev","^You: It matters. That's why we do this work.","\n","^Agent 0x99: Exactly. That's why we fight.","\n",{"->":"final_words"},{"#f":5}],"c-1":["\n","^You: Thank you for the support on this mission. Your guidance made the difference.","\n","ev",{"VAR?":"handler_trust"},10,"+",{"VAR=":"handler_trust","re":true},"/ev","^Agent 0x99: [Warmly] Any time, ","ev",{"x()":"player_name"},"out","/ev","^. We're a team.","\n",{"->":"final_words"},{"#f":5}],"c-2":["\n","^You: Where ENTROPY goes, we follow. On to the next mission.","\n","^Agent 0x99: [Nods] Damn right. Haxolottle out.","\n",{"->":"final_words"},{"#f":5}]}],null],"final_words":["#","^speaker:agent_0x99","/#","^Agent 0x99: Stay safe out there, ","ev",{"x()":"player_name"},"out","/ev","^.","\n","^Agent 0x99: The fight against ENTROPY continues. But tonight, you've earned some rest.","\n","^[Transmission ends]","\n","^[Mission 3 Complete: Ghost in the Machine]","\n","#","^mission_complete","/#","end",null],"global decl":["ev",50,{"VAR=":"handler_trust"},"/ev","end",null]}],"listDefs":{}} \ No newline at end of file diff --git a/scenarios/m03_ghost_in_the_machine/ink/m03_james_choice.json b/scenarios/m03_ghost_in_the_machine/ink/m03_james_choice.json new file mode 100644 index 0000000..0eecd8f --- /dev/null +++ b/scenarios/m03_ghost_in_the_machine/ink/m03_james_choice.json @@ -0,0 +1 @@ +{"inkVersion":21,"root":[[["done",{"#n":"g-0"}],null],"done",{"start":["#","^speaker:computer","/#","^[Location: James Park's Office]","\n","^[You're searching through files and documents]","\n","^You find a folder labeled \"GHOST - Hospital Infrastructure Assessment\"","\n","^Inside: network diagrams of hospital IT systems, vulnerability notes, target specifications.","\n","^This is reconnaissance documentation for the St. Catherine's Hospital attack.","\n",{"->":"initial_reaction"},null],"initial_reaction":[["ev","str","^Read through the entire file carefully","/str","/ev",{"*":".^.c-0","flg":20},"ev","str","^This proves James is guilty - document it immediately","/str","/ev",{"*":".^.c-1","flg":20},"ev","str","^Look for more context before deciding","/str","/ev",{"*":".^.c-2","flg":20},{"c-0":["\n",{"->":"examine_evidence_thoroughly"},{"#f":5}],"c-1":["\n",{"->":"rush_to_judgment"},{"#f":5}],"c-2":["\n",{"->":"search_for_context"},{"#f":5}]}],null],"examine_evidence_thoroughly":[["^You carefully read through James's documentation.","\n","^FINDINGS:","\n","^Document 1: Hospital network reconnaissance","\n",["^Detailed network mapping of St. Catherine's Regional Medical Center","\n",["^Identified vulnerable FTP server (ProFTPD 1.3.5)","\n",["^Patient monitoring system architecture documented","\n",["^Critical care unit network topology","\n","^Document 2: Vulnerability assessment","\n",["^ProFTPD backdoor vulnerability noted (CVE-2010-4652)","\n",["^Exploitation feasibility: HIGH","\n",["^Impact assessment: \"Critical care systems dependent on network\"","\n",["^Recommendation: \"Suitable for CLIENT: GHOST deployment\"","\n","^Document 3: Email correspondence","\n","^TO: victoria.sterling@whitehat-security.com","\n","^FROM: james.park@whitehat-security.com","\n","^SUBJECT: St. Catherine's Assessment Complete","\n","^\"Victoria - completed the hospital assessment you requested.","\n","^ProFTPD vulnerability confirmed exploitable. Network architecture","\n","^documented. Ready for client delivery. -JP\"","\n","ev",2,"/ev",{"VAR=":"james_evidence_level","re":true},{"->":"evidence_analysis"},{"#n":"g-7"}],{"#n":"g-6"}],{"#n":"g-5"}],{"#n":"g-4"}],{"#n":"g-3"}],{"#n":"g-2"}],{"#n":"g-1"}],{"#n":"g-0"}],null],null],"evidence_analysis":["^This evidence proves James conducted the reconnaissance that enabled the hospital attack.","\n","^But additional documents reveal more context...","\n","^[You find a second folder: \"Personal Notes\"]","\n","^Inside: diary entries from James","\n","^ENTRY - May 10, 2024:","\n","^\"Victoria asked me to do a hospital security assessment.","\n","^Said it was for a 'security awareness client.' I completed","\n","^the network analysis - it's my job. Professional, thorough work.","\n","^That's what I do. I assess vulnerabilities. That's the business.\"","\n","^ENTRY - May 20, 2024:","\n","^\"Saw the news about St. Catherine's Hospital. Ransomware attack.","\n","^Patient deaths. Critical care systems failed.","\n","^That network diagram looked familiar.","\n","^Oh god. Was that...? No. Victoria said it was for security awareness.","\n","^She wouldn't... would she?\"","\n","^ENTRY - May 22, 2024:","\n","^\"I confronted Victoria about St. Catherine's. She said I was","\n","^being paranoid. Said hospitals get attacked all the time.","\n","^Said there's no way to know if our assessment was connected.","\n","^But the network topology matches EXACTLY what I documented.","\n","^I think... I think we enabled that attack. I think Victoria","\n","^sold our reconnaissance to whoever deployed that ransomware.","\n","^I helped kill those people. I didn't know. I didn't KNOW.","\n","^What do I do?\"","\n","^ENTRY - May 25, 2024:","\n","^\"Victoria offered me a raise. Significant raise. Said I'm","\n","^'essential to the business' and she 'trusts my discretion.'","\n","^She knows that I know. And she's paying me to stay quiet.","\n","^I should go to the police. To the FBI. To someone.","\n","^But if I do... I'm admitting I enabled mass casualties. Even","\n","^if I didn't know, I did the work. My network assessment.","\n","^My vulnerability report. My recommendations.","\n","^I could go to prison. My career would be over. My family...","\n","^God help me, I'm considering taking the money and saying nothing.\"","\n","ev",1,"/ev",{"VAR=":"james_evidence_level","re":true},{"->":"moral_complexity"},null],"moral_complexity":[["^The full picture emerges:","\n","^JAMES'S ROLE:","\n",["^Conducted hospital reconnaissance (standard pen testing work)","\n",["^Believed it was for legitimate security awareness client","\n",["^Did NOT know Victoria would sell intelligence to Ransomware Inc","\n",["^Discovered the truth AFTER the attack when he saw news coverage","\n","^JAMES'S KNOWLEDGE NOW:","\n",["^Knows his work enabled the attack","\n",["^Knows Victoria lied about the client","\n",["^Suspects Zero Day sold exploit and reconnaissance to attackers","\n",["^Was offered hush money (raise) to stay quiet","\n","^JAMES'S CURRENT STATE:","\n",["^Guilty, conflicted, paralyzed by fear","\n",["^Wants to come forward but fears legal consequences","\n",["^Taking Victoria's raise = complicity, but easier path","\n",["^No definitive choice made yet in his notes","\n",{"->":"james_moral_choice"},{"#n":"g-11"}],{"#n":"g-10"}],{"#n":"g-9"}],{"#n":"g-8"}],{"#n":"g-7"}],{"#n":"g-6"}],{"#n":"g-5"}],{"#n":"g-4"}],{"#n":"g-3"}],{"#n":"g-2"}],{"#n":"g-1"}],{"#n":"g-0"}],null],null],"james_moral_choice":[["^You have evidence of James's involvement. But the context matters.","\n","^He unknowingly conducted reconnaissance that enabled 6 deaths.","\n","^Now he knows the truth and is wrestling with whether to come forward.","\n","^What do you do with this evidence?","\n","ev","str","^Protect James - he's a victim too","/str","/ev",{"*":".^.c-0","flg":20},"ev","str","^Expose James - ignorance doesn't erase complicity","/str","/ev",{"*":".^.c-1","flg":20},"ev","str","^Leave the evidence - let James make his own choice","/str","/ev",{"*":".^.c-2","flg":20},{"c-0":["\n","ev","str","^protected","/str","/ev",{"VAR=":"james_fate","re":true},{"->":"choice_protect"},{"#f":5}],"c-1":["\n","ev","str","^exposed","/str","/ev",{"VAR=":"james_fate","re":true},{"->":"choice_expose"},{"#f":5}],"c-2":["\n","ev","str","^ignored","/str","/ev",{"VAR=":"james_fate","re":true},{"->":"choice_leave"},{"#f":5}]}],null],"choice_protect":["^You decide to protect James.","\n","^Reasoning: He was deceived by Victoria. He did standard pen testing work","\n","^under false pretenses. He's guilty, yes, but unwittingly. And he's","\n","^clearly tormented by what happened.","\n","^Victoria is the one who weaponized his work. She's the real criminal.","\n","^ACTION: You document Victoria's deception but omit James's name from reports.","\n","^In your notes, you write:","\n","^\"Zero Day Syndicate used internal consultants under false pretenses to","\n","^conduct reconnaissance. Consultants believed work was for legitimate","\n","^security awareness clients. CEO Victoria Sterling (CIPHER) intentionally","\n","^misrepresented client identity to obtain hospital reconnaissance.\"","\n","^This framing protects James while still building the case against Victoria.","\n","ev",true,"/ev",{"VAR=":"player_choice_made","re":true},"#","^complete_task:james_choice_made","/#",{"->":"james_protected_outcome"},null],"james_protected_outcome":["^[You add a handwritten note to James's diary]","\n","^\"James - I found your notes. I know what Victoria did to you.","\n","^I'm with SAFETYNET. We're building a case against Zero Day.","\n","^Your reconnaissance work was legitimate pen testing done under","\n","^false pretenses. You're a victim of Victoria's deception, not","\n","^a conspirator.","\n","^If you want to come forward voluntarily, contact SAFETYNET.","\n","^If not, your name won't appear in our reports. That's your choice.","\n","^But Victoria goes down for what she did. -Agent ","ev",{"x()":"player_name"},"out","/ev","^\"","\n","ev",{"x()":"player_approach"},"str","^diplomatic","/str","==","/ev",[{"->":".^.b","c":true},{"b":["\n","^[This aligns with your diplomatic approach - recognize nuance, give people choices]","\n",{"->":".^.^.^.31"},null]}],"nop","\n","^Evidence logged. James's fate: PROTECTED.","\n","#","^exit_conversation","/#","done",null],"choice_expose":["^You decide to expose James's full involvement.","\n","^Reasoning: Six people died. James's reconnaissance enabled those deaths.","\n","^Yes, he was deceived about the client, but he still did the work.","\n","^He documented vulnerable systems, identified exploitation paths, and","\n","^delivered that intelligence to Victoria.","\n","^And now, knowing the truth, he's considering taking hush money instead","\n","^of coming forward. That's a choice. That's complicity.","\n","^Ignorance might reduce his guilt, but it doesn't erase it.","\n","^ACTION: You document James's full involvement in your report.","\n","^In your notes, you write:","\n","^\"James Park, senior consultant, conducted hospital reconnaissance that","\n","^directly enabled St. Catherine's attack. Evidence suggests he was","\n","^initially deceived about client identity but subsequently learned the","\n","^truth and accepted financial compensation to remain silent. Recommend","\n","^federal charges for conspiracy after the fact.\"","\n","ev",true,"/ev",{"VAR=":"player_choice_made","re":true},"#","^complete_task:james_choice_made","/#",{"->":"james_exposed_outcome"},null],"james_exposed_outcome":[["^[You photograph all of James's documents and diary entries]","\n","^Evidence includes:","\n",["^Hospital reconnaissance files","\n",["^Vulnerability assessments","\n",["^Email correspondence with Victoria","\n",["^Diary entries showing he learned the truth","\n",["^Notes about accepting Victoria's raise as hush money","\n","^This will likely lead to James's arrest alongside Victoria.","\n","^He may receive a lighter sentence due to initial deception, but he'll","\n","^face consequences for his role - both the reconnaissance and the coverup.","\n","ev",{"x()":"player_approach"},"str","^aggressive","/str","==","/ev",[{"->":".^.b","c":true},{"b":["\n","^[This aligns with your aggressive approach - all ENTROPY operatives face justice]","\n",{"->":".^.^.^.16"},null]}],"nop","\n","^Evidence logged. James's fate: EXPOSED.","\n","#","^exit_conversation","/#","done",{"#n":"g-4"}],{"#n":"g-3"}],{"#n":"g-2"}],{"#n":"g-1"}],{"#n":"g-0"}],null],null],"choice_leave":["^You decide to leave the evidence but take no direct action regarding James.","\n","^Reasoning: This is James's moral choice to make, not yours.","\n","^He has all the information. He knows what happened. He knows the","\n","^consequences. He's wrestling with whether to come forward or accept","\n","^the hush money.","\n","^You're not his judge. Your job is to stop ENTROPY and bring down","\n","^Victoria. James's fate should be determined by his own choices, not","\n","^by your intervention.","\n","^ACTION: You document the evidence objectively without advocating for","\n","^James's protection or exposure.","\n","^In your notes, you write:","\n","^\"James Park conducted hospital reconnaissance under direction from","\n","^Victoria Sterling. Diary evidence suggests initial deception regarding","\n","^client identity, followed by post-attack knowledge and internal","\n","^conflict regarding disclosure. Status: undetermined pending James's","\n","^own decisions.\"","\n","ev",true,"/ev",{"VAR=":"player_choice_made","re":true},"#","^complete_task:james_choice_made","/#",{"->":"james_ignored_outcome"},null],"james_ignored_outcome":["^[You leave the evidence as you found it]","\n","^You don't add any notes. You don't remove any documents. You don't","\n","^interfere with James's decision-making process.","\n","^If James comes forward to authorities, he'll be treated as a cooperating","\n","^witness. If he accepts the hush money and stays silent, he'll likely be","\n","^implicated when Victoria's full operation is exposed.","\n","^Either way, it's his choice. His moral agency. His consequences.","\n","ev",{"x()":"player_approach"},"str","^cautious","/str","==","/ev",[{"->":".^.b","c":true},{"b":["\n","^[This aligns with your cautious approach - gather evidence, let the system decide]","\n",{"->":".^.^.^.22"},null]}],"nop","\n","^Evidence logged. James's fate: UNDECIDED (his choice).","\n","#","^exit_conversation","/#","done",null],"search_for_context":["^You resist the urge to immediately judge James.","\n","^Instead, you search for more context. Were there other files? Other communications?","\n","^[You find James's personal diary - see the entries above]","\n",{"->":"evidence_analysis"},null],"rush_to_judgment":[["^You immediately photograph the hospital reconnaissance files.","\n","^This is proof. James Park conducted the recon that enabled the St. Catherine's attack.","\n","^But wait... there's another folder on the desk.","\n","ev","str","^Document what you have and move on - you found the smoking gun","/str","/ev",{"*":".^.c-0","flg":20},"ev","str","^Check the other folder - be thorough","/str","/ev",{"*":".^.c-1","flg":20},{"c-0":["\n","ev",2,"/ev",{"VAR=":"james_evidence_level","re":true},"ev","str","^exposed","/str","/ev",{"VAR=":"james_fate","re":true},"ev",true,"/ev",{"VAR=":"player_choice_made","re":true},"^You photograph the reconnaissance files and email.","\n","^Evidence logged: James Park complicit in hospital attack reconnaissance.","\n","#","^complete_task:james_choice_made","/#","#","^exit_conversation","/#","done",{"#f":5}],"c-1":["\n",{"->":"search_for_context"},{"#f":5}]}],null],"james_confrontation":[["#","^speaker:james_park","/#","^[The office door opens - James Park stands in the doorway]","\n","#","^display:james-shocked","/#","^James: What... what are you doing in my office?","\n","^[He sees the open files on the desk]","\n","^James: You found the hospital files.","\n","ev","str","^SAFETYNET. You're under investigation.","/str","/ev",{"*":".^.c-0","flg":20},"ev","str","^You helped kill six people","/str","/ev",{"*":".^.c-1","flg":20},"ev","str","^Victoria lied to you, didn't she?","/str","/ev",{"*":".^.c-2","flg":20},{"c-0":["\n","^You: SAFETYNET. You're under investigation for the St. Catherine's Hospital attack.","\n",{"->":"james_safetynet_reveal"},{"#f":5}],"c-1":["\n","^You: St. Catherine's Hospital. Your reconnaissance. Six people died.","\n",{"->":"james_guilt_confrontation"},{"#f":5}],"c-2":["\n","^You: She lied to you about the client. You thought it was legitimate security work.","\n",{"->":"james_sympathy_approach"},{"#f":5}]}],null],"james_safetynet_reveal":[["#","^speaker:james_park","/#","#","^display:james-terrified","/#","^James: [Goes pale] SAFETYNET... oh god.","\n","^James: I didn't know. You have to believe me. I didn't know Victoria was going to sell that intel.","\n","^James: I thought it was for a security awareness client. That's what she told me.","\n","ev","str","^But you know the truth now, and you stayed silent","/str","/ev",{"*":".^.c-0","flg":20},"ev","str","^Tell me everything. Cooperate and we can help you.","/str","/ev",{"*":".^.c-1","flg":20},{"c-0":["\n","^You: You learned the truth after the attack. And you took her hush money instead of coming forward.","\n","^James: [Desperate] I was scared! I still am! If I come forward, I'm admitting I enabled mass casualties!","\n",{"->":"james_plea"},{"#f":5}],"c-1":["\n","^You: If you cooperate fully, SAFETYNET can consider witness protection. But you need to tell us everything.","\n","^James: [Hopeful] Everything? Yes. Yes, I'll tell you everything Victoria did.","\n",{"->":"james_cooperation"},{"#f":5}]}],null],"james_guilt_confrontation":[["#","^speaker:james_park","/#","#","^display:james-broken","/#","^James: [Voice cracks] I know. I KNOW.","\n","^James: I see their faces every time I close my eyes. I read every article. Every obituary.","\n","^James: Angela Martinez. David Chen. Sarah Thompson. Marcus Gray. Jennifer Wu. Robert Patterson.","\n","^James: I can name them all. The six people my work helped kill.","\n","ev","str","^Then why haven't you come forward?","/str","/ev",{"*":".^.c-0","flg":20},"ev","str","^You can still make this right","/str","/ev",{"*":".^.c-1","flg":20},{"c-0":["\n","^You: If you feel that guilt, why haven't you gone to the authorities?","\n","^James: [Ashamed] Because I'm a coward. Because I'm terrified of prison. Because I want to believe it wasn't my fault.","\n",{"->":"james_plea"},{"#f":5}],"c-1":["\n","^You: You can still make this right. Testify against Victoria. Help us stop Phase 2.","\n","^James: [Looks up] Phase 2? There's... there's another attack planned?","\n",{"->":"james_cooperation"},{"#f":5}]}],null],"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.","\n","^James: I did the work. Good work. Thorough. Professional.","\n","^James: And then I saw the news. And I knew.","\n","ev","str","^You're a victim of her deception","/str","/ev",{"*":".^.c-0","flg":20},"ev","str","^But you learned the truth and did nothing","/str","/ev",{"*":".^.c-1","flg":20},{"c-0":["\n","^You: Victoria weaponized your legitimate pen testing work. You're a victim too.","\n","^James: [Quietly] Am I? I still did the reconnaissance. My diagrams. My vulnerability notes.","\n",{"->":"james_plea"},{"#f":5}],"c-1":["\n","^You: And when you learned the truth, you took a raise instead of going to the police.","\n","^James: [Defensive] What was I supposed to do? Confess to enabling mass murder? Destroy my life?","\n",{"->":"james_plea"},{"#f":5}]}],null],"james_plea":[["#","^speaker:james_park","/#","^James: What... what's going to happen to me?","\n","ev","str","^That depends on whether you cooperate","/str","/ev",{"*":".^.c-0","flg":20},"ev","str","^You're going to face justice for your role","/str","/ev",{"*":".^.c-1","flg":20},"ev","str","^That's not my decision to make","/str","/ev",{"*":".^.c-2","flg":20},{"c-0":["\n","^You: Cooperate fully with SAFETYNET. Testify against Victoria. Help us prevent Phase 2.","\n","^You: Do that, and we can argue for leniency. You were deceived, and you're coming forward voluntarily.","\n","^James: [Grasps at hope] Leniency. Not immunity, but... less prison time?","\n","^You: Possibly. But you have to tell us everything. Now.","\n",{"->":"james_cooperation"},{"#f":5}],"c-1":["\n","^You: You enabled six deaths. Even unwittingly, you're complicit. You'll face federal charges.","\n","^James: [Defeated] I know. I... I know I deserve it.","\n","^James: Will it help at all that I cooperate? That I testify?","\n","^You: It might. But that's for prosecutors to decide, not me.","\n",{"->":"james_cooperation"},{"#f":5}],"c-2":["\n","^You: I'm gathering evidence. Prosecutors will decide charges. But cooperation helps.","\n","^James: [Nods] I'll cooperate. I'll tell you everything. Just... please remember I didn't know.","\n",{"->":"james_cooperation"},{"#f":5}]}],null],"james_cooperation":[["#","^speaker:james_park","/#","^James: What do you need to know?","\n","ev","str","^Tell me about Victoria's operation","/str","/ev",{"*":".^.c-0","flg":20},"ev","str","^Tell me about The Architect","/str","/ev",{"*":".^.c-1","flg":20},"ev","str","^Tell me about Phase 2","/str","/ev",{"*":".^.c-2","flg":20},{"c-0":["\n","^James: She runs the Zero Day exploit marketplace through WhiteHat Security as a front.","\n","^James: I wasn't supposed to know, but I figured it out. The late-night meetings. The unusual clients.","\n","^James: She sells zero-day vulnerabilities to... whoever pays. Ransomware groups. State actors. Anyone.","\n",{"->":"victoria_operation_details"},{"#f":5}],"c-1":["\n","^James: The Architect? I've seen the name in Victoria's emails. Some kind of ENTROPY leadership figure.","\n","^James: Victoria takes orders from them. \"Architect's priority targets.\" \"Architect's directive.\"","\n","^James: I don't know who they are. But Victoria is terrified of them. And that scares me.","\n",{"->":"victoria_operation_details"},{"#f":5}],"c-2":["\n","^James: Phase 2? I don't know details. But I've heard Victoria on calls talking about \"infrastructure focus.\"","\n","^James: Energy grid. More healthcare SCADA systems. Large-scale attacks.","\n","^James: She's been under pressure to deliver more reconnaissance. Higher-value targets.","\n",{"->":"victoria_operation_details"},{"#f":5}]}],null],"victoria_operation_details":["#","^speaker:james_park","/#","^James: Is this enough? Am I helping?","\n","^You: Yes. Keep talking. We'll take a formal statement and get you into protective custody.","\n","^James: [Relief and terror mixed] Protective custody. Because Victoria will kill me if she knows I talked.","\n","^You: SAFETYNET will protect you. But you need to come with me. Now.","\n","#","^complete_task:james_choice_made","/#","#","^exit_conversation","/#","done",null],"global decl":["ev",0,{"VAR=":"james_evidence_level"},"str","^","/str",{"VAR=":"james_fate"},false,{"VAR=":"player_choice_made"},"/ev","end",null]}],"listDefs":{}} \ No newline at end of file diff --git a/scenarios/m03_ghost_in_the_machine/ink/m03_npc_guard.json b/scenarios/m03_ghost_in_the_machine/ink/m03_npc_guard.json new file mode 100644 index 0000000..686d122 --- /dev/null +++ b/scenarios/m03_ghost_in_the_machine/ink/m03_npc_guard.json @@ -0,0 +1 @@ +{"inkVersion":21,"root":[[["done",{"#n":"g-0"}],null],"done",{"start":["#","^speaker:security_guard","/#","ev",{"VAR?":"guard_hostile"},"/ev",[{"->":".^.b","c":true},{"b":["\n","#","^display:guard-hostile","/#","^Guard: I told you to leave! I'm calling the police!","\n","#","^exit_conversation","/#","#","^trigger_combat","/#","done",{"->":"start.7"},null]}],"nop","\n","ev",{"VAR?":"player_warned"},"!","/ev",[{"->":".^.b","c":true},{"b":["\n","#","^display:guard-alert","/#","^[The guard's flashlight beam catches you in the hallway]","\n","^Guard: Hey! What are you doing here? Building's closed for the night.","\n","ev",true,"/ev",{"VAR=":"player_warned","re":true},"ev",true,"/ev",{"VAR=":"guard_suspicious","re":true},{"->":"first_excuse"},{"->":"start.14"},null]}],"nop","\n","ev",{"VAR?":"player_warned"},{"VAR?":"bribe_accepted"},"&&","/ev",[{"->":".^.b","c":true},{"b":["\n","#","^display:guard-neutral","/#","^Guard: Make it quick. I'm giving you 10 minutes, then you need to be gone.","\n","#","^exit_conversation","/#","done",{"->":"start.22"},null]}],"nop","\n","ev",{"VAR?":"player_warned"},{"VAR?":"guard_hostile"},"!","&&",{"VAR?":"bribe_accepted"},"!","&&","/ev",[{"->":".^.b","c":true},{"b":["\n","#","^display:guard-suspicious","/#","^Guard: You again. I'm keeping my eye on you.","\n",{"->":"hub"},{"->":"start.34"},null]}],"nop","\n",null],"first_excuse":[["#","^speaker:security_guard","/#","^Guard: Well? What's your explanation for being here after hours?","\n","ev","str","^I work here - forgot something at my desk","/str","/ev",{"*":".^.c-0","flg":20},"ev","str","^Victoria Sterling asked me to grab some files","/str","/ev",{"*":".^.c-1","flg":20},"ev","str","^I'm with building maintenance - late shift","/str","/ev",{"*":".^.c-2","flg":20},{"c-0":["\n","ev",{"VAR?":"guard_influence"},5,"-",{"VAR=":"guard_influence","re":true},"/ev","ev",true,"/ev",{"VAR=":"guard_suspicious","re":true},"^You: I work here. I forgot something at my desk earlier.","\n","^Guard: Really. Which department?","\n",{"->":"excuse_work_here"},{"#f":5}],"c-1":["\n","ev",{"VAR?":"guard_influence"},10,"+",{"VAR=":"guard_influence","re":true},"/ev","ev",true,"/ev",{"VAR=":"player_has_excuse","re":true},"^You: Victoria Sterling asked me to grab some files. I met with her earlier today about the training program.","\n","^Guard: [Pauses] Ms. Sterling mentioned a potential recruit... alright.","\n",{"->":"excuse_victoria"},{"#f":5}],"c-2":["\n","ev",{"VAR?":"guard_influence"},5,"+",{"VAR=":"guard_influence","re":true},"/ev","^You: Building maintenance. Late shift. Checking the HVAC system.","\n","^Guard: Maintenance? I didn't get a work order notice.","\n",{"->":"excuse_maintenance"},{"#f":5}]}],null],"excuse_work_here":[["#","^speaker:security_guard","/#","^You: [Improvise department name]","\n","^Guard: Huh. I don't recognize you, and I know most of the staff.","\n","^Guard: You got ID? Key card?","\n","ev","str","^Show the cloned RFID card","/str","/ev",{"*":".^.c-0","flg":20},"ev","str","^I'm new - just started this week","/str","/ev",{"*":".^.c-1","flg":20},"ev","str","^I must have left it at my desk - that's what I came back for","/str","/ev",{"*":".^.c-2","flg":20},{"c-0":["\n","ev",{"VAR?":"guard_influence"},15,"+",{"VAR=":"guard_influence","re":true},"/ev","ev",true,"/ev",{"VAR=":"player_has_excuse","re":true},"^You: [Flash the cloned executive keycard]","\n","^Guard: [Squints at it] That's... that's an executive-level card. Alright, carry on.","\n","^Guard: Just surprised to see someone here this late.","\n",{"->":"hub"},{"#f":5}],"c-1":["\n","ev",{"VAR?":"guard_influence"},5,"+",{"VAR=":"guard_influence","re":true},"/ev","^You: I'm new. Just started this week. Still getting my permanent ID.","\n","^Guard: [Skeptical] New hires don't usually have after-hours access...","\n",{"->":"suspicious_path"},{"#f":5}],"c-2":["\n","ev",{"VAR?":"guard_influence"},10,"-",{"VAR=":"guard_influence","re":true},"/ev","ev",true,"/ev",{"VAR=":"guard_suspicious","re":true},"^You: That's what I came back for - my ID badge. Left it at my desk.","\n","^Guard: So you don't have ID, and you're here after hours. That's a problem.","\n",{"->":"suspicious_path"},{"#f":5}]}],null],"excuse_victoria":[["#","^speaker:security_guard","/#","^Guard: Ms. Sterling does sometimes have late requests.","\n","^Guard: What files are you supposed to grab?","\n","ev","str","^Training program enrollment documents","/str","/ev",{"*":".^.c-0","flg":20},"ev","str","^That's confidential - she didn't give me details","/str","/ev",{"*":".^.c-1","flg":20},{"c-0":["\n","ev",{"VAR?":"guard_influence"},10,"+",{"VAR=":"guard_influence","re":true},"/ev","^You: Training program enrollment documents. From her office.","\n","^Guard: [Nods] Alright. But be quick about it. And stay in the executive area - don't wander.","\n",{"->":"hub"},{"#f":5}],"c-1":["\n","ev",{"VAR?":"guard_influence"},5,"+",{"VAR=":"guard_influence","re":true},"/ev","ev",true,"/ev",{"VAR=":"guard_suspicious","re":true},"^You: She didn't specify - said I'd know when I saw them. Confidential materials.","\n","^Guard: [Suspicious] Confidential, huh. Well, don't take too long.","\n",{"->":"hub"},{"#f":5}]}],null],"excuse_maintenance":[["#","^speaker:security_guard","/#","^Guard: No work order, and you don't look like our usual maintenance crew.","\n","^Guard: I'm going to need to verify this.","\n","ev","str","^Call the maintenance supervisor - here's the number","/str","/ev",{"*":".^.c-0","flg":20},"ev","str","^Emergency HVAC issue - no time for work orders","/str","/ev",{"*":".^.c-1","flg":20},"ev","str","^I don't need to explain myself to you","/str","/ev",{"*":".^.c-2","flg":20},{"c-0":["\n","ev",{"VAR?":"guard_influence"},10,"+",{"VAR=":"guard_influence","re":true},"/ev","^You: Call the supervisor. [Give fake number that could sound plausible]","\n","^Guard: [Looks at number] ...at this hour? Nobody's going to answer.","\n","^Guard: Fine. But I'm watching you.","\n","ev",true,"/ev",{"VAR=":"guard_suspicious","re":true},{"->":"hub"},{"#f":5}],"c-1":["\n","ev",{"VAR?":"guard_influence"},5,"+",{"VAR=":"guard_influence","re":true},"/ev","^You: Emergency call. Temperature sensors triggered an alert. No time for paperwork.","\n","^Guard: [Uncertain] I didn't hear about any alerts...","\n","ev",true,"/ev",{"VAR=":"guard_suspicious","re":true},{"->":"hub"},{"#f":5}],"c-2":["\n","ev",{"VAR?":"guard_influence"},20,"-",{"VAR=":"guard_influence","re":true},"/ev","ev",true,"/ev",{"VAR=":"guard_hostile","re":true},"^You: I don't have time for this. I have work to do.","\n","^Guard: [Angry] Wrong answer. You're trespassing. Leave now or I'm calling the cops.","\n",{"->":"hostile_confrontation"},{"#f":5}]}],null],"suspicious_path":[["#","^speaker:security_guard","/#","^Guard: This doesn't add up. You're not making sense.","\n","ev","str","^Offer a bribe - \"Maybe we can work something out\"","/str","/ev",{"*":".^.c-0","flg":20},"ev","str","^Try to persuade with more lies","/str","/ev",{"*":".^.c-1","flg":20},"ev","str","^Be honest - SAFETYNET investigation","/str","/ev",{"*":".^.c-2","flg":20},{"c-0":["\n",{"->":"offer_bribe"},{"#f":5}],"c-1":["\n","ev",{"VAR?":"guard_influence"},10,"-",{"VAR=":"guard_influence","re":true},"/ev","ev",true,"/ev",{"VAR=":"guard_suspicious","re":true},"^You: [Elaborate on the lie with more details]","\n","^Guard: [Not buying it] I think you need to leave. Now.","\n",{"->":"trespass_warning"},{"#f":5}],"c-2":["\n",{"->":"safetynet_reveal"},{"#f":5}]}],null],"offer_bribe":[["#","^speaker:security_guard","/#","ev",true,"/ev",{"VAR=":"bribe_offered","re":true},"^You: Look, maybe we can work something out. I really need to finish something here.","\n","^Guard: [Eyes narrow] Are you trying to bribe me?","\n","ev","str","^Offer $100","/str","/ev",{"*":".^.c-0","flg":20},"ev","str","^Offer $500","/str","/ev",{"*":".^.c-1","flg":20},"ev","str","^Back off - \"No, I just meant maybe you could make an exception\"","/str","/ev",{"*":".^.c-2","flg":20},{"c-0":["\n","^You: I can make it worth your while. $100. You didn't see me.","\n",{"->":"bribe_response_low"},{"#f":5}],"c-1":["\n","^You: $500. Cash. Just give me an hour, then I'm gone.","\n",{"->":"bribe_response_high"},{"#f":5}],"c-2":["\n","ev",{"VAR?":"guard_influence"},5,"-",{"VAR=":"guard_influence","re":true},"/ev","^You: No, no - I just meant, could you make an exception? As a favor?","\n","^Guard: [Scoffs] No favors. Leave or I'm calling the police.","\n",{"->":"trespass_warning"},{"#f":5}]}],null],"bribe_response_low":["#","^speaker:security_guard","/#","^Guard: $100? You think I'm going to risk my job for a hundred bucks?","\n","^Guard: Get out. Now.","\n","ev",true,"/ev",{"VAR=":"guard_hostile","re":true},{"->":"trespass_warning"},null],"bribe_response_high":["#","^speaker:security_guard","/#","^Guard: [Long pause]","\n","^Guard: ...$500?","\n","^Guard: [Looks around]","\n","^Guard: One hour. You finish whatever you're doing and you're gone. I never saw you.","\n","^Guard: And if anyone asks, I was on the other side of the building doing rounds.","\n","ev",true,"/ev",{"VAR=":"bribe_accepted","re":true},"ev",{"VAR?":"guard_influence"},30,"+",{"VAR=":"guard_influence","re":true},"/ev","ev",false,"/ev",{"VAR=":"guard_suspicious","re":true},"^You hand over the cash.","\n","#","^give_item:cash:-500","/#","^Guard: One hour. After that, you're trespassing and I'm doing my job.","\n","#","^exit_conversation","/#","done",null],"safetynet_reveal":[["#","^speaker:security_guard","/#","^You: I'm with SAFETYNET. This is an active investigation into ENTROPY operations.","\n","^Guard: [Shocked] SAFETYNET? Like... the government agency?","\n","ev","str","^Show credentials - \"I need your cooperation\"","/str","/ev",{"*":".^.c-0","flg":20},"ev","str","^This is classified - you can't tell anyone","/str","/ev",{"*":".^.c-1","flg":20},"ev","str","^Help me and you're a patriot. Hinder me and you're an accomplice.","/str","/ev",{"*":".^.c-2","flg":20},{"c-0":["\n","ev",{"VAR?":"guard_influence"},30,"+",{"VAR=":"guard_influence","re":true},"/ev","ev",false,"/ev",{"VAR=":"guard_suspicious","re":true},"^You: [Show SAFETYNET credentials] I need your cooperation. National security matter.","\n","^Guard: [Stunned] Holy shit. Yeah, okay, whatever you need.","\n","^Guard: Ms. Sterling... she's involved in something?","\n",{"->":"safetynet_cooperation"},{"#f":5}],"c-1":["\n","ev",{"VAR?":"guard_influence"},20,"+",{"VAR=":"guard_influence","re":true},"/ev","^You: This is classified. You cannot tell anyone I was here. Not even Victoria Sterling.","\n","^Guard: [Nervous] Yeah, understood. I... I won't say anything.","\n",{"->":"safetynet_cooperation"},{"#f":5}],"c-2":["\n","ev",{"VAR?":"guard_influence"},25,"+",{"VAR=":"guard_influence","re":true},"/ev","ev",false,"/ev",{"VAR=":"guard_suspicious","re":true},"^You: Help me, you're helping your country. Get in my way, you're obstructing a federal investigation.","\n","^Guard: [Intimidated] I'm not getting in the way. Do what you need to do.","\n",{"->":"safetynet_cooperation"},{"#f":5}]}],null],"safetynet_cooperation":[["#","^speaker:security_guard","/#","^Guard: What do you need from me?","\n","ev","str","^Just stay out of my way","/str","/ev",{"*":".^.c-0","flg":20},"ev","str","^Tell me about Victoria Sterling","/str","/ev",{"*":".^.c-1","flg":20},"ev","str","^Any unusual activity lately?","/str","/ev",{"*":".^.c-2","flg":20},"ev","str","^That's all I need - continue your patrol","/str","/ev",{"*":".^.c-3","flg":4},{"c-0":["\n","^You: Just continue your normal patrol. Pretend you didn't see me.","\n","^Guard: Done. I'll be on the other side of the building if anyone asks.","\n","ev",{"VAR?":"guard_influence"},10,"+",{"VAR=":"guard_influence","re":true},"/ev","#","^exit_conversation","/#","done",{"#f":5}],"c-1":["\n","^You: Tell me about Victoria Sterling. What's she like?","\n","^Guard: Ms. Sterling? She's... intense. Smart. Stays late a lot.","\n","^Guard: Sometimes has weird visitors. People who don't look like typical corporate types.","\n","^Guard: But she pays well, so I don't ask questions.","\n",{"->":".^.^.^"},{"#f":5}],"c-2":["\n","^You: Have you noticed anything unusual? Strange visitors? Odd hours?","\n","^Guard: There's been more late-night meetings recently. Last week, some guy with a Russian accent.","\n","^Guard: And Ms. Sterling's been more stressed. Snapping at people.","\n","ev",{"VAR?":"guard_influence"},5,"+",{"VAR=":"guard_influence","re":true},"/ev",{"->":".^.^.^"},{"#f":5}],"c-3":["\n","^Guard: Roger that. Good luck with... whatever you're investigating.","\n","#","^exit_conversation","/#","done",null]}],null],"hub":[["ev","str","^Ask about the guard's shift","/str",{"VAR?":"topic_shift"},"!","/ev",{"*":".^.c-0","flg":5},"ev","str","^Ask about building layout","/str",{"VAR?":"topic_building"},"!","/ev",{"*":".^.c-1","flg":5},"ev","str","^Ask about Victoria Sterling","/str",{"VAR?":"topic_victoria"},"!","/ev",{"*":".^.c-2","flg":5},"ev","str","^Offer a bribe","/str",{"VAR?":"guard_influence"},20,">=",{"VAR?":"bribe_offered"},"!","&&","/ev",{"*":".^.c-3","flg":5},"ev","str","^Leave conversation","/str","/ev",{"*":".^.c-4","flg":4},{"c-0":["\n",{"->":"ask_shift"},null],"c-1":["\n",{"->":"ask_building"},null],"c-2":["\n",{"->":"ask_victoria"},null],"c-3":["\n",{"->":"offer_bribe"},null],"c-4":["\n","#","^exit_conversation","/#","ev",{"VAR?":"guard_suspicious"},"/ev",[{"->":".^.b","c":true},{"b":["\n","^Guard: I'm keeping an eye on you. Don't make me regret this.","\n",{"->":".^.^.^.8"},null]}],"nop","\n","ev",{"VAR?":"guard_suspicious"},"!","/ev",[{"->":".^.b","c":true},{"b":["\n","^Guard: Alright. Stay out of trouble.","\n",{"->":".^.^.^.15"},null]}],"nop","\n","done",null]}],null],"ask_shift":[["#","^speaker:security_guard","/#","ev",true,"/ev",{"VAR=":"topic_shift","re":true},"ev",{"VAR?":"guard_influence"},5,"+",{"VAR=":"guard_influence","re":true},"/ev","^Guard: Night shift. 10 PM to 6 AM. Quiet most nights.","\n","ev",{"VAR?":"guard_suspicious"},"/ev",[{"->":".^.b","c":true},{"b":["\n","^Guard: Though tonight's been more eventful than usual.","\n",{"->":".^.^.^.19"},null]}],"nop","\n","^Guard: I do rounds every 15 minutes or so. Check the doors, make sure nobody's where they shouldn't be.","\n","ev","str","^What's your route?","/str","/ev",{"*":".^.c-0","flg":20},"ev","str","^Must be boring work","/str","/ev",{"*":".^.c-1","flg":20},"ev","str","^Continue","/str","/ev",{"*":".^.c-2","flg":4},{"c-0":["\n","^Guard: Main hallway loop. Server room, executive offices, conference area, back to reception.","\n","^Guard: Why do you want to know my route?","\n","ev",true,"/ev",{"VAR=":"guard_suspicious","re":true},{"->":"hub"},{"#f":5}],"c-1":["\n","ev",{"VAR?":"guard_influence"},5,"+",{"VAR=":"guard_influence","re":true},"/ev","^Guard: It pays the bills. And it's better than dealing with day shift drama.","\n",{"->":"hub"},{"#f":5}],"c-2":["\n",{"->":"hub"},null]}],null],"ask_building":[["#","^speaker:security_guard","/#","ev",true,"/ev",{"VAR=":"topic_building","re":true},"ev",{"VAR?":"guard_influence"},5,"+",{"VAR=":"guard_influence","re":true},"/ev","^Guard: Standard office building. Reception, conference rooms, main hallway with offices.","\n","^Guard: Server room and IT area in the back. Executive offices on the north side.","\n","ev",{"VAR?":"guard_influence"},15,">=","/ev",[{"->":".^.b","c":true},{"b":["\n","^Guard: Server room's usually locked. Executive-level access only.","\n",{"->":".^.^.^.23"},null]}],"nop","\n","ev","str","^What's in the executive area?","/str","/ev",{"*":".^.c-0","flg":20},"ev","str","^Any restricted areas?","/str","/ev",{"*":".^.c-1","flg":20},"ev","str","^Continue","/str","/ev",{"*":".^.c-2","flg":4},{"c-0":["\n","^Guard: Ms. Sterling's office, mostly. Some storage. Conference room for high-level meetings.","\n","ev",{"VAR?":"guard_influence"},5,"+",{"VAR=":"guard_influence","re":true},"/ev",{"->":"hub"},{"#f":5}],"c-1":["\n","^Guard: Server room's the main one. And Ms. Sterling doesn't like people in her office without permission.","\n",{"->":"hub"},{"#f":5}],"c-2":["\n",{"->":"hub"},null]}],null],"ask_victoria":["#","^speaker:security_guard","/#","ev",true,"/ev",{"VAR=":"topic_victoria","re":true},"^Guard: Ms. Sterling? She's the boss. CEO. Runs the whole operation.","\n","ev",{"VAR?":"guard_influence"},20,">=","/ev",[{"->":".^.b","c":true},{"b":["\n","^Guard: Between you and me, she's a bit intense. Very particular about security protocols.","\n","^Guard: And the people she meets with sometimes... they don't look like normal corporate clients.","\n",{"->":".^.^.^.15"},null]}],"nop","\n","ev",{"VAR?":"guard_influence"},20,"<","/ev",[{"->":".^.b","c":true},{"b":["\n","^Guard: Why are you asking about Ms. Sterling?","\n","ev",true,"/ev",{"VAR=":"guard_suspicious","re":true},{"->":".^.^.^.23"},null]}],"nop","\n",{"->":"hub"},null],"trespass_warning":[["#","^speaker:security_guard","/#","#","^display:guard-hostile","/#","^Guard: I'm giving you one chance. Leave now, or I'm calling the police.","\n","ev","str","^Leave peacefully","/str","/ev",{"*":".^.c-0","flg":20},"ev","str","^Try to run past the guard","/str","/ev",{"*":".^.c-1","flg":20},"ev","str","^Attack the guard","/str","/ev",{"*":".^.c-2","flg":20},{"c-0":["\n","^You: Alright, I'm going.","\n","#","^exit_conversation","/#","#","^trigger_event:mission_failed_caught","/#","done",{"#f":5}],"c-1":["\n","^Guard: HEY! STOP!","\n","#","^trigger_combat","/#","#","^exit_conversation","/#","done",{"#f":5}],"c-2":["\n","#","^trigger_combat","/#","#","^exit_conversation","/#","done",{"#f":5}]}],null],"hostile_confrontation":[["#","^speaker:security_guard","/#","#","^display:guard-hostile","/#","ev",true,"/ev",{"VAR=":"guard_hostile","re":true},"^Guard: That's it. I'm calling the cops. Don't move.","\n","^[Guard reaches for radio]","\n","ev","str","^Tackle the guard before he can call","/str","/ev",{"*":".^.c-0","flg":20},"ev","str","^Try to talk him down - \"Wait, wait!\"","/str","/ev",{"*":".^.c-1","flg":20},"ev","str","^Run","/str","/ev",{"*":".^.c-2","flg":20},{"c-0":["\n","#","^trigger_combat","/#","#","^exit_conversation","/#","done",{"#f":5}],"c-1":["\n","^Guard: No more talking. You're trespassing.","\n",{"->":"trespass_warning"},{"#f":5}],"c-2":["\n","^Guard: [Into radio] Security! I have an intruder!","\n","#","^trigger_event:alarm_triggered","/#","#","^exit_conversation","/#","done",{"#f":5}]}],null],"on_lockpick_detected":["#","^speaker:security_guard","/#","#","^display:guard-hostile","/#","^Guard: HEY! What are you doing with that lock?!","\n","ev",true,"/ev",{"VAR=":"guard_hostile","re":true},"ev",true,"/ev",{"VAR=":"guard_suspicious","re":true},"^Guard: You're trying to break in! That's it - I'm calling the police!","\n","#","^trigger_combat","/#","#","^exit_conversation","/#","done",null],"on_restricted_area":["#","^speaker:security_guard","/#","#","^display:guard-suspicious","/#","^Guard: You're not supposed to be back here. This area is restricted.","\n","ev",{"VAR?":"player_has_excuse"},{"VAR?":"guard_influence"},10,">=","&&","/ev",[{"->":".^.b","c":true},{"b":["\n","^Guard: ...but I guess if Ms. Sterling sent you. Be quick.","\n","#","^exit_conversation","/#","done",{"->":".^.^.^.16"},null]}],"nop","\n","ev",{"VAR?":"player_has_excuse"},"!",{"VAR?":"guard_influence"},10,"<","||","/ev",[{"->":".^.b","c":true},{"b":["\n","^Guard: I need you to return to the main area. Now.","\n","ev",true,"/ev",{"VAR=":"guard_suspicious","re":true},"#","^exit_conversation","/#","done",{"->":".^.^.^.27"},null]}],"nop","\n",null],"global decl":["ev",0,{"VAR=":"guard_influence"},false,{"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,{"VAR=":"topic_shift"},false,{"VAR=":"topic_building"},false,{"VAR=":"topic_victoria"},"/ev","end",null]}],"listDefs":{}} \ No newline at end of file diff --git a/scenarios/m03_ghost_in_the_machine/ink/m03_npc_receptionist.json b/scenarios/m03_ghost_in_the_machine/ink/m03_npc_receptionist.json new file mode 100644 index 0000000..46ad503 --- /dev/null +++ b/scenarios/m03_ghost_in_the_machine/ink/m03_npc_receptionist.json @@ -0,0 +1 @@ +{"inkVersion":21,"root":[[["done",{"#n":"g-0"}],null],"done",{"start":["#","^speaker:receptionist","/#","ev",{"VAR?":"badge_received"},"!","/ev",[{"->":".^.b","c":true},{"b":["\n","#","^display:receptionist-professional","/#","^Receptionist: Good afternoon! You must be ","ev",{"x()":"player_name"},"out","/ev","^.","\n","^Receptionist: Ms. Sterling mentioned you'd be coming in for a consultation.","\n","^Receptionist: Let me get you checked in.","\n",{"->":"badge_process"},{"->":"start.8"},null]}],"nop","\n","ev",{"VAR?":"badge_received"},"/ev",[{"->":".^.b","c":true},{"b":["\n","#","^display:receptionist-friendly","/#","^Receptionist: Hi again! How's your visit going?","\n",{"->":"hub"},{"->":"start.14"},null]}],"nop","\n",null],"badge_process":[["#","^speaker:receptionist","/#","^Receptionist: I just need you to sign in here, and I'll print you a visitor badge.","\n","^[She slides a clipboard across the desk]","\n","^Receptionist: Ms. Sterling's in the conference room. Second door on the right down that hallway.","\n","ev","str","^Thank you - sign in","/str","/ev",{"*":".^.c-0","flg":20},"ev","str","^Ask about the company first","/str","/ev",{"*":".^.c-1","flg":20},"ev","str","^Just sign quickly and head to meeting","/str","/ev",{"*":".^.c-2","flg":20},{"c-0":["\n","ev",true,"/ev",{"VAR=":"badge_received","re":true},"ev",{"VAR?":"receptionist_influence"},5,"+",{"VAR=":"receptionist_influence","re":true},"/ev","^You sign the visitor log.","\n","^Receptionist: Here's your badge. Please keep it visible while you're in the building.","\n","#","^give_item:visitor_badge","/#","^Receptionist: And welcome to WhiteHat Security!","\n",{"->":"first_impression_choice"},{"#f":5}],"c-1":["\n","^You: Before I meet with Victoria, can you tell me a bit about WhiteHat Security?","\n","ev",{"VAR?":"receptionist_influence"},10,"+",{"VAR=":"receptionist_influence","re":true},"/ev","^Receptionist: Of course! We're a cybersecurity research and penetration testing firm.","\n",{"->":"company_overview"},{"#f":5}],"c-2":["\n","ev",true,"/ev",{"VAR=":"badge_received","re":true},"^You quickly sign the log.","\n","^Receptionist: Here's your badge. Ms. Sterling's waiting in the conference room.","\n","#","^give_item:visitor_badge","/#","#","^exit_conversation","/#","done",{"#f":5}]}],null],"company_overview":[["#","^speaker:receptionist","/#","^Receptionist: WhiteHat Security was founded in 2010 by Victoria Sterling.","\n","^Receptionist: We do penetration testing, security audits, and advanced research training.","\n","ev",{"VAR?":"receptionist_influence"},10,">=","/ev",[{"->":".^.b","c":true},{"b":["\n","^Receptionist: We also have a research division - Zero Day training programs. Very cutting-edge stuff.","\n",{"->":".^.^.^.13"},null]}],"nop","\n","ev",true,"/ev",{"VAR=":"topic_company_history","re":true},"ev",true,"/ev",{"VAR=":"pin_hint_given","re":true},"ev","str","^2010 founding - that's the PIN to the safe!","/str","/ev",{"*":".^.c-0","flg":20},"ev","str","^What kind of training programs?","/str","/ev",{"*":".^.c-1","flg":20},{"c-0":["\n","^[Mental note: 2010 might be useful...]","\n","ev",{"VAR?":"receptionist_influence"},5,"+",{"VAR=":"receptionist_influence","re":true},"/ev","^You: 2010, interesting. Victoria must be proud of how far the company's come.","\n","^Receptionist: Oh, very much so. She has a whole display of awards in her office.","\n",{"->":"badge_process"},{"#f":5}],"c-1":["\n","^You: What kind of training does Zero Day offer?","\n","^Receptionist: [Slightly evasive] Advanced penetration testing techniques. For serious researchers.","\n","^Receptionist: Ms. Sterling is very selective about who gets into the program.","\n","ev",{"VAR?":"receptionist_influence"},5,"+",{"VAR=":"receptionist_influence","re":true},"/ev",{"->":"badge_process"},{"#f":5}]}],null],"first_impression_choice":[["#","^speaker:receptionist","/#","^Receptionist: Is this your first time working with a cybersecurity firm?","\n","ev","str","^I've done some freelance pen testing","/str","/ev",{"*":".^.c-0","flg":20},"ev","str","^Yes, I'm new to the field","/str","/ev",{"*":".^.c-1","flg":20},"ev","str","^I need to get to the meeting","/str","/ev",{"*":".^.c-2","flg":20},{"c-0":["\n","ev",{"VAR?":"receptionist_influence"},10,"+",{"VAR=":"receptionist_influence","re":true},"/ev","^You: I've done freelance penetration testing before. Looking to level up.","\n","^Receptionist: Well, you're in the right place! Ms. Sterling is brilliant.","\n",{"->":"hub"},{"#f":5}],"c-1":["\n","ev",{"VAR?":"receptionist_influence"},5,"+",{"VAR=":"receptionist_influence","re":true},"/ev","^You: Relatively new, yes. Still learning.","\n","^Receptionist: That's exciting! Everyone here is very passionate about security.","\n",{"->":"hub"},{"#f":5}],"c-2":["\n","^You: I should head to the conference room. Don't want to keep Victoria waiting.","\n","^Receptionist: Of course! Down the hall, second door on the right.","\n","#","^exit_conversation","/#","done",{"#f":5}]}],null],"hub":[["ev","str","^Ask about Victoria Sterling","/str",{"VAR?":"topic_victoria"},"!","/ev",{"*":".^.c-0","flg":5},"ev","str","^Ask about other employees","/str",{"VAR?":"topic_james"},"!","/ev",{"*":".^.c-1","flg":5},"ev","str","^Ask about company history","/str",{"VAR?":"topic_company_history"},"!",{"VAR?":"pin_hint_given"},"!","&&","/ev",{"*":".^.c-2","flg":5},"ev","str","^Ask about the building layout","/str",{"VAR?":"receptionist_influence"},15,">=","/ev",{"*":".^.c-3","flg":5},"ev","str","^End conversation","/str","/ev",{"*":".^.c-4","flg":4},{"c-0":["\n",{"->":"ask_victoria"},null],"c-1":["\n",{"->":"ask_james"},null],"c-2":["\n",{"->":"ask_company_history"},null],"c-3":["\n",{"->":"ask_building_layout"},null],"c-4":["\n","#","^exit_conversation","/#","^Receptionist: Have a great visit!","\n","done",null]}],null],"ask_victoria":[["#","^speaker:receptionist","/#","ev",true,"/ev",{"VAR=":"topic_victoria","re":true},"ev",{"VAR?":"receptionist_influence"},5,"+",{"VAR=":"receptionist_influence","re":true},"/ev","^Receptionist: Ms. Sterling is amazing. She's a DEFCON speaker, published researcher, the whole package.","\n","^Receptionist: And she really cares about the work. Sometimes she's here until midnight.","\n","ev",{"VAR?":"receptionist_influence"},20,">=","/ev",[{"->":".^.b","c":true},{"b":["\n","^Receptionist: Between you and me, she can be intense. Very particular about her research.","\n","^Receptionist: But she's fair. If you're good at what you do, she'll respect you.","\n",{"->":".^.^.^.23"},null]}],"nop","\n","ev","str","^She sounds dedicated","/str","/ev",{"*":".^.c-0","flg":20},"ev","str","^Midnight? That's late","/str","/ev",{"*":".^.c-1","flg":20},"ev","str","^Continue","/str","/ev",{"*":".^.c-2","flg":4},{"c-0":["\n","ev",{"VAR?":"receptionist_influence"},5,"+",{"VAR=":"receptionist_influence","re":true},"/ev","^You: She sounds very dedicated to the work.","\n","^Receptionist: Absolutely. Cybersecurity is her passion.","\n",{"->":"hub"},{"#f":5}],"c-1":["\n","^You: Midnight work sessions? That's some serious dedication.","\n","^Receptionist: Yeah, sometimes I see her car still in the lot when I leave at 6.","\n","^Receptionist: She has a whole setup in her office - coffee maker, the works.","\n","ev",{"VAR?":"receptionist_influence"},5,"+",{"VAR=":"receptionist_influence","re":true},"/ev",{"->":"hub"},{"#f":5}],"c-2":["\n",{"->":"hub"},null]}],null],"ask_james":[["#","^speaker:receptionist","/#","ev",true,"/ev",{"VAR=":"topic_james","re":true},"ev",{"VAR?":"receptionist_influence"},5,"+",{"VAR=":"receptionist_influence","re":true},"/ev","^Receptionist: Well, there's James Park - he's one of our senior consultants.","\n","^Receptionist: Really nice guy. Always brings donuts on Fridays.","\n","ev",{"VAR?":"receptionist_influence"},15,">=","/ev",[{"->":".^.b","c":true},{"b":["\n","^Receptionist: He's been a bit stressed lately, though. I think he's working on a big project.","\n",{"->":".^.^.^.23"},null]}],"nop","\n","ev","str","^What kind of work does James do?","/str","/ev",{"*":".^.c-0","flg":20},"ev","str","^Where's his office?","/str","/ev",{"*":".^.c-1","flg":20},"ev","str","^Continue","/str","/ev",{"*":".^.c-2","flg":4},{"c-0":["\n","^You: What kind of consulting work does James do?","\n","^Receptionist: Penetration testing, mostly. He goes on-site to client locations for security audits.","\n","^Receptionist: He's been with WhiteHat since the beginning - 2010, I think.","\n","ev",{"VAR?":"receptionist_influence"},5,"+",{"VAR=":"receptionist_influence","re":true},"/ev",{"->":"hub"},{"#f":5}],"c-1":["\n","^You: Where does James work? In case I run into him.","\n","^Receptionist: His office is down the main hallway, past the server room.","\n","^Receptionist: Though he's usually out at client sites during the day.","\n",{"->":"hub"},{"#f":5}],"c-2":["\n",{"->":"hub"},null]}],null],"ask_company_history":[["#","^speaker:receptionist","/#","ev",true,"/ev",{"VAR=":"topic_company_history","re":true},"ev",true,"/ev",{"VAR=":"pin_hint_given","re":true},"ev",{"VAR?":"receptionist_influence"},5,"+",{"VAR=":"receptionist_influence","re":true},"/ev","^Receptionist: WhiteHat Security was founded in 2010 by Victoria Sterling.","\n","^Receptionist: There's actually a plaque right over there [gestures to wall] with the founding year and mission statement.","\n","^Receptionist: \"Security Through Economics\" - that's our motto.","\n","ev","str","^What does \"Security Through Economics\" mean?","/str","/ev",{"*":".^.c-0","flg":20},"ev","str","^2010 - I'll remember that","/str","/ev",{"*":".^.c-1","flg":20},"ev","str","^Continue","/str","/ev",{"*":".^.c-2","flg":4},{"c-0":["\n","^You: That's an unusual motto. What does it mean?","\n","^Receptionist: [Uncertain] Something about market-driven security research? Ms. Sterling explains it better than I can.","\n","^Receptionist: She has strong opinions about how the security industry should work.","\n","ev",{"VAR?":"receptionist_influence"},5,"+",{"VAR=":"receptionist_influence","re":true},"/ev",{"->":"hub"},{"#f":5}],"c-1":["\n","^[Mental note: 2010 might be important...]","\n","^You: 2010. That's a significant year for the company then.","\n","^Receptionist: Absolutely! Ms. Sterling is very proud of everything we've built since then.","\n","ev",{"VAR?":"receptionist_influence"},5,"+",{"VAR=":"receptionist_influence","re":true},"/ev",{"->":"hub"},{"#f":5}],"c-2":["\n",{"->":"hub"},null]}],null],"ask_building_layout":[["#","^speaker:receptionist","/#","ev",{"VAR?":"receptionist_influence"},5,"+",{"VAR=":"receptionist_influence","re":true},"/ev","^Receptionist: Sure! It's a pretty straightforward layout.","\n","^Receptionist: Reception here, conference rooms to the right, main offices down the central hallway.","\n","^Receptionist: Server room and IT area in the back - that's usually locked, executive access only.","\n","^Receptionist: And Ms. Sterling's office is in the executive wing on the north side.","\n","ev","str","^What about after hours?","/str","/ev",{"*":".^.c-0","flg":20},"ev","str","^Executive access for the server room?","/str","/ev",{"*":".^.c-1","flg":20},"ev","str","^That's helpful, thanks","/str","/ev",{"*":".^.c-2","flg":4},{"c-0":["\n","^You: Is anyone here after business hours?","\n","^Receptionist: Usually just Ms. Sterling if she's working late. And we have a night security guard - makes rounds to keep the place safe.","\n","ev",{"VAR?":"receptionist_influence"},5,"+",{"VAR=":"receptionist_influence","re":true},"/ev",{"->":"hub"},{"#f":5}],"c-1":["\n","^You: Executive access for the server room - is that a key card system?","\n","^Receptionist: RFID badges. Ms. Sterling and the senior staff have access. Security precaution.","\n","ev",{"VAR?":"receptionist_influence"},5,"+",{"VAR=":"receptionist_influence","re":true},"/ev",{"->":"hub"},{"#f":5}],"c-2":["\n",{"->":"hub"},null]}],null],"daytime_return":[["#","^speaker:receptionist","/#","#","^display:receptionist-friendly","/#","^Receptionist: How did your meeting with Ms. Sterling go?","\n","ev","str","^Very well - she's impressive","/str","/ev",{"*":".^.c-0","flg":20},"ev","str","^Interesting conversation","/str","/ev",{"*":".^.c-1","flg":20},"ev","str","^I need to think about it","/str","/ev",{"*":".^.c-2","flg":20},{"c-0":["\n","ev",{"VAR?":"receptionist_influence"},10,"+",{"VAR=":"receptionist_influence","re":true},"/ev","^You: It went great. Victoria is very impressive. I learned a lot.","\n","^Receptionist: I'm so glad! She has that effect on people.","\n","#","^exit_conversation","/#","done",{"#f":5}],"c-1":["\n","^You: It was... illuminating. She has strong ideas about security.","\n","^Receptionist: [Laughs] That's one way to put it! She definitely has opinions.","\n","ev",{"VAR?":"receptionist_influence"},5,"+",{"VAR=":"receptionist_influence","re":true},"/ev","#","^exit_conversation","/#","done",{"#f":5}],"c-2":["\n","^You: I need some time to consider the training program. Big decision.","\n","^Receptionist: Of course! Take your time. Let us know if you have any questions.","\n","#","^exit_conversation","/#","done",{"#f":5}]}],null],"restricted_area_daytime":["#","^speaker:receptionist","/#","^Receptionist: Oh, I'm sorry - that area is for employees only.","\n","^Receptionist: Please stay in the public areas. Conference rooms and the main hallway are open to visitors.","\n","ev",{"VAR?":"receptionist_influence"},20,">=","/ev",[{"->":".^.b","c":true},{"b":["\n","^Receptionist: If you need access to something specific, Ms. Sterling can authorize it.","\n",{"->":".^.^.^.13"},null]}],"nop","\n","#","^exit_conversation","/#","done",null],"global decl":["ev",0,{"VAR=":"receptionist_influence"},false,{"VAR=":"badge_received"},false,{"VAR=":"topic_victoria"},false,{"VAR=":"topic_company_history"},false,{"VAR=":"topic_james"},false,{"VAR=":"pin_hint_given"},"/ev","end",null]}],"listDefs":{}} \ No newline at end of file diff --git a/scenarios/m03_ghost_in_the_machine/ink/m03_npc_victoria.json b/scenarios/m03_ghost_in_the_machine/ink/m03_npc_victoria.json new file mode 100644 index 0000000..18c35a2 --- /dev/null +++ b/scenarios/m03_ghost_in_the_machine/ink/m03_npc_victoria.json @@ -0,0 +1 @@ +{"inkVersion":21,"root":[[["done",{"#n":"g-0"}],null],"done",{"start":["#","^speaker:victoria_sterling","/#","ev",{"VAR?":"recruitment_discussed"},"!","/ev",[{"->":".^.b","c":true},{"b":["\n","#","^display:victoria-professional","/#","^[Victoria Sterling stands as you enter. Professional attire, confident bearing.]","\n","^Victoria: You must be ","ev",{"x()":"player_name"},"out","/ev","^. Welcome to WhiteHat Security.","\n","^Victoria: I'm Victoria Sterling, CEO. Have a seat.","\n","^[She gestures to the conference table.]","\n","ev",true,"/ev",{"VAR=":"recruitment_discussed","re":true},{"->":"first_impression"},{"->":"start.8"},null]}],"nop","\n","ev",{"VAR?":"recruitment_discussed"},{"VAR?":"rfid_clone_complete"},"!","&&","/ev",[{"->":".^.b","c":true},{"b":["\n","#","^display:victoria-neutral","/#","^Victoria: Back for more conversation?","\n",{"->":"hub"},{"->":"start.17"},null]}],"nop","\n","ev",{"VAR?":"rfid_clone_complete"},"/ev",[{"->":".^.b","c":true},{"b":["\n","#","^display:victoria-neutral","/#","^Victoria: We covered the main points. I'll be in touch about the training program.","\n","#","^exit_conversation","/#","done",{"->":"start.23"},null]}],"nop","\n",null],"first_impression":[["#","^speaker:victoria_sterling","/#","^Victoria: I reviewed your background. Freelance pen testing, some CTF competition work.","\n","^Victoria: Solid technical skills. But that's not why you're here.","\n","ev","str","^Why am I here?","/str","/ev",{"*":".^.c-0","flg":20},"ev","str","^I'm interested in advanced research","/str","/ev",{"*":".^.c-1","flg":20},"ev","str","^I heard Zero Day does interesting work","/str","/ev",{"*":".^.c-2","flg":20},{"c-0":["\n","^You: Why am I here, then?","\n","^Victoria: To see if you understand the philosophy behind real security research.","\n","ev",{"VAR?":"victoria_influence"},5,"+",{"VAR=":"victoria_influence","re":true},"/ev",{"->":"philosophy_intro"},{"#f":5}],"c-1":["\n","ev",{"VAR?":"victoria_influence"},10,"+",{"VAR=":"victoria_influence","re":true},"/ev","^You: I want to work on cutting-edge research. Real impact.","\n","^Victoria: \"Real impact.\" Good. Let's talk about what that means.","\n",{"->":"philosophy_intro"},{"#f":5}],"c-2":["\n","ev",{"VAR?":"victoria_influence"},5,"+",{"VAR=":"victoria_influence","re":true},"/ev","ev",{"VAR?":"victoria_suspicious"},5,"+",{"VAR=":"victoria_suspicious","re":true},"/ev","^You: I've heard Zero Day's training programs are... unconventional.","\n","^Victoria: [Slight pause] We push boundaries, yes. Let me explain our approach.","\n",{"->":"philosophy_intro"},{"#f":5}]}],null],"philosophy_intro":[["#","^speaker:victoria_sterling","/#","^Victoria: The traditional security model is broken. Researchers find vulnerabilities, report them to vendors, wait months for patches.","\n","^Victoria: Meanwhile, those same vulnerabilities get discovered by others. Sold on dark markets. Exploited.","\n","ev","str","^That's the responsible disclosure debate","/str","/ev",{"*":".^.c-0","flg":20},"ev","str","^Researchers deserve to be paid","/str","/ev",{"*":".^.c-1","flg":20},"ev","str","^Sounds like you sell vulnerabilities","/str","/ev",{"*":".^.c-2","flg":20},{"c-0":["\n","ev",{"VAR?":"victoria_influence"},10,"+",{"VAR=":"victoria_influence","re":true},"/ev","^You: The responsible disclosure versus full disclosure debate. Classic dilemma.","\n","^Victoria: Exactly. But there's a third option most won't discuss.","\n",{"->":"market_efficiency_pitch"},{"#f":5}],"c-1":["\n","ev",{"VAR?":"victoria_influence"},15,"+",{"VAR=":"victoria_influence","re":true},"/ev","^You: Researchers deserve compensation for their work. Fair pay for valuable discoveries.","\n","^Victoria: [Nods appreciatively] Finally, someone who gets it.","\n",{"->":"market_efficiency_pitch"},{"#f":5}],"c-2":["\n","ev",{"VAR?":"victoria_influence"},5,"-",{"VAR=":"victoria_influence","re":true},"/ev","ev",{"VAR?":"victoria_suspicious"},10,"+",{"VAR=":"victoria_suspicious","re":true},"/ev","^You: This sounds like you're advocating selling vulnerabilities.","\n","^Victoria: \"Selling\" is such a crude term. Think of it as market-driven research incentives.","\n",{"->":"market_efficiency_pitch"},{"#f":5}]}],null],"market_efficiency_pitch":["#","^speaker:victoria_sterling","/#","^Victoria: We provide liquidity to the vulnerability market.","\n","^Victoria: Every system tends toward disorder. That's thermodynamics - entropy is inevitable.","\n","^Victoria: The question isn't whether systems will fail. It's who benefits from that knowledge.","\n","ev",true,"/ev",{"VAR=":"topic_free_market","re":true},{"->":"hub"},null],"hub":[["ev","str","^Ask about Zero Day's mission","/str",{"VAR?":"topic_zero_day_philosophy"},"!","/ev",{"*":".^.c-0","flg":5},"ev","str","^Question the ethics","/str",{"VAR?":"topic_ethics"},"!","/ev",{"*":".^.c-1","flg":5},"ev","str","^Move closer to examine the whiteboard","/str",{"VAR?":"victoria_influence"},20,">=",{"VAR?":"rfid_clone_started"},"!","&&","/ev",{"*":".^.c-2","flg":5},"ev","str","^Continue the conversation (RFID cloning in progress)","/str",{"VAR?":"rfid_clone_started"},{"VAR?":"rfid_clone_complete"},"!","&&","/ev",{"*":".^.c-3","flg":5},"ev","str","^End the conversation","/str","/ev",{"*":".^.c-4","flg":4},{"c-0":["\n",{"->":"zero_day_philosophy"},null],"c-1":["\n",{"->":"ethics_discussion"},null],"c-2":["\n",{"->":"clone_rfid_opportunity"},null],"c-3":["\n",{"->":"clone_rfid_distraction"},null],"c-4":["\n","#","^exit_conversation","/#","#","^speaker:victoria_sterling","/#","ev",{"VAR?":"victoria_influence"},30,">=","/ev",[{"->":".^.b","c":true},{"b":["\n","^Victoria: I think you'd be a good fit for our training program. I'll be in touch.","\n","ev",true,"/ev",{"VAR=":"victoria_trusts_player","re":true},{"->":".^.^.^.13"},null]}],"nop","\n","ev",{"VAR?":"victoria_influence"},30,"<",{"VAR?":"victoria_influence"},10,">=","&&","/ev",[{"->":".^.b","c":true},{"b":["\n","^Victoria: We'll review your application. Thank you for your time.","\n",{"->":".^.^.^.25"},null]}],"nop","\n","ev",{"VAR?":"victoria_influence"},10,"<","/ev",[{"->":".^.b","c":true},{"b":["\n","^Victoria: I'm not sure you're the right fit for Zero Day's culture. We'll be in touch.","\n",{"->":".^.^.^.33"},null]}],"nop","\n","done",null]}],null],"zero_day_philosophy":[["#","^speaker:victoria_sterling","/#","ev",true,"/ev",{"VAR=":"topic_zero_day_philosophy","re":true},"^Victoria: Zero Day's mission is simple: recognize that vulnerability knowledge has inherent value.","\n","^Victoria: We discover, we price according to demand, we connect buyers with opportunities.","\n","ev","str","^What do buyers do with the exploits?","/str","/ev",{"*":".^.c-0","flg":20},"ev","str","^That sounds like willful ignorance","/str","/ev",{"*":".^.c-1","flg":20},"ev","str","^The free market argument","/str","/ev",{"*":".^.c-2","flg":20},{"c-0":["\n","^You: And what do the buyers do with these exploits?","\n","^Victoria: That's not our concern. We're security professionals, not moralists.","\n","^Victoria: A gun manufacturer isn't responsible for every shooting.","\n","ev",{"VAR?":"victoria_influence"},5,"+",{"VAR=":"victoria_influence","re":true},"/ev",{"->":"moral_rationalization"},{"#f":5}],"c-1":["\n","ev",{"VAR?":"victoria_influence"},10,"-",{"VAR=":"victoria_influence","re":true},"/ev","ev",{"VAR?":"victoria_suspicious"},10,"+",{"VAR=":"victoria_suspicious","re":true},"/ev","^You: \"Not our concern\"? That's willful ignorance of the consequences.","\n","^Victoria: [Slight defensiveness] It's recognizing the reality of how markets work.","\n",{"->":"moral_rationalization"},{"#f":5}],"c-2":["\n","ev",{"VAR?":"victoria_influence"},15,"+",{"VAR=":"victoria_influence","re":true},"/ev","^You: So you're applying free market principles to vulnerability research.","\n","^Victoria: [Smiles] Precisely. Supply and demand. Transparent economics.","\n",{"->":"moral_rationalization"},{"#f":5}]}],null],"moral_rationalization":["#","^speaker:victoria_sterling","/#","^Victoria: We live in a world where vulnerabilities exist whether we like it or not.","\n","^Victoria: Our choice isn't between exploit sales happening or not happening. They already happen.","\n","^Victoria: Our choice is whether security researchers get fairly compensated, or whether only criminals profit.","\n","ev",{"VAR?":"victoria_influence"},5,"+",{"VAR=":"victoria_influence","re":true},"/ev",{"->":"hub"},null],"ethics_discussion":[["#","^speaker:victoria_sterling","/#","ev",true,"/ev",{"VAR=":"topic_ethics","re":true},"^Victoria: Let me guess - you want to ask about the \"morality\" of selling exploits.","\n","^Victoria: Go ahead. I've heard every argument.","\n","ev","str","^What about innocent people getting hurt?","/str","/ev",{"*":".^.c-0","flg":20},"ev","str","^There's a difference between research and weaponization","/str","/ev",{"*":".^.c-1","flg":20},"ev","str","^I'm not here to judge","/str","/ev",{"*":".^.c-2","flg":20},{"c-0":["\n","ev",{"VAR?":"victoria_influence"},5,"-",{"VAR=":"victoria_influence","re":true},"/ev","^You: What about when exploits you sold hurt innocent people? Hospitals, critical infrastructure?","\n","^Victoria: [Measured response] That's on the buyer, not the researcher who discovered the vulnerability.","\n",{"->":"ethics_response_harm"},{"#f":5}],"c-1":["\n","ev",{"VAR?":"victoria_influence"},5,"+",{"VAR=":"victoria_influence","re":true},"/ev","^You: There's a line between security research and creating weapons. Where do you draw that line?","\n","^Victoria: Interesting question. Most people don't even acknowledge there is a line to discuss.","\n",{"->":"ethics_response_nuance"},{"#f":5}],"c-2":["\n","ev",{"VAR?":"victoria_influence"},15,"+",{"VAR=":"victoria_influence","re":true},"/ev","ev","str","^diplomatic","/str","/ev",{"VAR=":"player_approach","re":true},"^You: I'm not here to judge your business model. I'm here to understand it.","\n","^Victoria: [Genuinely pleased] That's refreshing. Most people lead with moral indignation.","\n",{"->":"ethics_response_pragmatic"},{"#f":5}]}],null],"ethics_response_harm":["#","^speaker:victoria_sterling","/#","^Victoria: Do you hold pharmaceutical companies responsible when someone overdoses on painkillers?","\n","^Victoria: Do you blame car manufacturers for drunk driving fatalities?","\n","^Victoria: Tools have utility. People choose how to use them.","\n","ev",{"VAR?":"victoria_influence"},5,"-",{"VAR=":"victoria_influence","re":true},"/ev",{"->":"hub"},null],"ethics_response_nuance":["#","^speaker:victoria_sterling","/#","^Victoria: The line is intent. We don't create exploits TO hurt people. We discover vulnerabilities that already exist.","\n","^Victoria: If someone uses a crowbar to break into a house, you don't blame the crowbar manufacturer.","\n","ev",{"VAR?":"victoria_influence"},10,"+",{"VAR=":"victoria_influence","re":true},"/ev",{"->":"hub"},null],"ethics_response_pragmatic":["#","^speaker:victoria_sterling","/#","^Victoria: Pragmatism. I appreciate that.","\n","^Victoria: The truth is, I sleep fine at night because I believe in information freedom.","\n","^Victoria: Vulnerabilities are facts about reality. Suppressing facts doesn't make anyone safer.","\n","ev",{"VAR?":"victoria_influence"},10,"+",{"VAR=":"victoria_influence","re":true},"/ev","ev",true,"/ev",{"VAR=":"victoria_trusts_player","re":true},{"->":"hub"},null],"clone_rfid_opportunity":["#","^speaker:victoria_sterling","/#","^[You stand and move toward the whiteboard, getting closer to Victoria.]","\n","^You: This network diagram - is this your training lab architecture?","\n","^Victoria: Yes, that's the 192.168.100.0 subnet. Students practice on isolated VMs.","\n","^[RFID CLONER ACTIVE - Stay within 2 meters for 10 seconds]","\n","^[Progress bar appears on screen]","\n","ev",true,"/ev",{"VAR=":"rfid_clone_started","re":true},"^You need to keep Victoria talking while the RFID cloner does its work.","\n",{"->":"clone_rfid_distraction"},null],"clone_rfid_distraction":[["#","^speaker:victoria_sterling","/#","^Victoria: The training network uses real vulnerable services. Much more effective than theoretical exercises.","\n","^[CLONING IN PROGRESS...]","\n","ev","str","^What services are in the lab?","/str","/ev",{"*":".^.c-0","flg":20},"ev","str","^How do students access it?","/str","/ev",{"*":".^.c-1","flg":20},"ev","str","^Impressive setup","/str","/ev",{"*":".^.c-2","flg":20},{"c-0":["\n","^You: What kind of services do you run in the lab environment?","\n","^Victoria: FTP, HTTP, some legacy services like distcc. Real-world targets.","\n",{"->":"clone_check_1"},{"#f":5}],"c-1":["\n","^You: How do students access the training network?","\n","^Victoria: VPN from the server room workstations. Keeps it air-gapped from the internet.","\n",{"->":"clone_check_1"},{"#f":5}],"c-2":["\n","^You: That's an impressive training environment. More realistic than most.","\n","ev",{"VAR?":"victoria_influence"},5,"+",{"VAR=":"victoria_influence","re":true},"/ev","^Victoria: We pride ourselves on authenticity. Real exploits, real scenarios.","\n",{"->":"clone_check_1"},{"#f":5}]}],null],"clone_check_1":[["#","^speaker:victoria_sterling","/#","^[CLONING 50% COMPLETE...]","\n","^Victoria: Of course, what students learn in the lab is just the beginning.","\n","^Victoria: Real Zero Day research requires understanding market dynamics, pricing models, buyer relationships.","\n","ev","str","^How do you price vulnerabilities?","/str","/ev",{"*":".^.c-0","flg":20},"ev","str","^That sounds complex","/str","/ev",{"*":".^.c-1","flg":20},"ev","str","^Who are your typical buyers?","/str","/ev",{"*":".^.c-2","flg":20},{"c-0":["\n","^You: How do you determine pricing for a zero-day vulnerability?","\n","^Victoria: CVSS score is the baseline. Then sector premiums based on defensive capacity.","\n",{"->":"clone_check_2"},{"#f":5}],"c-1":["\n","^You: That sounds more complex than pure technical work.","\n","^Victoria: Security research is as much economics as it is code. Most researchers don't grasp that.","\n","ev",{"VAR?":"victoria_influence"},5,"+",{"VAR=":"victoria_influence","re":true},"/ev",{"->":"clone_check_2"},{"#f":5}],"c-2":["\n","ev",{"VAR?":"victoria_suspicious"},5,"+",{"VAR=":"victoria_suspicious","re":true},"/ev","^You: Who typically buys from Zero Day?","\n","^Victoria: [Slight pause] Clients who need access to specialized research. I can't discuss specifics.","\n",{"->":"clone_check_2"},{"#f":5}]}],null],"clone_check_2":[["#","^speaker:victoria_sterling","/#","^[CLONING 75% COMPLETE...]","\n","^Victoria: You're asking good questions. Technical competence is common. Strategic thinking is rare.","\n","ev","str","^I believe in understanding the full picture","/str","/ev",{"*":".^.c-0","flg":20},"ev","str","^Stay focused on the whiteboard","/str","/ev",{"*":".^.c-1","flg":20},"ev","str","^Just a few more seconds...","/str","/ev",{"*":".^.c-2","flg":20},{"c-0":["\n","ev",{"VAR?":"victoria_influence"},10,"+",{"VAR=":"victoria_influence","re":true},"/ev","^You: Technical skills alone aren't enough. You need to understand the ecosystem.","\n","^Victoria: Exactly. That's why most security researchers stay poor while we thrive.","\n",{"->":"clone_complete"},{"#f":5}],"c-1":["\n","^[You pretend to study the network diagram]","\n","^You: This training lab must have taken significant investment.","\n","^Victoria: Worth every dollar. Our students become operational faster than any university program.","\n",{"->":"clone_complete"},{"#f":5}],"c-2":["\n","^[Keep her talking]","\n","^You: And the certifications - do you offer any formal credentials?","\n","^Victoria: We don't believe in traditional certifications. Results speak louder than paper.","\n",{"->":"clone_complete"},{"#f":5}]}],null],"clone_complete":[["#","^speaker:victoria_sterling","/#","^[CLONING 100% COMPLETE]","\n","^[Device vibrates subtly in your pocket]","\n","^[VICTORIA STERLING'S EXECUTIVE KEYCARD CLONED]","\n","^You step back from the whiteboard, creating distance naturally.","\n","#","^complete_task:clone_rfid_card","/#","#","^unlock_aim:network_recon","/#","#","^unlock_aim:gather_evidence","/#","ev",true,"/ev",{"VAR=":"rfid_clone_complete","re":true},"^Victoria: I think that covers the basic philosophy. The training program starts next month if you're interested.","\n","ev","str","^I'm very interested","/str","/ev",{"*":".^.c-0","flg":20},"ev","str","^I need to consider it","/str","/ev",{"*":".^.c-1","flg":20},"ev","str","^Thank you for your time","/str","/ev",{"*":".^.c-2","flg":20},{"c-0":["\n","ev",{"VAR?":"victoria_influence"},10,"+",{"VAR=":"victoria_influence","re":true},"/ev","^You: This is exactly the kind of work I've been looking for.","\n","^Victoria: Excellent. I'll have my assistant send you the enrollment details.","\n",{"->":"meeting_end"},{"#f":5}],"c-1":["\n","^You: Let me think it over. This is a significant decision.","\n","^Victoria: Of course. Take your time. Reach out when you've decided.","\n",{"->":"meeting_end"},{"#f":5}],"c-2":["\n","^You: I appreciate you taking the time to explain Zero Day's approach.","\n","^Victoria: My pleasure. It's rare to meet someone who actually wants to understand rather than judge.","\n","ev",{"VAR?":"victoria_influence"},5,"+",{"VAR=":"victoria_influence","re":true},"/ev",{"->":"meeting_end"},{"#f":5}]}],null],"meeting_end":["#","^speaker:victoria_sterling","/#","^Victoria: Feel free to look around the office if you'd like. Reception area, main hallway. Get a feel for the company culture.","\n","ev",{"VAR?":"victoria_trusts_player"},"/ev",[{"->":".^.b","c":true},{"b":["\n","^Victoria: And ","ev",{"x()":"player_name"},"out","/ev","^? I think you'd fit in well here. We need more pragmatists.","\n",{"->":".^.^.^.9"},null]}],"nop","\n","^Victoria: I have another meeting in a few minutes. But we'll be in touch.","\n","^[Victoria's phone buzzes. She glances at it.]","\n","^Victoria: Excuse me, I need to take this.","\n","#","^exit_conversation","/#","done",null],"nighttime_confrontation":[["#","^speaker:victoria_sterling","/#","^[Location: Victoria's Executive Office or Main Hallway]","\n","^[Time: Late night]","\n","#","^display:victoria-shocked","/#","^Victoria: ","ev",{"x()":"player_name"},"out","/ev","^? What are you doing here at this hour?","\n","^[She sees that you've clearly been investigating]","\n","^Victoria: You're not a recruit, are you.","\n","ev","str","^SAFETYNET agent. You're under investigation.","/str","/ev",{"*":".^.c-0","flg":20},"ev","str","^I know about St. Catherine's Hospital","/str","/ev",{"*":".^.c-1","flg":20},"ev","str","^You can help us take down The Architect","/str","/ev",{"*":".^.c-2","flg":20},{"c-0":["\n","^You: SAFETYNET. You're under investigation for exploit sales to ENTROPY cells.","\n",{"->":"confrontation_safetynet"},{"#f":5}],"c-1":["\n","^You: I know about St. Catherine's. The ProFTPD exploit. Six people died.","\n",{"->":"confrontation_hospital"},{"#f":5}],"c-2":["\n","^You: We know about The Architect. You can help us stop Phase 2.","\n",{"->":"confrontation_recruitment"},{"#f":5}]}],null],"confrontation_safetynet":[["#","^speaker:victoria_sterling","/#","#","^display:victoria-defensive","/#","^Victoria: SAFETYNET. Of course. The moral guardians of the status quo.","\n","^Victoria: You have no authority here. This is a legitimate business.","\n","ev","str","^Show her the exploit catalog","/str","/ev",{"*":".^.c-0","flg":20},"ev","str","^You sold weapons. People died.","/str","/ev",{"*":".^.c-1","flg":20},{"c-0":["\n","^You: [$12,500 for the hospital exploit. With a healthcare premium.]","\n",{"->":"moral_confrontation"},{"#f":5}],"c-1":["\n","^You: You sold the tools that killed six people. That's not research, that's murder for profit.","\n",{"->":"moral_confrontation"},{"#f":5}]}],null],"confrontation_hospital":[["#","^speaker:victoria_sterling","/#","#","^display:victoria-conflicted","/#","^Victoria: St. Catherine's... [pause] That was a buyer's deployment decision. Not our responsibility.","\n","ev","str","^You charged extra because they couldn't defend themselves","/str","/ev",{"*":".^.c-0","flg":20},"ev","str","^Six people in critical care. Two in surgery.","/str","/ev",{"*":".^.c-1","flg":20},{"c-0":["\n","^You: You charged a healthcare premium. Extra money because hospitals can't protect themselves.","\n","^Victoria: [Defensive] That's market pricing. Reflecting risk and value.","\n",{"->":"moral_confrontation"},{"#f":5}],"c-1":["\n","^You: Six people died when patient monitoring failed. Real people. Real deaths.","\n","^Victoria: [Visibly affected] I... we didn't deploy the ransomware. We just provided—","\n","^You: The weapon. You provided the weapon and took payment.","\n",{"->":"moral_confrontation"},{"#f":5}]}],null],"confrontation_recruitment":[["#","^speaker:victoria_sterling","/#","#","^display:victoria-calculating","/#","^Victoria: The Architect? [Pause] You found the directive, didn't you.","\n","^Victoria: Phase 2. Healthcare SCADA. Energy grid ICS.","\n","ev","str","^50,000 patient treatment delays. 1.2 million without power.","/str","/ev",{"*":".^.c-0","flg":20},"ev","str","^You can stop it. Become a double agent.","/str","/ev",{"*":".^.c-1","flg":20},{"c-0":["\n","^You: 50,000 patients. 1.2 million people without power in winter. That's genocide-scale harm.","\n","^Victoria: [Shaken] Those were projections. Theoretical maximums for pricing—","\n",{"->":"moral_confrontation"},{"#f":5}],"c-1":["\n","^You: You can stop Phase 2. Feed us intelligence. Become a double agent.","\n",{"->":"recruitment_pitch"},{"#f":5}]}],null],"moral_confrontation":[["#","^speaker:victoria_sterling","/#","#","^display:victoria-conflicted","/#","^Victoria: I'm a security researcher. I discover vulnerabilities. That's not a crime.","\n","^Victoria: The market exists with or without me. I just participate honestly.","\n","ev","str","^Is $12,500 worth six lives?","/str","/ev",{"*":".^.c-0","flg":20},"ev","str","^The Architect is using you","/str","/ev",{"*":".^.c-1","flg":20},{"c-0":["\n","^You: Was $12,500 worth six lives? Can you honestly tell me you sleep well?","\n","^Victoria: [Long pause] I... [she struggles] The market model is sound. Individual cases don't invalidate—","\n","^You: Individual cases? Those are people. With families. With futures you erased for profit.","\n",{"->":"victoria_breaking_point"},{"#f":5}],"c-1":["\n","^You: The Architect is using you. You're not a researcher, you're an arms dealer for a terrorist network.","\n","^Victoria: [Defensive but wavering] We have standards. Vetting processes—","\n","^You: You sold to GHOST. To Ransomware Incorporated. You knew exactly who they were.","\n",{"->":"victoria_breaking_point"},{"#f":5}]}],null],"victoria_breaking_point":[["#","^speaker:victoria_sterling","/#","#","^display:victoria-broken","/#","^[Victoria sits down heavily, the confidence gone]","\n","^Victoria: I told myself it was about market efficiency. About fair compensation for researchers.","\n","^Victoria: I built a whole philosophy around it. Rational. Defensible.","\n","^[She looks at her hands]","\n","^Victoria: But when I read the news about St. Catherine's... the patient deaths... I knew.","\n","^Victoria: I knew it was our exploit. And I did nothing.","\n","ev","str","^You can still do something now","/str","/ev",{"*":".^.c-0","flg":20},"ev","str","^You need to face justice","/str","/ev",{"*":".^.c-1","flg":20},"ev","str","^Say nothing, let her process","/str","/ev",{"*":".^.c-2","flg":20},{"c-0":["\n",{"->":"recruitment_pitch"},{"#f":5}],"c-1":["\n",{"->":"arrest_option"},{"#f":5}],"c-2":["\n",{"->":"victoria_decision"},{"#f":5}]}],null],"recruitment_pitch":[["#","^speaker:victoria_sterling","/#","^Victoria: Become a double agent? Feed SAFETYNET intelligence on The Architect?","\n","^Victoria: If I do that, ENTROPY will kill me. You know that.","\n","ev","str","^We can protect you. Witness protection.","/str","/ev",{"*":".^.c-0","flg":20},"ev","str","^It's the only way to stop more deaths","/str","/ev",{"*":".^.c-1","flg":20},"ev","str","^Or you can go to prison","/str","/ev",{"*":".^.c-2","flg":20},{"c-0":["\n","^You: SAFETYNET can protect you. New identity, relocation, the full program.","\n","^Victoria: [Considering] And in exchange?","\n","^You: Everything you know about The Architect. Zero Day's client list. Phase 2 targets.","\n",{"->":"recruitment_consideration"},{"#f":5}],"c-1":["\n","^You: Phase 2 will kill thousands. You're the only one positioned to stop it.","\n","^Victoria: [Conflicted] I'd be betraying everything I built...","\n","^You: You'd be saving lives. Isn't that what security research is supposed to be about?","\n",{"->":"recruitment_consideration"},{"#f":5}],"c-2":["\n","^You: The alternative is federal prison. ENTROPY operational charges. 20 years minimum.","\n","^Victoria: [Grimly] That's not exactly a choice.","\n","^You: It's more choice than you gave those six people at St. Catherine's.","\n",{"->":"recruitment_consideration"},{"#f":5}]}],null],"recruitment_consideration":[["#","^speaker:victoria_sterling","/#","^[Victoria is silent for a long moment]","\n","^Victoria: If I do this... if I feed you intelligence on The Architect...","\n","^Victoria: I want immunity. Full immunity from prosecution.","\n","^Victoria: And protection for my family. They don't know about Zero Day. They're innocent.","\n","ev","str","^SAFETYNET can arrange that","/str","/ev",{"*":".^.c-0","flg":20},"ev","str","^I can't promise immunity without authorization","/str","/ev",{"*":".^.c-1","flg":20},{"c-0":["\n","ev",true,"/ev",{"VAR=":"victoria_trusts_player","re":true},"^You: We can arrange immunity and family protection. But you have to give us everything.","\n","^Victoria: [Nods slowly] Alright. I'll do it. I'll be your double agent.","\n","#","^complete_task:victoria_choice_made","/#",{"->":"recruitment_success"},{"#f":5}],"c-1":["\n","^You: I don't have authority to grant immunity. But I can advocate for it.","\n","^Victoria: [Frustrated] Not good enough. I need guarantees.","\n","^You: Help us now, and I'll fight for your immunity. That's all I can promise.","\n",{"->":"recruitment_conditional"},{"#f":5}]}],null],"recruitment_success":["#","^speaker:victoria_sterling","/#","^Victoria: What do you need to know?","\n","^Victoria: The Architect's real identity? I don't know it. None of us do.","\n","^Victoria: But I know the communication channels. The encryption protocols. The payment methods.","\n","^Victoria: And I know the Phase 2 timeline. It's not theoretical. It's active.","\n","^You: When?","\n","^Victoria: Q4 2024. Three months from now. The Architect's already positioning assets.","\n","#","^exit_conversation","/#","done",null],"arrest_option":["#","^speaker:victoria_sterling","/#","^Victoria: Prison. [Hollow laugh] I suppose that's what I deserve.","\n","^Victoria: For what it's worth... I'm sorry. About St. Catherine's. About all of it.","\n","^Victoria: I convinced myself I was just participating in a market. But markets can be immoral too.","\n","^[She stands, hands out]","\n","^Victoria: I won't resist. Just... tell them the truth at trial. I wasn't trying to kill anyone.","\n","^You: Intent doesn't erase consequences.","\n","^Victoria: No. I suppose it doesn't.","\n","#","^complete_task:victoria_choice_made","/#","#","^exit_conversation","/#","done",null],"recruitment_conditional":["#","^speaker:victoria_sterling","/#","^Victoria: Not good enough. I'm not risking my life on promises.","\n","^Victoria: [Stands] You have your evidence. Use it however you want.","\n","^Victoria: But I'm not betraying The Architect without guaranteed protection.","\n","^[She walks toward the door]","\n","^Victoria: I'll take my chances with lawyers.","\n","#","^complete_task:victoria_choice_made","/#","#","^exit_conversation","/#","done",null],"victoria_decision":[["#","^speaker:victoria_sterling","/#","^[Victoria looks up at you]","\n","^Victoria: What happens now?","\n","ev","str","^You help us, or you face trial","/str","/ev",{"*":".^.c-0","flg":20},"ev","str","^That's up to you","/str","/ev",{"*":".^.c-1","flg":20},"ev","str","^Justice happens","/str","/ev",{"*":".^.c-2","flg":20},{"c-0":["\n",{"->":"recruitment_pitch"},{"#f":5}],"c-1":["\n","^You: What happens now is your choice. Prison, or redemption.","\n","^Victoria: [Long pause] Redemption. I choose redemption.","\n",{"->":"recruitment_pitch"},{"#f":5}],"c-2":["\n",{"->":"arrest_option"},{"#f":5}]}],null],"global decl":["ev",0,{"VAR=":"victoria_influence"},false,{"VAR=":"victoria_trusts_player"},false,{"VAR=":"victoria_suspicious"},false,{"VAR=":"rfid_clone_started"},false,{"VAR=":"rfid_clone_complete"},false,{"VAR=":"topic_zero_day_philosophy"},false,{"VAR=":"topic_free_market"},false,{"VAR=":"topic_ethics"},false,{"VAR=":"recruitment_discussed"},"str","^","/str",{"VAR=":"player_approach"},"/ev","end",null]}],"listDefs":{}} \ No newline at end of file diff --git a/scenarios/m03_ghost_in_the_machine/ink/m03_opening_briefing.json b/scenarios/m03_ghost_in_the_machine/ink/m03_opening_briefing.json new file mode 100644 index 0000000..c28e5b6 --- /dev/null +++ b/scenarios/m03_ghost_in_the_machine/ink/m03_opening_briefing.json @@ -0,0 +1 @@ +{"inkVersion":21,"root":[[["done",{"#n":"g-0"}],null],"done",{"start":[["#","^speaker:agent_0x99","/#","^[Location: SAFETYNET Secure Communication Channel]","\n","^[Visual: Agent 0x99's avatar - Haxolottle mascot with headset]","\n","^Agent 0x99: ","ev",{"x()":"player_name"},"out","/ev","^, thanks for picking up. We have a developing situation.","\n","^Agent 0x99: Zero Day Syndicate. You heard of them?","\n","ev","str","^Refresh my memory","/str","/ev",{"*":".^.c-0","flg":20},"ev","str","^The exploit marketplace","/str","/ev",{"*":".^.c-1","flg":20},"ev","str","^Just brief me","/str","/ev",{"*":".^.c-2","flg":20},{"c-0":["\n","^You: Remind me - what's their deal?","\n",{"->":"briefing_main"},{"#f":5}],"c-1":["\n","ev",{"VAR?":"handler_trust"},10,"+",{"VAR=":"handler_trust","re":true},"/ev","^You: The exploit marketplace. They sell zero-day vulnerabilities.","\n","^Agent 0x99: Exactly. And we've got evidence they're escalating.","\n",{"->":"briefing_main"},{"#f":5}],"c-2":["\n","ev","str","^direct","/str","/ev",{"VAR=":"player_approach","re":true},"^You: Skip the background. What's the mission?","\n","^Agent 0x99: Right to business. I like it.","\n",{"->":"briefing_main"},{"#f":5}]}],null],"briefing_main":[["#","^speaker:agent_0x99","/#","^Agent 0x99: Zero Day operates under the cover of WhiteHat Security Services.","\n","^Agent 0x99: Legitimate pen testing firm by day. Exploit marketplace by night.","\n","ev",{"VAR?":"player_approach"},"str","^direct","/str","==","/ev",[{"->":".^.b","c":true},{"b":["\n","^Agent 0x99: Here's what matters: we need intel on their operations.","\n",{"->":"objectives"},{"->":".^.^.^.15"},null]}],"nop","\n","^Agent 0x99: They've been selling exploits to other ENTROPY cells.","\n","ev","str","^Which cells?","/str","/ev",{"*":".^.c-0","flg":20},"ev","str","^What kind of exploits?","/str","/ev",{"*":".^.c-1","flg":20},"ev","str","^This sounds serious","/str","/ev",{"*":".^.c-2","flg":20},{"c-0":["\n","^You: Which ENTROPY cells are they selling to?","\n","^Agent 0x99: Ransomware Incorporated, Social Fabric, Critical Mass... possibly others.","\n","ev",{"VAR?":"handler_trust"},5,"+",{"VAR=":"handler_trust","re":true},"/ev",{"->":"st_catherines_connection"},{"#f":5}],"c-1":["\n","^You: What kind of exploits are we talking about?","\n","^Agent 0x99: Healthcare infrastructure. Energy grid SCADA systems. Critical targets.","\n",{"->":"st_catherines_connection"},{"#f":5}],"c-2":["\n","ev","str","^cautious","/str","/ev",{"VAR=":"player_approach","re":true},"^You: This sounds more serious than usual.","\n","^Agent 0x99: It is. Much more serious.","\n",{"->":"st_catherines_connection"},{"#f":5}]}],null],"st_catherines_connection":[["#","^speaker:agent_0x99","/#","^Agent 0x99: Remember the St. Catherine's Hospital attack from last month?","\n","^Agent 0x99: The ransomware that killed six people in critical care?","\n","ev","str","^Of course I remember","/str","/ev",{"*":".^.c-0","flg":20},"ev","str","^That was ENTROPY?","/str","/ev",{"*":".^.c-1","flg":20},"ev","str","^I heard about it","/str","/ev",{"*":".^.c-2","flg":20},{"c-0":["\n","ev",true,"/ev",{"VAR=":"knows_m2_connection","re":true},"ev",{"VAR?":"handler_trust"},5,"+",{"VAR=":"handler_trust","re":true},"/ev","^You: Of course. The ProFTPD exploit. Patient monitoring systems went down.","\n","^Agent 0x99: Right. We think Zero Day sold that exploit.","\n",{"->":"mission_stakes"},{"#f":5}],"c-1":["\n","ev",true,"/ev",{"VAR=":"knows_m2_connection","re":true},"^You: Wait - that hospital attack was ENTROPY?","\n","^Agent 0x99: We didn't have confirmation at the time. Now we do.","\n",{"->":"mission_stakes"},{"#f":5}],"c-2":["\n","ev",true,"/ev",{"VAR=":"knows_m2_connection","re":true},"^You: I saw the news coverage. Six deaths.","\n","^Agent 0x99: Six confirmed. The real number might be higher.","\n",{"->":"mission_stakes"},{"#f":5}]}],null],"mission_stakes":[["#","^speaker:agent_0x99","/#","^Agent 0x99: Zero Day didn't deploy the ransomware. They just sold the exploit.","\n","^Agent 0x99: For $12,500. With a \"healthcare premium\" markup.","\n","ev",{"VAR?":"knows_m2_connection"},"/ev",[{"->":".^.b","c":true},{"b":["\n","^Agent 0x99: They charged MORE because hospitals can't defend themselves as well.","\n","^Agent 0x99: Calculated profit from human suffering.","\n",{"->":".^.^.^.11"},null]}],"nop","\n","ev","str","^That's murder for profit","/str","/ev",{"*":".^.c-0","flg":20},"ev","str","^We need to stop them","/str","/ev",{"*":".^.c-1","flg":20},"ev","str","^What's Phase 2?","/str","/ev",{"*":".^.c-2","flg":20},{"c-0":["\n","ev",{"VAR?":"handler_trust"},10,"+",{"VAR=":"handler_trust","re":true},"/ev","ev","str","^cautious","/str","/ev",{"VAR=":"player_approach","re":true},"^You: That's not hacking. That's murder for profit.","\n","^Agent 0x99: Exactly. And they're planning Phase 2.","\n",{"->":"objectives"},{"#f":5}],"c-1":["\n","ev",{"VAR?":"handler_trust"},5,"+",{"VAR=":"handler_trust","re":true},"/ev","^You: We need to shut them down. Now.","\n","^Agent 0x99: Agreed. That's the mission.","\n",{"->":"objectives"},{"#f":5}],"c-2":["\n","^You: You said Phase 2. What's Phase 2?","\n","^Agent 0x99: That's what you're going to find out.","\n",{"->":"objectives"},{"#f":5}]}],null],"objectives":[["#","^speaker:agent_0x99","/#","^Agent 0x99: Your mission objectives:","\n","^Agent 0x99: One - infiltrate WhiteHat Security and clone Victoria Sterling's executive keycard.","\n","^Agent 0x99: Two - access their training network and gather intelligence on exploit sales.","\n","^Agent 0x99: Three - find physical evidence linking Zero Day to the hospital attack.","\n","^Agent 0x99: This mission will test your network reconnaissance skills, encoding analysis, and intelligence correlation.","\n","^Agent 0x99: You'll practice nmap scanning, banner grabbing, and multi-layer decoding. Real pen testing work.","\n","ev","str","^Who's Victoria Sterling?","/str","/ev",{"*":".^.c-0","flg":20},"ev","str","^What's the training network?","/str","/ev",{"*":".^.c-1","flg":20},"ev","str","^How do I get in?","/str","/ev",{"*":".^.c-2","flg":20},"ev","str","^What will I learn from this?","/str","/ev",{"*":".^.c-3","flg":20},{"c-0":["\n","ev",true,"/ev",{"VAR=":"asked_about_victoria","re":true},{"->":"victoria_briefing"},{"#f":5}],"c-1":["\n",{"->":"training_network_briefing"},{"#f":5}],"c-2":["\n",{"->":"cover_story"},{"#f":5}],"c-3":["\n",{"->":"learning_objectives"},{"#f":5}]}],null],"learning_objectives":[["#","^speaker:agent_0x99","/#","^Agent 0x99: Good question. This mission is educational as well as operational.","\n","^Agent 0x99: You'll learn network reconnaissance - using tools like nmap to identify services and vulnerabilities.","\n","^Agent 0x99: Banner grabbing with netcat, understanding what information systems leak unintentionally.","\n","^Agent 0x99: Encoding versus encryption - how to decode ROT13, hexadecimal, and Base64. Not security, just obfuscation.","\n","^Agent 0x99: And the most important skill: correlating digital evidence with physical intelligence.","\n","^Agent 0x99: Understanding the economics of the zero-day marketplace. How adversaries monetize vulnerabilities.","\n","^Agent 0x99: By the end, you'll have practical penetration testing experience and insight into real-world exploit markets.","\n","ev","str","^Understood. I'm ready.","/str","/ev",{"*":".^.c-0","flg":20},"ev","str","^Sounds intense","/str","/ev",{"*":".^.c-1","flg":20},{"c-0":["\n","^Agent 0x99: Excellent. Let's go over the details.","\n",{"->":"victoria_briefing"},{"#f":5}],"c-1":["\n","^Agent 0x99: It is. But you're prepared for this. Let's continue the briefing.","\n",{"->":"victoria_briefing"},{"#f":5}]}],null],"victoria_briefing":[["#","^speaker:agent_0x99","/#","^Agent 0x99: Victoria Sterling, CEO of WhiteHat Security. Former DEFCON speaker, respected researcher.","\n","^Agent 0x99: And likely the operational lead for Zero Day Syndicate. Codename: \"Cipher.\"","\n","^Agent 0x99: Smart, charismatic, ideologically committed to \"free market vulnerability research.\"","\n","ev","str","^She rationalizes selling exploits as capitalism","/str","/ev",{"*":".^.c-0","flg":20},"ev","str","^Can we turn her?","/str","/ev",{"*":".^.c-1","flg":20},"ev","str","^Got it. The mission?","/str","/ev",{"*":".^.c-2","flg":20},{"c-0":["\n","ev",{"VAR?":"handler_trust"},5,"+",{"VAR=":"handler_trust","re":true},"/ev","^You: So she's convinced herself selling hospital exploits is just economics?","\n","^Agent 0x99: Exactly. She's not a sociopath. She's a true believer.","\n","^Agent 0x99: Which might make her more dangerous.","\n",{"->":"clone_keycard_objective"},{"#f":5}],"c-1":["\n","ev",{"VAR?":"handler_trust"},10,"+",{"VAR=":"handler_trust","re":true},"/ev","ev","str","^diplomatic","/str","/ev",{"VAR=":"player_approach","re":true},"^You: Any chance she's recruitable? As a double agent?","\n","^Agent 0x99: Possible. If you can make her see the human cost of her philosophy.","\n","^Agent 0x99: But that's optional. Primary mission is intelligence gathering.","\n",{"->":"clone_keycard_objective"},{"#f":5}],"c-2":["\n",{"->":"clone_keycard_objective"},{"#f":5}]}],null],"clone_keycard_objective":[["#","^speaker:agent_0x99","/#","^Agent 0x99: You'll meet Victoria under the cover of a potential recruit consultation.","\n","^Agent 0x99: While you're with her, clone her RFID executive keycard.","\n","^Agent 0x99: That keycard will give you server room access after hours.","\n","ev","str","^How do I clone it?","/str","/ev",{"*":".^.c-0","flg":20},"ev","str","^Sounds risky","/str","/ev",{"*":".^.c-1","flg":20},"ev","str","^I can handle it","/str","/ev",{"*":".^.c-2","flg":20},{"c-0":["\n","^You: How does the RFID cloning work?","\n",{"->":"rfid_tutorial"},{"#f":5}],"c-1":["\n","ev","str","^cautious","/str","/ev",{"VAR=":"player_approach","re":true},"^You: Cloning her card while she's watching? That's risky.","\n","^Agent 0x99: You'll need to be within 2 meters for about 10 seconds. Create a distraction if needed.","\n",{"->":"training_network_briefing"},{"#f":5}],"c-2":["\n","ev","str","^aggressive","/str","/ev",{"VAR=":"player_approach","re":true},"ev",{"VAR?":"handler_trust"},5,"+",{"VAR=":"handler_trust","re":true},"/ev","^You: I've done proximity ops before. I can handle it.","\n","^Agent 0x99: Good. Here's the technical details.","\n",{"->":"rfid_tutorial"},{"#f":5}]}],null],"rfid_tutorial":[["#","^speaker:agent_0x99","/#","^Agent 0x99: We're providing you with an RFID cloner device. Pocket-sized.","\n","^Agent 0x99: Get within 2 meters of Victoria for about 10 seconds. The device does the rest.","\n","^Agent 0x99: It'll vibrate when the clone is complete. Then get some distance to be safe.","\n","ev","str","^What if she notices?","/str","/ev",{"*":".^.c-0","flg":20},"ev","str","^Understood","/str","/ev",{"*":".^.c-1","flg":20},{"c-0":["\n","^You: What if she notices something?","\n","^Agent 0x99: If questioned, say you're interested in their security research. Play curious recruit.","\n",{"->":"training_network_briefing"},{"#f":5}],"c-1":["\n",{"->":"training_network_briefing"},{"#f":5}]}],null],"training_network_briefing":[["#","^speaker:agent_0x99","/#","^Agent 0x99: Once you have server room access, you'll find their training network.","\n","^Agent 0x99: It's a VM environment at 192.168.100.0/24. Zero Day uses it to test exploits before selling them.","\n","^Agent 0x99: Run reconnaissance - port scanning, service enumeration, the usual.","\n","ev","str","^What am I looking for specifically?","/str","/ev",{"*":".^.c-0","flg":20},"ev","str","^Standard pentest procedures","/str","/ev",{"*":".^.c-1","flg":20},"ev","str","^Ready for the cover story","/str","/ev",{"*":".^.c-2","flg":20},{"c-0":["\n","^You: What specific intel am I after?","\n","^Agent 0x99: Operational logs. Client communications. Evidence of the hospital attack.","\n","^Agent 0x99: And anything about Phase 2 - their future target list.","\n",{"->":"cover_story"},{"#f":5}],"c-1":["\n","ev",{"VAR?":"handler_trust"},5,"+",{"VAR=":"handler_trust","re":true},"/ev","^You: Standard penetration test procedures. Got it.","\n","^Agent 0x99: Exactly. Scan, enumerate, exploit if needed.","\n",{"->":"cover_story"},{"#f":5}],"c-2":["\n",{"->":"cover_story"},{"#f":5}]}],null],"cover_story":[["#","^speaker:agent_0x99","/#","^Agent 0x99: Your cover: you're a cybersecurity researcher interested in Zero Day training programs.","\n","^Agent 0x99: Victoria is meeting you to assess whether you're recruit material.","\n","^Agent 0x99: Entry point: conference room meeting at 2 PM. Then you'll have until nightfall to prep.","\n","ev",{"VAR?":"asked_about_victoria"},"/ev",[{"->":".^.b","c":true},{"b":["\n","^Agent 0x99: Be natural with Victoria. She's smart - she'll spot nervousness.","\n",{"->":".^.^.^.13"},null]}],"nop","\n","ev","str","^What's my background story?","/str","/ev",{"*":".^.c-0","flg":20},"ev","str","^When do I infiltrate the server room?","/str","/ev",{"*":".^.c-1","flg":20},"ev","str","^I understand the setup","/str","/ev",{"*":".^.c-2","flg":20},{"c-0":["\n","^You: What's my background if she asks technical questions?","\n","^Agent 0x99: You're a freelance pentester. Worked with small firms, looking for bigger opportunities.","\n","^Agent 0x99: Interested in \"the morally gray\" side of security research. That'll appeal to her philosophy.","\n",{"->":"mission_approach"},{"#f":5}],"c-1":["\n","^You: When do I actually infiltrate the server room?","\n","^Agent 0x99: After the daytime meeting, there's a time skip to nighttime.","\n","^Agent 0x99: Most staff gone. Just a security guard on patrol. That's when you move.","\n",{"->":"mission_approach"},{"#f":5}],"c-2":["\n",{"->":"mission_approach"},{"#f":5}]}],null],"mission_approach":[["#","^speaker:agent_0x99","/#","^Agent 0x99: Before you go in - how do you want to approach this?","\n","^Agent 0x99: Your call. I trust your judgment.","\n","ev","str","^Careful and methodical","/str","/ev",{"*":".^.c-0","flg":4},"ev","str","^Fast and decisive","/str","/ev",{"*":".^.c-1","flg":4},"ev","str","^Adapt to the situation","/str","/ev",{"*":".^.c-2","flg":4},{"c-0":["\n","ev","str","^cautious","/str","/ev",{"VAR=":"player_approach","re":true},"ev","str","^thoroughness","/str","/ev",{"VAR=":"mission_priority","re":true},"^You: I'll be thorough. Document everything, leave no stone unturned.","\n","^Agent 0x99: Smart approach. The more intel we get, the better our case.","\n","^Agent 0x99: Just remember there's a guard on night patrol. Stealth matters.","\n",{"->":"final_instructions"},null],"c-1":["\n","ev","str","^aggressive","/str","/ev",{"VAR=":"player_approach","re":true},"ev","str","^speed","/str","/ev",{"VAR=":"mission_priority","re":true},"^You: I'll move fast. Get the objectives done and get out.","\n","^Agent 0x99: Speed has advantages. Less time for things to go wrong.","\n","^Agent 0x99: But don't rush past critical evidence. The hospital connection proof is vital.","\n",{"->":"final_instructions"},null],"c-2":["\n","ev","str","^diplomatic","/str","/ev",{"VAR=":"player_approach","re":true},"ev","str","^stealth","/str","/ev",{"VAR=":"mission_priority","re":true},"^You: I'll read the situation. Stay flexible.","\n","ev",{"VAR?":"handler_trust"},10,"+",{"VAR=":"handler_trust","re":true},"/ev","^Agent 0x99: Adaptability. That's why you're good at this.","\n","^Agent 0x99: Trust your instincts. Call if you need guidance.","\n",{"->":"final_instructions"},null]}],null],"final_instructions":[["#","^speaker:agent_0x99","/#","ev",{"VAR?":"player_approach"},"str","^cautious","/str","==","/ev",[{"->":".^.b","c":true},{"b":["\n","^Agent 0x99: Your careful approach is good for this mission. Zero Day leaves paper trails.","\n","^Agent 0x99: Find the documents. Connect the dots.","\n",{"->":".^.^.^.11"},null]}],"nop","\n","ev",{"VAR?":"player_approach"},"str","^aggressive","/str","==","/ev",[{"->":".^.b","c":true},{"b":["\n","^Agent 0x99: You'll need speed for the network challenges. But take time for physical evidence.","\n","^Agent 0x99: Operational logs, client lists, anything linking them to St. Catherine's.","\n",{"->":".^.^.^.21"},null]}],"nop","\n","ev",{"VAR?":"player_approach"},"str","^diplomatic","/str","==","/ev",[{"->":".^.b","c":true},{"b":["\n","^Agent 0x99: Victoria might respect honesty if you find the right moment.","\n","^Agent 0x99: Optional objective: assess whether she's recruitable as a double agent.","\n",{"->":".^.^.^.31"},null]}],"nop","\n","^Agent 0x99: Field Operations Rule 7 - \"When infiltrating corporate environments, remember that the most valuable intelligence is often in the least secure location.\"","\n","ev",{"VAR?":"knows_m2_connection"},"/ev",[{"->":".^.b","c":true},{"b":["\n","^Agent 0x99: And ","ev",{"x()":"player_name"},"out","/ev","^... six people died because of what Zero Day sold.","\n","^Agent 0x99: Four in critical care. Two during emergency surgery when systems failed.","\n","^Agent 0x99: Whatever you find, make it count.","\n",{"->":".^.^.^.39"},null]}],"nop","\n","ev","str","^I won't let you down","/str","/ev",{"*":".^.c-0","flg":20},"ev","str","^Any last advice?","/str","/ev",{"*":".^.c-1","flg":20},"ev","str","^I'm ready","/str","/ev",{"*":".^.c-2","flg":20},{"c-0":["\n","ev",{"VAR?":"handler_trust"},10,"+",{"VAR=":"handler_trust","re":true},"/ev","^You: I'll get the evidence. Zero Day is going down.","\n","^Agent 0x99: That's what I wanted to hear. Stay safe out there.","\n",{"->":"deployment"},{"#f":5}],"c-1":["\n","^You: Any last advice before I go in?","\n",{"->":"last_advice"},{"#f":5}],"c-2":["\n",{"->":"deployment"},{"#f":5}]}],null],"last_advice":[["#","^speaker:agent_0x99","/#","^Agent 0x99: Victoria will test you. Philosophical questions about security ethics.","\n","^Agent 0x99: Play the curious researcher. Don't tip your hand.","\n","^Agent 0x99: And if you find evidence of James Park's involvement...","\n","^Agent 0x99: He's a mid-level consultant. Might be innocent, might be complicit. Your call on what to do.","\n","ev","str","^I'll assess in the field","/str","/ev",{"*":".^.c-0","flg":20},"ev","str","^Every ENTROPY operative goes down","/str","/ev",{"*":".^.c-1","flg":20},"ev","str","^Understood","/str","/ev",{"*":".^.c-2","flg":20},{"c-0":["\n","ev",{"VAR?":"handler_trust"},5,"+",{"VAR=":"handler_trust","re":true},"/ev","^You: I'll make that judgment when I have the facts.","\n","^Agent 0x99: Good answer. Collect evidence first, decide later.","\n",{"->":"deployment"},{"#f":5}],"c-1":["\n","ev","str","^aggressive","/str","/ev",{"VAR=":"player_approach","re":true},"^You: If he's involved with ENTROPY, he's compromised.","\n","^Agent 0x99: Maybe. But gather proof before making that call.","\n",{"->":"deployment"},{"#f":5}],"c-2":["\n",{"->":"deployment"},{"#f":5}]}],null],"deployment":["#","^speaker:agent_0x99","/#","^Agent 0x99: WhiteHat Security is at 1247 Market Street, downtown financial district.","\n","^Agent 0x99: I'll be on comms if you need support. The drop-site terminal in the server room connects directly to me.","\n","ev",{"VAR?":"handler_trust"},70,">=","/ev",[{"->":".^.b","c":true},{"b":["\n","^Agent 0x99: And ","ev",{"x()":"player_name"},"out","/ev","^? I know you'll do this right. You always do.","\n",{"->":".^.^.^.13"},null]}],"nop","\n","ev",{"VAR?":"handler_trust"},50,">=",{"VAR?":"handler_trust"},70,"<","&&","/ev",[{"->":".^.b","c":true},{"b":["\n","^Agent 0x99: Good luck. You've got this.","\n",{"->":".^.^.^.25"},null]}],"nop","\n","ev",{"VAR?":"handler_trust"},50,"<","/ev",[{"->":".^.b","c":true},{"b":["\n","^Agent 0x99: Stay focused. Don't let the stakes psych you out.","\n",{"->":".^.^.^.33"},null]}],"nop","\n","^Agent 0x99: Remember: meet with Victoria, clone her keycard, then night infiltration.","\n","^Agent 0x99: Go get 'em, ","ev",{"x()":"player_name"},"out","/ev","^. Haxolottle out.","\n","^[Transition: Fade to WhiteHat Security reception lobby, 2 PM]","\n","#","^start_gameplay","/#","#","^complete_task:briefing_received","/#","end",null],"global decl":["ev","str","^","/str",{"VAR=":"player_approach"},50,{"VAR=":"handler_trust"},false,{"VAR=":"knows_m2_connection"},"str","^","/str",{"VAR=":"mission_priority"},false,{"VAR=":"asked_about_victoria"},"/ev","end",null]}],"listDefs":{}} \ No newline at end of file diff --git a/scenarios/m03_ghost_in_the_machine/ink/m03_phone_agent0x99.json b/scenarios/m03_ghost_in_the_machine/ink/m03_phone_agent0x99.json new file mode 100644 index 0000000..741f301 --- /dev/null +++ b/scenarios/m03_ghost_in_the_machine/ink/m03_phone_agent0x99.json @@ -0,0 +1 @@ +{"inkVersion":21,"root":[[["done",{"#n":"g-0"}],null],"done",{"start":["#","^speaker:agent_0x99","/#","^[Secure phone connection established]","\n","^Agent 0x99: ","ev",{"x()":"player_name"},"out","/ev","^, what do you need?","\n",{"->":"hub"},null],"hub":[["ev","str","^Request hint","/str","/ev",{"*":".^.c-0","flg":4},"ev","str","^Report progress","/str","/ev",{"*":".^.c-1","flg":4},"ev","str","^Ask about mission details","/str","/ev",{"*":".^.c-2","flg":4},"ev","str","^End call","/str","/ev",{"*":".^.c-3","flg":4},{"c-0":["\n",{"->":"provide_hint"},null],"c-1":["\n",{"->":"report_progress"},null],"c-2":["\n",{"->":"mission_details"},null],"c-3":["\n","#","^exit_conversation","/#","^Agent 0x99: Stay safe. Call if you need backup.","\n","done",null]}],null],"provide_hint":[["#","^speaker:agent_0x99","/#","^Agent 0x99: What do you need help with?","\n","ev","str","^RFID cloning mechanics","/str",{"VAR?":"hint_rfid_cloning_given"},"!","/ev",{"*":".^.c-0","flg":5},"ev","str","^Lockpicking advice","/str",{"VAR?":"hint_lockpicking_given"},"!","/ev",{"*":".^.c-1","flg":5},"ev","str","^Password finding","/str",{"VAR?":"hint_password_given"},"!","/ev",{"*":".^.c-2","flg":5},"ev","str","^Decoding messages","/str",{"VAR?":"hint_encoding_given"},"!","/ev",{"*":".^.c-3","flg":5},"ev","str","^Network reconnaissance","/str",{"VAR?":"hint_network_recon_given"},"!","/ev",{"*":".^.c-4","flg":5},"ev","str","^General guidance","/str","/ev",{"*":".^.c-5","flg":4},"ev","str","^Never mind","/str","/ev",{"*":".^.c-6","flg":4},{"c-0":["\n",{"->":"hint_rfid_cloning"},null],"c-1":["\n",{"->":"hint_lockpicking"},null],"c-2":["\n",{"->":"hint_password"},null],"c-3":["\n",{"->":"hint_encoding"},null],"c-4":["\n",{"->":"hint_network_recon"},null],"c-5":["\n",{"->":"hint_general"},null],"c-6":["\n",{"->":"hub"},null]}],null],"hint_rfid_cloning":[["#","^speaker:agent_0x99","/#","ev",true,"/ev",{"VAR=":"hint_rfid_cloning_given","re":true},"^Agent 0x99: RFID cloning - get within 2 meters of Victoria for about 10 seconds.","\n","^Agent 0x99: The device will vibrate when complete. Keep her talking while it works.","\n","^Agent 0x99: Best moment: when you're both standing near the whiteboard or looking at documents together.","\n","ev","str","^Got it","/str","/ev",{"*":".^.c-0","flg":4},"ev","str","^What if she notices?","/str","/ev",{"*":".^.c-1","flg":4},{"c-0":["\n","^Agent 0x99: Natural movement. Don't make it obvious.","\n",{"->":"hub"},null],"c-1":["\n","^Agent 0x99: Play curious recruit. Ask about the training network. She loves talking about her philosophy.","\n",{"->":"hub"},null]}],null],"hint_lockpicking":[["#","^speaker:agent_0x99","/#","ev",true,"/ev",{"VAR=":"hint_lockpicking_given","re":true},"^Agent 0x99: Lockpicking takes time and makes noise. Watch for the guard patrol route.","\n","^Agent 0x99: Wait until the guard is at the far end of the patrol before starting.","\n","^Agent 0x99: If you have lockpicks in inventory, approach any locked door and interact.","\n","ev","str","^Where can I find lockpicks?","/str","/ev",{"*":".^.c-0","flg":4},"ev","str","^Understood","/str","/ev",{"*":".^.c-1","flg":4},{"c-0":["\n","^Agent 0x99: Check supply closets, maintenance areas, or IT cabinets. Common hiding spots.","\n",{"->":"hub"},null],"c-1":["\n",{"->":"hub"},null]}],null],"hint_password":[["#","^speaker:agent_0x99","/#","ev",true,"/ev",{"VAR=":"hint_password_given","re":true},"^Agent 0x99: People hide password hints everywhere. Sticky notes, desk organizers, whiteboards.","\n","^Agent 0x99: For Victoria's computer, look for personal details. Founding year of WhiteHat Security? Significant dates?","\n","^Agent 0x99: The reception area often has company history. Plaques, awards, founding information.","\n","ev","str","^I'll look around more carefully","/str","/ev",{"*":".^.c-0","flg":4},{"c-0":["\n","^Agent 0x99: Thorough search pays off. Don't rush past obvious clues.","\n",{"->":"hub"},null]}],null],"hint_encoding":[["#","^speaker:agent_0x99","/#","ev",true,"/ev",{"VAR=":"hint_encoding_given","re":true},"^Agent 0x99: CyberChef workstation in the server room handles decoding.","\n","^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).","\n","^Agent 0x99: If you decode something and it still looks encoded? Multi-layer encoding. Decode again.","\n","ev","str","^What's the difference between encoding and encryption?","/str","/ev",{"*":".^.c-0","flg":4},"ev","str","^Thanks for the primer","/str","/ev",{"*":".^.c-1","flg":4},{"c-0":["\n","^Agent 0x99: Encoding is just transformation - no secret key needed. Anyone can reverse it if they know the method.","\n","^Agent 0x99: Encryption requires a key. Much more secure, much harder to break.","\n","^Agent 0x99: ENTROPY uses encoding for speed. Encryption is too slow for operational comms.","\n",{"->":"hub"},null],"c-1":["\n",{"->":"hub"},null]}],null],"hint_network_recon":[["#","^speaker:agent_0x99","/#","ev",true,"/ev",{"VAR=":"hint_network_recon_given","re":true},"^Agent 0x99: The VM terminal in the server room connects to Zero Day's training network - 192.168.100.0/24.","\n","^Agent 0x99: Start with nmap for network scanning. Then netcat for banner grabbing. Then service-specific tools.","\n","^Agent 0x99: Each flag you capture represents intercepted ENTROPY intelligence. Submit them at the drop-site terminal.","\n","ev","str","^What's the target priority?","/str","/ev",{"*":".^.c-0","flg":4},"ev","str","^Got it","/str","/ev",{"*":".^.c-1","flg":4},{"c-0":["\n","^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.","\n",{"->":"hub"},null],"c-1":["\n",{"->":"hub"},null]}],null],"hint_general":["#","^speaker:agent_0x99","/#","ev",{"x()":"player_approach"},"str","^cautious","/str","==","/ev",[{"->":".^.b","c":true},{"b":["\n","^Agent 0x99: Your methodical approach is smart. Document everything, connect the dots.","\n",{"->":".^.^.^.11"},null]}],"nop","\n","ev",{"x()":"player_approach"},"str","^aggressive","/str","==","/ev",[{"->":".^.b","c":true},{"b":["\n","^Agent 0x99: Speed is good, but don't miss critical evidence. The hospital connection proof is vital.","\n",{"->":".^.^.^.21"},null]}],"nop","\n","ev",{"x()":"player_approach"},"str","^diplomatic","/str","==","/ev",[{"->":".^.b","c":true},{"b":["\n","^Agent 0x99: Stay flexible. Read situations. Trust your judgment.","\n",{"->":".^.^.^.31"},null]}],"nop","\n","^Agent 0x99: Remember - Victoria's keycard gets you server room access. Network recon gets you digital evidence. Physical search gets you documents.","\n","^Agent 0x99: All three together make the case.","\n",{"->":"hub"},null],"report_progress":[["#","^speaker:agent_0x99","/#","ev",{"VAR?":"objectives_mentioned"},1,"+",{"VAR=":"objectives_mentioned","re":true},"/ev","^Agent 0x99: Give me a status update.","\n","ev",{"x()":"objectives_completed"},0,"==","/ev",[{"->":".^.b","c":true},{"b":["\n","^Agent 0x99: No objectives complete yet. Have you met with Victoria?","\n","^Agent 0x99: Priority one: clone her keycard. Everything else depends on server room access.","\n",{"->":".^.^.^.17"},null]}],"nop","\n","ev",{"x()":"objectives_completed"},1,"==","/ev",[{"->":".^.b","c":true},{"b":["\n","^Agent 0x99: One objective down. Good start. Keep moving.","\n",{"->":".^.^.^.25"},null]}],"nop","\n","ev",{"x()":"objectives_completed"},2,">=",{"x()":"objectives_completed"},4,"<","&&","/ev",[{"->":".^.b","c":true},{"b":["\n","^Agent 0x99: ","ev",{"x()":"objectives_completed"},"out","/ev","^ objectives complete. You're making progress.","\n",{"->":".^.^.^.37"},null]}],"nop","\n","ev",{"x()":"objectives_completed"},4,">=","/ev",[{"->":".^.b","c":true},{"b":["\n","^Agent 0x99: Excellent work. ","ev",{"x()":"objectives_completed"},"out","/ev","^ objectives complete. You're building a solid case.","\n",{"->":".^.^.^.45"},null]}],"nop","\n","ev",{"x()":"stealth_rating"},80,">","/ev",[{"->":".^.b","c":true},{"b":["\n","^Agent 0x99: And I see you're staying ghost. Perfect operational security.","\n",{"->":".^.^.^.53"},null]}],"nop","\n","ev",{"x()":"stealth_rating"},50,"<","/ev",[{"->":".^.b","c":true},{"b":["\n","^Agent 0x99: You're making some noise. Guard is getting suspicious. Tighten up your stealth.","\n",{"->":".^.^.^.61"},null]}],"nop","\n","ev","str","^Continue mission","/str","/ev",{"*":".^.c-0","flg":4},{"c-0":["\n","^Agent 0x99: Roger that. Call if you need support.","\n",{"->":"hub"},null]}],null],"mission_details":[["#","^speaker:agent_0x99","/#","^Agent 0x99: Mission objectives recap:","\n","^Agent 0x99: Primary - Clone Victoria's RFID keycard, access server room, gather network intelligence, find physical evidence linking Zero Day to St. Catherine's.","\n","^Agent 0x99: Optional - Collect LORE fragments for deeper intelligence on ENTROPY's structure.","\n","ev","str","^Remind me about Victoria","/str","/ev",{"*":".^.c-0","flg":4},"ev","str","^What about The Architect?","/str","/ev",{"*":".^.c-1","flg":4},"ev","str","^Got it","/str","/ev",{"*":".^.c-2","flg":4},{"c-0":["\n","^Agent 0x99: Victoria Sterling, CEO. Codename \"Cipher.\" True believer in free market vulnerability research.","\n","^Agent 0x99: Smart, charismatic, ideologically committed. Don't underestimate her.","\n",{"->":"hub"},null],"c-1":["\n","^Agent 0x99: The Architect is ENTROPY's leadership figure. We don't have identity confirmation yet.","\n","^Agent 0x99: But evidence suggests they're coordinating all the cells. Zero Day, Ransomware Inc, Social Fabric, all of them.","\n","^Agent 0x99: Any intel you find on The Architect is gold.","\n",{"->":"hub"},null],"c-2":["\n",{"->":"hub"},null]}],null],"on_rfid_cloner_pickup":["#","^speaker:agent_0x99","/#","^Agent 0x99: Good, you've got the RFID cloner.","\n","^Agent 0x99: When you meet Victoria, get within 2 meters for 10 seconds. Keep her engaged in conversation.","\n","^Agent 0x99: The device is pocket-sized. She won't notice it unless you're obvious about it.","\n","#","^exit_conversation","/#","done",null],"on_lockpick_pickup":["#","^speaker:agent_0x99","/#","^Agent 0x99: Lockpick acquired. That'll let you bypass physical locks.","\n","^Agent 0x99: Remember - lockpicking makes noise and takes time. Watch for patrols.","\n","#","^exit_conversation","/#","done",null],"on_rfid_clone_success":["#","^speaker:agent_0x99","/#","^Agent 0x99: Excellent. Victoria's keycard cloned successfully.","\n","^Agent 0x99: You now have executive-level access. Server room is yours after hours.","\n","^Agent 0x99: Wait for nighttime, then infiltrate. That's when the real work begins.","\n","#","^exit_conversation","/#","done",null],"on_player_detected":["#","^speaker:agent_0x99","/#","^Agent 0x99: You've been spotted! Talk your way out or prepare for confrontation.","\n","^Agent 0x99: If things go sideways, abort and exfil. We can try again.","\n","#","^exit_conversation","/#","done",null],"on_room_discovered":["#","^speaker:agent_0x99","/#","ev",{"VAR?":"rooms_discovered"},1,"+",{"VAR=":"rooms_discovered","re":true},"/ev","ev",{"VAR?":"rooms_discovered"},1,"==","/ev",[{"->":".^.b","c":true},{"b":["\n","^Agent 0x99: New room accessed. Good progress. Search thoroughly.","\n",{"->":".^.^.^.15"},null]}],"nop","\n","ev",{"VAR?":"rooms_discovered"},3,"==","/ev",[{"->":".^.b","c":true},{"b":["\n","^Agent 0x99: You're covering ground. Stay systematic - don't miss critical evidence.","\n",{"->":".^.^.^.23"},null]}],"nop","\n","ev",{"VAR?":"rooms_discovered"},5,">=","/ev",[{"->":".^.b","c":true},{"b":["\n","^Agent 0x99: Impressive exploration. You should have a complete picture of the facility now.","\n",{"->":".^.^.^.31"},null]}],"nop","\n","#","^exit_conversation","/#","done",null],"on_lockpick_success":["#","^speaker:agent_0x99","/#","^Agent 0x99: Clean work on that lock. Moving like a pro.","\n","ev",{"x()":"stealth_rating"},70,">","/ev",[{"->":".^.b","c":true},{"b":["\n","^Agent 0x99: And you're staying quiet. Textbook infiltration.","\n",{"->":".^.^.^.11"},null]}],"nop","\n","#","^exit_conversation","/#","done",null],"m2_revelation_call":[["#","^speaker:agent_0x99","/#","^[Agent 0x99's avatar appears - serious expression]","\n","^Agent 0x99: ","ev",{"x()":"player_name"},"out","/ev","^, I just saw the distcc operational logs you submitted.","\n","^Agent 0x99: This is... this is the smoking gun.","\n","^Agent 0x99: ProFTPD exploit. $12,500. Sold to GHOST. Deployed at St. Catherine's Hospital.","\n","^Agent 0x99: Victoria Sterling personally authorized the sale. \"Cipher\" signature on the approval.","\n","^[Pause]","\n","^Agent 0x99: Six people died in that attack. Six people.","\n","^Agent 0x99: Four in critical care when patient monitoring failed. Two during emergency surgery when systems crashed.","\n","ev","str","^We have them now","/str","/ev",{"*":".^.c-0","flg":20},"ev","str","^Victoria knew exactly what would happen","/str","/ev",{"*":".^.c-1","flg":20},"ev","str","^This changes everything","/str","/ev",{"*":".^.c-2","flg":20},{"c-0":["\n","^You: This is direct causation. Zero Day → GHOST → St. Catherine's. We can prosecute.","\n","^Agent 0x99: Yes. Federal charges. ENTROPY operational conspiracy. This evidence is ironclad.","\n",{"->":"m2_revelation_impact"},{"#f":5}],"c-1":["\n","^You: The healthcare premium. They charged extra BECAUSE hospitals can't defend themselves.","\n","^Agent 0x99: Calculated exploitation of vulnerability. It's not hacking - it's murder for profit.","\n",{"->":"m2_revelation_impact"},{"#f":5}],"c-2":["\n","^You: We're not just disrupting a hacking group. This is mass casualty prosecution.","\n","^Agent 0x99: Yes. The stakes just went up. Way up.","\n",{"->":"m2_revelation_impact"},{"#f":5}]}],null],"m2_revelation_impact":[["#","^speaker:agent_0x99","/#","^Agent 0x99: Keep gathering evidence. Physical documents, LORE fragments, anything that builds the case.","\n","^Agent 0x99: And ","ev",{"x()":"player_name"},"out","/ev","^? The Architect's directive mentioned Phase 2.","\n","^Agent 0x99: 50,000 patient treatment delays. 1.2 million without power in winter.","\n","^Agent 0x99: If St. Catherine's was Phase 1... we need to stop Phase 2 before it begins.","\n","ev","str","^I'll find everything I can","/str","/ev",{"*":".^.c-0","flg":20},"ev","str","^We're bringing them all down","/str","/ev",{"*":".^.c-1","flg":20},{"c-0":["\n","^Agent 0x99: I know you will. This is what we trained for.","\n",{"->":"m2_revelation_end"},{"#f":5}],"c-1":["\n","^Agent 0x99: Damn right we are. For those six people. And the thousands more at risk.","\n",{"->":"m2_revelation_end"},{"#f":5}]}],null],"m2_revelation_end":["#","^speaker:agent_0x99","/#","^Agent 0x99: Finish the mission. Document everything. We'll debrief when you're out.","\n","^Agent 0x99: And ","ev",{"x()":"player_name"},"out","/ev","^? Be careful. Victoria might seem reasonable, but she authorized that hospital attack.","\n","^Agent 0x99: Don't forget what she's capable of.","\n","#","^exit_conversation","/#","done",null],"on_exploit_catalog_found":["#","^speaker:agent_0x99","/#","^Agent 0x99: The exploit catalog... jesus.","\n","^Agent 0x99: $847,000 in Q3 alone. 23 exploits sold.","\n","^Agent 0x99: This isn't a hacking group. It's an industrial operation.","\n","#","^exit_conversation","/#","done",null],"on_architect_directive_found":["#","^speaker:agent_0x99","/#","^Agent 0x99: You found The Architect's directive. This is massive.","\n","^Agent 0x99: Phase 2 targeting. 427 energy substations. 15 hospitals.","\n","^Agent 0x99: And the cross-cell coordination - Zero Day, Ransomware Inc, Social Fabric, Critical Mass all working together.","\n","^Agent 0x99: This isn't isolated cells anymore. This is a coordinated network.","\n","^Agent 0x99: We need to bring this to SAFETYNET Command immediately.","\n","#","^exit_conversation","/#","done",null],"on_guard_hostile":["#","^speaker:agent_0x99","/#","^Agent 0x99: Guard is hostile! Get to safe distance or prepare to talk your way out.","\n","^Agent 0x99: If combat starts, disable and escape. Avoid lethal force if possible.","\n","#","^exit_conversation","/#","done",null],"on_victoria_computer_accessed":["#","^speaker:agent_0x99","/#","^Agent 0x99: You're in Victoria's computer. Good work.","\n","^Agent 0x99: Look for client lists, transaction records, communications with other ENTROPY cells.","\n","^Agent 0x99: Anything linking her directly to The Architect is priority intelligence.","\n","#","^exit_conversation","/#","done",null],"global decl":["ev",false,{"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"},0,{"VAR=":"rooms_discovered"},0,{"VAR=":"objectives_mentioned"},"/ev","end",null]}],"listDefs":{}} \ No newline at end of file diff --git a/scenarios/m03_ghost_in_the_machine/ink/m03_terminal_cyberchef.json b/scenarios/m03_ghost_in_the_machine/ink/m03_terminal_cyberchef.json new file mode 100644 index 0000000..09d6c1c --- /dev/null +++ b/scenarios/m03_ghost_in_the_machine/ink/m03_terminal_cyberchef.json @@ -0,0 +1 @@ +{"inkVersion":21,"root":[[["done",{"#n":"g-0"}],null],"done",{"start":["#","^speaker:computer","/#","^╔═══════════════════════════════════════════╗","\n","^║ CYBERCHEF DECODING WORKSTATION ║","\n","^║ Encoding/Decoding Analysis Tools ║","\n","^╚═══════════════════════════════════════════╝","\n","ev",{"VAR?":"first_time_tutorial"},"/ev",[{"->":".^.b","c":true},{"b":["\n","^[This workstation provides real-time encoding/decoding]","\n","^[Use CyberChef operations to decode evidence]","\n","^[Available operations:]","\n","^[• From Base64]","\n","^[• ROT13]","\n","^[• From Hex]","\n","^[• Multi-layer decoding (sequential operations)]","\n","ev",false,"/ev",{"VAR=":"first_time_tutorial","re":true},{"->":"start.15"},null]}],"nop","\n","^Select evidence to decode:","\n",{"->":"hub"},null],"hub":[["ev","str","^Decode server room whiteboard message","/str",{"VAR?":"whiteboard_decoded"},"!","/ev",{"*":".^.c-0","flg":5},"ev","str","^Decode client roster file (from Victoria's computer)","/str",{"VAR?":"client_roster_decoded"},"!","/ev",{"*":".^.c-1","flg":5},"ev","str","^Decode USB drive message (double-encoded)","/str",{"VAR?":"usb_drive_decoded_layer2"},"!","/ev",{"*":".^.c-2","flg":5},"ev","str","^View decoding reference guide","/str","/ev",{"*":".^.c-3","flg":4},"ev","str","^Exit workstation","/str","/ev",{"*":".^.c-4","flg":4},{"c-0":["\n",{"->":"decode_whiteboard"},null],"c-1":["\n",{"->":"decode_client_roster"},null],"c-2":["\n",{"->":"decode_usb_drive"},null],"c-3":["\n",{"->":"reference_guide"},null],"c-4":["\n","#","^exit_conversation","/#","done",null]}],null],"decode_whiteboard":[["#","^speaker:computer","/#","^EVIDENCE: Server room whiteboard message","\n","^INPUT (Raw):","\n","^━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━","\n","^ZRRG JVGU GUR NEPUVGRPG'F CERSBEERQ PYVRAGF","\n","^CEBWRPG CUNFR 1: URNYGUNERENCCYVPNGVBAF","\n","^CEBWRPG CUNFR 2: RARETL TEVQ VPF","\n","^PBAGNPG: PVCURE SBE CEPRFG NCCEBI NY","\n","^━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━","\n","^ENCODING DETECTED: Character substitution pattern","\n","^RECOMMENDATION: Apply ROT13 operation","\n","ev","str","^Apply ROT13 decoding","/str","/ev",{"*":".^.c-0","flg":4},"ev","str","^Try different decoding method","/str","/ev",{"*":".^.c-1","flg":4},{"c-0":["\n",{"->":"whiteboard_rot13_result"},null],"c-1":["\n",{"->":"whiteboard_wrong_method"},null]}],null],"whiteboard_rot13_result":[["#","^speaker:computer","/#","^Applying \"ROT13\" operation...","\n","^OUTPUT (Decoded):","\n","^━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━","\n","^MEET WITH THE ARCHITECT'S PREFERRED CLIENTS","\n","^PROJECT PHASE 1: HEALTHCARE APPLICATIONS","\n","^PROJECT PHASE 2: ENERGY GRID ICS","\n","^CONTACT: CIPHER FOR PRIEST APPROVAL","\n","^━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━","\n","^ANALYSIS:","\n",["^\"The Architect\" - ENTROPY leadership reference","\n",["^Phase 1: Healthcare applications (aligns with M2 attack)","\n",["^Phase 2: Energy grid ICS (future attack vector)","\n",["^\"Cipher\" = Victoria Sterling's ENTROPY codename","\n",["^\"Priest approval\" - pricing authorization process?","\n","^CRITICAL INTELLIGENCE:","\n","^Confirms multi-phase attack campaign coordinated by","\n","^\"The Architect\" with Victoria Sterling as operational lead.","\n","^Evidence logged. Objective updated.","\n","ev",true,"/ev",{"VAR=":"whiteboard_decoded","re":true},"#","^complete_task:decode_whiteboard","/#","ev","str","^Save evidence and return","/str","/ev",{"*":".^.c-0","flg":4},{"c-0":["\n","^Evidence saved to SAFETYNET database.","\n",{"->":"hub"},null],"#n":"g-4"}],{"#n":"g-3"}],{"#n":"g-2"}],{"#n":"g-1"}],{"#n":"g-0"}],null],null],"whiteboard_wrong_method":[["#","^speaker:computer","/#","^Applying alternative decoding...","\n","^ERROR: Output is garbled nonsense.","\n","^TIP: This appears to be a simple character substitution.","\n","^Try ROT13 - a common cipher that shifts letters 13 positions.","\n","ev","str","^Try ROT13 instead","/str","/ev",{"*":".^.c-0","flg":4},"ev","str","^Return to evidence selection","/str","/ev",{"*":".^.c-1","flg":4},{"c-0":["\n",{"->":"whiteboard_rot13_result"},null],"c-1":["\n",{"->":"hub"},null]}],null],"decode_client_roster":[["#","^speaker:computer","/#","^EVIDENCE: Client roster file (victoria_clients.hex)","\n","ev",{"VAR?":"client_roster_decoded"},"!","/ev",[{"->":".^.b","c":true},{"b":["\n","^PREREQUISITE: Access Victoria Sterling's executive computer","\n","^FILE LOCATION: Documents/victoria_clients.hex","\n","^Have you accessed Victoria's computer and retrieved this file?","\n",{"->":".^.^.^.10"},null]}],"nop","\n","ev","str","^File already decoded - view results","/str",{"VAR?":"client_roster_decoded"},"/ev",{"*":".^.c-0","flg":5},"ev","str","^Decode hex file","/str","/ev",{"*":".^.c-1","flg":4},"ev","str","^Return to evidence selection","/str","/ev",{"*":".^.c-2","flg":4},{"c-0":["\n",{"->":"client_roster_result"},null],"c-1":["\n",{"->":"decode_client_roster_hex"},null],"c-2":["\n",{"->":"hub"},null]}],null],"decode_client_roster_hex":[["#","^speaker:computer","/#","^INPUT (Raw hex):","\n","^━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━","\n","^5a 45 52 4f 20 44 41 59 20 53 59 4e 44 49 43 41","\n","^54 45 20 2d 20 43 4c 49 45 4e 54 20 52 4f 53 54","\n","^45 52 0a 51 33 20 32 30 32 34 0a 0a 43 6c 69 65","\n","^6e 74 20 49 44 3a 20 47 48 4f 53 54 0a 4f 72 67","\n","^61 6e 69 7a 61 74 69 6f 6e 3a 20 52 61 6e 73 6f","\n","^6d 77 61 72 65 20 49 6e 63 6f 72 70 6f 72 61 74","\n","^65 64 0a 50 75 72 63 68 61 73 65 73 3a 20 50 72","\n","^6f 46 54 50 44 20 65 78 70 6c 6f 69 74 20 28 24","\n","^31 32 2c 35 30 30 29 0a 44 65 70 6c 6f 79 6d 65","\n","^6e 74 3a 20 53 74 2e 20 43 61 74 68 65 72 69 6e","\n","^65 27 73 20 48 6f 73 70 69 74 61 6c 0a 0a 43 6c","\n","^69 65 6e 74 20 49 44 3a 20 53 4f 43 49 41 4c 5f","\n","^46 41 42 52 49 43 0a 50 75 72 63 68 61 73 65 73","\n","^3a 20 4d 75 6c 74 69 70 6c 65 20 65 78 70 6c 6f","\n","^69 74 73 0a 0a 43 6c 69 65 6e 74 20 49 44 3a 20","\n","^43 52 49 54 49 43 41 4c 5f 4d 41 53 53 0a","\n","^━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━","\n","^ENCODING DETECTED: Hexadecimal (ASCII hex values)","\n","^RECOMMENDATION: Apply \"From Hex\" operation","\n","ev","str","^Apply From Hex decoding","/str","/ev",{"*":".^.c-0","flg":4},{"c-0":["\n",{"->":"client_roster_result"},null]}],null],"client_roster_result":[["#","^speaker:computer","/#","^Applying \"From Hex\" operation...","\n","^OUTPUT (Decoded):","\n","^━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━","\n","^ZERO DAY SYNDICATE - CLIENT ROSTER","\n","^Q3 2024","\n","^Client ID: GHOST","\n","^Organization: Ransomware Incorporated","\n","^Purchases: ProFTPD exploit ($12,500)","\n","^Deployment: St. Catherine's Hospital","\n","^Client ID: SOCIAL_FABRIC","\n","^Purchases: Multiple exploits","\n","^Client ID: CRITICAL_MASS","\n","^Purchases: Infrastructure targeting exploits","\n","^Client ID: DARK_PATTERN","\n","^Purchases: [Data redacted]","\n","^TOTAL Q3 REVENUE: $847,000 (23 exploits)","\n","^━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━","\n","^ANALYSIS:","\n","^⚠ CRITICAL EVIDENCE ⚠","\n","^Direct confirmation of ENTROPY cross-cell collaboration:","\n",["^Ransomware Incorporated (GHOST) - M2 hospital buyer","\n",["^Social Fabric - Misinformation cell","\n",["^Critical Mass - Infrastructure targeting","\n",["^Dark Pattern - Unknown operations","\n","^$12,500 ProFTPD exploit explicitly linked to","\n","^St. Catherine's Hospital deployment.","\n","^This evidence proves:","\n","^1. Zero Day sold M2 hospital exploit","\n","^2. GHOST = Ransomware Incorporated","\n","^3. Multi-cell ENTROPY coordination","\n","^4. $847K quarterly revenue from exploit sales","\n","^PROSECUTION VALUE: Maximum. Smoking gun evidence.","\n","ev",true,"/ev",{"VAR=":"client_roster_decoded","re":true},"#","^complete_task:decode_client_roster","/#","ev","str","^Save evidence and return","/str","/ev",{"*":".^.c-0","flg":4},{"c-0":["\n","^Evidence saved. This is powerful prosecution material.","\n",{"->":"hub"},null],"#n":"g-3"}],{"#n":"g-2"}],{"#n":"g-1"}],{"#n":"g-0"}],null],null],"decode_usb_drive":[["#","^speaker:computer","/#","^EVIDENCE: Hidden USB drive (from executive office desk)","\n","ev",{"VAR?":"usb_drive_decoded_layer1"},"!","/ev",[{"->":".^.b","c":true},{"b":["\n","^PREREQUISITE: Find hidden USB drive in Victoria's desk","\n","^ENCODING DETECTED: Multi-layer encoding","\n","^WARNING: This will require multiple decoding operations","\n","^Have you found the USB drive?","\n",{"->":".^.^.^.10"},null]}],"nop","\n","ev",{"VAR?":"usb_drive_decoded_layer1"},{"VAR?":"usb_drive_decoded_layer2"},"!","&&","/ev",[{"->":".^.b","c":true},{"b":["\n","^LAYER 1 DECODING COMPLETE","\n","^The output from Base64 decoding is still encoded!","\n","^This is a nested encoding - you need to decode again.","\n",{"->":".^.^.^.19"},null]}],"nop","\n","ev",{"VAR?":"usb_drive_decoded_layer2"},"/ev",[{"->":".^.b","c":true},{"b":["\n","^USB drive fully decoded. View results?","\n",{"->":".^.^.^.25"},null]}],"nop","\n","ev","str","^Decode USB drive - Layer 1 (Base64)","/str",{"VAR?":"usb_drive_decoded_layer1"},"!","/ev",{"*":".^.c-0","flg":5},"ev","str","^Decode Layer 2 (ROT13)","/str",{"VAR?":"usb_drive_decoded_layer1"},{"VAR?":"usb_drive_decoded_layer2"},"!","&&","/ev",{"*":".^.c-1","flg":5},"ev","str","^View fully decoded message","/str",{"VAR?":"usb_drive_decoded_layer2"},"/ev",{"*":".^.c-2","flg":5},"ev","str","^Return to evidence selection","/str","/ev",{"*":".^.c-3","flg":4},{"c-0":["\n",{"->":"decode_usb_layer1"},null],"c-1":["\n",{"->":"decode_usb_layer2"},null],"c-2":["\n",{"->":"usb_final_result"},null],"c-3":["\n",{"->":"hub"},null]}],null],"decode_usb_layer1":[["#","^speaker:computer","/#","^USB DRIVE - LAYER 1 DECODING","\n","^INPUT (Raw Base64):","\n","^━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━","\n","^R2VhejogR3VyIE5lcHV2Z3JwZydmIEVldmpycnZpcnJmCgpQdW5n","\n","^YWUsIFJhbmdlcmUgcmtjYWJicmdncGEgY2V2YmV2Z3ZyZiBzYmU","\n","^gTTQ6CgoxLiBWQVNFTkZHSEhQR0hFUiBFS0NHQlZHRiAoUEVWQk","\n","^VWR0wpCiAgIFNicGgmZnYgYmEgbnJyZ3BuZXIgbnJwZ2JlIEZQTl","\n","^FOWSB2bGZ2cnpmCiAgIFJhcmV0bCB0ZXZjIFZQRiBpcGFhcmVv","\n","^YWF2Z3ZyZmdpcmYuCgoyLiBQRUJGRi1QUkxZWS BQQQJCRFBFUEV","\n","^HVkJBCiAgIENlYml2cXIgRWFuZmJ6emplciBWYXAgbmFnIGFiZmN","\n","^2Z25nIGJ5IGVSZ3lib250cmdnLgogICBGYnB2bm95IFNub295IGV","\n","^nZ3lib25nZyBlZWFmYnpudi5ndCBnYXJleWwgdmd2Y2dtcWdnLgo","\n","^KMy4gUEJFUlhHVkJBTlkgRlJQSGVWR0wKICAgSnV2dnJVbmcgRm","\n","^NwaGVWZ2cgc2ViYWcgenVmZyBlcm5hbnZhIHBiYWl2YXBycS4KI","\n","^CAgSXZwZ2JldnYgRmdyZXl2YXQgbmhyYnJ2bXJxIGdiIGVycGho","\n","^dnQgcWJoeXIgbmFyYWdmLgo=","\n","^━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━","\n","^Applying \"From Base64\" operation...","\n","^OUTPUT (Layer 1 decoded):","\n","^━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━","\n","^Geare: Gur Nepuvgrpg'f Qverpgvir","\n","^Pvcure, Shegure rkcybvgngvba cevbevgvrf sbe D4:","\n","^1. VASENFGEHPGHER RKCYBVGF (CEVBEVGL)","\n","^Sbphf ba urnyguner frpgbe FPNQN flfgrzf","\n","^Raretl tevq VPF ihyarenoyvgvrf.","\n","^2. PEBFF-PRYY PBBBEQVANGVBA","\n","^Cebivqr Enafsbjner Vap naq ubfcvgny gnetrgrq rkcybvgf.","\n","^Fbpvny Snoevp rkcybvgf enafsbjner raret vpneqf.","\n","^3. BCRENGVBANY FRPHEVGL","\n","^JuvgrUng Frpphevgl sebag zhfg erznva pbaivnaprq.","\n","^Ivpgbevn Fgreyvat nhgubevmrq gb erpehvg qbhoyr ntragf.","\n","^━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━","\n","^ANALYSIS:","\n","^Still encoded! The Base64 layer revealed another cipher.","\n","^PATTERN DETECTED: Character substitution (likely ROT13)","\n","^RECOMMENDATION: Apply ROT13 to this output","\n","ev",true,"/ev",{"VAR=":"usb_drive_decoded_layer1","re":true},"ev","str","^Continue to Layer 2 decoding","/str","/ev",{"*":".^.c-0","flg":4},{"c-0":["\n",{"->":"decode_usb_layer2"},null]}],null],"decode_usb_layer2":[["#","^speaker:computer","/#","^USB DRIVE - LAYER 2 DECODING","\n","^INPUT (From Layer 1):","\n","^━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━","\n","^Geare: Gur Nepuvgrpg'f Qverpgvir","\n","^Pvcure, Shegure rkcybvgngvba cevbevgvrf sbe D4:","\n","^1. VASENFGEHPGHER RKCYBVGF (CEVBEVGL)","\n","^Sbphf ba urnyguner frpgbe FPNQN flfgrzf","\n","^Raretl tevq VPF ihyarenoyvgvrf.","\n","^2. PEBFF-PRYY PBBBEQVANGVBA","\n","^Cebivqr Enafsbjner Vap naq ubfcvgny gnetrgrq rkcybvgf.","\n","^Fbpvny Snoevp rkcybvgf enafsbjner raret vpneqf.","\n","^3. BCRENGVBANY FRPHEVGL","\n","^JuvgrUng Frphevgl sebag zhfg erznva pbaivpaprq.","\n","^Ivpgbevn Fgreyvat nhgubevmrq gb erpehvg qbhoyr ntragf.","\n","^━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━","\n","^Applying \"ROT13\" operation...","\n","^OUTPUT (Fully decoded):","\n","^━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━","\n","^Title: The Architect's Directive","\n","^Cipher, Further exploitation priorities for Q4:","\n","^1. INFRASTRUCTURE EXPLOITS (PRIORITY)","\n","^Focus on healthcare sector SCADA systems","\n","^Energy grid ICS vulnerabilities.","\n","^2. CROSS-CELL COORDINATION","\n","^Provide Ransomware Inc and hospital targeted exploits.","\n","^Social Fabric exploits ransomware energy impacts.","\n","^3. OPERATIONAL SECURITY","\n","^WhiteHat Security front must remain convinced.","\n","^Victoria Sterling authorized to recruit double agents.","\n","^PHASE 2 TARGETS (Q4 2024 - Q1 2025):","\n","^Healthcare SCADA Systems:","\n",["^Hospital ventilation control (15 facilities identified)","\n",["^Patient monitoring networks (critical care units)","\n","^Energy Grid ICS:","\n",["^Substation automation (427 vulnerable units mapped)","\n","^PROJECTED IMPACT ANALYSIS:","\n",["^Healthcare disruption: 50,000+ patient treatment delays","\n",["^Energy disruption: 1.2M residential customers (winter)","\n",["^Combined chaos amplification factor: 3.7x","\n","^The Architect's Vision:","\n","^\"Each cell operates independently. But coordinated,","\n","^they become inevitable. Systems fail. Society fragments.","\n","^Entropy accelerates.\"","\n","^━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━","\n","ev",true,"/ev",{"VAR=":"usb_drive_decoded_layer2","re":true},{"->":"usb_final_result"},{"#n":"g-5"}],{"#n":"g-4"}],{"#n":"g-3"}],{"#n":"g-2"}],{"#n":"g-1"}],{"#n":"g-0"}],null],null],"usb_final_result":[["#","^speaker:computer","/#","^⚠⚠⚠ CRITICAL INTELLIGENCE - MAXIMUM PRIORITY ⚠⚠⚠","\n","^ANALYSIS:","\n","^━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━","\n","^This is a direct communication from \"The Architect\" -","\n","^ENTROPY's leadership figure.","\n","^KEY REVELATIONS:","\n","^1. PHASE 2 ATTACK PLANS","\n",["^15 healthcare facilities targeted (SCADA control)","\n",["^427 energy substations mapped for attack","\n",["^Q4 2024 - Q1 2025 timeline (IMMINENT)","\n","^2. PROJECTED CASUALTIES","\n",["^50,000+ patient treatment delays","\n",["^1.2 million customers without power (winter targeting)","\n",["^\"Chaos amplification factor\" - calculated mass harm","\n","^3. MULTI-CELL COORDINATION","\n",["^The Architect coordinates all ENTROPY cells","\n",["^Zero Day provides exploits","\n",["^Ransomware Inc deploys against hospitals","\n",["^Social Fabric amplifies panic/misinformation","\n",["^Synchronized multi-vector attack planned","\n","^4. VICTORIA STERLING'S AUTHORIZATION","\n",["^Authorized to recruit double agents","\n",["^Suggests infiltration of security/law enforcement","\n","^THREAT LEVEL: CRITICAL","\n","^RECOMMENDED ACTION: Immediate SAFETYNET response","\n","^Prevent Phase 2 deployment","\n","^Evidence logged. This is campaign-level intelligence.","\n","#","^complete_task:lore_fragment_3","/#","ev","str","^Save evidence immediately","/str","/ev",{"*":".^.c-0","flg":4},{"c-0":["\n","^This evidence forwarded to SAFETYNET Command.","\n","^Phase 2 attack prevention now highest priority.","\n",{"->":"hub"},null],"#n":"g-12"}],{"#n":"g-11"}],{"#n":"g-10"}],{"#n":"g-9"}],{"#n":"g-8"}],{"#n":"g-7"}],{"#n":"g-6"}],{"#n":"g-5"}],{"#n":"g-4"}],{"#n":"g-3"}],{"#n":"g-2"}],{"#n":"g-1"}],{"#n":"g-0"}],null],null],"reference_guide":[["#","^speaker:computer","/#","^╔═══════════════════════════════════════════╗","\n","^║ CYBERCHEF ENCODING REFERENCE GUIDE ║","\n","^╚═══════════════════════════════════════════╝","\n","^COMMON ENCODING TYPES:","\n","^1. BASE64","\n",["^Looks like: Alphanumeric + / and = symbols","\n",["^Example: SGVsbG8gV29ybGQ=","\n",["^Operation: \"From Base64\"","\n","^2. ROT13 (Caesar Cipher)","\n",["^Looks like: Readable but nonsensical English","\n",["^Example: URYYB JBEYQ → HELLO WORLD","\n",["^Operation: \"ROT13\" (13-character shift)","\n","^3. HEXADECIMAL","\n",["^Looks like: Two-digit hex values (0-9, A-F)","\n",["^Example: 48 65 6C 6C 6F","\n",["^Operation: \"From Hex\"","\n","^4. MULTI-LAYER ENCODING","\n",["^Text encoded multiple times","\n",["^Decode in reverse order of encoding","\n",["^Example: Base64(ROT13(text)) needs ROT13 first, then Base64","\n","^TIP: If decoded output still looks encoded, try another","\n","^operation on the result (multi-layer encoding).","\n","ev","str","^Return to decoding menu","/str","/ev",{"*":".^.c-0","flg":4},{"c-0":["\n",{"->":"hub"},null],"#n":"g-11"}],{"#n":"g-10"}],{"#n":"g-9"}],{"#n":"g-8"}],{"#n":"g-7"}],{"#n":"g-6"}],{"#n":"g-5"}],{"#n":"g-4"}],{"#n":"g-3"}],{"#n":"g-2"}],{"#n":"g-1"}],{"#n":"g-0"}],null],null],"global decl":["ev",false,{"VAR=":"whiteboard_decoded"},false,{"VAR=":"client_roster_decoded"},false,{"VAR=":"usb_drive_decoded_layer1"},false,{"VAR=":"usb_drive_decoded_layer2"},true,{"VAR=":"first_time_tutorial"},"/ev","end",null]}],"listDefs":{}} \ No newline at end of file diff --git a/scenarios/m03_ghost_in_the_machine/ink/m03_terminal_dropsite.json b/scenarios/m03_ghost_in_the_machine/ink/m03_terminal_dropsite.json new file mode 100644 index 0000000..2d80fba --- /dev/null +++ b/scenarios/m03_ghost_in_the_machine/ink/m03_terminal_dropsite.json @@ -0,0 +1 @@ +{"inkVersion":21,"root":[[["done",{"#n":"g-0"}],null],"done",{"start":["#","^speaker:computer","/#","^╔═══════════════════════════════════════════╗","\n","^║ SAFETYNET DROP-SITE TERMINAL v2.4.1 ║","\n","^║ Secure Intelligence Submission System ║","\n","^╚═══════════════════════════════════════════╝","\n","^Connection established: SAFETYNET Central","\n","^Agent ID: ","ev",{"x()":"player_name"},"out","/ev","\n","^Mission: M03 - Ghost in the Machine","\n","^Status: ACTIVE","\n","^Submit intercepted ENTROPY intelligence (VM flags) for analysis.","\n","^Flags submitted: ","ev",{"VAR?":"flags_submitted_count"},"out","/ev","^/4","\n",{"->":"hub"},null],"hub":[["ev","str","^Submit Flag: Network Scan","/str",{"VAR?":"flag_scan_network_submitted"},"!","/ev",{"*":".^.c-0","flg":5},"ev","str","^Submit Flag: FTP Banner","/str",{"VAR?":"flag_ftp_banner_submitted"},"!","/ev",{"*":".^.c-1","flg":5},"ev","str","^Submit Flag: HTTP Analysis","/str",{"VAR?":"flag_http_analysis_submitted"},"!","/ev",{"*":".^.c-2","flg":5},"ev","str","^Submit Flag: distcc Exploitation","/str",{"VAR?":"flag_distcc_exploit_submitted"},"!","/ev",{"*":".^.c-3","flg":5},"ev","str","^View submission history","/str","/ev",{"*":".^.c-4","flg":4},"ev","str","^Exit terminal","/str","/ev",{"*":".^.c-5","flg":4},{"c-0":["\n",{"->":"submit_scan_network"},null],"c-1":["\n",{"->":"submit_ftp_banner"},null],"c-2":["\n",{"->":"submit_http_analysis"},null],"c-3":["\n",{"->":"submit_distcc_exploit"},null],"c-4":["\n",{"->":"view_history"},null],"c-5":["\n","#","^exit_conversation","/#","done",null]}],null],"submit_scan_network":[["#","^speaker:computer","/#","^Enter intercepted intelligence flag:","\n","^[> flag{network_scan_complete}]","\n","^Processing...","\n","^✓ FLAG VERIFIED","\n","^✓ Intelligence authenticated","\n","^✓ Network reconnaissance data decoded","\n","^ANALYSIS REPORT:","\n","^━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━","\n","^Target Network: 192.168.100.0/24","\n","^Services Identified:","\n",["^FTP (vsftpd 2.3.4) on port 21","\n",["^HTTP (Apache 2.4.18) on port 80","\n",["^distcc daemon on port 3632","\n",["^SSH on port 22","\n","^Assessment: Zero Day training network confirmed active.","\n","^Multiple vulnerable services detected for client training.","\n","^SAFETYNET Intelligence: This network profile matches","\n","^ENTROPY operational training environments. Proceed with","\n","^service-level enumeration.","\n","^Unlocked: Banner grabbing and HTTP analysis objectives","\n","ev",true,"/ev",{"VAR=":"flag_scan_network_submitted","re":true},"ev",{"VAR?":"flags_submitted_count"},1,"+",{"VAR=":"flags_submitted_count","re":true},"/ev","#","^complete_task:scan_network","/#","#","^unlock_task:ftp_banner","/#","#","^unlock_task:http_analysis","/#","ev","str","^Continue","/str","/ev",{"*":".^.c-0","flg":4},{"c-0":["\n",{"->":"hub"},null],"#n":"g-3"}],{"#n":"g-2"}],{"#n":"g-1"}],{"#n":"g-0"}],null],null],"submit_ftp_banner":[["#","^speaker:computer","/#","^Enter intercepted intelligence flag:","\n","^[> flag{ftp_intel_gathered}]","\n","^Processing...","\n","^✓ FLAG VERIFIED","\n","^✓ FTP service banner decoded","\n","^✓ Client codename extracted","\n","^ANALYSIS REPORT:","\n","^━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━","\n","^Service: vsftpd 2.3.4 (Backdoor variant)","\n","^Banner: \"Welcome to GHOST training server\"","\n","^CRITICAL INTELLIGENCE:","\n","^Codename \"GHOST\" identified in FTP welcome banner.","\n","^Cross-reference: GHOST is known alias for Ransomware Inc","\n","^operations against healthcare infrastructure.","\n","^M2 HOSPITAL ATTACK CONNECTION:","\n","^St. Catherine's Regional Medical Center ransomware","\n","^deployment used \"GHOST\" signature in encrypted notes.","\n","^ASSESSMENT: Confirms Zero Day provided training/testing","\n","^environment for Ransomware Inc hospital attacks.","\n","ev",true,"/ev",{"VAR=":"flag_ftp_banner_submitted","re":true},"ev",{"VAR?":"flags_submitted_count"},1,"+",{"VAR=":"flags_submitted_count","re":true},"/ev","#","^complete_task:ftp_banner","/#","ev","str","^This proves the M2 connection...","/str","/ev",{"*":".^.c-0","flg":4},"ev","str","^Continue","/str","/ev",{"*":".^.c-1","flg":4},{"c-0":["\n","^You input: This confirms Zero Day trained the M2 attackers.","\n","^System response: Affirmative. Evidence chain strengthening.","\n","^Continue gathering intelligence.","\n",{"->":"hub"},null],"c-1":["\n",{"->":"hub"},null]}],null],"submit_http_analysis":[["#","^speaker:computer","/#","^Enter intercepted intelligence flag:","\n","^[> flag{pricing_intel_decoded}]","\n","^Processing...","\n","^✓ FLAG VERIFIED","\n","^✓ Base64-encoded pricing data decoded","\n","^✓ Commercial intelligence extracted","\n","^ANALYSIS REPORT:","\n","^━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━","\n","^HTTP Service: Apache 2.4.18","\n","^Hidden Data: Base64-encoded comment in HTML","\n","^DECODED PRICING STRUCTURE:","\n",[["^CVSS 9.0-10.0 (CRITICAL): $35,000 base","\n","^CVSS 7.0-8.9 (HIGH): $15,000-$20,000 base","\n","^CVSS 4.0-6.9 (MEDIUM): $6,000-$7,500 base","\n","^SECTOR PREMIUMS:","\n","^Healthcare: +30% (delayed incident response)","\n","^Energy/Infrastructure: +40% (regulatory scrutiny)","\n","^Finance: +25% (insurance budgets)","\n","^Education: +15% (limited resources)","\n",["^ASSESSMENT: Commercial exploit marketplace confirmed.","\n","^Pricing model optimized for targeting vulnerable sectors.","\n","^\"Healthcare premium\" explicitly references victims'","\n","^inability to respond quickly. Calculated exploitation","\n","^of defensive weaknesses.","\n","^RECOMMENDATION: Correlate with physical evidence of","\n","^exploit sales. Locate transaction records.","\n","ev",true,"/ev",{"VAR=":"flag_http_analysis_submitted","re":true},"ev",{"VAR?":"flags_submitted_count"},1,"+",{"VAR=":"flags_submitted_count","re":true},"/ev","#","^complete_task:http_analysis","/#",{"#n":"g-1"}],{"#n":"g-0"}],null],"ev","str","^They charge MORE to attack the vulnerable...","/str","/ev",{"*":".^.c-0","flg":4},"ev","str","^Continue","/str","/ev",{"*":".^.c-1","flg":4},{"c-0":["\n","^You input: Healthcare premium = profiting from victims' weakness","\n","^System response: Correct assessment. Evidence of calculated harm.","\n","^This strengthens prosecution case significantly.","\n",{"->":"hub"},null],"c-1":["\n",{"->":"hub"},null]}],null],"submit_distcc_exploit":[["#","^speaker:computer","/#","^Enter intercepted intelligence flag:","\n","^[> flag{distcc_legacy_compromised}]","\n","^Processing...","\n","^✓ FLAG VERIFIED","\n","^✓ distcc service exploitation successful","\n","^✓ Operational logs accessed","\n","^⚠ CRITICAL INTELLIGENCE ALERT ⚠","\n","^ANALYSIS REPORT:","\n","^━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━","\n","^Service: distcc daemon (CVE-2004-2687)","\n","^Exploitation: Remote code execution achieved","\n","^Access Level: Full system compromise","\n","^OPERATIONAL LOGS RECOVERED:","\n","^> Exploit deployment log (2024-05-15):","\n","^ProFTPD 1.3.5 backdoor CVE-2010-4652","\n","^CLIENT: GHOST (Ransomware Incorporated)","\n","^TARGET: St. Catherine's Regional Medical Center","\n","^PRICE: $12,500 ($9,615 base + $2,885 healthcare premium)","\n","^STATUS: Delivered","\n","^AUTHORIZATION: Victoria Sterling (Cipher)","\n","^ARCHITECT DIRECTIVE: Priority - Healthcare Phase 1","\n","^⚠ M2 HOSPITAL ATTACK - DIRECT EVIDENCE ⚠","\n","^This is the smoking gun. Zero Day Syndicate sold the","\n","^exact exploit used in the St. Catherine's attack that","\n","^killed 6 people in critical care.","\n","^Payment received. Exploit delivered. Attack executed.","\n","^ADDITIONAL INTELLIGENCE:","\n","^Reference to \"The Architect\" - likely ENTROPY leadership.","\n","^\"Healthcare Phase 1\" suggests coordinated multi-phase","\n","^attack campaign.","\n","^SPAWNING PHYSICAL EVIDENCE:","\n","^Check executive office for operational logs document.","\n","^May contain Phase 2 targeting information.","\n","ev",true,"/ev",{"VAR=":"flag_distcc_exploit_submitted","re":true},"ev",{"VAR?":"flags_submitted_count"},1,"+",{"VAR=":"flags_submitted_count","re":true},"/ev","#","^complete_task:distcc_exploit","/#","#","^unlock_task:find_operational_logs","/#","ev","str","^We have them. We can prove everything.","/str","/ev",{"*":".^.c-0","flg":4},"ev","str","^Continue","/str","/ev",{"*":".^.c-1","flg":4},{"c-0":["\n","^You input: This proves causation. Zero Day → GHOST → St. Catherine's.","\n","^System response: Affirmative. Evidence chain complete.","\n","^6 fatalities directly attributable to Zero Day sales.","\n","^Federal prosecution viable with this evidence.","\n",{"->":"m2_revelation_event"},null],"c-1":["\n",{"->":"m2_revelation_event"},null]}],null],"m2_revelation_event":["#","^speaker:computer","/#","^TRIGGERING EVENT: M2_REVELATION","\n","^Connecting to Agent 0x99...","\n","^[Terminal displays: INCOMING SECURE CALL]","\n","#","^trigger_event:m2_revelation_call","/#","^The terminal remains active for further submissions.","\n",{"->":"hub"},null],"view_history":[["#","^speaker:computer","/#","^╔══════════════════════════════════════════╗","\n","^║ SUBMISSION HISTORY LOG ║","\n","^╚══════════════════════════════════════════╝","\n","^Flags submitted: ","ev",{"VAR?":"flags_submitted_count"},"out","/ev","^/4","\n","ev",{"VAR?":"flag_scan_network_submitted"},"/ev",[{"->":".^.b","c":true},{"b":["\n","^[✓ FLAG 1: Network Scan (192.168.100.0/24)]","\n","^[Status: Verified -Services enumerated]","\n",{"->":".^.^.^.20"},null]}],"nop","\n","ev",{"VAR?":"flag_ftp_banner_submitted"},"/ev",[{"->":".^.b","c":true},{"b":["\n","^[✓ FLAG 2: FTP Banner (GHOST codename)]","\n","^[Status: Verified -M2 connection identified]","\n",{"->":".^.^.^.26"},null]}],"nop","\n","ev",{"VAR?":"flag_http_analysis_submitted"},"/ev",[{"->":".^.b","c":true},{"b":["\n","^[✓ FLAG 3: HTTP Pricing Data]","\n","^[Status: Verified -Exploit pricing model decoded]","\n",{"->":".^.^.^.32"},null]}],"nop","\n","ev",{"VAR?":"flag_distcc_exploit_submitted"},"/ev",[{"->":".^.b","c":true},{"b":["\n","^[✓ FLAG 4: distcc Exploitation (CRITICAL)]","\n","^[Status: Verified -Operational logs recovered]","\n","^[⚠ M2 smoking gun evidence confirmed]","\n",{"->":".^.^.^.38"},null]}],"nop","\n","ev",{"VAR?":"flags_submitted_count"},4,"==","/ev",[{"->":".^.b","c":true},{"b":["\n","^═══════════════════════════════════════════","\n","^ALL FLAGS SUBMITTED - MISSION CRITICAL","\n","^Evidence package complete for prosecution.","\n","^═══════════════════════════════════════════","\n",{"->":".^.^.^.46"},null]}],"nop","\n","ev","str","^Return to main menu","/str","/ev",{"*":".^.c-0","flg":4},{"c-0":["\n",{"->":"hub"},null]}],null],"global decl":["ev",false,{"VAR=":"flag_scan_network_submitted"},false,{"VAR=":"flag_ftp_banner_submitted"},false,{"VAR=":"flag_http_analysis_submitted"},false,{"VAR=":"flag_distcc_exploit_submitted"},0,{"VAR=":"flags_submitted_count"},"/ev","end",null]}],"listDefs":{}} \ No newline at end of file