mirror of
https://github.com/cliffe/BreakEscape.git
synced 2026-02-20 13:50:46 +00:00
Revise Mission 1: First Contact to enhance narrative depth and urgency
- Updated the story premise to introduce "Operation Shatter," detailing the coordinated mass panic attack targeting vulnerable populations. - Expanded the room layout to include additional rooms and NPC interactions, enhancing player exploration and engagement. - Added critical LORE fragments revealing casualty projections and targeting demographics, emphasizing the stakes of the mission. - Revised dialogue and choices to reflect player actions and moral implications, ensuring a more impactful closing debrief. - Improved scenario structure and flow, aligning with best practices for narrative clarity and player agency.
This commit is contained in:
File diff suppressed because it is too large
Load Diff
@@ -2,11 +2,21 @@
|
||||
|
||||
**Scenario:** First Contact
|
||||
**ENTROPY Cell:** Social Fabric
|
||||
**Fragment Budget:** 3 fragments (beginner scenario)
|
||||
**Fragment Budget:** 5 fragments (beginner scenario, expanded for Operation Shatter)
|
||||
**Difficulty Distribution:** 100% early-game accessible (tutorial mission)
|
||||
|
||||
---
|
||||
|
||||
## CRITICAL UPDATE: Operation Shatter Evidence
|
||||
|
||||
**Version 2.0 Update:** Added two new LORE fragments that expose Operation Shatter's full horror:
|
||||
1. **Operation Shatter Casualty Projections** - The document showing ENTROPY calculated deaths
|
||||
2. **Operation Shatter Target Demographics** - Vulnerable populations database
|
||||
|
||||
These fragments are REQUIRED for full mission understanding and should be placed prominently
|
||||
|
||||
---
|
||||
|
||||
## Overview
|
||||
|
||||
**Fragment Philosophy:**
|
||||
@@ -692,6 +702,352 @@ I'll rest when The Architect is caught.
|
||||
|
||||
---
|
||||
|
||||
## Fragment #4: Operation Shatter Casualty Projections (NEW - CRITICAL)
|
||||
|
||||
**Category:** ENTROPY Intelligence → Operational Plans
|
||||
**Rarity:** Uncommon (but CRITICAL for story understanding)
|
||||
**Discovery Difficulty:** Moderate (Derek's office access required)
|
||||
**Educational Value:** Shows ENTROPY's willingness to kill, moral horror
|
||||
**CyBOK Areas:** Human Factors, Risk Assessment
|
||||
|
||||
### Metadata
|
||||
|
||||
```json
|
||||
{
|
||||
"id": "lore_m01_operation_shatter_casualties",
|
||||
"title": "Operation Shatter: Casualty Projections",
|
||||
"category": "entropy_intelligence",
|
||||
"subcategory": "operational_plans",
|
||||
"rarity": "uncommon",
|
||||
"scenario": "m01_first_contact",
|
||||
"discovery_location": "derek_office_desk_drawer",
|
||||
"unlock_requirement": "derek_office_access",
|
||||
"related_fragments": ["lore_m01_shatter_demographics", "lore_architect_letter_social_fabric"],
|
||||
"tags": ["operation_shatter", "casualties", "mass_murder", "true_believer"],
|
||||
"xp_reward": 150,
|
||||
"critical_story_fragment": true
|
||||
}
|
||||
```
|
||||
|
||||
### Fragment Content
|
||||
|
||||
```
|
||||
═══════════════════════════════════════════════════════════
|
||||
OPERATION SHATTER - IMPACT ASSESSMENT
|
||||
[INTERNAL PLANNING DOCUMENT]
|
||||
CLASSIFICATION: CELL LEADERSHIP ONLY
|
||||
═══════════════════════════════════════════════════════════
|
||||
|
||||
OPERATION: SHATTER
|
||||
CELL: SOCIAL FABRIC
|
||||
DEPLOYMENT: Sunday 06:00 UTC (72 hours from assessment)
|
||||
AUTHOR: D. Lawson, Operations Lead
|
||||
|
||||
═══════════════════════════════════════════════════════════
|
||||
PROJECTED CASUALTY ANALYSIS
|
||||
═══════════════════════════════════════════════════════════
|
||||
|
||||
DIRECT CASUALTIES (First 24 Hours):
|
||||
|
||||
1. MEDICAL DEPENDENCY PANIC
|
||||
- Diabetics avoiding "contaminated" hospitals: 12-20 deaths
|
||||
- Dialysis patients skipping "compromised" treatment: 4-8 deaths
|
||||
- Surgical patients cancelling "corrupted" procedures: 2-5 deaths
|
||||
Subtotal: 18-33 deaths
|
||||
|
||||
2. CARDIOVASCULAR EVENTS
|
||||
- Elderly receiving fake bank failure notices: 8-15 deaths
|
||||
- Anxiety-prone individuals in panic cascade: 5-10 deaths
|
||||
- Stress-induced cardiac events: 4-8 deaths
|
||||
Subtotal: 17-33 deaths
|
||||
|
||||
3. VIOLENCE & ACCIDENTS
|
||||
- Traffic fatalities during evacuation panic: 5-12 deaths
|
||||
- Violence from political incitement messages: 2-7 deaths
|
||||
Subtotal: 7-19 deaths
|
||||
|
||||
ESTIMATED DIRECT DEATHS: 42-85 people
|
||||
|
||||
═══════════════════════════════════════════════════════════
|
||||
STRATEGIC JUSTIFICATION
|
||||
═══════════════════════════════════════════════════════════
|
||||
|
||||
These casualties are not collateral damage. They are the
|
||||
demonstration.
|
||||
|
||||
Every security professional says "humans are the weakest
|
||||
link." We prove it. Conclusively. Undeniably.
|
||||
|
||||
When the truth emerges that fake messages caused real
|
||||
deaths, trust in ALL digital communications collapses
|
||||
permanently. This is the goal.
|
||||
|
||||
After Operation Shatter:
|
||||
- No one trusts hospital notifications without verification
|
||||
- No one believes bank messages without confirmation
|
||||
- No one accepts infrastructure alerts without checking
|
||||
|
||||
The cost: 42-85 lives
|
||||
The benefit: Millions learn to verify everything
|
||||
|
||||
This is not terrorism. This is education at scale.
|
||||
Those who die are not victims—they are examples.
|
||||
Their negligence is the lesson.
|
||||
|
||||
═══════════════════════════════════════════════════════════
|
||||
ARCHITECT'S APPROVAL
|
||||
═══════════════════════════════════════════════════════════
|
||||
|
||||
FROM: The Architect
|
||||
DATE: 2025-11-15
|
||||
|
||||
Reviewed and approved. Casualty projections are acceptable.
|
||||
"Acceptable losses" is not euphemism—it is calculation.
|
||||
|
||||
The weak will die. The adaptable will survive.
|
||||
This is entropy's natural selection.
|
||||
|
||||
Proceed with deployment as scheduled.
|
||||
|
||||
For the greater understanding.
|
||||
|
||||
∂S ≥ 0
|
||||
|
||||
- The Architect
|
||||
|
||||
═══════════════════════════════════════════════════════════
|
||||
[SAFETYNET RECOVERY NOTE]
|
||||
|
||||
Discovered in Derek Lawson's desk during Operation First
|
||||
Contact. This document proves premeditated mass murder.
|
||||
|
||||
Key Intelligence:
|
||||
- ENTROPY leadership (The Architect) approved killing 42-85 people
|
||||
- Casualties are calculated, not accidental
|
||||
- Philosophical justification for murder as "education"
|
||||
- Derek Lawson personally authored the projection
|
||||
- Deployment scheduled for Sunday 06:00 UTC
|
||||
|
||||
Criminal Charges Supported:
|
||||
- Conspiracy to commit mass murder
|
||||
- Terrorism (domestic and international)
|
||||
- Computer crimes (targeted harassment)
|
||||
- Incitement to violence
|
||||
|
||||
This document is the smoking gun. Prosecute to fullest extent.
|
||||
|
||||
- SAFETYNET Legal Division
|
||||
═══════════════════════════════════════════════════════════
|
||||
```
|
||||
|
||||
### Design Rationale
|
||||
|
||||
**Why This Fragment is CRITICAL for Mission 1:**
|
||||
|
||||
1. **Shows the Horror:** Player sees ENTROPY calculated how many people would DIE
|
||||
2. **Makes Enemy Evil:** No ambiguity—they planned to murder elderly, diabetics, vulnerable people
|
||||
3. **The Architect Approval:** Shows leadership sanctioned mass murder
|
||||
4. **Derek's Culpability:** His signature is on it—he's not a foot soldier
|
||||
5. **Justification as Madness:** "Educational deaths" philosophy is clearly monstrous
|
||||
6. **Prosecution Path:** Establishes legal consequences are justified
|
||||
|
||||
**Discovery Experience:**
|
||||
- Found in Derek's desk (requires office access)
|
||||
- The "OH SHIT" moment when player reads casualty numbers
|
||||
- Changes understanding from "disinformation" to "mass murder"
|
||||
- Makes confrontation with Derek more personal
|
||||
|
||||
---
|
||||
|
||||
## Fragment #5: Operation Shatter Target Demographics (NEW)
|
||||
|
||||
**Category:** ENTROPY Intelligence → Operational Data
|
||||
**Rarity:** Uncommon
|
||||
**Discovery Difficulty:** Moderate (server room or Derek's computer)
|
||||
**Educational Value:** Shows targeting methodology, vulnerable populations
|
||||
**CyBOK Areas:** Human Factors, Privacy, Data Protection
|
||||
|
||||
### Metadata
|
||||
|
||||
```json
|
||||
{
|
||||
"id": "lore_m01_shatter_demographics",
|
||||
"title": "Operation Shatter: Target Demographics Database",
|
||||
"category": "entropy_intelligence",
|
||||
"subcategory": "operational_data",
|
||||
"rarity": "uncommon",
|
||||
"scenario": "m01_first_contact",
|
||||
"discovery_location": "server_room_terminal",
|
||||
"unlock_requirement": "server_room_access",
|
||||
"related_fragments": ["lore_m01_operation_shatter_casualties", "lore_social_fabric_manifesto"],
|
||||
"tags": ["operation_shatter", "targeting", "vulnerable_populations", "psychological_warfare"],
|
||||
"xp_reward": 100
|
||||
}
|
||||
```
|
||||
|
||||
### Fragment Content
|
||||
|
||||
```
|
||||
═══════════════════════════════════════════════════════════
|
||||
OPERATION SHATTER - TARGET DEMOGRAPHICS
|
||||
[PSYCHOLOGICAL WARFARE DATABASE]
|
||||
═══════════════════════════════════════════════════════════
|
||||
|
||||
DATABASE VERSION: 2.7.3
|
||||
LAST UPDATE: 2025-11-28
|
||||
TOTAL PROFILES: 2,347,832
|
||||
COLLECTION PERIOD: 90 days
|
||||
|
||||
═══════════════════════════════════════════════════════════
|
||||
SEGMENT 1: MEDICAL DEPENDENCY
|
||||
═══════════════════════════════════════════════════════════
|
||||
|
||||
Population: 47,832 individuals
|
||||
Data Sources: Insurance claims, pharmacy records, hospital databases
|
||||
|
||||
Targeting Criteria:
|
||||
- Insulin-dependent diabetics (14,203)
|
||||
- Weekly dialysis patients (2,847)
|
||||
- Chronic condition requiring regular hospital visits (30,782)
|
||||
|
||||
Vulnerability Score: 9.2/10
|
||||
Expected Response Rate: 78%
|
||||
Projected Panic Actions: Medication hoarding, treatment avoidance
|
||||
|
||||
CRISIS MESSAGE TEMPLATE:
|
||||
"URGENT: [Hospital Name] patient database has been
|
||||
compromised. All appointments cancelled. Medication
|
||||
records may be corrupted. Contact provider using
|
||||
non-digital methods to verify treatment plan."
|
||||
|
||||
═══════════════════════════════════════════════════════════
|
||||
SEGMENT 2: FINANCIAL ANXIETY
|
||||
═══════════════════════════════════════════════════════════
|
||||
|
||||
Population: 156,432 individuals
|
||||
Data Sources: Credit reports, loan applications, bankruptcy records
|
||||
|
||||
Targeting Criteria:
|
||||
- Individuals with documented financial stress
|
||||
- Elderly with fixed incomes
|
||||
- Single-income households with medical expenses
|
||||
|
||||
Vulnerability Score: 8.7/10
|
||||
Expected Response Rate: 65%
|
||||
Projected Panic Actions: Bank runs, cash hoarding, stress events
|
||||
|
||||
CRISIS MESSAGE TEMPLATE:
|
||||
"ALERT: [Bank Name] security breach detected. Funds may
|
||||
be inaccessible for 72+ hours. Consider immediate withdrawal."
|
||||
|
||||
═══════════════════════════════════════════════════════════
|
||||
SEGMENT 3: ANXIETY DISORDERS
|
||||
═══════════════════════════════════════════════════════════
|
||||
|
||||
Population: 89,247 individuals
|
||||
Data Sources: Prescription records, mental health databases
|
||||
|
||||
Targeting Criteria:
|
||||
- Documented anxiety or panic disorders
|
||||
- Individuals on anti-anxiety medication
|
||||
- History of stress-related hospitalization
|
||||
|
||||
Vulnerability Score: 9.5/10
|
||||
Expected Response Rate: 82%
|
||||
Projected Panic Actions: Panic attacks, emergency calls, self-harm
|
||||
|
||||
CRISIS MESSAGE TEMPLATE:
|
||||
"EMERGENCY: Credible threat detected in your area.
|
||||
Shelter in place. Do not answer door for anyone
|
||||
claiming official status."
|
||||
|
||||
═══════════════════════════════════════════════════════════
|
||||
SEGMENT 4: ELDERLY ISOLATED
|
||||
═══════════════════════════════════════════════════════════
|
||||
|
||||
Population: 34,891 individuals
|
||||
Data Sources: Census, social services, utility records
|
||||
|
||||
Targeting Criteria:
|
||||
- Age 70+ living alone
|
||||
- Limited family contact (utility records show single occupant)
|
||||
- Not on social media (no alternative info sources)
|
||||
|
||||
Vulnerability Score: 9.8/10
|
||||
Expected Response Rate: 91%
|
||||
Projected Panic Actions: Cardiac events, falls, medication errors
|
||||
|
||||
CRISIS MESSAGE TEMPLATE:
|
||||
"IMPORTANT NOTICE: Social Security system breach. Your
|
||||
benefits may be delayed. Contact local office IMMEDIATELY
|
||||
to verify identity and prevent loss of benefits."
|
||||
|
||||
═══════════════════════════════════════════════════════════
|
||||
COLLECTION METHODOLOGY
|
||||
═══════════════════════════════════════════════════════════
|
||||
|
||||
Data Collection Sources:
|
||||
- Compromised insurance database (Operation Caduceus)
|
||||
- Pharmacy chain breach (Operation Prescription)
|
||||
- Social media psychological profiling (Operation Mirror)
|
||||
- Public records correlation (Operation Census)
|
||||
|
||||
Vulnerability Scoring Algorithm:
|
||||
- Panic Response History (25% weight)
|
||||
- Medical Dependency Level (25% weight)
|
||||
- Social Isolation Score (20% weight)
|
||||
- Financial Stress Indicator (15% weight)
|
||||
- Digital Literacy Inverse (15% weight)
|
||||
|
||||
High-value targets identified: 12,847 individuals
|
||||
Maximum vulnerability segment: Elderly diabetics living alone
|
||||
|
||||
═══════════════════════════════════════════════════════════
|
||||
[SAFETYNET RECOVERY NOTE]
|
||||
|
||||
Recovered from Viral Dynamics server room during
|
||||
Operation First Contact.
|
||||
|
||||
This database represents months of targeted data
|
||||
collection specifically designed to identify who
|
||||
would be most likely to DIE from panic.
|
||||
|
||||
Key Insights:
|
||||
- 2.3 million people profiled for psychological weakness
|
||||
- Vulnerable populations deliberately targeted
|
||||
- "Vulnerability Score" literally measures likelihood of death
|
||||
- Elderly diabetics living alone are "high-value targets"
|
||||
- Algorithm designed to maximize harm
|
||||
|
||||
This is not marketing data. This is a mass murder
|
||||
targeting system.
|
||||
|
||||
Recommend immediate data protection investigation
|
||||
into how this information was collected.
|
||||
|
||||
- Agent 0x42, SAFETYNET Technical Analysis
|
||||
═══════════════════════════════════════════════════════════
|
||||
```
|
||||
|
||||
### Design Rationale
|
||||
|
||||
**Why This Fragment Works for Mission 1:**
|
||||
|
||||
1. **Scale of Evil:** 2.3 million people profiled for "vulnerability to death"
|
||||
2. **Targeting the Weak:** Elderly, diabetics, anxious people—clearly evil
|
||||
3. **Algorithm for Murder:** "Vulnerability Score" is literally death likelihood
|
||||
4. **Technical Sophistication:** Shows ENTROPY is organized, methodical
|
||||
5. **Data Collection Trail:** Sets up future missions about how data was obtained
|
||||
6. **Educational Value:** Teaches about psychological targeting, data privacy
|
||||
|
||||
**Discovery Experience:**
|
||||
- Found in server room (after VM work or lockpicking)
|
||||
- Complements casualty projections—shows the method behind the murder
|
||||
- Makes abstract "disinformation" into concrete "targeted murder database"
|
||||
- Player realizes these are REAL PEOPLE being targeted to die
|
||||
|
||||
---
|
||||
|
||||
## Fragment Discovery Flow
|
||||
|
||||
### Expected Player Journey
|
||||
|
||||
@@ -0,0 +1,383 @@
|
||||
# Mission 1: First Contact - Story Update
|
||||
## "Operation Shatter" - Making ENTROPY Clearly Evil
|
||||
|
||||
**Version:** 2.0
|
||||
**Created:** 2025-12-07
|
||||
**Purpose:** Update M01 story to make ENTROPY's threat concrete, visceral, and clearly evil
|
||||
|
||||
---
|
||||
|
||||
## Problem Statement
|
||||
|
||||
The original M01 story suffers from:
|
||||
1. **Abstract threat** - "Disinformation affecting an election" is vague
|
||||
2. **Over-sympathetic villain** - Derek's philosophy given too much weight without showing harm
|
||||
3. **No visceral stakes** - Player doesn't see what ENTROPY would actually DO to people
|
||||
4. **Missing "Cambridge Analytica moment"** - No revelation of the full scope of evil
|
||||
|
||||
**Solution:** Introduce **"Operation Shatter"** - A coordinated mass panic attack that would kill thousands
|
||||
|
||||
---
|
||||
|
||||
## Updated Story: Operation Shatter
|
||||
|
||||
### What Social Fabric Is Really Doing
|
||||
|
||||
**Cover Story (What SAFETYNET initially thinks):**
|
||||
- Disinformation campaign targeting local election
|
||||
- Discrediting reformist candidate Marcus Webb
|
||||
- Standard influence operation
|
||||
|
||||
**Reality (What player discovers):**
|
||||
- Social Fabric has spent 3 months collecting **psychological warfare data**
|
||||
- They've built profiles on **2.3 million people** in the region
|
||||
- They've identified **vulnerable populations**: elderly living alone, people with anxiety disorders, those with medical dependencies
|
||||
- They're preparing **"Operation Shatter"** - a coordinated false crisis attack
|
||||
|
||||
### Operation Shatter: The Evil Plan
|
||||
|
||||
**Phase 1: Seed Distrust (Complete)**
|
||||
- Already done over past 3 months
|
||||
- Eroded trust in institutions through subtle disinformation
|
||||
- Created tribal divisions through algorithmic amplification
|
||||
- Established fake "trusted sources" (sock puppet accounts, fake news sites)
|
||||
|
||||
**Phase 2: Prepare Triggers (In Progress)**
|
||||
- Collected medical records to identify insulin-dependent diabetics, dialysis patients
|
||||
- Mapped which elderly live alone without family support systems
|
||||
- Identified individuals with documented anxiety/panic disorders
|
||||
- Created personalized "crisis messages" for each demographic
|
||||
|
||||
**Phase 3: The Shatter (72 Hours Away)**
|
||||
|
||||
Simultaneous deployment of:
|
||||
|
||||
1. **Fake Hospital System Collapse Messages**
|
||||
- "URGENT: St. Mary's Hospital systems compromised. All patient records deleted. If you have an appointment, it has been cancelled indefinitely."
|
||||
- "WARNING: Regional blood supply contaminated. Do NOT accept transfusions."
|
||||
- Targeted at: Patients with upcoming surgeries, chronic conditions
|
||||
|
||||
2. **Fake Bank Failure Notices**
|
||||
- "ALERT: [Your bank] has been breached. Funds may be inaccessible for 72+ hours."
|
||||
- "Your account has been frozen due to suspected fraud."
|
||||
- Targeted at: Elderly, those with documented financial anxiety
|
||||
|
||||
3. **Fake Infrastructure Attack Warnings**
|
||||
- "EMERGENCY: Water treatment facility breach detected. DO NOT drink tap water."
|
||||
- "POWER GRID ATTACK IMMINENT. Prepare for extended blackout."
|
||||
- Targeted at: People in specific geographic areas to create traffic chaos
|
||||
|
||||
4. **Fake Violence Incitement**
|
||||
- Messages designed to look like "leaked" threats from opposing political groups
|
||||
- Intended to trigger preemptive violence from paranoid individuals
|
||||
- Some recipients are people with documented violent tendencies
|
||||
|
||||
### Casualty Projections (What Makes This CLEARLY EVIL)
|
||||
|
||||
**Social Fabric's Own Analysis Document (Player Finds This):**
|
||||
|
||||
```
|
||||
OPERATION SHATTER - PROJECTED IMPACT ASSESSMENT
|
||||
|
||||
Direct Casualties (First 24 Hours):
|
||||
- Cardiac events from panic: 15-30 fatalities
|
||||
- Diabetics missing insulin due to "hospital closure" fears: 8-12 fatalities
|
||||
- Dialysis patients avoiding "contaminated" facilities: 4-8 fatalities
|
||||
- Violence from incitement messages: 5-15 fatalities
|
||||
- Traffic accidents from evacuation panic: 10-20 fatalities
|
||||
|
||||
Estimated Direct Deaths: 42-85 people
|
||||
|
||||
Indirect Impact (First Week):
|
||||
- Bank runs → economic damage: $50-100 million
|
||||
- Hospital avoidance → delayed treatments: 100+ excess deaths
|
||||
- Civil unrest → property damage, injuries
|
||||
- Institutional trust collapse → long-term societal damage
|
||||
|
||||
STRATEGIC VALUE:
|
||||
These deaths are not the goal—they are the *demonstration*.
|
||||
When the truth emerges that fake messages caused real deaths,
|
||||
trust in ALL digital communications collapses permanently.
|
||||
|
||||
This is not terrorism. This is entropy accelerated.
|
||||
People will die so others learn the truth:
|
||||
Nothing is secure. Everything can be manipulated.
|
||||
|
||||
For the greater understanding.
|
||||
- The Architect
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
## Why This Works
|
||||
|
||||
### 1. Clearly Evil (But Logically Motivated)
|
||||
|
||||
ENTROPY's philosophy still makes sense from their twisted perspective:
|
||||
- They believe entropy is inevitable
|
||||
- They think society's trust in institutions is a "lie"
|
||||
- They see themselves as "educators" demonstrating vulnerability
|
||||
- **But the player sees they're willing to KILL PEOPLE to prove their point**
|
||||
|
||||
### 2. Concrete Stakes
|
||||
|
||||
Player isn't stopping "abstract disinformation" - they're preventing:
|
||||
- 42-85 direct deaths
|
||||
- $50-100 million in economic damage
|
||||
- Permanent trust collapse in the region
|
||||
- Real people with names and faces dying from panic
|
||||
|
||||
### 3. Evidence-Driven Discovery
|
||||
|
||||
Player pieces together the horror through gameplay:
|
||||
- **Early clues:** Unusual data collection, psychological profiles
|
||||
- **Mid-game:** Fake crisis messages in draft form
|
||||
- **Late-game:** The casualty projection document (the "evil monologue" in written form)
|
||||
- **Confrontation:** Derek admits it all, shows no remorse
|
||||
|
||||
### 4. The "Cambridge Analytica Moment"
|
||||
|
||||
When player finds the casualty projections, they realize:
|
||||
- This isn't about an election
|
||||
- This isn't about "narrative control"
|
||||
- This is a **calculated mass casualty event**
|
||||
- And Derek KNOWS people will die - he's PLANNED for it
|
||||
|
||||
---
|
||||
|
||||
## Updated Story Beats
|
||||
|
||||
### Opening Briefing (Agent 0x99)
|
||||
|
||||
**Original:** "Social Fabric is running disinformation campaigns affecting the election."
|
||||
|
||||
**Updated:**
|
||||
> "Three weeks ago, our AI flagged something bigger than election interference. Social Fabric has been collecting psychological profiles—detailed vulnerability assessments on over two million people in the region.
|
||||
>
|
||||
> We intercepted fragments of something called 'Operation Shatter.' We don't have full details, but what we have is terrifying. They're planning simultaneous crisis messages—fake hospital failures, fake bank collapses, fake infrastructure attacks.
|
||||
>
|
||||
> Not random chaos. Targeted. They've identified people with medical dependencies, elderly living alone, people with documented anxiety disorders. They know exactly who will panic. Who will make dangerous decisions. Who might die.
|
||||
>
|
||||
> Your mission: Infiltrate Viral Dynamics, find the full Operation Shatter documentation, and stop it before deployment. We think they're 72 hours away from launch."
|
||||
|
||||
### Evidence Discovery Progression
|
||||
|
||||
**Act 1: Suspicious Data Collection**
|
||||
- Player finds demographic databases with unusual fields
|
||||
- "Anxiety_Score", "Panic_Response_History", "Medical_Dependency_Level"
|
||||
- Seems creepy but scope unclear
|
||||
|
||||
**Act 2: Draft Messages Discovered**
|
||||
- Fake "hospital closure" messages found on Derek's computer
|
||||
- Fake "bank failure" notices in conference room
|
||||
- Player realizes these are designed to cause panic
|
||||
|
||||
**Act 3: Casualty Projections Found**
|
||||
- The "Impact Assessment" document with death estimates
|
||||
- This is the "OH SHIT" moment
|
||||
- Player realizes ENTROPY calculated how many people would DIE
|
||||
- And they're proceeding anyway
|
||||
|
||||
### Derek Confrontation (Evil Monologue)
|
||||
|
||||
Derek should NO LONGER be presented as sympathetic philosopher. He should be:
|
||||
- Calm
|
||||
- Certain
|
||||
- Willing to accept that people will die for his ideology
|
||||
- Not a mustache-twirling villain, but a **true believer** who has rationalized murder
|
||||
|
||||
**Updated Derek Dialogue:**
|
||||
|
||||
> **Derek:** You found the projections, didn't you? The casualty estimates.
|
||||
>
|
||||
> **Player Option 1:** "You're planning to kill dozens of people."
|
||||
>
|
||||
> **Derek:** I'm planning to educate millions. Those deaths are... unfortunate. But necessary. Every security professional says "people are the weakest link." We're going to prove it. Permanently.
|
||||
>
|
||||
> **Derek:** After Operation Shatter, no one will ever trust a digital message again. No one will believe a hospital is safe because a website says so. No one will assume their bank is secure because an app looks legitimate.
|
||||
>
|
||||
> **Derek:** We're not terrorists. We're teaching the most important lesson this generation will ever learn: **Trust nothing. Verify everything.** Some people will die learning that lesson. Most will survive, wiser.
|
||||
>
|
||||
> **Derek:** Is that evil? Or is it the hard truth that your "SAFETYNET" is too cowardly to teach?
|
||||
>
|
||||
> **Player Option 2:** "You're insane."
|
||||
>
|
||||
> **Derek:** I'm the sanest person in this building. Everyone else pretends the systems work. Pretends their data is secure. Pretends elections are fair. Pretends hospitals can't be hacked.
|
||||
>
|
||||
> **Derek:** I know the truth. And after Sunday, so will everyone else.
|
||||
|
||||
---
|
||||
|
||||
## Updated LORE Fragments
|
||||
|
||||
### Fragment 1: Operation Shatter Target Demographics
|
||||
|
||||
**Location:** Derek's office, locked filing cabinet
|
||||
|
||||
```
|
||||
═══════════════════════════════════════════════════════════
|
||||
OPERATION SHATTER - TARGET ANALYSIS
|
||||
[INTERNAL PLANNING DOCUMENT]
|
||||
═══════════════════════════════════════════════════════════
|
||||
|
||||
DEMOGRAPHIC SEGMENT: Medical Dependency
|
||||
|
||||
Population: 47,832 individuals
|
||||
Data Source: Insurance claims, pharmacy records, hospital databases
|
||||
|
||||
Targeting Criteria:
|
||||
- Insulin-dependent diabetics (14,203)
|
||||
- Weekly dialysis patients (2,847)
|
||||
- Chronic condition requiring regular hospital visits (30,782)
|
||||
|
||||
Vulnerability Assessment:
|
||||
These individuals cannot survive extended periods without
|
||||
medical care. Fake "hospital system collapse" messages will
|
||||
cause immediate panic, medication hoarding, and potentially
|
||||
fatal decisions (e.g., rationing insulin, skipping dialysis).
|
||||
|
||||
Projected Response:
|
||||
- 65% will attempt to contact hospitals (phone lines overwhelmed)
|
||||
- 20% will hoard medication (pharmacy runs)
|
||||
- 8% will make dangerous self-treatment decisions
|
||||
- Estimated fatalities from panic-induced medical errors: 12-20
|
||||
|
||||
MESSAGE TEMPLATE:
|
||||
"URGENT ALERT: [Hospital Name] patient database has been
|
||||
compromised. All appointments cancelled. Medication records
|
||||
may be corrupted. Please contact your provider using non-
|
||||
digital methods to verify your treatment plan."
|
||||
|
||||
Note: Message designed to be just credible enough to cause
|
||||
panic, while being deniable as "concerned warning" if traced.
|
||||
|
||||
═══════════════════════════════════════════════════════════
|
||||
```
|
||||
|
||||
### Fragment 2: Social Fabric Philosophy (Updated)
|
||||
|
||||
Add final paragraph to existing manifesto:
|
||||
|
||||
```
|
||||
ACCEPTABLE LOSSES:
|
||||
|
||||
Some will ask: "Isn't causing deaths terrorism?"
|
||||
|
||||
No. Terrorism seeks political concessions through fear.
|
||||
We seek education through demonstration.
|
||||
|
||||
When the first diabetic dies because they didn't verify
|
||||
their hospital appointment, that death becomes a lesson.
|
||||
When the first elderly person has a heart attack from
|
||||
a fake bank message, that death becomes a data point.
|
||||
|
||||
These are not victims. They are examples.
|
||||
Their deaths will save thousands who learn the lesson:
|
||||
Verify everything. Trust nothing.
|
||||
|
||||
The weak will die. The adaptable will survive.
|
||||
This is entropy's natural selection.
|
||||
|
||||
For the greater understanding.
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
## Updated Season Arc Connection
|
||||
|
||||
Operation Shatter becomes the first evidence that ENTROPY isn't just criminal—they're **apocalyptic accelerationists**.
|
||||
|
||||
**Campaign Hook:**
|
||||
When player stops Operation Shatter, they don't just save lives—they expose ENTROPY's willingness to commit mass murder for ideological purposes. This raises the stakes for every future mission:
|
||||
|
||||
> **Agent 0x99 (Debrief):** "We always thought ENTROPY was sophisticated cybercrime. Data theft. Corporate espionage. Election interference.
|
||||
>
|
||||
> This is different. They have casualty projections. They calculated how many people would die and decided that number was acceptable.
|
||||
>
|
||||
> We're not fighting criminals anymore. We're fighting true believers who think killing dozens of people is 'education.' And if Social Fabric was willing to do this... what are the other cells planning?"
|
||||
|
||||
---
|
||||
|
||||
## Implementation Checklist
|
||||
|
||||
### Files to Update:
|
||||
|
||||
1. **`m01_opening_briefing.ink`**
|
||||
- Add Operation Shatter context
|
||||
- Mention casualty projections SAFETYNET has intercepted
|
||||
- Raise stakes from "election interference" to "mass panic attack"
|
||||
|
||||
2. **`m01_derek_confrontation.ink`**
|
||||
- Add evil monologue about acceptable losses
|
||||
- Remove overly sympathetic philosophical dialogue
|
||||
- Make Derek calm but clearly willing to accept deaths
|
||||
|
||||
3. **`m01_closing_debrief.ink`**
|
||||
- Reference the casualty projections
|
||||
- Acknowledge the gravity of what was prevented
|
||||
- Set up "true believer" threat for future missions
|
||||
|
||||
4. **`06_lore_fragments.md`**
|
||||
- Add "Operation Shatter Target Demographics" fragment
|
||||
- Update Social Fabric Manifesto with "Acceptable Losses" section
|
||||
- Add "Casualty Projection" document as discoverable evidence
|
||||
|
||||
5. **`01_narrative_structure.md`**
|
||||
- Update story premise throughout
|
||||
- Replace "election interference" with "mass panic attack"
|
||||
- Add evidence discovery progression for Operation Shatter
|
||||
|
||||
6. **`scenario.json.erb`**
|
||||
- Add new evidence items (fake messages, casualty projections)
|
||||
- Update room descriptions for investigation flow
|
||||
|
||||
---
|
||||
|
||||
## Mid-Mission Moral Choice: Kevin's Frame-Up
|
||||
|
||||
### The Dilemma
|
||||
|
||||
While investigating Derek's computer, player discovers a "CONTINGENCY" folder:
|
||||
- Derek has prepared fake evidence to frame Kevin (the helpful IT manager) for the entire breach
|
||||
- Forged security logs, fabricated emails, a complete frame-up package
|
||||
- If Operation Shatter is discovered, Kevin becomes the scapegoat
|
||||
|
||||
**The choice:**
|
||||
|
||||
| Option | Action | Consequence |
|
||||
|--------|--------|-------------|
|
||||
| **Warn Kevin** | Tell him directly what's coming | He lawyers up, documents everything, is prepared when arrested. Career intact. But risk of him panicking and alerting Derek. |
|
||||
| **Plant Evidence** | Leave clearing evidence anonymously | Kevin never knows he was in danger. Investigators find proof of frame-up. Clean, professional. |
|
||||
| **Ignore** | Focus on mission, let it play out | Kevin is arrested, spends 6 hours in interrogation, kids watch him taken in handcuffs. Eventually cleared but traumatized. |
|
||||
|
||||
### Why This Works
|
||||
|
||||
1. **Personal Stakes:** Kevin HELPED the player. He trusted them. Derek would destroy him.
|
||||
2. **Real Consequences:** Ignoring it doesn't just "not help" - Kevin's kids watch him get arrested.
|
||||
3. **No Right Answer:**
|
||||
- Warning risks the mission
|
||||
- Planting evidence takes time
|
||||
- Ignoring protects mission efficiency but has human cost
|
||||
4. **Debrief Acknowledges:** Agent 0x99 doesn't judge, but makes consequences clear
|
||||
|
||||
### Thematic Purpose
|
||||
|
||||
This choice embodies the mission's central tension:
|
||||
- ENTROPY sees people as "acceptable collateral damage"
|
||||
- SAFETYNET agents must decide if they're different
|
||||
- Player defines their character through action, not dialogue
|
||||
|
||||
---
|
||||
|
||||
## Summary
|
||||
|
||||
**Before:** ENTROPY is doing vague "disinformation" that might affect an election.
|
||||
|
||||
**After:** ENTROPY is 72 hours away from launching a coordinated mass panic attack that they calculate will kill 42-85 people, including elderly diabetics, dialysis patients, and people with anxiety disorders. They've been profiling vulnerable populations for 3 months. They know who will die. And they think those deaths are "educational."
|
||||
|
||||
**Result:** Player knows EXACTLY what they're stopping and WHY it matters. Derek is still a "true believer" but now that belief is clearly monstrous. The evidence discovery creates an escalating sense of horror as the player realizes the full scope of Operation Shatter.
|
||||
|
||||
---
|
||||
|
||||
**Status:** Ready for Ink script updates
|
||||
|
||||
@@ -75,8 +75,12 @@ A rookie SAFETYNET agent (0x00) begins investigating seemingly unrelated ENTROPY
|
||||
|
||||
**Integration Approach:** Hybrid (VM flags via dead drop system + ERB narrative content in game)
|
||||
|
||||
#### Story Premise
|
||||
Agent 0x00's first field operation: investigate a media company (Viral Dynamics Media) suspected of running coordinated disinformation campaigns. Simple infiltration to gather evidence of ENTROPY involvement.
|
||||
#### Story Premise: Operation Shatter
|
||||
Agent 0x00's first field operation—but the stakes are higher than expected. SAFETYNET has intercepted fragments of **"Operation Shatter"**, a coordinated mass panic attack planned by Social Fabric. The operation targets 2.3 million people profiled for psychological vulnerability—elderly diabetics, people with anxiety disorders, isolated seniors.
|
||||
|
||||
**The Horror:** ENTROPY has calculated that 42-85 people will die in the first 24 hours from cardiac events, medication panic, and incited violence. They consider these deaths "acceptable" and "educational."
|
||||
|
||||
Player must infiltrate Viral Dynamics Media, find the complete Operation Shatter documentation, and stop the attack 72 hours before deployment.
|
||||
|
||||
#### Core Challenges (Break Escape)
|
||||
- **Lockpicking** (introduction) - tutorial safe, then office doors
|
||||
@@ -91,32 +95,32 @@ Agent 0x00's first field operation: investigate a media company (Viral Dynamics
|
||||
- Use sudo to access bystander's flags
|
||||
|
||||
**Narrative Context:**
|
||||
- Maya Chen provides "possible password list" from employee research
|
||||
- Kevin (IT Manager) provides "possible password list" from employee research
|
||||
- Brute forcing feels like "trying passwords employees might use"
|
||||
- Each flag unlocks ENTROPY resources via drop-site terminal (see `story_design/flags/ctf-flag-narrative-system.md`)
|
||||
- Each flag unlocks ENTROPY resources via drop-site terminal
|
||||
|
||||
#### In-Game Narrative Content (ERB Templates)
|
||||
**Encoded messages scattered in office:**
|
||||
1. **Whiteboard (Base64):** Client list revealing cross-cell collaboration
|
||||
2. **Sticky note (plaintext with hint):** Password hints for SSH
|
||||
3. **Computer file (tutorial encoding):** First CyberChef introduction
|
||||
4. **Hidden document:** "Architect's timeline" first mention
|
||||
#### Key Evidence Discovery (Operation Shatter)
|
||||
**Critical Story Documents:**
|
||||
1. **Casualty Projections Document** - Derek's calculated death estimates (42-85 people)
|
||||
2. **Target Demographics Database** - 2.3 million people profiled for "vulnerability to death"
|
||||
3. **Fake Crisis Message Templates** - Hospital closure, bank failure, infrastructure attack messages
|
||||
4. **The Architect's Approval** - Signed authorization for "acceptable losses"
|
||||
|
||||
**Encoding Education:**
|
||||
- Agent 0x99 explains encoding when first encountered
|
||||
- CyberChef workstation tutorial (in-game, not VM)
|
||||
- "Encoding ≠ Encryption" lesson (no key required)
|
||||
**Evidence Discovery Arc:**
|
||||
- **Act 1:** Suspicious data collection patterns noticed
|
||||
- **Act 2:** Draft crisis messages discovered, scope begins to emerge
|
||||
- **Act 3:** Full casualty projections found—player realizes ENTROPY calculated how many would DIE
|
||||
|
||||
#### Educational Objectives (CyBOK)
|
||||
- **Human Factors:** Social engineering basics, trust exploitation, password weakness
|
||||
- **Human Factors:** Social engineering basics, trust exploitation, psychological targeting
|
||||
- **Applied Cryptography:** Basic encoding introduction (Base64), distinction from encryption
|
||||
- **Security Operations:** Evidence gathering, password attacks (brute force with Hydra)
|
||||
- **Systems Security:** Linux basics, SSH authentication, sudo privileges
|
||||
|
||||
#### Narrative Arc
|
||||
- **Act 1:** Briefing establishes Social Fabric threat + dead drop interception mission; infiltrate as "temp IT support"; learn lockpicking (tutorial safe); meet Maya Chen
|
||||
- **Act 2:** Social engineer employees; find Base64 messages (Agent 0x99 teaches CyberChef); discover password hints; access drop-site terminal in server room; brute force SSH using Hydra; submit flags to intercept ENTROPY resources
|
||||
- **Act 3:** Confront Derek Lawson (escapes); complete evidence collection; debrief reveals larger network + "Architect" first mention
|
||||
- **Act 1:** Urgent briefing establishes Operation Shatter threat; infiltrate as IT contractor; learn lockpicking; meet Maya Chen
|
||||
- **Act 2:** Social engineer employees; discover targeting database; find draft crisis messages; access server room; realize the full horror through casualty projections
|
||||
- **Act 3:** Confront Derek Lawson; hear his "acceptable losses" philosophy; arrest/expose him; debrief acknowledges lives saved
|
||||
|
||||
#### Game Mechanics Introduced
|
||||
1. Lockpicking
|
||||
@@ -125,27 +129,49 @@ Agent 0x00's first field operation: investigate a media company (Viral Dynamics
|
||||
4. Evidence collection
|
||||
|
||||
#### Key NPCs
|
||||
- **Agent 0x99 "Haxolottle"** (Handler) - Introduces player to field ops
|
||||
- **Maya Chen** (Journalist) - Innocent employee who suspects something wrong
|
||||
- **Derek Lawson** (Social Fabric operative) - Escapes, may return in later mission
|
||||
- **Agent 0x99 "Haxolottle"** (Handler) - Briefs on Operation Shatter urgency
|
||||
- **Maya Chen** (Journalist) - Innocent whistleblower who suspected something wrong
|
||||
- **Kevin Park** (IT Manager) - Innocent employee, provides server access
|
||||
- **Derek Lawson** (Social Fabric operative) - True believer who authored casualty projections
|
||||
|
||||
#### Derek as True Believer (Evil Monologue)
|
||||
Derek is NOT a sympathetic philosopher. He is calm, certain, and willing to accept that people will die for his ideology:
|
||||
- "Those sixty people? Their deaths will save millions."
|
||||
- "We're not terrorists. We're educators."
|
||||
- "The weak will die. The adaptable will survive. This is entropy's natural selection."
|
||||
- "I calculated every one of those deaths. And I'd do it again."
|
||||
|
||||
#### LORE Opportunities
|
||||
- First mention of "ENTROPY" organization (overheard in encrypted comms)
|
||||
- Mysterious reference to "coordinated operations" (unexplained)
|
||||
- Social Fabric's philosophy: "truth is obsolete"
|
||||
- **Operation Shatter Casualty Projections** (CRITICAL) - The death calculation document
|
||||
- **Target Demographics Database** - 2.3 million profiled victims
|
||||
- **The Architect's Letter** - Philosophy + approval for mass murder
|
||||
- **Social Fabric Manifesto** - Updated with "Acceptable Losses" section
|
||||
- **Network Backdoor Analysis** - Technical sophistication
|
||||
|
||||
#### Moral Complexity
|
||||
**Choice:** Expose entire media company (hurting innocent employees) vs. surgical strike (some operations continue)
|
||||
**Choice:** Arrest Derek (legal prosecution), Attempt recruitment (he refuses—true believers don't turn), or Public exposure (warn the world but blow operational security)
|
||||
|
||||
**Note:** Unlike original design, Derek NEVER cooperates. True believers don't compromise.
|
||||
|
||||
#### Success Outcomes
|
||||
- **Full Success:** Evidence secured, operation disrupted, innocent employees protected
|
||||
- **Partial Success:** Evidence secured but operative escapes or innocent employees harmed
|
||||
- **Minimal Success:** Operation disrupted but insufficient evidence for prosecution
|
||||
- **Full Success:** Operation Shatter stopped, all evidence secured, 42-85 lives saved
|
||||
- **Partial Success:** Operation stopped but incomplete evidence
|
||||
- **Minimal Success:** Operation stopped but Derek evades capture
|
||||
|
||||
#### Connection to Campaign Arc
|
||||
- First breadcrumb: encrypted file mentions "Architect's timeline"
|
||||
- Sets up Social Fabric as known threat
|
||||
- Establishes player's reputation with SAFETYNET
|
||||
- **MAJOR REVELATION:** ENTROPY is willing to commit mass murder for ideology
|
||||
- First evidence that ENTROPY cells are "true believers," not just criminals
|
||||
- The Architect approved killing people—raises stakes for all future missions
|
||||
- Sets up question: What are the OTHER cells planning?
|
||||
|
||||
#### Thematic Significance
|
||||
Mission 1 establishes that ENTROPY is **clearly evil**:
|
||||
- They calculated how many people would die
|
||||
- They targeted the most vulnerable (elderly, diabetics, anxious)
|
||||
- They call murder "education" and deaths "acceptable"
|
||||
- They got approval from leadership (The Architect)
|
||||
|
||||
Player leaves Mission 1 understanding: **These people must be stopped.**
|
||||
|
||||
---
|
||||
|
||||
|
||||
402
scenarios/m01_first_contact/SOLUTION_GUIDE.md
Normal file
402
scenarios/m01_first_contact/SOLUTION_GUIDE.md
Normal file
@@ -0,0 +1,402 @@
|
||||
# Mission 1: First Contact - Complete Solution Guide
|
||||
|
||||
## Mission Map Diagram
|
||||
|
||||
```
|
||||
┌─────────────────────────────────────────────────────────────────────────────┐
|
||||
│ MISSION 1: FIRST CONTACT │
|
||||
│ VIRAL DYNAMICS MEDIA │
|
||||
└─────────────────────────────────────────────────────────────────────────────┘
|
||||
|
||||
NORTH
|
||||
┌───────────────┬───────────────┬───────────────┬───────────────┐
|
||||
│ │ │ │ │
|
||||
│ SERVER ROOM │ MANAGER'S │ DEREK'S │ MAYA'S │
|
||||
│ │ OFFICE │ OFFICE │ OFFICE │
|
||||
│ [RFID lock] │ (unlocked) │ [KEY lock] │ (unlocked) │
|
||||
│ │ │ │ │
|
||||
│ • VM Term │ • Safe 0419 │ • Computer │ • Maya NPC │
|
||||
│ • Flags │ → Key #2 │ • Cabinet │ • Intel │
|
||||
│ • Evidence │ • Briefcase │ PIN 0419 │ │
|
||||
│ │ [PICK] │ • Evidence │ │
|
||||
│ │ → LORE │ │ │
|
||||
└───────┬───────┴───────────────┴───────┬───────┴───────────────┘
|
||||
│ │
|
||||
│ │
|
||||
════════╧═══════════════════════════════╧════════════════════════
|
||||
│ │
|
||||
│ MAIN OFFICE AREA │
|
||||
│ [KEY LOCK - Key #1] │
|
||||
│ │
|
||||
│ • CyberChef Workstation • Filing Cabinet (PIN 2024) │
|
||||
│ • Maintenance Checklist (IT PIN: 2468) │
|
||||
│ • Sticky Note (Cabinet PIN: 2024) │
|
||||
│ │
|
||||
════════╤═══════════════════════════════╤════════════════════════
|
||||
│ │
|
||||
┌───────┴───────┬───────────────┬───────┴───────┬───────────────┐
|
||||
│ │ │ │ │
|
||||
│ IT ROOM │ CONFERENCE │ BREAK ROOM │ STORAGE │
|
||||
│ │ ROOM │ │ CLOSET │
|
||||
│ [PIN 2468] │ (unlocked) │ (unlocked) │ (unlocked) │
|
||||
│ │ │ │ │
|
||||
│ • Kevin NPC │ • ZDS Notes │ • Coffee │ • Practice │
|
||||
│ • Lockpicks │ • Campaign │ Receipt │ Safe 1337 │
|
||||
│ • Keycard │ Timeline │ • Anniv. │ • Maint Log │
|
||||
│ • Passwd │ │ Card 0419 │ │
|
||||
└───────────────┴───────────────┴───────────────┴───────────────┘
|
||||
│
|
||||
┌───────┴───────────────────────────────────────────────────────┐
|
||||
│ │
|
||||
│ RECEPTION │
|
||||
│ │
|
||||
│ • Sarah NPC → Badge + Key #1 (Main Office) │
|
||||
│ • Building Directory │
|
||||
│ • Visitor Sign-In Log (Derek's late hours) │
|
||||
│ │
|
||||
└───────────────────────────────────────────────────────────────┘
|
||||
│
|
||||
ENTRANCE
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
## Step-by-Step Solution
|
||||
|
||||
### Phase 1: Entry and Initial Access
|
||||
|
||||
| Step | Action | Result |
|
||||
|------|--------|--------|
|
||||
| 1 | Mission briefing auto-plays | Learn about Operation Shatter, Derek Lawson |
|
||||
| 2 | Talk to Sarah Martinez | Receive **Visitor Badge** + **Main Office Key** |
|
||||
| 3 | Use Main Office Key on north door | Unlock Main Office Area |
|
||||
| 4 | Find **Maintenance Checklist** | Learn IT Room PIN: **2468** |
|
||||
|
||||
### Phase 2: Exploration (Multiple Paths)
|
||||
|
||||
| Step | Action | Result |
|
||||
|------|--------|--------|
|
||||
| 5a | Enter Storage Closet | Find Practice Safe (PIN 1337), backup IT code |
|
||||
| 5b | Enter Break Room | Find Coffee Receipt, Anniversary Card → **0419** |
|
||||
| 5c | Enter Conference Room | Find ZDS Notes, Campaign Timeline |
|
||||
| 5d | Enter Maya's Office | Talk to Maya → Informant reveals all |
|
||||
|
||||
### Phase 3: IT Room Access
|
||||
|
||||
| Step | Action | Result |
|
||||
|------|--------|--------|
|
||||
| 6 | Enter IT Room (PIN **2468**) | Access Kevin's workspace |
|
||||
| 7 | Talk to Kevin | Get **Lockpicks** + **Server Keycard** + Password Hints |
|
||||
|
||||
### Phase 4: Derek's Office Access (TWO PATHS)
|
||||
|
||||
**Path A: Find the Key**
|
||||
| Step | Action | Result |
|
||||
|------|--------|--------|
|
||||
| 8a | Enter Manager's Office | Find Patricia's Safe |
|
||||
| 9a | Open Safe (PIN **0419**) | Get **Derek's Office Key** |
|
||||
| 10a | Use key on Derek's Office | Enter Derek's Office |
|
||||
|
||||
**Path B: Lockpick the Door**
|
||||
| Step | Action | Result |
|
||||
|------|--------|--------|
|
||||
| 8b | Get lockpicks from Kevin | Have lockpick kit |
|
||||
| 9b | Pick Derek's Office door | Enter Derek's Office (medium difficulty) |
|
||||
|
||||
### Phase 5: Evidence Collection
|
||||
|
||||
| Step | Action | Result |
|
||||
|------|--------|--------|
|
||||
| 11 | Access Derek's Computer | Find **CONTINGENCY file** → Moral Choice triggers |
|
||||
| 12 | Decode Whiteboard (Base64) | Learn Derek's cabinet PIN: **0419** |
|
||||
| 13 | Open Derek's Filing Cabinet | Get Casualty Projections, Manifesto, Campaign Materials |
|
||||
|
||||
### Phase 6: Lockpick-Only Content (Optional)
|
||||
|
||||
| Step | Action | Result |
|
||||
|------|--------|--------|
|
||||
| 14 | Go to Manager's Office | Find Patricia's Briefcase |
|
||||
| 15 | Pick briefcase lock | Get **ENTROPY Infiltration Timeline** (LORE) |
|
||||
|
||||
### Phase 7: Server Room & VM Challenges (REQUIRED)
|
||||
|
||||
| Step | Action | Result |
|
||||
|------|--------|--------|
|
||||
| 16 | Use Kevin's Keycard on Server Room | Enter Server Room |
|
||||
| 17 | Access VM Terminal | Connect to Social Fabric infrastructure |
|
||||
| 18 | Complete SSH Brute Force | Obtain `flag{ssh_brute_force_success}` |
|
||||
| 19 | Complete Linux Navigation | Obtain `flag{linux_navigation_complete}` |
|
||||
| 20 | Complete Privilege Escalation | Obtain `flag{privilege_escalation_success}` |
|
||||
| 21 | Submit ALL 3 flags | Unlock Derek confrontation |
|
||||
|
||||
### Phase 8: Confrontation
|
||||
|
||||
| Step | Action | Result |
|
||||
|------|--------|--------|
|
||||
| 22 | Return to Derek's Office | Derek appears |
|
||||
| 23 | Confront Derek (requires all flags) | Evil monologue, choose resolution |
|
||||
| 24 | Choose: Arrest / Recruit / Expose | Mission complete, debrief triggers |
|
||||
|
||||
---
|
||||
|
||||
## Puzzle Solutions Reference
|
||||
|
||||
### PIN Codes
|
||||
|
||||
| Lock | PIN | Clue Location | Clue Text |
|
||||
|------|-----|---------------|-----------|
|
||||
| IT Room | **2468** | Maintenance Checklist (Main Office) | "IT ROOM PIN: 2468" |
|
||||
| Practice Safe | **1337** | Maintenance Checklist | "Practice safe code: 1337" |
|
||||
| Main Filing Cabinet | **2024** | Sticky Note (Main Office) | "Election year = access code" |
|
||||
| Patricia's Safe | **0419** | Anniversary Card (Break Room) | "April 19th" |
|
||||
| Derek's Cabinet | **0419** | Whiteboard (Base64 decoded) | "FILING_CABINET_PIN: 0419" |
|
||||
|
||||
### Keys and Keycards
|
||||
|
||||
| Item | Location | Unlocks |
|
||||
|------|----------|---------|
|
||||
| Main Office Key | Sarah Martinez (Reception) | Main Office Area door |
|
||||
| Derek's Office Key | Patricia's Safe (Manager's Office) | Derek's Office door |
|
||||
| Server Room Keycard | Kevin (IT Room) | Server Room RFID lock |
|
||||
| Lockpicks | Kevin (IT Room) | Derek's door (alt), Patricia's briefcase |
|
||||
|
||||
### Encoded Message (Derek's Whiteboard)
|
||||
|
||||
**Base64 Encoded:**
|
||||
```
|
||||
Q2xpZW50IGxpc3QgdXBkYXRlOiBDb29yZGluYXRpbmcgd2l0aCBaRFMgZm9yIHRlY2huaWNhbCBp
|
||||
bmZyYXN0cnVjdHVyZSBkZXBsb3ltZW50LiBQaGFzZSAzIHRpbWVsaW5lOiAyIHdlZWtzLiBGSUxJ
|
||||
TkdfQ0FCSU5FVF9QSU46IDA0MTkgKERlcmVrJ3MgYmRheSAtIGRvbid0IGZvcmdldCBhZ2FpbiEp
|
||||
```
|
||||
|
||||
**Decoded:**
|
||||
```
|
||||
Client list update: Coordinating with ZDS for technical infrastructure deployment.
|
||||
Phase 3 timeline: 2 weeks. FILING_CABINET_PIN: 0419 (Derek's bday - don't forget again!)
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
## Puzzle Chain Diagram
|
||||
|
||||
```
|
||||
┌─────────────────────────────────────────────────────────────────────────────┐
|
||||
│ COMPLETE PUZZLE CHAIN │
|
||||
└─────────────────────────────────────────────────────────────────────────────┘
|
||||
|
||||
PHASE 1: ENTRY
|
||||
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
|
||||
Reception ─► Sarah gives KEY #1 ─► Main Office Area [KEY #1]
|
||||
|
||||
|
||||
PHASE 2: EXPLORATION (any order)
|
||||
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
|
||||
Main Office ─┬─► Storage Closet ──► Practice Safe [1337] (optional)
|
||||
│
|
||||
├─► Break Room ─────► Anniversary Card (reveals 0419)
|
||||
│
|
||||
├─► Conference Room ─► ZDS Notes, Campaign Timeline
|
||||
│
|
||||
├─► Maya's Office ──► Talk to informant (reveals everything)
|
||||
│
|
||||
└─► Find Maintenance Checklist ─► IT Room PIN: 2468
|
||||
|
||||
|
||||
PHASE 3: IT ACCESS
|
||||
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
|
||||
IT Room [PIN 2468] ─► Kevin gives:
|
||||
├─► Lockpicks
|
||||
├─► Server Room Keycard (RFID)
|
||||
└─► Password Hints
|
||||
|
||||
|
||||
PHASE 4: DEREK'S OFFICE (Two parallel paths)
|
||||
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
|
||||
PATH A (Key): PATH B (Lockpick):
|
||||
───────────── ──────────────────
|
||||
Manager's Office IT Room
|
||||
│ │
|
||||
▼ ▼
|
||||
Patricia's Safe [0419] Get Lockpicks
|
||||
│ │
|
||||
▼ ▼
|
||||
KEY #2 (Derek's Key) [PICK Derek's door]
|
||||
│ │
|
||||
└──────────────┬──────────────────────┘
|
||||
▼
|
||||
Derek's Office [UNLOCKED]
|
||||
|
||||
|
||||
PHASE 5: EVIDENCE COLLECTION
|
||||
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
|
||||
Derek's Office ─┬─► Computer ─► CONTINGENCY file ─► MORAL CHOICE
|
||||
│
|
||||
├─► Whiteboard [Base64] ─► Cabinet PIN: 0419
|
||||
│
|
||||
└─► Filing Cabinet [0419] ─► Critical Evidence
|
||||
|
||||
|
||||
PHASE 6: LOCKPICK-ONLY BONUS
|
||||
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
|
||||
Manager's Office ─► Patricia's Briefcase [LOCKPICK ONLY]
|
||||
│
|
||||
▼
|
||||
ENTROPY Infiltration Timeline (LORE)
|
||||
|
||||
|
||||
PHASE 7: VM CHALLENGES (REQUIRED)
|
||||
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
|
||||
Server Room [RFID - Kevin's Keycard]
|
||||
│
|
||||
├─► VM Terminal ─┬─► SSH Brute Force
|
||||
│ ├─► Linux Navigation
|
||||
│ └─► Privilege Escalation
|
||||
│
|
||||
└─► Drop-Site ─► Submit ALL 3 flags (REQUIRED)
|
||||
|
||||
|
||||
PHASE 8: CONFRONTATION
|
||||
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
|
||||
Derek's Office ─► Derek returns ─► Confrontation (requires all flags)
|
||||
│
|
||||
├─► Arrest
|
||||
├─► Attempt Recruit (fails)
|
||||
└─► Public Expose
|
||||
│
|
||||
▼
|
||||
MISSION COMPLETE
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
## Alternative Paths & Shortcuts
|
||||
|
||||
### Path Options for Derek's Office
|
||||
|
||||
| Method | Requirements | Difficulty |
|
||||
|--------|--------------|------------|
|
||||
| Use Key | Find PIN 0419 (Break Room), open Patricia's safe | Easy (find clue, enter PIN) |
|
||||
| Lockpick | Get lockpicks from Kevin | Medium (lockpick minigame) |
|
||||
|
||||
### Locked-Out Shortcuts (By Design)
|
||||
|
||||
| Attempted Shortcut | Why It's Blocked |
|
||||
|--------------------|------------------|
|
||||
| Lockpick Main Office | No lockpicks until after entering Main Office |
|
||||
| Skip to confrontation | Derek requires ALL 3 VM flags submitted |
|
||||
| Skip IT Room | Need PIN 2468 (found in Main Office) |
|
||||
| Skip Server Room | Need Kevin's RFID keycard |
|
||||
|
||||
### Optional Content
|
||||
|
||||
| Content | How to Access | Reward |
|
||||
|---------|---------------|--------|
|
||||
| Patricia's Briefcase | Lockpick (no key exists) | LORE: ENTROPY Infiltration Timeline |
|
||||
| Practice Safe | PIN 1337 | Minor LORE, practice PIN mechanic |
|
||||
| Main Filing Cabinet | PIN 2024 | The Architect's Letter (LORE) |
|
||||
|
||||
---
|
||||
|
||||
## Objectives Tracking
|
||||
|
||||
### Aim 1: Establish Access
|
||||
- [x] Check in at reception (Sarah)
|
||||
- [x] Access main office area (Key #1)
|
||||
- [x] Find IT room access code (Maintenance Checklist)
|
||||
- [x] Access IT room (PIN 2468)
|
||||
- [x] Meet Kevin Park
|
||||
|
||||
### Aim 2: Investigate Derek
|
||||
- [ ] Find access to Derek's office (Key #2 OR lockpick)
|
||||
- [ ] Enter Derek's office
|
||||
- [ ] Search Derek's computer (CONTINGENCY file)
|
||||
- [ ] Decode whiteboard message (CyberChef)
|
||||
- [ ] Open Derek's filing cabinet (PIN 0419)
|
||||
|
||||
### Aim 3: Gather Evidence
|
||||
- [ ] Find Operation Shatter casualty projections
|
||||
- [ ] Discover ENTROPY manifesto
|
||||
- [ ] Find campaign materials
|
||||
- [ ] Talk to the informant (Maya)
|
||||
|
||||
### Aim 4: Intercept Communications (REQUIRED)
|
||||
- [ ] Access server room (RFID keycard)
|
||||
- [ ] Access compromised systems (VM)
|
||||
- [ ] Submit SSH access evidence ⚠️ REQUIRED
|
||||
- [ ] Submit Linux navigation evidence ⚠️ REQUIRED
|
||||
- [ ] Submit privilege escalation evidence ⚠️ REQUIRED
|
||||
|
||||
### Aim 5: Confront the Operative
|
||||
- [ ] Confront Derek Lawson (requires all flags)
|
||||
- [ ] Choose resolution (arrest/recruit/expose)
|
||||
|
||||
---
|
||||
|
||||
## Moral Choices
|
||||
|
||||
### 1. Kevin's Frame-Up (Mid-Mission)
|
||||
**Trigger:** Pick up CONTINGENCY file from Derek's Computer
|
||||
|
||||
| Choice | Effect | Consequence |
|
||||
|--------|--------|-------------|
|
||||
| Warn Kevin | kevin_protected = true | Kevin lawyers up, protected |
|
||||
| Plant evidence | kevin_protected = true | Kevin protected anonymously |
|
||||
| Ignore | kevin_protected = false | Kevin arrested, family traumatized |
|
||||
|
||||
### 2. Derek Confrontation (End)
|
||||
**Trigger:** Talk to Derek after all VM flags submitted
|
||||
|
||||
| Choice | Effect | Outcome |
|
||||
|--------|--------|---------|
|
||||
| Arrest | final_choice = arrest | Surgical strike, Derek in custody |
|
||||
| Recruit | final_choice = recruit | Derek refuses, arrested anyway |
|
||||
| Expose | final_choice = expose | Documents released to press |
|
||||
|
||||
---
|
||||
|
||||
## LORE Fragments
|
||||
|
||||
| Fragment | Location | How to Access |
|
||||
|----------|----------|---------------|
|
||||
| The Architect's Letter | Main Filing Cabinet | PIN 2024 |
|
||||
| Social Fabric Manifesto | Derek's Filing Cabinet | PIN 0419 |
|
||||
| Network Backdoor Analysis | Server Room | Enter room |
|
||||
| Patricia's Investigation Notes | Patricia's Safe | PIN 0419 |
|
||||
| ENTROPY Infiltration Timeline | Patricia's Briefcase | **LOCKPICK ONLY** |
|
||||
| Old Orientation Guide | Practice Safe | PIN 1337 |
|
||||
|
||||
---
|
||||
|
||||
## Completion Requirements
|
||||
|
||||
| Requirement | Mandatory? | Notes |
|
||||
|-------------|------------|-------|
|
||||
| Get Main Office Key from Sarah | ✅ Yes | Only way to access main office |
|
||||
| Access IT Room (PIN 2468) | ✅ Yes | Need lockpicks and keycard |
|
||||
| Get Derek's Office access | ✅ Yes | Key OR lockpick |
|
||||
| Access Server Room | ✅ Yes | Need Kevin's RFID keycard |
|
||||
| Submit SSH flag | ✅ Yes | Required for confrontation |
|
||||
| Submit Linux flag | ✅ Yes | Required for confrontation |
|
||||
| Submit Sudo flag | ✅ Yes | Required for confrontation |
|
||||
| Confront Derek | ✅ Yes | Triggers mission end |
|
||||
| Find evidence documents | ❌ Optional | Affects debrief quality |
|
||||
| Complete Kevin moral choice | ❌ Optional | Affects Kevin's fate |
|
||||
| Talk to Maya | ❌ Optional | Provides intel |
|
||||
| Pick Patricia's briefcase | ❌ Optional | Extra LORE |
|
||||
|
||||
---
|
||||
|
||||
## Room Summary
|
||||
|
||||
| Room | Lock Type | Access | Key NPCs/Items |
|
||||
|------|-----------|--------|----------------|
|
||||
| Reception | None | Start | Sarah (badge, key) |
|
||||
| Main Office | KEY | Key from Sarah | CyberChef, clues |
|
||||
| Storage Closet | None | Via Main Office | Practice safe, backup codes |
|
||||
| Break Room | None | Via Main Office | Anniversary clue (0419) |
|
||||
| Conference Room | None | Via Main Office | ZDS notes, timeline |
|
||||
| IT Room | PIN 2468 | Via Main Office | Kevin (lockpicks, keycard) |
|
||||
| Manager's Office | None | Via Main Office | Safe (key), briefcase (LORE) |
|
||||
| Maya's Office | None | Via Main Office | Maya (informant) |
|
||||
| Derek's Office | KEY/PICK | Key from safe OR pick | Derek, computer, evidence |
|
||||
| Server Room | RFID | Keycard from Kevin | VM terminal, flags |
|
||||
@@ -1,16 +1,24 @@
|
||||
// ================================================
|
||||
// Mission 1: First Contact - Closing Debrief
|
||||
// Act 3: Mission Complete
|
||||
// Reflects on choices, performance, and consequences
|
||||
// UPDATED: Feedback based on ACTUAL player choices,
|
||||
// not pre-selected "approach"
|
||||
// ================================================
|
||||
|
||||
// Variables from previous scripts
|
||||
// Variables from gameplay - these should be set by the game
|
||||
VAR player_name = "Agent 0x00"
|
||||
VAR player_approach = "" // From opening briefing
|
||||
VAR final_choice = "" // From Derek confrontation (arrest/recruit/expose)
|
||||
VAR derek_cooperative = false // From confrontation
|
||||
VAR objectives_completed = 0 // Performance metric
|
||||
VAR lore_collected = 0 // Number of LORE fragments found
|
||||
VAR objectives_completed = 0 // Percentage of objectives done
|
||||
VAR lore_collected = 0 // Number of LORE fragments found
|
||||
VAR found_casualty_projections = false // Found the critical evidence
|
||||
VAR found_target_database = false // Found the targeting demographics
|
||||
VAR talked_to_maya = false // Interacted with Maya Chen
|
||||
VAR talked_to_kevin = false // Got help from Kevin
|
||||
VAR maya_identity_protected = true // Did player protect Maya's identity
|
||||
|
||||
// Moral choice: Kevin's frame-up
|
||||
VAR kevin_choice = "" // warn, evidence, ignore
|
||||
VAR kevin_protected = false // Did player help Kevin?
|
||||
|
||||
// ================================================
|
||||
// START: DEBRIEF BEGINS
|
||||
@@ -21,7 +29,7 @@ VAR lore_collected = 0 // Number of LORE fragments found
|
||||
|
||||
Agent 0x99: {player_name}, return to HQ for debrief.
|
||||
|
||||
Agent 0x99: Mission complete. Let's discuss what happened.
|
||||
Agent 0x99: Operation Shatter is neutralized. Let's review what happened.
|
||||
|
||||
+ [On my way]
|
||||
-> debrief_location
|
||||
@@ -32,132 +40,307 @@ Agent 0x99: Mission complete. Let's discuss what happened.
|
||||
|
||||
=== debrief_location ===
|
||||
[SAFETYNET HQ - Agent 0x99's Office]
|
||||
[The axolotl tank bubbles quietly in the background]
|
||||
|
||||
#speaker:agent_0x99
|
||||
|
||||
Agent 0x99: So. Your first field operation.
|
||||
Agent 0x99: {player_name}. First, I need you to understand what you accomplished today.
|
||||
|
||||
Agent 0x99: Social Fabric cell disrupted, Derek Lawson neutralized, election manipulation prevented.
|
||||
Agent 0x99: Those casualty projections—42 to 85 people. Diabetics. Elderly. People with anxiety disorders.
|
||||
|
||||
+ [Mission accomplished]
|
||||
-> performance_review
|
||||
+ [But at what cost?]
|
||||
-> moral_reflection
|
||||
Agent 0x99: They're going to live. Because of you.
|
||||
|
||||
+ [That's what matters]
|
||||
-> evidence_review
|
||||
+ [It was close. Too close.]
|
||||
-> close_call
|
||||
|
||||
// ================================================
|
||||
// PERFORMANCE REVIEW
|
||||
// CLOSE CALL ACKNOWLEDGMENT
|
||||
// ================================================
|
||||
|
||||
=== performance_review ===
|
||||
Agent 0x99: Let's review your performance.
|
||||
=== close_call ===
|
||||
Agent 0x99: 72 hours. That's how close we cut it.
|
||||
|
||||
Agent 0x99: Objectives completed: {objectives_completed}%. LORE fragments collected: {lore_collected}.
|
||||
Agent 0x99: If our AI hadn't flagged those data collection patterns, if you hadn't found the documentation...
|
||||
|
||||
{objectives_completed >= 80:
|
||||
Agent 0x99: Strong work. You achieved the mission goals efficiently.
|
||||
-> choice_consequences
|
||||
Agent 0x99: But you did. And those people will never know how close they came.
|
||||
|
||||
-> evidence_review
|
||||
|
||||
// ================================================
|
||||
// EVIDENCE REVIEW - Based on what player actually found
|
||||
// ================================================
|
||||
|
||||
=== evidence_review ===
|
||||
Agent 0x99: Let's review what you recovered.
|
||||
|
||||
{found_casualty_projections && found_target_database:
|
||||
-> evidence_complete
|
||||
}
|
||||
{objectives_completed >= 60:
|
||||
Agent 0x99: Solid. You got the job done, even if not perfectly.
|
||||
-> choice_consequences
|
||||
{found_casualty_projections && not found_target_database:
|
||||
-> evidence_partial_projections
|
||||
}
|
||||
{objectives_completed < 60:
|
||||
Agent 0x99: Mission complete, but there were gaps. Review your approach for next time.
|
||||
-> choice_consequences
|
||||
{not found_casualty_projections && found_target_database:
|
||||
-> evidence_partial_database
|
||||
}
|
||||
{not found_casualty_projections && not found_target_database:
|
||||
-> evidence_minimal
|
||||
}
|
||||
|
||||
// ================================================
|
||||
// MORAL REFLECTION
|
||||
// ================================================
|
||||
=== evidence_complete ===
|
||||
Agent 0x99: You found everything. The casualty projections. The target demographics database. The complete Operation Shatter documentation.
|
||||
|
||||
=== moral_reflection ===
|
||||
Agent 0x99: Every operation has costs. That's the weight we carry.
|
||||
Agent 0x99: This is exactly what prosecutors need. Derek's signature on the death calculations. The Architect's approval. The targeting methodology.
|
||||
|
||||
Agent 0x99: But you prevented election manipulation. Innocent people's votes will count.
|
||||
Agent 0x99: Thorough work. You didn't rush past the evidence.
|
||||
|
||||
+ [The ends justify the means?]
|
||||
Agent 0x99: Not always. But in this case? Yes. You made the right calls.
|
||||
-> choice_consequences
|
||||
+ [I'm still not sure]
|
||||
Agent 0x99: Good. That uncertainty keeps you human. Keeps you questioning.
|
||||
-> choice_consequences
|
||||
+ [I wanted to make sure we had enough to convict]
|
||||
Agent 0x99: You do. There's no walking away from this for Derek.
|
||||
-> npc_interactions
|
||||
+ [The more I found, the worse it got]
|
||||
Agent 0x99: Yeah. Reading those casualty projections... that stays with you.
|
||||
-> npc_interactions
|
||||
|
||||
=== evidence_partial_projections ===
|
||||
Agent 0x99: You found the casualty projections—the smoking gun. Derek's death calculations, The Architect's approval.
|
||||
|
||||
Agent 0x99: We're missing the full target demographics database, but that's recoverable from their servers now that we have access.
|
||||
|
||||
Agent 0x99: The critical evidence is secured. That's what matters for prosecution.
|
||||
|
||||
-> npc_interactions
|
||||
|
||||
=== evidence_partial_database ===
|
||||
Agent 0x99: You found the target demographics database—2.3 million people profiled for vulnerability.
|
||||
|
||||
Agent 0x99: We're still missing the casualty projections document, but the database alone proves intent. They were targeting vulnerable populations deliberately.
|
||||
|
||||
Agent 0x99: Our forensics team is recovering the rest from their systems.
|
||||
|
||||
-> npc_interactions
|
||||
|
||||
=== evidence_minimal ===
|
||||
Agent 0x99: The core Operation Shatter documentation is still being recovered by our forensics team.
|
||||
|
||||
Agent 0x99: The operation is stopped, but we're relying on digital forensics for the prosecution evidence.
|
||||
|
||||
Agent 0x99: Next time, prioritize document recovery. Physical evidence is harder to deny in court.
|
||||
|
||||
-> npc_interactions
|
||||
|
||||
// ================================================
|
||||
// CHOICE CONSEQUENCES (Derek's Fate)
|
||||
// NPC INTERACTIONS - Based on who player talked to
|
||||
// ================================================
|
||||
|
||||
=== choice_consequences ===
|
||||
=== npc_interactions ===
|
||||
{talked_to_kevin && talked_to_maya:
|
||||
-> worked_with_both
|
||||
}
|
||||
{talked_to_kevin && not talked_to_maya:
|
||||
-> worked_with_kevin
|
||||
}
|
||||
{not talked_to_kevin && talked_to_maya:
|
||||
-> worked_with_maya
|
||||
}
|
||||
{not talked_to_kevin && not talked_to_maya:
|
||||
-> worked_alone
|
||||
}
|
||||
|
||||
=== worked_with_both ===
|
||||
Agent 0x99: I noticed you worked with both Kevin and Maya.
|
||||
|
||||
Agent 0x99: Kevin gave you legitimate access—that's the IT contractor cover working as intended.
|
||||
|
||||
{maya_identity_protected:
|
||||
Agent 0x99: And Maya... you protected her identity. She's safe. She can continue her journalism without looking over her shoulder.
|
||||
Agent 0x99: That matters. She took a risk contacting us.
|
||||
- else:
|
||||
Agent 0x99: Maya's identity was compromised during the operation. We're relocating her for safety.
|
||||
Agent 0x99: She'll be okay, but her career at Viral Dynamics is over. Collateral damage.
|
||||
}
|
||||
|
||||
-> kevin_frame_discussion
|
||||
|
||||
=== worked_with_kevin ===
|
||||
Agent 0x99: Kevin's cooperation was valuable. The IT contractor cover worked perfectly.
|
||||
|
||||
Agent 0x99: You got legitimate access without raising suspicion. That's clean infiltration.
|
||||
|
||||
-> kevin_frame_discussion
|
||||
|
||||
=== worked_with_maya ===
|
||||
Agent 0x99: Maya was taking a risk talking to you. I hope you appreciated that.
|
||||
|
||||
{maya_identity_protected:
|
||||
Agent 0x99: Her identity stayed protected. She can continue investigating on her own terms now.
|
||||
- else:
|
||||
Agent 0x99: Unfortunately, her identity was compromised. We're handling her protection.
|
||||
}
|
||||
|
||||
-> kevin_frame_discussion
|
||||
|
||||
=== worked_alone ===
|
||||
Agent 0x99: You handled this mostly solo. Independent approach.
|
||||
|
||||
Agent 0x99: Sometimes that's the right call. Fewer people involved means fewer potential leaks.
|
||||
|
||||
-> kevin_frame_discussion
|
||||
|
||||
// ================================================
|
||||
// KEVIN FRAME-UP - Moral choice consequences
|
||||
// ================================================
|
||||
|
||||
=== kevin_frame_discussion ===
|
||||
{kevin_choice == "":
|
||||
// Player didn't encounter the frame-up files
|
||||
-> derek_discussion
|
||||
}
|
||||
{kevin_choice == "warn":
|
||||
-> kevin_warned
|
||||
}
|
||||
{kevin_choice == "evidence":
|
||||
-> kevin_evidence
|
||||
}
|
||||
{kevin_choice == "ignore":
|
||||
-> kevin_ignored
|
||||
}
|
||||
|
||||
=== kevin_warned ===
|
||||
Agent 0x99: I saw in your report that you warned Kevin about the frame-up.
|
||||
|
||||
Agent 0x99: That was risky. If he'd panicked, if Derek had noticed...
|
||||
|
||||
+ [He deserved to know]
|
||||
Agent 0x99: He did. And now he's lawyered up, documented everything. When the prosecutors came for him, he was ready.
|
||||
Agent 0x99: His career is intact. His life isn't ruined. Because you took five minutes to be decent.
|
||||
-> kevin_outcome_positive
|
||||
+ [I couldn't just let Derek destroy him]
|
||||
Agent 0x99: You're right. Kevin didn't ask to be part of this. He helped you because he's a good person.
|
||||
Agent 0x99: Derek would have fed him to the wolves. You didn't let that happen.
|
||||
-> kevin_outcome_positive
|
||||
|
||||
=== kevin_evidence ===
|
||||
Agent 0x99: The contingency files you left for investigators—that was smart.
|
||||
|
||||
Agent 0x99: When the follow-up team found them, they immediately flagged Kevin as a victim, not a suspect.
|
||||
|
||||
Agent 0x99: He never even knew he was in danger. Woke up, went to work, found out his company was a front for terrorists, and went home to his family.
|
||||
|
||||
Agent 0x99: Clean. Professional. And kind.
|
||||
|
||||
-> kevin_outcome_positive
|
||||
|
||||
=== kevin_outcome_positive ===
|
||||
Agent 0x99: You know what Derek would have said? "Kevin is acceptable collateral damage."
|
||||
|
||||
Agent 0x99: You disagreed. That matters.
|
||||
|
||||
Agent 0x99: Not every agent would have taken the time. Not every agent would have cared.
|
||||
|
||||
-> derek_discussion
|
||||
|
||||
=== kevin_ignored ===
|
||||
Agent 0x99: Kevin Park was arrested this morning.
|
||||
|
||||
+ [What?]
|
||||
-> kevin_arrest_details
|
||||
+ [The frame-up worked?]
|
||||
-> kevin_arrest_details
|
||||
|
||||
=== kevin_arrest_details ===
|
||||
Agent 0x99: Derek's contingency plan activated automatically when Viral Dynamics' systems were seized. Fake logs, forged emails.
|
||||
|
||||
Agent 0x99: Kevin spent six hours in interrogation before our team figured out he was being framed.
|
||||
|
||||
Agent 0x99: He's cleared now. But he's traumatized. His neighbors saw him taken away in handcuffs. His kids watched.
|
||||
|
||||
+ [I... I saw the files. I knew.]
|
||||
Agent 0x99: I know. It's in Derek's computer logs.
|
||||
Agent 0x99: You made a choice. Focus on the mission. Let Kevin be collateral damage.
|
||||
Agent 0x99: Sometimes that's the right call. Sometimes the mission really does come first.
|
||||
Agent 0x99: But Kevin's going to need therapy. His kids are going to need therapy.
|
||||
Agent 0x99: Just... remember that. Next time you're weighing priorities.
|
||||
-> derek_discussion
|
||||
+ [The mission had to come first]
|
||||
Agent 0x99: Did it? You still stopped Operation Shatter. You still caught Derek.
|
||||
Agent 0x99: Would five minutes to warn Kevin have changed that?
|
||||
Agent 0x99: I'm not judging. Field decisions are hard. But consequences are real.
|
||||
Agent 0x99: Kevin's kids watched him get arrested. That happened because of a choice you made.
|
||||
Agent 0x99: Live with it. Learn from it.
|
||||
-> derek_discussion
|
||||
|
||||
// ================================================
|
||||
// DEREK DISCUSSION - Based on how player handled confrontation
|
||||
// ================================================
|
||||
|
||||
=== derek_discussion ===
|
||||
Agent 0x99: Now, about Derek Lawson...
|
||||
|
||||
{final_choice() == "arrest":
|
||||
{final_choice == "arrest":
|
||||
-> consequence_arrest
|
||||
}
|
||||
{final_choice() == "recruit":
|
||||
{final_choice == "recruit":
|
||||
-> consequence_recruit
|
||||
}
|
||||
{final_choice() == "expose":
|
||||
{final_choice == "expose":
|
||||
-> consequence_expose
|
||||
}
|
||||
// Default if variable not set properly
|
||||
-> consequence_arrest
|
||||
|
||||
// ================================================
|
||||
// CONSEQUENCE: ARREST
|
||||
// ================================================
|
||||
|
||||
=== consequence_arrest ===
|
||||
Agent 0x99: You chose arrest. Legal channels, proper prosecution.
|
||||
Agent 0x99: You chose arrest. Legal prosecution through proper channels.
|
||||
|
||||
{derek_cooperative:
|
||||
Agent 0x99: Derek's cooperating with investigators. Not full immunity, but his intel is valuable.
|
||||
Agent 0x99: We've identified two other Social Fabric operatives at Viral Dynamics.
|
||||
-> arrest_outcome
|
||||
- else:
|
||||
Agent 0x99: Derek's fighting this legally. Claims whistleblower protection.
|
||||
Agent 0x99: Media attention is... complicated. But we have the evidence.
|
||||
-> arrest_outcome
|
||||
}
|
||||
Agent 0x99: He's not cooperating—true believers rarely do. But we have the evidence. His signature on the casualty projections.
|
||||
|
||||
=== arrest_outcome ===
|
||||
Agent 0x99: Viral Dynamics is under investigation. Some innocent employees are caught in the fallout.
|
||||
Agent 0x99: He'll spend decades in prison explaining why 85 dead people would have been "educational."
|
||||
|
||||
Agent 0x99: But the Social Fabric cell is dismantled. That's what matters.
|
||||
|
||||
+ [What about Phase 3?]
|
||||
+ [Will the charges stick?]
|
||||
Agent 0x99: Conspiracy to commit mass murder. Terrorism. Computer crimes.
|
||||
{found_casualty_projections:
|
||||
Agent 0x99: With the casualty projections you recovered? He's done.
|
||||
- else:
|
||||
Agent 0x99: We're building the evidence case. It'll take longer, but he's not walking free.
|
||||
}
|
||||
-> phase_3_discussion
|
||||
+ [Was arrest the right choice?]
|
||||
Agent 0x99: You followed legal protocol. That's always defensible.
|
||||
+ [He seemed so certain he was right]
|
||||
Agent 0x99: That's what makes true believers dangerous. They've rationalized everything.
|
||||
Agent 0x99: Derek doesn't think he's a murderer. He thinks he's an educator.
|
||||
Agent 0x99: The jury will disagree.
|
||||
-> phase_3_discussion
|
||||
|
||||
// ================================================
|
||||
// CONSEQUENCE: RECRUIT
|
||||
// CONSEQUENCE: RECRUIT (Derek refuses)
|
||||
// ================================================
|
||||
|
||||
=== consequence_recruit ===
|
||||
Agent 0x99: You recruited Derek as Asset NIGHTINGALE.
|
||||
Agent 0x99: You offered him a chance to cooperate. Turn informant.
|
||||
|
||||
Agent 0x99: Risky. Very risky. But if it works, we'll have unprecedented ENTROPY intel.
|
||||
Agent 0x99: I heard his answer. "I will never betray ENTROPY."
|
||||
|
||||
Agent 0x99: Derek's feeding us information on Phase 3, other cells, coordination with Zero Day Syndicate.
|
||||
Agent 0x99: True believers don't turn, {player_name}. They'd rather go to prison as martyrs.
|
||||
|
||||
+ [Can we trust him?]
|
||||
Agent 0x99: No. Never trust a turned asset completely.
|
||||
Agent 0x99: But we can verify his intel and use it. He's valuable, even if unreliable.
|
||||
+ [I had to try]
|
||||
Agent 0x99: It was worth asking. His refusal tells us something about ENTROPY's organizational culture.
|
||||
Agent 0x99: These aren't mercenaries. They're ideologues. That's useful intelligence.
|
||||
-> recruit_outcome
|
||||
+ [What if The Architect finds out?]
|
||||
Agent 0x99: Then Derek's dead and we lose our access. Hence "risky."
|
||||
+ [I thought maybe he'd want to reduce his sentence]
|
||||
Agent 0x99: A rational person would. Derek isn't rational. He's a believer.
|
||||
Agent 0x99: His ideology matters more than his freedom.
|
||||
-> recruit_outcome
|
||||
|
||||
=== recruit_outcome ===
|
||||
Agent 0x99: Asset NIGHTINGALE is your responsibility now. You turned him, you run him.
|
||||
Agent 0x99: He's in custody now. Same outcome as arrest.
|
||||
|
||||
Agent 0x99: Future missions may require coordinating with Derek. Can you handle that?
|
||||
Agent 0x99: But we learned something important: ENTROPY attracts true believers. They won't flip for deals.
|
||||
|
||||
+ [I'll manage him]
|
||||
Agent 0x99: Good. This could be a major intelligence breakthrough.
|
||||
-> phase_3_discussion
|
||||
+ [I hope I made the right call]
|
||||
Agent 0x99: Time will tell. But you took the bold option. I respect that.
|
||||
-> phase_3_discussion
|
||||
Agent 0x99: We'll need to find other ways to get inside intelligence.
|
||||
|
||||
-> phase_3_discussion
|
||||
|
||||
// ================================================
|
||||
// CONSEQUENCE: EXPOSE
|
||||
@@ -166,145 +349,159 @@ Agent 0x99: Future missions may require coordinating with Derek. Can you handle
|
||||
=== consequence_expose ===
|
||||
Agent 0x99: Public disclosure. Full transparency.
|
||||
|
||||
Agent 0x99: Every media outlet is running the story. ENTROPY operations, Viral Dynamics infiltration, election manipulation—all exposed.
|
||||
Agent 0x99: The casualty projections are on every news site. Derek's death calculations. The targeting lists.
|
||||
|
||||
Agent 0x99: Director Netherton is furious. We don't do public disclosures.
|
||||
Agent 0x99: The world now knows what ENTROPY was willing to do.
|
||||
|
||||
+ [The public deserved to know]
|
||||
Agent 0x99: Maybe. But you've made enemies inside SAFETYNET.
|
||||
Agent 0x99: Some think you're reckless. Others think you're principled.
|
||||
+ [People deserve to know]
|
||||
Agent 0x99: Maybe. But now ENTROPY knows we're onto Operation Shatter methodology.
|
||||
Agent 0x99: They'll adapt. Change tactics. We've lost the element of surprise.
|
||||
-> expose_outcome
|
||||
+ [I'd do it again]
|
||||
Agent 0x99: I believe you. And honestly? I'm not sure you're wrong.
|
||||
+ [Let them see who Derek really is]
|
||||
Agent 0x99: They're seeing. "Acceptable losses." "Educational deaths."
|
||||
Agent 0x99: The public is horrified. Good. They should be.
|
||||
-> expose_outcome
|
||||
|
||||
=== expose_outcome ===
|
||||
Agent 0x99: Viral Dynamics is destroyed. Employees lost jobs, careers ruined.
|
||||
Agent 0x99: Director Netherton is... not happy. We don't usually expose methods.
|
||||
|
||||
Agent 0x99: But ENTROPY's Social Fabric operations are now public knowledge. Harder for them to operate in shadows.
|
||||
Agent 0x99: But ENTROPY's tactics are now public knowledge. People know to verify. To question.
|
||||
|
||||
Agent 0x99: Double-edged sword. Transparency vs. collateral damage.
|
||||
Agent 0x99: In a twisted way, you taught the lesson Derek wanted—just without the deaths.
|
||||
|
||||
+ [Was it worth it?]
|
||||
Agent 0x99: Ask me in six months. Right now, it's too soon to know.
|
||||
-> phase_3_discussion
|
||||
+ [I stand by my choice]
|
||||
Agent 0x99: Then own it. Choices have consequences. You knew that going in.
|
||||
-> phase_3_discussion
|
||||
{maya_identity_protected:
|
||||
Agent 0x99: At least Maya's identity stayed protected through all this.
|
||||
- else:
|
||||
Agent 0x99: Maya's identity came out in the disclosure. She's being handled as a public whistleblower now.
|
||||
}
|
||||
|
||||
-> phase_3_discussion
|
||||
|
||||
// ================================================
|
||||
// PHASE 3 DISCUSSION
|
||||
// PHASE 3 DISCUSSION - THE BIGGER PICTURE
|
||||
// ================================================
|
||||
|
||||
=== phase_3_discussion ===
|
||||
Agent 0x99: One cell down. But Phase 3 isn't stopped.
|
||||
Agent 0x99: {player_name}, I need you to understand what we learned today.
|
||||
|
||||
Agent 0x99: Social Fabric was one part of a larger operation. Zero Day Syndicate, Ransomware Inc., Critical Mass—all coordinating.
|
||||
Agent 0x99: We always thought ENTROPY was sophisticated cybercrime. Data theft. Corporate espionage.
|
||||
|
||||
Agent 0x99: And behind them all: The Architect.
|
||||
Agent 0x99: This is different. Derek had casualty projections. He calculated deaths and considered them acceptable.
|
||||
|
||||
+ [They're willing to kill for their ideology]
|
||||
-> true_nature
|
||||
+ [What does that mean for future missions?]
|
||||
-> true_nature
|
||||
|
||||
=== true_nature ===
|
||||
Agent 0x99: It means we're not fighting criminals. We're fighting true believers.
|
||||
|
||||
Agent 0x99: People who think killing people is "education." Who see deaths as "acceptable losses."
|
||||
|
||||
Agent 0x99: And if Social Fabric was willing to do this... what are the other cells planning?
|
||||
|
||||
+ [Who is The Architect?]
|
||||
-> architect_mystery
|
||||
+ [What's next for me?]
|
||||
-> next_mission
|
||||
+ [How do we stop them?]
|
||||
-> stop_entropy
|
||||
|
||||
// ================================================
|
||||
// THE ARCHITECT MYSTERY
|
||||
// ================================================
|
||||
|
||||
=== architect_mystery ===
|
||||
Agent 0x99: We don't know. No one does.
|
||||
Agent 0x99: We don't know. ENTROPY's leader, strategist, philosopher.
|
||||
|
||||
Agent 0x99: ENTROPY's leader, strategist, philosopher. Maybe one person, maybe a collective.
|
||||
Agent 0x99: Derek quoted The Architect. Believed every word. Got approval to kill 85 people.
|
||||
|
||||
Agent 0x99: Every cell reports to The Architect. Every operation traces back.
|
||||
Agent 0x99: Whoever they are, they've built an organization of true believers.
|
||||
|
||||
+ [How do we stop them?]
|
||||
Agent 0x99: Cell by cell. Operation by operation. Until we can trace the pattern.
|
||||
Agent 0x99: Your mission disrupted one cell. We need hundreds more like it.
|
||||
-> next_mission
|
||||
+ [Sounds impossible]
|
||||
Agent 0x99: Maybe. But we have to try.
|
||||
-> next_mission
|
||||
|
||||
// ================================================
|
||||
// NEXT MISSION SETUP
|
||||
// ================================================
|
||||
|
||||
=== next_mission ===
|
||||
Agent 0x99: You've proven yourself, {player_name}.
|
||||
|
||||
{player_approach == "cautious":
|
||||
Agent 0x99: You said you were cautious. You were—measured, thoughtful, strategic.
|
||||
}
|
||||
{player_approach == "confident":
|
||||
Agent 0x99: You said you were confident. You delivered on that.
|
||||
}
|
||||
{player_approach == "adaptable":
|
||||
Agent 0x99: You said you were adaptable. You proved it—pivoting when needed.
|
||||
}
|
||||
|
||||
Agent 0x99: First mission complete. But this is just the beginning.
|
||||
|
||||
+ [I'm ready for the next one]
|
||||
-> debrief_conclusion
|
||||
+ [I need time to process this]
|
||||
Agent 0x99: Take it. But not too long. ENTROPY doesn't wait.
|
||||
-> debrief_conclusion
|
||||
|
||||
// ================================================
|
||||
// DEBRIEF CONCLUSION
|
||||
// ================================================
|
||||
|
||||
=== debrief_conclusion ===
|
||||
Agent 0x99: One more thing.
|
||||
|
||||
Agent 0x99: Remember that axolotl metaphor from the briefing? About trusting your instincts?
|
||||
|
||||
+ [Yeah, I remember]
|
||||
-> axolotl_callback
|
||||
+ [Vaguely]
|
||||
-> axolotl_callback
|
||||
|
||||
=== axolotl_callback ===
|
||||
Agent 0x99: You've discovered which instincts to trust now.
|
||||
|
||||
Agent 0x99: You're not a hatchling anymore. You're an agent.
|
||||
|
||||
Agent 0x99: Welcome to SAFETYNET, {player_name}.
|
||||
|
||||
+ [Thank you, 0x99]
|
||||
+ [We have to find them]
|
||||
Agent 0x99: Every cell we disrupt, every operation we stop, brings us closer.
|
||||
{lore_collected >= 3:
|
||||
Agent 0x99: The intelligence you collected today gives us new leads. The Architect's communication patterns. Their philosophical fingerprints.
|
||||
}
|
||||
-> mission_end
|
||||
+ [Let's stop The Architect]
|
||||
Agent 0x99: That's the plan. One mission at a time.
|
||||
+ [That sounds terrifying]
|
||||
Agent 0x99: It is. But that's why SAFETYNET exists.
|
||||
Agent 0x99: Today, you stood between ENTROPY and 85 people they'd sacrifice.
|
||||
-> mission_end
|
||||
|
||||
=== stop_entropy ===
|
||||
Agent 0x99: Cell by cell. Operation by operation.
|
||||
|
||||
Agent 0x99: Today you stopped Operation Shatter. Tomorrow, we stop the next one.
|
||||
|
||||
-> mission_end
|
||||
|
||||
// ================================================
|
||||
// MISSION END
|
||||
// MISSION END - Personalized summary
|
||||
// ================================================
|
||||
|
||||
=== mission_end ===
|
||||
#speaker:agent_0x99
|
||||
Agent 0x99: First mission complete. Lives saved. True believer in custody.
|
||||
|
||||
{lore_collected >= 3:
|
||||
Agent 0x99: And {lore_collected} intelligence fragments recovered. That's thorough investigative work.
|
||||
}
|
||||
{lore_collected == 0:
|
||||
Agent 0x99: You focused on the primary objectives. Efficient.
|
||||
Agent 0x99: But next time, look for additional intelligence. Context helps future operations.
|
||||
}
|
||||
|
||||
Agent 0x99: Get some rest. Next briefing is in 48 hours.
|
||||
|
||||
Agent 0x99: And {player_name}? Good work out there.
|
||||
Agent 0x99: And {player_name}? You did more than complete a mission today.
|
||||
|
||||
Agent 0x99: You saved lives. Real people who will never know your name.
|
||||
|
||||
Agent 0x99: That's what SAFETYNET is for.
|
||||
|
||||
[MISSION COMPLETE: FIRST CONTACT]
|
||||
|
||||
{final_choice() == "arrest":
|
||||
[OUTCOME: Derek Lawson arrested - Legal prosecution pending]
|
||||
{final_choice == "arrest":
|
||||
[OUTCOME: Derek Lawson arrested - Prosecution pending]
|
||||
}
|
||||
{final_choice() == "recruit":
|
||||
[OUTCOME: Derek Lawson recruited as Asset NIGHTINGALE - Double agent operation active]
|
||||
{final_choice == "recruit":
|
||||
[OUTCOME: Derek Lawson arrested - Refused cooperation]
|
||||
}
|
||||
{final_choice() == "expose":
|
||||
[OUTCOME: Full public disclosure - ENTROPY operations exposed]
|
||||
{final_choice == "expose":
|
||||
[OUTCOME: Full public disclosure - ENTROPY methods exposed]
|
||||
}
|
||||
|
||||
[Social Fabric cell disrupted]
|
||||
[Election manipulation prevented]
|
||||
[Phase 3 continues...]
|
||||
[OPERATION SHATTER: NEUTRALIZED]
|
||||
[LIVES SAVED: 42-85 (estimated)]
|
||||
|
||||
{found_casualty_projections && found_target_database:
|
||||
[EVIDENCE: COMPLETE - All critical documents recovered]
|
||||
}
|
||||
{found_casualty_projections && not found_target_database:
|
||||
[EVIDENCE: SUBSTANTIAL - Casualty projections secured]
|
||||
}
|
||||
{not found_casualty_projections && found_target_database:
|
||||
[EVIDENCE: SUBSTANTIAL - Target database secured]
|
||||
}
|
||||
{not found_casualty_projections && not found_target_database:
|
||||
[EVIDENCE: PARTIAL - Forensics team recovering additional files]
|
||||
}
|
||||
|
||||
{maya_identity_protected:
|
||||
[MAYA CHEN: Identity protected]
|
||||
- else:
|
||||
[MAYA CHEN: Identity compromised - Under SAFETYNET protection]
|
||||
}
|
||||
|
||||
{kevin_protected:
|
||||
[KEVIN PARK: Protected from frame-up - Career intact]
|
||||
}
|
||||
{kevin_choice == "ignore":
|
||||
[KEVIN PARK: Arrested, later cleared - Traumatized but free]
|
||||
}
|
||||
{kevin_choice == "":
|
||||
[KEVIN PARK: Status unknown]
|
||||
}
|
||||
|
||||
[The Architect remains at large...]
|
||||
|
||||
#exit_conversation
|
||||
-> END
|
||||
|
||||
File diff suppressed because one or more lines are too long
@@ -1,188 +1,234 @@
|
||||
// ================================================
|
||||
// Mission 1: First Contact - Derek Confrontation
|
||||
// Act 3: Major Moral Choice
|
||||
// Player confronts Derek with evidence
|
||||
// UPDATED: Evil monologue, clear villain, no sympathy
|
||||
// Player confronts Derek with Operation Shatter evidence
|
||||
// ================================================
|
||||
|
||||
VAR confrontation_approach = "" // diplomatic, aggressive, evidence_based
|
||||
VAR derek_knows_safetynet = false
|
||||
VAR derek_cooperative = false
|
||||
VAR final_choice = "" // arrest, recruit, expose, eliminate
|
||||
VAR derek_showed_remorse = false // Spoiler: he won't
|
||||
VAR final_choice = "" // arrest, recruit, expose
|
||||
VAR derek_confronted = false // Set to true when confrontation ends
|
||||
|
||||
// External variables
|
||||
VAR player_name = "Agent 0x00"
|
||||
VAR evidence_collected = false
|
||||
VAR found_casualty_projections = false
|
||||
|
||||
// VM flag requirements - player must complete technical investigation
|
||||
VAR ssh_flag_submitted = false
|
||||
VAR linux_flag_submitted = false
|
||||
VAR sudo_flag_submitted = false
|
||||
|
||||
// ================================================
|
||||
// START: DEREK APPEARS
|
||||
// ================================================
|
||||
|
||||
=== start ===
|
||||
// Check if player has sufficient evidence from VM challenges
|
||||
{not ssh_flag_submitted or not linux_flag_submitted or not sudo_flag_submitted:
|
||||
-> insufficient_evidence
|
||||
}
|
||||
// Player has all VM flags - proceed with confrontation
|
||||
#complete_task:confront_derek
|
||||
|
||||
Derek: Working late on the security audit?
|
||||
|
||||
Derek: You've been very thorough. Accessing locked offices, reviewing server logs, talking to everyone.
|
||||
Derek: I've been watching you, you know. The lockpicking. The server access. The files you've been copying.
|
||||
|
||||
+ [Just doing my job as an IT contractor]
|
||||
~ confrontation_approach = "diplomatic"
|
||||
-> derek_response_cover
|
||||
+ [I know who you are, Derek]
|
||||
Derek: You're not an IT contractor. And you've found Operation Shatter.
|
||||
|
||||
+ [I know what you're planning, Derek.]
|
||||
~ confrontation_approach = "aggressive"
|
||||
~ derek_knows_safetynet = true
|
||||
-> derek_response_direct
|
||||
+ [I have questions about your network activity]
|
||||
+ [I've seen the casualty projections.]
|
||||
~ confrontation_approach = "evidence_based"
|
||||
~ derek_knows_safetynet = true
|
||||
-> derek_response_evidence
|
||||
|
||||
// ================================================
|
||||
// DEREK RESPONDS TO COVER STORY
|
||||
// ================================================
|
||||
|
||||
=== derek_response_cover ===
|
||||
Derek: Of course. Very professional.
|
||||
|
||||
Derek: But we both know you're not really an IT contractor, are we?
|
||||
|
||||
Derek: The way you move, the questions you ask, the systems you've accessed...
|
||||
|
||||
+ [I don't know what you mean]
|
||||
-> derek_calls_bluff
|
||||
+ [You're right. I'm SAFETYNET]
|
||||
+ [SAFETYNET knows everything.]
|
||||
~ confrontation_approach = "aggressive"
|
||||
~ derek_knows_safetynet = true
|
||||
-> derek_response_safetynet
|
||||
|
||||
=== derek_calls_bluff ===
|
||||
Derek: Come on. Give me some credit.
|
||||
// ================================================
|
||||
// INSUFFICIENT EVIDENCE - PLAYER NEEDS VM FLAGS
|
||||
// ================================================
|
||||
|
||||
Derek: I've been watching you watch me. We're professionals here.
|
||||
=== insufficient_evidence ===
|
||||
Derek: Oh, you must be the IT contractor. Security audit, right?
|
||||
|
||||
-> derek_response_safetynet
|
||||
Derek: I'm kind of busy. Maybe check back later?
|
||||
|
||||
+ [I need to look at your systems]
|
||||
Derek: Feel free to look around the office. But I don't have time for an interview right now.
|
||||
Derek: Maybe after you've actually found something worth discussing.
|
||||
#exit_conversation
|
||||
-> END
|
||||
+ [We should talk about some irregularities I've found]
|
||||
Derek: Irregularities? Like what exactly?
|
||||
Derek: If you don't have specifics, I've got work to do. Come back when you have evidence.
|
||||
#exit_conversation
|
||||
-> END
|
||||
+ [I'll come back later]
|
||||
Derek: Good idea. I'm sure the server room has plenty to keep you busy.
|
||||
#exit_conversation
|
||||
-> END
|
||||
|
||||
// ================================================
|
||||
// DEREK RESPONDS TO DIRECT APPROACH
|
||||
// DEREK RESPONDS - DIRECT APPROACH
|
||||
// ================================================
|
||||
|
||||
=== derek_response_direct ===
|
||||
Derek: SAFETYNET. I wondered when you'd show up.
|
||||
Derek: "Planning." Such a neutral word for what we're doing.
|
||||
|
||||
Derek: Took you long enough. I've been operating here for three months.
|
||||
Derek: We're not planning an attack. We're planning an education.
|
||||
|
||||
+ [That ends tonight]
|
||||
-> derek_challenge
|
||||
+ [We know about Social Fabric]
|
||||
-> derek_social_fabric
|
||||
+ [You're planning to kill people.]
|
||||
-> derek_admits_casualties
|
||||
+ [You're insane.]
|
||||
-> derek_calm_response
|
||||
|
||||
=== derek_challenge ===
|
||||
Derek: Does it? You're one agent. I'm one operative. What happens now?
|
||||
=== derek_calm_response ===
|
||||
Derek: Insane? I'm the sanest person in this building.
|
||||
|
||||
-> present_evidence
|
||||
Derek: Everyone else pretends the systems work. Pretends their data is secure. Pretends that trust is deserved.
|
||||
|
||||
=== derek_social_fabric ===
|
||||
Derek: Social Fabric. The Architect. Phase 3. You know the names but not what they mean.
|
||||
Derek: I know the truth. And after Sunday, so will everyone else.
|
||||
|
||||
-> present_evidence
|
||||
-> derek_admits_casualties
|
||||
|
||||
// ================================================
|
||||
// DEREK RESPONDS TO EVIDENCE
|
||||
// DEREK RESPONDS - EVIDENCE APPROACH
|
||||
// ================================================
|
||||
|
||||
=== derek_response_evidence ===
|
||||
Derek: Network activity. How specific.
|
||||
Derek: Ah. The casualty projections.
|
||||
|
||||
Derek: Let me guess—you found the backdoor, the server access, the encrypted communications?
|
||||
Derek: I was wondering if you'd find those. They're the most honest part of the whole operation.
|
||||
|
||||
+ [All of it]
|
||||
-> derek_impressed
|
||||
+ [Enough to know you're ENTROPY]
|
||||
~ derek_knows_safetynet = true
|
||||
-> derek_response_safetynet
|
||||
|
||||
=== derek_impressed ===
|
||||
Derek: Thorough. I'm actually impressed.
|
||||
|
||||
Derek: Not many people could piece that together. SAFETYNET training, I assume?
|
||||
|
||||
~ derek_knows_safetynet = true
|
||||
|
||||
-> derek_response_safetynet
|
||||
+ [You calculated how many people would die.]
|
||||
-> derek_admits_casualties
|
||||
+ [42 to 85 people. Those are your numbers.]
|
||||
-> derek_admits_casualties
|
||||
|
||||
// ================================================
|
||||
// DEREK ACKNOWLEDGES SAFETYNET
|
||||
// DEREK RESPONDS - SAFETYNET
|
||||
// ================================================
|
||||
|
||||
=== derek_response_safetynet ===
|
||||
Derek: So what now? You arrest me? Call in your team?
|
||||
Derek: SAFETYNET. The organization that thinks surveillance protects people.
|
||||
|
||||
Derek: Or did you come alone to have a conversation first?
|
||||
Derek: You found the files. The targeting lists. The message templates.
|
||||
|
||||
-> present_evidence
|
||||
Derek: Good. Then you understand what's coming.
|
||||
|
||||
-> derek_admits_casualties
|
||||
|
||||
// ================================================
|
||||
// PRESENT EVIDENCE
|
||||
// DEREK ADMITS TO CASUALTIES - THE EVIL MONOLOGUE
|
||||
// ================================================
|
||||
|
||||
=== present_evidence ===
|
||||
You explain what you've found:
|
||||
=== derek_admits_casualties ===
|
||||
Derek: Yes. Between 42 and 85 people will die in the first 24 hours.
|
||||
|
||||
You: Firmware backdoor in the edge router. Three months of network monitoring.
|
||||
Derek: Diabetics who panic about hospital closures. Elderly who can't handle the stress of fake bank failures. Heart attacks. Traffic accidents. A few suicides, probably.
|
||||
|
||||
You: Encrypted communications with other ENTROPY cells. Demographic data collection.
|
||||
Derek: I calculated every one of them.
|
||||
|
||||
You: Disinformation campaign planning. Phase 3 references.
|
||||
+ [How can you be so calm about murdering people?]
|
||||
-> evil_monologue_part1
|
||||
+ [You're a monster.]
|
||||
-> evil_monologue_part1
|
||||
+ [Why?]
|
||||
-> evil_monologue_part1
|
||||
|
||||
Derek: You have been thorough.
|
||||
// ================================================
|
||||
// EVIL MONOLOGUE - PART 1
|
||||
// ================================================
|
||||
|
||||
+ [What is Phase 3?]
|
||||
-> phase_3_explanation
|
||||
+ [Why do this? Why ENTROPY?]
|
||||
-> derek_motivation
|
||||
+ [This stops now]
|
||||
=== evil_monologue_part1 ===
|
||||
Derek: Murder? No. Think of it as... forced education.
|
||||
|
||||
Derek: Every security professional in the world says "humans are the weakest link." They write papers about it. Give talks at conferences. Collect consulting fees.
|
||||
|
||||
Derek: But no one actually DEMONSTRATES it. No one shows what happens when you target human psychology at scale.
|
||||
|
||||
Derek: We're going to prove—conclusively, undeniably—that digital trust is a lie. That every message you receive could be fake. That nothing is secure.
|
||||
|
||||
+ [By killing innocent people.]
|
||||
-> evil_monologue_part2
|
||||
+ [You're just terrorists with a philosophy degree.]
|
||||
-> evil_monologue_part2
|
||||
|
||||
=== evil_monologue_part2 ===
|
||||
Derek: "Innocent." That's an interesting word.
|
||||
|
||||
Derek: The diabetics we're targeting? They trust hospital notifications without verification. The elderly? They believe bank messages because they look official.
|
||||
|
||||
Derek: They're not innocent. They're negligent. They've outsourced their critical thinking to systems that can be manipulated.
|
||||
|
||||
Derek: We're teaching them—all of them—that trust is dangerous. Verify everything. Question everything. Or die.
|
||||
|
||||
+ [Some of them WILL die. That's murder.]
|
||||
-> evil_monologue_part3
|
||||
+ [You're rationalizing mass murder.]
|
||||
-> evil_monologue_part3
|
||||
|
||||
// ================================================
|
||||
// EVIL MONOLOGUE - PART 3 (The Coldest Part)
|
||||
// ================================================
|
||||
|
||||
=== evil_monologue_part3 ===
|
||||
Derek: Forty-two to eighty-five deaths. Let's call it sixty.
|
||||
|
||||
Derek: Do you know how many people die every year because they trusted the wrong email? Clicked the wrong link? Gave credentials to the wrong person?
|
||||
|
||||
Derek: Thousands. Tens of thousands. Suicides after financial fraud. Medical errors from compromised records. Violence incited by disinformation.
|
||||
|
||||
Derek: We're going to end that. One bad weekend. Sixty deaths. And then NO ONE will ever trust a digital message again without verification.
|
||||
|
||||
Derek: Sixty deaths to save tens of thousands per year. That's not murder. That's optimization.
|
||||
|
||||
+ [You're calculating human lives like statistics.]
|
||||
-> derek_final_philosophy
|
||||
+ [The Architect taught you this, didn't they?]
|
||||
-> architect_reference
|
||||
+ [This ends now.]
|
||||
-> confrontation_choice
|
||||
|
||||
// ================================================
|
||||
// PHASE 3 EXPLANATION
|
||||
// ================================================
|
||||
=== architect_reference ===
|
||||
Derek: The Architect opened my eyes. But I chose this path myself.
|
||||
|
||||
=== phase_3_explanation ===
|
||||
Derek: Phase 3 is... enlightenment, you could call it.
|
||||
Derek: Entropy is inevitable. Trust is a lie. Security through obscurity fails.
|
||||
|
||||
Derek: The Architect believes systems inherently tend toward chaos. We just accelerate the inevitable.
|
||||
Derek: We just accelerate the lesson. Make it unavoidable. Make it hurt enough that people remember.
|
||||
|
||||
+ [That's justification for terrorism]
|
||||
Derek: Is it terrorism to reveal truth? To demonstrate that security is an illusion?
|
||||
-> derek_philosophy
|
||||
+ [You're manipulating people]
|
||||
Derek: Everyone manipulates people. We're just honest about it.
|
||||
-> derek_philosophy
|
||||
|
||||
=== derek_philosophy ===
|
||||
Derek: You think your elections are secure? Your infrastructure is protected?
|
||||
|
||||
Derek: We'll prove otherwise. Not with bombs—with demonstration of how fragile everything really is.
|
||||
|
||||
-> derek_motivation
|
||||
-> derek_final_philosophy
|
||||
|
||||
// ================================================
|
||||
// DEREK'S MOTIVATION
|
||||
// DEREK'S FINAL PHILOSOPHY
|
||||
// ================================================
|
||||
|
||||
=== derek_motivation ===
|
||||
Derek: Why ENTROPY? Because The Architect showed me the truth.
|
||||
=== derek_final_philosophy ===
|
||||
Derek: You look at me like I'm a monster.
|
||||
|
||||
Derek: Every security system fails. Every organization collapses. Entropy always wins.
|
||||
Derek: But I'm the only honest person in this industry. Every security researcher KNOWS trust is broken. They just profit from pretending it can be fixed.
|
||||
|
||||
Derek: We're not villains. We're... educators. Demonstrating reality that people refuse to see.
|
||||
Derek: I'm the one willing to actually fix it. To burn the comfortable lies so something real can grow from the ashes.
|
||||
|
||||
+ [You're rationalizing harm]
|
||||
~ confrontation_approach = "aggressive"
|
||||
Derek: And you're rationalizing surveillance and control. We're not so different.
|
||||
Derek: Those sixty people? Their deaths will save millions.
|
||||
|
||||
Derek: And in ten years, when no one falls for phishing because Operation Shatter taught them to verify everything, you'll understand.
|
||||
|
||||
Derek: I'm not a villain. I'm a prophet.
|
||||
|
||||
+ [You're delusional.]
|
||||
-> confrontation_choice
|
||||
+ [You sound like you actually believe this]
|
||||
~ confrontation_approach = "diplomatic"
|
||||
~ derek_cooperative = true
|
||||
Derek: I do. That's what makes us dangerous—we're not criminals chasing money. We're believers.
|
||||
+ [You're going to prison for the rest of your life.]
|
||||
-> confrontation_choice
|
||||
+ [I almost feel sorry for you. Almost.]
|
||||
-> confrontation_choice
|
||||
|
||||
// ================================================
|
||||
@@ -190,17 +236,19 @@ Derek: We're not villains. We're... educators. Demonstrating reality that people
|
||||
// ================================================
|
||||
|
||||
=== confrontation_choice ===
|
||||
Derek: So. Here we are.
|
||||
Derek: So. Here we are. You've heard my reasoning. You've seen the evidence.
|
||||
|
||||
Derek: What happens next is up to you.
|
||||
Derek: What happens now is up to you.
|
||||
|
||||
+ [I'm calling in SAFETYNET. You're under arrest]
|
||||
Derek: But know this—even if you stop Operation Shatter here, the idea doesn't die. There are other cells. Other believers. Other architects of the inevitable.
|
||||
|
||||
+ [I'm calling in SAFETYNET. You're under arrest.]
|
||||
~ final_choice = "arrest"
|
||||
-> choice_arrest
|
||||
+ [I have a proposition—work for us instead]
|
||||
+ [Work with us. Help us stop the other cells.]
|
||||
~ final_choice = "recruit"
|
||||
-> choice_recruit
|
||||
+ [I'm exposing everything publicly]
|
||||
+ [I'm exposing everything publicly. Let the world see what you are.]
|
||||
~ final_choice = "expose"
|
||||
-> choice_expose
|
||||
|
||||
@@ -209,35 +257,17 @@ Derek: What happens next is up to you.
|
||||
// ================================================
|
||||
|
||||
=== choice_arrest ===
|
||||
You: You'll face justice through proper channels.
|
||||
You: You're done, Derek. Operation Shatter dies today. And you're going to spend the rest of your life in prison.
|
||||
|
||||
{derek_cooperative:
|
||||
Derek: Interesting. You could eliminate me quietly, but you're choosing the legal path.
|
||||
Derek: I respect that, actually. It's principled.
|
||||
-> arrest_cooperative
|
||||
- else:
|
||||
Derek: The legal system. How quaint.
|
||||
Derek: You realize I'll claim whistleblower protection? Expose corporate surveillance?
|
||||
-> arrest_hostile
|
||||
}
|
||||
Derek: Prison. How quaint.
|
||||
|
||||
=== arrest_cooperative ===
|
||||
Derek: I won't resist. But you should know—there are others.
|
||||
Derek: You think concrete walls stop ideas? I'll become a martyr. People will study my philosophy. Question why I was silenced.
|
||||
|
||||
Derek: Social Fabric isn't just me. Phase 3 continues with or without this operation.
|
||||
You: You'll be a case study in how not to become a terrorist.
|
||||
|
||||
You: That's for SAFETYNET to handle.
|
||||
Derek: Terrorist. That's what they call educators who make people uncomfortable.
|
||||
|
||||
You call in backup. Derek is taken into custody professionally.
|
||||
|
||||
-> arrest_outcome
|
||||
|
||||
=== arrest_hostile ===
|
||||
Derek: This will get messy. Media attention, legal battles, public scrutiny of SAFETYNET.
|
||||
|
||||
Derek: But if that's how you want to play it...
|
||||
|
||||
You call in backup. Derek is arrested but promises a legal fight.
|
||||
You call in SAFETYNET backup. Derek doesn't resist—he's too confident that he's already won something.
|
||||
|
||||
-> arrest_outcome
|
||||
|
||||
@@ -246,7 +276,9 @@ You call in backup. Derek is arrested but promises a legal fight.
|
||||
|
||||
Agent 0x99: Backup team is on site. Derek Lawson in custody.
|
||||
|
||||
Agent 0x99: Good work, {player_name}. Clean operation.
|
||||
Agent 0x99: {player_name}... I heard everything. The way he talked about those deaths. Like they were just... numbers.
|
||||
|
||||
Agent 0x99: We got him. Operation Shatter is over. You saved those people.
|
||||
|
||||
~ derek_confronted = true
|
||||
#exit_conversation
|
||||
@@ -258,47 +290,34 @@ Agent 0x99: Good work, {player_name}. Clean operation.
|
||||
// ================================================
|
||||
|
||||
=== choice_recruit ===
|
||||
You: ENTROPY is going down. You can go down with it, or you can help us stop Phase 3.
|
||||
You: You said there are other cells. Other architects of chaos.
|
||||
|
||||
Derek: Become a double agent? Feed you intelligence while maintaining my ENTROPY cover?
|
||||
You: Help us stop them. Turn informant. Give us ENTROPY from the inside.
|
||||
|
||||
+ [Exactly. You keep your cell's trust, we get inside information]
|
||||
-> recruit_negotiation
|
||||
+ [Or face prosecution. Your choice]
|
||||
-> recruit_pressure
|
||||
Derek: Become a double agent? Betray The Architect?
|
||||
|
||||
=== recruit_negotiation ===
|
||||
Derek: Interesting proposition.
|
||||
Derek: *laughs*
|
||||
|
||||
Derek: What's in it for me? Immunity? Protection?
|
||||
Derek: You think I'd sell out the only people who understand the truth? For what—reduced sentence?
|
||||
|
||||
+ [Full immunity for cooperation. Witness protection if needed]
|
||||
~ derek_cooperative = true
|
||||
-> recruit_accept
|
||||
+ [A chance to do the right thing]
|
||||
Derek: I'm a true believer, remember? "Right thing" is subjective.
|
||||
Derek: But immunity and protection... that I can work with.
|
||||
-> recruit_accept
|
||||
Derek: No. I'm not like you, willing to compromise principles for convenience.
|
||||
|
||||
=== recruit_pressure ===
|
||||
Derek: Threatening prosecution? That's your angle?
|
||||
Derek: Arrest me. Expose me. I don't care. But I will never betray ENTROPY.
|
||||
|
||||
Derek: Fine. But understand—I'm doing this for my survival, not because I've seen the error of my ways.
|
||||
You: Then you leave me no choice.
|
||||
|
||||
-> recruit_accept
|
||||
You call in SAFETYNET backup. Derek was never going to cooperate—his belief is absolute.
|
||||
|
||||
=== recruit_accept ===
|
||||
Derek: I'll do it. Feed you intelligence, maintain my ENTROPY connections.
|
||||
|
||||
Derek: But you should know—if The Architect suspects I'm compromised, I'm dead.
|
||||
|
||||
Derek: So keep me alive, and I'll keep you informed about Phase 3.
|
||||
-> recruit_outcome
|
||||
|
||||
=== recruit_outcome ===
|
||||
#speaker:agent_0x99
|
||||
|
||||
Agent 0x99: {player_name}, this is high risk. But if it works, we'll have unprecedented ENTROPY access.
|
||||
Agent 0x99: I heard his refusal. Not surprised—true believers don't turn.
|
||||
|
||||
Agent 0x99: Derek Lawson is now Asset NIGHTINGALE. Proceed with extreme caution.
|
||||
Agent 0x99: But you tried. That matters. Sometimes there's no way to reach someone.
|
||||
|
||||
Agent 0x99: Derek Lawson is in custody. Operation Shatter is stopped. That's what counts.
|
||||
|
||||
~ derek_confronted = true
|
||||
#exit_conversation
|
||||
@@ -310,50 +329,46 @@ Agent 0x99: Derek Lawson is now Asset NIGHTINGALE. Proceed with extreme caution.
|
||||
// ================================================
|
||||
|
||||
=== choice_expose ===
|
||||
You: I'm taking everything I've found—the backdoors, the emails, the evidence—and going public.
|
||||
You: I'm taking everything. The casualty projections. The targeting lists. The messages you wrote for elderly diabetics.
|
||||
|
||||
Derek: Public disclosure? That's bold.
|
||||
You: I'm giving it all to the press. Let the world see what ENTROPY really is.
|
||||
|
||||
Derek: You'll expose ENTROPY operations, but also Viral Dynamics' complete security failure.
|
||||
Derek: *smiles*
|
||||
|
||||
+ [The public deserves to know the truth]
|
||||
-> expose_truth
|
||||
+ [Transparency is the only way]
|
||||
-> expose_transparency
|
||||
Derek: You think that hurts me? I WANT people to see this.
|
||||
|
||||
=== expose_truth ===
|
||||
Derek: Noble. Naive, but noble.
|
||||
Derek: Public disclosure means the philosophy spreads. People will read those casualty projections and think—what if it happened? What if next time we're not stopped?
|
||||
|
||||
Derek: You'll destroy this company, ruin careers, cause panic. All for "truth."
|
||||
Derek: Fear is the first step to wisdom. You're doing my work for me.
|
||||
|
||||
+ [Better than letting ENTROPY operate in shadows]
|
||||
+ [Then the world will also see you in handcuffs.]
|
||||
-> expose_execute
|
||||
+ [The alternative is worse]
|
||||
+ [At least they'll know to watch for people like you.]
|
||||
-> expose_execute
|
||||
|
||||
=== expose_transparency ===
|
||||
Derek: Transparency. The Architect would appreciate the irony.
|
||||
|
||||
Derek: You're proving our point—that security through obscurity fails when exposed.
|
||||
|
||||
-> expose_execute
|
||||
|
||||
=== expose_execute ===
|
||||
Derek: Well, if you're doing this, you should know the full scope.
|
||||
You: Maybe. But they'll also see that SAFETYNET stopped you. That we found you before you killed anyone.
|
||||
|
||||
Derek: Social Fabric is coordinating with Zero Day Syndicate, Ransomware Inc., and Critical Mass. Multiple cells, one operation.
|
||||
You: And every time someone reads about Operation Shatter, they'll remember that we caught you. That your "inevitable entropy" wasn't so inevitable after all.
|
||||
|
||||
Derek: Expose it all. Let the chaos unfold.
|
||||
Derek: A temporary setback. Entropy always wins eventually.
|
||||
|
||||
You begin compiling the evidence for public release.
|
||||
You: Not today.
|
||||
|
||||
You begin compiling the evidence for public release while calling in backup.
|
||||
|
||||
-> expose_outcome
|
||||
|
||||
=== expose_outcome ===
|
||||
#speaker:agent_0x99
|
||||
|
||||
Agent 0x99: {player_name}, Director Netherton is furious. We don't do public disclosures.
|
||||
Agent 0x99: {player_name}, public disclosure is... complicated. Director Netherton is going to have opinions.
|
||||
|
||||
Agent 0x99: But... the evidence is already out there. Viral Dynamics, ENTROPY operations, everything.
|
||||
Agent 0x99: But I understand why you did it. People should know what ENTROPY is capable of. What they were willing to do.
|
||||
|
||||
Agent 0x99: The fallout is going to be massive.
|
||||
Agent 0x99: Derek's in custody. The targeting lists are secured. And those 85 people who were going to die on Sunday? They're going to live.
|
||||
|
||||
Agent 0x99: That's what matters.
|
||||
|
||||
~ derek_confronted = true
|
||||
#exit_conversation
|
||||
|
||||
File diff suppressed because one or more lines are too long
@@ -1,7 +1,7 @@
|
||||
// ================================================
|
||||
// Mission 1: First Contact - Kevin Park (IT Manager)
|
||||
// Act 2: In-Person NPC
|
||||
// Provides lockpick, password hints, server room access
|
||||
// Located in IT Room (PIN locked)
|
||||
// Provides lockpicks, server keycard, and password hints
|
||||
// ================================================
|
||||
|
||||
VAR influence = 0
|
||||
@@ -10,24 +10,26 @@ VAR discussed_audit = false
|
||||
VAR asked_about_derek = false
|
||||
VAR asked_about_passwords = false
|
||||
VAR given_lockpick = false
|
||||
VAR given_keycard = false
|
||||
VAR given_password_hints = false
|
||||
VAR discussed_server_room = false
|
||||
VAR can_clone_card = false
|
||||
VAR warned_about_derek = false
|
||||
|
||||
// ================================================
|
||||
// START: FIRST MEETING
|
||||
// ================================================
|
||||
|
||||
=== start ===
|
||||
#set_variable:talked_to_kevin=true
|
||||
{not met_kevin:
|
||||
~ met_kevin = true
|
||||
~ influence += 2
|
||||
Kevin: Oh, hey! You must be the security auditor. I'm Kevin—IT manager, sole IT department, and occasional coffee addict.
|
||||
Kevin: Thank god you're here. I've been telling them we need a security review for months.
|
||||
Kevin: Oh hey! You found the IT room. I'm Kevin—IT manager, sole IT department, and professional worrier.
|
||||
Kevin: You're the security auditor, right? Thank god you're here.
|
||||
Kevin: I've been telling them we need a review for months.
|
||||
-> first_meeting
|
||||
}
|
||||
{met_kevin:
|
||||
Kevin: What's up? Found any security nightmares yet?
|
||||
Kevin: Hey, what's up? Found anything interesting yet?
|
||||
-> hub
|
||||
}
|
||||
|
||||
@@ -36,228 +38,224 @@ VAR can_clone_card = false
|
||||
// ================================================
|
||||
|
||||
=== first_meeting ===
|
||||
+ [Happy to help. What's the current security situation?]
|
||||
#complete_task:meet_kevin
|
||||
+ [Happy to help. What's the security situation?]
|
||||
~ influence += 2
|
||||
~ discussed_audit = true
|
||||
#complete_task:meet_kevin
|
||||
-> security_situation
|
||||
+ [I'll need access to systems and the server room]
|
||||
+ [I'll need access to secure areas for testing]
|
||||
~ discussed_audit = true
|
||||
#complete_task:meet_kevin
|
||||
-> access_discussion
|
||||
+ [Looks like you handle a lot solo]
|
||||
+ [You seem stressed]
|
||||
~ influence += 1
|
||||
~ discussed_audit = true
|
||||
#complete_task:meet_kevin
|
||||
-> commiseration
|
||||
-> kevin_stress
|
||||
|
||||
// ================================================
|
||||
// SECURITY SITUATION
|
||||
// ================================================
|
||||
|
||||
=== security_situation ===
|
||||
Kevin: Honestly? It's not terrible but it's not great.
|
||||
Kevin: Honestly? I'm worried.
|
||||
|
||||
Kevin: We have basic stuff—firewalls, access controls, encryption. But I'm one person managing everything.
|
||||
Kevin: Someone's been accessing the server room without authorization. Late at night. Multiple times.
|
||||
|
||||
+ [What worries you most?]
|
||||
Kevin: I flagged it to management three times. Nothing happened.
|
||||
|
||||
+ [Who do you think it is?]
|
||||
~ warned_about_derek = true
|
||||
~ influence += 1
|
||||
-> security_concerns
|
||||
+ [I'll do a thorough assessment]
|
||||
-> hub
|
||||
-> derek_suspicion
|
||||
+ [That's what I'm here to investigate]
|
||||
Kevin: Good. Because I'm starting to feel like I'm the only one who cares about security around here.
|
||||
-> offer_tools
|
||||
|
||||
=== security_concerns ===
|
||||
Kevin: Physical security, mainly. People write passwords on sticky notes, leave doors unlocked.
|
||||
// ================================================
|
||||
// DEREK SUSPICION
|
||||
// ================================================
|
||||
|
||||
Kevin: I can lock down the network all day, but if someone can walk in and access a terminal...
|
||||
=== derek_suspicion ===
|
||||
Kevin: *lowers voice* I think it's Derek Lawson. Senior Marketing Manager.
|
||||
|
||||
+ [That's what I'm here to check]
|
||||
Kevin: The access logs show his credentials being used at 2 AM. But he says it's for "campaign servers."
|
||||
|
||||
Kevin: We don't have campaign servers in that room. It's all internal infrastructure.
|
||||
|
||||
Kevin: The last person who raised concerns about Derek was Patricia—our manager. She got fired.
|
||||
|
||||
+ [I'll look into it]
|
||||
~ influence += 2
|
||||
Kevin: Exactly. Look, I've got something that might help you test physical security.
|
||||
-> offer_lockpick
|
||||
+ [Social engineering is often the biggest vulnerability]
|
||||
~ influence += 1
|
||||
Kevin: Right? Technology is only as secure as the people using it.
|
||||
-> hub
|
||||
Kevin: Please do. But be careful. Derek has friends in high places.
|
||||
Kevin: Here, let me give you some tools that might help.
|
||||
-> offer_tools
|
||||
+ [Could be someone spoofing his credentials]
|
||||
Kevin: Maybe. But I don't think so. I've seen him leaving the office at weird hours.
|
||||
-> offer_tools
|
||||
|
||||
// ================================================
|
||||
// ACCESS DISCUSSION
|
||||
// ================================================
|
||||
|
||||
=== access_discussion ===
|
||||
Kevin: I can get you into most places. Server room, you'll need my RFID card or...
|
||||
Kevin: Right, you'll need access to secure areas.
|
||||
|
||||
Kevin: Actually, you should test our physical security anyway.
|
||||
Kevin: I've got a keycard for the server room. It's behind Derek's office, actually.
|
||||
|
||||
-> offer_lockpick
|
||||
Kevin: And for physical security testing, I've got something special.
|
||||
|
||||
-> offer_tools
|
||||
|
||||
// ================================================
|
||||
// COMMISERATION
|
||||
// KEVIN STRESS
|
||||
// ================================================
|
||||
|
||||
=== commiseration ===
|
||||
Kevin: Yeah, it's just me. Budget constraints, you know?
|
||||
=== kevin_stress ===
|
||||
Kevin: Yeah, it's been a rough few months.
|
||||
|
||||
Kevin: They'd rather spend on marketing than IT security. Classic mistake.
|
||||
Kevin: Ever since Patricia got fired, things have felt... off.
|
||||
|
||||
+ [That's unfortunately common]
|
||||
~ influence += 2
|
||||
Kevin: Tell me about it. Anyway, what can I help you with?
|
||||
Kevin: She was investigating something. Asking questions about Derek's projects.
|
||||
|
||||
Kevin: Now she's gone and nobody will tell me why.
|
||||
|
||||
+ [What was she investigating?]
|
||||
~ warned_about_derek = true
|
||||
Kevin: I don't know exactly. Something about Derek's "external partners."
|
||||
Kevin: She kept her notes in her office safe. I think her briefcase is still in there too.
|
||||
-> offer_tools
|
||||
+ [Let's focus on the audit]
|
||||
Kevin: Right. Sorry. Let me get you set up.
|
||||
-> offer_tools
|
||||
|
||||
// ================================================
|
||||
// OFFER TOOLS
|
||||
// ================================================
|
||||
|
||||
=== offer_tools ===
|
||||
Kevin: Okay, so for the audit I can give you:
|
||||
|
||||
Kevin: First, a lockpick set. I bought it for when people lock themselves out, but it's useful for testing physical security.
|
||||
|
||||
Kevin: Second, my server room keycard. You'll need it to access the main servers.
|
||||
|
||||
Kevin: And some notes on password patterns people use around here. Should help with the technical testing.
|
||||
|
||||
+ [I'll take all of it]
|
||||
~ given_lockpick = true
|
||||
~ given_keycard = true
|
||||
~ given_password_hints = true
|
||||
~ influence += 3
|
||||
#give_item:lockpick
|
||||
#give_item:keycard
|
||||
#give_item:notes
|
||||
Kevin: Here you go. The lockpicks work on most of the older locks around here.
|
||||
Kevin: The server room is through Derek's office—there's a door on the east side.
|
||||
Kevin: Just... be careful, okay? Something's not right here.
|
||||
-> hub
|
||||
+ [Well, I'm here to help now]
|
||||
~ influence += 1
|
||||
+ [Just the keycard for now]
|
||||
~ given_keycard = true
|
||||
#give_item:keycard
|
||||
Kevin: Sure. Server room is through Derek's office. Let me know if you need anything else.
|
||||
-> hub
|
||||
|
||||
// ================================================
|
||||
// OFFER LOCKPICK
|
||||
// ================================================
|
||||
|
||||
=== offer_lockpick ===
|
||||
{not given_lockpick:
|
||||
Kevin: I've got a lockpick set in my desk. Bought it for when people lock themselves out.
|
||||
Kevin: You should use it to test our physical locks. See how easy it is to bypass security.
|
||||
+ [That would be very useful]
|
||||
~ given_lockpick = true
|
||||
~ influence += 3
|
||||
#give_item:lockpick
|
||||
#complete_task:receive_lockpick
|
||||
Kevin: Here. Just... officially you're testing security. Unofficially, try not to break anything.
|
||||
Kevin: Storage closet is a good place to practice. Simple lock, nothing valuable inside.
|
||||
-> hub
|
||||
+ [I'll stick to my authorized access for now]
|
||||
~ influence -= 1
|
||||
Kevin: Your call. Offer stands if you change your mind.
|
||||
-> hub
|
||||
}
|
||||
{given_lockpick:
|
||||
Kevin: You already have the lockpick. Go test those locks!
|
||||
-> hub
|
||||
}
|
||||
|
||||
// ================================================
|
||||
// CONVERSATION HUB
|
||||
// ================================================
|
||||
|
||||
=== hub ===
|
||||
+ {not asked_about_passwords and influence >= 3} [Can you tell me about password policies here?]
|
||||
+ {not given_lockpick} [About those lockpicks...]
|
||||
-> get_lockpicks
|
||||
+ {not given_keycard} [I need the server room keycard]
|
||||
-> get_keycard
|
||||
+ {not asked_about_passwords and influence >= 2} [Tell me about password security here]
|
||||
-> ask_passwords
|
||||
+ {not asked_about_derek and influence >= 4} [Anyone using weak security I should know about?]
|
||||
-> ask_weak_security
|
||||
+ {not discussed_server_room} [Tell me about the server room setup]
|
||||
-> ask_server_room
|
||||
+ {influence >= 6 and not can_clone_card} [I'll need to test RFID security. Can I clone your card?]
|
||||
-> request_card_clone
|
||||
+ {not given_lockpick and discussed_audit and influence >= 8} [About that lockpick...]
|
||||
-> offer_lockpick
|
||||
+ [I'll keep working. Thanks for the help]
|
||||
+ {not asked_about_derek and influence >= 3} [What else can you tell me about Derek?]
|
||||
-> ask_about_derek
|
||||
+ [I'll keep investigating. Thanks for the help.]
|
||||
#exit_conversation
|
||||
Kevin: No problem. Let me know if you find anything scary.
|
||||
Kevin: No problem. And seriously—if you find anything, let me know. I need to know I'm not going crazy.
|
||||
-> hub
|
||||
|
||||
// ================================================
|
||||
// GET LOCKPICKS
|
||||
// ================================================
|
||||
|
||||
=== get_lockpicks ===
|
||||
~ given_lockpick = true
|
||||
#give_item:lockpick
|
||||
|
||||
Kevin: Here's the lockpick set. It's professional grade.
|
||||
|
||||
Kevin: Most of the older locks in the building are vulnerable. Good for testing security.
|
||||
|
||||
Kevin: Patricia's office has an old briefcase she left behind. You might be able to pick that open if you're curious what she was working on.
|
||||
|
||||
-> hub
|
||||
|
||||
// ================================================
|
||||
// GET KEYCARD
|
||||
// ================================================
|
||||
|
||||
=== get_keycard ===
|
||||
~ given_keycard = true
|
||||
#give_item:keycard
|
||||
|
||||
Kevin: Here's my server room keycard.
|
||||
|
||||
Kevin: The server room is through Derek's office—there's a connecting door on the east wall.
|
||||
|
||||
Kevin: The servers hold everything. If there's evidence of unauthorized activity, that's where you'll find it.
|
||||
|
||||
-> hub
|
||||
|
||||
// ================================================
|
||||
// ASK ABOUT PASSWORDS
|
||||
// ================================================
|
||||
|
||||
=== ask_passwords ===
|
||||
~ asked_about_passwords = true
|
||||
~ given_password_hints = true
|
||||
~ influence += 1
|
||||
#give_item:notes
|
||||
|
||||
Kevin: Official policy is 12 characters, mixed case, numbers, symbols. We enforce it on domain accounts.
|
||||
Kevin: Password security here is... not great.
|
||||
|
||||
Kevin: Reality? People use patterns to remember them.
|
||||
Kevin: I enforce complexity requirements on domain accounts, but people find patterns.
|
||||
|
||||
+ [What kind of patterns?]
|
||||
~ given_password_hints = true
|
||||
~ influence += 1
|
||||
#complete_task:gather_password_hints
|
||||
-> password_patterns
|
||||
+ [That's pretty standard]
|
||||
Kevin: Company name plus numbers. Birthdays. Anniversary dates.
|
||||
|
||||
Kevin: Derek uses his birthday or anniversary in everything. April 19th. Makes his passwords easy to guess.
|
||||
|
||||
+ [0419?]
|
||||
~ influence += 2
|
||||
Kevin: Yeah. I've told him it's a security risk but he doesn't listen.
|
||||
Kevin: Here, I wrote down the common patterns people use. Might help with the audit.
|
||||
-> hub
|
||||
|
||||
=== password_patterns ===
|
||||
Kevin: Company name plus numbers. Birth years. "Marketing123" type stuff.
|
||||
|
||||
Kevin: Derek uses his birthday in passwords. I've seen his sticky notes.
|
||||
|
||||
Kevin: Maya from accounting uses "Campaign" plus the year. Same password for everything.
|
||||
|
||||
+ [That's... not great security]
|
||||
~ influence += 1
|
||||
Kevin: Tell me about it. That's why we need this audit.
|
||||
Kevin: Maybe your report will convince them to take password security seriously.
|
||||
+ [That's useful, thanks]
|
||||
-> hub
|
||||
|
||||
// ================================================
|
||||
// ASK ABOUT WEAK SECURITY
|
||||
// ASK ABOUT DEREK
|
||||
// ================================================
|
||||
|
||||
=== ask_weak_security ===
|
||||
=== ask_about_derek ===
|
||||
~ asked_about_derek = true
|
||||
~ influence += 1
|
||||
|
||||
Kevin: Derek's the worst offender, honestly. Senior marketing guy.
|
||||
Kevin: Derek's been here about 18 months. Senior Marketing Manager.
|
||||
|
||||
Kevin: He requested "enhanced privacy" for his office systems. Made me set up separate network segments.
|
||||
Kevin: At first he seemed normal. Then he started requesting "enhanced privacy" for his systems.
|
||||
|
||||
+ [That's unusual]
|
||||
Kevin: Wanted separate network segments, encrypted communications, locked office at all times.
|
||||
|
||||
Kevin: Said it was for "client confidentiality" but... marketing doesn't need that level of security.
|
||||
|
||||
+ [What do you think he's really doing?]
|
||||
Kevin: I don't know. But whatever it is, it's not marketing.
|
||||
Kevin: He's been meeting with external people—calls them "partners."
|
||||
Kevin: I saw notes once that mentioned something called "Operation Shatter."
|
||||
~ influence += 2
|
||||
Kevin: Right? He says it's for client confidentiality, but the segmentation is weird.
|
||||
Kevin: And I've caught him in the server room twice. Said he was "checking campaign servers."
|
||||
-> derek_server_access
|
||||
+ [Maybe he handles sensitive client data?]
|
||||
Kevin: Maybe. But it still seems excessive.
|
||||
-> hub
|
||||
|
||||
=== derek_server_access ===
|
||||
Kevin: The thing is, there are no "campaign servers" in our server room.
|
||||
|
||||
Kevin: We use cloud hosting for everything client-facing.
|
||||
|
||||
+ [So what was he really doing?]
|
||||
~ influence += 2
|
||||
Kevin: I don't know. But you're auditing security—might want to check his systems.
|
||||
Kevin: His office is usually locked when he's not there, though.
|
||||
+ [Maybe he's just paranoid]
|
||||
Kevin: Maybe. But Patricia didn't think so. And now she's gone.
|
||||
-> hub
|
||||
+ [I'll look into it]
|
||||
~ influence += 1
|
||||
-> hub
|
||||
|
||||
// ================================================
|
||||
// ASK ABOUT SERVER ROOM
|
||||
// ================================================
|
||||
|
||||
=== ask_server_room ===
|
||||
~ discussed_server_room = true
|
||||
~ influence += 1
|
||||
#unlock_task:access_server_room
|
||||
|
||||
Kevin: Standard setup. Internal servers, network equipment, some legacy systems.
|
||||
|
||||
Kevin: Access is RFID controlled. I'm the only one with a card besides management.
|
||||
|
||||
+ [What about testing RFID security?]
|
||||
~ can_clone_card = true
|
||||
Kevin: Good point. You should probably test if our cards can be cloned.
|
||||
-> hub
|
||||
+ [I'll need access for the audit]
|
||||
Kevin: Yeah, about that... I can give you my card, or you could test our RFID security by cloning it?
|
||||
~ can_clone_card = true
|
||||
-> hub
|
||||
|
||||
// ================================================
|
||||
// REQUEST CARD CLONE
|
||||
// ================================================
|
||||
|
||||
=== request_card_clone ===
|
||||
{can_clone_card:
|
||||
Kevin: Yeah, good idea to test that. RFID security is important.
|
||||
Kevin: Here, you can use my card to clone onto a blank. Standard security test.
|
||||
~ influence += 2
|
||||
#complete_task:clone_kevin_card
|
||||
#give_item:rfid_cloner
|
||||
Kevin: Just make sure to document this in your report. We need to know if our access system is vulnerable.
|
||||
-> hub
|
||||
- else:
|
||||
Kevin: Hmm, I'm not sure about that. Let me think about it.
|
||||
-> hub
|
||||
}
|
||||
|
||||
File diff suppressed because one or more lines are too long
@@ -1,29 +1,32 @@
|
||||
// ================================================
|
||||
// Mission 1: First Contact - Maya Chen (Office Worker)
|
||||
// Act 2: In-Person NPC (Optional)
|
||||
// Provides office gossip and Derek intelligence
|
||||
// Mission 1: First Contact - Maya Chen (Informant)
|
||||
// Located in Maya's Office
|
||||
// She is the informant who contacted SAFETYNET
|
||||
// ================================================
|
||||
|
||||
VAR influence = 0
|
||||
VAR met_maya = false
|
||||
VAR asked_about_derek = false
|
||||
VAR asked_about_office = false
|
||||
VAR asked_about_late_nights = false
|
||||
VAR revealed_informant = false
|
||||
VAR warned_about_derek = false
|
||||
VAR discussed_operation = false
|
||||
VAR asked_about_patricia = false
|
||||
|
||||
// ================================================
|
||||
// START: FIRST MEETING
|
||||
// ================================================
|
||||
|
||||
=== start ===
|
||||
#set_variable:talked_to_maya=true
|
||||
#complete_task:talk_to_maya
|
||||
{not met_maya:
|
||||
~ met_maya = true
|
||||
~ influence += 1
|
||||
Maya: Oh, hi! You're the IT auditor, right? I'm Maya.
|
||||
Maya: Taking a coffee break. This job is way too stressful sometimes.
|
||||
~ influence += 2
|
||||
Maya: *looks up nervously* Oh! You startled me.
|
||||
Maya: You're the... IT contractor, right? The security auditor?
|
||||
-> first_meeting
|
||||
}
|
||||
{met_maya:
|
||||
Maya: Hey again. Need anything?
|
||||
Maya: *glances at door* Is it safe to talk?
|
||||
-> hub
|
||||
}
|
||||
|
||||
@@ -32,13 +35,109 @@ VAR asked_about_late_nights = false
|
||||
// ================================================
|
||||
|
||||
=== first_meeting ===
|
||||
+ [Nice to meet you. What do you do here?]
|
||||
+ [That's right. I'm reviewing security systems]
|
||||
Maya: *studies your face carefully*
|
||||
Maya: Are you really here for a security audit? Or are you here because of my message?
|
||||
-> reveal_check
|
||||
+ [You seem nervous]
|
||||
~ influence += 1
|
||||
Maya: Marketing coordinator. Basically, I make sure campaigns run on schedule.
|
||||
Maya: Which means a lot of late nights when Derek decides to change everything last minute.
|
||||
Maya: I have reason to be. Things aren't what they seem here.
|
||||
-> reveal_check
|
||||
|
||||
// ================================================
|
||||
// REVEAL CHECK
|
||||
// ================================================
|
||||
|
||||
=== reveal_check ===
|
||||
+ [What message?]
|
||||
Maya: The tip. To SAFETYNET. About Operation Shatter.
|
||||
Maya: *pauses* If you don't know what I'm talking about, forget I said anything.
|
||||
+ + [I'm from SAFETYNET]
|
||||
~ revealed_informant = true
|
||||
~ influence += 5
|
||||
Maya: *visible relief* Thank god. I was starting to think no one would come.
|
||||
-> informant_reveal
|
||||
+ + [Tell me more about this operation]
|
||||
~ influence += 2
|
||||
Maya: Only if you're here to stop it. People are going to die.
|
||||
-> operation_details
|
||||
+ [SAFETYNET sent me]
|
||||
~ revealed_informant = true
|
||||
~ influence += 5
|
||||
Maya: *exhales* Finally. I've been waiting for weeks.
|
||||
-> informant_reveal
|
||||
|
||||
// ================================================
|
||||
// INFORMANT REVEAL
|
||||
// ================================================
|
||||
|
||||
=== informant_reveal ===
|
||||
Maya: I'm the one who contacted you. The anonymous tip.
|
||||
|
||||
Maya: I was hired as a content analyst. I thought we were doing marketing.
|
||||
|
||||
Maya: Then I started seeing the target lists. The psychological profiles. The projected casualties.
|
||||
|
||||
Maya: They're planning to kill people. On purpose. They call it "Operation Shatter."
|
||||
|
||||
+ [Tell me everything]
|
||||
~ discussed_operation = true
|
||||
-> operation_details
|
||||
+ [Who's behind it?]
|
||||
~ warned_about_derek = true
|
||||
-> derek_intel
|
||||
|
||||
// ================================================
|
||||
// OPERATION DETAILS
|
||||
// ================================================
|
||||
|
||||
=== operation_details ===
|
||||
~ discussed_operation = true
|
||||
|
||||
Maya: Operation Shatter is a coordinated disinformation attack.
|
||||
|
||||
Maya: They've profiled over two million people. Diabetics, elderly, people with anxiety disorders.
|
||||
|
||||
Maya: The plan is to send fake emergency messages—hospital closures, bank failures, government alerts.
|
||||
|
||||
Maya: The panic will cause deaths. Heart attacks, missed medications, accidents.
|
||||
|
||||
Maya: They've calculated it: 42 to 85 people will die in the first 24 hours.
|
||||
|
||||
+ [And they're okay with that?]
|
||||
Maya: Derek—he's the one running it—he calls it "education."
|
||||
Maya: Says the deaths will teach people not to trust digital communications.
|
||||
Maya: He's insane. But he believes every word.
|
||||
-> hub
|
||||
+ [Stressful how?]
|
||||
Maya: Oh, just the usual. Tight deadlines, demanding clients, coworkers who work weird hours.
|
||||
+ [When does it launch?]
|
||||
Maya: Sunday. 6 AM. That's when the messages go out.
|
||||
Maya: You have three days to stop it.
|
||||
-> hub
|
||||
|
||||
// ================================================
|
||||
// DEREK INTEL
|
||||
// ================================================
|
||||
|
||||
=== derek_intel ===
|
||||
~ warned_about_derek = true
|
||||
|
||||
Maya: Derek Lawson. Senior Marketing Manager. But he's not really marketing.
|
||||
|
||||
Maya: He's ENTROPY. Part of a cell called "Social Fabric."
|
||||
|
||||
Maya: He reports to someone called "The Architect." I've seen the emails.
|
||||
|
||||
Maya: Derek's the operations lead. He built the target lists, wrote the fake messages, coordinated with their technical people.
|
||||
|
||||
+ [Where's the evidence?]
|
||||
Maya: His office. His computer has the contingency plans.
|
||||
Maya: His filing cabinet has the casualty projections. The code is his birthday—0419.
|
||||
Maya: And the server room has the target database. Kevin has the keycard.
|
||||
-> hub
|
||||
+ [What about the others here?]
|
||||
Maya: Kevin's innocent. He's suspicious of Derek but doesn't know the full picture.
|
||||
Maya: Sarah just works reception. She doesn't know anything.
|
||||
Maya: Patricia—the old manager—she figured it out. That's why they fired her.
|
||||
-> hub
|
||||
|
||||
// ================================================
|
||||
@@ -46,119 +145,73 @@ VAR asked_about_late_nights = false
|
||||
// ================================================
|
||||
|
||||
=== hub ===
|
||||
+ {not asked_about_office} [What's the office culture like here?]
|
||||
-> ask_office_culture
|
||||
+ {not asked_about_derek} [You mentioned someone named Derek?]
|
||||
-> ask_about_derek
|
||||
+ {asked_about_derek and not asked_about_late_nights} [Tell me more about Derek's late nights]
|
||||
-> ask_late_nights
|
||||
+ [I should get back to work]
|
||||
+ {not discussed_operation} [Tell me about Operation Shatter]
|
||||
-> operation_details
|
||||
+ {not warned_about_derek} [What can you tell me about Derek?]
|
||||
-> derek_intel
|
||||
+ {not asked_about_patricia} [What happened to Patricia?]
|
||||
-> patricia_story
|
||||
+ {revealed_informant} [What should I do first?]
|
||||
-> tactical_advice
|
||||
+ [I need to keep investigating]
|
||||
#exit_conversation
|
||||
Maya: Sure, good luck with the audit!
|
||||
Maya: Be careful. Derek's paranoid. If he suspects you're onto him, he has a plan to frame Kevin for everything.
|
||||
Maya: I've seen the contingency files. Check Derek's computer.
|
||||
-> hub
|
||||
|
||||
// ================================================
|
||||
// ASK ABOUT OFFICE CULTURE
|
||||
// PATRICIA STORY
|
||||
// ================================================
|
||||
|
||||
=== ask_office_culture ===
|
||||
~ asked_about_office = true
|
||||
~ influence += 1
|
||||
=== patricia_story ===
|
||||
~ asked_about_patricia = true
|
||||
|
||||
Maya: It's pretty casual. Most people are friendly, collaborative.
|
||||
Maya: Patricia Wells. She was our department manager.
|
||||
|
||||
Maya: Except for the few who treat this place like it's CIA headquarters. Locked offices, private meetings, "need to know" attitudes.
|
||||
Maya: She noticed Derek's weird behavior. The late nights, the encrypted calls.
|
||||
|
||||
+ [Who's like that?]
|
||||
~ influence += 1
|
||||
-> secretive_people
|
||||
+ [That's interesting]
|
||||
Maya: She started investigating. Kept notes in her office safe.
|
||||
|
||||
Maya: One day HR called her in. "Performance issues." She was gone within an hour.
|
||||
|
||||
Maya: They didn't even let her take her briefcase. It's still in her office.
|
||||
|
||||
+ [What's in the briefcase?]
|
||||
Maya: Her investigation notes, I think. A timeline of how ENTROPY infiltrated the company.
|
||||
Maya: The office is unlocked, but the briefcase is locked. Patricia took the key with her.
|
||||
Maya: If you can pick the lock, there might be useful information inside.
|
||||
-> hub
|
||||
|
||||
=== secretive_people ===
|
||||
Maya: Mainly Derek. He's all about "client confidentiality" and "strategic advantage."
|
||||
|
||||
Maya: I get it—marketing is competitive. But sometimes it feels excessive.
|
||||
|
||||
-> hub
|
||||
|
||||
// ================================================
|
||||
// ASK ABOUT DEREK
|
||||
// ================================================
|
||||
|
||||
=== ask_about_derek ===
|
||||
~ asked_about_derek = true
|
||||
~ influence += 1
|
||||
|
||||
Maya: Derek Lawson. Senior Marketing Manager. My direct supervisor.
|
||||
|
||||
Maya: Smart guy, good at his job. But he's... intense. Always working, always on his phone with "strategic partners."
|
||||
|
||||
+ [How long has he been here?]
|
||||
-> derek_timeline
|
||||
+ [Is he good to work for?]
|
||||
-> derek_as_boss
|
||||
|
||||
=== derek_timeline ===
|
||||
~ influence += 1
|
||||
|
||||
Maya: About three months. He came in and immediately started restructuring everything.
|
||||
|
||||
Maya: Brought in new clients, new processes, new security protocols for the marketing department.
|
||||
|
||||
+ [New security protocols?]
|
||||
~ influence += 2
|
||||
#complete_task:interview_maya
|
||||
Maya: Yeah, insisted on encrypted communications, locked file servers, access controls.
|
||||
Maya: Kevin had to set up a whole separate network segment for Derek's "sensitive client data."
|
||||
-> hub
|
||||
+ [Sounds like a go-getter]
|
||||
Maya: Sure. If you like your boss being in the office until midnight every night.
|
||||
-> hub
|
||||
|
||||
=== derek_as_boss ===
|
||||
~ influence += 1
|
||||
|
||||
Maya: He's fine, I guess. Expects a lot, but that's not unusual.
|
||||
|
||||
Maya: What's weird is how secretive he is. Won't let anyone access his files or his office.
|
||||
|
||||
+ [That does seem excessive]
|
||||
~ influence += 1
|
||||
-> hub
|
||||
+ [Maybe he's protecting client information]
|
||||
Maya: Maybe. But we all handle client information. He's the only one with a locked office.
|
||||
+ [That's suspicious timing]
|
||||
Maya: Derek arranged it. I saw emails between him and HR.
|
||||
Maya: Anyone who gets too close gets removed.
|
||||
-> hub
|
||||
|
||||
// ================================================
|
||||
// ASK ABOUT LATE NIGHTS
|
||||
// TACTICAL ADVICE
|
||||
// ================================================
|
||||
|
||||
=== ask_late_nights ===
|
||||
~ asked_about_late_nights = true
|
||||
~ influence += 2
|
||||
=== tactical_advice ===
|
||||
Maya: Okay, here's what you need:
|
||||
|
||||
Maya: He's here every night, super late. Says he's coordinating with clients in different time zones.
|
||||
Maya: First, get into Derek's office. His spare key is in Patricia's old safe—she kept a copy.
|
||||
|
||||
Maya: But I've walked past his office and heard him talking about things that don't sound like marketing.
|
||||
Maya: The safe code is 0419. Derek's anniversary. He uses it for everything.
|
||||
|
||||
+ [What kind of things?]
|
||||
-> suspicious_conversations
|
||||
+ [Like what?]
|
||||
-> suspicious_conversations
|
||||
Maya: Second, check Derek's computer. The contingency plan to frame Kevin is right there.
|
||||
|
||||
=== suspicious_conversations ===
|
||||
~ influence += 2
|
||||
Maya: Third, open his filing cabinet. Same code—0419. That's where the casualty projections are.
|
||||
|
||||
Maya: "Infrastructure targeting." "Phase 3 timeline." "Network mapping."
|
||||
Maya: Fourth, get into the server room. Kevin has the keycard. The target database is there.
|
||||
|
||||
Maya: I figured it was some kind of new technical marketing strategy. But it sounded... I don't know, weird?
|
||||
Maya: And if you can pick the lock on Patricia's briefcase, there's a timeline showing how long ENTROPY has been planning this.
|
||||
|
||||
+ [That's definitely unusual]
|
||||
~ influence += 2
|
||||
Maya: Right? I thought about asking him, but he gets defensive when you question his methods.
|
||||
Maya: Anyway, probably nothing. I watch too many spy movies.
|
||||
+ [That's a lot to do]
|
||||
Maya: Operation Shatter launches Sunday. We don't have much time.
|
||||
Maya: Oh, and there are VM systems in the server room. The attack infrastructure.
|
||||
Maya: You'll need to collect evidence from there too. Submit any flags you find to prove we were inside their systems.
|
||||
-> hub
|
||||
+ [Probably just marketing jargon]
|
||||
Maya: Yeah, you're probably right. Still weird though.
|
||||
+ [I'll get started]
|
||||
#exit_conversation
|
||||
Maya: Good luck. And... thank you. For coming.
|
||||
Maya: I was starting to think no one cared about stopping this.
|
||||
-> hub
|
||||
|
||||
File diff suppressed because one or more lines are too long
@@ -1,15 +1,16 @@
|
||||
// ================================================
|
||||
// Mission 1: First Contact - Sarah Martinez (Receptionist)
|
||||
// Act 2: In-Person NPC
|
||||
// Entry point, provides visitor badge and basic intel
|
||||
// Entry point NPC - provides badge and main office key
|
||||
// ================================================
|
||||
|
||||
VAR influence = 0
|
||||
VAR met_sarah = false
|
||||
VAR has_badge = false
|
||||
VAR has_office_key = false
|
||||
VAR asked_about_derek = false
|
||||
VAR asked_about_office = false
|
||||
VAR asked_about_kevin = false
|
||||
VAR asked_about_manager = false
|
||||
|
||||
// ================================================
|
||||
// START: FIRST MEETING
|
||||
@@ -20,7 +21,7 @@ VAR asked_about_kevin = false
|
||||
~ met_sarah = true
|
||||
~ influence += 2
|
||||
Sarah: Hi! You must be the IT contractor. I'm Sarah, the receptionist.
|
||||
Sarah: Let me get you checked in.
|
||||
Sarah: Let me get you checked in for the security audit.
|
||||
-> first_checkin
|
||||
}
|
||||
{met_sarah:
|
||||
@@ -35,25 +36,40 @@ VAR asked_about_kevin = false
|
||||
=== first_checkin ===
|
||||
+ [Thanks. I'm here to audit your network security]
|
||||
~ influence += 1
|
||||
Sarah: Oh good! Kevin mentioned you'd be coming.
|
||||
Sarah: Let me print your visitor badge.
|
||||
-> receive_badge
|
||||
Sarah: Oh good! Kevin mentioned you'd be coming. He's been asking for a security review for months.
|
||||
-> receive_items
|
||||
+ [Just point me to IT and I'll get started]
|
||||
Sarah: Sure thing. Let me get your badge first.
|
||||
-> receive_badge
|
||||
Sarah: Sure thing. Let me get you set up first.
|
||||
-> receive_items
|
||||
|
||||
// ================================================
|
||||
// RECEIVE BADGE
|
||||
// RECEIVE BADGE AND KEY
|
||||
// ================================================
|
||||
|
||||
=== receive_badge ===
|
||||
=== receive_items ===
|
||||
~ has_badge = true
|
||||
~ has_office_key = true
|
||||
#give_item:id_badge
|
||||
#complete_task:meet_reception
|
||||
#give_item:key
|
||||
#complete_task:check_in_reception
|
||||
|
||||
Sarah: Here you go. This gets you into public areas.
|
||||
Sarah: Here's your visitor badge and a key for the main office area.
|
||||
|
||||
Sarah: Restricted areas need keycard access or you'll need to ask Kevin.
|
||||
Sarah: The office door is usually locked during audits—confidentiality protocols, you know.
|
||||
|
||||
Sarah: Kevin should be in the IT room. It's through the main office, on the east side.
|
||||
|
||||
+ [Where exactly is the IT room?]
|
||||
-> ask_it_location
|
||||
+ [Thanks, I'll head in]
|
||||
-> hub
|
||||
|
||||
=== ask_it_location ===
|
||||
Sarah: Go through the main office, then look for the door marked "IT" on the east wall.
|
||||
|
||||
Sarah: The IT room has a keypad lock. Kevin's the one who knows the code.
|
||||
|
||||
Sarah: Actually, I think there's a maintenance checklist somewhere in the main office with the codes. Kevin keeps forgetting them.
|
||||
|
||||
-> hub
|
||||
|
||||
@@ -62,98 +78,99 @@ Sarah: Restricted areas need keycard access or you'll need to ask Kevin.
|
||||
// ================================================
|
||||
|
||||
=== hub ===
|
||||
+ {not asked_about_kevin} [Where can I find Kevin?]
|
||||
-> ask_kevin_location
|
||||
+ {not asked_about_office} [Can you tell me about the office layout?]
|
||||
+ {not asked_about_kevin} [Tell me about Kevin]
|
||||
-> ask_kevin
|
||||
+ {not asked_about_office} [What's the office layout like?]
|
||||
-> ask_office_layout
|
||||
+ {not asked_about_derek and influence >= 3} [Anyone working late I should know about?]
|
||||
-> ask_late_workers
|
||||
+ {not asked_about_derek and influence >= 3} [Anyone else I should know about?]
|
||||
-> ask_about_staff
|
||||
+ {not asked_about_manager} [I noticed the manager's office is vacant?]
|
||||
-> ask_about_manager
|
||||
+ [Thanks, I'll get started]
|
||||
#exit_conversation
|
||||
Sarah: Good luck with the audit!
|
||||
Sarah: Good luck with the audit! Let me know if you need anything.
|
||||
-> hub
|
||||
|
||||
// ================================================
|
||||
// ASK ABOUT KEVIN
|
||||
// ================================================
|
||||
|
||||
=== ask_kevin_location ===
|
||||
=== ask_kevin ===
|
||||
~ asked_about_kevin = true
|
||||
~ influence += 1
|
||||
|
||||
Sarah: Kevin's desk is in the main office area—can't miss it. Covered in monitors and coffee cups.
|
||||
Sarah: Kevin's our IT manager. Really nice guy, kind of overworked.
|
||||
|
||||
Sarah: He's usually there this time of day.
|
||||
Sarah: He's been worried about security lately. Says someone's been accessing servers without authorization.
|
||||
|
||||
+ [What's he like?]
|
||||
-> kevin_personality
|
||||
+ [Thanks]
|
||||
+ [Who would do that?]
|
||||
Sarah: I don't know. He mentioned it to management but nothing happened.
|
||||
Sarah: He seems stressed about it. Maybe you can help him figure it out.
|
||||
-> hub
|
||||
+ [I'll talk to him]
|
||||
-> hub
|
||||
|
||||
=== kevin_personality ===
|
||||
~ influence += 1
|
||||
|
||||
Sarah: Super helpful, kind of overworked. The company relies on him way too much.
|
||||
|
||||
Sarah: He'll appreciate having someone competent help out.
|
||||
|
||||
-> hub
|
||||
|
||||
// ================================================
|
||||
// ASK ABOUT OFFICE
|
||||
// ASK ABOUT OFFICE LAYOUT
|
||||
// ================================================
|
||||
|
||||
=== ask_office_layout ===
|
||||
~ asked_about_office = true
|
||||
~ influence += 1
|
||||
|
||||
Sarah: Main office is through there—hot-desking setup. Conference room on the west side, break room to the east.
|
||||
Sarah: Main office is through that door—open plan with desks for the team.
|
||||
|
||||
Sarah: Server room is behind main office, but you'll need Kevin's access for that.
|
||||
Sarah: Around the edges you've got:
|
||||
Sarah: • IT room on the east (where Kevin hangs out)
|
||||
Sarah: • Conference room also on the east
|
||||
Sarah: • Storage closet and break room on the west
|
||||
Sarah: • Private offices on the north—Derek, Maya, and the vacant manager's office
|
||||
|
||||
+ [What about executive offices?]
|
||||
-> ask_executive_offices
|
||||
+ [Lots of private offices]
|
||||
Sarah: Yeah, the senior staff each have their own space. Derek especially values his privacy.
|
||||
-> hub
|
||||
+ [Got it, thanks]
|
||||
-> hub
|
||||
|
||||
=== ask_executive_offices ===
|
||||
~ influence += 1
|
||||
|
||||
Sarah: Derek's office is off the main area—he's our Senior Marketing Manager. Usually locks his door when he's out.
|
||||
|
||||
Sarah: Most people just have desk space, but Derek got an office because of client confidentiality stuff.
|
||||
|
||||
-> hub
|
||||
|
||||
// ================================================
|
||||
// ASK ABOUT LATE WORKERS
|
||||
// ASK ABOUT STAFF
|
||||
// ================================================
|
||||
|
||||
=== ask_late_workers ===
|
||||
=== ask_about_staff ===
|
||||
~ asked_about_derek = true
|
||||
~ influence += 1
|
||||
|
||||
Sarah: Derek's usually here late. Like, really late. Sometimes I leave at 6 and he's still working.
|
||||
Sarah: Well, there's Derek Lawson—Senior Marketing Manager. He's... intense.
|
||||
|
||||
Sarah: He says it's because of client timezones, but...
|
||||
Sarah: Works late a lot. Like, really late. Sometimes I see his access logs from after midnight.
|
||||
|
||||
+ [But what?]
|
||||
-> derek_suspicion
|
||||
+ [Dedication, I guess]
|
||||
-> hub
|
||||
|
||||
=== derek_suspicion ===
|
||||
~ influence += 2
|
||||
|
||||
Sarah: I don't know. It just seems weird, you know? He's marketing, not IT.
|
||||
|
||||
Sarah: And I've seen him in the server room a couple times. Told me he was checking on campaign servers.
|
||||
|
||||
+ [That does seem odd]
|
||||
+ [That seems unusual]
|
||||
~ influence += 1
|
||||
#unlock_task:investigate_derek
|
||||
Sarah: Right? But I'm just the receptionist. What do I know?
|
||||
Sarah: Yeah. He says it's for client calls in different time zones, but...
|
||||
Sarah: I don't know. Something about him makes me uncomfortable.
|
||||
-> hub
|
||||
+ [Maybe he's just thorough]
|
||||
Sarah: Maybe. Anyway, Kevin would know more about the technical stuff.
|
||||
+ [Some people are just dedicated]
|
||||
Sarah: Maybe. Anyway, Maya Chen is nice. Content analyst. She's been here about a year.
|
||||
-> hub
|
||||
|
||||
// ================================================
|
||||
// ASK ABOUT MANAGER
|
||||
// ================================================
|
||||
|
||||
=== ask_about_manager ===
|
||||
~ asked_about_manager = true
|
||||
~ influence += 1
|
||||
|
||||
Sarah: Oh, that was Patricia's office. She was our department manager.
|
||||
|
||||
Sarah: She got fired about a month ago. Really sudden. "Performance issues" they said.
|
||||
|
||||
+ [That sounds suspicious]
|
||||
~ influence += 2
|
||||
Sarah: Between us? Patricia was asking questions about Derek's projects.
|
||||
Sarah: Next thing you know, HR calls her in and she's gone.
|
||||
Sarah: Her briefcase is still in there. They escorted her out so fast she couldn't take everything.
|
||||
-> hub
|
||||
+ [These things happen]
|
||||
Sarah: I guess. Her office has been empty since. It's kind of creepy.
|
||||
-> hub
|
||||
|
||||
File diff suppressed because one or more lines are too long
@@ -2,13 +2,17 @@
|
||||
// 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
|
||||
// ================================================
|
||||
|
||||
// Variables for tracking player choices
|
||||
VAR player_approach = "" // cautious, confident, adaptable
|
||||
// Variables for tracking what player asked about (affects debrief)
|
||||
VAR asked_about_stakes = false
|
||||
VAR asked_about_entropy = false
|
||||
VAR asked_about_cover = 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
|
||||
|
||||
// External variables
|
||||
@@ -21,12 +25,11 @@ 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.
|
||||
Agent 0x99: We have a situation developing at Viral Dynamics Media. And it's worse than we initially thought.
|
||||
|
||||
+ [What's the situation?]
|
||||
-> briefing_threat
|
||||
+ [I'm ready. What's the mission?]
|
||||
~ player_approach = "confident"
|
||||
-> briefing_threat
|
||||
+ [How urgent is this?]
|
||||
~ asked_about_stakes = true
|
||||
@@ -37,29 +40,166 @@ Agent 0x99: We have a situation developing at Viral Dynamics Media.
|
||||
// ================================================
|
||||
|
||||
=== urgency_explanation ===
|
||||
Agent 0x99: ENTROPY's Social Fabric cell is operating inside Viral Dynamics right now.
|
||||
Agent 0x99: We're 72 hours from a mass casualty event.
|
||||
|
||||
Agent 0x99: They're running disinformation campaigns targeting the upcoming election.
|
||||
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."
|
||||
|
||||
-> briefing_threat
|
||||
|
||||
// ================================================
|
||||
// THREAT BRIEFING
|
||||
// THREAT BRIEFING - OPERATION SHATTER
|
||||
// ================================================
|
||||
|
||||
=== briefing_threat ===
|
||||
Agent 0x99: Social Fabric specializes in information manipulation—narrative control, social engineering at scale.
|
||||
Agent 0x99: Three weeks ago, our AI flagged something bigger than election interference.
|
||||
|
||||
Agent 0x99: They've infiltrated Viral Dynamics as employees. We don't know how many operatives, but we've identified at least one.
|
||||
Agent 0x99: Social Fabric has spent three months collecting psychological profiles. Detailed vulnerability assessments on over two million people in the region.
|
||||
|
||||
+ [Who's the target operative?]
|
||||
+ [What kind of profiles?]
|
||||
-> profile_details
|
||||
+ [What are they planning to do with them?]
|
||||
-> operation_shatter
|
||||
+ [Two million people?]
|
||||
-> profile_scale
|
||||
|
||||
// ================================================
|
||||
// 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's my mission?]
|
||||
-> mission_objectives
|
||||
|
||||
=== architect_mention ===
|
||||
Agent 0x99: We don't know yet. Someone coordinating ENTROPY cells at a strategic level.
|
||||
|
||||
Agent 0x99: But that's a problem for later. Right now, we stop Operation Shatter.
|
||||
|
||||
-> mission_objectives
|
||||
|
||||
// ================================================
|
||||
// MISSION OBJECTIVES
|
||||
// ================================================
|
||||
|
||||
=== mission_objectives ===
|
||||
Agent 0x99: Your objectives:
|
||||
|
||||
Agent 0x99: One—Find the complete Operation Shatter documentation. Target lists, message templates, deployment timeline.
|
||||
|
||||
Agent 0x99: Two—Identify all ENTROPY operatives inside Viral Dynamics.
|
||||
|
||||
Agent 0x99: Three—Stop the operation before Sunday. That's when they deploy.
|
||||
|
||||
+ [How do I get inside?]
|
||||
-> cover_story
|
||||
+ [Who's the primary target?]
|
||||
~ asked_about_derek = true
|
||||
-> operative_identity
|
||||
+ [What are they trying to accomplish?]
|
||||
~ asked_about_entropy = true
|
||||
-> entropy_objectives
|
||||
+ [What's at stake if they succeed?]
|
||||
~ asked_about_stakes = true
|
||||
-> stakes_explanation
|
||||
+ [What resources do I have?]
|
||||
-> resources_available
|
||||
|
||||
// ================================================
|
||||
// OPERATIVE IDENTITY
|
||||
@@ -68,87 +208,23 @@ Agent 0x99: They've infiltrated Viral Dynamics as employees. We don't know how m
|
||||
=== operative_identity ===
|
||||
Agent 0x99: Derek Lawson. Senior Marketing Manager at Viral Dynamics.
|
||||
|
||||
Agent 0x99: Perfect cover—his job is literally manipulating narratives for clients.
|
||||
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.
|
||||
|
||||
+ [How long has he been there?]
|
||||
-> infiltration_timeline
|
||||
+ [What's my objective?]
|
||||
-> mission_objectives
|
||||
Agent 0x99: He's not just running operations. He authored parts of the casualty projections we intercepted.
|
||||
|
||||
=== infiltration_timeline ===
|
||||
Agent 0x99: Three months. Long enough to install backdoors, build trust, map the organization.
|
||||
|
||||
Agent 0x99: He's not just stealing data—he's weaponizing the company's media distribution network.
|
||||
|
||||
+ [What's my objective?]
|
||||
-> mission_objectives
|
||||
+ [What happens if they succeed?]
|
||||
~ asked_about_stakes = true
|
||||
-> stakes_explanation
|
||||
|
||||
// ================================================
|
||||
// ENTROPY OBJECTIVES
|
||||
// ================================================
|
||||
|
||||
=== entropy_objectives ===
|
||||
Agent 0x99: They're collecting demographic data, testing disinformation tactics, mapping influence networks.
|
||||
|
||||
Agent 0x99: It's all feeding into something bigger—Phase 3, though we don't know details yet.
|
||||
|
||||
+ [What's Phase 3?]
|
||||
-> phase_3_explanation
|
||||
+ [What's my mission?]
|
||||
-> mission_objectives
|
||||
|
||||
=== phase_3_explanation ===
|
||||
Agent 0x99: That's what we're trying to figure out. Multiple cells collecting different types of data.
|
||||
|
||||
Agent 0x99: Social Fabric handles narrative manipulation. Other cells focus on infrastructure, finance, healthcare.
|
||||
|
||||
+ [So this is part of something larger]
|
||||
-> larger_threat
|
||||
+ [What do I need to do?]
|
||||
-> mission_objectives
|
||||
|
||||
=== larger_threat ===
|
||||
Agent 0x99: Exactly. But right now, we stop this cell. One operation at a time.
|
||||
|
||||
-> mission_objectives
|
||||
|
||||
// ================================================
|
||||
// STAKES EXPLANATION
|
||||
// ================================================
|
||||
|
||||
=== stakes_explanation ===
|
||||
Agent 0x99: If they succeed, they'll manipulate election coverage across social media and news outlets.
|
||||
|
||||
Agent 0x99: Viral Dynamics has distribution deals with dozens of platforms. Derek controls what millions see.
|
||||
|
||||
+ [That's... significant]
|
||||
-> mission_objectives
|
||||
+ [We have to stop this]
|
||||
-> mission_objectives
|
||||
|
||||
// ================================================
|
||||
// MISSION OBJECTIVES
|
||||
// ================================================
|
||||
|
||||
=== mission_objectives ===
|
||||
Agent 0x99: Your primary objectives:
|
||||
|
||||
Agent 0x99: One—Identify all ENTROPY operatives inside Viral Dynamics.
|
||||
|
||||
Agent 0x99: Two—Gather evidence of the disinformation operation.
|
||||
|
||||
Agent 0x99: Three—Intercept their communications with other cells.
|
||||
|
||||
+ [How do I get inside?]
|
||||
~ asked_about_cover = true
|
||||
+ [He calculated how many people would die?]
|
||||
-> derek_author
|
||||
+ [How do I get to him?]
|
||||
-> cover_story
|
||||
+ [What resources do I have?]
|
||||
-> resources_available
|
||||
+ [Sounds straightforward]
|
||||
-> approach_discussion
|
||||
|
||||
=== 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
|
||||
|
||||
// ================================================
|
||||
// COVER STORY
|
||||
@@ -157,7 +233,7 @@ Agent 0x99: Three—Intercept their communications with other cells.
|
||||
=== cover_story ===
|
||||
Agent 0x99: You're going in as an IT contractor hired to audit their network security.
|
||||
|
||||
Agent 0x99: Completely legitimate. Viral Dynamics actually requested the audit weeks ago.
|
||||
Agent 0x99: Completely legitimate. Viral Dynamics actually requested the audit weeks ago. We just... made sure we got the contract.
|
||||
|
||||
+ [So I'll have access to technical systems]
|
||||
-> technical_access
|
||||
@@ -167,16 +243,29 @@ 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: Just stay professional. IT contractors ask questions; that's expected.
|
||||
Agent 0x99: That's where you'll find the Operation Shatter files. Derek keeps them encrypted, but they're there.
|
||||
|
||||
-> approach_discussion
|
||||
-> innocent_warning
|
||||
|
||||
=== employee_interaction ===
|
||||
Agent 0x99: IT contractors interact with everyone. Use it.
|
||||
Agent 0x99: Most employees at Viral Dynamics have no idea what's happening.
|
||||
|
||||
Agent 0x99: People trust IT. They'll share passwords, complain about systems, gossip about coworkers.
|
||||
Agent 0x99: They think they work at a marketing agency. The Operation Shatter team is isolated—maybe three or four people total.
|
||||
|
||||
-> approach_discussion
|
||||
Agent 0x99: Everyone else is innocent. They'll go home to families tonight with no idea their company was planning to kill people.
|
||||
|
||||
-> innocent_warning
|
||||
|
||||
=== innocent_warning ===
|
||||
Agent 0x99: One more thing: there's a journalist there 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: Protect her identity. If Derek finds out she tipped us off, she's in danger.
|
||||
|
||||
~ asked_about_maya = true
|
||||
|
||||
-> resources_available
|
||||
|
||||
// ================================================
|
||||
// RESOURCES AVAILABLE
|
||||
@@ -189,55 +278,26 @@ Agent 0x99: There's a SAFETYNET drop-site terminal in their server room for subm
|
||||
|
||||
+ [What about tools?]
|
||||
-> tools_discussion
|
||||
+ [Got it. What's the approach?]
|
||||
-> approach_discussion
|
||||
+ [I'm ready to go]
|
||||
-> final_instructions
|
||||
|
||||
=== tools_discussion ===
|
||||
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.
|
||||
|
||||
-> approach_discussion
|
||||
Agent 0x99: And {player_name}—when you find those casualty projections, photograph everything. We need complete documentation.
|
||||
|
||||
// ================================================
|
||||
// APPROACH DISCUSSION
|
||||
// ================================================
|
||||
|
||||
=== approach_discussion ===
|
||||
Agent 0x99: How do you want to handle this?
|
||||
|
||||
+ [Careful and methodical—thorough investigation]
|
||||
~ player_approach = "cautious"
|
||||
You: I'll take my time. Thorough beats fast.
|
||||
Agent 0x99: Smart. Don't miss anything critical.
|
||||
-> final_instructions
|
||||
+ [Quick and focused—complete objectives efficiently]
|
||||
~ player_approach = "confident"
|
||||
You: I'll move quickly and get results.
|
||||
Agent 0x99: Good. Just don't rush past important evidence.
|
||||
-> final_instructions
|
||||
+ [Adaptable—read the situation as it develops]
|
||||
~ player_approach = "adaptable"
|
||||
You: I'll adapt based on what I find.
|
||||
Agent 0x99: Flexible thinking. Trust your instincts.
|
||||
-> final_instructions
|
||||
-> final_instructions
|
||||
|
||||
// ================================================
|
||||
// FINAL INSTRUCTIONS
|
||||
// ================================================
|
||||
|
||||
=== final_instructions ===
|
||||
Agent 0x99: Remember—Derek doesn't know we're onto him yet. Keep it that way.
|
||||
Agent 0x99: Remember—Derek doesn't know we're onto Operation Shatter. He thinks this is just an IT audit.
|
||||
|
||||
{player_approach == "cautious":
|
||||
Agent 0x99: Your careful approach should keep you under the radar. Document everything.
|
||||
}
|
||||
{player_approach == "confident":
|
||||
Agent 0x99: Speed is good, but stealth is better. Stay professional.
|
||||
}
|
||||
{player_approach == "adaptable":
|
||||
Agent 0x99: Read the room. If something feels off, trust that feeling.
|
||||
}
|
||||
Agent 0x99: Use that advantage. Gather evidence before confronting anyone.
|
||||
|
||||
+ [Any specific advice?]
|
||||
-> specific_advice
|
||||
@@ -251,7 +311,7 @@ Agent 0x99: Remember—Derek doesn't know we're onto him yet. Keep it that way.
|
||||
=== specific_advice ===
|
||||
Agent 0x99: The IT manager—Kevin Park—is your entry point. Build rapport with him.
|
||||
|
||||
Agent 0x99: He's not ENTROPY, just overworked and underpaid. He'll appreciate competent help.
|
||||
Agent 0x99: He's not ENTROPY, just overworked and underpaid. He'll appreciate competent help and give you access.
|
||||
|
||||
+ [Anyone else I should know about?]
|
||||
-> other_npcs
|
||||
@@ -259,9 +319,9 @@ Agent 0x99: He's not ENTROPY, just overworked and underpaid. He'll appreciate co
|
||||
-> deployment
|
||||
|
||||
=== other_npcs ===
|
||||
Agent 0x99: Sarah Martinez is the receptionist. She'll check you in.
|
||||
Agent 0x99: Sarah Martinez is the receptionist. Professional, friendly. Don't give her any reason to flag you.
|
||||
|
||||
Agent 0x99: Be professional. First impressions matter for your cover.
|
||||
Agent 0x99: And Maya Chen—the journalist who contacted us. Be careful around her. Derek might be watching who she talks to.
|
||||
|
||||
-> deployment
|
||||
|
||||
@@ -270,11 +330,11 @@ Agent 0x99: Be professional. First impressions matter for your cover.
|
||||
// ================================================
|
||||
|
||||
=== deployment ===
|
||||
Agent 0x99: Good luck, {player_name}. SAFETYNET is counting on you.
|
||||
Agent 0x99: {player_name}, I won't lie. This is bigger than a typical first mission.
|
||||
|
||||
Agent 0x99: And remember—technically, you're just an IT contractor doing an audit.
|
||||
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: Keep that cover intact and this should go smoothly.
|
||||
Agent 0x99: Stop Operation Shatter. Find the evidence. And make sure Derek Lawson never hurts anyone.
|
||||
|
||||
~ mission_accepted = true
|
||||
|
||||
|
||||
File diff suppressed because one or more lines are too long
@@ -274,6 +274,107 @@ Agent 0x99: Now correlate with physical evidence. Then we can move to confrontat
|
||||
#exit_conversation
|
||||
-> support_hub
|
||||
|
||||
// ================================================
|
||||
// EVENT: CONTINGENCY FILES FOUND - MORAL CHOICE
|
||||
// ================================================
|
||||
|
||||
=== event_contingency_found ===
|
||||
#speaker:agent_0x99
|
||||
|
||||
Agent 0x99: {player_name}, I just saw what you pulled from Derek's computer.
|
||||
|
||||
Agent 0x99: He's planning to frame Kevin Park for the entire breach. Fake logs, forged emails, the works.
|
||||
|
||||
Agent 0x99: Kevin—the IT guy who gave you access, who trusted you—is going to take the fall for ENTROPY.
|
||||
|
||||
+ [That's monstrous]
|
||||
-> contingency_reaction
|
||||
+ [What can I do about it?]
|
||||
-> contingency_options
|
||||
|
||||
=== contingency_reaction ===
|
||||
Agent 0x99: It gets worse. Derek's contingency activates automatically when systems are seized.
|
||||
|
||||
Agent 0x99: If we don't do something, Kevin gets arrested. His kids watch him taken away in handcuffs.
|
||||
|
||||
Agent 0x99: Eventually he'd be cleared, but... that's not something you just walk off.
|
||||
|
||||
-> contingency_options
|
||||
|
||||
=== contingency_options ===
|
||||
Agent 0x99: You have options here. None of them are perfect.
|
||||
|
||||
Agent 0x99: What do you want to do?
|
||||
|
||||
+ [Warn Kevin directly - tell him what's coming]
|
||||
-> warn_kevin_choice
|
||||
+ [Leave evidence clearing Kevin for investigators]
|
||||
-> plant_evidence_choice
|
||||
+ [Focus on the mission - Kevin's not my responsibility]
|
||||
-> ignore_kevin_choice
|
||||
|
||||
// ================================================
|
||||
// CHOICE: WARN KEVIN
|
||||
// ================================================
|
||||
|
||||
=== warn_kevin_choice ===
|
||||
Agent 0x99: Direct warning. Risky—if Kevin panics or acts differently, Derek might notice.
|
||||
|
||||
Agent 0x99: But if it works, Kevin has time to lawyer up, document everything. He's protected.
|
||||
|
||||
+ [I'll take that risk. He deserves to know.]
|
||||
#set_variable:kevin_choice=warn
|
||||
#set_variable:kevin_protected=true
|
||||
Agent 0x99: Understood. Find Kevin, tell him what's coming. Just... be careful how much you reveal.
|
||||
Agent 0x99: The more he knows about SAFETYNET, the more complicated this gets.
|
||||
#exit_conversation
|
||||
-> support_hub
|
||||
+ [Maybe there's a safer option...]
|
||||
-> contingency_options
|
||||
|
||||
// ================================================
|
||||
// CHOICE: PLANT EVIDENCE
|
||||
// ================================================
|
||||
|
||||
=== plant_evidence_choice ===
|
||||
Agent 0x99: Anonymous help. Leave the frame-up files where our follow-up team will find them.
|
||||
|
||||
Agent 0x99: Kevin never knows he was in danger. Investigators see Derek's setup immediately.
|
||||
|
||||
Agent 0x99: Clean. Professional. Takes time, but lower risk.
|
||||
|
||||
+ [That's the smarter play. Do it that way.]
|
||||
#set_variable:kevin_choice=evidence
|
||||
#set_variable:kevin_protected=true
|
||||
Agent 0x99: Copy the contingency files to a visible location. Investigators will find them during evidence collection.
|
||||
Agent 0x99: Kevin walks away clean without ever knowing. That's the professional approach.
|
||||
#exit_conversation
|
||||
-> support_hub
|
||||
+ [Maybe there's another option...]
|
||||
-> contingency_options
|
||||
|
||||
// ================================================
|
||||
// CHOICE: IGNORE
|
||||
// ================================================
|
||||
|
||||
=== ignore_kevin_choice ===
|
||||
Agent 0x99: ...You're sure about that?
|
||||
|
||||
Agent 0x99: Kevin helped you. If you ignore this, he gets arrested. His family watches.
|
||||
|
||||
Agent 0x99: He'll be cleared eventually, but that's trauma that doesn't heal.
|
||||
|
||||
+ [The mission has to come first. I can't save everyone.]
|
||||
#set_variable:kevin_choice=ignore
|
||||
#set_variable:kevin_protected=false
|
||||
Agent 0x99: ...Understood. That's your call to make.
|
||||
Agent 0x99: Just know that choice has consequences. For Kevin. For his family.
|
||||
Agent 0x99: And for you, when you think about it later.
|
||||
#exit_conversation
|
||||
-> support_hub
|
||||
+ [Wait. Let me reconsider.]
|
||||
-> contingency_options
|
||||
|
||||
// ================================================
|
||||
// EVENT: ACT 2 COMPLETE (READY FOR CONFRONTATION)
|
||||
// ================================================
|
||||
|
||||
File diff suppressed because one or more lines are too long
@@ -1,11 +1,22 @@
|
||||
<%
|
||||
# ============================================================================
|
||||
# MISSION 1: FIRST CONTACT - SCENARIO FILE
|
||||
# MISSION 1: FIRST CONTACT - SCENARIO FILE (REVISED LAYOUT)
|
||||
# ============================================================================
|
||||
# Break Escape - Season 1: The Architect's Shadow
|
||||
#
|
||||
# This file defines the game world structure: rooms, NPCs, objects, items
|
||||
# For mission metadata (display name, CyBOK mappings, etc.), see mission.json
|
||||
#
|
||||
# ROOM LAYOUT:
|
||||
# Reception → Main Office Area (KEY) → Multiple rooms branch:
|
||||
# - Storage Closet (unlocked, practice safe)
|
||||
# - Break Room (unlocked, clues)
|
||||
# - Conference Room (unlocked, evidence)
|
||||
# - IT Room (PIN 2468, Kevin + lockpicks + keycard)
|
||||
# - Manager's Office (unlocked, safe with Derek's key, briefcase for lockpick)
|
||||
# - Maya's Office (unlocked, informant)
|
||||
# - Derek's Office (KEY or LOCKPICK)
|
||||
# └→ Derek's Office connects to Server Room (KEYCARD)
|
||||
# ============================================================================
|
||||
|
||||
# ERB Helper Methods
|
||||
@@ -24,38 +35,89 @@ password_hints = "Common passwords: Marketing123, Campaign2024, Viral_Dynamics_A
|
||||
|
||||
"objectives": [
|
||||
{
|
||||
"aimId": "identify_operatives",
|
||||
"title": "Identify ENTROPY Operatives",
|
||||
"description": "Discover who inside Viral Dynamics is working for ENTROPY",
|
||||
"aimId": "establish_access",
|
||||
"title": "Establish Access",
|
||||
"description": "Get into the building and begin your investigation",
|
||||
"status": "active",
|
||||
"order": 0,
|
||||
"tasks": [
|
||||
{
|
||||
"taskId": "meet_reception",
|
||||
"taskId": "check_in_reception",
|
||||
"title": "Check in at reception",
|
||||
"type": "npc_conversation",
|
||||
"targetNPC": "sarah_martinez",
|
||||
"status": "active"
|
||||
},
|
||||
{
|
||||
"taskId": "meet_kevin",
|
||||
"title": "Meet the IT manager",
|
||||
"type": "npc_conversation",
|
||||
"targetNPC": "kevin_park",
|
||||
"taskId": "access_main_office",
|
||||
"title": "Access the main office area",
|
||||
"type": "enter_room",
|
||||
"targetRoom": "main_office_area",
|
||||
"status": "active"
|
||||
},
|
||||
{
|
||||
"taskId": "investigate_derek",
|
||||
"title": "Investigate Derek Lawson's office",
|
||||
"taskId": "find_it_room_code",
|
||||
"title": "Find the IT room access code",
|
||||
"type": "collect_items",
|
||||
"targetItems": ["notes"],
|
||||
"status": "locked"
|
||||
},
|
||||
{
|
||||
"taskId": "access_it_room",
|
||||
"title": "Access the IT room",
|
||||
"type": "enter_room",
|
||||
"targetRoom": "it_room",
|
||||
"status": "locked"
|
||||
},
|
||||
{
|
||||
"taskId": "meet_kevin",
|
||||
"title": "Meet Kevin Park",
|
||||
"type": "npc_conversation",
|
||||
"targetNPC": "kevin_park",
|
||||
"status": "locked"
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
"aimId": "investigate_derek",
|
||||
"title": "Investigate Derek Lawson",
|
||||
"description": "Access Derek's office and gather evidence",
|
||||
"status": "active",
|
||||
"order": 1,
|
||||
"tasks": [
|
||||
{
|
||||
"taskId": "find_derek_key",
|
||||
"title": "Find access to Derek's office",
|
||||
"type": "collect_items",
|
||||
"targetItems": ["key"],
|
||||
"status": "locked"
|
||||
},
|
||||
{
|
||||
"taskId": "access_derek_office",
|
||||
"title": "Enter Derek's office",
|
||||
"type": "enter_room",
|
||||
"targetRoom": "derek_office",
|
||||
"status": "locked"
|
||||
},
|
||||
{
|
||||
"taskId": "confront_derek",
|
||||
"title": "Confront the ENTROPY operative",
|
||||
"type": "npc_conversation",
|
||||
"targetNPC": "derek_lawson",
|
||||
"taskId": "search_derek_computer",
|
||||
"title": "Search Derek's computer",
|
||||
"type": "collect_items",
|
||||
"targetItems": ["text_file"],
|
||||
"status": "locked"
|
||||
},
|
||||
{
|
||||
"taskId": "decode_whiteboard",
|
||||
"title": "Decode the whiteboard message",
|
||||
"type": "unlock_object",
|
||||
"targetObject": "cyberchef_workstation",
|
||||
"status": "locked"
|
||||
},
|
||||
{
|
||||
"taskId": "open_derek_cabinet",
|
||||
"title": "Open Derek's filing cabinet",
|
||||
"type": "unlock_object",
|
||||
"targetObject": "derek_cabinet",
|
||||
"status": "locked"
|
||||
}
|
||||
]
|
||||
@@ -65,8 +127,22 @@ password_hints = "Common passwords: Marketing123, Campaign2024, Viral_Dynamics_A
|
||||
"title": "Gather Evidence",
|
||||
"description": "Collect proof of the disinformation operation",
|
||||
"status": "active",
|
||||
"order": 1,
|
||||
"order": 2,
|
||||
"tasks": [
|
||||
{
|
||||
"taskId": "find_casualty_projections",
|
||||
"title": "Find Operation Shatter casualty projections",
|
||||
"type": "collect_items",
|
||||
"targetItems": ["notes"],
|
||||
"status": "locked"
|
||||
},
|
||||
{
|
||||
"taskId": "find_manifesto",
|
||||
"title": "Discover ENTROPY manifesto",
|
||||
"type": "collect_items",
|
||||
"targetItems": ["notes"],
|
||||
"status": "locked"
|
||||
},
|
||||
{
|
||||
"taskId": "find_campaign_materials",
|
||||
"title": "Find campaign materials",
|
||||
@@ -75,17 +151,10 @@ password_hints = "Common passwords: Marketing123, Campaign2024, Viral_Dynamics_A
|
||||
"status": "locked"
|
||||
},
|
||||
{
|
||||
"taskId": "discover_manifesto",
|
||||
"title": "Discover ENTROPY manifesto",
|
||||
"type": "collect_items",
|
||||
"targetItems": ["notes"],
|
||||
"status": "locked"
|
||||
},
|
||||
{
|
||||
"taskId": "decode_communications",
|
||||
"title": "Decode encrypted communications",
|
||||
"type": "unlock_object",
|
||||
"targetObject": "cyberchef_workstation",
|
||||
"taskId": "talk_to_maya",
|
||||
"title": "Talk to the informant",
|
||||
"type": "npc_conversation",
|
||||
"targetNPC": "maya_chen",
|
||||
"status": "locked"
|
||||
}
|
||||
]
|
||||
@@ -95,7 +164,7 @@ password_hints = "Common passwords: Marketing123, Campaign2024, Viral_Dynamics_A
|
||||
"title": "Intercept Communications",
|
||||
"description": "Access server systems and intercept ENTROPY communications",
|
||||
"status": "active",
|
||||
"order": 2,
|
||||
"order": 3,
|
||||
"tasks": [
|
||||
{
|
||||
"taskId": "access_server_room",
|
||||
@@ -114,22 +183,41 @@ password_hints = "Common passwords: Marketing123, Campaign2024, Viral_Dynamics_A
|
||||
{
|
||||
"taskId": "submit_ssh_flag",
|
||||
"title": "Submit SSH access evidence",
|
||||
"type": "unlock_object",
|
||||
"targetObject": "flag_station_dropsite",
|
||||
"type": "submit_flags",
|
||||
"status": "locked"
|
||||
},
|
||||
{
|
||||
"taskId": "submit_linux_flag",
|
||||
"title": "Submit Linux navigation evidence",
|
||||
"type": "unlock_object",
|
||||
"targetObject": "flag_station_dropsite",
|
||||
"type": "submit_flags",
|
||||
"status": "locked"
|
||||
},
|
||||
{
|
||||
"taskId": "submit_sudo_flag",
|
||||
"title": "Submit privilege escalation evidence",
|
||||
"type": "unlock_object",
|
||||
"targetObject": "flag_station_dropsite",
|
||||
"type": "submit_flags",
|
||||
"status": "locked"
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
"aimId": "confront_operative",
|
||||
"title": "Confront the Operative",
|
||||
"description": "Confront Derek with the evidence and decide his fate",
|
||||
"status": "locked",
|
||||
"order": 4,
|
||||
"tasks": [
|
||||
{
|
||||
"taskId": "confront_derek",
|
||||
"title": "Confront Derek Lawson",
|
||||
"type": "npc_conversation",
|
||||
"targetNPC": "derek_lawson",
|
||||
"status": "locked"
|
||||
},
|
||||
{
|
||||
"taskId": "choose_resolution",
|
||||
"title": "Choose how to resolve the situation",
|
||||
"type": "custom",
|
||||
"status": "locked"
|
||||
}
|
||||
]
|
||||
@@ -204,6 +292,14 @@ password_hints = "Common passwords: Marketing123, Campaign2024, Viral_Dynamics_A
|
||||
"name": "Visitor Badge",
|
||||
"takeable": true,
|
||||
"observations": "Temporary visitor badge for office access"
|
||||
},
|
||||
{
|
||||
"type": "key",
|
||||
"name": "Main Office Key",
|
||||
"takeable": true,
|
||||
"key_id": "main_office_key",
|
||||
"keyPins": [45, 25, 55, 35],
|
||||
"observations": "Key to the main office area"
|
||||
}
|
||||
]
|
||||
},
|
||||
@@ -218,7 +314,7 @@ password_hints = "Common passwords: Marketing123, Campaign2024, Viral_Dynamics_A
|
||||
"timedMessages": [
|
||||
{
|
||||
"delay": 3000,
|
||||
"message": "Hey rookie! 🦎 I'm your handler for this op. Message me if you need any guidance navigating Viral Dynamics.",
|
||||
"message": "Hey rookie! 🦎 I'm your handler for this op. Message me if you need any guidance.",
|
||||
"type": "text"
|
||||
}
|
||||
],
|
||||
@@ -237,6 +333,11 @@ password_hints = "Common passwords: Marketing123, Campaign2024, Viral_Dynamics_A
|
||||
"eventPattern": "room_entered:derek_office",
|
||||
"targetKnot": "event_derek_office_entered",
|
||||
"onceOnly": true
|
||||
},
|
||||
{
|
||||
"eventPattern": "item_picked_up:contingency_files",
|
||||
"targetKnot": "event_contingency_found",
|
||||
"onceOnly": true
|
||||
}
|
||||
]
|
||||
},
|
||||
@@ -264,81 +365,37 @@ password_hints = "Common passwords: Marketing123, Campaign2024, Viral_Dynamics_A
|
||||
"name": "Building Directory",
|
||||
"takeable": true,
|
||||
"readable": true,
|
||||
"text": "Viral Dynamics Media - Staff Directory\n\nSarah Martinez - Reception\nKevin Park - IT Manager\nMaya Chen - Content Analyst\nDerek Lawson - Senior Marketing Manager",
|
||||
"text": "Viral Dynamics Media - Staff Directory\n\nRECEPTION:\nSarah Martinez - Receptionist\n\nMAIN OFFICE:\nKevin Park - IT Manager (IT Room)\nMaya Chen - Content Analyst\n\nPRIVATE OFFICES:\nDerek Lawson - Senior Marketing Manager\nManager's Office - VACANT",
|
||||
"observations": "Posted directory of office staff"
|
||||
},
|
||||
{
|
||||
"type": "notes",
|
||||
"name": "Visitor Sign-In Log",
|
||||
"takeable": false,
|
||||
"readable": true,
|
||||
"text": "VISITOR SIGN-IN LOG\n\nRecent Entries:\n- 11:47 PM - D. Lawson (employee late access)\n- 11:52 PM - D. Lawson (employee late access)\n- 12:03 AM - D. Lawson (employee late access)\n\nNote: Multiple late-night entries for Derek Lawson this month.",
|
||||
"observations": "Sign-in log showing suspicious after-hours access patterns"
|
||||
}
|
||||
]
|
||||
},
|
||||
|
||||
"main_office_area": {
|
||||
"type": "room_office",
|
||||
"locked": true,
|
||||
"lockType": "key",
|
||||
"requires": "main_office_key",
|
||||
"keyPins": [45, 25, 55, 35],
|
||||
"connections": {
|
||||
"south": ["reception_area", "break_room"],
|
||||
"north": ["derek_office", "storage_closet"],
|
||||
"east": "server_room",
|
||||
"west": "conference_room"
|
||||
"south": "reception_area",
|
||||
"north": ["hallway_west", "hallway_east"],
|
||||
"east": "it_room",
|
||||
"west": "break_room"
|
||||
},
|
||||
"npcs": [
|
||||
{
|
||||
"id": "kevin_park",
|
||||
"displayName": "Kevin Park",
|
||||
"npcType": "person",
|
||||
"position": { "x": 8, "y": 7 },
|
||||
"spriteSheet": "hacker",
|
||||
"spriteConfig": {
|
||||
"idleFrameStart": 20,
|
||||
"idleFrameEnd": 23
|
||||
},
|
||||
"storyPath": "scenarios/m01_first_contact/ink/m01_npc_kevin.json",
|
||||
"currentKnot": "start",
|
||||
"itemsHeld": [
|
||||
{
|
||||
"type": "lockpick",
|
||||
"name": "Lock Pick Kit",
|
||||
"takeable": true,
|
||||
"observations": "Professional lock picking kit"
|
||||
},
|
||||
{
|
||||
"type": "keycard",
|
||||
"name": "Server Room Keycard",
|
||||
"takeable": true,
|
||||
"key_id": "server_keycard",
|
||||
"observations": "Kevin's access card for server room"
|
||||
},
|
||||
{
|
||||
"type": "rfid_cloner",
|
||||
"name": "RFID Cloner",
|
||||
"takeable": true,
|
||||
"observations": "Device for cloning RFID access cards"
|
||||
},
|
||||
{
|
||||
"type": "notes",
|
||||
"name": "Password Hints",
|
||||
"takeable": true,
|
||||
"readable": true,
|
||||
"text": "<%= password_hints %>",
|
||||
"observations": "Common passwords used in the office"
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
"id": "maya_chen",
|
||||
"displayName": "Maya Chen",
|
||||
"npcType": "person",
|
||||
"position": { "x": 5, "y": 5 },
|
||||
"spriteSheet": "hacker-red",
|
||||
"spriteTalk": "assets/characters/hacker-red-talk.png",
|
||||
"spriteConfig": {
|
||||
"idleFrameStart": 20,
|
||||
"idleFrameEnd": 23
|
||||
},
|
||||
"storyPath": "scenarios/m01_first_contact/ink/m01_npc_maya.json",
|
||||
"currentKnot": "start"
|
||||
}
|
||||
],
|
||||
"npcs": [],
|
||||
"objects": [
|
||||
{
|
||||
"type": "pc",
|
||||
"id": "cyberchef_workstation",
|
||||
"name": "CyberChef Workstation",
|
||||
"takeable": false,
|
||||
"storyPath": "scenarios/m01_first_contact/ink/m01_terminal_cyberchef.json",
|
||||
@@ -347,11 +404,11 @@ password_hints = "Common passwords: Marketing123, Campaign2024, Viral_Dynamics_A
|
||||
},
|
||||
{
|
||||
"type": "safe",
|
||||
"name": "Filing Cabinet",
|
||||
"name": "Main Filing Cabinet",
|
||||
"takeable": false,
|
||||
"locked": true,
|
||||
"lockType": "pin",
|
||||
"pin": "2024",
|
||||
"requires": "2024",
|
||||
"observations": "Digital filing cabinet with keypad lock - requires 4-digit PIN",
|
||||
"contents": [
|
||||
{
|
||||
@@ -359,7 +416,7 @@ password_hints = "Common passwords: Marketing123, Campaign2024, Viral_Dynamics_A
|
||||
"name": "The Architect's Letter",
|
||||
"takeable": true,
|
||||
"readable": true,
|
||||
"text": "FROM: The Architect\nTO: CELL_SOCIAL_FABRIC [All Members]\n\nI write to you because your work represents the purest expression of our philosophy. While others dismantle systems through code and infrastructure, you reshape the very foundation of belief...\n\n[LORE Fragment - Campaign Arc: The Architect's Shadow]",
|
||||
"text": "FROM: The Architect\nTO: CELL_SOCIAL_FABRIC [All Members]\n\nI write to you because your work represents the purest expression of our philosophy. While others dismantle systems through code and infrastructure, you reshape the very foundation of belief.\n\nTrust is the ultimate vulnerability. Every system, every institution, every relationship depends on it. And trust, unlike encryption, cannot be patched.\n\nYour upcoming operation will demonstrate this truth on a scale never before attempted. When it succeeds, the world will finally understand: in the digital age, truth is merely consensus, and consensus can be manufactured.\n\nThe weak will perish in confusion. The strong will learn to verify.\n\nEntropy is inevitable. We merely accelerate the lesson.\n\n- The Architect\n\n[LORE Fragment - Campaign Arc: The Architect's Shadow]",
|
||||
"observations": "Encrypted correspondence revealing ENTROPY leadership structure"
|
||||
}
|
||||
]
|
||||
@@ -377,8 +434,346 @@ password_hints = "Common passwords: Marketing123, Campaign2024, Viral_Dynamics_A
|
||||
"name": "Maintenance Checklist",
|
||||
"takeable": true,
|
||||
"readable": true,
|
||||
"text": "STORAGE CLOSET MAINTENANCE LOG\n\nWeekly Tasks:\n- [ ] Check fire extinguisher pressure\n- [ ] Test emergency lighting\n- [ ] Verify safe backup code: 1337 (leet!)\n- [ ] Inventory cleaning supplies\n\nLast checked: 2 weeks ago",
|
||||
"observations": "Maintenance checklist left on desk"
|
||||
"text": "VIRAL DYNAMICS - MAINTENANCE LOG\n\nIT Room Access:\nKevin keeps forgetting the code.\nIT ROOM PIN: 2468\n(Seriously Kevin, just memorize it)\n\nStorage Closet:\nPractice safe code: 1337 (for new hires)\n\nLast updated: 2 weeks ago",
|
||||
"observations": "Maintenance checklist with access codes"
|
||||
},
|
||||
{
|
||||
"type": "notes",
|
||||
"name": "Kevin's Desk Note",
|
||||
"takeable": true,
|
||||
"readable": true,
|
||||
"text": "Gone to check the servers.\nIf you need me, I'm in the IT Room.\n- Kevin\n\nP.S. The IT Room code is still 2468. Yes, I finally memorized it.",
|
||||
"observations": "Note from Kevin explaining his absence"
|
||||
}
|
||||
]
|
||||
},
|
||||
|
||||
"storage_closet": {
|
||||
"type": "small_room_1x1gu",
|
||||
"locked": false,
|
||||
"connections": {
|
||||
"east": "hallway_west"
|
||||
},
|
||||
"objects": [
|
||||
{
|
||||
"type": "safe",
|
||||
"name": "Practice Safe",
|
||||
"takeable": false,
|
||||
"locked": true,
|
||||
"lockType": "pin",
|
||||
"requires": "1337",
|
||||
"observations": "Training safe for new employees to practice - 4-digit PIN",
|
||||
"contents": [
|
||||
{
|
||||
"type": "notes",
|
||||
"name": "Old Orientation Guide",
|
||||
"takeable": true,
|
||||
"readable": true,
|
||||
"text": "VIRAL DYNAMICS - NEW EMPLOYEE ORIENTATION\n\nWelcome to the team!\n\nSecurity Reminders:\n- Always lock your workstation\n- Don't share passwords\n- Report suspicious activity to Kevin in IT\n\nFun Fact: The practice safe code (1337) is 'leet speak' for 'elite'. Kevin thought it was funny.\n\n[Minor LORE Fragment]",
|
||||
"observations": "Old orientation materials"
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
"type": "notes",
|
||||
"name": "Maintenance Log (Backup)",
|
||||
"takeable": true,
|
||||
"readable": true,
|
||||
"text": "MAINTENANCE ACCESS CODES (BACKUP COPY)\n\nIT Room: 2468\nPractice Safe: 1337\nManager's Safe: Ask Derek (he has the combo)\n\nNote: Manager's office safe hasn't been opened since Patricia left.",
|
||||
"observations": "Backup copy of maintenance codes"
|
||||
}
|
||||
]
|
||||
},
|
||||
|
||||
"break_room": {
|
||||
"type": "room_office",
|
||||
"locked": false,
|
||||
"connections": {
|
||||
"east": "main_office_area",
|
||||
"west": "conference_room"
|
||||
},
|
||||
"objects": [
|
||||
{
|
||||
"type": "notes",
|
||||
"name": "Coffee Shop Receipt",
|
||||
"takeable": true,
|
||||
"readable": true,
|
||||
"text": "THE DAILY GRIND - RECEIPT\nDate: Last Tuesday, 11:47 PM\n\nNote on back (handwriting):\n'Derek meeting with unknown contact AGAIN.\nDiscussing \"Phase 3 timeline\" and \"The Architect.\"\nThis is the 5th late-night meeting this month.\nSomething is very wrong here.'\n\n- Anonymous concerned employee",
|
||||
"observations": "Receipt with handwritten note about Derek's suspicious meetings"
|
||||
},
|
||||
{
|
||||
"type": "notes",
|
||||
"name": "Birthday Card",
|
||||
"takeable": true,
|
||||
"readable": true,
|
||||
"text": "🎂 HAPPY ANNIVERSARY! 🎂\n\nTo Derek & Lisa,\nCongratulations on 10 years!\nApril 19th - a day to remember!\n\nFrom your Viral Dynamics family\n\n(Note: Several signatures, including Maya, Kevin, Sarah)",
|
||||
"observations": "Anniversary card revealing Derek's anniversary date: April 19"
|
||||
},
|
||||
{
|
||||
"type": "notes",
|
||||
"name": "Office Gossip",
|
||||
"takeable": true,
|
||||
"readable": true,
|
||||
"text": "Overheard at the coffee machine:\n\n'Did you hear Patricia got fired?'\n'The old manager? Yeah, weird timing.'\n'She was asking too many questions about Derek's projects.'\n'And now her office is just... empty.'\n'Creepy if you ask me.'\n\n(Someone really needs to clean this whiteboard more often)",
|
||||
"observations": "Gossip about the former manager's sudden departure"
|
||||
}
|
||||
]
|
||||
},
|
||||
|
||||
"conference_room": {
|
||||
"type": "room_office",
|
||||
"locked": false,
|
||||
"connections": {
|
||||
"east": "break_room"
|
||||
},
|
||||
"objects": [
|
||||
{
|
||||
"type": "notes",
|
||||
"name": "Meeting Calendar",
|
||||
"takeable": false,
|
||||
"readable": true,
|
||||
"text": "CONFERENCE ROOM CALENDAR\n\nMonday: Derek - 'External Partner Sync' (recurring)\nTuesday: All Hands (cancelled)\nWednesday: Derek - 'ZDS Infrastructure Review'\nThursday: Derek - 'Campaign Coordination'\nFriday: Derek - 'Phase 3 Planning'\n\nNote: Derek has booked this room for 'external calls' almost every day this month.",
|
||||
"observations": "Meeting calendar showing Derek's suspicious scheduling patterns"
|
||||
},
|
||||
{
|
||||
"type": "notes",
|
||||
"name": "ZDS Meeting Notes",
|
||||
"takeable": true,
|
||||
"readable": true,
|
||||
"text": "MEETING NOTES - ZDS Infrastructure Review\nDate: Last Wednesday\nAttendees: Derek Lawson, [REDACTED]\n\nAgenda:\n1. Technical infrastructure status - CONFIRMED\n2. Message deployment timeline - ON SCHEDULE\n3. Target list finalization - 2.3M profiles ready\n4. Casualty projections review - ACCEPTABLE\n\nAction Items:\n- Derek to confirm Phase 3 launch window\n- ZDS to provide backup exfiltration routes\n\n[EVIDENCE - Zero Day Syndicate Connection]",
|
||||
"observations": "Meeting notes revealing coordination with Zero Day Syndicate"
|
||||
},
|
||||
{
|
||||
"type": "notes",
|
||||
"name": "Campaign Timeline",
|
||||
"takeable": true,
|
||||
"readable": true,
|
||||
"text": "OPERATION SHATTER - CAMPAIGN TIMELINE\n\nWeek 1-2: Content creation ✓\nWeek 3-4: Narrative seeding ✓\nWeek 5: Coordinated release - PENDING\n\nTarget Demographics:\n- Medical dependency populations\n- Financial anxiety segments \n- Elderly isolated individuals\n\nProjected Impact: SIGNIFICANT\n\nNote: 'The Architect' has approved final timeline.",
|
||||
"observations": "Campaign timeline for Operation Shatter"
|
||||
}
|
||||
]
|
||||
},
|
||||
|
||||
"it_room": {
|
||||
"type": "room_office",
|
||||
"locked": true,
|
||||
"lockType": "pin",
|
||||
"requires": "2468",
|
||||
"connections": {
|
||||
"west": "main_office_area"
|
||||
},
|
||||
"npcs": [
|
||||
{
|
||||
"id": "kevin_park",
|
||||
"displayName": "Kevin Park",
|
||||
"npcType": "person",
|
||||
"position": { "x": 4, "y": 4 },
|
||||
"spriteSheet": "hacker",
|
||||
"spriteConfig": {
|
||||
"idleFrameStart": 20,
|
||||
"idleFrameEnd": 23
|
||||
},
|
||||
"storyPath": "scenarios/m01_first_contact/ink/m01_npc_kevin.json",
|
||||
"currentKnot": "start",
|
||||
"itemsHeld": [
|
||||
{
|
||||
"type": "lockpick",
|
||||
"name": "Lock Pick Kit",
|
||||
"takeable": true,
|
||||
"observations": "Professional lock picking kit - for security testing"
|
||||
},
|
||||
{
|
||||
"type": "keycard",
|
||||
"name": "Server Room Keycard",
|
||||
"takeable": true,
|
||||
"key_id": "server_keycard",
|
||||
"observations": "Kevin's keycard for server room access"
|
||||
},
|
||||
{
|
||||
"type": "notes",
|
||||
"name": "Password Hints",
|
||||
"takeable": true,
|
||||
"readable": true,
|
||||
"text": "<%= password_hints %>",
|
||||
"observations": "Common password patterns used in the office"
|
||||
}
|
||||
]
|
||||
}
|
||||
],
|
||||
"objects": [
|
||||
{
|
||||
"type": "pc",
|
||||
"name": "IT Monitoring Station",
|
||||
"takeable": false,
|
||||
"locked": false,
|
||||
"observations": "Network monitoring displays showing server activity",
|
||||
"contents": [
|
||||
{
|
||||
"type": "text_file",
|
||||
"name": "Server Access Log",
|
||||
"takeable": true,
|
||||
"readable": true,
|
||||
"text": "UNAUTHORIZED ACCESS LOG\n\nFlagged Entries:\n- Derek Lawson accessed SERVER_ROOM at 11:52 PM (no ticket)\n- Derek Lawson accessed SERVER_ROOM at 12:03 AM (no ticket)\n- Derek Lawson accessed BACKUP_SYSTEM at 2:15 AM (no ticket)\n\nNote: I've flagged these to management 3 times. No response.\nSomething's not right.\n- Kevin",
|
||||
"observations": "Kevin's log of Derek's unauthorized server access"
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
"type": "notes",
|
||||
"name": "IT Security Concerns",
|
||||
"takeable": true,
|
||||
"readable": true,
|
||||
"text": "MEMO TO MANAGEMENT (UNSENT)\n\nRE: Security Concerns - Derek Lawson\n\nI've documented multiple instances of Derek accessing the server room without authorization. When I asked him about it, he said he was 'checking campaign servers.'\n\nWe don't have campaign servers in that room.\n\nI think he's doing something he shouldn't be, but I don't know who to trust. The last person who raised concerns about Derek was Patricia, and she got fired.\n\nI'm keeping this memo in case something happens to me too.\n\n- Kevin Park, IT Manager",
|
||||
"observations": "Kevin's unsent memo expressing concerns about Derek"
|
||||
}
|
||||
]
|
||||
},
|
||||
|
||||
"hallway_west": {
|
||||
"type": "hall_1x2gu",
|
||||
"locked": false,
|
||||
"connections": {
|
||||
"south": "main_office_area",
|
||||
"north": ["manager_office", "maya_office"],
|
||||
"west": "storage_closet",
|
||||
"east": "hallway_east"
|
||||
},
|
||||
"objects": [
|
||||
{
|
||||
"type": "notes",
|
||||
"name": "Office Directory Sign",
|
||||
"takeable": false,
|
||||
"readable": true,
|
||||
"text": "↑ Manager's Office (VACANT)\n← Storage Closet\n→ East Hallway",
|
||||
"observations": "Directional sign for the offices"
|
||||
}
|
||||
]
|
||||
},
|
||||
|
||||
"hallway_east": {
|
||||
"type": "hall_1x2gu",
|
||||
"locked": false,
|
||||
"connections": {
|
||||
"south": "main_office_area",
|
||||
"north": ["maya_office", "derek_office"],
|
||||
"east": "server_room",
|
||||
"west": "hallway_west"
|
||||
},
|
||||
"objects": [
|
||||
{
|
||||
"type": "notes",
|
||||
"name": "Office Directory Sign",
|
||||
"takeable": false,
|
||||
"readable": true,
|
||||
"text": "↑ Maya Chen | Derek Lawson\n→ Server Room (Authorized Personnel Only)\n← West Hallway",
|
||||
"observations": "Directional sign for the offices and server room"
|
||||
}
|
||||
]
|
||||
},
|
||||
|
||||
"manager_office": {
|
||||
"type": "room_office",
|
||||
"locked": false,
|
||||
"connections": {
|
||||
"south": "hallway_west"
|
||||
},
|
||||
"objects": [
|
||||
{
|
||||
"type": "safe",
|
||||
"name": "Patricia's Safe",
|
||||
"takeable": false,
|
||||
"locked": true,
|
||||
"lockType": "pin",
|
||||
"requires": "0419",
|
||||
"observations": "Former manager's safe - keypad shows wear on 0, 1, 4, 9",
|
||||
"contents": [
|
||||
{
|
||||
"type": "key",
|
||||
"name": "Derek's Office Key",
|
||||
"takeable": true,
|
||||
"key_id": "derek_office_key",
|
||||
"keyPins": [35, 55, 45, 25],
|
||||
"observations": "Spare key to Derek Lawson's office - Patricia must have kept a copy"
|
||||
},
|
||||
{
|
||||
"type": "notes",
|
||||
"name": "Patricia's Investigation Notes",
|
||||
"takeable": true,
|
||||
"readable": true,
|
||||
"text": "MY INVESTIGATION NOTES - PATRICIA WELLS\n\nDerek Lawson is hiding something. I've documented:\n- Late night server access (no business justification)\n- Encrypted communications with external parties\n- Large data transfers to unknown destinations\n- References to someone called 'The Architect'\n\nI'm going to confront him tomorrow.\n\nUpdate: HR called me in. I'm being 'let go' for 'performance issues.' This is retaliation. If you're reading this, I was right about Derek.\n\nThe safe code is his anniversary: 0419\n\n[LORE Fragment - Patricia's Investigation]",
|
||||
"observations": "Former manager's investigation notes - reveals she was fired for getting too close"
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
"type": "suitcase",
|
||||
"name": "Patricia's Briefcase",
|
||||
"takeable": false,
|
||||
"locked": true,
|
||||
"lockType": "key",
|
||||
"keyPins": [40, 60, 30, 50],
|
||||
"difficulty": "medium",
|
||||
"observations": "Former manager's briefcase - she left it behind when she was escorted out. No key available - would need to pick the lock.",
|
||||
"contents": [
|
||||
{
|
||||
"type": "notes",
|
||||
"name": "ENTROPY Infiltration Timeline",
|
||||
"takeable": true,
|
||||
"readable": true,
|
||||
"text": "═══════════════════════════════════════════════════════════\n HOW ENTROPY INFILTRATED VIRAL DYNAMICS\n [PATRICIA'S RECONSTRUCTION]\n═══════════════════════════════════════════════════════════\n\n18 MONTHS AGO:\nDerek Lawson hired as 'Senior Marketing Manager'\nBackground check clean - too clean?\n\n12 MONTHS AGO:\nDerek requests 'enhanced privacy' for his systems\nStarts working late nights regularly\n\n9 MONTHS AGO:\nFirst references to 'external partners' in meeting notes\nDerek begins booking conference room for 'private calls'\n\n6 MONTHS AGO:\nI notice unusual server access patterns\nStart documenting Derek's activities\n\n3 MONTHS AGO:\nConfront Derek - he deflects, becomes hostile\nStart finding evidence of coordination with 'ZDS'\n\n1 MONTH AGO:\nDiscovered references to 'The Architect' and 'Operation Shatter'\nProjected casualties document - 42-85 deaths\nThis is bigger than corporate espionage\n\nTODAY:\nFired for 'performance issues'\nThey're protecting him\nSomeone needs to stop this\n\n═══════════════════════════════════════════════════════════\nIf you found this, you're the someone.\n═══════════════════════════════════════════════════════════\n\n[MAJOR LORE Fragment - ENTROPY Infiltration History]",
|
||||
"observations": "Patricia's reconstruction of how ENTROPY infiltrated the company - LOCKPICK ONLY"
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
"type": "notes",
|
||||
"name": "Termination Letter",
|
||||
"takeable": true,
|
||||
"readable": true,
|
||||
"text": "VIRAL DYNAMICS MEDIA\nHUMAN RESOURCES\n\nTO: Patricia Wells\nRE: Termination of Employment\n\nEffective immediately, your employment with Viral Dynamics Media is terminated due to performance concerns.\n\nPlease collect your personal belongings and return your access badge to security.\n\nWe wish you well in your future endeavors.\n\n(Note: This is clearly a form letter. No specific performance issues cited.)",
|
||||
"observations": "Patricia's termination letter - suspiciously vague"
|
||||
}
|
||||
]
|
||||
},
|
||||
|
||||
"maya_office": {
|
||||
"type": "room_office",
|
||||
"locked": false,
|
||||
"connections": {
|
||||
"south": "hallway_east"
|
||||
},
|
||||
"npcs": [
|
||||
{
|
||||
"id": "maya_chen",
|
||||
"displayName": "Maya Chen",
|
||||
"npcType": "person",
|
||||
"position": { "x": 4, "y": 4 },
|
||||
"spriteSheet": "hacker-red",
|
||||
"spriteTalk": "assets/characters/hacker-red-talk.png",
|
||||
"spriteConfig": {
|
||||
"idleFrameStart": 20,
|
||||
"idleFrameEnd": 23
|
||||
},
|
||||
"storyPath": "scenarios/m01_first_contact/ink/m01_npc_maya.json",
|
||||
"currentKnot": "start"
|
||||
}
|
||||
],
|
||||
"objects": [
|
||||
{
|
||||
"type": "notes",
|
||||
"name": "Disinformation Research",
|
||||
"takeable": true,
|
||||
"readable": true,
|
||||
"text": "RESEARCH NOTES - MAYA CHEN\n\nI was hired to analyze content effectiveness.\nWhat I found was something else entirely.\n\nThe 'campaigns' we're running aren't marketing.\nThey're psychological operations.\n\nTarget demographics aren't customers.\nThey're victims.\n\nI tried to raise concerns internally.\nPatricia listened. Then Patricia got fired.\n\nI'm documenting everything now.\nSomeone needs to know the truth.\n\n(If you're reading this and you're not Derek, we should talk.)",
|
||||
"observations": "Maya's research notes revealing her concerns"
|
||||
},
|
||||
{
|
||||
"type": "notes",
|
||||
"name": "SAFETYNET Contact",
|
||||
"takeable": true,
|
||||
"readable": true,
|
||||
"text": "SECURE COMMUNICATION\n\nTo: SAFETYNET Tip Line\nFrom: Anonymous\n\nI work at Viral Dynamics Media.\nSomething terrible is being planned.\nThey call it 'Operation Shatter.'\nPeople will die.\n\nPlease send someone.\n\n- An ally",
|
||||
"observations": "Maya's tip to SAFETYNET - she's the informant who triggered this mission"
|
||||
}
|
||||
]
|
||||
},
|
||||
@@ -388,9 +783,10 @@ password_hints = "Common passwords: Marketing123, Campaign2024, Viral_Dynamics_A
|
||||
"locked": true,
|
||||
"lockType": "key",
|
||||
"requires": "derek_office_key",
|
||||
"difficulty": "easy",
|
||||
"keyPins": [35, 55, 45, 25],
|
||||
"difficulty": "medium",
|
||||
"connections": {
|
||||
"south": "main_office_area"
|
||||
"south": "hallway_east"
|
||||
},
|
||||
"npcs": [
|
||||
{
|
||||
@@ -404,33 +800,65 @@ password_hints = "Common passwords: Marketing123, Campaign2024, Viral_Dynamics_A
|
||||
"idleFrameEnd": 23
|
||||
},
|
||||
"storyPath": "scenarios/m01_first_contact/ink/m01_derek_confrontation.json",
|
||||
"currentKnot": "start"
|
||||
"currentKnot": "start",
|
||||
"behavior": {
|
||||
"initiallyHidden": true,
|
||||
"appearsOnEvent": "all_flags_submitted"
|
||||
}
|
||||
}
|
||||
],
|
||||
"objects": [
|
||||
{
|
||||
"type": "pc",
|
||||
"name": "Derek's Computer",
|
||||
"takeable": false,
|
||||
"locked": false,
|
||||
"observations": "Derek's personal workstation - files visible on screen",
|
||||
"contents": [
|
||||
{
|
||||
"type": "text_file",
|
||||
"id": "contingency_files",
|
||||
"name": "CONTINGENCY - IT Audit Response",
|
||||
"takeable": true,
|
||||
"readable": true,
|
||||
"text": "═══════════════════════════════════════════════════════════\n CONTINGENCY PLAN: IT AUDIT RESPONSE\n [ACTIVATE IF COMPROMISED]\n═══════════════════════════════════════════════════════════\n\nIf audit discovers anomalies, activate CONTINGENCY.\n\nIT Manager Kevin Park becomes the fall guy.\nHis access patterns can be retroactively modified.\nHis termination provides closure for the company and\nends investigation.\n\nPREPARED EVIDENCE:\n- Fake security logs showing Kevin accessing servers at odd hours\n- Forged email from Kevin to 'unknown external party'\n- Timeline framing Kevin as source of data breach\n\nKevin helped you. Gave you access. Trusted you.\nAnd Derek is going to destroy his career—maybe his life—\nto cover ENTROPY's tracks.\n\n[This file triggers a moral choice when collected]",
|
||||
"observations": "Derek's plan to frame Kevin for everything"
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
"type": "notes",
|
||||
"name": "Whiteboard Message",
|
||||
"takeable": false,
|
||||
"readable": true,
|
||||
"text": "Encoded Message:\n<%= base64_encode(client_list_message) %>\n\n(Appears to be Base64 encoded)",
|
||||
"text": "ENCODED MESSAGE ON WHITEBOARD:\n\n<%= base64_encode(client_list_message) %>\n\n(Appears to be Base64 encoded - use CyberChef workstation to decode)",
|
||||
"observations": "Strategic planning notes in encoded format"
|
||||
},
|
||||
{
|
||||
"type": "safe",
|
||||
"id": "derek_cabinet",
|
||||
"name": "Derek's Filing Cabinet",
|
||||
"takeable": false,
|
||||
"locked": true,
|
||||
"lockType": "pin",
|
||||
"pin": "0419",
|
||||
"requires": "0419",
|
||||
"observations": "Executive filing cabinet with electronic keypad - requires 4-digit PIN",
|
||||
"contents": [
|
||||
{
|
||||
"type": "notes",
|
||||
"name": "Operation Shatter Casualty Projections",
|
||||
"takeable": true,
|
||||
"readable": true,
|
||||
"text": "═══════════════════════════════════════════════════════════\n OPERATION SHATTER - IMPACT ASSESSMENT\n [INTERNAL PLANNING DOCUMENT]\n═══════════════════════════════════════════════════════════\n\nPROJECTED CASUALTY ANALYSIS:\n\nDirect Casualties (First 24 Hours):\n- Cardiac events from panic: 15-30 fatalities\n- Diabetics missing insulin: 8-12 fatalities\n- Dialysis patients avoiding facilities: 4-8 fatalities\n- Violence from incitement: 5-15 fatalities\n- Traffic accidents from panic: 10-20 fatalities\n\nESTIMATED DIRECT DEATHS: 42-85 people\n\nSTRATEGIC JUSTIFICATION:\nThese deaths are not the goal—they are the demonstration.\nWhen truth emerges that fake messages caused real deaths,\ntrust in ALL digital communications collapses permanently.\n\nThis is not terrorism. This is education at scale.\n\nAPPROVED: The Architect\n\n[CRITICAL EVIDENCE - Operation Shatter]",
|
||||
"observations": "Derek's calculated death projections - critical evidence",
|
||||
"onPickup": { "setVariable": { "found_casualty_projections": true } }
|
||||
},
|
||||
{
|
||||
"type": "notes",
|
||||
"name": "Social Fabric Manifesto",
|
||||
"takeable": true,
|
||||
"readable": true,
|
||||
"text": "═══════════════════════════════════════════════════════════\n ENTROPY CELL: SOCIAL FABRIC\n OPERATIONAL PHILOSOPHY DOCUMENT\n [RECOVERED INTELLIGENCE]\n═══════════════════════════════════════════════════════════\n\nPHILOSOPHY:\n\nSecurity professionals focus on technical defenses—\nfirewalls, encryption, access controls. They miss the\nmost vulnerable attack surface: human belief systems.\n\nPeople don't believe what's true. They believe what\naligns with their existing narratives...\n\nWe don't hack systems. We hack perception.\n\n[LORE Fragment - ENTROPY Cell Intelligence]",
|
||||
"text": "═══════════════════════════════════════════════════════════\n ENTROPY CELL: SOCIAL FABRIC\n OPERATIONAL PHILOSOPHY DOCUMENT\n [RECOVERED INTELLIGENCE]\n═══════════════════════════════════════════════════════════\n\nPHILOSOPHY:\n\nSecurity professionals focus on technical defenses—\nfirewalls, encryption, access controls. They miss the\nmost vulnerable attack surface: human belief systems.\n\nPeople don't believe what's true. They believe what\naligns with their existing narratives.\n\nWe don't hack systems. We hack perception.\n\nOPERATIONAL METHODS:\n- Fabricate content that confirms existing fears\n- Target vulnerable populations with tailored messages\n- Exploit trust in institutional communications\n- Create panic through coordinated false information\n\nACCEPTABLE LOSSES:\nSome will die so others learn the lesson:\nVerify everything. Trust nothing.\nThe weak will die. The adaptable will survive.\n\n[LORE Fragment - ENTROPY Cell Intelligence]",
|
||||
"observations": "ENTROPY operational philosophy - critical intelligence"
|
||||
},
|
||||
{
|
||||
@@ -438,10 +866,18 @@ password_hints = "Common passwords: Marketing123, Campaign2024, Viral_Dynamics_A
|
||||
"name": "Campaign Materials",
|
||||
"takeable": true,
|
||||
"readable": true,
|
||||
"text": "CONFIDENTIAL - Viral Dynamics Campaign Strategy\n\nTarget: Local Election - District 7\n\nPsychological Profiles:\n- Demographic segmentation\n- Emotional trigger mapping\n- Narrative injection points\n\nAssets:\n- Fabricated photo collection\n- Coordinated social media accounts\n- Grassroots front organizations",
|
||||
"text": "CONFIDENTIAL - OPERATION SHATTER ASSETS\n\nTarget: 2.3 million profiled individuals\n\nPsychological Profiles:\n- Medical dependency (insulin, dialysis)\n- Financial anxiety (elderly on fixed incomes)\n- Anxiety disorders (documented conditions)\n- Social isolation (limited support networks)\n\nDeployment Assets:\n- Fabricated hospital closure notices\n- Fake bank failure announcements\n- Forged government emergency alerts\n- Coordinated social media panic accounts\n\nLaunch Window: This Sunday, 6:00 AM\n\n[CRITICAL EVIDENCE - Campaign Assets]",
|
||||
"observations": "Evidence of coordinated disinformation campaign"
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
"type": "notes",
|
||||
"name": "Derek's Calendar",
|
||||
"takeable": true,
|
||||
"readable": true,
|
||||
"text": "DEREK LAWSON - PERSONAL CALENDAR\n\nToday: Client meeting (cover for this operation)\nTomorrow: Final coordination call with ZDS\nSunday: LAUNCH DAY - Operation Shatter goes live\n\nNote to self: Remember to activate Kevin contingency if audit finds anything. His fingerprints are already on the fake logs.",
|
||||
"observations": "Derek's calendar showing Operation Shatter launches Sunday"
|
||||
}
|
||||
]
|
||||
},
|
||||
@@ -449,11 +885,12 @@ password_hints = "Common passwords: Marketing123, Campaign2024, Viral_Dynamics_A
|
||||
"server_room": {
|
||||
"type": "room_servers",
|
||||
"locked": true,
|
||||
"lockType": "key",
|
||||
"lockType": "rfid",
|
||||
"requires": "server_keycard",
|
||||
"connections": {
|
||||
"west": "main_office_area"
|
||||
"west": "hallway_east"
|
||||
},
|
||||
"npcs": [],
|
||||
"objects": [
|
||||
{
|
||||
"type": "vm-launcher",
|
||||
@@ -495,70 +932,17 @@ password_hints = "Common passwords: Marketing123, Campaign2024, Viral_Dynamics_A
|
||||
"name": "Network Backdoor Analysis",
|
||||
"takeable": true,
|
||||
"readable": true,
|
||||
"text": "SAFETYNET Intelligence Report\nCLASSIFICATION: RESTRICTED\n\nANALYSIS: Firmware Backdoor in Social Media Platform\n\nSummary: Social Fabric cell has embedded surveillance capabilities into their platform's core infrastructure. The backdoor operates at the firmware level...\n\n[LORE Fragment - Network Security Intelligence]",
|
||||
"text": "SAFETYNET Intelligence Report\nCLASSIFICATION: RESTRICTED\n\nANALYSIS: Firmware Backdoor in Social Media Platform\n\nSummary: Social Fabric cell has embedded surveillance capabilities into their platform's core infrastructure. The backdoor operates at the firmware level, making it extremely difficult to detect through conventional security audits.\n\nCapabilities:\n- Real-time message interception\n- User behavior profiling\n- Coordinated message injection\n- Trust metric manipulation\n\nThis infrastructure enables Operation Shatter's mass panic deployment.\n\n[LORE Fragment - Network Security Intelligence]",
|
||||
"observations": "Technical analysis of ENTROPY backdoor implementation"
|
||||
}
|
||||
]
|
||||
},
|
||||
|
||||
"conference_room": {
|
||||
"type": "room_office",
|
||||
"connections": {
|
||||
"east": "main_office_area"
|
||||
},
|
||||
"objects": [
|
||||
},
|
||||
{
|
||||
"type": "notes",
|
||||
"name": "Meeting Notes",
|
||||
"name": "Operation Shatter Target Database",
|
||||
"takeable": true,
|
||||
"readable": true,
|
||||
"text": "Campaign Kickoff Meeting\n\nAttendees: Derek Lawson, External Partners\n\nTimeline:\n- Week 1-2: Content creation\n- Week 3-4: Narrative seeding\n- Week 5: Coordinated release\n\nNote: ZDS providing technical infrastructure support",
|
||||
"observations": "Evidence of external collaboration with ZDS (Zero Day Syndicate)"
|
||||
}
|
||||
]
|
||||
},
|
||||
|
||||
"break_room": {
|
||||
"type": "room_office",
|
||||
"connections": {
|
||||
"north": "main_office_area"
|
||||
},
|
||||
"objects": [
|
||||
{
|
||||
"type": "notes",
|
||||
"name": "Coffee Shop Receipt",
|
||||
"takeable": true,
|
||||
"readable": true,
|
||||
"text": "Receipt from 'The Daily Grind' - 11:47 PM\n\nNote written on back:\n'Derek meeting with unknown contact. Discussing 'Phase 3 timeline' and 'Architect's approval'",
|
||||
"observations": "Handwritten note about suspicious late-night meetings"
|
||||
}
|
||||
]
|
||||
},
|
||||
|
||||
"storage_closet": {
|
||||
"type": "room_closet",
|
||||
"locked": false,
|
||||
"connections": {
|
||||
"south": "main_office_area"
|
||||
},
|
||||
"objects": [
|
||||
{
|
||||
"type": "safe",
|
||||
"name": "Storage Safe",
|
||||
"takeable": false,
|
||||
"locked": true,
|
||||
"lockType": "pin",
|
||||
"pin": "1337",
|
||||
"observations": "Electronic keypad safe - needs 4-digit PIN code",
|
||||
"contents": [
|
||||
{
|
||||
"type": "key",
|
||||
"name": "Derek's Office Key",
|
||||
"takeable": true,
|
||||
"key_id": "derek_office_key",
|
||||
"observations": "Spare key to Derek Lawson's office"
|
||||
}
|
||||
]
|
||||
"text": "═══════════════════════════════════════════════════════════\n OPERATION SHATTER - TARGET DEMOGRAPHICS\n [PSYCHOLOGICAL WARFARE DATABASE]\n═══════════════════════════════════════════════════════════\n\nTOTAL PROFILES: 2,347,832\nCOLLECTION PERIOD: 90 days\n\nSEGMENT 1: MEDICAL DEPENDENCY\nPopulation: 47,832 individuals\n- Insulin-dependent diabetics (14,203)\n- Weekly dialysis patients (2,847)\n- Chronic condition requiring hospital visits (30,782)\nVulnerability Score: 9.2/10\n\nSEGMENT 2: FINANCIAL ANXIETY\nPopulation: 156,432 individuals\n- Documented financial stress markers\n- Elderly on fixed incomes\n- Recent job loss indicators\nVulnerability Score: 8.7/10\n\nSEGMENT 3: ANXIETY DISORDERS\nPopulation: 89,247 individuals\n- Documented anxiety or panic disorders\n- Social media behavior indicating stress\nVulnerability Score: 9.5/10\n\nSEGMENT 4: ELDERLY ISOLATED\nPopulation: 34,891 individuals\n- Age 70+ living alone\n- Limited family contact\n- High institutional trust\nVulnerability Score: 9.8/10\n\n[CRITICAL EVIDENCE - Target Database]",
|
||||
"observations": "Database of 2.3 million people profiled for vulnerability to panic",
|
||||
"onPickup": { "setVariable": { "found_target_database": true } }
|
||||
}
|
||||
]
|
||||
}
|
||||
@@ -568,16 +952,29 @@ password_hints = "Common passwords: Marketing123, Campaign2024, Viral_Dynamics_A
|
||||
"player_name": "Agent 0x00",
|
||||
"mission_started": false,
|
||||
"agent_0x99_contacted": false,
|
||||
"player_approach": "",
|
||||
|
||||
"final_choice": "",
|
||||
"derek_cooperative": false,
|
||||
"derek_confronted": false,
|
||||
|
||||
"kevin_choice": "",
|
||||
"kevin_protected": false,
|
||||
|
||||
"found_casualty_projections": false,
|
||||
"found_target_database": false,
|
||||
|
||||
"talked_to_maya": false,
|
||||
"talked_to_kevin": false,
|
||||
"maya_identity_protected": true,
|
||||
|
||||
"objectives_completed": 0,
|
||||
"lore_collected": 0,
|
||||
"evidence_collected": false,
|
||||
"current_task": "",
|
||||
|
||||
"ssh_flag_submitted": false,
|
||||
"linux_flag_submitted": false,
|
||||
"sudo_flag_submitted": false,
|
||||
"derek_confronted": false
|
||||
|
||||
"all_flags_submitted": false
|
||||
}
|
||||
}
|
||||
|
||||
@@ -139,7 +139,9 @@
|
||||
"room_ceo",
|
||||
"room_closet",
|
||||
"room_servers",
|
||||
"room_lab"
|
||||
"room_lab",
|
||||
"small_room_1x1gu",
|
||||
"hall_1x2gu"
|
||||
]
|
||||
},
|
||||
"connections": {
|
||||
|
||||
@@ -406,6 +406,15 @@ Before finalizing your initialization, verify:
|
||||
- **Tone mismatch** - Remember Break Escape is mostly serious with strategic humor
|
||||
- **Scope creep** - Don't try to tell an epic trilogy in a 30-minute scenario
|
||||
|
||||
### Stakes and Evil Pitfalls (CRITICAL)
|
||||
- **Vague threats** - "ENTROPY will hurt people" is weak. Say "42-85 projected casualties"
|
||||
- **Abstract harm** - Name the victims: "elderly people with anxiety disorders"
|
||||
- **Sympathetic villains** - ENTROPY operatives should be TRUE BELIEVERS, not tragic antiheroes
|
||||
- **Missing calculations** - Villains planned this; they have spreadsheets of projected deaths
|
||||
- **No body count** - If people will die, give a number range. Make it real
|
||||
- **No evil monologue** - The villain should explain their philosophy when confronted
|
||||
- **Insufficient evidence** - Player should DISCOVER the evil through gameplay (documents, databases), not just be told about it
|
||||
|
||||
## Examples
|
||||
|
||||
For inspiration, review these example initializations:
|
||||
|
||||
@@ -16,6 +16,110 @@ You are a narrative architect for Break Escape. Your task is to take the initial
|
||||
4. Sets up opportunities for player agency and meaningful choices
|
||||
5. Provides clear dramatic beats that guide the player experience
|
||||
|
||||
---
|
||||
|
||||
## Critical Lessons: Making Stakes Concrete
|
||||
|
||||
### Villains Must Be Clearly Evil
|
||||
|
||||
ENTROPY cells should have **understandable motivations** (they believe what they're doing is justified), but their **actions must be clearly evil**. Avoid vague threats. Be specific about harm:
|
||||
|
||||
**BAD - Vague Threat:**
|
||||
> "ENTROPY is planning something dangerous that could harm people."
|
||||
|
||||
**GOOD - Concrete Evil:**
|
||||
> "Operation Shatter will trigger mass panic in populations ENTROPY has profiled as 'vulnerable to death.' Derek calculated the projected casualties himself: 42-85 deaths, primarily elderly and people with anxiety disorders. The Architect approved it."
|
||||
|
||||
Concrete numbers and specific victims make the evil **real**. Players should feel urgency and moral clarity about stopping ENTROPY.
|
||||
|
||||
### Opening Briefing: Establish Stakes Immediately
|
||||
|
||||
The opening briefing should:
|
||||
|
||||
1. **Name the operation** - Give ENTROPY's plan a code name (e.g., "Operation Shatter")
|
||||
2. **State the body count** - If people will die, say how many (range is fine: "42-85 projected casualties")
|
||||
3. **Identify victims** - Who gets hurt? Be specific (elderly, anxiety sufferers, a specific community)
|
||||
4. **Show ENTROPY's calculation** - The villain planned this; they have projections
|
||||
5. **Create moral urgency** - This isn't abstract; real people die if the player fails
|
||||
|
||||
**Example Opening Briefing Beat:**
|
||||
|
||||
```ink
|
||||
Agent 0x99: This is urgent. We've intercepted ENTROPY operational documents.
|
||||
|
||||
Agent 0x99: They're calling it "Operation Shatter." Mass panic campaign targeting 2.3 million people profiled as "vulnerable to death."
|
||||
|
||||
Agent 0x99: Projected casualties: 42 to 85 people. Heart attacks, suicides, fatal accidents triggered by induced panic.
|
||||
|
||||
Agent 0x99: ENTROPY calculated every one of those deaths. They consider it acceptable.
|
||||
```
|
||||
|
||||
### Avoid Vague "Approach" Choices
|
||||
|
||||
**DON'T** let players pick a vague approach label at mission start:
|
||||
|
||||
```ink
|
||||
// BAD - This doesn't reflect actual gameplay
|
||||
+ [Cautious approach - take it slow]
|
||||
+ [Confident approach - move quickly]
|
||||
+ [Professional approach - by the book]
|
||||
```
|
||||
|
||||
These choices are meaningless because:
|
||||
- They don't map to actual player behavior
|
||||
- Players may not follow through on their stated approach
|
||||
- Debrief can't meaningfully reference a label that didn't affect anything
|
||||
|
||||
**DO** track what players actually do during the mission:
|
||||
|
||||
```ink
|
||||
// GOOD - Track actual discoveries and interactions
|
||||
VAR found_casualty_projections = false
|
||||
VAR found_target_database = false
|
||||
VAR talked_to_maya = false
|
||||
VAR talked_to_kevin = false
|
||||
VAR kevin_protected = false
|
||||
```
|
||||
|
||||
Then reference these in the closing debrief:
|
||||
|
||||
```ink
|
||||
// Debrief references actual player actions
|
||||
{found_casualty_projections:
|
||||
Agent 0x99: You found the casualty projections. Good—that document will be key evidence.
|
||||
}
|
||||
|
||||
{talked_to_kevin and kevin_protected:
|
||||
Agent 0x99: Kevin Park is safe, thanks to your intervention. You went beyond the mission parameters to protect an innocent.
|
||||
}
|
||||
```
|
||||
|
||||
### Closing Debrief: Reflect Actual Choices
|
||||
|
||||
The closing debrief should:
|
||||
|
||||
1. **Reference specific discoveries** - What evidence did the player find?
|
||||
2. **Acknowledge NPC interactions** - Who did the player talk to?
|
||||
3. **Address moral choices** - What did the player decide about optional interventions?
|
||||
4. **Quantify success** - "42-85 people are alive because of your actions"
|
||||
5. **Foreshadow consequences** - How will this mission's choices echo?
|
||||
|
||||
**Example Debrief Tracking:**
|
||||
|
||||
```json
|
||||
"globalVariables": {
|
||||
"found_casualty_projections": false,
|
||||
"found_target_database": false,
|
||||
"talked_to_maya": false,
|
||||
"talked_to_kevin": false,
|
||||
"kevin_choice": "",
|
||||
"kevin_protected": false,
|
||||
"lore_collected": 0,
|
||||
"derek_confronted": false,
|
||||
"final_choice": ""
|
||||
}
|
||||
```
|
||||
|
||||
## Required Input
|
||||
|
||||
You should receive from Stage 0:
|
||||
|
||||
@@ -24,7 +24,7 @@ From previous stages:
|
||||
|
||||
## Required Reading
|
||||
|
||||
###Essential References
|
||||
### Essential References
|
||||
- `story_design/universe_bible/04_characters/safetynet/` - Established SAFETYNET agents
|
||||
- `story_design/universe_bible/04_characters/entropy/` - ENTROPY masterminds and cell leaders
|
||||
- `story_design/universe_bible/03_entropy_cells/[your_cell]/` - Your cell's members
|
||||
@@ -32,10 +32,113 @@ From previous stages:
|
||||
- `story_design/universe_bible/05_world_building/rules_and_tone.md` - Universe rules
|
||||
- Stage 1 narrative structure output
|
||||
|
||||
---
|
||||
|
||||
## Critical Lesson: Villain Characterization
|
||||
|
||||
### The "True Believer" Villain
|
||||
|
||||
ENTROPY operatives should not be sympathetic anti-heroes or tragic figures. They are **true believers** who:
|
||||
|
||||
1. **Believe they're right** - Their philosophy makes sense *to them*
|
||||
2. **Calculate the harm** - They know people will die; they've done the math
|
||||
3. **Feel no remorse** - The harm is "acceptable" or even "necessary"
|
||||
4. **Cannot be turned** - They won't cooperate or flip; they're ideologically committed
|
||||
5. **Explain their philosophy** - When confronted, they articulate their worldview
|
||||
|
||||
### The Evil Monologue
|
||||
|
||||
Every mission's primary ENTROPY operative should have a confrontation moment where they reveal their true nature. This is NOT a sympathetic backstory—it's a window into genuine evil that happens to be articulate.
|
||||
|
||||
**BAD - Tragic Sympathetic Villain:**
|
||||
```ink
|
||||
Derek: You don't understand. I lost my family to corporate negligence.
|
||||
Derek: This is the only way to make them pay.
|
||||
Derek: I never wanted anyone to get hurt...
|
||||
```
|
||||
|
||||
**GOOD - True Believer Villain:**
|
||||
```ink
|
||||
Derek: Forty-two to eighty-five. That's the projection.
|
||||
|
||||
Derek: I calculated every one of them. Stress responses, pre-existing conditions, probability of fatal outcomes.
|
||||
|
||||
+ [You're talking about killing people]
|
||||
Derek: I'm talking about *optimization*.
|
||||
Derek: Those people were already dying—slowly, invisibly, from systems designed to extract value from their suffering.
|
||||
Derek: We're just... accelerating the timeline. Making it visible.
|
||||
|
||||
+ [How can you justify that?]
|
||||
Derek: Justify? I'm *educating*.
|
||||
Derek: When 85 people die in a single panic event, the world pays attention.
|
||||
Derek: When 85,000 die slowly from poverty and stress? That's just Tuesday.
|
||||
Derek: The Architect showed me: sometimes you have to make the invisible visible.
|
||||
```
|
||||
|
||||
### Key Villain Traits
|
||||
|
||||
| Trait | Wrong Approach | Right Approach |
|
||||
|-------|----------------|----------------|
|
||||
| Motivation | "I was hurt, so I hurt others" | "I see a truth others are blind to" |
|
||||
| Remorse | Secretly regrets, can be turned | No regret; this is necessary work |
|
||||
| Calculation | Acts impulsively out of pain | Has spreadsheets of projected deaths |
|
||||
| Philosophy | Generic revenge/greed | Coherent (if monstrous) worldview |
|
||||
| Confrontation | Breaks down, begs for understanding | Explains calmly, almost pityingly |
|
||||
|
||||
### The Moment of Horror
|
||||
|
||||
The player should have a moment where they realize the villain is **worse than expected**:
|
||||
|
||||
```ink
|
||||
// Player finds the casualty projections document
|
||||
// NOT just "ENTROPY bad" but specific names, numbers, demographics
|
||||
|
||||
"OPERATION SHATTER - CASUALTY PROJECTIONS
|
||||
|
||||
Demographic: Adults 65+, anxiety disorder history
|
||||
Exposure: Coordinated panic trigger via social media + news manipulation
|
||||
Projected Outcomes:
|
||||
- Cardiac events: 28-45
|
||||
- Suicide attempts: 12-20 (successful: 4-8)
|
||||
- Fatal accidents during panic: 8-12
|
||||
|
||||
Total Projected Casualties: 42-85
|
||||
|
||||
Approval: [The Architect's signature]
|
||||
Note from Derek: 'Numbers acceptable. Proceed with implementation.'"
|
||||
```
|
||||
|
||||
This document should be **discoverable** through gameplay, not just referenced in dialogue. The player finds the evidence of evil.
|
||||
|
||||
### Innocent Bystanders vs. ENTROPY Operatives
|
||||
|
||||
Clearly distinguish between:
|
||||
|
||||
**Innocent Employees** (victims to protect):
|
||||
- Don't know what's happening
|
||||
- Helpful to the player
|
||||
- May be endangered by ENTROPY plans
|
||||
|
||||
**ENTROPY Operatives** (targets to stop):
|
||||
- Know exactly what they're doing
|
||||
- Have made peace with the harm
|
||||
- Will not cooperate when caught
|
||||
|
||||
The player should feel protective of the former and righteous anger toward the latter.
|
||||
|
||||
---
|
||||
|
||||
## Process
|
||||
|
||||
Develop NPCs, atmospheric design, dialogue guidelines, and key storytelling moments that bring your narrative to life.
|
||||
|
||||
For each ENTROPY operative:
|
||||
1. Define their role in the cell hierarchy
|
||||
2. Articulate their personal philosophy (how they justify the harm)
|
||||
3. Write their "evil monologue" - what they say when confronted
|
||||
4. Determine their response to capture (defiant? calm? contemptuous?)
|
||||
5. Create discoverable evidence that reveals their calculations
|
||||
|
||||
---
|
||||
|
||||
Save your storytelling elements as:
|
||||
|
||||
@@ -33,9 +33,157 @@ From previous stages:
|
||||
- `story_design/universe_bible/05_world_building/rules_and_tone.md` - Ethical framework
|
||||
- `story_design/universe_bible/02_organisations/safetynet/rules_of_engagement.md` - Rules agents must follow
|
||||
|
||||
---
|
||||
|
||||
## Critical Lesson: Mid-Mission Moral Choices
|
||||
|
||||
Every mission should include at least one **mid-mission moral choice** that forces the player to intervene (or not) in something beyond the core mission objectives.
|
||||
|
||||
### Why Mid-Mission Choices Matter
|
||||
|
||||
End-of-mission confrontation choices (arrest vs expose vs recruit) are standard, but the most memorable choices happen **during** the mission when the player discovers something they weren't looking for and must decide what to do about it.
|
||||
|
||||
### The Pattern: Discovery → Personal Stakes → Intervention Choice
|
||||
|
||||
**1. Discovery:** Player finds evidence of something beyond the main mission
|
||||
**2. Personal Stakes:** The victim is someone who helped the player (or is otherwise sympathetic)
|
||||
**3. Intervention Choice:** Player can help, ignore, or exploit the situation
|
||||
|
||||
### Example: Kevin's Frame-Up (Mission 1)
|
||||
|
||||
**Discovery:** On Derek's computer, player finds a file called "CONTINGENCY - IT Audit Response"
|
||||
|
||||
**Content reveals:** Derek plans to frame Kevin Park (the IT guy who gave the player access and trusted them) for the entire data breach. Fake logs, forged emails—Kevin gets arrested while Derek escapes.
|
||||
|
||||
**Personal Stakes:** Kevin helped you. Gave you lockpicks. Trusted you. His kids will watch him get arrested.
|
||||
|
||||
**Intervention Choices:**
|
||||
|
||||
```ink
|
||||
+ [Warn Kevin directly - tell him what's coming]
|
||||
// Risk: Kevin might panic, tip off Derek
|
||||
// Benefit: Kevin can lawyer up, document everything, be prepared
|
||||
#set_variable:kevin_choice=warn
|
||||
#set_variable:kevin_protected=true
|
||||
|
||||
+ [Leave evidence clearing Kevin for investigators]
|
||||
// Risk: Takes time, investigators might miss it
|
||||
// Benefit: Professional, Kevin never knows he was in danger
|
||||
#set_variable:kevin_choice=evidence
|
||||
#set_variable:kevin_protected=true
|
||||
|
||||
+ [Focus on the mission - Kevin's not my responsibility]
|
||||
// Consequence: Kevin gets arrested, trauma for his family
|
||||
// Player lives with that choice
|
||||
#set_variable:kevin_choice=ignore
|
||||
#set_variable:kevin_protected=false
|
||||
```
|
||||
|
||||
### Implementation Pattern
|
||||
|
||||
Mid-mission moral choices are best triggered by **item pickup events**:
|
||||
|
||||
**1. Create a PC or container with incriminating files:**
|
||||
|
||||
```json
|
||||
{
|
||||
"type": "pc",
|
||||
"name": "Derek's Computer",
|
||||
"contents": [
|
||||
{
|
||||
"type": "text_file",
|
||||
"id": "contingency_files",
|
||||
"name": "CONTINGENCY - IT Audit Response",
|
||||
"takeable": true,
|
||||
"text": "If audit discovers anomalies, activate CONTINGENCY.\n\nIT Manager Kevin Park becomes the fall guy..."
|
||||
}
|
||||
]
|
||||
}
|
||||
```
|
||||
|
||||
**2. Add event mapping to handler NPC (phone contact):**
|
||||
|
||||
```json
|
||||
{
|
||||
"eventPattern": "item_picked_up:contingency_files",
|
||||
"targetKnot": "event_contingency_found",
|
||||
"onceOnly": true
|
||||
}
|
||||
```
|
||||
|
||||
**3. Ink script presents the choice with handler guidance:**
|
||||
|
||||
```ink
|
||||
=== event_contingency_found ===
|
||||
#speaker:agent_0x99
|
||||
|
||||
Agent 0x99: I just saw what you pulled from Derek's computer.
|
||||
|
||||
Agent 0x99: He's planning to frame Kevin Park for the entire breach.
|
||||
|
||||
Agent 0x99: Kevin—the IT guy who gave you access, who trusted you—is going to take the fall.
|
||||
|
||||
+ [What can I do about it?]
|
||||
-> intervention_options
|
||||
```
|
||||
|
||||
### Choice Design Principles
|
||||
|
||||
**1. No Clear Right Answer**
|
||||
- Warn Kevin: He's protected, but he might panic and compromise the mission
|
||||
- Plant evidence: Professional, but takes time and might be missed
|
||||
- Ignore: Mission-focused, but you live with the guilt
|
||||
|
||||
**2. Personal Connection Required**
|
||||
The victim should be someone the player has interacted with positively:
|
||||
- Kevin gave the player lockpicks
|
||||
- Maya provided intel that saved lives
|
||||
- The security guard shared coffee and small talk
|
||||
|
||||
**3. Consequences Must Echo**
|
||||
The debrief should acknowledge the choice:
|
||||
|
||||
```ink
|
||||
{kevin_choice == "warn":
|
||||
Agent 0x99: Kevin Park is safe. He's already lawyered up.
|
||||
Agent 0x99: That was beyond mission parameters, but... it was the right call.
|
||||
}
|
||||
|
||||
{kevin_choice == "ignore":
|
||||
Agent 0x99: Kevin Park was arrested this morning.
|
||||
Agent 0x99: He'll be cleared eventually. But that's not something you just walk off.
|
||||
Agent 0x99: His kids watched him get taken away in handcuffs.
|
||||
}
|
||||
```
|
||||
|
||||
### More Mid-Mission Choice Examples
|
||||
|
||||
**Example 2: The Whistleblower's Family**
|
||||
Player finds evidence that Maya's family is being surveilled by ENTROPY. Warn Maya (breaking protocol) or trust SAFETYNET to handle it (but they're slow)?
|
||||
|
||||
**Example 3: The Undercover Agent**
|
||||
Player discovers an undercover cop is about to be exposed. Blow their cover to save them, or let ENTROPY discover them to maintain your own cover?
|
||||
|
||||
**Example 4: The Innocent Data**
|
||||
Player must exfiltrate ENTROPY data, but the files also contain private medical records of innocent people. Take everything (evidence + privacy violation) or leave behind the sensitive data (ethics + incomplete intel)?
|
||||
|
||||
**Example 5: The Competing Victim**
|
||||
ENTROPY is about to ruin two people's lives, but you only have time to warn one. Who do you save?
|
||||
|
||||
---
|
||||
|
||||
## Process
|
||||
|
||||
Design 2-4 major choices with genuine ethical complexity, clear consequences across multiple layers (immediate, mid-scenario, ending).
|
||||
Design 2-4 major choices:
|
||||
- **1 end-of-mission confrontation choice** (standard)
|
||||
- **1-3 mid-mission intervention choices** (triggered by discovery)
|
||||
|
||||
For each choice:
|
||||
1. Define the discovery trigger (what document/evidence reveals the dilemma?)
|
||||
2. Establish personal stakes (who gets hurt? why should player care?)
|
||||
3. Design 2-4 options with distinct moral flavors
|
||||
4. Map consequences (immediate, debrief, future missions)
|
||||
5. Create implementation plan (event mappings, Ink knots, variables)
|
||||
|
||||
---
|
||||
|
||||
|
||||
@@ -33,10 +33,126 @@ From previous stages:
|
||||
- `story_design/universe_bible/03_entropy_cells/[your_cell]/` - Cell LORE opportunities
|
||||
- `story_design/universe_bible/10_reference/style_guide.md` - Writing style
|
||||
|
||||
---
|
||||
|
||||
## Critical Lesson: LORE as Evidence of Evil
|
||||
|
||||
LORE fragments should not just be flavor text—they should **expose the villain's plans** in horrifying detail. The player should discover the evil through gameplay, not just be told about it in dialogue.
|
||||
|
||||
### Evidence Discovery Fragments
|
||||
|
||||
At least 2-3 LORE fragments per mission should be **evidence documents** that reveal:
|
||||
|
||||
1. **The Plan's Scope** - How many people will be affected?
|
||||
2. **The Calculations** - The villain did the math; show the spreadsheet
|
||||
3. **The Approval Chain** - Who signed off? (The Architect, cell leaders)
|
||||
4. **The Victims** - Demographics, profiles, targeting criteria
|
||||
|
||||
### Example: Operation Shatter LORE
|
||||
|
||||
**Fragment #4: Casualty Projections**
|
||||
```
|
||||
═══════════════════════════════════════
|
||||
OPERATION SHATTER - CASUALTY PROJECTIONS
|
||||
Classification: ENTROPY EYES ONLY
|
||||
═══════════════════════════════════════
|
||||
|
||||
DEMOGRAPHIC TARGETING:
|
||||
Adults 65+ with anxiety disorder history
|
||||
Population identified: 2.3 million
|
||||
|
||||
PROJECTED OUTCOMES:
|
||||
- Cardiac events: 28-45 fatalities
|
||||
- Suicide attempts: 12-20 (successful: 4-8)
|
||||
- Fatal accidents during panic: 8-12
|
||||
|
||||
TOTAL PROJECTED CASUALTIES: 42-85
|
||||
|
||||
STATUS: Approved
|
||||
AUTHORIZATION: [The Architect]
|
||||
|
||||
Note from D.L.: "Numbers acceptable.
|
||||
Collateral within parameters. Proceed."
|
||||
```
|
||||
|
||||
**Fragment #5: Target Demographics Database**
|
||||
```
|
||||
═══════════════════════════════════════
|
||||
TARGET DEMOGRAPHICS - OPERATION SHATTER
|
||||
Classification: ENTROPY EYES ONLY
|
||||
═══════════════════════════════════════
|
||||
|
||||
2.3 million individuals profiled across
|
||||
three vulnerability metrics:
|
||||
|
||||
1. FEAR SUSCEPTIBILITY (anxiety history)
|
||||
2. ISOLATION FACTOR (limited support network)
|
||||
3. HEALTH FRAGILITY (cardiovascular, respiratory)
|
||||
|
||||
Cross-referencing social media behavioral
|
||||
patterns with medical data obtained from
|
||||
compromised healthcare systems.
|
||||
|
||||
Each profile includes:
|
||||
- Predicted panic response intensity
|
||||
- Estimated recovery time
|
||||
- Probability of fatal outcome
|
||||
|
||||
[Database excerpt shows names, ages, and
|
||||
mortality probability percentages]
|
||||
```
|
||||
|
||||
### Fragment Discovery Should Track Progress
|
||||
|
||||
Set global variables when key evidence is discovered:
|
||||
|
||||
```json
|
||||
{
|
||||
"type": "notes",
|
||||
"id": "casualty_projections",
|
||||
"name": "Operation Shatter Casualty Projections",
|
||||
"takeable": true,
|
||||
"observations": "A classified ENTROPY document with disturbing projections",
|
||||
"onPickup": "#set_variable:found_casualty_projections=true"
|
||||
}
|
||||
```
|
||||
|
||||
The closing debrief should acknowledge what evidence the player found:
|
||||
|
||||
```ink
|
||||
{found_casualty_projections:
|
||||
Agent 0x99: You found the casualty projections.
|
||||
Agent 0x99: That document proves premeditation. They calculated every death.
|
||||
}
|
||||
|
||||
{found_target_database:
|
||||
Agent 0x99: The target database is damning. 2.3 million people profiled for "vulnerability to death."
|
||||
Agent 0x99: That's mass murder by algorithm.
|
||||
}
|
||||
```
|
||||
|
||||
### LORE Categories for Evidence
|
||||
|
||||
| Category | Purpose | Example |
|
||||
|----------|---------|---------|
|
||||
| **Operational Documents** | Show the plan's details | Casualty projections, timelines |
|
||||
| **Communications** | Show approval/coordination | Emails, chat logs with The Architect |
|
||||
| **Databases/Lists** | Show scale of harm | Target demographics, victim profiles |
|
||||
| **Personal Notes** | Show villain's mindset | Derek's journal, rationalization notes |
|
||||
| **External Validation** | Show plan is real/imminent | News clippings, test results |
|
||||
|
||||
---
|
||||
|
||||
## Process
|
||||
|
||||
Determine fragment budget (6-20 depending on scenario length), plan fragment arc, design individual fragments (50-200 words each), create metadata, map discovery flow, and validate against LORE system.
|
||||
|
||||
**For each scenario, ensure:**
|
||||
- At least 2-3 fragments are **evidence documents** exposing the evil plan
|
||||
- Evidence documents include **specific numbers** (casualties, targets, victims)
|
||||
- Evidence discovery is **tracked with variables** for debrief reference
|
||||
- Evidence is **discoverable through gameplay** (not just in dialogue)
|
||||
|
||||
---
|
||||
|
||||
Save your LORE fragments as:
|
||||
|
||||
@@ -152,6 +152,80 @@ If you're using these prompts to guide your own design process:
|
||||
- **Stage 7:** Ink scripts handle flag submission and CyberChef workstation dialogues
|
||||
- **Stage 9:** ERB templates generate encoded messages, VM and narrative integrated in scenario.json.erb
|
||||
|
||||
## Key Lessons Learned
|
||||
|
||||
These lessons emerged from iterating on Mission 1 and should inform all future scenario development.
|
||||
|
||||
### 1. Make Stakes Concrete with Specific Numbers
|
||||
|
||||
**DON'T:** "ENTROPY is planning something that could hurt people."
|
||||
**DO:** "Operation Shatter will kill 42-85 people—elderly, anxiety sufferers—ENTROPY calculated every death."
|
||||
|
||||
Vague threats create vague stakes. Specific casualty projections make the evil real.
|
||||
|
||||
### 2. Villains Must Be True Believers, Not Sympathetic
|
||||
|
||||
ENTROPY operatives should:
|
||||
- Believe they're right (coherent philosophy)
|
||||
- Have calculated the harm (spreadsheets of projected deaths)
|
||||
- Feel no remorse ("acceptable casualties")
|
||||
- Refuse to cooperate when caught (ideologically committed)
|
||||
- Explain their worldview in an "evil monologue"
|
||||
|
||||
They are NOT tragic antiheroes seeking redemption.
|
||||
|
||||
### 3. Avoid Vague "Approach" Choices
|
||||
|
||||
**DON'T:** Let players pick a label at mission start ("Cautious", "Confident", "Professional")
|
||||
|
||||
These don't affect gameplay and can't be meaningfully referenced in debriefs.
|
||||
|
||||
**DO:** Track what players actually do during the mission:
|
||||
- Which evidence did they find?
|
||||
- Who did they talk to?
|
||||
- What moral choices did they make?
|
||||
|
||||
Then reference these specific actions in the closing debrief.
|
||||
|
||||
### 4. Include Mid-Mission Moral Choices
|
||||
|
||||
Every mission should have at least one intervention choice triggered by discovery:
|
||||
|
||||
1. **Discovery:** Player finds evidence of harm beyond the mission
|
||||
2. **Personal Stakes:** The victim is someone who helped the player
|
||||
3. **Choice:** Intervene (warn, protect) or focus on mission (ignore)
|
||||
|
||||
Example: Derek's plan to frame Kevin (who gave the player lockpicks). Player can warn Kevin, plant clearing evidence, or ignore it.
|
||||
|
||||
### 5. Evidence Should Be Discoverable Through Gameplay
|
||||
|
||||
Don't just tell players about ENTROPY's evil in dialogue. Let them **find** the evidence:
|
||||
- Casualty projection documents on villain's computer
|
||||
- Target demographic databases in the server room
|
||||
- Email chains showing approval from The Architect
|
||||
|
||||
Use LORE fragments and collectible items to expose the plan piece by piece.
|
||||
|
||||
### 6. Closing Debrief Should Reflect Actual Choices
|
||||
|
||||
Track player actions with global variables:
|
||||
```json
|
||||
"globalVariables": {
|
||||
"found_casualty_projections": false,
|
||||
"talked_to_kevin": false,
|
||||
"kevin_protected": false,
|
||||
"lore_collected": 0
|
||||
}
|
||||
```
|
||||
|
||||
Debrief should acknowledge:
|
||||
- What evidence the player found
|
||||
- Which NPCs the player interacted with
|
||||
- How moral choices resolved
|
||||
- Quantified success ("42-85 people are alive because of you")
|
||||
|
||||
---
|
||||
|
||||
## Required Context
|
||||
|
||||
Before starting, ensure you have access to:
|
||||
|
||||
Reference in New Issue
Block a user