Enhance Operation Shatter narrative and reporting mechanics

- Added a new task to report the discovery of Operation Shatter to SAFETYNET, including dialogue for Agent 0x99.
- Introduced new variables to track player interactions regarding the operation and its implications.
- Updated scenario files to reflect the urgency and details of the operation, emphasizing the calculated casualties and the psychological warfare aspect.
- Shortened the opening briefing to streamline the introduction of the mission and its stakes.

Files modified:
- scenario.json.erb: Added new task for reporting Operation Shatter.
- m01_closing_debrief.json: Updated dialogue to reflect new mission details.
- m01_derek_confrontation.json: Adjusted confrontation dialogue to align with new narrative elements.
- m01_npc_maya.ink: Enhanced Maya's dialogue regarding Operation Shatter.
- m01_opening_briefing.ink: Streamlined introduction and urgency explanation.
- m01_phone_agent0x99.ink: Added reporting mechanics for Operation Shatter discovery.
This commit is contained in:
Z. Cliffe Schreuders
2026-02-10 14:23:50 +00:00
parent b620430895
commit 95c18a76a3
9 changed files with 152 additions and 164 deletions

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

View File

@@ -93,6 +93,7 @@ Maya: They're planning to kill people. On purpose. They call it "Operation Shatt
=== operation_details ===
~ discussed_operation = true
#unlock_task:inform_safetynet_operation_shatter
Maya: Operation Shatter is a coordinated disinformation attack.

File diff suppressed because one or more lines are too long

View File

