From 5b05cfb85856318fc05bc792eafc82723ae753b5 Mon Sep 17 00:00:00 2001 From: Claude Date: Fri, 9 Jan 2026 18:10:35 +0000 Subject: [PATCH] Complete Mission 6 implementation: Follow the Money Implemented complete scenario for Mission 6 "Follow the Money" investigating ENTROPY's Crypto Anarchists cell at HashChain Exchange. Scenario changes (scenario.json.erb): - Fixed room connections (data_center -> executive_wing -> satoshi_office) - Added progression items: RFID cloner, executive badge, Elena's CTO badge - Fixed server room password lock (requires "bitcoin2024") - Complete objectives system (5 aims, 18 tasks) - VM integration: Hackme and Crack Me lab with 4 flags - Critical evidence documents: blockchain analysis, Architect's Fund allocation - All rooms populated with contextual objects and NPCs Dialogue scripts (7 Ink files, compiled to JSON): 1. m06_opening_briefing.ink - Mission briefing covering financial investigation 2. m06_phone_agent_0x99.ink - Handler support with event reactions 3. m06_closing_debrief.ink - Mission debrief reflecting player choices 4. m06_npc_elena_volkov.ink - Recruitable CTO with moral conflict arc 5. m06_npc_trader.ink - Innocent trader providing context 6. m06_npc_analyst.ink - Blockchain analyst with concerns 7. m06_satoshi_confrontation.ink - Final confrontation with critical choices Key narrative elements: - Elena Volkov recruitment path (cryptographer with moral conflict) - Critical choice: Seize $12.8M assets vs. monitor transactions - The Architect's Fund revelation (coordinated attack funding) - Dr. Adrian Tesseract identity hint (former SAFETYNET strategist) - Complete ENTROPY financial network mapping - 180-340 projected casualties from coordinated operations Validation: All schema checks passing, 7 Ink scripts compiled successfully --- .../ink/m06_closing_debrief.ink | 462 +++++++++++++++ .../ink/m06_closing_debrief.json | 1 + .../ink/m06_npc_analyst.ink | 402 +++++++++++++ .../ink/m06_npc_analyst.json | 1 + .../ink/m06_npc_elena_volkov.ink | 510 +++++++++++++++++ .../ink/m06_npc_elena_volkov.json | 1 + .../ink/m06_npc_trader.ink | 278 +++++++++ .../ink/m06_npc_trader.json | 1 + .../ink/m06_opening_briefing.ink | 329 +++++++++++ .../ink/m06_opening_briefing.json | 1 + .../ink/m06_phone_agent_0x99.ink | 372 ++++++++++++ .../ink/m06_phone_agent_0x99.json | 1 + .../ink/m06_satoshi_confrontation.ink | 536 ++++++++++++++++++ .../ink/m06_satoshi_confrontation.json | 1 + .../m06_follow_the_money/scenario.json.erb | 29 +- 15 files changed, 2918 insertions(+), 7 deletions(-) create mode 100644 scenarios/m06_follow_the_money/ink/m06_closing_debrief.ink create mode 100644 scenarios/m06_follow_the_money/ink/m06_closing_debrief.json create mode 100644 scenarios/m06_follow_the_money/ink/m06_npc_analyst.ink create mode 100644 scenarios/m06_follow_the_money/ink/m06_npc_analyst.json create mode 100644 scenarios/m06_follow_the_money/ink/m06_npc_elena_volkov.ink create mode 100644 scenarios/m06_follow_the_money/ink/m06_npc_elena_volkov.json create mode 100644 scenarios/m06_follow_the_money/ink/m06_npc_trader.ink create mode 100644 scenarios/m06_follow_the_money/ink/m06_npc_trader.json create mode 100644 scenarios/m06_follow_the_money/ink/m06_opening_briefing.ink create mode 100644 scenarios/m06_follow_the_money/ink/m06_opening_briefing.json create mode 100644 scenarios/m06_follow_the_money/ink/m06_phone_agent_0x99.ink create mode 100644 scenarios/m06_follow_the_money/ink/m06_phone_agent_0x99.json create mode 100644 scenarios/m06_follow_the_money/ink/m06_satoshi_confrontation.ink create mode 100644 scenarios/m06_follow_the_money/ink/m06_satoshi_confrontation.json diff --git a/scenarios/m06_follow_the_money/ink/m06_closing_debrief.ink b/scenarios/m06_follow_the_money/ink/m06_closing_debrief.ink new file mode 100644 index 0000000..82ce25b --- /dev/null +++ b/scenarios/m06_follow_the_money/ink/m06_closing_debrief.ink @@ -0,0 +1,462 @@ +// ================================================ +// Mission 6: Follow the Money - Closing Debrief +// Mission Complete - Financial Network Mapped +// Choices: Elena recruitment, asset seizure/monitoring +// ================================================ + +// Variables from gameplay +VAR player_name = "Agent 0x00" +VAR final_choice = "" +VAR objectives_completed = 0 +VAR lore_collected = 0 +VAR found_blockchain_evidence = false +VAR found_architects_fund = false +VAR elena_recruited = false +VAR elena_arrested = false +VAR assets_seized = false +VAR monitoring_enabled = false +VAR flag1_submitted = false +VAR flag2_submitted = false +VAR flag3_submitted = false +VAR flag4_submitted = false + +// ================================================ +// START: DEBRIEF BEGINS +// ================================================ + +=== start === +#speaker:agent_0x99 + +Agent 0x99: {player_name}, return to HQ for debrief. + +Agent 0x99: The financial investigation is complete. We need to discuss what you found. + ++ [On my way] + -> debrief_location + +// ================================================ +// DEBRIEF LOCATION +// ================================================ + +=== debrief_location === +[SAFETYNET HQ - Agent 0x99's Office] + +#speaker:agent_0x99 + +Agent 0x99: {player_name}. What you accomplished at HashChain Exchange is going to reverberate through the entire ENTROPY network. + +Agent 0x99: We've been fighting individual cells. You just mapped their entire financial infrastructure. + ++ [The Architect's Fund changes everything] + -> architects_fund_discussion ++ [How significant is this intelligence?] + -> strategic_impact + +// ================================================ +// STRATEGIC IMPACT +// ================================================ + +=== strategic_impact === +Agent 0x99: Extremely significant. We now know: + +Agent 0x99: Every ENTROPY cell is financially connected through HashChain's mixing infrastructure. + +Agent 0x99: The Architect coordinates funding to all cells simultaneously through a master fund. + +Agent 0x99: And a major coordinated attack was planned for 72 hours from when you recovered that document. + ++ [Was planned? Past tense?] + -> operation_disrupted ++ [Tell me about The Architect's Fund] + -> architects_fund_discussion + +=== operation_disrupted === +Agent 0x99: Your choices disrupted the timeline. + +{assets_seized: + Agent 0x99: You seized $12.8 million in cryptocurrency. ENTROPY cells expecting funding got nothing. + Agent 0x99: Coordinated operations require coordinated funding. You broke the synchronization. +- else: + Agent 0x99: You enabled monitoring of The Architect's Fund. Intelligence is tracking every wallet receiving funds. + Agent 0x99: We know which cells are getting money, when, and how much. That's actionable intelligence. +} + +-> architects_fund_discussion + +// ================================================ +// ARCHITECT'S FUND DISCUSSION +// ================================================ + +=== architects_fund_discussion === +{found_architects_fund: + Agent 0x99: The Architect's Fund allocation document you recovered—$12.8M distributed to six cells. + Agent 0x99: Critical Mass, Social Fabric, Zero Day Syndicate, Digital Vanguard, Ghost Protocol, Supply Chain Saboteurs. + -> fund_implications +- else: + Agent 0x99: The blockchain evidence alone is valuable, but without The Architect's Fund allocation, we're missing critical context. + -> evidence_review +} + +=== fund_implications === +Agent 0x99: 180-340 projected casualties across all coordinated operations. + +Agent 0x99: They calculated death tolls, {player_name}. Planned for them. Called it "The Architect's Masterpiece." + ++ [How can anyone be that cold?] + -> ideology_discussion ++ [What happens to the cells now?] + -> cell_disruption + +=== ideology_discussion === +Agent 0x99: Accelerationism. They believe the current system is doomed to collapse. + +Agent 0x99: The Architect thinks causing chaos speeds up the inevitable. "Teaching harsh lessons" that will save more lives in the long run. + +Agent 0x99: It's not coldness. It's ideology taken to its horrifying logical extreme. + +-> cell_disruption + +=== cell_disruption === +{assets_seized: + Agent 0x99: With funding cut, cells are scrambling. Some operations are already cancelled. + Agent 0x99: Short-term impact is massive. But we lose long-term intelligence. +- else: + Agent 0x99: With monitoring enabled, we're tracking fund distribution in real-time. + Agent 0x99: Every cell receiving money is mapped. We're building prosecutorial cases against multiple networks. + Agent 0x99: Long-term strategic value is enormous. But cells continue operating in the short term. +} + +-> elena_discussion + +// ================================================ +// ELENA VOLKOV DISCUSSION +// ================================================ + +=== elena_discussion === +Agent 0x99: Now let's talk about Dr. Elena Volkov. + +{elena_recruited: + -> elena_recruited_path +} +{elena_arrested: + -> elena_arrested_path +} +{not elena_recruited && not elena_arrested: + -> elena_neutral_path +} + +=== elena_recruited_path === +Agent 0x99: You recruited her. That was... unexpected. And brilliant. + +Agent 0x99: Elena is cooperating fully. Her knowledge of ENTROPY's cryptographic infrastructure is extraordinary. + ++ [Was it the right call?] + -> recruitment_validation ++ [She was morally conflicted. I gave her an out.] + -> moral_reasoning + +=== recruitment_validation === +Agent 0x99: Absolutely. A cryptographer of her caliber is worth more as an asset than a prisoner. + +Agent 0x99: She's already provided intelligence on Crypto Anarchist cells in three countries. + +Agent 0x99: And {player_name}—she's teaching our analysts. Her expertise is leveling up our entire cryptography division. + +-> recruitment_impact + +=== moral_reasoning === +Agent 0x99: You read her correctly. She built that infrastructure for "financial freedom." + +Agent 0x99: When she saw the casualty projections, the coordinated attacks, The Architect's plans... it broke something. + +Agent 0x99: She's not a terrorist. She's a brilliant person who got swept up in ideology and didn't look at the consequences. + +-> recruitment_impact + +=== recruitment_impact === +Agent 0x99: The intelligence she's providing is dismantling Crypto Anarchist cells globally. + +Agent 0x99: And she's documenting her work—academic papers on cryptocurrency forensics, training materials for law enforcement. + +Agent 0x99: You didn't just recruit an asset. You flipped an ideology. + ++ [What about Satoshi Nakamoto II?] + -> satoshi_aftermath ++ [I'm glad it worked out] + -> password_cracking_discussion + +=== elena_arrested_path === +Agent 0x99: You arrested Elena Volkov. Clean, professional, by the book. + +Agent 0x99: She's facing 20-35 years for money laundering, conspiracy, and facilitating terrorist financing. + ++ [She knew what she was enabling] + -> arrest_justification ++ [Was recruitment possible?] + -> missed_opportunity + +=== arrest_justification === +Agent 0x99: She did. $12.8 million funneled through her infrastructure to fund attacks with 180-340 projected casualties. + +Agent 0x99: Moral conflict doesn't erase culpability. She built the systems. She knew they were being abused. + +-> arrest_impact + +=== missed_opportunity === +Agent 0x99: Possibly. Our psychological profile suggested she was conflicted about ENTROPY's use of her work. + +Agent 0x99: But recruitment is high-risk. If it fails, you've compromised the operation. + +Agent 0x99: You made the safe call. Can't fault that. + +-> arrest_impact + +=== arrest_impact === +Agent 0x99: With Elena arrested, Crypto Anarchist cells are losing technical expertise. + +Agent 0x99: They'll replace her eventually, but it'll take time. That's operational disruption we can exploit. + ++ [What about Satoshi Nakamoto II?] + -> satoshi_aftermath ++ [What happens next?] + -> password_cracking_discussion + +=== elena_neutral_path === +Agent 0x99: Elena wasn't arrested or recruited. Interesting. + +Agent 0x99: She's under surveillance now. We're monitoring her communications, tracking her movements. + +Agent 0x99: Long-term intelligence gathering. Sometimes that's the right play. + +-> password_cracking_discussion + +// ================================================ +// SATOSHI AFTERMATH +// ================================================ + +=== satoshi_aftermath === +Agent 0x99: "Satoshi Nakamoto II" was arrested trying to flee the country. + +Agent 0x99: True believer to the end. Ranted about "financial freedom" during booking. + +Agent 0x99: HashChain Exchange is seized. Their mixing infrastructure is shut down. + +Agent 0x99: ENTROPY cells are scrambling to find alternative money laundering channels. That's a major operational disruption. + +-> password_cracking_discussion + +// ================================================ +// PASSWORD CRACKING & VM WORK +// ================================================ + +=== password_cracking_discussion === +Agent 0x99: Let's talk about the technical work. Password cracking against their backend servers. + +{flag1_submitted && flag2_submitted && flag3_submitted && flag4_submitted: + -> all_flags_complete +} +{flag1_submitted: + -> partial_flags +} +{not flag1_submitted: + -> minimal_flags +} + +=== all_flags_complete === +Agent 0x99: All four flags submitted. Complete network penetration. + +Agent 0x99: You cracked passwords, exploited credential reuse, accessed the financial database, and mapped the entire infrastructure. + +Agent 0x99: Textbook password cracking methodology. That's the kind of technical work that gets operations promoted. + +-> evidence_review + +=== partial_flags === +Agent 0x99: You submitted some flags but not all. Partial server access. + +Agent 0x99: Our forensics team is recovering the rest, but you got the critical systems. + +Agent 0x99: Next time, push for complete access. Every flag is intelligence. + +-> evidence_review + +=== minimal_flags === +Agent 0x99: No VM flags submitted. The financial intelligence came from physical documents rather than server access. + +Agent 0x99: That works, but server access would have given us more—wallet private keys, complete transaction histories, encrypted communications. + +Agent 0x99: Consider prioritizing technical exploitation in future missions. + +-> evidence_review + +// ================================================ +// EVIDENCE REVIEW +// ================================================ + +=== evidence_review === +{found_blockchain_evidence && found_architects_fund: + -> evidence_complete +} +{found_blockchain_evidence && not found_architects_fund: + -> evidence_partial_blockchain +} +{not found_blockchain_evidence && found_architects_fund: + -> evidence_partial_fund +} +{not found_blockchain_evidence && not found_architects_fund: + -> evidence_minimal +} + +=== evidence_complete === +Agent 0x99: You recovered both critical documents: the ENTROPY transaction network analysis and The Architect's Fund allocation. + +Agent 0x99: Complete financial mapping. Every cell, every wallet, every transaction, and the coordinated attack plan. + +Agent 0x99: This is prosecutor-grade evidence. Multiple ENTROPY cells will face financial crime charges. + +-> lore_discussion + +=== evidence_partial_blockchain === +Agent 0x99: You found the blockchain transaction analysis—all ENTROPY cells connected financially. + +Agent 0x99: Without The Architect's Fund allocation, we're missing the coordinated attack details, but the financial network map is solid intelligence. + +-> lore_discussion + +=== evidence_partial_fund === +Agent 0x99: You found The Architect's Fund allocation—the coordinated attack funding plan. + +Agent 0x99: Without the blockchain transaction analysis, we're missing some cell connections, but the allocation document is smoking-gun evidence. + +-> lore_discussion + +=== evidence_minimal === +Agent 0x99: Limited document recovery. Forensics is pulling data from seized servers. + +Agent 0x99: The operation succeeded, but prioritize evidence collection in future missions. Physical documents are harder to dispute in court. + +-> lore_discussion + +// ================================================ +// LORE FRAGMENTS +// ================================================ + +=== lore_discussion === +{lore_collected >= 3: + -> significant_lore +} +{lore_collected >= 1: + -> some_lore +} +{lore_collected == 0: + -> minimal_lore +} + +=== significant_lore === +Agent 0x99: You collected significant LORE fragments. Crypto Anarchist ideology, their role in ENTROPY, connections to The Architect. + +Agent 0x99: And that file you found in Satoshi's safe—The Architect's identity intelligence. + +Agent 0x99: Dr. Adrian Tesseract. Former SAFETYNET chief strategist. Defected seven years ago. + ++ [The Architect is former SAFETYNET?] + -> tesseract_revelation ++ [That's horrifying] + -> tesseract_revelation + +=== tesseract_revelation === +Agent 0x99: 87% probability according to the file. Not confirmed, but... it fits. + +Agent 0x99: Tesseract was brilliant. Mentored half the agents currently in the field. Strategic genius. + +Agent 0x99: Then he disappeared after a philosophical disagreement. Believed the cybersecurity arms race would accelerate societal collapse. + ++ [He's trying to cause what he predicted] + -> accelerationism_discussion ++ [Do you know him?] + -> personal_connection + +=== accelerationism_discussion === +Agent 0x99: Accelerationism. If collapse is inevitable, speed it up. Make it happen on controlled terms. + +Agent 0x99: Tesseract thinks ENTROPY's attacks are "teaching harsh lessons" that will ultimately save more lives. + +Agent 0x99: It's monstrous. But it's not random violence. It's ideology taken to its logical, horrifying extreme. + +-> mission_conclusion + +=== personal_connection === +Agent 0x99: ...I was one of his students. + +Agent 0x99: Best strategic mind I've ever encountered. Taught me half of what I know about intelligence work. + +Agent 0x99: If it's really him... {player_name}, this got personal. + +-> mission_conclusion + +=== some_lore === +Agent 0x99: You collected some LORE fragments. Good situational awareness. + +Agent 0x99: Understanding ENTROPY's ideology helps predict their behavior. Keep gathering context in future missions. + +-> mission_conclusion + +=== minimal_lore === +Agent 0x99: Limited LORE collection. You focused on operational objectives. + +Agent 0x99: That works, but context helps predict enemy behavior. Consider exploring more in future missions. + +-> mission_conclusion + +// ================================================ +// MISSION CONCLUSION +// ================================================ + +=== mission_conclusion === +Agent 0x99: {player_name}, you just changed the entire campaign against ENTROPY. + +{assets_seized: + Agent 0x99: $12.8 million seized. Coordinated operations disrupted. Immediate strategic impact. +- else: + Agent 0x99: Fund monitoring enabled. Complete financial network mapped. Long-term strategic intelligence. +} + +{elena_recruited: + Agent 0x99: Elena Volkov recruited. Cryptographic expertise added to SAFETYNET capabilities. +} + +{found_blockchain_evidence && found_architects_fund: + Agent 0x99: Complete financial evidence recovered. Multiple prosecutorial cases enabled. +} + +Agent 0x99: This is the kind of mission that gets studied in training programs. + +-> final_assessment + +// ================================================ +// FINAL ASSESSMENT +// ================================================ + +=== final_assessment === +Agent 0x99: We're moving into the endgame now. + +Agent 0x99: We know The Architect exists. We know they're coordinating all ENTROPY cells. We have a probable identity. + +Agent 0x99: And thanks to your work, we understand their financial infrastructure. + ++ [What's next?] + -> next_mission_hint ++ [This is just the beginning] + -> next_mission_hint + +=== next_mission_hint === +Agent 0x99: More ENTROPY cells. More pieces of The Architect's plan. + +Agent 0x99: Every mission gets us closer to the truth. And closer to stopping whatever "Masterpiece" they're planning. + +Agent 0x99: Get some rest, {player_name}. You've earned it. + +Agent 0x99: SAFETYNET will call when we need you again. + +#exit_conversation +-> END diff --git a/scenarios/m06_follow_the_money/ink/m06_closing_debrief.json b/scenarios/m06_follow_the_money/ink/m06_closing_debrief.json new file mode 100644 index 0000000..f21e783 --- /dev/null +++ b/scenarios/m06_follow_the_money/ink/m06_closing_debrief.json @@ -0,0 +1 @@ +{"inkVersion":21,"root":[[["done",{"#n":"g-0"}],null],"done",{"start":[["#","^speaker:agent_0x99","/#","^Agent 0x99: ","ev",{"VAR?":"player_name"},"out","/ev","^, return to HQ for debrief.","\n","^Agent 0x99: The financial investigation is complete. We need to discuss what you found.","\n","ev","str","^On my way","/str","/ev",{"*":".^.c-0","flg":4},{"c-0":["\n",{"->":"debrief_location"},null]}],null],"debrief_location":[["^[SAFETYNET HQ - Agent 0x99's Office]","\n","#","^speaker:agent_0x99","/#","^Agent 0x99: ","ev",{"VAR?":"player_name"},"out","/ev","^. What you accomplished at HashChain Exchange is going to reverberate through the entire ENTROPY network.","\n","^Agent 0x99: We've been fighting individual cells. You just mapped their entire financial infrastructure.","\n","ev","str","^The Architect's Fund changes everything","/str","/ev",{"*":".^.c-0","flg":4},"ev","str","^How significant is this intelligence?","/str","/ev",{"*":".^.c-1","flg":4},{"c-0":["\n",{"->":"architects_fund_discussion"},null],"c-1":["\n",{"->":"strategic_impact"},null]}],null],"strategic_impact":[["^Agent 0x99: Extremely significant. We now know:","\n","^Agent 0x99: Every ENTROPY cell is financially connected through HashChain's mixing infrastructure.","\n","^Agent 0x99: The Architect coordinates funding to all cells simultaneously through a master fund.","\n","^Agent 0x99: And a major coordinated attack was planned for 72 hours from when you recovered that document.","\n","ev","str","^Was planned? Past tense?","/str","/ev",{"*":".^.c-0","flg":4},"ev","str","^Tell me about The Architect's Fund","/str","/ev",{"*":".^.c-1","flg":4},{"c-0":["\n",{"->":"operation_disrupted"},null],"c-1":["\n",{"->":"architects_fund_discussion"},null]}],null],"operation_disrupted":["^Agent 0x99: Your choices disrupted the timeline.","\n","ev",{"VAR?":"assets_seized"},"/ev",[{"->":".^.b","c":true},{"b":["\n","^Agent 0x99: You seized $12.8 million in cryptocurrency. ENTROPY cells expecting funding got nothing.","\n","^Agent 0x99: Coordinated operations require coordinated funding. You broke the synchronization.","\n",{"->":".^.^.^.7"},null]}],[{"->":".^.b"},{"b":["\n","^Agent 0x99: You enabled monitoring of The Architect's Fund. Intelligence is tracking every wallet receiving funds.","\n","^Agent 0x99: We know which cells are getting money, when, and how much. That's actionable intelligence.","\n",{"->":".^.^.^.7"},null]}],"nop","\n",{"->":"architects_fund_discussion"},null],"architects_fund_discussion":["ev",{"VAR?":"found_architects_fund"},"/ev",[{"->":".^.b","c":true},{"b":["\n","^Agent 0x99: The Architect's Fund allocation document you recovered—$12.8M distributed to six cells.","\n","^Agent 0x99: Critical Mass, Social Fabric, Zero Day Syndicate, Digital Vanguard, Ghost Protocol, Supply Chain Saboteurs.","\n",{"->":"fund_implications"},{"->":".^.^.^.5"},null]}],[{"->":".^.b"},{"b":["\n","^Agent 0x99: The blockchain evidence alone is valuable, but without The Architect's Fund allocation, we're missing critical context.","\n",{"->":"evidence_review"},{"->":".^.^.^.5"},null]}],"nop","\n",null],"fund_implications":[["^Agent 0x99: 180-340 projected casualties across all coordinated operations.","\n","^Agent 0x99: They calculated death tolls, ","ev",{"VAR?":"player_name"},"out","/ev","^. Planned for them. Called it \"The Architect's Masterpiece.\"","\n","ev","str","^How can anyone be that cold?","/str","/ev",{"*":".^.c-0","flg":4},"ev","str","^What happens to the cells now?","/str","/ev",{"*":".^.c-1","flg":4},{"c-0":["\n",{"->":"ideology_discussion"},null],"c-1":["\n",{"->":"cell_disruption"},null]}],null],"ideology_discussion":["^Agent 0x99: Accelerationism. They believe the current system is doomed to collapse.","\n","^Agent 0x99: The Architect thinks causing chaos speeds up the inevitable. \"Teaching harsh lessons\" that will save more lives in the long run.","\n","^Agent 0x99: It's not coldness. It's ideology taken to its horrifying logical extreme.","\n",{"->":"cell_disruption"},null],"cell_disruption":["ev",{"VAR?":"assets_seized"},"/ev",[{"->":".^.b","c":true},{"b":["\n","^Agent 0x99: With funding cut, cells are scrambling. Some operations are already cancelled.","\n","^Agent 0x99: Short-term impact is massive. But we lose long-term intelligence.","\n",{"->":".^.^.^.5"},null]}],[{"->":".^.b"},{"b":["\n","^Agent 0x99: With monitoring enabled, we're tracking fund distribution in real-time.","\n","^Agent 0x99: Every cell receiving money is mapped. We're building prosecutorial cases against multiple networks.","\n","^Agent 0x99: Long-term strategic value is enormous. But cells continue operating in the short term.","\n",{"->":".^.^.^.5"},null]}],"nop","\n",{"->":"elena_discussion"},null],"elena_discussion":["^Agent 0x99: Now let's talk about Dr. Elena Volkov.","\n","ev",{"VAR?":"elena_recruited"},"/ev",[{"->":".^.b","c":true},{"b":["\n",{"->":"elena_recruited_path"},{"->":".^.^.^.6"},null]}],"nop","\n","ev",{"VAR?":"elena_arrested"},"/ev",[{"->":".^.b","c":true},{"b":["\n",{"->":"elena_arrested_path"},{"->":".^.^.^.12"},null]}],"nop","\n","ev",{"VAR?":"elena_recruited"},"!",{"VAR?":"elena_arrested"},"!","&&","/ev",[{"->":".^.b","c":true},{"b":["\n",{"->":"elena_neutral_path"},{"->":".^.^.^.22"},null]}],"nop","\n",null],"elena_recruited_path":[["^Agent 0x99: You recruited her. That was... unexpected. And brilliant.","\n","^Agent 0x99: Elena is cooperating fully. Her knowledge of ENTROPY's cryptographic infrastructure is extraordinary.","\n","ev","str","^Was it the right call?","/str","/ev",{"*":".^.c-0","flg":4},"ev","str","^She was morally conflicted. I gave her an out.","/str","/ev",{"*":".^.c-1","flg":4},{"c-0":["\n",{"->":"recruitment_validation"},null],"c-1":["\n",{"->":"moral_reasoning"},null]}],null],"recruitment_validation":["^Agent 0x99: Absolutely. A cryptographer of her caliber is worth more as an asset than a prisoner.","\n","^Agent 0x99: She's already provided intelligence on Crypto Anarchist cells in three countries.","\n","^Agent 0x99: And ","ev",{"VAR?":"player_name"},"out","/ev","^—she's teaching our analysts. Her expertise is leveling up our entire cryptography division.","\n",{"->":"recruitment_impact"},null],"moral_reasoning":["^Agent 0x99: You read her correctly. She built that infrastructure for \"financial freedom.\"","\n","^Agent 0x99: When she saw the casualty projections, the coordinated attacks, The Architect's plans... it broke something.","\n","^Agent 0x99: She's not a terrorist. She's a brilliant person who got swept up in ideology and didn't look at the consequences.","\n",{"->":"recruitment_impact"},null],"recruitment_impact":[["^Agent 0x99: The intelligence she's providing is dismantling Crypto Anarchist cells globally.","\n","^Agent 0x99: And she's documenting her work—academic papers on cryptocurrency forensics, training materials for law enforcement.","\n","^Agent 0x99: You didn't just recruit an asset. You flipped an ideology.","\n","ev","str","^What about Satoshi Nakamoto II?","/str","/ev",{"*":".^.c-0","flg":4},"ev","str","^I'm glad it worked out","/str","/ev",{"*":".^.c-1","flg":4},{"c-0":["\n",{"->":"satoshi_aftermath"},null],"c-1":["\n",{"->":"password_cracking_discussion"},null]}],null],"elena_arrested_path":[["^Agent 0x99: You arrested Elena Volkov. Clean, professional, by the book.","\n","^Agent 0x99: She's facing 20-35 years for money laundering, conspiracy, and facilitating terrorist financing.","\n","ev","str","^She knew what she was enabling","/str","/ev",{"*":".^.c-0","flg":4},"ev","str","^Was recruitment possible?","/str","/ev",{"*":".^.c-1","flg":4},{"c-0":["\n",{"->":"arrest_justification"},null],"c-1":["\n",{"->":"missed_opportunity"},null]}],null],"arrest_justification":["^Agent 0x99: She did. $12.8 million funneled through her infrastructure to fund attacks with 180-340 projected casualties.","\n","^Agent 0x99: Moral conflict doesn't erase culpability. She built the systems. She knew they were being abused.","\n",{"->":"arrest_impact"},null],"missed_opportunity":["^Agent 0x99: Possibly. Our psychological profile suggested she was conflicted about ENTROPY's use of her work.","\n","^Agent 0x99: But recruitment is high-risk. If it fails, you've compromised the operation.","\n","^Agent 0x99: You made the safe call. Can't fault that.","\n",{"->":"arrest_impact"},null],"arrest_impact":[["^Agent 0x99: With Elena arrested, Crypto Anarchist cells are losing technical expertise.","\n","^Agent 0x99: They'll replace her eventually, but it'll take time. That's operational disruption we can exploit.","\n","ev","str","^What about Satoshi Nakamoto II?","/str","/ev",{"*":".^.c-0","flg":4},"ev","str","^What happens next?","/str","/ev",{"*":".^.c-1","flg":4},{"c-0":["\n",{"->":"satoshi_aftermath"},null],"c-1":["\n",{"->":"password_cracking_discussion"},null]}],null],"elena_neutral_path":["^Agent 0x99: Elena wasn't arrested or recruited. Interesting.","\n","^Agent 0x99: She's under surveillance now. We're monitoring her communications, tracking her movements.","\n","^Agent 0x99: Long-term intelligence gathering. Sometimes that's the right play.","\n",{"->":"password_cracking_discussion"},null],"satoshi_aftermath":["^Agent 0x99: \"Satoshi Nakamoto II\" was arrested trying to flee the country.","\n","^Agent 0x99: True believer to the end. Ranted about \"financial freedom\" during booking.","\n","^Agent 0x99: HashChain Exchange is seized. Their mixing infrastructure is shut down.","\n","^Agent 0x99: ENTROPY cells are scrambling to find alternative money laundering channels. That's a major operational disruption.","\n",{"->":"password_cracking_discussion"},null],"password_cracking_discussion":["^Agent 0x99: Let's talk about the technical work. Password cracking against their backend servers.","\n","ev",{"VAR?":"flag1_submitted"},{"VAR?":"flag2_submitted"},"&&",{"VAR?":"flag3_submitted"},"&&",{"VAR?":"flag4_submitted"},"&&","/ev",[{"->":".^.b","c":true},{"b":["\n",{"->":"all_flags_complete"},{"->":".^.^.^.12"},null]}],"nop","\n","ev",{"VAR?":"flag1_submitted"},"/ev",[{"->":".^.b","c":true},{"b":["\n",{"->":"partial_flags"},{"->":".^.^.^.18"},null]}],"nop","\n","ev",{"VAR?":"flag1_submitted"},"!","/ev",[{"->":".^.b","c":true},{"b":["\n",{"->":"minimal_flags"},{"->":".^.^.^.25"},null]}],"nop","\n",null],"all_flags_complete":["^Agent 0x99: All four flags submitted. Complete network penetration.","\n","^Agent 0x99: You cracked passwords, exploited credential reuse, accessed the financial database, and mapped the entire infrastructure.","\n","^Agent 0x99: Textbook password cracking methodology. That's the kind of technical work that gets operations promoted.","\n",{"->":"evidence_review"},null],"partial_flags":["^Agent 0x99: You submitted some flags but not all. Partial server access.","\n","^Agent 0x99: Our forensics team is recovering the rest, but you got the critical systems.","\n","^Agent 0x99: Next time, push for complete access. Every flag is intelligence.","\n",{"->":"evidence_review"},null],"minimal_flags":["^Agent 0x99: No VM flags submitted. The financial intelligence came from physical documents rather than server access.","\n","^Agent 0x99: That works, but server access would have given us more—wallet private keys, complete transaction histories, encrypted communications.","\n","^Agent 0x99: Consider prioritizing technical exploitation in future missions.","\n",{"->":"evidence_review"},null],"evidence_review":["ev",{"VAR?":"found_blockchain_evidence"},{"VAR?":"found_architects_fund"},"&&","/ev",[{"->":".^.b","c":true},{"b":["\n",{"->":"evidence_complete"},{"->":".^.^.^.6"},null]}],"nop","\n","ev",{"VAR?":"found_blockchain_evidence"},{"VAR?":"found_architects_fund"},"!","&&","/ev",[{"->":".^.b","c":true},{"b":["\n",{"->":"evidence_partial_blockchain"},{"->":".^.^.^.15"},null]}],"nop","\n","ev",{"VAR?":"found_blockchain_evidence"},"!",{"VAR?":"found_architects_fund"},"&&","/ev",[{"->":".^.b","c":true},{"b":["\n",{"->":"evidence_partial_fund"},{"->":".^.^.^.24"},null]}],"nop","\n","ev",{"VAR?":"found_blockchain_evidence"},"!",{"VAR?":"found_architects_fund"},"!","&&","/ev",[{"->":".^.b","c":true},{"b":["\n",{"->":"evidence_minimal"},{"->":".^.^.^.34"},null]}],"nop","\n",null],"evidence_complete":["^Agent 0x99: You recovered both critical documents: the ENTROPY transaction network analysis and The Architect's Fund allocation.","\n","^Agent 0x99: Complete financial mapping. Every cell, every wallet, every transaction, and the coordinated attack plan.","\n","^Agent 0x99: This is prosecutor-grade evidence. Multiple ENTROPY cells will face financial crime charges.","\n",{"->":"lore_discussion"},null],"evidence_partial_blockchain":["^Agent 0x99: You found the blockchain transaction analysis—all ENTROPY cells connected financially.","\n","^Agent 0x99: Without The Architect's Fund allocation, we're missing the coordinated attack details, but the financial network map is solid intelligence.","\n",{"->":"lore_discussion"},null],"evidence_partial_fund":["^Agent 0x99: You found The Architect's Fund allocation—the coordinated attack funding plan.","\n","^Agent 0x99: Without the blockchain transaction analysis, we're missing some cell connections, but the allocation document is smoking-gun evidence.","\n",{"->":"lore_discussion"},null],"evidence_minimal":["^Agent 0x99: Limited document recovery. Forensics is pulling data from seized servers.","\n","^Agent 0x99: The operation succeeded, but prioritize evidence collection in future missions. Physical documents are harder to dispute in court.","\n",{"->":"lore_discussion"},null],"lore_discussion":["ev",{"VAR?":"lore_collected"},3,">=","/ev",[{"->":".^.b","c":true},{"b":["\n",{"->":"significant_lore"},{"->":".^.^.^.6"},null]}],"nop","\n","ev",{"VAR?":"lore_collected"},1,">=","/ev",[{"->":".^.b","c":true},{"b":["\n",{"->":"some_lore"},{"->":".^.^.^.14"},null]}],"nop","\n","ev",{"VAR?":"lore_collected"},0,"==","/ev",[{"->":".^.b","c":true},{"b":["\n",{"->":"minimal_lore"},{"->":".^.^.^.22"},null]}],"nop","\n",null],"significant_lore":[["^Agent 0x99: You collected significant LORE fragments. Crypto Anarchist ideology, their role in ENTROPY, connections to The Architect.","\n","^Agent 0x99: And that file you found in Satoshi's safe—The Architect's identity intelligence.","\n","^Agent 0x99: Dr. Adrian Tesseract. Former SAFETYNET chief strategist. Defected seven years ago.","\n","ev","str","^The Architect is former SAFETYNET?","/str","/ev",{"*":".^.c-0","flg":4},"ev","str","^That's horrifying","/str","/ev",{"*":".^.c-1","flg":4},{"c-0":["\n",{"->":"tesseract_revelation"},null],"c-1":["\n",{"->":"tesseract_revelation"},null]}],null],"tesseract_revelation":[["^Agent 0x99: 87% probability according to the file. Not confirmed, but... it fits.","\n","^Agent 0x99: Tesseract was brilliant. Mentored half the agents currently in the field. Strategic genius.","\n","^Agent 0x99: Then he disappeared after a philosophical disagreement. Believed the cybersecurity arms race would accelerate societal collapse.","\n","ev","str","^He's trying to cause what he predicted","/str","/ev",{"*":".^.c-0","flg":4},"ev","str","^Do you know him?","/str","/ev",{"*":".^.c-1","flg":4},{"c-0":["\n",{"->":"accelerationism_discussion"},null],"c-1":["\n",{"->":"personal_connection"},null]}],null],"accelerationism_discussion":["^Agent 0x99: Accelerationism. If collapse is inevitable, speed it up. Make it happen on controlled terms.","\n","^Agent 0x99: Tesseract thinks ENTROPY's attacks are \"teaching harsh lessons\" that will ultimately save more lives.","\n","^Agent 0x99: It's monstrous. But it's not random violence. It's ideology taken to its logical, horrifying extreme.","\n",{"->":"mission_conclusion"},null],"personal_connection":["^Agent 0x99: ...I was one of his students.","\n","^Agent 0x99: Best strategic mind I've ever encountered. Taught me half of what I know about intelligence work.","\n","^Agent 0x99: If it's really him... ","ev",{"VAR?":"player_name"},"out","/ev","^, this got personal.","\n",{"->":"mission_conclusion"},null],"some_lore":["^Agent 0x99: You collected some LORE fragments. Good situational awareness.","\n","^Agent 0x99: Understanding ENTROPY's ideology helps predict their behavior. Keep gathering context in future missions.","\n",{"->":"mission_conclusion"},null],"minimal_lore":["^Agent 0x99: Limited LORE collection. You focused on operational objectives.","\n","^Agent 0x99: That works, but context helps predict enemy behavior. Consider exploring more in future missions.","\n",{"->":"mission_conclusion"},null],"mission_conclusion":["^Agent 0x99: ","ev",{"VAR?":"player_name"},"out","/ev","^, you just changed the entire campaign against ENTROPY.","\n","ev",{"VAR?":"assets_seized"},"/ev",[{"->":".^.b","c":true},{"b":["\n","^Agent 0x99: $12.8 million seized. Coordinated operations disrupted. Immediate strategic impact.","\n",{"->":".^.^.^.12"},null]}],[{"->":".^.b"},{"b":["\n","^Agent 0x99: Fund monitoring enabled. Complete financial network mapped. Long-term strategic intelligence.","\n",{"->":".^.^.^.12"},null]}],"nop","\n","ev",{"VAR?":"elena_recruited"},"/ev",[{"->":".^.b","c":true},{"b":["\n","^Agent 0x99: Elena Volkov recruited. Cryptographic expertise added to SAFETYNET capabilities.","\n",{"->":".^.^.^.18"},null]}],"nop","\n","ev",{"VAR?":"found_blockchain_evidence"},{"VAR?":"found_architects_fund"},"&&","/ev",[{"->":".^.b","c":true},{"b":["\n","^Agent 0x99: Complete financial evidence recovered. Multiple prosecutorial cases enabled.","\n",{"->":".^.^.^.26"},null]}],"nop","\n","^Agent 0x99: This is the kind of mission that gets studied in training programs.","\n",{"->":"final_assessment"},null],"final_assessment":[["^Agent 0x99: We're moving into the endgame now.","\n","^Agent 0x99: We know The Architect exists. We know they're coordinating all ENTROPY cells. We have a probable identity.","\n","^Agent 0x99: And thanks to your work, we understand their financial infrastructure.","\n","ev","str","^What's next?","/str","/ev",{"*":".^.c-0","flg":4},"ev","str","^This is just the beginning","/str","/ev",{"*":".^.c-1","flg":4},{"c-0":["\n",{"->":"next_mission_hint"},null],"c-1":["\n",{"->":"next_mission_hint"},null]}],null],"next_mission_hint":["^Agent 0x99: More ENTROPY cells. More pieces of The Architect's plan.","\n","^Agent 0x99: Every mission gets us closer to the truth. And closer to stopping whatever \"Masterpiece\" they're planning.","\n","^Agent 0x99: Get some rest, ","ev",{"VAR?":"player_name"},"out","/ev","^. You've earned it.","\n","^Agent 0x99: SAFETYNET will call when we need you again.","\n","#","^exit_conversation","/#","end",null],"global decl":["ev","str","^Agent 0x00","/str",{"VAR=":"player_name"},"str","^","/str",{"VAR=":"final_choice"},0,{"VAR=":"objectives_completed"},0,{"VAR=":"lore_collected"},false,{"VAR=":"found_blockchain_evidence"},false,{"VAR=":"found_architects_fund"},false,{"VAR=":"elena_recruited"},false,{"VAR=":"elena_arrested"},false,{"VAR=":"assets_seized"},false,{"VAR=":"monitoring_enabled"},false,{"VAR=":"flag1_submitted"},false,{"VAR=":"flag2_submitted"},false,{"VAR=":"flag3_submitted"},false,{"VAR=":"flag4_submitted"},"/ev","end",null]}],"listDefs":{}} \ No newline at end of file diff --git a/scenarios/m06_follow_the_money/ink/m06_npc_analyst.ink b/scenarios/m06_follow_the_money/ink/m06_npc_analyst.ink new file mode 100644 index 0000000..710711c --- /dev/null +++ b/scenarios/m06_follow_the_money/ink/m06_npc_analyst.ink @@ -0,0 +1,402 @@ +// =========================================== +// Mission 6: NPC - Blockchain Analyst +// Technical expert, innocent employee +// =========================================== + +VAR analyst_talked = false +VAR topic_forensics = false +VAR topic_patterns = false +VAR topic_concerns = false +VAR first_meeting = true + +// External variables +VAR player_name = "Agent 0x00" + +// =========================================== +// INITIAL MEETING +// =========================================== + +=== start === +#speaker:analyst + +{first_meeting: + ~ first_meeting = false + #display:analyst-focused + + A focused analyst examines transaction graphs on a large monitor, nodes and edges forming complex networks. + + Analyst: *doesn't look up* If you're here about the flagged transactions, talk to Elena. + + Analyst: I just run the analysis. She makes the compliance decisions. + + + [I'm from FinCEN. Just observing your process.] + You: Impressive analysis setup. + Analyst: *glances up* Oh. Compliance audit. Right. + -> audit_response + + + [What transactions are you analyzing?] + -> transaction_work + + + [I'll talk to Elena then] + #exit_conversation + Analyst: *already back to screens* Okay. + -> DONE +} + +{not first_meeting: + #display:analyst-neutral + Analyst: Need something? + -> hub +} + +=== audit_response === +#speaker:analyst + +Analyst: Thanks. I built most of this myself. Transaction graph analysis, wallet clustering algorithms. + +Analyst: We track patterns that might indicate money laundering or sanctions violations. + ++ [Do you find many violations?] + -> violations_discussion + ++ [Tell me about your methodology] + -> methodology_discussion + +=== transaction_work === +#speaker:analyst + +Analyst: Current project: mapping large-volume mixing patterns through our exchange. + +Analyst: Multiple wallets converting to Monero simultaneously, similar amounts, coordinated timing. + ++ [Is that suspicious?] + -> suspicious_patterns + ++ [What do the patterns show?] + -> suspicious_patterns + +// =========================================== +// CONVERSATION HUB +// =========================================== + +=== hub === + ++ {not topic_forensics} [Ask about blockchain forensics] + -> forensics_discussion + ++ {not topic_patterns} [Ask about concerning patterns] + -> pattern_concerns + ++ {not topic_concerns} [Ask if analyst has concerns about the exchange] + -> personal_concerns + ++ [Thanks for your time] + #exit_conversation + #speaker:analyst + Analyst: *already back to work* Uh-huh. + -> DONE + +// =========================================== +// FORENSICS DISCUSSION +// =========================================== + +=== forensics_discussion === +#speaker:analyst +~ topic_forensics = true + +Analyst: Blockchain forensics is fascinating. Every transaction is public, but attribution is hard. + +Analyst: You track wallet behaviors, cluster related addresses, analyze timing patterns. + +Analyst: Like digital detective work. Follow the money across thousands of transactions. + ++ [Can you trace privacy coins like Monero?] + -> monero_forensics + ++ [What patterns indicate illegal activity?] + -> illegal_patterns + +=== monero_forensics === +#speaker:analyst + +Analyst: Not really. Monero uses ring signatures and stealth addresses. Transactions are genuinely untraceable. + +Analyst: That's why exchanges like ours are critical choke points. We see the conversion: Bitcoin in, Monero mix, Bitcoin out. + +Analyst: Blockchain doesn't show the middle step, but our internal logs do. + ++ [So you can map what the blockchain can't?] + -> internal_logs_value + ++ [That makes your logs valuable] + -> internal_logs_value + +=== internal_logs_value === +#speaker:analyst + +Analyst: Exactly. Our internal database is way more valuable than the public blockchain for forensics. + +Analyst: Which is why Elena's so careful about access. If someone gets our logs, they can unmix transactions we've processed. + +Analyst: Privacy customers would not be happy about that. + +-> hub + +=== illegal_patterns === +#speaker:analyst + +Analyst: High-volume mixing with no clear business purpose. Coordinated multi-wallet behaviors. + +Analyst: Amounts just under reporting thresholds—structuring. Rapid conversions avoiding single-transaction limits. + +Analyst: And timing patterns. If multiple unrelated wallets mix simultaneously with similar amounts? Coordinated operation. + +-> hub + +// =========================================== +// VIOLATIONS DISCUSSION +// =========================================== + +=== violations_discussion === +#speaker:analyst + +Analyst: We file SARs—Suspicious Activity Reports—pretty regularly. + +Analyst: High-value privacy coin mixing attracts... a certain clientele. + +Analyst: But most of it's legal. People have a right to financial privacy. + +-> methodology_discussion + +=== methodology_discussion === +#speaker:analyst + +Analyst: I run transaction graph analysis—map all connected wallets, identify clusters. + +Analyst: Then timing analysis—look for coordinated behaviors. + +Analyst: Finally, amount analysis—large conversions, unusual patterns. + +Analyst: Flag anything suspicious to Elena. She decides whether to file SARs or investigate deeper. + +-> hub + +// =========================================== +// SUSPICIOUS PATTERNS +// =========================================== + +=== suspicious_patterns === +#speaker:analyst + +Analyst: *frowns* Yeah. Very. + +Analyst: Multiple large wallets. Coordinated conversions. Consistent timing every Friday night. + +Analyst: Amounts totaling... *checks screen* ...about $12-13 million over the past month. + ++ [Where's the money going?] + -> destination_discussion + ++ [Have you reported this?] + -> reporting_status + +=== destination_discussion === +#speaker:analyst + +Analyst: That's the weird part. After mixing, it all reconverges to a single destination wallet. + +Analyst: Different source wallets, different mixing paths, same destination. + +Analyst: Either someone's consolidating funds from multiple sources, or... + ++ [Or what?] + -> coordinated_funding + ++ [Did you flag this to Elena?] + -> elena_flagging + +=== coordinated_funding === +#speaker:analyst + +Analyst: Or it's coordinated funding for something. Multiple cells paying into a central operation. + +Analyst: That's... that's the kind of pattern you see with organized crime or terrorism. + +Analyst: I really hope Elena knows what she's doing with this investigation. + +-> hub + +=== elena_flagging === +#speaker:analyst + +Analyst: Yeah, like two weeks ago. She's been analyzing it personally. + +Analyst: Hasn't told me her conclusions yet. Just said to keep monitoring. + ++ [Does she seem concerned?] + -> elena_concern + ++ [What's your read on it?] + -> analyst_opinion + +=== elena_concern === +#speaker:analyst + +Analyst: Hard to tell. Elena's always intense. + +Analyst: But yeah, she's been stressed. Stays late, re-runs my analyses, asks detailed questions. + +Analyst: Either she's being thorough, or something's really bothering her. + +-> hub + +=== analyst_opinion === +#speaker:analyst + +Analyst: *uncomfortable* Honestly? It looks bad. + +Analyst: Coordinated mixing, consistent timing, large amounts, single destination... + +Analyst: If I saw this pattern at any other exchange, I'd assume criminal network funding. + +Analyst: But Satoshi says we're a legitimate business. Elena vouches for our compliance. + +Analyst: So I'm trying not to jump to conclusions. + +-> hub + +=== reporting_status === +#speaker:analyst + +Analyst: Flagged to Elena. She's investigating. + +Analyst: She hasn't filed an external SAR yet, which means either it's legitimate activity or she's gathering more evidence. + +Analyst: I trust her judgment. She's way smarter than me. + +-> hub + +// =========================================== +// PATTERN CONCERNS +// =========================================== + +=== pattern_concerns === +#speaker:analyst +~ topic_patterns = true + +Analyst: *pulls up a graph* Look at this. Five different source wallets. + +Analyst: They convert to Monero on the same schedule. Mix through our infrastructure. Reconverge to one destination. + +Analyst: Pattern repeats weekly. Like clockwork. + ++ [What do you think it means?] + -> pattern_interpretation + ++ [Can you identify the source wallets?] + -> source_identification + +=== pattern_interpretation === +#speaker:analyst + +Analyst: My guess? Coordinated fundraising. Multiple revenue streams feeding a central operation. + +Analyst: Could be legit—distributed business with centralized accounting. + +Analyst: Could be money laundering—criminal network consolidating funds. + +Analyst: Without knowing who controls the wallets, it's hard to say. + +-> hub + +=== source_identification === +#speaker:analyst + +Analyst: Not from blockchain alone. Monero anonymization is really good. + +Analyst: Our internal logs have more info, but Elena restricts access. + +Analyst: I can see the patterns. She can see the actual wallet addresses and transaction details. + +-> hub + +// =========================================== +// PERSONAL CONCERNS +// =========================================== + +=== personal_concerns === +#speaker:analyst +~ topic_concerns = true + +Analyst: *pauses work* You want my honest opinion? + +Analyst: I love blockchain forensics. I love privacy technology. I believe in what we're supposed to be doing. + ++ [But?] + -> but_response + ++ [What are you worried about?] + -> worry_response + +=== but_response === +#speaker:analyst + +Analyst: But some of these patterns scare me. + +Analyst: I'm analyzing transactions that might be funding... I don't know. Terrorism? Organized crime? + +Analyst: And I tell myself it's not my job to judge. I'm just the analyst. Elena makes the decisions. + +Analyst: But that feels like an excuse. + +-> moral_conflict + +=== worry_response === +#speaker:analyst + +Analyst: That we're not just providing privacy. We're providing cover. + +Analyst: That our ideals about financial freedom are being exploited by people who... aren't idealists. + +-> moral_conflict + +=== moral_conflict === +#speaker:analyst + +Analyst: *looks at you* That's why you're here, isn't it? FinCEN doesn't audit mid-size exchanges unless something's flagged. + +Analyst: Someone thinks we're dirty. + ++ [I can't comment on ongoing investigations] + -> professional_response + ++ [Do you think the exchange is being used illegally?] + -> direct_question + +=== professional_response === +#speaker:analyst + +Analyst: *laughs bitterly* Right. Professional. + +Analyst: Well, when your investigation concludes, I hope you tell me whether I've been helping criminals. + +Analyst: I'd like to know if my work has been... meaningful. Or just enabling. + +#exit_conversation +-> DONE + +=== direct_question === +#speaker:analyst + +Analyst: *long pause* + +Analyst: I think some of our customers are using our privacy infrastructure for things that would horrify me if I knew the details. + +Analyst: I think Elena knows more than she's telling me. + +Analyst: And I think Satoshi cares more about ideology than consequences. + +Analyst: So yeah. Probably. + +#exit_conversation +-> DONE diff --git a/scenarios/m06_follow_the_money/ink/m06_npc_analyst.json b/scenarios/m06_follow_the_money/ink/m06_npc_analyst.json new file mode 100644 index 0000000..be334d8 --- /dev/null +++ b/scenarios/m06_follow_the_money/ink/m06_npc_analyst.json @@ -0,0 +1 @@ +{"inkVersion":21,"root":[[["done",{"#n":"g-0"}],null],"done",{"start":["#","^speaker:analyst","/#","ev",{"VAR?":"first_meeting"},"/ev",[{"->":".^.b","c":true},{"b":["\n","ev",false,"/ev",{"VAR=":"first_meeting","re":true},"#","^display:analyst-focused","/#","^A focused analyst examines transaction graphs on a large monitor, nodes and edges forming complex networks.","\n","^Analyst: *doesn't look up* If you're here about the flagged transactions, talk to Elena.","\n","^Analyst: I just run the analysis. She makes the compliance decisions.","\n","ev","str","^I'm from FinCEN. Just observing your process.","/str","/ev",{"*":".^.c-0","flg":4},"ev","str","^What transactions are you analyzing?","/str","/ev",{"*":".^.c-1","flg":4},"ev","str","^I'll talk to Elena then","/str","/ev",{"*":".^.c-2","flg":4},{"->":"start.7"},{"c-0":["\n","^You: Impressive analysis setup.","\n","^Analyst: *glances up* Oh. Compliance audit. Right.","\n",{"->":"audit_response"},null],"c-1":["\n",{"->":"transaction_work"},null],"c-2":["\n","#","^exit_conversation","/#","^Analyst: *already back to screens* Okay.","\n","done",null]}]}],"nop","\n","ev",{"VAR?":"first_meeting"},"!","/ev",[{"->":".^.b","c":true},{"b":["\n","#","^display:analyst-neutral","/#","^Analyst: Need something?","\n",{"->":"hub"},{"->":"start.14"},null]}],"nop","\n",null],"audit_response":[["#","^speaker:analyst","/#","^Analyst: Thanks. I built most of this myself. Transaction graph analysis, wallet clustering algorithms.","\n","^Analyst: We track patterns that might indicate money laundering or sanctions violations.","\n","ev","str","^Do you find many violations?","/str","/ev",{"*":".^.c-0","flg":4},"ev","str","^Tell me about your methodology","/str","/ev",{"*":".^.c-1","flg":4},{"c-0":["\n",{"->":"violations_discussion"},null],"c-1":["\n",{"->":"methodology_discussion"},null]}],null],"transaction_work":[["#","^speaker:analyst","/#","^Analyst: Current project: mapping large-volume mixing patterns through our exchange.","\n","^Analyst: Multiple wallets converting to Monero simultaneously, similar amounts, coordinated timing.","\n","ev","str","^Is that suspicious?","/str","/ev",{"*":".^.c-0","flg":4},"ev","str","^What do the patterns show?","/str","/ev",{"*":".^.c-1","flg":4},{"c-0":["\n",{"->":"suspicious_patterns"},null],"c-1":["\n",{"->":"suspicious_patterns"},null]}],null],"hub":[["ev","str","^Ask about blockchain forensics","/str",{"VAR?":"topic_forensics"},"!","/ev",{"*":".^.c-0","flg":5},"ev","str","^Ask about concerning patterns","/str",{"VAR?":"topic_patterns"},"!","/ev",{"*":".^.c-1","flg":5},"ev","str","^Ask if analyst has concerns about the exchange","/str",{"VAR?":"topic_concerns"},"!","/ev",{"*":".^.c-2","flg":5},"ev","str","^Thanks for your time","/str","/ev",{"*":".^.c-3","flg":4},{"c-0":["\n",{"->":"forensics_discussion"},null],"c-1":["\n",{"->":"pattern_concerns"},null],"c-2":["\n",{"->":"personal_concerns"},null],"c-3":["\n","#","^exit_conversation","/#","#","^speaker:analyst","/#","^Analyst: *already back to work* Uh-huh.","\n","done",null]}],null],"forensics_discussion":[["#","^speaker:analyst","/#","ev",true,"/ev",{"VAR=":"topic_forensics","re":true},"^Analyst: Blockchain forensics is fascinating. Every transaction is public, but attribution is hard.","\n","^Analyst: You track wallet behaviors, cluster related addresses, analyze timing patterns.","\n","^Analyst: Like digital detective work. Follow the money across thousands of transactions.","\n","ev","str","^Can you trace privacy coins like Monero?","/str","/ev",{"*":".^.c-0","flg":4},"ev","str","^What patterns indicate illegal activity?","/str","/ev",{"*":".^.c-1","flg":4},{"c-0":["\n",{"->":"monero_forensics"},null],"c-1":["\n",{"->":"illegal_patterns"},null]}],null],"monero_forensics":[["#","^speaker:analyst","/#","^Analyst: Not really. Monero uses ring signatures and stealth addresses. Transactions are genuinely untraceable.","\n","^Analyst: That's why exchanges like ours are critical choke points. We see the conversion: Bitcoin in, Monero mix, Bitcoin out.","\n","^Analyst: Blockchain doesn't show the middle step, but our internal logs do.","\n","ev","str","^So you can map what the blockchain can't?","/str","/ev",{"*":".^.c-0","flg":4},"ev","str","^That makes your logs valuable","/str","/ev",{"*":".^.c-1","flg":4},{"c-0":["\n",{"->":"internal_logs_value"},null],"c-1":["\n",{"->":"internal_logs_value"},null]}],null],"internal_logs_value":["#","^speaker:analyst","/#","^Analyst: Exactly. Our internal database is way more valuable than the public blockchain for forensics.","\n","^Analyst: Which is why Elena's so careful about access. If someone gets our logs, they can unmix transactions we've processed.","\n","^Analyst: Privacy customers would not be happy about that.","\n",{"->":"hub"},null],"illegal_patterns":["#","^speaker:analyst","/#","^Analyst: High-volume mixing with no clear business purpose. Coordinated multi-wallet behaviors.","\n","^Analyst: Amounts just under reporting thresholds—structuring. Rapid conversions avoiding single-transaction limits.","\n","^Analyst: And timing patterns. If multiple unrelated wallets mix simultaneously with similar amounts? Coordinated operation.","\n",{"->":"hub"},null],"violations_discussion":["#","^speaker:analyst","/#","^Analyst: We file SARs—Suspicious Activity Reports—pretty regularly.","\n","^Analyst: High-value privacy coin mixing attracts... a certain clientele.","\n","^Analyst: But most of it's legal. People have a right to financial privacy.","\n",{"->":"methodology_discussion"},null],"methodology_discussion":["#","^speaker:analyst","/#","^Analyst: I run transaction graph analysis—map all connected wallets, identify clusters.","\n","^Analyst: Then timing analysis—look for coordinated behaviors.","\n","^Analyst: Finally, amount analysis—large conversions, unusual patterns.","\n","^Analyst: Flag anything suspicious to Elena. She decides whether to file SARs or investigate deeper.","\n",{"->":"hub"},null],"suspicious_patterns":[["#","^speaker:analyst","/#","^Analyst: *frowns* Yeah. Very.","\n","^Analyst: Multiple large wallets. Coordinated conversions. Consistent timing every Friday night.","\n","^Analyst: Amounts totaling... *checks screen* ...about $12-13 million over the past month.","\n","ev","str","^Where's the money going?","/str","/ev",{"*":".^.c-0","flg":4},"ev","str","^Have you reported this?","/str","/ev",{"*":".^.c-1","flg":4},{"c-0":["\n",{"->":"destination_discussion"},null],"c-1":["\n",{"->":"reporting_status"},null]}],null],"destination_discussion":[["#","^speaker:analyst","/#","^Analyst: That's the weird part. After mixing, it all reconverges to a single destination wallet.","\n","^Analyst: Different source wallets, different mixing paths, same destination.","\n","^Analyst: Either someone's consolidating funds from multiple sources, or...","\n","ev","str","^Or what?","/str","/ev",{"*":".^.c-0","flg":4},"ev","str","^Did you flag this to Elena?","/str","/ev",{"*":".^.c-1","flg":4},{"c-0":["\n",{"->":"coordinated_funding"},null],"c-1":["\n",{"->":"elena_flagging"},null]}],null],"coordinated_funding":["#","^speaker:analyst","/#","^Analyst: Or it's coordinated funding for something. Multiple cells paying into a central operation.","\n","^Analyst: That's... that's the kind of pattern you see with organized crime or terrorism.","\n","^Analyst: I really hope Elena knows what she's doing with this investigation.","\n",{"->":"hub"},null],"elena_flagging":[["#","^speaker:analyst","/#","^Analyst: Yeah, like two weeks ago. She's been analyzing it personally.","\n","^Analyst: Hasn't told me her conclusions yet. Just said to keep monitoring.","\n","ev","str","^Does she seem concerned?","/str","/ev",{"*":".^.c-0","flg":4},"ev","str","^What's your read on it?","/str","/ev",{"*":".^.c-1","flg":4},{"c-0":["\n",{"->":"elena_concern"},null],"c-1":["\n",{"->":"analyst_opinion"},null]}],null],"elena_concern":["#","^speaker:analyst","/#","^Analyst: Hard to tell. Elena's always intense.","\n","^Analyst: But yeah, she's been stressed. Stays late, re-runs my analyses, asks detailed questions.","\n","^Analyst: Either she's being thorough, or something's really bothering her.","\n",{"->":"hub"},null],"analyst_opinion":["#","^speaker:analyst","/#","^Analyst: *uncomfortable* Honestly? It looks bad.","\n","^Analyst: Coordinated mixing, consistent timing, large amounts, single destination...","\n","^Analyst: If I saw this pattern at any other exchange, I'd assume criminal network funding.","\n","^Analyst: But Satoshi says we're a legitimate business. Elena vouches for our compliance.","\n","^Analyst: So I'm trying not to jump to conclusions.","\n",{"->":"hub"},null],"reporting_status":["#","^speaker:analyst","/#","^Analyst: Flagged to Elena. She's investigating.","\n","^Analyst: She hasn't filed an external SAR yet, which means either it's legitimate activity or she's gathering more evidence.","\n","^Analyst: I trust her judgment. She's way smarter than me.","\n",{"->":"hub"},null],"pattern_concerns":[["#","^speaker:analyst","/#","ev",true,"/ev",{"VAR=":"topic_patterns","re":true},"^Analyst: *pulls up a graph* Look at this. Five different source wallets.","\n","^Analyst: They convert to Monero on the same schedule. Mix through our infrastructure. Reconverge to one destination.","\n","^Analyst: Pattern repeats weekly. Like clockwork.","\n","ev","str","^What do you think it means?","/str","/ev",{"*":".^.c-0","flg":4},"ev","str","^Can you identify the source wallets?","/str","/ev",{"*":".^.c-1","flg":4},{"c-0":["\n",{"->":"pattern_interpretation"},null],"c-1":["\n",{"->":"source_identification"},null]}],null],"pattern_interpretation":["#","^speaker:analyst","/#","^Analyst: My guess? Coordinated fundraising. Multiple revenue streams feeding a central operation.","\n","^Analyst: Could be legit—distributed business with centralized accounting.","\n","^Analyst: Could be money laundering—criminal network consolidating funds.","\n","^Analyst: Without knowing who controls the wallets, it's hard to say.","\n",{"->":"hub"},null],"source_identification":["#","^speaker:analyst","/#","^Analyst: Not from blockchain alone. Monero anonymization is really good.","\n","^Analyst: Our internal logs have more info, but Elena restricts access.","\n","^Analyst: I can see the patterns. She can see the actual wallet addresses and transaction details.","\n",{"->":"hub"},null],"personal_concerns":[["#","^speaker:analyst","/#","ev",true,"/ev",{"VAR=":"topic_concerns","re":true},"^Analyst: *pauses work* You want my honest opinion?","\n","^Analyst: I love blockchain forensics. I love privacy technology. I believe in what we're supposed to be doing.","\n","ev","str","^But?","/str","/ev",{"*":".^.c-0","flg":4},"ev","str","^What are you worried about?","/str","/ev",{"*":".^.c-1","flg":4},{"c-0":["\n",{"->":"but_response"},null],"c-1":["\n",{"->":"worry_response"},null]}],null],"but_response":["#","^speaker:analyst","/#","^Analyst: But some of these patterns scare me.","\n","^Analyst: I'm analyzing transactions that might be funding... I don't know. Terrorism? Organized crime?","\n","^Analyst: And I tell myself it's not my job to judge. I'm just the analyst. Elena makes the decisions.","\n","^Analyst: But that feels like an excuse.","\n",{"->":"moral_conflict"},null],"worry_response":["#","^speaker:analyst","/#","^Analyst: That we're not just providing privacy. We're providing cover.","\n","^Analyst: That our ideals about financial freedom are being exploited by people who... aren't idealists.","\n",{"->":"moral_conflict"},null],"moral_conflict":[["#","^speaker:analyst","/#","^Analyst: *looks at you* That's why you're here, isn't it? FinCEN doesn't audit mid-size exchanges unless something's flagged.","\n","^Analyst: Someone thinks we're dirty.","\n","ev","str","^I can't comment on ongoing investigations","/str","/ev",{"*":".^.c-0","flg":4},"ev","str","^Do you think the exchange is being used illegally?","/str","/ev",{"*":".^.c-1","flg":4},{"c-0":["\n",{"->":"professional_response"},null],"c-1":["\n",{"->":"direct_question"},null]}],null],"professional_response":["#","^speaker:analyst","/#","^Analyst: *laughs bitterly* Right. Professional.","\n","^Analyst: Well, when your investigation concludes, I hope you tell me whether I've been helping criminals.","\n","^Analyst: I'd like to know if my work has been... meaningful. Or just enabling.","\n","#","^exit_conversation","/#","done",null],"direct_question":["#","^speaker:analyst","/#","^Analyst: *long pause*","\n","^Analyst: I think some of our customers are using our privacy infrastructure for things that would horrify me if I knew the details.","\n","^Analyst: I think Elena knows more than she's telling me.","\n","^Analyst: And I think Satoshi cares more about ideology than consequences.","\n","^Analyst: So yeah. Probably.","\n","#","^exit_conversation","/#","done",null],"global decl":["ev",false,{"VAR=":"analyst_talked"},false,{"VAR=":"topic_forensics"},false,{"VAR=":"topic_patterns"},false,{"VAR=":"topic_concerns"},true,{"VAR=":"first_meeting"},"str","^Agent 0x00","/str",{"VAR=":"player_name"},"/ev","end",null]}],"listDefs":{}} \ No newline at end of file diff --git a/scenarios/m06_follow_the_money/ink/m06_npc_elena_volkov.ink b/scenarios/m06_follow_the_money/ink/m06_npc_elena_volkov.ink new file mode 100644 index 0000000..c63de6d --- /dev/null +++ b/scenarios/m06_follow_the_money/ink/m06_npc_elena_volkov.ink @@ -0,0 +1,510 @@ +// =========================================== +// Mission 6: NPC - Dr. Elena Volkov +// CTO of HashChain Exchange, Recruitable Asset +// =========================================== + +VAR elena_trust = 0 // -50 to 100 scale +VAR elena_suspicious = false +VAR moral_conflict_revealed = false +VAR shown_casualties = false +VAR shown_architects_fund = false +VAR recruitment_offered = false +VAR recruitment_accepted = false +VAR recruitment_refused = false +VAR password_list_given = false +VAR badge_discussion = false +VAR first_meeting = true + +// External variables +VAR player_name = "Agent 0x00" +VAR found_blockchain_evidence = false +VAR found_architects_fund = false +VAR elena_recruited = false +VAR elena_arrested = false + +// =========================================== +// INITIAL MEETING +// =========================================== + +=== start === +#speaker:elena_volkov + +{first_meeting: + ~ first_meeting = false + #display:elena-professional + + A sharp-eyed woman in her mid-30s looks up from three monitors displaying blockchain transaction graphs. + + Elena: You must be the FinCEN auditor. Dr. Elena Volkov, Chief Technology Officer. + + Elena: Cryptocurrency compliance. Always a pleasure. *her tone suggests otherwise* + + + [Thank you for meeting with me, Dr. Volkov] + You: I understand regulatory audits can be disruptive. + ~ elena_trust += 10 + -> professional_response + + + [Let's make this efficient. I need system access] + You: Backend servers, transaction logs, wallet infrastructure. + ~ elena_trust -= 5 + ~ elena_suspicious = true + -> suspicious_response + + + [Your cryptography research is impressive] + You: 37 publications, 2,847 citations. That's extraordinary. + ~ elena_trust += 15 + -> academic_response +} + +{not first_meeting: + #display:elena-neutral + Elena: Back again. What do you need? + -> hub +} + +=== professional_response === +#speaker:elena_volkov + +Elena: I appreciate the courtesy. Most auditors treat us like criminals from day one. + +Elena: We run a legitimate exchange. Privacy-focused, yes. But legal. + +~ elena_trust += 5 + +-> audit_discussion + +=== suspicious_response === +#speaker:elena_volkov + +Elena: *narrows eyes* Eager, aren't you? + +Elena: FinCEN auditors usually start with paperwork. KYC compliance, AML procedures. + +Elena: You're going straight for the technical infrastructure. Unusual. + +~ elena_suspicious = true + +-> audit_discussion + +=== academic_response === +#speaker:elena_volkov + +Elena: *surprised* You read my work? + +Elena: Most auditors see "cryptographer" and assume "hacker." Refreshing to meet someone who understands the difference. + +Elena: I built this exchange's infrastructure on sound cryptographic principles. Zero-knowledge proofs, homomorphic encryption... + +~ elena_trust += 10 + +-> academic_discussion + +=== academic_discussion === +#speaker:elena_volkov + +Elena: My research focuses on financial privacy. Governments shouldn't be able to track every transaction. + +Elena: That's not a criminal position. It's a privacy rights position. + ++ [Privacy has legitimate uses] + You: Financial surveillance is concerning. I understand the principle. + ~ elena_trust += 10 + -> hub + ++ [Privacy also enables money laundering] + You: Which is why we audit exchanges. + Elena: Fair. Everything we do is documented and legal. + ~ elena_trust += 5 + -> hub + +=== audit_discussion === +#speaker:elena_volkov + +Elena: What specifically does FinCEN want to see? + +Elena: Our KYC procedures are compliant. Our transaction monitoring meets regulatory thresholds. + +{elena_suspicious: + Elena: Unless you're looking for something beyond standard compliance? +} + +-> hub + +// =========================================== +// CONVERSATION HUB +// =========================================== + +=== hub === + ++ {not password_list_given} [Ask about server access credentials] + -> request_passwords + ++ {not badge_discussion} [Ask about access control systems] + -> discuss_badges + ++ {elena_trust >= 20 and found_blockchain_evidence and not shown_casualties} [Show blockchain transaction analysis] + -> show_blockchain_evidence + ++ {shown_casualties and not recruitment_offered} [Reveal SAFETYNET identity] + -> reveal_identity + ++ {recruitment_offered and not recruitment_accepted and not recruitment_refused} [Press for recruitment decision] + -> recruitment_decision + ++ {elena_trust < -10} [Arrest Elena Volkov] + -> arrest_elena + ++ [That's all for now] + #exit_conversation + #speaker:elena_volkov + {elena_trust >= 30: + Elena: Let me know if you need anything else. + } + {elena_trust < 30 and elena_trust >= 0: + Elena: Alright. I'll be here. + } + {elena_trust < 0: + Elena: *coldly* Fine. + } + -> DONE + +// =========================================== +// REQUEST PASSWORDS +// =========================================== + +=== request_passwords === +#speaker:elena_volkov + +You: I need to test your backend server security. Password strength analysis. + +{elena_trust >= 15: + Elena: That's... actually reasonable for a security audit. + Elena: Here's a password dictionary we use for testing. Crypto-themed patterns are common in this industry. + + #give_item:password_list + #complete_task:obtain_access_tools + + ~ password_list_given = true + ~ elena_trust += 5 + + Elena: Bitcoin2024, ethereum2025, satoshi2024... you get the idea. + + -> hub + +- else: + Elena: I don't know you well enough to give you server credentials. + Elena: Build trust first. Then we can discuss technical access. + -> hub +} + +// =========================================== +// BADGE DISCUSSION +// =========================================== + +=== discuss_badges === +#speaker:elena_volkov +~ badge_discussion = true + +You: Tell me about your RFID access control systems. + +Elena: Standard corporate setup. Employee badges for trading floor, CTO badge for server room, executive badges for restricted areas. + +{elena_trust >= 25: + Elena: Between you and me, our security is solid. Satoshi gets paranoid about access control. + ~ elena_trust += 5 +} + +-> hub + +// =========================================== +// SHOW BLOCKCHAIN EVIDENCE +// =========================================== + +=== show_blockchain_evidence === +#speaker:elena_volkov +~ shown_casualties = true + +You: Dr. Volkov, I need to show you something. + +You show her the ENTROPY transaction network analysis: Mission 2 ransomware, Mission 5 espionage, all flowing through HashChain's mixers. + +Elena: *face goes pale* Where did you get this? + +Elena: That's... that's our internal analysis. How did you... + ++ [You analyzed these transactions yourself] + -> elena_realization + ++ [You knew what this infrastructure was being used for] + -> elena_confrontation + +=== elena_realization === +#speaker:elena_volkov + +Elena: I... I ran those analyses because the transaction patterns were suspicious. + +Elena: Hospital ransomware? Corporate espionage? I flagged these for investigation! + +{found_architects_fund: + You: And The Architect's Fund? $12.8 million for coordinated attacks with 180-340 projected casualties? + ~ shown_architects_fund = true + -> architects_fund_reaction +- else: + You: The mixing services you built are enabling terrorism. + -> moral_conflict +} + +=== elena_confrontation === +#speaker:elena_volkov + +Elena: *defensive* I built privacy infrastructure! What people use it for isn't my responsibility! + +Elena: I design cryptographic systems. That's like blaming the inventor of the printing press for propaganda! + ++ [You're not that naive] + -> moral_conflict + ++ [You analyzed the transactions. You knew.] + -> moral_conflict + +=== architects_fund_reaction === +#speaker:elena_volkov + +Elena: *reads the document* No. No, this can't be... + +Elena: 180-340 casualties? They CALCULATED death tolls? + +Elena: I built this for financial freedom. Not... not mass murder. + +~ moral_conflict_revealed = true +~ elena_trust += 20 + +-> moral_conflict + +=== moral_conflict === +#speaker:elena_volkov +~ moral_conflict_revealed = true + +Elena: *hands shaking* I knew the exchange was being used for... questionable activities. + +Elena: But I told myself it was financial freedom. Privacy rights. Fighting government surveillance. + +{shown_architects_fund: + Elena: Not funding coordinated terrorist attacks. Not calculating how many people would die. +} + +Elena: *looks up* Who are you? You're not FinCEN. + +-> reveal_identity + +// =========================================== +// REVEAL SAFETYNET IDENTITY +// =========================================== + +=== reveal_identity === +#speaker:elena_volkov +~ recruitment_offered = true + +You: SAFETYNET. Counter-terrorism intelligence. + +You: The exchange you built is the financial hub for ENTROPY—every cell we've encountered is funded through your mixing infrastructure. + +Elena: *closes eyes* My research. My work. Used to kill people. + ++ [You didn't know the full scope. You can help us now.] + -> recruitment_offer_compassionate + ++ [You built the systems. You're culpable. But you can make this right.] + -> recruitment_offer_pragmatic + ++ [You're under arrest for facilitating terrorism] + -> arrest_elena + +=== recruitment_offer_compassionate === +#speaker:elena_volkov + +You: Dr. Volkov, you're a brilliant cryptographer who got swept up in ideology. + +You: You built these systems for financial freedom. ENTROPY corrupted your work. + +You: But you can help us dismantle their network. Your expertise could save hundreds of lives. + +~ elena_trust += 15 + +-> recruitment_choice + +=== recruitment_offer_pragmatic === +#speaker:elena_volkov + +You: You face 20-35 years for money laundering and facilitating terrorism. + +You: Or you cooperate with SAFETYNET. Provide intelligence, testify against ENTROPY cells, help us trace their funding. + +You: Your choice: prison or redemption. + +~ elena_trust += 5 + +-> recruitment_choice + +// =========================================== +// RECRUITMENT CHOICE +// =========================================== + +=== recruitment_choice === +#speaker:elena_volkov + +Elena: *long silence* + +Elena: If I cooperate... what happens to my research? My career? + ++ [Your research continues—for SAFETYNET. Help us instead of ENTROPY.] + -> recruitment_appeal_purpose + ++ [Your career is over either way. But cooperation keeps you free.] + -> recruitment_appeal_freedom + ++ [Time's up. Decide now.] + -> recruitment_decision + +=== recruitment_appeal_purpose === +#speaker:elena_volkov + +You: SAFETYNET needs cryptographers. Your expertise in cryptocurrency forensics, privacy systems, blockchain analysis... + +You: You could teach our analysts. Write papers. Actually contribute to stopping terrorism instead of funding it. + +~ elena_trust += 10 + +Elena: *softly* Purpose over punishment. + +-> recruitment_decision + +=== recruitment_appeal_freedom === +#speaker:elena_volkov + +You: Cooperation means witness protection, reduced sentencing, possibly immunity if your intelligence is valuable enough. + +You: Refusal means maximum sentencing for every transaction you enabled. + +Elena: *bitter laugh* Freedom. The thing I thought I was building. + +-> recruitment_decision + +// =========================================== +// RECRUITMENT DECISION +// =========================================== + +=== recruitment_decision === +#speaker:elena_volkov + +{elena_trust >= 40: + -> recruitment_accepted_path +} +{elena_trust >= 20 and elena_trust < 40: + -> recruitment_uncertain +} +{elena_trust < 20: + -> recruitment_refused_path +} + +=== recruitment_accepted_path === +#speaker:elena_volkov +~ recruitment_accepted = true + +Elena: *takes deep breath* I'll cooperate. + +Elena: On one condition: I want to see the intelligence I provide being used. Not disappeared into bureaucracy. + +Elena: I want to know I'm making this right. + ++ [Agreed. We'll keep you informed.] + -> recruitment_finalized + ++ [You're not in a position to negotiate] + ~ elena_trust -= 10 + -> recruitment_uncertain + +=== recruitment_finalized === +#speaker:elena_volkov + +#set_variable:elena_recruited=true +#complete_task:decide_elena_fate + +Elena: Then yes. I'll help you dismantle ENTROPY's financial network. + +Elena: Starting with Crypto Anarchist cells in three countries I haven't told Satoshi about. + +Elena: And {player_name}? Thank you. For giving me a chance to fix what I broke. + +#exit_conversation +-> DONE + +=== recruitment_uncertain === +#speaker:elena_volkov + +Elena: I... I need more time. This is my life you're asking me to turn over. + ++ [You don't have time. ENTROPY is distributing $12.8M in 72 hours.] + {shown_architects_fund: + Elena: *anguished* I know! I analyzed those transactions! + ~ elena_trust += 10 + -> recruitment_decision + } + {not shown_architects_fund: + Elena: What are you talking about? + -> explain_time_pressure + } + ++ [Fine. But I'm not offering this again.] + -> recruitment_refused_path + +=== explain_time_pressure === +#speaker:elena_volkov + +You: The Architect's Fund. $12.8 million allocated to six ENTROPY cells. Coordinated attacks. + +You: If you don't help us stop the fund distribution, 180-340 people die. + +~ shown_architects_fund = true +~ elena_trust += 15 + +-> recruitment_decision + +=== recruitment_refused_path === +#speaker:elena_volkov +~ recruitment_refused = true + +Elena: I won't betray Satoshi. Or the principles this exchange was built on. + +Elena: Financial privacy is a right. If some people abuse it, that's on them. + ++ [Then you're complicit in terrorism] + -> arrest_elena + ++ [You're making a mistake] + -> arrest_elena + +// =========================================== +// ARREST ELENA +// =========================================== + +=== arrest_elena === +#speaker:elena_volkov + +You: Dr. Elena Volkov, you're under arrest for money laundering, facilitating terrorism, and conspiracy. + +#set_variable:elena_arrested=true +#complete_task:decide_elena_fate + +{elena_trust >= 20: + Elena: *quietly* I really thought I was doing the right thing. + Elena: Financial freedom. Privacy rights. I was so sure... +- else: + Elena: *defiant* This is a violation of everything crypto stands for. + Elena: You're proving our point. Government tyranny. +} + +Elena: *hands offered for cuffs* I hope arresting me was worth it. + +#exit_conversation +-> DONE diff --git a/scenarios/m06_follow_the_money/ink/m06_npc_elena_volkov.json b/scenarios/m06_follow_the_money/ink/m06_npc_elena_volkov.json new file mode 100644 index 0000000..f945827 --- /dev/null +++ b/scenarios/m06_follow_the_money/ink/m06_npc_elena_volkov.json @@ -0,0 +1 @@ +{"inkVersion":21,"root":[[["done",{"#n":"g-0"}],null],"done",{"start":["#","^speaker:elena_volkov","/#","ev",{"VAR?":"first_meeting"},"/ev",[{"->":".^.b","c":true},{"b":["\n","ev",false,"/ev",{"VAR=":"first_meeting","re":true},"#","^display:elena-professional","/#","^A sharp-eyed woman in her mid-30s looks up from three monitors displaying blockchain transaction graphs.","\n","^Elena: You must be the FinCEN auditor. Dr. Elena Volkov, Chief Technology Officer.","\n","^Elena: Cryptocurrency compliance. Always a pleasure. *her tone suggests otherwise*","\n","ev","str","^Thank you for meeting with me, Dr. Volkov","/str","/ev",{"*":".^.c-0","flg":4},"ev","str","^Let's make this efficient. I need system access","/str","/ev",{"*":".^.c-1","flg":4},"ev","str","^Your cryptography research is impressive","/str","/ev",{"*":".^.c-2","flg":4},{"->":"start.7"},{"c-0":["\n","^You: I understand regulatory audits can be disruptive.","\n","ev",{"VAR?":"elena_trust"},10,"+",{"VAR=":"elena_trust","re":true},"/ev",{"->":"professional_response"},null],"c-1":["\n","^You: Backend servers, transaction logs, wallet infrastructure.","\n","ev",{"VAR?":"elena_trust"},5,"-",{"VAR=":"elena_trust","re":true},"/ev","ev",true,"/ev",{"VAR=":"elena_suspicious","re":true},{"->":"suspicious_response"},null],"c-2":["\n","^You: 37 publications, 2,847 citations. That's extraordinary.","\n","ev",{"VAR?":"elena_trust"},15,"+",{"VAR=":"elena_trust","re":true},"/ev",{"->":"academic_response"},null]}]}],"nop","\n","ev",{"VAR?":"first_meeting"},"!","/ev",[{"->":".^.b","c":true},{"b":["\n","#","^display:elena-neutral","/#","^Elena: Back again. What do you need?","\n",{"->":"hub"},{"->":"start.14"},null]}],"nop","\n",null],"professional_response":["#","^speaker:elena_volkov","/#","^Elena: I appreciate the courtesy. Most auditors treat us like criminals from day one.","\n","^Elena: We run a legitimate exchange. Privacy-focused, yes. But legal.","\n","ev",{"VAR?":"elena_trust"},5,"+",{"VAR=":"elena_trust","re":true},"/ev",{"->":"audit_discussion"},null],"suspicious_response":["#","^speaker:elena_volkov","/#","^Elena: *narrows eyes* Eager, aren't you?","\n","^Elena: FinCEN auditors usually start with paperwork. KYC compliance, AML procedures.","\n","^Elena: You're going straight for the technical infrastructure. Unusual.","\n","ev",true,"/ev",{"VAR=":"elena_suspicious","re":true},{"->":"audit_discussion"},null],"academic_response":["#","^speaker:elena_volkov","/#","^Elena: *surprised* You read my work?","\n","^Elena: Most auditors see \"cryptographer\" and assume \"hacker.\" Refreshing to meet someone who understands the difference.","\n","^Elena: I built this exchange's infrastructure on sound cryptographic principles. Zero-knowledge proofs, homomorphic encryption...","\n","ev",{"VAR?":"elena_trust"},10,"+",{"VAR=":"elena_trust","re":true},"/ev",{"->":"academic_discussion"},null],"academic_discussion":[["#","^speaker:elena_volkov","/#","^Elena: My research focuses on financial privacy. Governments shouldn't be able to track every transaction.","\n","^Elena: That's not a criminal position. It's a privacy rights position.","\n","ev","str","^Privacy has legitimate uses","/str","/ev",{"*":".^.c-0","flg":4},"ev","str","^Privacy also enables money laundering","/str","/ev",{"*":".^.c-1","flg":4},{"c-0":["\n","^You: Financial surveillance is concerning. I understand the principle.","\n","ev",{"VAR?":"elena_trust"},10,"+",{"VAR=":"elena_trust","re":true},"/ev",{"->":"hub"},null],"c-1":["\n","^You: Which is why we audit exchanges.","\n","^Elena: Fair. Everything we do is documented and legal.","\n","ev",{"VAR?":"elena_trust"},5,"+",{"VAR=":"elena_trust","re":true},"/ev",{"->":"hub"},null]}],null],"audit_discussion":["#","^speaker:elena_volkov","/#","^Elena: What specifically does FinCEN want to see?","\n","^Elena: Our KYC procedures are compliant. Our transaction monitoring meets regulatory thresholds.","\n","ev",{"VAR?":"elena_suspicious"},"/ev",[{"->":".^.b","c":true},{"b":["\n","^Elena: Unless you're looking for something beyond standard compliance?","\n",{"->":".^.^.^.11"},null]}],"nop","\n",{"->":"hub"},null],"hub":[["ev","str","^Ask about server access credentials","/str",{"VAR?":"password_list_given"},"!","/ev",{"*":".^.c-0","flg":5},"ev","str","^Ask about access control systems","/str",{"VAR?":"badge_discussion"},"!","/ev",{"*":".^.c-1","flg":5},"ev","str","^Show blockchain transaction analysis","/str",{"VAR?":"elena_trust"},20,">=",{"VAR?":"found_blockchain_evidence"},"&&",{"VAR?":"shown_casualties"},"!","&&","/ev",{"*":".^.c-2","flg":5},"ev","str","^Reveal SAFETYNET identity","/str",{"VAR?":"shown_casualties"},{"VAR?":"recruitment_offered"},"!","&&","/ev",{"*":".^.c-3","flg":5},"ev","str","^Press for recruitment decision","/str",{"VAR?":"recruitment_offered"},{"VAR?":"recruitment_accepted"},"!","&&",{"VAR?":"recruitment_refused"},"!","&&","/ev",{"*":".^.c-4","flg":5},"ev","str","^Arrest Elena Volkov","/str",{"VAR?":"elena_trust"},-10,"<","/ev",{"*":".^.c-5","flg":5},"ev","str","^That's all for now","/str","/ev",{"*":".^.c-6","flg":4},{"c-0":["\n",{"->":"request_passwords"},null],"c-1":["\n",{"->":"discuss_badges"},null],"c-2":["\n",{"->":"show_blockchain_evidence"},null],"c-3":["\n",{"->":"reveal_identity"},null],"c-4":["\n",{"->":"recruitment_decision"},null],"c-5":["\n",{"->":"arrest_elena"},null],"c-6":["\n","#","^exit_conversation","/#","#","^speaker:elena_volkov","/#","ev",{"VAR?":"elena_trust"},30,">=","/ev",[{"->":".^.b","c":true},{"b":["\n","^Elena: Let me know if you need anything else.","\n",{"->":".^.^.^.13"},null]}],"nop","\n","ev",{"VAR?":"elena_trust"},30,"<",{"VAR?":"elena_trust"},0,">=","&&","/ev",[{"->":".^.b","c":true},{"b":["\n","^Elena: Alright. I'll be here.","\n",{"->":".^.^.^.25"},null]}],"nop","\n","ev",{"VAR?":"elena_trust"},0,"<","/ev",[{"->":".^.b","c":true},{"b":["\n","^Elena: *coldly* Fine.","\n",{"->":".^.^.^.33"},null]}],"nop","\n","done",null]}],null],"request_passwords":["#","^speaker:elena_volkov","/#","^You: I need to test your backend server security. Password strength analysis.","\n","ev",{"VAR?":"elena_trust"},15,">=","/ev",[{"->":".^.b","c":true},{"b":["\n","^Elena: That's... actually reasonable for a security audit.","\n","^Elena: Here's a password dictionary we use for testing. Crypto-themed patterns are common in this industry.","\n","#","^give_item:password_list","/#","#","^complete_task:obtain_access_tools","/#","ev",true,"/ev",{"VAR=":"password_list_given","re":true},"ev",{"VAR?":"elena_trust"},5,"+",{"VAR=":"elena_trust","re":true},"/ev","^Elena: Bitcoin2024, ethereum2025, satoshi2024... you get the idea.","\n",{"->":"hub"},{"->":".^.^.^.12"},null]}],[{"->":".^.b"},{"b":["\n","^Elena: I don't know you well enough to give you server credentials.","\n","^Elena: Build trust first. Then we can discuss technical access.","\n",{"->":"hub"},{"->":".^.^.^.12"},null]}],"nop","\n",null],"discuss_badges":["#","^speaker:elena_volkov","/#","ev",true,"/ev",{"VAR=":"badge_discussion","re":true},"^You: Tell me about your RFID access control systems.","\n","^Elena: Standard corporate setup. Employee badges for trading floor, CTO badge for server room, executive badges for restricted areas.","\n","ev",{"VAR?":"elena_trust"},25,">=","/ev",[{"->":".^.b","c":true},{"b":["\n","^Elena: Between you and me, our security is solid. Satoshi gets paranoid about access control.","\n","ev",{"VAR?":"elena_trust"},5,"+",{"VAR=":"elena_trust","re":true},"/ev",{"->":".^.^.^.17"},null]}],"nop","\n",{"->":"hub"},null],"show_blockchain_evidence":[["#","^speaker:elena_volkov","/#","ev",true,"/ev",{"VAR=":"shown_casualties","re":true},"^You: Dr. Volkov, I need to show you something.","\n","^You show her the ENTROPY transaction network analysis: Mission 2 ransomware, Mission 5 espionage, all flowing through HashChain's mixers.","\n","^Elena: *face goes pale* Where did you get this?","\n","^Elena: That's... that's our internal analysis. How did you...","\n","ev","str","^You analyzed these transactions yourself","/str","/ev",{"*":".^.c-0","flg":4},"ev","str","^You knew what this infrastructure was being used for","/str","/ev",{"*":".^.c-1","flg":4},{"c-0":["\n",{"->":"elena_realization"},null],"c-1":["\n",{"->":"elena_confrontation"},null]}],null],"elena_realization":["#","^speaker:elena_volkov","/#","^Elena: I... I ran those analyses because the transaction patterns were suspicious.","\n","^Elena: Hospital ransomware? Corporate espionage? I flagged these for investigation!","\n","ev",{"VAR?":"found_architects_fund"},"/ev",[{"->":".^.b","c":true},{"b":["\n","^You: And The Architect's Fund? $12.8 million for coordinated attacks with 180-340 projected casualties?","\n","ev",true,"/ev",{"VAR=":"shown_architects_fund","re":true},{"->":"architects_fund_reaction"},{"->":".^.^.^.12"},null]}],[{"->":".^.b"},{"b":["\n","^You: The mixing services you built are enabling terrorism.","\n",{"->":"moral_conflict"},{"->":".^.^.^.12"},null]}],"nop","\n",null],"elena_confrontation":[["#","^speaker:elena_volkov","/#","^Elena: *defensive* I built privacy infrastructure! What people use it for isn't my responsibility!","\n","^Elena: I design cryptographic systems. That's like blaming the inventor of the printing press for propaganda!","\n","ev","str","^You're not that naive","/str","/ev",{"*":".^.c-0","flg":4},"ev","str","^You analyzed the transactions. You knew.","/str","/ev",{"*":".^.c-1","flg":4},{"c-0":["\n",{"->":"moral_conflict"},null],"c-1":["\n",{"->":"moral_conflict"},null]}],null],"architects_fund_reaction":["#","^speaker:elena_volkov","/#","^Elena: *reads the document* No. No, this can't be...","\n","^Elena: 180-340 casualties? They CALCULATED death tolls?","\n","^Elena: I built this for financial freedom. Not... not mass murder.","\n","ev",true,"/ev",{"VAR=":"moral_conflict_revealed","re":true},"ev",{"VAR?":"elena_trust"},20,"+",{"VAR=":"elena_trust","re":true},"/ev",{"->":"moral_conflict"},null],"moral_conflict":["#","^speaker:elena_volkov","/#","ev",true,"/ev",{"VAR=":"moral_conflict_revealed","re":true},"^Elena: *hands shaking* I knew the exchange was being used for... questionable activities.","\n","^Elena: But I told myself it was financial freedom. Privacy rights. Fighting government surveillance.","\n","ev",{"VAR?":"shown_architects_fund"},"/ev",[{"->":".^.b","c":true},{"b":["\n","^Elena: Not funding coordinated terrorist attacks. Not calculating how many people would die.","\n",{"->":".^.^.^.15"},null]}],"nop","\n","^Elena: *looks up* Who are you? You're not FinCEN.","\n",{"->":"reveal_identity"},null],"reveal_identity":[["#","^speaker:elena_volkov","/#","ev",true,"/ev",{"VAR=":"recruitment_offered","re":true},"^You: SAFETYNET. Counter-terrorism intelligence.","\n","^You: The exchange you built is the financial hub for ENTROPY—every cell we've encountered is funded through your mixing infrastructure.","\n","^Elena: *closes eyes* My research. My work. Used to kill people.","\n","ev","str","^You didn't know the full scope. You can help us now.","/str","/ev",{"*":".^.c-0","flg":4},"ev","str","^You built the systems. You're culpable. But you can make this right.","/str","/ev",{"*":".^.c-1","flg":4},"ev","str","^You're under arrest for facilitating terrorism","/str","/ev",{"*":".^.c-2","flg":4},{"c-0":["\n",{"->":"recruitment_offer_compassionate"},null],"c-1":["\n",{"->":"recruitment_offer_pragmatic"},null],"c-2":["\n",{"->":"arrest_elena"},null]}],null],"recruitment_offer_compassionate":["#","^speaker:elena_volkov","/#","^You: Dr. Volkov, you're a brilliant cryptographer who got swept up in ideology.","\n","^You: You built these systems for financial freedom. ENTROPY corrupted your work.","\n","^You: But you can help us dismantle their network. Your expertise could save hundreds of lives.","\n","ev",{"VAR?":"elena_trust"},15,"+",{"VAR=":"elena_trust","re":true},"/ev",{"->":"recruitment_choice"},null],"recruitment_offer_pragmatic":["#","^speaker:elena_volkov","/#","^You: You face 20-35 years for money laundering and facilitating terrorism.","\n","^You: Or you cooperate with SAFETYNET. Provide intelligence, testify against ENTROPY cells, help us trace their funding.","\n","^You: Your choice: prison or redemption.","\n","ev",{"VAR?":"elena_trust"},5,"+",{"VAR=":"elena_trust","re":true},"/ev",{"->":"recruitment_choice"},null],"recruitment_choice":[["#","^speaker:elena_volkov","/#","^Elena: *long silence*","\n","^Elena: If I cooperate... what happens to my research? My career?","\n","ev","str","^Your research continues—for SAFETYNET. Help us instead of ENTROPY.","/str","/ev",{"*":".^.c-0","flg":4},"ev","str","^Your career is over either way. But cooperation keeps you free.","/str","/ev",{"*":".^.c-1","flg":4},"ev","str","^Time's up. Decide now.","/str","/ev",{"*":".^.c-2","flg":4},{"c-0":["\n",{"->":"recruitment_appeal_purpose"},null],"c-1":["\n",{"->":"recruitment_appeal_freedom"},null],"c-2":["\n",{"->":"recruitment_decision"},null]}],null],"recruitment_appeal_purpose":["#","^speaker:elena_volkov","/#","^You: SAFETYNET needs cryptographers. Your expertise in cryptocurrency forensics, privacy systems, blockchain analysis...","\n","^You: You could teach our analysts. Write papers. Actually contribute to stopping terrorism instead of funding it.","\n","ev",{"VAR?":"elena_trust"},10,"+",{"VAR=":"elena_trust","re":true},"/ev","^Elena: *softly* Purpose over punishment.","\n",{"->":"recruitment_decision"},null],"recruitment_appeal_freedom":["#","^speaker:elena_volkov","/#","^You: Cooperation means witness protection, reduced sentencing, possibly immunity if your intelligence is valuable enough.","\n","^You: Refusal means maximum sentencing for every transaction you enabled.","\n","^Elena: *bitter laugh* Freedom. The thing I thought I was building.","\n",{"->":"recruitment_decision"},null],"recruitment_decision":["#","^speaker:elena_volkov","/#","ev",{"VAR?":"elena_trust"},40,">=","/ev",[{"->":".^.b","c":true},{"b":["\n",{"->":"recruitment_accepted_path"},{"->":".^.^.^.9"},null]}],"nop","\n","ev",{"VAR?":"elena_trust"},20,">=",{"VAR?":"elena_trust"},40,"<","&&","/ev",[{"->":".^.b","c":true},{"b":["\n",{"->":"recruitment_uncertain"},{"->":".^.^.^.21"},null]}],"nop","\n","ev",{"VAR?":"elena_trust"},20,"<","/ev",[{"->":".^.b","c":true},{"b":["\n",{"->":"recruitment_refused_path"},{"->":".^.^.^.29"},null]}],"nop","\n",null],"recruitment_accepted_path":[["#","^speaker:elena_volkov","/#","ev",true,"/ev",{"VAR=":"recruitment_accepted","re":true},"^Elena: *takes deep breath* I'll cooperate.","\n","^Elena: On one condition: I want to see the intelligence I provide being used. Not disappeared into bureaucracy.","\n","^Elena: I want to know I'm making this right.","\n","ev","str","^Agreed. We'll keep you informed.","/str","/ev",{"*":".^.c-0","flg":4},"ev","str","^You're not in a position to negotiate","/str","/ev",{"*":".^.c-1","flg":4},{"c-0":["\n",{"->":"recruitment_finalized"},null],"c-1":["\n","ev",{"VAR?":"elena_trust"},10,"-",{"VAR=":"elena_trust","re":true},"/ev",{"->":"recruitment_uncertain"},null]}],null],"recruitment_finalized":["#","^speaker:elena_volkov","/#","#","^set_variable:elena_recruited=true","/#","#","^complete_task:decide_elena_fate","/#","^Elena: Then yes. I'll help you dismantle ENTROPY's financial network.","\n","^Elena: Starting with Crypto Anarchist cells in three countries I haven't told Satoshi about.","\n","^Elena: And ","ev",{"VAR?":"player_name"},"out","/ev","^? Thank you. For giving me a chance to fix what I broke.","\n","#","^exit_conversation","/#","done",null],"recruitment_uncertain":[["#","^speaker:elena_volkov","/#","^Elena: I... I need more time. This is my life you're asking me to turn over.","\n","ev","str","^You don't have time. ENTROPY is distributing $12.8M in 72 hours.","/str","/ev",{"*":".^.c-0","flg":4},"ev","str","^Fine. But I'm not offering this again.","/str","/ev",{"*":".^.c-1","flg":4},{"c-0":["\n","ev",{"VAR?":"shown_architects_fund"},"/ev",[{"->":".^.b","c":true},{"b":["\n","^Elena: *anguished* I know! I analyzed those transactions!","\n","ev",{"VAR?":"elena_trust"},10,"+",{"VAR=":"elena_trust","re":true},"/ev",{"->":"recruitment_decision"},{"->":".^.^.^.5"},null]}],"nop","\n","ev",{"VAR?":"shown_architects_fund"},"!","/ev",[{"->":".^.b","c":true},{"b":["\n","^Elena: What are you talking about?","\n",{"->":"explain_time_pressure"},{"->":".^.^.^.12"},null]}],"nop","\n",null],"c-1":["\n",{"->":"recruitment_refused_path"},null]}],null],"explain_time_pressure":["#","^speaker:elena_volkov","/#","^You: The Architect's Fund. $12.8 million allocated to six ENTROPY cells. Coordinated attacks.","\n","^You: If you don't help us stop the fund distribution, 180-340 people die.","\n","ev",true,"/ev",{"VAR=":"shown_architects_fund","re":true},"ev",{"VAR?":"elena_trust"},15,"+",{"VAR=":"elena_trust","re":true},"/ev",{"->":"recruitment_decision"},null],"recruitment_refused_path":[["#","^speaker:elena_volkov","/#","ev",true,"/ev",{"VAR=":"recruitment_refused","re":true},"^Elena: I won't betray Satoshi. Or the principles this exchange was built on.","\n","^Elena: Financial privacy is a right. If some people abuse it, that's on them.","\n","ev","str","^Then you're complicit in terrorism","/str","/ev",{"*":".^.c-0","flg":4},"ev","str","^You're making a mistake","/str","/ev",{"*":".^.c-1","flg":4},{"c-0":["\n",{"->":"arrest_elena"},null],"c-1":["\n",{"->":"arrest_elena"},null]}],null],"arrest_elena":["#","^speaker:elena_volkov","/#","^You: Dr. Elena Volkov, you're under arrest for money laundering, facilitating terrorism, and conspiracy.","\n","#","^set_variable:elena_arrested=true","/#","#","^complete_task:decide_elena_fate","/#","ev",{"VAR?":"elena_trust"},20,">=","/ev",[{"->":".^.b","c":true},{"b":["\n","^Elena: *quietly* I really thought I was doing the right thing.","\n","^Elena: Financial freedom. Privacy rights. I was so sure...","\n",{"->":".^.^.^.18"},null]}],[{"->":".^.b"},{"b":["\n","^Elena: *defiant* This is a violation of everything crypto stands for.","\n","^Elena: You're proving our point. Government tyranny.","\n",{"->":".^.^.^.18"},null]}],"nop","\n","^Elena: *hands offered for cuffs* I hope arresting me was worth it.","\n","#","^exit_conversation","/#","done",null],"global decl":["ev",0,{"VAR=":"elena_trust"},false,{"VAR=":"elena_suspicious"},false,{"VAR=":"moral_conflict_revealed"},false,{"VAR=":"shown_casualties"},false,{"VAR=":"shown_architects_fund"},false,{"VAR=":"recruitment_offered"},false,{"VAR=":"recruitment_accepted"},false,{"VAR=":"recruitment_refused"},false,{"VAR=":"password_list_given"},false,{"VAR=":"badge_discussion"},true,{"VAR=":"first_meeting"},"str","^Agent 0x00","/str",{"VAR=":"player_name"},false,{"VAR=":"found_blockchain_evidence"},false,{"VAR=":"found_architects_fund"},false,{"VAR=":"elena_recruited"},false,{"VAR=":"elena_arrested"},"/ev","end",null]}],"listDefs":{}} \ No newline at end of file diff --git a/scenarios/m06_follow_the_money/ink/m06_npc_trader.ink b/scenarios/m06_follow_the_money/ink/m06_npc_trader.ink new file mode 100644 index 0000000..600c287 --- /dev/null +++ b/scenarios/m06_follow_the_money/ink/m06_npc_trader.ink @@ -0,0 +1,278 @@ +// =========================================== +// Mission 6: NPC - Crypto Trader +// Innocent employee, provides context +// =========================================== + +VAR trader_talked = false +VAR topic_volume = false +VAR topic_monero = false +VAR topic_elena = false +VAR first_meeting = true + +// External variables +VAR player_name = "Agent 0x00" + +// =========================================== +// INITIAL MEETING +// =========================================== + +=== start === +#speaker:trader + +{first_meeting: + ~ first_meeting = false + #display:trader-casual + + A young trader watches multiple crypto price charts, occasionally placing trades. + + Trader: Hey, you're the compliance person, right? From FinCEN? + + Trader: Don't worry, we're legit. Mostly. *grins* + + + [Mostly?] + You: That's an interesting qualifier. + Trader: *laughs* I'm kidding. Everything's above board. Elena makes sure of that. + -> hub + + + [I'm just doing a standard audit] + You: Nothing to worry about if everything's compliant. + Trader: Cool cool. Let me know if you need anything. + -> hub + + + [Tell me about the exchange's operations] + -> operations_overview +} + +{not first_meeting: + #display:trader-friendly + Trader: What's up? + -> hub +} + +=== operations_overview === +#speaker:trader + +Trader: We're a mid-size crypto exchange. Focus on privacy coins—Monero, Zcash, stuff like that. + +Trader: High volume, fast transactions, low fees. Competitive market. + ++ [Why focus on privacy coins?] + -> privacy_coin_focus + ++ [What's the daily volume?] + ~ topic_volume = true + -> volume_discussion + +// =========================================== +// CONVERSATION HUB +// =========================================== + +=== hub === + ++ {not topic_volume} [Ask about trading volume] + -> volume_discussion + ++ {not topic_monero} [Ask about Monero usage] + -> monero_discussion + ++ {not topic_elena} [Ask about Elena Volkov] + -> elena_discussion + ++ [That's all, thanks] + #exit_conversation + #speaker:trader + Trader: No problem. Happy trading! + -> DONE + +// =========================================== +// TRADING VOLUME +// =========================================== + +=== volume_discussion === +#speaker:trader +~ topic_volume = true + +Trader: We're doing like $800-900 million USD equivalent per day. + +Trader: Not bad for a mid-size exchange. Elena's infrastructure is solid. + +Trader: Mostly Bitcoin, Ethereum, but the Monero volume has been crazy lately. + ++ [Crazy how?] + -> monero_surge + ++ [That's impressive volume] + Trader: Yeah, privacy coin demand is skyrocketing. + -> hub + +=== monero_surge === +#speaker:trader + +Trader: Like, 3-4x normal. Big wallets converting Bitcoin to Monero, mixing through multiple addresses, converting back. + +Trader: Classic mixing pattern. Totally legal, but... yeah. + ++ [You report these patterns?] + -> reporting_discussion + ++ [Is that suspicious?] + -> suspicious_activity + +=== reporting_discussion === +#speaker:trader + +Trader: Oh yeah, we flag everything. Elena runs analysis, files SARs when needed. + +Trader: We're compliant. Just... we're also privacy-focused. That's our brand. + +-> hub + +=== suspicious_activity === +#speaker:trader + +Trader: *shrugs* Depends on your perspective. + +Trader: Some people want financial privacy. Some want to hide money. Hard to tell which is which from transaction patterns. + +Trader: That's your job, I guess. *gestures at you* + +-> hub + +// =========================================== +// PRIVACY COIN FOCUS +// =========================================== + +=== privacy_coin_focus === +#speaker:trader +~ topic_monero = true + +Trader: Satoshi's philosophy. "Financial freedom through cryptography." + +Trader: People should be able to transact without government surveillance. Privacy is a right. + ++ [That sounds like ideology, not business] + -> ideology_response + ++ [Privacy can enable illegal activity] + -> illegal_activity_response + +=== ideology_response === +#speaker:trader + +Trader: It's both! Satoshi's a true believer, but it's also profitable. + +Trader: Privacy coin traders pay premium fees. We make bank. + +-> hub + +=== illegal_activity_response === +#speaker:trader + +Trader: Sure. And regular currency enables illegal activity too. + +Trader: You gonna shut down every bank because some people launder money? + +Trader: We follow the law. We file reports. What people do with their privacy is their business. + +-> hub + +// =========================================== +// MONERO DISCUSSION +// =========================================== + +=== monero_discussion === +#speaker:trader +~ topic_monero = true + +Trader: Monero's untraceable. That's the whole point. + +Trader: Bitcoin is pseudonymous—you can track wallets. Monero is truly anonymous. + +Trader: Makes it perfect for privacy. Also perfect for money laundering, I guess. + ++ [Do you think the exchange is being used for money laundering?] + -> laundering_opinion + ++ [How does the mixing work?] + -> mixing_explanation + +=== laundering_opinion === +#speaker:trader + +Trader: *uncomfortable* I mean... I don't ask questions. I just execute trades. + +Trader: Elena and Satoshi handle compliance. I'm just the guy watching charts. + ++ [You must have suspicions] + -> trader_suspicions + ++ [Fair enough] + -> hub + +=== trader_suspicions === +#speaker:trader + +Trader: *lowers voice* Between you and me? Some of the transaction patterns are... weird. + +Trader: Like, coordinated. Multiple big wallets mixing at the same time, same amounts, same destination patterns. + +Trader: I flagged it to Elena. She said she's investigating. + +Trader: But honestly? I just want to keep my job and not think about it too hard. + +-> hub + +=== mixing_explanation === +#speaker:trader + +Trader: User sends Bitcoin to us. We convert to Monero. Send through 5-10 different wallets. + +Trader: Then convert back to Bitcoin from a completely unlinked address. + +Trader: Blockchain shows Bitcoin in, Bitcoin out. But the Monero middle step? Untraceable. + +Trader: Perfectly legal mixing service. We're transparent about it. + +-> hub + +// =========================================== +// ELENA DISCUSSION +// =========================================== + +=== elena_discussion === +#speaker:trader +~ topic_elena = true + +Trader: Elena's brilliant. Like, PhD in cryptography brilliant. + +Trader: She designed all our privacy protocols. Zero-knowledge proofs, homomorphic encryption... + +Trader: Way above my paygrade. I just use the systems she builds. + ++ [Does she seem concerned about compliance?] + -> elena_compliance + ++ [What's your impression of her?] + -> elena_impression + +=== elena_compliance === +#speaker:trader + +Trader: Obsessively. She reviews every flagged transaction personally. + +Trader: Actually, she's been stressed lately. I think some of the activity patterns are bothering her. + +Trader: But she hasn't said anything specific. + +-> hub + +=== elena_impression === +#speaker:trader + +Trader: Smart, intense, kinda distant. But fair. + +Trader: She believes in what we're doing—financial privacy as a right. + +Trader: I think she struggles with the fact that good tech can be used for bad things. + +-> hub diff --git a/scenarios/m06_follow_the_money/ink/m06_npc_trader.json b/scenarios/m06_follow_the_money/ink/m06_npc_trader.json new file mode 100644 index 0000000..81eef1b --- /dev/null +++ b/scenarios/m06_follow_the_money/ink/m06_npc_trader.json @@ -0,0 +1 @@ +{"inkVersion":21,"root":[[["done",{"#n":"g-0"}],null],"done",{"start":["#","^speaker:trader","/#","ev",{"VAR?":"first_meeting"},"/ev",[{"->":".^.b","c":true},{"b":["\n","ev",false,"/ev",{"VAR=":"first_meeting","re":true},"#","^display:trader-casual","/#","^A young trader watches multiple crypto price charts, occasionally placing trades.","\n","^Trader: Hey, you're the compliance person, right? From FinCEN?","\n","^Trader: Don't worry, we're legit. Mostly. *grins*","\n","ev","str","^Mostly?","/str","/ev",{"*":".^.c-0","flg":4},"ev","str","^I'm just doing a standard audit","/str","/ev",{"*":".^.c-1","flg":4},"ev","str","^Tell me about the exchange's operations","/str","/ev",{"*":".^.c-2","flg":4},{"->":"start.7"},{"c-0":["\n","^You: That's an interesting qualifier.","\n","^Trader: *laughs* I'm kidding. Everything's above board. Elena makes sure of that.","\n",{"->":"hub"},null],"c-1":["\n","^You: Nothing to worry about if everything's compliant.","\n","^Trader: Cool cool. Let me know if you need anything.","\n",{"->":"hub"},null],"c-2":["\n",{"->":"operations_overview"},null]}]}],"nop","\n","ev",{"VAR?":"first_meeting"},"!","/ev",[{"->":".^.b","c":true},{"b":["\n","#","^display:trader-friendly","/#","^Trader: What's up?","\n",{"->":"hub"},{"->":"start.14"},null]}],"nop","\n",null],"operations_overview":[["#","^speaker:trader","/#","^Trader: We're a mid-size crypto exchange. Focus on privacy coins—Monero, Zcash, stuff like that.","\n","^Trader: High volume, fast transactions, low fees. Competitive market.","\n","ev","str","^Why focus on privacy coins?","/str","/ev",{"*":".^.c-0","flg":4},"ev","str","^What's the daily volume?","/str","/ev",{"*":".^.c-1","flg":4},{"c-0":["\n",{"->":"privacy_coin_focus"},null],"c-1":["\n","ev",true,"/ev",{"VAR=":"topic_volume","re":true},{"->":"volume_discussion"},null]}],null],"hub":[["ev","str","^Ask about trading volume","/str",{"VAR?":"topic_volume"},"!","/ev",{"*":".^.c-0","flg":5},"ev","str","^Ask about Monero usage","/str",{"VAR?":"topic_monero"},"!","/ev",{"*":".^.c-1","flg":5},"ev","str","^Ask about Elena Volkov","/str",{"VAR?":"topic_elena"},"!","/ev",{"*":".^.c-2","flg":5},"ev","str","^That's all, thanks","/str","/ev",{"*":".^.c-3","flg":4},{"c-0":["\n",{"->":"volume_discussion"},null],"c-1":["\n",{"->":"monero_discussion"},null],"c-2":["\n",{"->":"elena_discussion"},null],"c-3":["\n","#","^exit_conversation","/#","#","^speaker:trader","/#","^Trader: No problem. Happy trading!","\n","done",null]}],null],"volume_discussion":[["#","^speaker:trader","/#","ev",true,"/ev",{"VAR=":"topic_volume","re":true},"^Trader: We're doing like $800-900 million USD equivalent per day.","\n","^Trader: Not bad for a mid-size exchange. Elena's infrastructure is solid.","\n","^Trader: Mostly Bitcoin, Ethereum, but the Monero volume has been crazy lately.","\n","ev","str","^Crazy how?","/str","/ev",{"*":".^.c-0","flg":4},"ev","str","^That's impressive volume","/str","/ev",{"*":".^.c-1","flg":4},{"c-0":["\n",{"->":"monero_surge"},null],"c-1":["\n","^Trader: Yeah, privacy coin demand is skyrocketing.","\n",{"->":"hub"},null]}],null],"monero_surge":[["#","^speaker:trader","/#","^Trader: Like, 3-4x normal. Big wallets converting Bitcoin to Monero, mixing through multiple addresses, converting back.","\n","^Trader: Classic mixing pattern. Totally legal, but... yeah.","\n","ev","str","^You report these patterns?","/str","/ev",{"*":".^.c-0","flg":4},"ev","str","^Is that suspicious?","/str","/ev",{"*":".^.c-1","flg":4},{"c-0":["\n",{"->":"reporting_discussion"},null],"c-1":["\n",{"->":"suspicious_activity"},null]}],null],"reporting_discussion":["#","^speaker:trader","/#","^Trader: Oh yeah, we flag everything. Elena runs analysis, files SARs when needed.","\n","^Trader: We're compliant. Just... we're also privacy-focused. That's our brand.","\n",{"->":"hub"},null],"suspicious_activity":["#","^speaker:trader","/#","^Trader: *shrugs* Depends on your perspective.","\n","^Trader: Some people want financial privacy. Some want to hide money. Hard to tell which is which from transaction patterns.","\n","^Trader: That's your job, I guess. *gestures at you*","\n",{"->":"hub"},null],"privacy_coin_focus":[["#","^speaker:trader","/#","ev",true,"/ev",{"VAR=":"topic_monero","re":true},"^Trader: Satoshi's philosophy. \"Financial freedom through cryptography.\"","\n","^Trader: People should be able to transact without government surveillance. Privacy is a right.","\n","ev","str","^That sounds like ideology, not business","/str","/ev",{"*":".^.c-0","flg":4},"ev","str","^Privacy can enable illegal activity","/str","/ev",{"*":".^.c-1","flg":4},{"c-0":["\n",{"->":"ideology_response"},null],"c-1":["\n",{"->":"illegal_activity_response"},null]}],null],"ideology_response":["#","^speaker:trader","/#","^Trader: It's both! Satoshi's a true believer, but it's also profitable.","\n","^Trader: Privacy coin traders pay premium fees. We make bank.","\n",{"->":"hub"},null],"illegal_activity_response":["#","^speaker:trader","/#","^Trader: Sure. And regular currency enables illegal activity too.","\n","^Trader: You gonna shut down every bank because some people launder money?","\n","^Trader: We follow the law. We file reports. What people do with their privacy is their business.","\n",{"->":"hub"},null],"monero_discussion":[["#","^speaker:trader","/#","ev",true,"/ev",{"VAR=":"topic_monero","re":true},"^Trader: Monero's untraceable. That's the whole point.","\n","^Trader: Bitcoin is pseudonymous—you can track wallets. Monero is truly anonymous.","\n","^Trader: Makes it perfect for privacy. Also perfect for money laundering, I guess.","\n","ev","str","^Do you think the exchange is being used for money laundering?","/str","/ev",{"*":".^.c-0","flg":4},"ev","str","^How does the mixing work?","/str","/ev",{"*":".^.c-1","flg":4},{"c-0":["\n",{"->":"laundering_opinion"},null],"c-1":["\n",{"->":"mixing_explanation"},null]}],null],"laundering_opinion":[["#","^speaker:trader","/#","^Trader: *uncomfortable* I mean... I don't ask questions. I just execute trades.","\n","^Trader: Elena and Satoshi handle compliance. I'm just the guy watching charts.","\n","ev","str","^You must have suspicions","/str","/ev",{"*":".^.c-0","flg":4},"ev","str","^Fair enough","/str","/ev",{"*":".^.c-1","flg":4},{"c-0":["\n",{"->":"trader_suspicions"},null],"c-1":["\n",{"->":"hub"},null]}],null],"trader_suspicions":["#","^speaker:trader","/#","^Trader: *lowers voice* Between you and me? Some of the transaction patterns are... weird.","\n","^Trader: Like, coordinated. Multiple big wallets mixing at the same time, same amounts, same destination patterns.","\n","^Trader: I flagged it to Elena. She said she's investigating.","\n","^Trader: But honestly? I just want to keep my job and not think about it too hard.","\n",{"->":"hub"},null],"mixing_explanation":["#","^speaker:trader","/#","^Trader: User sends Bitcoin to us. We convert to Monero. Send through 5-10 different wallets.","\n","^Trader: Then convert back to Bitcoin from a completely unlinked address.","\n","^Trader: Blockchain shows Bitcoin in, Bitcoin out. But the Monero middle step? Untraceable.","\n","^Trader: Perfectly legal mixing service. We're transparent about it.","\n",{"->":"hub"},null],"elena_discussion":[["#","^speaker:trader","/#","ev",true,"/ev",{"VAR=":"topic_elena","re":true},"^Trader: Elena's brilliant. Like, PhD in cryptography brilliant.","\n","^Trader: She designed all our privacy protocols. Zero-knowledge proofs, homomorphic encryption...","\n","^Trader: Way above my paygrade. I just use the systems she builds.","\n","ev","str","^Does she seem concerned about compliance?","/str","/ev",{"*":".^.c-0","flg":4},"ev","str","^What's your impression of her?","/str","/ev",{"*":".^.c-1","flg":4},{"c-0":["\n",{"->":"elena_compliance"},null],"c-1":["\n",{"->":"elena_impression"},null]}],null],"elena_compliance":["#","^speaker:trader","/#","^Trader: Obsessively. She reviews every flagged transaction personally.","\n","^Trader: Actually, she's been stressed lately. I think some of the activity patterns are bothering her.","\n","^Trader: But she hasn't said anything specific.","\n",{"->":"hub"},null],"elena_impression":["#","^speaker:trader","/#","^Trader: Smart, intense, kinda distant. But fair.","\n","^Trader: She believes in what we're doing—financial privacy as a right.","\n","^Trader: I think she struggles with the fact that good tech can be used for bad things.","\n",{"->":"hub"},null],"global decl":["ev",false,{"VAR=":"trader_talked"},false,{"VAR=":"topic_volume"},false,{"VAR=":"topic_monero"},false,{"VAR=":"topic_elena"},true,{"VAR=":"first_meeting"},"str","^Agent 0x00","/str",{"VAR=":"player_name"},"/ev","end",null]}],"listDefs":{}} \ No newline at end of file diff --git a/scenarios/m06_follow_the_money/ink/m06_opening_briefing.ink b/scenarios/m06_follow_the_money/ink/m06_opening_briefing.ink new file mode 100644 index 0000000..60f9a1d --- /dev/null +++ b/scenarios/m06_follow_the_money/ink/m06_opening_briefing.ink @@ -0,0 +1,329 @@ +// ================================================ +// Mission 6: Follow the Money - Opening Briefing +// Agent 0x99 "Haxolottle" briefs Agent 0x00 +// Financial investigation of ENTROPY's funding network +// ================================================ + +// Variables for tracking player questions +VAR asked_about_connections = false +VAR asked_about_exchange = false +VAR asked_about_elena = false +VAR asked_about_architect_fund = false +VAR mission_accepted = false + +// External variables +VAR player_name = "Agent 0x00" + +// ================================================ +// START: BRIEFING BEGINS +// ================================================ + +=== start === +Agent 0x99: {player_name}, great work on the previous missions. But now we need to answer the big question. + +Agent 0x99: Where's the money coming from? + ++ [Following the financial trail?] + -> financial_investigation ++ [What money are we talking about?] + -> money_explanation ++ [I'm ready. What's the target?] + -> financial_investigation + +// ================================================ +// MONEY EXPLANATION +// ================================================ + +=== money_explanation === +Agent 0x99: Think about it. The hospital ransomware from Mission 2? $2.4 million paid. + +Agent 0x99: The corporate espionage data from Mission 5? $847,000 in cryptocurrency. + +Agent 0x99: All ENTROPY cells are funded. Someone's coordinating the finances. + +-> financial_investigation + +// ================================================ +// FINANCIAL INVESTIGATION +// ================================================ + +=== financial_investigation === +Agent 0x99: Our blockchain analysts traced the cryptocurrency payments. And they all lead to one place. + +Agent 0x99: HashChain Exchange. A cryptocurrency trading platform run by ENTROPY's Crypto Anarchists cell. + ++ [How does the exchange fit in?] + ~ asked_about_exchange = true + -> exchange_role ++ [What are we dealing with?] + -> crypto_anarchists ++ [Where do all the payments go?] + -> architect_fund_hint + +=== exchange_role === +Agent 0x99: HashChain isn't just a trading platform. It's the financial hub for all ENTROPY operations. + +Agent 0x99: They provide mixing services—converting Bitcoin to untraceable privacy coins like Monero, then back again. + +Agent 0x99: Every cell funnels money through them. It's the perfect money laundering infrastructure. + +-> crypto_anarchists + +// ================================================ +// CRYPTO ANARCHISTS +// ================================================ + +=== crypto_anarchists === +Agent 0x99: The Crypto Anarchists are true believers. "Financial freedom through cryptography." + +Agent 0x99: They think government control of money is tyranny. Cryptocurrency is liberation. + ++ [So they're ideologically motivated?] + -> ideology_discussion ++ [Who's running HashChain?] + -> leadership_discussion ++ [What's our mission objective?] + -> mission_objectives + +=== ideology_discussion === +Agent 0x99: Absolutely. Their leader calls himself "Satoshi Nakamoto II"—obviously not the real Bitcoin creator. + +Agent 0x99: But here's the thing: they're not just running an exchange. They're funding terrorism in the name of accelerating the collapse of centralized finance. + +-> leadership_discussion + +// ================================================ +// LEADERSHIP DISCUSSION +// ================================================ + +=== leadership_discussion === +Agent 0x99: Two key targets: + +Agent 0x99: "Satoshi Nakamoto II"—the CEO. True believer, charismatic leader, probably unreachable for recruitment. + +Agent 0x99: Dr. Elena Volkov—the CTO. Brilliant cryptographer. Former academic. And... potentially recruitable. + ++ [Why would she help us?] + ~ asked_about_elena = true + -> elena_background ++ [What makes you think she's recruitable?] + ~ asked_about_elena = true + -> elena_background ++ [What about the money trail?] + -> architect_fund_hint + +=== elena_background === +Agent 0x99: Elena's a genius. Published 37 papers on cryptography. 2,847 citations. + +Agent 0x99: She built HashChain's privacy infrastructure. But our psychological profile suggests moral conflict. + +Agent 0x99: She designed these systems for "financial freedom." Now they're being used for ransomware, espionage, funding attacks. + ++ [Think she'll flip?] + -> recruitment_possibility ++ [What if she refuses?] + -> arrest_option + +=== recruitment_possibility === +Agent 0x99: It's possible. If you can show her the full scope of what her work is enabling—the casualties, the attacks—she might turn. + +Agent 0x99: A cryptographer of her caliber would be a massive intelligence asset. + +-> mission_objectives + +=== arrest_option === +Agent 0x99: Then we arrest her and eliminate her expertise from ENTROPY's network. + +Agent 0x99: But {player_name}, if there's any chance of recruitment, it's worth trying. Her knowledge could crack multiple cells. + +-> mission_objectives + +// ================================================ +// ARCHITECT FUND HINT +// ================================================ + +=== architect_fund_hint === +Agent 0x99: That's what we need you to find out. + +Agent 0x99: Our blockchain analysis shows all ENTROPY payments flowing into HashChain's mixers... + +Agent 0x99: But then the trail goes dark. Privacy coins make it nearly impossible to track from the outside. + ++ [So I need access to their internal records?] + ~ asked_about_architect_fund = true + -> internal_access ++ [What am I looking for?] + ~ asked_about_architect_fund = true + -> evidence_targets + +=== internal_access === +Agent 0x99: Exactly. Their financial database, transaction logs, wallet recovery keys. + +Agent 0x99: The blockchain is public, but their internal mixing records will show us where the money actually goes. + +-> evidence_targets + +=== evidence_targets === +Agent 0x99: Look for destination wallets, fund allocations, anything connecting to other ENTROPY cells. + +Agent 0x99: If there's a master fund coordinating everything, it'll be in their records. + +-> mission_objectives + +// ================================================ +// MISSION OBJECTIVES +// ================================================ + +=== mission_objectives === +Agent 0x99: Your mission objectives: + +Agent 0x99: One—Infiltrate HashChain Exchange as a compliance auditor. Perfect cover for financial investigation. + +Agent 0x99: Two—Access their backend servers and crack passwords to reach financial records. + +Agent 0x99: Three—Map the complete ENTROPY financial network. Every cell, every wallet, every transaction. + ++ [How do I access the servers?] + -> technical_approach ++ [What about Elena and Satoshi?] + -> npc_strategy ++ [What resources do I have?] + -> resources + +// ================================================ +// TECHNICAL APPROACH +// ================================================ + +=== technical_approach === +Agent 0x99: Their server room is password-protected. Typical crypto-themed passwords—we'll provide hints. + +Agent 0x99: Once you crack the first server, look for credential reuse. System admins get lazy. + +Agent 0x99: Your VM access terminal will let you practice password cracking against their infrastructure. + ++ [What am I looking for in the financial data?] + -> financial_targets ++ [Tell me about the cover story] + -> cover_story + +=== financial_targets === +Agent 0x99: Transaction records connecting Mission 2's ransomware and Mission 5's espionage payments. + +Agent 0x99: Wallet addresses for all ENTROPY cells. + +Agent 0x99: And anything about coordinated funding—a master fund distributing money to multiple operations. + +-> cover_story + +// ================================================ +// NPC STRATEGY +// ================================================ + +=== npc_strategy === +Agent 0x99: Build rapport with Elena. She's your best intelligence source and potential recruit. + +Agent 0x99: Satoshi is a true believer—useful for understanding their ideology, but unlikely to cooperate. + +Agent 0x99: The traders and analysts are mostly innocent. They think they work at a legitimate exchange. + +-> cover_story + +// ================================================ +// COVER STORY +// ================================================ + +=== cover_story === +Agent 0x99: You're a compliance auditor from FinCEN—Financial Crimes Enforcement Network. + +Agent 0x99: Cryptocurrency exchanges face constant regulatory scrutiny. Your audit is completely normal. + +Agent 0x99: Elena will meet you as CTO. She'll provide access to systems for "compliance verification." + ++ [What if they see through the cover?] + -> cover_backup ++ [I'm ready to deploy] + -> final_briefing + +=== cover_backup === +Agent 0x99: Your credentials are genuine—we have real FinCEN paperwork. HashChain has no reason to suspect. + +Agent 0x99: And even if they do? You'll be inside their systems before they can react. + +-> final_briefing + +// ================================================ +// RESOURCES +// ================================================ + +=== resources === +Agent 0x99: You'll have phone contact with me throughout the mission. + +Agent 0x99: SAFETYNET flag station in their server room for submitting intelligence. + +Agent 0x99: And {player_name}—I've uploaded password cracking tools and dictionaries to your VM environment. + ++ [What about physical tools?] + -> physical_tools ++ [Understood. Ready to go] + -> final_briefing + +=== physical_tools === +Agent 0x99: RFID badge cloner for accessing restricted areas. You'll find one inside—these crypto types love their security toys. + +Agent 0x99: Everything else you need should be available as an "auditor." Leverage your cover. + +-> final_briefing + +// ================================================ +// FINAL BRIEFING +// ================================================ + +=== final_briefing === +Agent 0x99: {player_name}, this is a critical mission. + +Agent 0x99: We've been fighting individual ENTROPY cells. This is our chance to understand the entire financial infrastructure. + +Agent 0x99: Map the network. Find where the money goes. And if you can recruit Elena? That's a strategic intelligence win. + ++ [What if I find something bigger than individual cells?] + -> bigger_picture ++ [Any final advice?] + -> final_advice ++ [I'm ready to go] + -> deployment + +=== bigger_picture === +Agent 0x99: Then we've struck gold. + +Agent 0x99: If there's a central fund coordinating all ENTROPY operations, that's the kind of intelligence that could let us move against multiple cells simultaneously. + +Agent 0x99: Follow the money. It always tells the truth. + +-> deployment + +=== final_advice === +Agent 0x99: Remember: Elena is brilliant but conflicted. Appeal to her ethics, not her ideology. + +Agent 0x99: Satoshi is a true believer. Understand his perspective but don't expect conversion. + +Agent 0x99: And crack those passwords carefully—you'll need access to multiple servers to piece together the complete network. + +-> deployment + +// ================================================ +// DEPLOYMENT +// ================================================ + +=== deployment === +Agent 0x99: One more thing: we're racing the clock. + +Agent 0x99: Our intelligence suggests a major fund distribution happening soon. If ENTROPY moves money to all cells simultaneously, they're coordinating something big. + +Agent 0x99: Get inside. Map the network. Find the fund. And make the critical choices about assets and recruitment. + +Agent 0x99: HashChain Exchange is the financial heart of ENTROPY. Let's see if we can stop it from beating. + +~ mission_accepted = true + +#exit_conversation +-> END diff --git a/scenarios/m06_follow_the_money/ink/m06_opening_briefing.json b/scenarios/m06_follow_the_money/ink/m06_opening_briefing.json new file mode 100644 index 0000000..89754f4 --- /dev/null +++ b/scenarios/m06_follow_the_money/ink/m06_opening_briefing.json @@ -0,0 +1 @@ +{"inkVersion":21,"root":[[["done",{"#n":"g-0"}],null],"done",{"start":[["^Agent 0x99: ","ev",{"VAR?":"player_name"},"out","/ev","^, great work on the previous missions. But now we need to answer the big question.","\n","^Agent 0x99: Where's the money coming from?","\n","ev","str","^Following the financial trail?","/str","/ev",{"*":".^.c-0","flg":4},"ev","str","^What money are we talking about?","/str","/ev",{"*":".^.c-1","flg":4},"ev","str","^I'm ready. What's the target?","/str","/ev",{"*":".^.c-2","flg":4},{"c-0":["\n",{"->":"financial_investigation"},null],"c-1":["\n",{"->":"money_explanation"},null],"c-2":["\n",{"->":"financial_investigation"},null]}],null],"money_explanation":["^Agent 0x99: Think about it. The hospital ransomware from Mission 2? $2.4 million paid.","\n","^Agent 0x99: The corporate espionage data from Mission 5? $847,000 in cryptocurrency.","\n","^Agent 0x99: All ENTROPY cells are funded. Someone's coordinating the finances.","\n",{"->":"financial_investigation"},null],"financial_investigation":[["^Agent 0x99: Our blockchain analysts traced the cryptocurrency payments. And they all lead to one place.","\n","^Agent 0x99: HashChain Exchange. A cryptocurrency trading platform run by ENTROPY's Crypto Anarchists cell.","\n","ev","str","^How does the exchange fit in?","/str","/ev",{"*":".^.c-0","flg":4},"ev","str","^What are we dealing with?","/str","/ev",{"*":".^.c-1","flg":4},"ev","str","^Where do all the payments go?","/str","/ev",{"*":".^.c-2","flg":4},{"c-0":["\n","ev",true,"/ev",{"VAR=":"asked_about_exchange","re":true},{"->":"exchange_role"},null],"c-1":["\n",{"->":"crypto_anarchists"},null],"c-2":["\n",{"->":"architect_fund_hint"},null]}],null],"exchange_role":["^Agent 0x99: HashChain isn't just a trading platform. It's the financial hub for all ENTROPY operations.","\n","^Agent 0x99: They provide mixing services—converting Bitcoin to untraceable privacy coins like Monero, then back again.","\n","^Agent 0x99: Every cell funnels money through them. It's the perfect money laundering infrastructure.","\n",{"->":"crypto_anarchists"},null],"crypto_anarchists":[["^Agent 0x99: The Crypto Anarchists are true believers. \"Financial freedom through cryptography.\"","\n","^Agent 0x99: They think government control of money is tyranny. Cryptocurrency is liberation.","\n","ev","str","^So they're ideologically motivated?","/str","/ev",{"*":".^.c-0","flg":4},"ev","str","^Who's running HashChain?","/str","/ev",{"*":".^.c-1","flg":4},"ev","str","^What's our mission objective?","/str","/ev",{"*":".^.c-2","flg":4},{"c-0":["\n",{"->":"ideology_discussion"},null],"c-1":["\n",{"->":"leadership_discussion"},null],"c-2":["\n",{"->":"mission_objectives"},null]}],null],"ideology_discussion":["^Agent 0x99: Absolutely. Their leader calls himself \"Satoshi Nakamoto II\"—obviously not the real Bitcoin creator.","\n","^Agent 0x99: But here's the thing: they're not just running an exchange. They're funding terrorism in the name of accelerating the collapse of centralized finance.","\n",{"->":"leadership_discussion"},null],"leadership_discussion":[["^Agent 0x99: Two key targets:","\n","^Agent 0x99: \"Satoshi Nakamoto II\"—the CEO. True believer, charismatic leader, probably unreachable for recruitment.","\n","^Agent 0x99: Dr. Elena Volkov—the CTO. Brilliant cryptographer. Former academic. And... potentially recruitable.","\n","ev","str","^Why would she help us?","/str","/ev",{"*":".^.c-0","flg":4},"ev","str","^What makes you think she's recruitable?","/str","/ev",{"*":".^.c-1","flg":4},"ev","str","^What about the money trail?","/str","/ev",{"*":".^.c-2","flg":4},{"c-0":["\n","ev",true,"/ev",{"VAR=":"asked_about_elena","re":true},{"->":"elena_background"},null],"c-1":["\n","ev",true,"/ev",{"VAR=":"asked_about_elena","re":true},{"->":"elena_background"},null],"c-2":["\n",{"->":"architect_fund_hint"},null]}],null],"elena_background":[["^Agent 0x99: Elena's a genius. Published 37 papers on cryptography. 2,847 citations.","\n","^Agent 0x99: She built HashChain's privacy infrastructure. But our psychological profile suggests moral conflict.","\n","^Agent 0x99: She designed these systems for \"financial freedom.\" Now they're being used for ransomware, espionage, funding attacks.","\n","ev","str","^Think she'll flip?","/str","/ev",{"*":".^.c-0","flg":4},"ev","str","^What if she refuses?","/str","/ev",{"*":".^.c-1","flg":4},{"c-0":["\n",{"->":"recruitment_possibility"},null],"c-1":["\n",{"->":"arrest_option"},null]}],null],"recruitment_possibility":["^Agent 0x99: It's possible. If you can show her the full scope of what her work is enabling—the casualties, the attacks—she might turn.","\n","^Agent 0x99: A cryptographer of her caliber would be a massive intelligence asset.","\n",{"->":"mission_objectives"},null],"arrest_option":["^Agent 0x99: Then we arrest her and eliminate her expertise from ENTROPY's network.","\n","^Agent 0x99: But ","ev",{"VAR?":"player_name"},"out","/ev","^, if there's any chance of recruitment, it's worth trying. Her knowledge could crack multiple cells.","\n",{"->":"mission_objectives"},null],"architect_fund_hint":[["^Agent 0x99: That's what we need you to find out.","\n","^Agent 0x99: Our blockchain analysis shows all ENTROPY payments flowing into HashChain's mixers...","\n","^Agent 0x99: But then the trail goes dark. Privacy coins make it nearly impossible to track from the outside.","\n","ev","str","^So I need access to their internal records?","/str","/ev",{"*":".^.c-0","flg":4},"ev","str","^What am I looking for?","/str","/ev",{"*":".^.c-1","flg":4},{"c-0":["\n","ev",true,"/ev",{"VAR=":"asked_about_architect_fund","re":true},{"->":"internal_access"},null],"c-1":["\n","ev",true,"/ev",{"VAR=":"asked_about_architect_fund","re":true},{"->":"evidence_targets"},null]}],null],"internal_access":["^Agent 0x99: Exactly. Their financial database, transaction logs, wallet recovery keys.","\n","^Agent 0x99: The blockchain is public, but their internal mixing records will show us where the money actually goes.","\n",{"->":"evidence_targets"},null],"evidence_targets":["^Agent 0x99: Look for destination wallets, fund allocations, anything connecting to other ENTROPY cells.","\n","^Agent 0x99: If there's a master fund coordinating everything, it'll be in their records.","\n",{"->":"mission_objectives"},null],"mission_objectives":[["^Agent 0x99: Your mission objectives:","\n","^Agent 0x99: One—Infiltrate HashChain Exchange as a compliance auditor. Perfect cover for financial investigation.","\n","^Agent 0x99: Two—Access their backend servers and crack passwords to reach financial records.","\n","^Agent 0x99: Three—Map the complete ENTROPY financial network. Every cell, every wallet, every transaction.","\n","ev","str","^How do I access the servers?","/str","/ev",{"*":".^.c-0","flg":4},"ev","str","^What about Elena and Satoshi?","/str","/ev",{"*":".^.c-1","flg":4},"ev","str","^What resources do I have?","/str","/ev",{"*":".^.c-2","flg":4},{"c-0":["\n",{"->":"technical_approach"},null],"c-1":["\n",{"->":"npc_strategy"},null],"c-2":["\n",{"->":"resources"},null]}],null],"technical_approach":[["^Agent 0x99: Their server room is password-protected. Typical crypto-themed passwords—we'll provide hints.","\n","^Agent 0x99: Once you crack the first server, look for credential reuse. System admins get lazy.","\n","^Agent 0x99: Your VM access terminal will let you practice password cracking against their infrastructure.","\n","ev","str","^What am I looking for in the financial data?","/str","/ev",{"*":".^.c-0","flg":4},"ev","str","^Tell me about the cover story","/str","/ev",{"*":".^.c-1","flg":4},{"c-0":["\n",{"->":"financial_targets"},null],"c-1":["\n",{"->":"cover_story"},null]}],null],"financial_targets":["^Agent 0x99: Transaction records connecting Mission 2's ransomware and Mission 5's espionage payments.","\n","^Agent 0x99: Wallet addresses for all ENTROPY cells.","\n","^Agent 0x99: And anything about coordinated funding—a master fund distributing money to multiple operations.","\n",{"->":"cover_story"},null],"npc_strategy":["^Agent 0x99: Build rapport with Elena. She's your best intelligence source and potential recruit.","\n","^Agent 0x99: Satoshi is a true believer—useful for understanding their ideology, but unlikely to cooperate.","\n","^Agent 0x99: The traders and analysts are mostly innocent. They think they work at a legitimate exchange.","\n",{"->":"cover_story"},null],"cover_story":[["^Agent 0x99: You're a compliance auditor from FinCEN—Financial Crimes Enforcement Network.","\n","^Agent 0x99: Cryptocurrency exchanges face constant regulatory scrutiny. Your audit is completely normal.","\n","^Agent 0x99: Elena will meet you as CTO. She'll provide access to systems for \"compliance verification.\"","\n","ev","str","^What if they see through the cover?","/str","/ev",{"*":".^.c-0","flg":4},"ev","str","^I'm ready to deploy","/str","/ev",{"*":".^.c-1","flg":4},{"c-0":["\n",{"->":"cover_backup"},null],"c-1":["\n",{"->":"final_briefing"},null]}],null],"cover_backup":["^Agent 0x99: Your credentials are genuine—we have real FinCEN paperwork. HashChain has no reason to suspect.","\n","^Agent 0x99: And even if they do? You'll be inside their systems before they can react.","\n",{"->":"final_briefing"},null],"resources":[["^Agent 0x99: You'll have phone contact with me throughout the mission.","\n","^Agent 0x99: SAFETYNET flag station in their server room for submitting intelligence.","\n","^Agent 0x99: And ","ev",{"VAR?":"player_name"},"out","/ev","^—I've uploaded password cracking tools and dictionaries to your VM environment.","\n","ev","str","^What about physical tools?","/str","/ev",{"*":".^.c-0","flg":4},"ev","str","^Understood. Ready to go","/str","/ev",{"*":".^.c-1","flg":4},{"c-0":["\n",{"->":"physical_tools"},null],"c-1":["\n",{"->":"final_briefing"},null]}],null],"physical_tools":["^Agent 0x99: RFID badge cloner for accessing restricted areas. You'll find one inside—these crypto types love their security toys.","\n","^Agent 0x99: Everything else you need should be available as an \"auditor.\" Leverage your cover.","\n",{"->":"final_briefing"},null],"final_briefing":[["^Agent 0x99: ","ev",{"VAR?":"player_name"},"out","/ev","^, this is a critical mission.","\n","^Agent 0x99: We've been fighting individual ENTROPY cells. This is our chance to understand the entire financial infrastructure.","\n","^Agent 0x99: Map the network. Find where the money goes. And if you can recruit Elena? That's a strategic intelligence win.","\n","ev","str","^What if I find something bigger than individual cells?","/str","/ev",{"*":".^.c-0","flg":4},"ev","str","^Any final advice?","/str","/ev",{"*":".^.c-1","flg":4},"ev","str","^I'm ready to go","/str","/ev",{"*":".^.c-2","flg":4},{"c-0":["\n",{"->":"bigger_picture"},null],"c-1":["\n",{"->":"final_advice"},null],"c-2":["\n",{"->":"deployment"},null]}],null],"bigger_picture":["^Agent 0x99: Then we've struck gold.","\n","^Agent 0x99: If there's a central fund coordinating all ENTROPY operations, that's the kind of intelligence that could let us move against multiple cells simultaneously.","\n","^Agent 0x99: Follow the money. It always tells the truth.","\n",{"->":"deployment"},null],"final_advice":["^Agent 0x99: Remember: Elena is brilliant but conflicted. Appeal to her ethics, not her ideology.","\n","^Agent 0x99: Satoshi is a true believer. Understand his perspective but don't expect conversion.","\n","^Agent 0x99: And crack those passwords carefully—you'll need access to multiple servers to piece together the complete network.","\n",{"->":"deployment"},null],"deployment":["^Agent 0x99: One more thing: we're racing the clock.","\n","^Agent 0x99: Our intelligence suggests a major fund distribution happening soon. If ENTROPY moves money to all cells simultaneously, they're coordinating something big.","\n","^Agent 0x99: Get inside. Map the network. Find the fund. And make the critical choices about assets and recruitment.","\n","^Agent 0x99: HashChain Exchange is the financial heart of ENTROPY. Let's see if we can stop it from beating.","\n","ev",true,"/ev",{"VAR=":"mission_accepted","re":true},"#","^exit_conversation","/#","end",null],"global decl":["ev",false,{"VAR=":"asked_about_connections"},false,{"VAR=":"asked_about_exchange"},false,{"VAR=":"asked_about_elena"},false,{"VAR=":"asked_about_architect_fund"},false,{"VAR=":"mission_accepted"},"str","^Agent 0x00","/str",{"VAR=":"player_name"},"/ev","end",null]}],"listDefs":{}} \ No newline at end of file diff --git a/scenarios/m06_follow_the_money/ink/m06_phone_agent_0x99.ink b/scenarios/m06_follow_the_money/ink/m06_phone_agent_0x99.ink new file mode 100644 index 0000000..1b2809a --- /dev/null +++ b/scenarios/m06_follow_the_money/ink/m06_phone_agent_0x99.ink @@ -0,0 +1,372 @@ +// ================================================ +// Mission 6: Follow the Money - Agent 0x99 Phone Support +// Financial Investigation Guidance & Event Reactions +// Provides help, hints, and contextual support +// ================================================ + +VAR password_hint_given = false +VAR blockchain_hint_given = false +VAR elena_guidance_given = false +VAR first_contact = true + +// External variables +VAR player_name = "Agent 0x00" +VAR found_password_lists = false +VAR found_blockchain_evidence = false +VAR found_architects_fund = false +VAR elena_recruited = false +VAR elena_arrested = false + +// ================================================ +// START: PHONE SUPPORT +// ================================================ + +=== start === +{first_contact: + ~ first_contact = false + -> first_call +} +{not first_contact: + -> support_hub +} + +// ================================================ +// FIRST CALL (Orientation) +// ================================================ + +=== first_call === +#speaker:agent_0x99 + +Agent 0x99: {player_name}, you're inside HashChain Exchange. How's the compliance auditor cover holding up? + +Agent 0x99: This is a financial investigation. Follow the money, map the network, and find where ENTROPY's funding goes. + ++ [Cover is solid so far] + Agent 0x99: Good. Elena should buy the FinCEN audit story. Crypto exchanges are constantly under regulatory scrutiny. + -> support_hub ++ [What should I focus on first?] + -> initial_guidance ++ [I'll call if I need help] + #exit_conversation + Agent 0x99: Roger that. I'm tracking your progress. Call anytime. + -> support_hub + +=== initial_guidance === +Agent 0x99: Priority one: Build rapport with Elena Volkov, the CTO. She's your access point and potential recruit. + +Agent 0x99: Priority two: Access the backend servers. That's where the financial records are. + +Agent 0x99: Priority three: Map the complete ENTROPY financial network. Every transaction linking cells together. + +-> support_hub + +// ================================================ +// SUPPORT HUB (General Help) +// ================================================ + +=== support_hub === +#speaker:agent_0x99 + +Agent 0x99: What do you need help with? + ++ {not password_hint_given} [Password cracking guidance] + -> password_help ++ {not blockchain_hint_given} [Blockchain analysis tips] + -> blockchain_help ++ {not elena_guidance_given} [Elena Volkov recruitment strategy] + -> elena_guidance ++ [General mission advice] + -> general_advice ++ [I'm good for now] + #exit_conversation + Agent 0x99: Copy that. Call anytime. + -> support_hub + +// ================================================ +// PASSWORD CRACKING HELP +// ================================================ + +=== password_help === +~ password_hint_given = true + +Agent 0x99: Server passwords at crypto exchanges follow patterns. Think crypto-themed terms plus years. + +Agent 0x99: "bitcoin2024", "ethereum2025", "satoshi2024"—variations on cryptocurrency names and dates. + +Agent 0x99: Once you crack the first server, look for credential reuse. Admins get lazy with multiple systems. + ++ [What tools should I use?] + Agent 0x99: Your VM environment has Hydra for brute forcing and John the Ripper for hash cracking. + Agent 0x99: Look for password lists in Elena's inventory or around the trading floor. + -> support_hub ++ [Got it, thanks] + -> support_hub + +// ================================================ +// BLOCKCHAIN ANALYSIS HELP +// ================================================ + +=== blockchain_help === +~ blockchain_hint_given = true + +Agent 0x99: Blockchain transactions are public, but privacy coins make tracing nearly impossible without internal records. + +Agent 0x99: Look for transaction analysis documents in the Blockchain Analysis Lab. They'll have wallet addresses and fund flows. + +Agent 0x99: Key targets: wallets from Mission 2's ransomware and Mission 5's espionage. They should all connect through HashChain. + ++ [What am I looking for specifically?] + Agent 0x99: Destination wallets. A master fund receiving money from all cells. + Agent 0x99: If there's coordinated funding, the internal records will show it. + -> support_hub ++ [Thanks] + -> support_hub + +// ================================================ +// ELENA VOLKOV GUIDANCE +// ================================================ + +=== elena_guidance === +~ elena_guidance_given = true + +Agent 0x99: Elena is brilliant but conflicted. She built this infrastructure for "financial freedom." + +Agent 0x99: Now it's funding ransomware, espionage, and attacks. Our psych profile says she's morally troubled. + ++ [How do I recruit her?] + -> recruitment_strategy ++ [What if she refuses?] + -> arrest_strategy + +=== recruitment_strategy === +Agent 0x99: Show her the consequences of her work. The ransomware casualties, the coordinated attacks, The Architect's plan. + +Agent 0x99: Appeal to her ethics, not her ideology. She's a cryptographer, not a terrorist. + +Agent 0x99: If she sees the full scope, she might flip. And {player_name}—her expertise would be invaluable intelligence. + +-> support_hub + +=== arrest_strategy === +Agent 0x99: If recruitment fails, arrest her. Eliminate her expertise from ENTROPY's network. + +Agent 0x99: But try recruitment first. A cryptographer of her caliber is worth the effort. + +-> support_hub + +// ================================================ +// GENERAL ADVICE +// ================================================ + +=== general_advice === +Agent 0x99: Remember: Most employees at HashChain think they work at a legitimate exchange. + +Agent 0x99: Elena and Satoshi know about ENTROPY. The traders and analysts are likely innocent. + ++ [What about Satoshi Nakamoto II?] + -> satoshi_discussion ++ [What's the priority target?] + -> priority_target ++ [Understood] + -> support_hub + +=== satoshi_discussion === +Agent 0x99: Satoshi is a true believer. "Financial freedom through cryptography." + +Agent 0x99: Useful for understanding Crypto Anarchist ideology, but don't expect cooperation. + +Agent 0x99: He'll justify everything in the name of accelerating the collapse of centralized finance. + +-> support_hub + +=== priority_target === +Agent 0x99: The Architect's Fund. A master wallet coordinating funding to all ENTROPY cells. + +Agent 0x99: If we find it, we can map the entire financial network and potentially seize the assets. + +-> support_hub + +// ================================================ +// EVENT: PASSWORD LISTS FOUND +// ================================================ + +=== on_password_lists_found === +#speaker:agent_0x99 + +Agent 0x99: I see you obtained Elena's password dictionary. Smart. + +Agent 0x99: Crypto-themed passwords are common in this industry. Use that list against the backend servers. + +Agent 0x99: Hydra and John the Ripper will make quick work of weak passwords. + ++ [Thanks for the tip] + #exit_conversation + -> support_hub ++ [Any other password hints?] + -> password_help + +// ================================================ +// EVENT: FIRST SERVER CRACKED +// ================================================ + +=== on_first_server_cracked === +#speaker:agent_0x99 +#complete_task:submit_flag1 +#unlock_task:submit_flag2 + +Agent 0x99: First server access confirmed. Excellent password cracking, {player_name}. + +Agent 0x99: Now look for credential reuse. Same passwords across multiple servers is common. + +Agent 0x99: Each server you crack reveals more of the financial network. + ++ [What am I looking for in the data?] + Agent 0x99: Transaction records, wallet addresses, anything linking ENTROPY cells together. + Agent 0x99: And keep an eye out for references to a master fund or coordinator. + #exit_conversation + -> support_hub ++ [On it] + #exit_conversation + -> support_hub + +// ================================================ +// EVENT: BLOCKCHAIN EVIDENCE DISCOVERED +// ================================================ + +=== on_blockchain_discovered === +#speaker:agent_0x99 +#complete_task:find_transaction_records + +Agent 0x99: {player_name}, I'm seeing the blockchain transaction analysis you just found. + +Agent 0x99: This is incredible. Mission 2's ransomware—$2.4 million. Mission 5's espionage—$847,000. + +Agent 0x99: They all flow through HashChain's mixers to a single destination wallet. + ++ [What's the destination?] + -> architects_fund_hint ++ [This connects all the cells] + -> cell_connections + +=== architects_fund_hint === +Agent 0x99: The analysis calls it "1ARCHITECT9FUND." + +Agent 0x99: {player_name}, if this is real... this is the financial heart of ENTROPY. + +Agent 0x99: Find the complete records. We need to know how much money we're talking about and where it's going. + +#exit_conversation +-> support_hub + +=== cell_connections === +Agent 0x99: Exactly. Every ENTROPY cell we've encountered is financially connected through HashChain. + +Agent 0x99: Social Fabric, Crypto Anarchists, Insider Threat Initiative—all funded through this network. + +Agent 0x99: Find the complete allocation records. We need to map the entire structure. + +#exit_conversation +-> support_hub + +// ================================================ +// EVENT: ARCHITECT'S FUND DISCOVERED +// ================================================ + +=== on_architects_fund_discovered === +#speaker:agent_0x99 +#complete_task:discover_architects_fund + +Agent 0x99: {player_name}... I just saw what you pulled from the data center. + +Agent 0x99: The Architect's Fund. $12.8 million USD. Allocated to six different ENTROPY cells. + +Agent 0x99: And the timeline says distribution in 72 hours. + ++ [This is a coordinated attack] + -> coordinated_attack ++ [180-340 projected casualties...] + -> casualty_numbers + +=== coordinated_attack === +Agent 0x99: All cells receiving funding simultaneously. That's not business as usual. + +Agent 0x99: {player_name}, this is the kind of intelligence that could let us move against multiple cells at once. + +Agent 0x99: But we need to decide: Do we seize the assets now, or monitor the transactions to map the complete network? + +-> critical_choice_preview + +=== casualty_numbers === +Agent 0x99: They've calculated projected casualties. They KNOW people will die. + +Agent 0x99: And they're calling it "The Architect's Masterpiece." + +Agent 0x99: {player_name}, this is bigger than any individual cell. This is the coordination we've been looking for. + +-> critical_choice_preview + +=== critical_choice_preview === +Agent 0x99: We're going to face a major choice here. + +Agent 0x99: Seize the cryptocurrency now—immediate impact, cuts ENTROPY funding, but ends our surveillance. + +Agent 0x99: Or monitor the transactions—long-term intelligence, map everyone receiving funds, but ENTROPY keeps operating. + ++ [What do you recommend?] + -> handler_recommendation ++ [I'll think about it] + #exit_conversation + Agent 0x99: Take your time. This decision has strategic implications. + -> support_hub + +=== handler_recommendation === +Agent 0x99: Honestly? I don't know, {player_name}. + +Agent 0x99: Seizing $12.8 million cripples ENTROPY funding immediately. That saves lives. + +Agent 0x99: But monitoring reveals their entire network structure. That saves MORE lives long-term. + +Agent 0x99: This is above my pay grade. You'll make the call when the time comes. + +#exit_conversation +-> support_hub + +// ================================================ +// EVENT: FINANCIAL NETWORK MAPPED +// ================================================ + +=== on_network_complete === +#speaker:agent_0x99 +#unlock_task:access_satoshi_office +#unlock_task:confront_satoshi + +Agent 0x99: Complete financial network mapped. Outstanding work, {player_name}. + +Agent 0x99: We now understand ENTROPY's entire funding infrastructure. + +Agent 0x99: Time for confrontation. Satoshi Nakamoto II should be accessible now. + +Agent 0x99: And {player_name}—whatever you decide about Elena, make it count. She's either a massive intelligence asset or a dangerous criminal. + ++ [What about the asset seizure choice?] + -> final_choice_reminder ++ [I'm ready] + #exit_conversation + Agent 0x99: Good luck. You've done exceptional work on this mission. + -> support_hub + +=== final_choice_reminder === +Agent 0x99: That choice is yours to make during the confrontation. + +Agent 0x99: Seize the crypto assets—immediate impact, ENTROPY loses $12.8M funding. + +Agent 0x99: Or monitor the wallets—long-term intelligence, identify everyone receiving funds. + +Agent 0x99: Either choice has strategic value. I trust your judgment. + +#exit_conversation +-> support_hub + +// ================================================ +// END OF PHONE SUPPORT +// ================================================ diff --git a/scenarios/m06_follow_the_money/ink/m06_phone_agent_0x99.json b/scenarios/m06_follow_the_money/ink/m06_phone_agent_0x99.json new file mode 100644 index 0000000..5fc7168 --- /dev/null +++ b/scenarios/m06_follow_the_money/ink/m06_phone_agent_0x99.json @@ -0,0 +1 @@ +{"inkVersion":21,"root":[[["done",{"#n":"g-0"}],null],"done",{"start":["ev",{"VAR?":"first_contact"},"/ev",[{"->":".^.b","c":true},{"b":["\n","ev",false,"/ev",{"VAR=":"first_contact","re":true},{"->":"first_call"},{"->":"start.4"},null]}],"nop","\n","ev",{"VAR?":"first_contact"},"!","/ev",[{"->":".^.b","c":true},{"b":["\n",{"->":"support_hub"},{"->":"start.11"},null]}],"nop","\n",null],"first_call":[["#","^speaker:agent_0x99","/#","^Agent 0x99: ","ev",{"VAR?":"player_name"},"out","/ev","^, you're inside HashChain Exchange. How's the compliance auditor cover holding up?","\n","^Agent 0x99: This is a financial investigation. Follow the money, map the network, and find where ENTROPY's funding goes.","\n","ev","str","^Cover is solid so far","/str","/ev",{"*":".^.c-0","flg":4},"ev","str","^What should I focus on first?","/str","/ev",{"*":".^.c-1","flg":4},"ev","str","^I'll call if I need help","/str","/ev",{"*":".^.c-2","flg":4},{"c-0":["\n","^Agent 0x99: Good. Elena should buy the FinCEN audit story. Crypto exchanges are constantly under regulatory scrutiny.","\n",{"->":"support_hub"},null],"c-1":["\n",{"->":"initial_guidance"},null],"c-2":["\n","#","^exit_conversation","/#","^Agent 0x99: Roger that. I'm tracking your progress. Call anytime.","\n",{"->":"support_hub"},null]}],null],"initial_guidance":["^Agent 0x99: Priority one: Build rapport with Elena Volkov, the CTO. She's your access point and potential recruit.","\n","^Agent 0x99: Priority two: Access the backend servers. That's where the financial records are.","\n","^Agent 0x99: Priority three: Map the complete ENTROPY financial network. Every transaction linking cells together.","\n",{"->":"support_hub"},null],"support_hub":[["#","^speaker:agent_0x99","/#","^Agent 0x99: What do you need help with?","\n","ev","str","^Password cracking guidance","/str",{"VAR?":"password_hint_given"},"!","/ev",{"*":".^.c-0","flg":5},"ev","str","^Blockchain analysis tips","/str",{"VAR?":"blockchain_hint_given"},"!","/ev",{"*":".^.c-1","flg":5},"ev","str","^Elena Volkov recruitment strategy","/str",{"VAR?":"elena_guidance_given"},"!","/ev",{"*":".^.c-2","flg":5},"ev","str","^General mission advice","/str","/ev",{"*":".^.c-3","flg":4},"ev","str","^I'm good for now","/str","/ev",{"*":".^.c-4","flg":4},{"c-0":["\n",{"->":"password_help"},null],"c-1":["\n",{"->":"blockchain_help"},null],"c-2":["\n",{"->":"elena_guidance"},null],"c-3":["\n",{"->":"general_advice"},null],"c-4":["\n","#","^exit_conversation","/#","^Agent 0x99: Copy that. Call anytime.","\n",{"->":".^.^.^"},null]}],null],"password_help":[["ev",true,"/ev",{"VAR=":"password_hint_given","re":true},"^Agent 0x99: Server passwords at crypto exchanges follow patterns. Think crypto-themed terms plus years.","\n","^Agent 0x99: \"bitcoin2024\", \"ethereum2025\", \"satoshi2024\"—variations on cryptocurrency names and dates.","\n","^Agent 0x99: Once you crack the first server, look for credential reuse. Admins get lazy with multiple systems.","\n","ev","str","^What tools should I use?","/str","/ev",{"*":".^.c-0","flg":4},"ev","str","^Got it, thanks","/str","/ev",{"*":".^.c-1","flg":4},{"c-0":["\n","^Agent 0x99: Your VM environment has Hydra for brute forcing and John the Ripper for hash cracking.","\n","^Agent 0x99: Look for password lists in Elena's inventory or around the trading floor.","\n",{"->":"support_hub"},null],"c-1":["\n",{"->":"support_hub"},null]}],null],"blockchain_help":[["ev",true,"/ev",{"VAR=":"blockchain_hint_given","re":true},"^Agent 0x99: Blockchain transactions are public, but privacy coins make tracing nearly impossible without internal records.","\n","^Agent 0x99: Look for transaction analysis documents in the Blockchain Analysis Lab. They'll have wallet addresses and fund flows.","\n","^Agent 0x99: Key targets: wallets from Mission 2's ransomware and Mission 5's espionage. They should all connect through HashChain.","\n","ev","str","^What am I looking for specifically?","/str","/ev",{"*":".^.c-0","flg":4},"ev","str","^Thanks","/str","/ev",{"*":".^.c-1","flg":4},{"c-0":["\n","^Agent 0x99: Destination wallets. A master fund receiving money from all cells.","\n","^Agent 0x99: If there's coordinated funding, the internal records will show it.","\n",{"->":"support_hub"},null],"c-1":["\n",{"->":"support_hub"},null]}],null],"elena_guidance":[["ev",true,"/ev",{"VAR=":"elena_guidance_given","re":true},"^Agent 0x99: Elena is brilliant but conflicted. She built this infrastructure for \"financial freedom.\"","\n","^Agent 0x99: Now it's funding ransomware, espionage, and attacks. Our psych profile says she's morally troubled.","\n","ev","str","^How do I recruit her?","/str","/ev",{"*":".^.c-0","flg":4},"ev","str","^What if she refuses?","/str","/ev",{"*":".^.c-1","flg":4},{"c-0":["\n",{"->":"recruitment_strategy"},null],"c-1":["\n",{"->":"arrest_strategy"},null]}],null],"recruitment_strategy":["^Agent 0x99: Show her the consequences of her work. The ransomware casualties, the coordinated attacks, The Architect's plan.","\n","^Agent 0x99: Appeal to her ethics, not her ideology. She's a cryptographer, not a terrorist.","\n","^Agent 0x99: If she sees the full scope, she might flip. And ","ev",{"VAR?":"player_name"},"out","/ev","^—her expertise would be invaluable intelligence.","\n",{"->":"support_hub"},null],"arrest_strategy":["^Agent 0x99: If recruitment fails, arrest her. Eliminate her expertise from ENTROPY's network.","\n","^Agent 0x99: But try recruitment first. A cryptographer of her caliber is worth the effort.","\n",{"->":"support_hub"},null],"general_advice":[["^Agent 0x99: Remember: Most employees at HashChain think they work at a legitimate exchange.","\n","^Agent 0x99: Elena and Satoshi know about ENTROPY. The traders and analysts are likely innocent.","\n","ev","str","^What about Satoshi Nakamoto II?","/str","/ev",{"*":".^.c-0","flg":4},"ev","str","^What's the priority target?","/str","/ev",{"*":".^.c-1","flg":4},"ev","str","^Understood","/str","/ev",{"*":".^.c-2","flg":4},{"c-0":["\n",{"->":"satoshi_discussion"},null],"c-1":["\n",{"->":"priority_target"},null],"c-2":["\n",{"->":"support_hub"},null]}],null],"satoshi_discussion":["^Agent 0x99: Satoshi is a true believer. \"Financial freedom through cryptography.\"","\n","^Agent 0x99: Useful for understanding Crypto Anarchist ideology, but don't expect cooperation.","\n","^Agent 0x99: He'll justify everything in the name of accelerating the collapse of centralized finance.","\n",{"->":"support_hub"},null],"priority_target":["^Agent 0x99: The Architect's Fund. A master wallet coordinating funding to all ENTROPY cells.","\n","^Agent 0x99: If we find it, we can map the entire financial network and potentially seize the assets.","\n",{"->":"support_hub"},null],"on_password_lists_found":[["#","^speaker:agent_0x99","/#","^Agent 0x99: I see you obtained Elena's password dictionary. Smart.","\n","^Agent 0x99: Crypto-themed passwords are common in this industry. Use that list against the backend servers.","\n","^Agent 0x99: Hydra and John the Ripper will make quick work of weak passwords.","\n","ev","str","^Thanks for the tip","/str","/ev",{"*":".^.c-0","flg":4},"ev","str","^Any other password hints?","/str","/ev",{"*":".^.c-1","flg":4},{"c-0":["\n","#","^exit_conversation","/#",{"->":"support_hub"},null],"c-1":["\n",{"->":"password_help"},null]}],null],"on_first_server_cracked":[["#","^speaker:agent_0x99","/#","#","^complete_task:submit_flag1","/#","#","^unlock_task:submit_flag2","/#","^Agent 0x99: First server access confirmed. Excellent password cracking, ","ev",{"VAR?":"player_name"},"out","/ev","^.","\n","^Agent 0x99: Now look for credential reuse. Same passwords across multiple servers is common.","\n","^Agent 0x99: Each server you crack reveals more of the financial network.","\n","ev","str","^What am I looking for in the data?","/str","/ev",{"*":".^.c-0","flg":4},"ev","str","^On it","/str","/ev",{"*":".^.c-1","flg":4},{"c-0":["\n","^Agent 0x99: Transaction records, wallet addresses, anything linking ENTROPY cells together.","\n","^Agent 0x99: And keep an eye out for references to a master fund or coordinator.","\n","#","^exit_conversation","/#",{"->":"support_hub"},null],"c-1":["\n","#","^exit_conversation","/#",{"->":"support_hub"},null]}],null],"on_blockchain_discovered":[["#","^speaker:agent_0x99","/#","#","^complete_task:find_transaction_records","/#","^Agent 0x99: ","ev",{"VAR?":"player_name"},"out","/ev","^, I'm seeing the blockchain transaction analysis you just found.","\n","^Agent 0x99: This is incredible. Mission 2's ransomware—$2.4 million. Mission 5's espionage—$847,000.","\n","^Agent 0x99: They all flow through HashChain's mixers to a single destination wallet.","\n","ev","str","^What's the destination?","/str","/ev",{"*":".^.c-0","flg":4},"ev","str","^This connects all the cells","/str","/ev",{"*":".^.c-1","flg":4},{"c-0":["\n",{"->":"architects_fund_hint"},null],"c-1":["\n",{"->":"cell_connections"},null]}],null],"architects_fund_hint":["^Agent 0x99: The analysis calls it \"1ARCHITECT9FUND.\"","\n","^Agent 0x99: ","ev",{"VAR?":"player_name"},"out","/ev","^, if this is real... this is the financial heart of ENTROPY.","\n","^Agent 0x99: Find the complete records. We need to know how much money we're talking about and where it's going.","\n","#","^exit_conversation","/#",{"->":"support_hub"},null],"cell_connections":["^Agent 0x99: Exactly. Every ENTROPY cell we've encountered is financially connected through HashChain.","\n","^Agent 0x99: Social Fabric, Crypto Anarchists, Insider Threat Initiative—all funded through this network.","\n","^Agent 0x99: Find the complete allocation records. We need to map the entire structure.","\n","#","^exit_conversation","/#",{"->":"support_hub"},null],"on_architects_fund_discovered":[["#","^speaker:agent_0x99","/#","#","^complete_task:discover_architects_fund","/#","^Agent 0x99: ","ev",{"VAR?":"player_name"},"out","/ev","^... I just saw what you pulled from the data center.","\n","^Agent 0x99: The Architect's Fund. $12.8 million USD. Allocated to six different ENTROPY cells.","\n","^Agent 0x99: And the timeline says distribution in 72 hours.","\n","ev","str","^This is a coordinated attack","/str","/ev",{"*":".^.c-0","flg":4},"ev","str","^180-340 projected casualties...","/str","/ev",{"*":".^.c-1","flg":4},{"c-0":["\n",{"->":"coordinated_attack"},null],"c-1":["\n",{"->":"casualty_numbers"},null]}],null],"coordinated_attack":["^Agent 0x99: All cells receiving funding simultaneously. That's not business as usual.","\n","^Agent 0x99: ","ev",{"VAR?":"player_name"},"out","/ev","^, this is the kind of intelligence that could let us move against multiple cells at once.","\n","^Agent 0x99: But we need to decide: Do we seize the assets now, or monitor the transactions to map the complete network?","\n",{"->":"critical_choice_preview"},null],"casualty_numbers":["^Agent 0x99: They've calculated projected casualties. They KNOW people will die.","\n","^Agent 0x99: And they're calling it \"The Architect's Masterpiece.\"","\n","^Agent 0x99: ","ev",{"VAR?":"player_name"},"out","/ev","^, this is bigger than any individual cell. This is the coordination we've been looking for.","\n",{"->":"critical_choice_preview"},null],"critical_choice_preview":[["^Agent 0x99: We're going to face a major choice here.","\n","^Agent 0x99: Seize the cryptocurrency now—immediate impact, cuts ENTROPY funding, but ends our surveillance.","\n","^Agent 0x99: Or monitor the transactions—long-term intelligence, map everyone receiving funds, but ENTROPY keeps operating.","\n","ev","str","^What do you recommend?","/str","/ev",{"*":".^.c-0","flg":4},"ev","str","^I'll think about it","/str","/ev",{"*":".^.c-1","flg":4},{"c-0":["\n",{"->":"handler_recommendation"},null],"c-1":["\n","#","^exit_conversation","/#","^Agent 0x99: Take your time. This decision has strategic implications.","\n",{"->":"support_hub"},null]}],null],"handler_recommendation":["^Agent 0x99: Honestly? I don't know, ","ev",{"VAR?":"player_name"},"out","/ev","^.","\n","^Agent 0x99: Seizing $12.8 million cripples ENTROPY funding immediately. That saves lives.","\n","^Agent 0x99: But monitoring reveals their entire network structure. That saves MORE lives long-term.","\n","^Agent 0x99: This is above my pay grade. You'll make the call when the time comes.","\n","#","^exit_conversation","/#",{"->":"support_hub"},null],"on_network_complete":[["#","^speaker:agent_0x99","/#","#","^unlock_task:access_satoshi_office","/#","#","^unlock_task:confront_satoshi","/#","^Agent 0x99: Complete financial network mapped. Outstanding work, ","ev",{"VAR?":"player_name"},"out","/ev","^.","\n","^Agent 0x99: We now understand ENTROPY's entire funding infrastructure.","\n","^Agent 0x99: Time for confrontation. Satoshi Nakamoto II should be accessible now.","\n","^Agent 0x99: And ","ev",{"VAR?":"player_name"},"out","/ev","^—whatever you decide about Elena, make it count. She's either a massive intelligence asset or a dangerous criminal.","\n","ev","str","^What about the asset seizure choice?","/str","/ev",{"*":".^.c-0","flg":4},"ev","str","^I'm ready","/str","/ev",{"*":".^.c-1","flg":4},{"c-0":["\n",{"->":"final_choice_reminder"},null],"c-1":["\n","#","^exit_conversation","/#","^Agent 0x99: Good luck. You've done exceptional work on this mission.","\n",{"->":"support_hub"},null]}],null],"final_choice_reminder":["^Agent 0x99: That choice is yours to make during the confrontation.","\n","^Agent 0x99: Seize the crypto assets—immediate impact, ENTROPY loses $12.8M funding.","\n","^Agent 0x99: Or monitor the wallets—long-term intelligence, identify everyone receiving funds.","\n","^Agent 0x99: Either choice has strategic value. I trust your judgment.","\n","#","^exit_conversation","/#",{"->":"support_hub"},null],"global decl":["ev",false,{"VAR=":"password_hint_given"},false,{"VAR=":"blockchain_hint_given"},false,{"VAR=":"elena_guidance_given"},true,{"VAR=":"first_contact"},"str","^Agent 0x00","/str",{"VAR=":"player_name"},false,{"VAR=":"found_password_lists"},false,{"VAR=":"found_blockchain_evidence"},false,{"VAR=":"found_architects_fund"},false,{"VAR=":"elena_recruited"},false,{"VAR=":"elena_arrested"},"/ev","end",null]}],"listDefs":{}} \ No newline at end of file diff --git a/scenarios/m06_follow_the_money/ink/m06_satoshi_confrontation.ink b/scenarios/m06_follow_the_money/ink/m06_satoshi_confrontation.ink new file mode 100644 index 0000000..2c8ec43 --- /dev/null +++ b/scenarios/m06_follow_the_money/ink/m06_satoshi_confrontation.ink @@ -0,0 +1,536 @@ +// =========================================== +// Mission 6: Satoshi Nakamoto II Confrontation +// Final showdown with Crypto Anarchists leader +// Critical choices: Asset seizure/monitoring, Elena recruitment +// =========================================== + +VAR confrontation_started = false +VAR shown_evidence = false +VAR ideology_discussed = false +VAR asset_choice_made = false +VAR satoshi_arrested = false + +// External variables +VAR player_name = "Agent 0x00" +VAR found_blockchain_evidence = false +VAR found_architects_fund = false +VAR elena_recruited = false +VAR elena_arrested = false +VAR assets_seized = false +VAR monitoring_enabled = false + +// =========================================== +// INITIAL CONFRONTATION +// =========================================== + +=== start === +#speaker:satoshi + +{not confrontation_started: + ~ confrontation_started = true + #display:satoshi-defiant + + A charismatic figure in his early 40s sits behind an executive desk, Bitcoin whitepaper framed on the wall behind him. + + Satoshi: You're not from FinCEN. I had you investigated. + + Satoshi: SAFETYNET, correct? Counter-terrorism division. + + Satoshi: Which means you've discovered our true purpose. + + + [You're funding ENTROPY operations] + You: Every cell we've encountered is financially connected through your exchange. + -> evidence_reveal + + + [The Architect's Fund. $12.8 million for coordinated attacks.] + You: 180-340 projected casualties. You calculated death tolls. + ~ shown_evidence = true + -> casualties_discussion + + + [You're under arrest for facilitating terrorism] + -> arrest_attempt +} + +{confrontation_started and not asset_choice_made: + #display:satoshi-calm + Satoshi: What will it be, Agent {player_name}? + -> choice_presentation +} + +{asset_choice_made: + -> aftermath +} + +// =========================================== +// EVIDENCE REVEAL +// =========================================== + +=== evidence_reveal === +#speaker:satoshi +~ shown_evidence = true + +Satoshi: *smiles* You mapped the network. Impressive. + +Satoshi: Yes, HashChain Exchange is the financial hub for ENTROPY. We provide infrastructure for all cells. + +Satoshi: Money laundering, you'd call it. We call it "enabling financial freedom for freedom fighters." + ++ [Freedom fighters? They're terrorists!] + -> ideology_discussion + ++ [You're enabling mass murder] + -> casualties_discussion + +// =========================================== +// CASUALTIES DISCUSSION +// =========================================== + +=== casualties_discussion === +#speaker:satoshi +~ shown_evidence = true + +{found_architects_fund: + Satoshi: Ah, you found The Architect's allocation document. Thorough work. + + Satoshi: 180-340 casualties across coordinated operations. Yes, those are the projections. +- else: + Satoshi: Casualties are inevitable in any revolution. +} + +Satoshi: But let me ask you something: How many people die maintaining the current system? + ++ [That's not justification for terrorism] + -> justification_rejection + ++ [You calculated how many people would die and proceeded anyway] + -> calculated_cruelty + +=== justification_rejection === +#speaker:satoshi + +Satoshi: Isn't it? The financial system you protect kills thousands through economic violence. + +Satoshi: Poverty. Debt. Medical bankruptcy. Foreclosures. + +Satoshi: ENTROPY accelerates the collapse of a system that's already murderous. We just make it obvious. + +-> ideology_discussion + +=== calculated_cruelty === +#speaker:satoshi + +Satoshi: We calculated casualties to MINIMIZE them. + +Satoshi: The Architect's operations are surgical. Targeted. Educational. + +Satoshi: Each attack teaches a lesson about system vulnerabilities. Makes people question their trust in centralized institutions. + +Satoshi: Those deaths serve a purpose. They're not random violence. + +-> ideology_discussion + +// =========================================== +// IDEOLOGY DISCUSSION +// =========================================== + +=== ideology_discussion === +#speaker:satoshi +~ ideology_discussed = true + +Satoshi: You don't understand our philosophy, do you? + +Satoshi: Crypto Anarchists believe centralized control of money is the root of tyranny. + +Satoshi: Governments weaponize currency. Financial surveillance enables oppression. + ++ [So you fund terrorism to prove a point?] + -> terrorism_rebuttal + ++ [Financial privacy has legitimate uses. This isn't it.] + -> corrupted_ideals + ++ [You're just another criminal hiding behind ideology] + -> criminal_accusation + +=== terrorism_rebuttal === +#speaker:satoshi + +Satoshi: *leans forward* We fund ACCELERATION. + +Satoshi: The current system is doomed to collapse. Climate crisis, wealth inequality, technological disruption—it's already failing. + +Satoshi: ENTROPY speeds up the inevitable. Makes the collapse happen on OUR terms, with preparation, instead of catastrophic surprise. + +Satoshi: We're not terrorists. We're... midwives to a new era. + +-> philosophy_challenge + +=== corrupted_ideals === +#speaker:satoshi + +Satoshi: *nods approvingly* You understand the distinction. Good. + +Satoshi: Financial privacy IS legitimate. But you're right—ENTROPY corrupted our ideals. + +{elena_recruited: + Satoshi: Elena understood that too. That's why she betrayed us, isn't it? + -> elena_betrayal_reaction +- else: + Satoshi: At least, Elena thinks so. She's been having... moral difficulties. + -> elena_conflict +} + +=== criminal_accusation === +#speaker:satoshi + +Satoshi: *dismissive laugh* Criminal? By whose law? + +Satoshi: Governments that imprison whistleblowers? Intelligence agencies that surveil everyone? + +Satoshi: Your legal system is illegitimate. We don't recognize its authority. + +-> philosophy_challenge + +// =========================================== +// PHILOSOPHY CHALLENGE +// =========================================== + +=== philosophy_challenge === +#speaker:satoshi + +Satoshi: But I don't expect you to agree. You're SAFETYNET. You protect the status quo. + +Satoshi: So let's discuss the practical matter: You've discovered our network. What will you do about it? + +-> choice_presentation + +// =========================================== +// ELENA REACTIONS +// =========================================== + +=== elena_betrayal_reaction === +#speaker:satoshi + +{elena_recruited: + Satoshi: You recruited her. Showed her the casualty projections. Appealed to her conscience. + Satoshi: She was always the weak link. Too much empathy for an anarchist. +- else: + Satoshi: She refused you, I presume? Good. Her loyalty held. +} + +-> choice_presentation + +=== elena_conflict === +#speaker:satoshi + +Satoshi: She built this infrastructure for idealism. Now she's uncomfortable with the reality. + +Satoshi: Revolutions require sacrifice. Not everyone has the stomach for it. + +{not elena_recruited and not elena_arrested: + Satoshi: Did you try to recruit her? Appeal to her conscience? + Satoshi: I'm curious whether she chose principles or comfort. +} + +-> choice_presentation + +// =========================================== +// CHOICE PRESENTATION +// =========================================== + +=== choice_presentation === +#speaker:satoshi + +Satoshi: You face a decision, Agent {player_name}. + +{found_architects_fund: + Satoshi: You know about The Architect's Fund. $12.8 million ready for distribution. +- else: + Satoshi: You've mapped enough of the network to understand the infrastructure. +} + +Satoshi: You can seize the cryptocurrency assets. Immediate impact. Cut ENTROPY funding. + +Satoshi: Or you can monitor the transactions. Map every cell receiving funds. Long-term intelligence. + ++ [I'm seizing the assets. ENTROPY loses its funding.] + -> seize_assets + ++ [I'm enabling monitoring. We'll track every cell.] + -> enable_monitoring + ++ [Why are you telling me this?] + -> strategic_explanation + +=== strategic_explanation === +#speaker:satoshi + +Satoshi: Because either choice serves our purpose. + +Satoshi: Seize the assets? We become martyrs. Proof of government tyranny. Recruitment doubles. + +Satoshi: Enable monitoring? You commit resources to surveillance. Meanwhile, ENTROPY adapts. + +Satoshi: You can't win, {player_name}. You can only choose how you lose. + ++ [I'm seizing the assets] + -> seize_assets + ++ [I'm enabling monitoring] + -> enable_monitoring + ++ [I'm arresting you and dismantling the entire network] + -> arrest_attempt + +// =========================================== +// SEIZE ASSETS CHOICE +// =========================================== + +=== seize_assets === +#speaker:satoshi +~ asset_choice_made = true + +#set_variable:assets_seized=true +#complete_task:decide_asset_strategy + +You: I'm seizing the cryptocurrency. $12.8 million in ENTROPY funding ends now. + +{found_architects_fund: + You: The Architect's "Masterpiece"? Defunded. Coordinated operations? Cancelled. +} + +Satoshi: *slow clap* Short-term thinking. SAFETYNET's specialty. + +Satoshi: You just proved our point. Government seizes cryptocurrency at will. Financial freedom is an illusion. + +Satoshi: Our recruitment will surge. Thank you for the propaganda victory. + ++ [We stopped the attack. That's what matters.] + -> immediate_impact_response + ++ [Better than letting 180-340 people die] + -> casualty_prevention_response + +=== immediate_impact_response === +#speaker:satoshi + +Satoshi: This attack, yes. But you've made the NEXT one easier to recruit for. + +Satoshi: Every crypto anarchist who was sitting on the fence? You just pushed them to our side. + +Satoshi: Congratulations. You won the battle and lost the war. + +-> arrest_finale + +=== casualty_prevention_response === +#speaker:satoshi + +Satoshi: *nods* At least you're honest about the trade-off. + +Satoshi: You value immediate lives over long-term strategy. That's... human. Compassionate, even. + +Satoshi: Wrong, from an accelerationist perspective. But human. + +-> arrest_finale + +// =========================================== +// ENABLE MONITORING CHOICE +// =========================================== + +=== enable_monitoring === +#speaker:satoshi +~ asset_choice_made = true + +#set_variable:monitoring_enabled=true +#complete_task:decide_asset_strategy + +You: I'm enabling transaction monitoring. Every wallet, every cell, mapped in real-time. + +You: We'll know everyone receiving funds. ENTROPY's entire network will be visible. + +Satoshi: *impressed* Long-term strategic thinking. I didn't expect that from SAFETYNET. + +Satoshi: You're trading immediate prevention for comprehensive intelligence. Bold. + ++ [We'll dismantle the entire network, not just stop one attack] + -> long_term_strategy_response + ++ [The intelligence is worth more than one operation] + -> intelligence_value_response + +=== long_term_strategy_response === +#speaker:satoshi + +Satoshi: Perhaps. Or ENTROPY adapts, creates new financial channels, and your monitoring becomes worthless. + +Satoshi: Meanwhile, The Architect's operations proceed. Those 180-340 casualties? They happen. + +Satoshi: All for intelligence that might pay off eventually. If we don't adapt first. + +-> arrest_finale + +=== intelligence_value_response === +#speaker:satoshi + +Satoshi: Coldly logical. You're willing to let people die for strategic advantage. + +Satoshi: *smiles* We're not so different, you and I. + +Satoshi: Both making calculated sacrifices for a larger goal. Both convinced we're serving a greater good. + +Satoshi: The only difference is which system we protect. + +-> arrest_finale + +// =========================================== +// ARREST ATTEMPT +// =========================================== + +=== arrest_attempt === +#speaker:satoshi + +You: "Satoshi Nakamoto II," you're under arrest for money laundering, facilitating terrorism, conspiracy, and financial crimes. + +#set_variable:satoshi_arrested=true + +{asset_choice_made: + Satoshi: Of course I am. Was there any other ending to this confrontation? +- else: + Satoshi: Before you do that, you still need to decide: Assets or monitoring? + {player_name}, you can arrest me, but that choice shapes the investigation. + -> choice_presentation +} + +-> arrest_finale + +// =========================================== +// ARREST FINALE +// =========================================== + +=== arrest_finale === +#speaker:satoshi + +Satoshi: *stands, offers hands for cuffs* + +Satoshi: I'll be convicted, of course. Probably 40 years to life. + +{assets_seized: + Satoshi: But the assets you seized? Proof of government overreach. Our recruitment will surge. +} + +{monitoring_enabled: + Satoshi: And the monitoring you enabled? We'll adapt. Create new channels. Your intelligence will age poorly. +} + +{elena_recruited: + Satoshi: Elena's cooperation will hurt us short-term. Her expertise was valuable. + Satoshi: But even she couldn't stop the movement. Crypto anarchism is bigger than any individual. +} + +{elena_arrested: + Satoshi: Elena chose loyalty. I'm proud of her, even if it costs her freedom. +} + +Satoshi: This isn't over, {player_name}. ENTROPY is decentralized. The Architect will adapt. + +-> final_words + +// =========================================== +// FINAL WORDS +// =========================================== + +=== final_words === +#speaker:satoshi + +Satoshi: Last question: Do you ever wonder if we're right? + +Satoshi: If the system you protect is doomed? If acceleration might actually save more lives than preservation? + ++ [Your ideology doesn't justify murder] + -> ideology_rejection + ++ [Sometimes. But I chose my side.] + -> honest_response + ++ [I don't engage with terrorist philosophy] + -> dismissal + +=== ideology_rejection === +#speaker:satoshi + +Satoshi: We'll see. History judges ideologies long after we're gone. + +Satoshi: Maybe SAFETYNET will still exist in 50 years, protecting a thriving system. + +Satoshi: Or maybe you'll look back and realize you were defending the Titanic. + +-> mission_complete + +=== honest_response === +#speaker:satoshi + +Satoshi: *nods with respect* Honest answer. Rare in your profession. + +Satoshi: You're a good agent, {player_name}. You think strategically, question assumptions, understand trade-offs. + +Satoshi: That makes you dangerous to us. But I can respect it. + +-> mission_complete + +=== dismissal === +#speaker:satoshi + +Satoshi: Of course not. Easier to ignore questions than confront them. + +Satoshi: That's why the system will fall. It can't adapt. Can't question itself. + +Satoshi: ENTROPY can. We evolve. We accelerate. + +-> mission_complete + +// =========================================== +// MISSION COMPLETE +// =========================================== + +=== mission_complete === +#speaker:satoshi + +Satoshi: Take me to whatever holding facility you have prepared. + +Satoshi: But know this: You stopped one exchange. One funding channel. + +Satoshi: The Architect has contingencies. ENTROPY is decentralized. + +Satoshi: This was never just about HashChain. It was about proving the system is vulnerable. + +Satoshi: And {player_name}... you just proved it. + +#complete_task:confront_satoshi +#exit_conversation +-> END + +// =========================================== +// AFTERMATH (if player returns) +// =========================================== + +=== aftermath === +#speaker:satoshi + +Satoshi: Mission's over, Agent. I'm already under arrest. + +Satoshi: Did you want to gloat? Or are you having second thoughts about your choices? + ++ [Just ensuring you're secured] + #exit_conversation + Satoshi: *smirks* I'm not going anywhere. + -> END + ++ [I made the right choices] + #exit_conversation + Satoshi: Time will tell. + -> END + ++ [Goodbye] + #exit_conversation + Satoshi: See you at the trial, {player_name}. + -> END diff --git a/scenarios/m06_follow_the_money/ink/m06_satoshi_confrontation.json b/scenarios/m06_follow_the_money/ink/m06_satoshi_confrontation.json new file mode 100644 index 0000000..b29fa6b --- /dev/null +++ b/scenarios/m06_follow_the_money/ink/m06_satoshi_confrontation.json @@ -0,0 +1 @@ +{"inkVersion":21,"root":[[["done",{"#n":"g-0"}],null],"done",{"start":["#","^speaker:satoshi","/#","ev",{"VAR?":"confrontation_started"},"!","/ev",[{"->":".^.b","c":true},{"b":["\n","ev",true,"/ev",{"VAR=":"confrontation_started","re":true},"#","^display:satoshi-defiant","/#","^A charismatic figure in his early 40s sits behind an executive desk, Bitcoin whitepaper framed on the wall behind him.","\n","^Satoshi: You're not from FinCEN. I had you investigated.","\n","^Satoshi: SAFETYNET, correct? Counter-terrorism division.","\n","^Satoshi: Which means you've discovered our true purpose.","\n","ev","str","^You're funding ENTROPY operations","/str","/ev",{"*":".^.c-0","flg":4},"ev","str","^The Architect's Fund. $12.8 million for coordinated attacks.","/str","/ev",{"*":".^.c-1","flg":4},"ev","str","^You're under arrest for facilitating terrorism","/str","/ev",{"*":".^.c-2","flg":4},{"->":"start.8"},{"c-0":["\n","^You: Every cell we've encountered is financially connected through your exchange.","\n",{"->":"evidence_reveal"},null],"c-1":["\n","^You: 180-340 projected casualties. You calculated death tolls.","\n","ev",true,"/ev",{"VAR=":"shown_evidence","re":true},{"->":"casualties_discussion"},null],"c-2":["\n",{"->":"arrest_attempt"},null]}]}],"nop","\n","ev",{"VAR?":"confrontation_started"},{"VAR?":"asset_choice_made"},"!","&&","/ev",[{"->":".^.b","c":true},{"b":["\n","#","^display:satoshi-calm","/#","^Satoshi: What will it be, Agent ","ev",{"VAR?":"player_name"},"out","/ev","^?","\n",{"->":"choice_presentation"},{"->":"start.17"},null]}],"nop","\n","ev",{"VAR?":"asset_choice_made"},"/ev",[{"->":".^.b","c":true},{"b":["\n",{"->":"aftermath"},{"->":"start.23"},null]}],"nop","\n",null],"evidence_reveal":[["#","^speaker:satoshi","/#","ev",true,"/ev",{"VAR=":"shown_evidence","re":true},"^Satoshi: *smiles* You mapped the network. Impressive.","\n","^Satoshi: Yes, HashChain Exchange is the financial hub for ENTROPY. We provide infrastructure for all cells.","\n","^Satoshi: Money laundering, you'd call it. We call it \"enabling financial freedom for freedom fighters.\"","\n","ev","str","^Freedom fighters? They're terrorists!","/str","/ev",{"*":".^.c-0","flg":4},"ev","str","^You're enabling mass murder","/str","/ev",{"*":".^.c-1","flg":4},{"c-0":["\n",{"->":"ideology_discussion"},null],"c-1":["\n",{"->":"casualties_discussion"},null]}],null],"casualties_discussion":[["#","^speaker:satoshi","/#","ev",true,"/ev",{"VAR=":"shown_evidence","re":true},"ev",{"VAR?":"found_architects_fund"},"/ev",[{"->":".^.b","c":true},{"b":["\n","^Satoshi: Ah, you found The Architect's allocation document. Thorough work.","\n","^Satoshi: 180-340 casualties across coordinated operations. Yes, those are the projections.","\n",{"->":".^.^.^.12"},null]}],[{"->":".^.b"},{"b":["\n","^Satoshi: Casualties are inevitable in any revolution.","\n",{"->":".^.^.^.12"},null]}],"nop","\n","^Satoshi: But let me ask you something: How many people die maintaining the current system?","\n","ev","str","^That's not justification for terrorism","/str","/ev",{"*":".^.c-0","flg":4},"ev","str","^You calculated how many people would die and proceeded anyway","/str","/ev",{"*":".^.c-1","flg":4},{"c-0":["\n",{"->":"justification_rejection"},null],"c-1":["\n",{"->":"calculated_cruelty"},null]}],null],"justification_rejection":["#","^speaker:satoshi","/#","^Satoshi: Isn't it? The financial system you protect kills thousands through economic violence.","\n","^Satoshi: Poverty. Debt. Medical bankruptcy. Foreclosures.","\n","^Satoshi: ENTROPY accelerates the collapse of a system that's already murderous. We just make it obvious.","\n",{"->":"ideology_discussion"},null],"calculated_cruelty":["#","^speaker:satoshi","/#","^Satoshi: We calculated casualties to MINIMIZE them.","\n","^Satoshi: The Architect's operations are surgical. Targeted. Educational.","\n","^Satoshi: Each attack teaches a lesson about system vulnerabilities. Makes people question their trust in centralized institutions.","\n","^Satoshi: Those deaths serve a purpose. They're not random violence.","\n",{"->":"ideology_discussion"},null],"ideology_discussion":[["#","^speaker:satoshi","/#","ev",true,"/ev",{"VAR=":"ideology_discussed","re":true},"^Satoshi: You don't understand our philosophy, do you?","\n","^Satoshi: Crypto Anarchists believe centralized control of money is the root of tyranny.","\n","^Satoshi: Governments weaponize currency. Financial surveillance enables oppression.","\n","ev","str","^So you fund terrorism to prove a point?","/str","/ev",{"*":".^.c-0","flg":4},"ev","str","^Financial privacy has legitimate uses. This isn't it.","/str","/ev",{"*":".^.c-1","flg":4},"ev","str","^You're just another criminal hiding behind ideology","/str","/ev",{"*":".^.c-2","flg":4},{"c-0":["\n",{"->":"terrorism_rebuttal"},null],"c-1":["\n",{"->":"corrupted_ideals"},null],"c-2":["\n",{"->":"criminal_accusation"},null]}],null],"terrorism_rebuttal":["#","^speaker:satoshi","/#","^Satoshi: *leans forward* We fund ACCELERATION.","\n","^Satoshi: The current system is doomed to collapse. Climate crisis, wealth inequality, technological disruption—it's already failing.","\n","^Satoshi: ENTROPY speeds up the inevitable. Makes the collapse happen on OUR terms, with preparation, instead of catastrophic surprise.","\n","^Satoshi: We're not terrorists. We're... midwives to a new era.","\n",{"->":"philosophy_challenge"},null],"corrupted_ideals":["#","^speaker:satoshi","/#","^Satoshi: *nods approvingly* You understand the distinction. Good.","\n","^Satoshi: Financial privacy IS legitimate. But you're right—ENTROPY corrupted our ideals.","\n","ev",{"VAR?":"elena_recruited"},"/ev",[{"->":".^.b","c":true},{"b":["\n","^Satoshi: Elena understood that too. That's why she betrayed us, isn't it?","\n",{"->":"elena_betrayal_reaction"},{"->":".^.^.^.12"},null]}],[{"->":".^.b"},{"b":["\n","^Satoshi: At least, Elena thinks so. She's been having... moral difficulties.","\n",{"->":"elena_conflict"},{"->":".^.^.^.12"},null]}],"nop","\n",null],"criminal_accusation":["#","^speaker:satoshi","/#","^Satoshi: *dismissive laugh* Criminal? By whose law?","\n","^Satoshi: Governments that imprison whistleblowers? Intelligence agencies that surveil everyone?","\n","^Satoshi: Your legal system is illegitimate. We don't recognize its authority.","\n",{"->":"philosophy_challenge"},null],"philosophy_challenge":["#","^speaker:satoshi","/#","^Satoshi: But I don't expect you to agree. You're SAFETYNET. You protect the status quo.","\n","^Satoshi: So let's discuss the practical matter: You've discovered our network. What will you do about it?","\n",{"->":"choice_presentation"},null],"elena_betrayal_reaction":["#","^speaker:satoshi","/#","ev",{"VAR?":"elena_recruited"},"/ev",[{"->":".^.b","c":true},{"b":["\n","^Satoshi: You recruited her. Showed her the casualty projections. Appealed to her conscience.","\n","^Satoshi: She was always the weak link. Too much empathy for an anarchist.","\n",{"->":".^.^.^.8"},null]}],[{"->":".^.b"},{"b":["\n","^Satoshi: She refused you, I presume? Good. Her loyalty held.","\n",{"->":".^.^.^.8"},null]}],"nop","\n",{"->":"choice_presentation"},null],"elena_conflict":["#","^speaker:satoshi","/#","^Satoshi: She built this infrastructure for idealism. Now she's uncomfortable with the reality.","\n","^Satoshi: Revolutions require sacrifice. Not everyone has the stomach for it.","\n","ev",{"VAR?":"elena_recruited"},"!",{"VAR?":"elena_arrested"},"!","&&","/ev",[{"->":".^.b","c":true},{"b":["\n","^Satoshi: Did you try to recruit her? Appeal to her conscience?","\n","^Satoshi: I'm curious whether she chose principles or comfort.","\n",{"->":".^.^.^.15"},null]}],"nop","\n",{"->":"choice_presentation"},null],"choice_presentation":[["#","^speaker:satoshi","/#","^Satoshi: You face a decision, Agent ","ev",{"VAR?":"player_name"},"out","/ev","^.","\n","ev",{"VAR?":"found_architects_fund"},"/ev",[{"->":".^.b","c":true},{"b":["\n","^Satoshi: You know about The Architect's Fund. $12.8 million ready for distribution.","\n",{"->":".^.^.^.15"},null]}],[{"->":".^.b"},{"b":["\n","^Satoshi: You've mapped enough of the network to understand the infrastructure.","\n",{"->":".^.^.^.15"},null]}],"nop","\n","^Satoshi: You can seize the cryptocurrency assets. Immediate impact. Cut ENTROPY funding.","\n","^Satoshi: Or you can monitor the transactions. Map every cell receiving funds. Long-term intelligence.","\n","ev","str","^I'm seizing the assets. ENTROPY loses its funding.","/str","/ev",{"*":".^.c-0","flg":4},"ev","str","^I'm enabling monitoring. We'll track every cell.","/str","/ev",{"*":".^.c-1","flg":4},"ev","str","^Why are you telling me this?","/str","/ev",{"*":".^.c-2","flg":4},{"c-0":["\n",{"->":"seize_assets"},null],"c-1":["\n",{"->":"enable_monitoring"},null],"c-2":["\n",{"->":"strategic_explanation"},null]}],null],"strategic_explanation":[["#","^speaker:satoshi","/#","^Satoshi: Because either choice serves our purpose.","\n","^Satoshi: Seize the assets? We become martyrs. Proof of government tyranny. Recruitment doubles.","\n","^Satoshi: Enable monitoring? You commit resources to surveillance. Meanwhile, ENTROPY adapts.","\n","^Satoshi: You can't win, ","ev",{"VAR?":"player_name"},"out","/ev","^. You can only choose how you lose.","\n","ev","str","^I'm seizing the assets","/str","/ev",{"*":".^.c-0","flg":4},"ev","str","^I'm enabling monitoring","/str","/ev",{"*":".^.c-1","flg":4},"ev","str","^I'm arresting you and dismantling the entire network","/str","/ev",{"*":".^.c-2","flg":4},{"c-0":["\n",{"->":"seize_assets"},null],"c-1":["\n",{"->":"enable_monitoring"},null],"c-2":["\n",{"->":"arrest_attempt"},null]}],null],"seize_assets":[["#","^speaker:satoshi","/#","ev",true,"/ev",{"VAR=":"asset_choice_made","re":true},"#","^set_variable:assets_seized=true","/#","#","^complete_task:decide_asset_strategy","/#","^You: I'm seizing the cryptocurrency. $12.8 million in ENTROPY funding ends now.","\n","ev",{"VAR?":"found_architects_fund"},"/ev",[{"->":".^.b","c":true},{"b":["\n","^You: The Architect's \"Masterpiece\"? Defunded. Coordinated operations? Cancelled.","\n",{"->":".^.^.^.19"},null]}],"nop","\n","^Satoshi: *slow clap* Short-term thinking. SAFETYNET's specialty.","\n","^Satoshi: You just proved our point. Government seizes cryptocurrency at will. Financial freedom is an illusion.","\n","^Satoshi: Our recruitment will surge. Thank you for the propaganda victory.","\n","ev","str","^We stopped the attack. That's what matters.","/str","/ev",{"*":".^.c-0","flg":4},"ev","str","^Better than letting 180-340 people die","/str","/ev",{"*":".^.c-1","flg":4},{"c-0":["\n",{"->":"immediate_impact_response"},null],"c-1":["\n",{"->":"casualty_prevention_response"},null]}],null],"immediate_impact_response":["#","^speaker:satoshi","/#","^Satoshi: This attack, yes. But you've made the NEXT one easier to recruit for.","\n","^Satoshi: Every crypto anarchist who was sitting on the fence? You just pushed them to our side.","\n","^Satoshi: Congratulations. You won the battle and lost the war.","\n",{"->":"arrest_finale"},null],"casualty_prevention_response":["#","^speaker:satoshi","/#","^Satoshi: *nods* At least you're honest about the trade-off.","\n","^Satoshi: You value immediate lives over long-term strategy. That's... human. Compassionate, even.","\n","^Satoshi: Wrong, from an accelerationist perspective. But human.","\n",{"->":"arrest_finale"},null],"enable_monitoring":[["#","^speaker:satoshi","/#","ev",true,"/ev",{"VAR=":"asset_choice_made","re":true},"#","^set_variable:monitoring_enabled=true","/#","#","^complete_task:decide_asset_strategy","/#","^You: I'm enabling transaction monitoring. Every wallet, every cell, mapped in real-time.","\n","^You: We'll know everyone receiving funds. ENTROPY's entire network will be visible.","\n","^Satoshi: *impressed* Long-term strategic thinking. I didn't expect that from SAFETYNET.","\n","^Satoshi: You're trading immediate prevention for comprehensive intelligence. Bold.","\n","ev","str","^We'll dismantle the entire network, not just stop one attack","/str","/ev",{"*":".^.c-0","flg":4},"ev","str","^The intelligence is worth more than one operation","/str","/ev",{"*":".^.c-1","flg":4},{"c-0":["\n",{"->":"long_term_strategy_response"},null],"c-1":["\n",{"->":"intelligence_value_response"},null]}],null],"long_term_strategy_response":["#","^speaker:satoshi","/#","^Satoshi: Perhaps. Or ENTROPY adapts, creates new financial channels, and your monitoring becomes worthless.","\n","^Satoshi: Meanwhile, The Architect's operations proceed. Those 180-340 casualties? They happen.","\n","^Satoshi: All for intelligence that might pay off eventually. If we don't adapt first.","\n",{"->":"arrest_finale"},null],"intelligence_value_response":["#","^speaker:satoshi","/#","^Satoshi: Coldly logical. You're willing to let people die for strategic advantage.","\n","^Satoshi: *smiles* We're not so different, you and I.","\n","^Satoshi: Both making calculated sacrifices for a larger goal. Both convinced we're serving a greater good.","\n","^Satoshi: The only difference is which system we protect.","\n",{"->":"arrest_finale"},null],"arrest_attempt":["#","^speaker:satoshi","/#","^You: \"Satoshi Nakamoto II,\" you're under arrest for money laundering, facilitating terrorism, conspiracy, and financial crimes.","\n","#","^set_variable:satoshi_arrested=true","/#","ev",{"VAR?":"asset_choice_made"},"/ev",[{"->":".^.b","c":true},{"b":["\n","^Satoshi: Of course I am. Was there any other ending to this confrontation?","\n",{"->":".^.^.^.13"},null]}],[{"->":".^.b"},{"b":["\n","^Satoshi: Before you do that, you still need to decide: Assets or monitoring?","\n","ev",{"VAR?":"player_name"},"out","/ev","^, you can arrest me, but that choice shapes the investigation.","\n",{"->":"choice_presentation"},{"->":".^.^.^.13"},null]}],"nop","\n",{"->":"arrest_finale"},null],"arrest_finale":["#","^speaker:satoshi","/#","^Satoshi: *stands, offers hands for cuffs*","\n","^Satoshi: I'll be convicted, of course. Probably 40 years to life.","\n","ev",{"VAR?":"assets_seized"},"/ev",[{"->":".^.b","c":true},{"b":["\n","^Satoshi: But the assets you seized? Proof of government overreach. Our recruitment will surge.","\n",{"->":".^.^.^.11"},null]}],"nop","\n","ev",{"VAR?":"monitoring_enabled"},"/ev",[{"->":".^.b","c":true},{"b":["\n","^Satoshi: And the monitoring you enabled? We'll adapt. Create new channels. Your intelligence will age poorly.","\n",{"->":".^.^.^.17"},null]}],"nop","\n","ev",{"VAR?":"elena_recruited"},"/ev",[{"->":".^.b","c":true},{"b":["\n","^Satoshi: Elena's cooperation will hurt us short-term. Her expertise was valuable.","\n","^Satoshi: But even she couldn't stop the movement. Crypto anarchism is bigger than any individual.","\n",{"->":".^.^.^.23"},null]}],"nop","\n","ev",{"VAR?":"elena_arrested"},"/ev",[{"->":".^.b","c":true},{"b":["\n","^Satoshi: Elena chose loyalty. I'm proud of her, even if it costs her freedom.","\n",{"->":".^.^.^.29"},null]}],"nop","\n","^Satoshi: This isn't over, ","ev",{"VAR?":"player_name"},"out","/ev","^. ENTROPY is decentralized. The Architect will adapt.","\n",{"->":"final_words"},null],"final_words":[["#","^speaker:satoshi","/#","^Satoshi: Last question: Do you ever wonder if we're right?","\n","^Satoshi: If the system you protect is doomed? If acceleration might actually save more lives than preservation?","\n","ev","str","^Your ideology doesn't justify murder","/str","/ev",{"*":".^.c-0","flg":4},"ev","str","^Sometimes. But I chose my side.","/str","/ev",{"*":".^.c-1","flg":4},"ev","str","^I don't engage with terrorist philosophy","/str","/ev",{"*":".^.c-2","flg":4},{"c-0":["\n",{"->":"ideology_rejection"},null],"c-1":["\n",{"->":"honest_response"},null],"c-2":["\n",{"->":"dismissal"},null]}],null],"ideology_rejection":["#","^speaker:satoshi","/#","^Satoshi: We'll see. History judges ideologies long after we're gone.","\n","^Satoshi: Maybe SAFETYNET will still exist in 50 years, protecting a thriving system.","\n","^Satoshi: Or maybe you'll look back and realize you were defending the Titanic.","\n",{"->":"mission_complete"},null],"honest_response":["#","^speaker:satoshi","/#","^Satoshi: *nods with respect* Honest answer. Rare in your profession.","\n","^Satoshi: You're a good agent, ","ev",{"VAR?":"player_name"},"out","/ev","^. You think strategically, question assumptions, understand trade-offs.","\n","^Satoshi: That makes you dangerous to us. But I can respect it.","\n",{"->":"mission_complete"},null],"dismissal":["#","^speaker:satoshi","/#","^Satoshi: Of course not. Easier to ignore questions than confront them.","\n","^Satoshi: That's why the system will fall. It can't adapt. Can't question itself.","\n","^Satoshi: ENTROPY can. We evolve. We accelerate.","\n",{"->":"mission_complete"},null],"mission_complete":["#","^speaker:satoshi","/#","^Satoshi: Take me to whatever holding facility you have prepared.","\n","^Satoshi: But know this: You stopped one exchange. One funding channel.","\n","^Satoshi: The Architect has contingencies. ENTROPY is decentralized.","\n","^Satoshi: This was never just about HashChain. It was about proving the system is vulnerable.","\n","^Satoshi: And ","ev",{"VAR?":"player_name"},"out","/ev","^... you just proved it.","\n","#","^complete_task:confront_satoshi","/#","#","^exit_conversation","/#","end",null],"aftermath":[["#","^speaker:satoshi","/#","^Satoshi: Mission's over, Agent. I'm already under arrest.","\n","^Satoshi: Did you want to gloat? Or are you having second thoughts about your choices?","\n","ev","str","^Just ensuring you're secured","/str","/ev",{"*":".^.c-0","flg":4},"ev","str","^I made the right choices","/str","/ev",{"*":".^.c-1","flg":4},"ev","str","^Goodbye","/str","/ev",{"*":".^.c-2","flg":4},{"c-0":["\n","#","^exit_conversation","/#","^Satoshi: *smirks* I'm not going anywhere.","\n","end",null],"c-1":["\n","#","^exit_conversation","/#","^Satoshi: Time will tell.","\n","end",null],"c-2":["\n","#","^exit_conversation","/#","^Satoshi: See you at the trial, ","ev",{"VAR?":"player_name"},"out","/ev","^.","\n","end",null]}],null],"global decl":["ev",false,{"VAR=":"confrontation_started"},false,{"VAR=":"shown_evidence"},false,{"VAR=":"ideology_discussed"},false,{"VAR=":"asset_choice_made"},false,{"VAR=":"satoshi_arrested"},"str","^Agent 0x00","/str",{"VAR=":"player_name"},false,{"VAR=":"found_blockchain_evidence"},false,{"VAR=":"found_architects_fund"},false,{"VAR=":"elena_recruited"},false,{"VAR=":"elena_arrested"},false,{"VAR=":"assets_seized"},false,{"VAR=":"monitoring_enabled"},"/ev","end",null]}],"listDefs":{}} \ No newline at end of file diff --git a/scenarios/m06_follow_the_money/scenario.json.erb b/scenarios/m06_follow_the_money/scenario.json.erb index 717a30d..124270b 100644 --- a/scenarios/m06_follow_the_money/scenario.json.erb +++ b/scenarios/m06_follow_the_money/scenario.json.erb @@ -433,6 +433,7 @@ architects_fund_document = "THE ARCHITECT'S FUND - STRATEGIC ALLOCATION\n\nCurre { "type": "keycard", "name": "CTO Access Badge", + "badgeId": "cto_badge", "takeable": false, "observations": "Elena's high-level access badge for all exchange systems" }, @@ -473,6 +474,12 @@ architects_fund_document = "THE ARCHITECT'S FUND - STRATEGIC ALLOCATION\n\nCurre "readable": true, "text": "HASHCHAIN EXCHANGE - DAILY TRADING SUMMARY\n\nVolume (24h): $847M USD equivalent\nTop Pairs: BTC/USD, ETH/USD, XMR/USD\n\nLarge Transactions Flagged:\n- Wallet 1ENTROPY2RansomInc: $2.4M mixed\n- Wallet 1ENTROPY5InsiderTh: $847K mixed\n- Wallet 1ARCHITECT9FUND: $12.8M received\n\nCompliance Note: Privacy coins (Monero) usage extremely high.\nNote to Elena: Is this normal? -Trader", "observations": "Trading report showing ENTROPY wallet activity" + }, + { + "type": "rfid_cloner", + "name": "RFID Badge Cloner", + "takeable": true, + "observations": "Portable RFID cloning device - can duplicate access badges for restricted areas" } ] }, @@ -481,7 +488,7 @@ architects_fund_document = "THE ARCHITECT'S FUND - STRATEGIC ALLOCATION\n\nCurre "type": "room_servers", "locked": true, "lockType": "password", - "requires": "server_password", + "requires": "bitcoin2024", "connections": { "south": "trading_floor", "north": "data_center" @@ -533,7 +540,7 @@ architects_fund_document = "THE ARCHITECT'S FUND - STRATEGIC ALLOCATION\n\nCurre "name": "Server Access Credentials", "takeable": true, "readable": true, - "text": "<%= password_hint_note %>", + "text": "HashChain Server Access:\nUser: admin\nPassword patterns: crypto terms + numbers\nCommon: bitcoin2024, ethereum2025, satoshi2024", "observations": "Password hint note - crypto-themed passwords for server access" } ] @@ -542,7 +549,8 @@ architects_fund_document = "THE ARCHITECT'S FUND - STRATEGIC ALLOCATION\n\nCurre "data_center": { "type": "room_servers", "connections": { - "south": "server_room" + "south": "server_room", + "east": "executive_wing" }, "npcs": [], "objects": [ @@ -558,7 +566,7 @@ architects_fund_document = "THE ARCHITECT'S FUND - STRATEGIC ALLOCATION\n\nCurre "name": "The Architect's Fund Allocation", "takeable": true, "readable": true, - "text": "<%= architects_fund_document %>", + "text": "THE ARCHITECT'S FUND - STRATEGIC ALLOCATION\n\nCurrent Balance: $12.8M USD (BTC equivalent)\n\nPLANNED DISTRIBUTION:\n- Critical Mass (Infrastructure): $3.2M\n- Social Fabric (Disinformation): $2.1M\n- Zero Day Syndicate (Exploits): $2.8M\n- Digital Vanguard (Corporate): $1.9M\n- Ghost Protocol (Intelligence): $1.5M\n- Supply Chain Saboteurs: $1.3M\n\nOPERATION: The Architect's Masterpiece\nTARGET DATE: 72 hours\nCOORDINATOR: The Architect\n\nNOTE: Simultaneous multi-cell attack. All cells receive funding simultaneously.\nSuccess probability: 94%\nProjected casualties: 180-340 across all operations", "observations": "CRITICAL EVIDENCE: The Architect's Fund - $12.8M for coordinated attack in 72 hours, 180-340 projected casualties", "onPickup": { "setVariable": { "found_architects_fund": true, "knows_coordinated_attack": true, "evidence_level": "evidence_level + 2", "lore_collected": "lore_collected + 1" } } }, @@ -569,6 +577,13 @@ architects_fund_document = "THE ARCHITECT'S FUND - STRATEGIC ALLOCATION\n\nCurre "readable": true, "text": "HASHCHAIN EXCHANGE - EMERGENCY WALLET RECOVERY\n\nCold Storage Private Keys (Encrypted)\nTotal Holdings: $48.3M USD equivalent\n\nThe Architect's Fund Wallet:\nAddress: 1ARCHITECT9FUND\nBalance: $12.8M USD\nRecovery Key: [ENCRYPTED]\n\nNote: Seizure of this wallet would cripple ENTROPY funding.\nAlternative: Monitor transactions to identify all cells receiving funds.", "observations": "Wallet recovery keys - choice point: seize assets or monitor" + }, + { + "type": "keycard", + "name": "Executive Access Badge", + "badgeId": "executive_badge", + "takeable": true, + "observations": "High-security executive badge - grants access to CEO's office wing" } ] }, @@ -596,7 +611,7 @@ architects_fund_document = "THE ARCHITECT'S FUND - STRATEGIC ALLOCATION\n\nCurre ], "objects": [ { - "type": "lab-workstation", + "type": "pc", "name": "Blockchain Analysis Workstation", "takeable": false, "observations": "Advanced blockchain forensics tools - transaction graph analysis, wallet clustering" @@ -607,7 +622,7 @@ architects_fund_document = "THE ARCHITECT'S FUND - STRATEGIC ALLOCATION\n\nCurre "name": "ENTROPY Transaction Network Analysis", "takeable": true, "readable": true, - "text": "<%= blockchain_evidence %>", + "text": "ENTROPY FINANCIAL NETWORK - TRANSACTION ANALYSIS\n\nSource Wallets:\n- 1ENTROPY2RansomInc -> $2.4M (Hospital ransomware - Mission 2)\n- 1ENTROPY5InsiderTh -> $847K (Corporate espionage - Mission 5)\n- 1ENTROPY3ZeroDaySy -> $1.2M (Exploit sales)\n- 1ENTROPY1SocialFab -> $680K (Disinformation campaigns)\n\nIntermediary: HashChain Exchange Mixer\n\nDestination: 1ARCHITECT9FUND\nTotal Value: $12.8M USD equivalent\n\nPURPOSE: Major coordinated operation funding\nTIMELINE: 72 hours until fund distribution", "observations": "CRITICAL EVIDENCE: Complete ENTROPY financial network connecting M2 ransomware, M5 espionage, all cells", "onPickup": { "setVariable": { "found_blockchain_evidence": true, "financial_network_mapped": true, "evidence_level": "evidence_level + 2" } } }, @@ -663,7 +678,7 @@ architects_fund_document = "THE ARCHITECT'S FUND - STRATEGIC ALLOCATION\n\nCurre "lockType": "rfid", "requires": "executive_badge", "connections": { - "south": "trading_floor", + "west": "data_center", "north": "satoshi_office" }, "npcs": [],