@@ -2,15 +2,11 @@
// Mission 1: First Contact - Opening Briefing
// Act 1: Interactive Cutscene
// Agent 0x99 "Haxolottle" briefs Agent 0x00
// UPDATED: Operation Shatter - Clear evil threat
// UPDATED: Removed vague "approach" choice - outcomes
// now based on actual player decisions
// UPDATED: Shortened intro - Operation Shatter discovered through investigation
// ================================================
// Variables for tracking what player asked about (affects debrief)
VAR asked_about_stakes = false
VAR asked_about_casualties = false
VAR asked_about_architect = false
VAR asked_about_derek = false
VAR asked_about_maya = false
VAR mission_accepted = false
@@ -25,12 +21,12 @@ VAR player_name = "Agent 0x00"
=== start ===
Agent 0x99: {player_name}, thanks for getting here on short notice.
Agent 0x99: We have a situation developing at Viral Dynamics Media. And it's worse than we initially thought.
Agent 0x99: We have a situation at Viral Dynamics Media. ENTROPY's Social Fabric cell is operating there.
+ [What's the situation?]
+ [What are they doing?]
-> briefing_threat
+ [I'm ready. What's the mission?]
-> briefing_threat
-> mission_objectives
+ [How urgent is this?]
~ asked_about_stakes = true
-> urgency_explanation
@@ -40,145 +36,47 @@ Agent 0x99: We have a situation developing at Viral Dynamics Media. And it's wor
// ================================================
=== urgency_explanation ===
Agent 0x99: We're 72 hours from a mass casualty event.
Agent 0x99: Time-sensitive. We received an anonymous tip from someone inside who suspects ENTROPY activity.
Agent 0x99: ENTROPY's Social Fabric cell is operating inside Viral Dynamics. But they're not just running disinformation campaigns.
Agent 0x99: They're planning something called "Operation Shatter."
Agent 0x99: Whatever they're planning, it's active. And it's dangerous.
-> briefing_threat
// ================================================
// THREAT BRIEFING - OPERATION SHATTER
// THREAT BRIEFING
// ================================================
=== briefing_threat ===
Agent 0x99: Three weeks ago, our AI flagged something bigger than election interference.
Agent 0x99: Three weeks ago, we flagged suspicious activity at Viral Dynamics—far beyond typical disinformation work.
Agent 0x99: Social Fabric has spent three months collecting psychological profiles. Detailed vulnerability assessments on over two million people in the region.
Agent 0x99: Our intel suggests they're coordinating something larger. Data collection, psychological profiling, attack infrastructure.
+ [What kind of profiles?]
-> profile_details
+ [What are they planning to do with them?]
-> operation_shatter
+ [Two million people?]
-> profile_scale
Agent 0x99: The details are unclear, but it's active and operational.
// ================================================
// PROFILE DETAILS
// ================================================
=== profile_details ===
Agent 0x99: Medical records. Prescription histories. Financial stress indicators. Documented anxiety disorders.
Agent 0x99: They've identified who has insulin dependencies. Who relies on weekly dialysis. Who lives alone without family support.
Agent 0x99: This isn't demographic marketing data. This is a targeting database for psychological warfare.
+ [What are they going to do with it?]
-> operation_shatter
+ [How did they get this data?]
-> data_source
=== data_source ===
Agent 0x99: The usual methods—breached insurance databases, compromised pharmacy systems, scraped social media.
Agent 0x99: But the concerning part isn't how they got it. It's what they're planning to do with it.
-> operation_shatter
=== profile_scale ===
Agent 0x99: 2.3 million profiles, to be precise. And each one includes a vulnerability score.
Agent 0x99: They've categorized people by how likely they are to panic. To make dangerous decisions. To die if they receive the wrong message at the wrong time.
-> operation_shatter
// ================================================
// OPERATION SHATTER - THE EVIL PLAN
// ================================================
=== operation_shatter ===
Agent 0x99: We intercepted fragments of something called "Operation Shatter."
Agent 0x99: Simultaneous fake crisis messages. Personalized. Targeted at the most vulnerable populations.
+ [What kind of crisis messages?]
-> crisis_details
+ [What's the goal?]
-> entropy_goal
=== crisis_details ===
Agent 0x99: Fake hospital system collapses. "Your appointment has been cancelled. All patient records corrupted."
Agent 0x99: Fake bank failures. "Your funds are frozen due to suspected breach."
Agent 0x99: Fake infrastructure attacks. "Water contaminated. Power grid compromised."
Agent 0x99: All delivered simultaneously to people they've profiled as most likely to panic.
+ [That would cause mass chaos...]
-> casualty_projections
+ [People could die from that.]
~ asked_about_casualties = true
-> casualty_projections
=== entropy_goal ===
Agent 0x99: Social Fabric's philosophy is "truth is obsolete, only narrative matters."
Agent 0x99: But this goes beyond philosophy. They want to permanently destroy public trust in digital communications.
Agent 0x99: And they're willing to kill people to make their point.
-> casualty_projections
// ================================================
// CASUALTY PROJECTIONS - THE HORROR
// ================================================
=== casualty_projections ===
Agent 0x99: {player_name}, I need you to understand what we're dealing with.
Agent 0x99: We recovered fragments of their impact assessment. They've calculated projected casualties.
+ [How many?]
~ asked_about_casualties = true
-> casualty_numbers
+ [They're planning to kill people?]
~ asked_about_casualties = true
-> casualty_numbers
=== casualty_numbers ===
Agent 0x99: Their own estimates: 42 to 85 direct deaths in the first 24 hours.
Agent 0x99: Diabetics who skip insulin because they believe hospitals are compromised. Elderly who have heart attacks from fake bank failure notices. Traffic fatalities from evacuation panic.
Agent 0x99: And they consider these deaths... acceptable. "Educational," they call it.
+ [That's monstrous.]
-> villain_philosophy
+ [We have to stop this.]
-> mission_objectives
=== villain_philosophy ===
Agent 0x99: The fragment we recovered includes a note from someone called "The Architect."
Agent 0x99: "These are not victims. They are examples. Their deaths will save thousands who learn the lesson: Trust nothing. Verify everything."
Agent 0x99: They're true believers, {player_name}. They think murdering people is "teaching a lesson."
+ [Who's The Architect?]
~ asked_about_architect = true
-> architect_mention
+ [What kind of data?]
-> data_concerns
+ [Who's running the operation?]
~ asked_about_derek = true
-> operative_identity
+ [What's my mission?]
-> mission_objectives
=== architect_mention ===
Agent 0x99: We don't know yet. Someone coordinating ENTROPY cells at a strategic level.
// ================================================
// DATA CONCERNS
// ================================================
Agent 0x99: But that's a problem for later. Right now, we stop Operation Shatter.
=== data_concerns ===
Agent 0x99: Large-scale data aggregation. Personal profiles, vulnerability assessments.
-> mission_objectives
Agent 0x99: Whatever they're building, it's targeted and sophisticated.
Agent 0x99: Your job is to get inside and find out what they're actually planning.
+ [Who's running this?]
~ asked_about_derek = true
-> operative_identity
+ [What's my mission?]
-> mission_objectives
// ================================================
// MISSION OBJECTIVES
@@ -187,11 +85,11 @@ Agent 0x99: But that's a problem for later. Right now, we stop Operation Shatter
=== mission_objectives ===
Agent 0x99: Your objectives:
Agent 0x99: One—Find the complete Operation Shatter documentation. Target lists, message templates, deployment timeline.
Agent 0x99: One—Infiltrate Viral Dynamics and identify what ENTROPY is planning.
Agent 0x99: Two—Identify all ENTROPY operatives inside Viral Dynamics.
Agent 0x99: Two—Gather evidence of their operations and identify all operatives.
Agent 0x99: Three—Stop the operation before Sunday. That's when they deploy.
Agent 0x99: Three—Report back with actionable intelligence so we can stop whatever they're building.
+ [How do I get inside?]
-> cover_story
@@ -208,23 +106,14 @@ Agent 0x99: Three—Stop the operation before Sunday. That's when they deploy.
=== operative_identity ===
Agent 0x99: Derek Lawson. Senior Marketing Manager at Viral Dynamics.
Agent 0x99: Perfect cover—his job is literally manipulating narratives for clients. He's been there three months, which aligns with when the data collection started.
Agent 0x99: He's been there three months. Timeline matches when the suspicious activity started.
Agent 0x99: He's not just running operations. He authored parts of the casualty projections we intercepted.
Agent 0x99: He's ENTROPY, but we don't know the full scope of what he's running.
+ [He calculated how many people would die?]
-> derek_author
+ [How do I get to him?]
-> cover_story
=== derek_author ===
Agent 0x99: His signature is on the medical dependency targeting document.
Agent 0x99: He personally identified which populations would be most vulnerable to fake hospital closure messages.
Agent 0x99: This isn't a foot soldier following orders. He's an architect of mass casualties.
-> cover_story
+ [What's my mission?]
-> mission_objectives
// ================================================
// COVER STORY
@@ -243,25 +132,25 @@ Agent 0x99: Completely legitimate. Viral Dynamics actually requested the audit w
=== technical_access ===
Agent 0x99: Server room, computers, network infrastructure—all fair game under your cover.
Agent 0x99: That's where you'll find the Operation Shatter files. Derek keeps them encrypted, but they're there.
Agent 0x99: That's where you'll find evidence of what Derek's planning. Look for encrypted files, attack infrastructure, target databases.
-> innocent_warning
=== employee_interaction ===
Agent 0x99: Most employees at Viral Dynamics have no idea what's happening.
Agent 0x99: They think they work at a marketing agency. The Operation Shatter team is isolated—maybe three or four people total.
Agent 0x99: They think they work at a marketing agency. The ENTROPY team is isolated—probably just a few people.
Agent 0x99: Everyone else is innocent. They'll go home to families tonight with no idea their company was planning to kill people.
Agent 0x99: Everyone else is innocent. Keep collateral damage to zero.
-> innocent_warning
=== innocent_warning ===
Agent 0x99: One more thing: there's a journalist there named Maya Chen.
Agent 0x99: One more thing: there's someone inside named Maya Chen.
Agent 0x99: She contacted us anonymously. Suspected something was wrong but doesn't know the full scope. She thinks it's corporate fraud, not mass murder.
Agent 0x99: She contacted us anonymously. Suspected something was wrong but doesn't have the full picture.
Agent 0x99: Protect her identity. If Derek finds out she tipped us off, she's in danger.
Agent 0x99: Find her. She might have critical information. And protect her identity—if Derek finds out she tipped us off, she's in danger.
~ asked_about_maya = true
@@ -286,7 +175,7 @@ Agent 0x99: Your contractor kit has lockpicks, RFID cloner, and analysis tools.
Agent 0x99: Everything you need looks like standard IT equipment. Stay in character.
Agent 0x99: And {player_name}—when you find those casualty projections, photograph everything. We need complete documentation.
Agent 0x99: And {player_name}—document everything you find. We need complete evidence of whatever they're planning.
-> final_instructions
@@ -295,9 +184,9 @@ Agent 0x99: And {player_name}—when you find those casualty projections, photog
// ================================================
=== final_instructions ===
Agent 0x99: Remember—Derek doesn't know we're onto Operation Shatter. He thinks this is just an IT audit.
Agent 0x99: Remember—Derek doesn't know we're onto him. This is just a routine IT audit as far as he's concerned.
Agent 0x99: Use that advantage. Gather evidence before confronting anyone.
Agent 0x99: Use that advantage. Gather intelligence and evidence before making any moves.
+ [Any specific advice?]
-> specific_advice
@@ -330,11 +219,11 @@ Agent 0x99: And Maya Chen—the journalist who contacted us. Be careful around h
// ================================================
=== deployment ===
Agent 0x99: {player_name}, I won't lie. This is bigger than a typical first mission.
Agent 0x99: {player_name}, get inside, find out what ENTROPY is planning, and report back.
Agent 0x99: But you're ready. And those 85 people who might die on Sunday? They're counting on you. Even if they don't know it.
Agent 0x99: Talk to Maya. She's your best lead. Whatever Derek's building, she'll have seen pieces of it.
Agent 0x99: Stop Operation Shatter. Find the evidence. And make sure Derek Lawson never hurts anyone.
Agent 0x99: Once you know what we're dealing with, call me. We'll figure out how to stop it.
~ mission_accepted = true

File diff suppressed because one or more lines are too long

View File

@@ -9,10 +9,13 @@ VAR ssh_hint_given = false
VAR linux_hint_given = false
VAR sudo_hint_given = false
VAR first_contact = true
VAR operation_shatter_reported = false
// External variables
VAR player_name = "Agent 0x00"
VAR current_task = ""
VAR talked_to_maya = false
VAR discussed_operation = false
// ================================================
// START: PHONE SUPPORT
@@ -57,6 +60,8 @@ Agent 0x99: If you need guidance on any challenges, I'm here. That's what handle
Agent 0x99: What do you need help with?
+ {talked_to_maya and discussed_operation and not operation_shatter_reported} [I discovered what ENTROPY is planning - Operation Shatter]
-> report_operation_shatter
+ {not lockpick_hint_given} [Lockpicking guidance]
-> lockpick_help
+ {not ssh_hint_given} [SSH brute force help]
@@ -167,6 +172,90 @@ Agent 0x99: Most people at Viral Dynamics are legitimate employees. We want ENTR
+ [Understood]
-> support_hub
// ================================================
// REPORT OPERATION SHATTER DISCOVERY
// ================================================
=== report_operation_shatter ===
~ operation_shatter_reported = true
#unlock_task:inform_safetynet_operation_shatter
Agent 0x99: ...Say that again.
+ [Operation Shatter - coordinated disinformation attack]
-> shatter_details_1
+ [They're planning mass casualties]
-> shatter_casualties
=== shatter_details_1 ===
Agent 0x99: Operation Shatter. Christ.
Agent 0x99: What exactly are they planning?
+ [Fake crisis messages targeting vulnerable populations]
-> shatter_details_2
=== shatter_details_2 ===
Agent 0x99: Talk to me. What did Maya tell you?
+ [Over two million profiles. Fake hospital closures, bank failures, infrastructure attacks.]
-> shatter_casualties
=== shatter_casualties ===
Agent 0x99: {player_name}, this is worse than we thought.
Agent 0x99: How bad are we talking?
+ [Their own projections: 42 to 85 deaths in the first 24 hours]
-> shatter_reaction
+ [They've calculated acceptable casualties. They're targeting diabetics, elderly, people with anxiety disorders.]
-> shatter_reaction
=== shatter_reaction ===
Agent 0x99: ...Forty-two to eighty-five people. Calculated. Deliberate.
Agent 0x99: They're not just terrorists. They're mass murderers with spreadsheets.
Agent 0x99: {player_name}, listen carefully. Your mission just changed priority.
+ [What do I need to do?]
-> updated_objectives
=== updated_objectives ===
Agent 0x99: New priority objective: Stop Operation Shatter before deployment.
Agent 0x99: Maya said Sunday, 6 AM. That's when the messages go out.
Agent 0x99: Find the complete documentation—target lists, message templates, deployment systems.
Agent 0x99: Gather proof of Derek's involvement. And shut down their attack infrastructure before those messages go out.
+ [What about those 85 people?]
-> people_at_stake
+ [I'll stop it]
-> mission_commitment
=== people_at_stake ===
Agent 0x99: They're counting on you, {player_name}. Even if they don't know it.
Agent 0x99: Diabetics who'll skip insulin. Elderly with heart conditions. People who'll panic and make fatal decisions.
Agent 0x99: Every piece of evidence you find brings us closer to stopping this.
-> mission_commitment
=== mission_commitment ===
#complete_task:inform_safetynet_operation_shatter
Agent 0x99: Good work discovering this. Now we know what we're dealing with.
Agent 0x99: Continue investigating. Find the Operation Shatter files, identify all operatives, and prepare to shut this down.
Agent 0x99: Call me if you need support. This just became a race against the clock.
#exit_conversation
-> support_hub
// ================================================
// EVENT: LOCKPICK ACQUIRED
// ================================================

File diff suppressed because one or more lines are too long

View File

@@ -156,6 +156,13 @@ password_hints = "Common passwords: Marketing123, Campaign2024, Viral_Dynamics_A
"type": "npc_conversation",
"targetNPC": "maya_chen",
"status": "locked"
},
{
"taskId": "inform_safetynet_operation_shatter",
"title": "Report Operation Shatter discovery to SAFETYNET",
"type": "phone_conversation",
"targetNPC": "agent_0x99",
"status": "locked"
}
]
},
@@ -965,6 +972,8 @@ password_hints = "Common passwords: Marketing123, Campaign2024, Viral_Dynamics_A
"talked_to_maya": false,
"talked_to_kevin": false,
"maya_identity_protected": true,
"discussed_operation": false,
"operation_shatter_reported": false,
"objectives_completed": 0,
"lore_collected": 0,