198 Commits

Author SHA1 Message Date
Z. Cliffe Schreuders
0a213670cd Add attack trigger terminal dialogue script for Mission 4
Created m04_terminal_attack_trigger.ink (370 lines) - ENTROPY command laptop
interface for disabling attack mechanisms in maintenance wing.

Key features:
- Three-vector attack status display (physical, SCADA, trigger)
- Methodical disabling sequence for remote trigger
- Safe disabling steps (command channel, fail-safe, manual trigger)
- Attack status tracking (attack_vectors_disabled counter)
- Operation intelligence files access (The Architect references)
- Success confirmation when all vectors neutralized

Terminal UI format with system messages and command sequences.
Critical path script 5 of 6 complete.
2026-01-14 09:46:33 +00:00
Z. Cliffe Schreuders
92942b2a21 Add Voltage confrontation dialogue script for Mission 4
Created m04_npc_voltage.ink (374 lines) - climactic antagonist encounter
with Critical Mass leader featuring complex branching outcomes.

Key features:
- Voltage leverage system (active trigger vs. disabled)
- Player choice: capture risky vs. disable safe
- Negotiation paths with ideology explanation
- Combat difficulty based on player priority
- Multiple outcomes (capture, escape, emergency trigger)
- The Architect intelligence revelation
- OptiGrid Solutions multi-site threat hint

Implements dialogue planning from Stage 6 for Voltage confrontation.
Critical path script 4 of 6 complete.
2026-01-14 09:46:33 +00:00
Z. Cliffe Schreuders
7a69835e14 Add Agent 0x99 phone support dialogue script for Mission 4
Created m04_phone_agent0x99.ink (510 lines) - strategic guidance system
providing event-triggered phone support throughout the mission.

Key features:
- Handler confidence tracking (0-100) affecting dialogue tone
- Event-triggered conversations (server room, attack identified)
- Adaptive guidance based on player progress and choices
- Player-initiated help system (priorities, intel, tactical hints)
- Voltage capture vs. speed guidance for final phase
- Multi-stage mission progression support

Implements dialogue planning from Stage 6 for Agent 0x99 phone contact.
2026-01-14 09:46:33 +00:00
Z. Cliffe Schreuders
fe4ff43518 Create Robert Chen Ink dialogue script (Mission 4)
Complete multi-stage conversation system for facility manager:
- 402 lines with extensive branching dialogue
- 2 major conversations: initial meeting + SCADA discovery
- Early reveal option (player can reveal mission immediately)
- Forced reveal path (mission revealed during SCADA investigation)
- Trust system tracking (chen_trust_level 0-100)

Key conversation paths:
1. Initial Meeting (Task 1.2):
   - Multiple player approach styles (professional, apologetic, direct)
   - Optional early mission reveal
   - OptiGrid maintenance discussion
   - Provides Level 1 keycard

2. SCADA Anomaly Discovery (Task 1.4):
   - Technical explanation of threat
   - Mission reveal (if not done earlier)
   - Chen becomes ally
   - Suggests server room investigation

Variables tracked:
- chen_trust_level (affects cooperation throughout mission)
- revealed_mission (changes dialogue branches)
- chen_is_ally (activates support features)
- scada_threat_confirmed (objective progression)

Estimated voice lines: 120-140 (Chen's most complex dialogue)

Progress: 2/12 Ink scripts complete (16.7%)
2026-01-14 09:46:33 +00:00
Z. Cliffe Schreuders
25661e6c5d Create Mission 4 opening briefing Ink dialogue script
Complete opening briefing with Agent 0x99:
- 241 lines (branching dialogue structure)
- 14 conversation knots with player choices
- Variables: player_approach, handler_trust, combat_ready
- Key information delivery:
  - Critical Mass cell introduction
  - Chemical threat (chlorine weaponization)
  - 240,000 residents at risk
  - 4 hostile operatives (Cipher, Relay, Static, Voltage)
  - EPA auditor cover identity
  - The Architect revelation
  - Combat system introduction

Dialogue branches cover:
- Threat assessment
- ENTROPY ideology
- Combat readiness
- Mission priorities (attack prevention vs. capture)
- Cover identity usage
- Timeline and stakes

Variables track player personality for future dialogue adaptation.

Progress: 1/12 Ink scripts complete (8.3%)
2026-01-14 09:46:33 +00:00
Z. Cliffe Schreuders
a931c4180f Add Mission 4 implementation status tracking document
Comprehensive status tracking for M4 development:
- Overall progress: 70% complete
- Planning documentation: 100% (9 stages, ~9,297 lines)
- Core implementation: 100% (scenario.json.erb, mission.json)
- Dialogue scripts: 0% (12 scripts needed)
- Asset production: 0% (sprites, VO, music)

Key achievements:
- 0 validation errors (vs M3's 46)
- Complete room and NPC structure
- VM integration configured
- All objectives and tasks defined

Next steps:
- Create 12 Ink dialogue scripts (~480-595 lines)
- Asset production (sprites, VO, music)
- SecGen VM scenario development
2026-01-14 09:46:33 +00:00
Z. Cliffe Schreuders
8bd2f4dbcf Add Mission 4 metadata file (mission.json)
Mission display information and CyBOK mappings:
- Display name: Critical Failure
- Difficulty: 2 (Intermediate)
- SecGen scenario: vulnerability_analysis
- 6 CyBOK knowledge areas mapped
- Focus: SCADA/ICS security, infrastructure protection, combat

CyBOK areas: NS, SS, IS, AB, HF, IR
2026-01-14 09:46:33 +00:00
Z. Cliffe Schreuders
ae26085f05 Complete Mission 4 'Critical Failure' scenario.json.erb
Created complete scenario file for M4 with:
- 3 objectives, 17 tasks (15 required, 2 optional combat)
- 9 rooms (water treatment facility)
- VM integration (vulnerability_analysis scenario with 4 flags)
- 8 NPCs (Robert Chen + 3 phone NPCs + 4 ENTROPY operatives)
- Complete narrative structure and objects
- 931 lines total

Validation results: 0 errors (vs M3's 46 errors)
- Schema validation: PASSED
- ERB rendering: PASSED
- All room types corrected to match schema
- Bidirectional connections verified

Mission specifications:
- Setting: Pacific Northwest Water Treatment Facility
- Threat: Critical Mass cell weaponizing chlorine dosing
- SCADA investigation with combat encounters
- Cross-cell coordination revealed (Critical Mass + Social Fabric)
- The Architect's larger plan introduced

This completes the scenario implementation phase following all 9 stages
of planning documentation (Stage 1-9 complete).
2026-01-14 09:46:33 +00:00
Z. Cliffe Schreuders
50bbf22269 Add flag submission tasks to main mission objective
- Add 4 submit_flags tasks following M1 pattern
- submit_network_scan_flag: flag{network_scan_complete}
- submit_ftp_flag: flag{ftp_intel_gathered}
- submit_http_flag: flag{pricing_intel_decoded}
- submit_distcc_flag: flag{distcc_legacy_compromised}
- Provides clear player guidance for flag submission
- Aligns with success criteria requiring all 4 VM flags
2026-01-14 09:46:33 +00:00
Z. Cliffe Schreuders
11ba86df99 Add high priority quality improvements to M3 scenario
- Add currentKnot to 3 NPCs (receptionist, guard, Victoria)
- Add player sprite configuration (Agent 0x00)
- Add closing debrief phone NPC with eventMapping trigger
- Add victoria_choice_made global variable for debrief trigger
- Fixes all 4 missing recommended fields from validation
2026-01-14 09:46:33 +00:00
Z. Cliffe Schreuders
e304fffd69 Update VM launcher, flag station, and add opening briefing
- vm-launcher: Add hacktivityMode and vm object following M1 pattern
- flag-station: Add acceptsVms and flags arrays for 4 VM flags
- Add opening briefing NPC with timedConversation cutscene
- Flags: network_scan, ftp_intel, pricing_intel, distcc_exploit
- Opens with Agent 0x99 briefing in reception lobby
2026-01-14 09:46:32 +00:00
Z. Cliffe Schreuders
0ddee347b2 Add compiled Ink dialogue scripts for Mission 3
- Copy 9 compiled JSON files from planning to scenario ink directory
- m03_opening_briefing.json - Mission briefing cutscene
- m03_npc_receptionist.json - Receptionist dialogue
- m03_npc_victoria.json - Victoria Sterling dialogue
- m03_npc_guard.json - Night guard dialogue
- m03_phone_agent0x99.json - Agent 0x99 phone contact
- m03_james_choice.json - James Park moral choice
- m03_terminal_cyberchef.json - CyberChef terminal
- m03_terminal_dropsite.json - Drop-site terminal
- m03_closing_debrief.json - Mission closing debrief
2026-01-14 09:46:32 +00:00
Z. Cliffe Schreuders
ec749f2599 Fix keyPins ranges to match M1/M2 (25-60), fix PIN lock to use requires 2026-01-14 09:46:32 +00:00
Z. Cliffe Schreuders
5109e261f3 Fix key lock validation: add keyPins to all key locks 2026-01-14 09:46:32 +00:00
Z. Cliffe Schreuders
25fc9f341c Convert all objects to valid item types, remove unsupported features 2026-01-14 09:46:32 +00:00
Z. Cliffe Schreuders
d8c956f197 Fix NPC structure: rename to displayName/npcType, remove unsupported features 2026-01-14 09:46:32 +00:00
Z. Cliffe Schreuders
84abcdf439 Add type field to all 7 rooms, remove extra metadata 2026-01-14 09:46:32 +00:00
Z. Cliffe Schreuders
4c04abd535 Fix objectives: add order field, flatten structure, add task types 2026-01-14 09:46:32 +00:00
Z. Cliffe Schreuders
a5e940f127 Backup scenario.json.erb before schema restructuring 2026-01-14 09:46:32 +00:00
Z. Cliffe Schreuders
d99a6370a0 Add JSON escaping for multi-line content strings 2026-01-14 09:46:32 +00:00
Z. Cliffe Schreuders
30395481cd Fix Unicode arrow character in operational log content 2026-01-14 09:46:32 +00:00
Z. Cliffe Schreuders
8143416338 Add Mission 3 scenario structure (scenario.json.erb) 2026-01-14 09:46:32 +00:00
Z. Cliffe Schreuders
1d9140ab4d Add Mission 3 metadata (mission.json) 2026-01-14 09:46:32 +00:00
Z. Cliffe Schreuders
4101fcb838 Add clear constant objectives reference for Mission 2
Created OBJECTIVES.md as quick-reference guide for Mission 2's constant objectives:

📋 Clear Structure:
- 5 Main Objectives clearly listed with descriptions
- 15 Total Tasks with unlock conditions
- Visual progression flow diagram
- Quick reference table for developers/players

Objectives Summary:
1. Infiltrate Hospital (3 tasks) - Active at start
2. Access IT Systems (3 tasks) - Unlocks after Objective 1
3. Exploit ENTROPY's Backdoor (4 tasks) - Unlocks after server room access
4. Recover Offline Backup Keys (3 tasks) - Unlocks after database flag
5. Make Critical Decisions (2 tasks) - Unlocks after Objectives 3 & 4

🔒 Progressive Unlock System:
Start → Obj 1 → Obj 2 → Obj 3 + Obj 4 → Obj 5 → Complete

 Constant Objectives Guaranteed:
- Defined once in scenario.json.erb (lines 41-183)
- Same 5 objectives, same 15 tasks throughout mission
- No dynamic or changing objectives
- Clear unlock conditions for each objective

Quick Reference Includes:
- Task IDs for development
- Minimum completion requirements (60% vs 100%)
- Key answers (PIN: 1987, passwords, flags)
- Moral choice options

Purpose:
- Player reference during gameplay
- Developer reference for implementation
- QA reference for testing
- Documentation of constant objective set

This ensures Mission 2 has a clear, constant, and well-documented set of objectives.
2026-01-14 09:46:31 +00:00
Z. Cliffe Schreuders
26a5d6fafa Add Mission 2 objectives verification document
Created OBJECTIVES_VERIFICATION.md to confirm objectives are clear and constant:

 Verification Status: PASS
- 5 well-defined objectives with descriptive titles
- 15 specific tasks with explicit completion criteria
- Consistent across all files (scenario.json.erb, SOLUTION_GUIDE.md, Ink scripts)
- Progressive unlock structure ensures linear story flow
- Multiple solution paths documented for flexibility

Objectives Summary:
1. Infiltrate Hospital (3 tasks) - Active at start
2. Access IT Systems (3 tasks) - Unlocks after Objective 1
3. Exploit ENTROPY's Backdoor (4 tasks) - Unlocks after server room access
4. Recover Offline Backup Keys (3 tasks) - Unlocks after database flag
5. Make Critical Decisions (2 tasks) - Unlocks after Objectives 3 & 4

Cross-File Verification:
 scenario.json.erb: 5 objectives, 15 tasks
 SOLUTION_GUIDE.md: 5 objectives, 15 tasks (documented)
 Ink scripts: Reference tasks via #complete_task tags
 Global variables: Track objective states

Progression Flow:
Start → Obj 1 → Obj 2 → Obj 3 + Obj 4 → Obj 5 → Complete

Completion Requirements:
- Minimum (60%): 2+ VM flags, offline keys, both moral choices
- Perfect (100%): All 15 tasks, 4 VM flags, 3 LORE fragments, Marcus protected

Player-Facing Clarity:
- Clear task titles guide player actions
- Progressive unlocking prevents confusion
- Multiple solution paths (social, stealth, combat)
- No ambiguity in completion criteria

Optional Content (not required for completion):
- Marcus Protection Choice (moral decision)
- LORE Fragment Collection (3 fragments for narrative depth)

Result: Mission 2 objectives are clear, constant, and suitable for:
- Player guidance during gameplay
- Completion tracking for mission scoring
- Educational assessment of learning outcomes
- Narrative pacing and tension building
2026-01-14 09:46:31 +00:00
Z. Cliffe Schreuders
b3156bf125 Complete Mission 2 comprehensive solution guide (2085 lines)
Added remaining sections to SOLUTION_GUIDE.md:
- Complete Item List (starting inventory, key items, optional items)
- LORE Items (all 3 fragments with locations)
- Environmental Clues (founding plaque, sticky notes, emails)
- VM-Related Items (all 4 flags with rewards)
- Speedrun Optimization Guide (minimal 60% + perfect 100% routes)
- Achievement Guide (story, ethical, combat, stealth, speedrun)
- Common Mistakes & Solutions (7 troubleshooting scenarios)
- Educational Learning Outcomes (CyBOK mapping for 8 knowledge areas)
- Conclusion (key takeaways, Season 1 connection, final statistics)

Guide Contents Summary:
 Mission Overview (47 patients, 12-hour crisis, 2.5 BTC ransom)
 Complete Objectives List (5 constant aims, ~17 tasks)
 ASCII Room Layout Diagram (8 rooms with guard patrol route)
 3 Step-by-Step Walkthroughs (Optimal/Combat/Social paths)
 NPC Interaction Guide (5 NPCs with influence systems)
 Puzzle Solutions (PIN 1987, Base64, ROT13)
 VM Challenge Solutions (all 4 flags with commands)
 LORE Fragment Locations (3 fragments with narrative significance)
 Moral Choices & Consequences (3 choices with decision matrices)
 Complete Item List (40+ items categorized)
 Speedrun Routes (35-min minimal, 65-min perfect)
 Achievement Guide (20+ achievements)
 Common Mistakes (7 issues with solutions)
 Educational Outcomes (8 CyBOK knowledge areas)

Perfect Run Statistics:
- Rooms: 8/8
- NPCs: 5/5 (Dr. Kim, Marcus, Guard, Agent 0x99, Ghost)
- VM Flags: 4/4
- LORE: 3/3
- Moral Choices: 3/3
- Time: 65-75 minutes
- Score: 100%

Educational Focus:
- MAT: Ransomware, ProFTPD CVE-2010-4652
- IR: Recovery procedures, backup importance
- NSS: SSH weaknesses, FTP vulnerabilities
- ACS: Encoding vs encryption, Base64, ROT13
- SS: Linux navigation, file permissions
- HF: Social engineering, scapegoating dynamics
- AB: Threat actor motivations, ransomware economics
- SOC: Physical security, investigation techniques

Narrative Impact:
- LORE 3 (ZDS Invoice) sets up Mission 3: "Ghost in the Machine"
- First evidence of ENTROPY cell coordination under "The Architect"
- Connects Ransomware Inc → Zero Day Syndicate → Crypto Anarchists
- Transforms Season 1 from isolated missions to connected campaign

Document is now complete and ready for playtesting reference.
2026-01-14 09:46:31 +00:00
Z. Cliffe Schreuders
9cb607ddf6 Add interactive guard with combat options to Mission 2
Implemented patrolling security guard in hallway_north with multiple
player interaction options including combat/fighting mechanics.

New Features:
1. Interactive Security Guard NPC
   - Patrols hallway_north corridor (4-waypoint route)
   - Line-of-sight detection (150px range, 120° angle)
   - Lockpicking detection (event-triggered confrontation)
   - Visual LOS cone for player awareness

2. Combat/Fighting Options
   Player can choose to physically confront the guard:
   - Knockout punch (quick but risky)
   - Wrestling/grappling (moderate difficulty)
   - Improvised weapon (fire extinguisher)
   - Back down from fight (de-escalation)

   Success depends on influence stat:
   - High influence: Guard knocked out, ~2 min window
   - Low influence: Failed attack, mission compromised

3. Alternative Approaches
   - Social engineering (claim authorization, emergency)
   - Persuasion (explain situation, build rapport)
   - De-escalation (apologize, back down)
   - Avoidance (wait for patrol to pass)

4. Consequences System
   - #hostile tag: Guard calls backup
   - #take_damage: Failed combat consequences
   - #mission_failed: Attacking security = mission end
   - Guard knockout: Time-limited stealth window

Files Added:
- m02_npc_security_guard.ink (500+ lines)
- m02_npc_security_guard.json (compiled)

Files Modified:
- scenario.json.erb:
  - Added interactive guard NPC to hallway_north
  - Patrol behavior with 4 waypoints
  - LOS and lockpicking event detection
  - Global variables: guard_knocked_out, attacked_guard

Validation: ✓ PASSED
- Schema compliant
- JSON valid
- Ink script compiles successfully

Design Notes:
- Based on npc-patrol-lockpick test scenario
- Integrated with M2's hospital crisis context
- Multiple paths support different playstyles
- Combat is high-risk/high-reward option
- Aligns with SAFETYNET Field Rule 7: improvise as needed
2026-01-14 09:46:31 +00:00
Z. Cliffe Schreuders
bf90ad2769 Fix Mission 2 scenario validation errors - JSON now valid
Fixed 2 critical issues preventing validation:

1. JSON newline escaping (line 429):
   - Changed: "text": "<%= marcus_warning_email %>"
   - To: "text": <%= marcus_warning_email.to_json %>
   - Root cause: Ruby \n sequences became literal newlines in JSON
   - Fix: .to_json properly escapes strings for JSON format

2. Invalid object type (line 561):
   - Changed: "type": "key_data"
   - To: "type": "notes"
   - Issue: "key_data" not in schema's allowed types
   - Fix: Using "notes" for USB drive with backup encryption keys

Validation Results:
✓ ERB renders successfully
✓ JSON parses without errors
✓ Schema validation PASSED
⚠ 8 non-critical warnings/suggestions (optional enhancements)

Schema validation summary:
- All required fields present
- All object types valid
- Room dimensions compliant
- Connection structure valid
- NPC and item placement correct

Scenario is now ready for testing and implementation!
2026-01-14 09:46:31 +00:00
Z. Cliffe Schreuders
fcf2b60c14 Add Mission 2 'Ransomed Trust' scenario implementation (WIP)
Created comprehensive scenario files for Mission 2:
- mission.json metadata with CyBOK mappings
- scenario.json.erb with 8 rooms, 4 NPCs, objectives, items
- 8 compiled Ink scripts (789 total lines including JSON)

Ink Scripts (All Successfully Compiled ):
- m02_opening_briefing.json - Act 1 emergency briefing
- m02_npc_sarah_kim.json - Hospital CTO dialogue
- m02_npc_marcus_webb.json - IT Admin dialogue
- m02_terminal_dropsite.json - VM flag submission
- m02_terminal_ransom_interface.json - Ransom decision
- m02_phone_agent0x99.json - Handler support
- m02_phone_ghost.json - Antagonist communication
- m02_closing_debrief.json - Outcome acknowledgment

Scenario Features:
- 8 rooms: Reception, IT Dept, Server Room, Emergency Storage,
  Dr. Kim's Office, Conference Room, 2 Hallways
- 4 NPCs: Dr. Kim, Marcus Webb, Receptionist, Guard (patrol)
- 5 Objectives with progressive unlocking
- VM integration: SecGen "Rooting for a win" scenario
- 3 LORE fragments (CryptoSecure, Ghost Manifesto, ZDS Invoice)
- PIN puzzle (1987), lockpicking, social engineering
- Moral choices: Ransom payment, hospital exposure, Marcus protection

Known Issues (To Fix):
- JSON newline escaping in multi-line text fields (line 393)
- Text fields need \n instead of literal newlines
- Validation script shows "Invalid control character" error

Next Steps:
- Fix JSON escaping in scenario.json.erb
- Run validation script successfully
- Add recommended tutorials (PIN puzzle, Marcus reminder)
- Test scenario compilation and gameplay
2026-01-14 09:46:31 +00:00
Z. Cliffe Schreuders
6c3285d745 Update CyBOK metadata 2026-01-13 13:28:14 +00:00
Z. Cliffe Schreuders
2b0c68e961 Revise SOLUTION_GUIDE.md for improved room layout and navigation clarity
- Updated room connections and layout to enhance player exploration and interaction.
- Added a Room Connections Summary table for quick reference on room access and directions.
- Revised step-by-step solution to clarify actions and results, ensuring a more intuitive gameplay experience.
- Enhanced puzzle chain diagram to reflect updated room connections and paths.
- Removed outdated content to streamline the guide and focus on essential gameplay elements.
2025-12-08 00:24:45 +00:00
Z. Cliffe Schreuders
adbd7a64b0 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.
2025-12-08 00:20:50 +00:00
Z. Cliffe Schreuders
9ca6474141 Update instructor scenario JSON for improved dialogue and structure
- Enhanced the instructor's dialogue in `instructor.json` to provide clearer guidance on lab activities and exploitation concepts.
- Added detailed explanations of lab resources, including the Lab Sheet Workstation and VM lab room, to facilitate better player understanding.
- Improved the flow of conversation by restructuring prompts and responses, ensuring a more engaging learning experience for players.
- Included reminders about the ethical use of knowledge gained during the lab, reinforcing responsible security practices.
2025-12-04 23:22:51 +00:00
Z. Cliffe Schreuders
d327380fac Enhance scenario validation and improve timed conversation structure
- Updated `validate_scenario.rb` to enforce correct usage of `targetKnot` in timed conversations, ensuring compliance with new requirements.
- Added checks for missing properties in timed conversations, including `delay` and `targetKnot`, to improve scenario integrity.
- Enhanced logging for validation issues, providing clearer feedback on scenario configuration errors.
- Updated relevant scenarios to align with the new validation rules, ensuring consistency across gameplay elements.
2025-12-04 23:15:03 +00:00
Z. Cliffe Schreuders
629aa229b3 Enhance inventory and container management for improved gameplay experience
- Added functionality to include current player inventory in game state for page reload recovery, allowing players to restore their inventory seamlessly.
- Implemented filtering of container contents to exclude items already in the player's inventory, enhancing user experience and gameplay clarity.
- Updated game mechanics to support both type-based and ID-based matching for inventory items, improving task validation and objectives tracking.
- Enhanced logging for better visibility into inventory processing and container content loading, aiding in debugging and game state management.
- Updated scenarios to reflect changes in item identification and task requirements, ensuring consistency across gameplay elements.
2025-12-04 15:42:01 +00:00
Z. Cliffe Schreuders
5a89ce945c Update INK best practices and instructor scenarios for influence tracking
- Added critical requirements for including `#influence_increased` and `#influence_decreased` tags after modifying influence variables to ensure visual feedback in the game.
- Enhanced documentation on best practices for dialogue formatting, emphasizing the importance of avoiding lists and keeping exit conversations brief.
- Updated multiple instructor scenarios to include the necessary influence tags, ensuring consistent feedback for player actions.
- Corrected room connection direction in scenario.json.erb for improved navigation.
2025-12-04 14:13:21 +00:00
Z. Cliffe Schreuders
333ea39c56 Implement submit_flags task functionality and enhance game mechanics
- Added support for submit_flags tasks in GamesController, allowing players to submit flags for validation and task completion.
- Updated game state management to track submitted flags and validate against required flags for task completion.
- Enhanced ObjectivesManager to handle flag submissions, including syncing progress with the server and managing task states.
- Introduced a new locksmith NPC for lockpicking tutorials, expanding gameplay elements and player engagement.
- Updated scenario schema to include submit_flags task type and associated properties, ensuring proper integration into the game mechanics.
- Improved logging and debugging information for flag submissions and task progress updates, enhancing visibility into game state changes.
2025-12-04 14:00:26 +00:00
Z. Cliffe Schreuders
e1d3b1ff2c Enhance FlagStationMinigame and scenario structure
- Added functionality to complete tasks via the objectives manager in FlagStationMinigame, improving gameplay interaction.
- Updated scenario.json.erb to replace flags_submitted with specific SSH and privilege flag submissions, enhancing clarity in task objectives.
- Introduced new task types in the scenario schema to support task completion mechanics, ensuring better integration of gameplay elements.
2025-12-04 08:40:25 +00:00
Z. Cliffe Schreuders
289c0ce1c7 Add lab workstation functionality and integrate into gameplay
- Introduced a lab workstation popup in the game interface for accessing lab sheets via an iframe.
- Implemented JavaScript functions to create, open, and close the lab workstation, enhancing user interaction.
- Updated CSS styles for the lab workstation popup to ensure a seamless visual experience.
- Enhanced interaction handling to allow players to open lab workstations from inventory items.
- Added new scenario files for the Linux Fundamentals and Security Lab, including detailed instructions and objectives for players.
- Updated scenario schema to include the new lab workstation type, ensuring proper integration into the game mechanics.
2025-12-04 02:10:35 +00:00
Z. Cliffe Schreuders
49fc995cb3 Enhance scenario schema and validation scripts
- Updated scenario-schema.json to include "tutorial" as a valid difficulty level.
- Changed position coordinates from integer to number for better precision.
- Added new item types ("id_badge", "rfid_cloner") in scenario schema with descriptions.
- Improved validate_scenario.rb to check for common issues, including room connection directions and NPC configurations.
- Added suggestions for gameplay improvements based on scenario features.
- Updated SCENARIO_JSON_FORMAT_GUIDE.md to clarify valid directions and bidirectional connections.
- Introduced guidelines for lock type variety and progression in room layout design.
- Established dialogue pacing rules in Ink scripting to enhance player engagement.
- Included validation steps in scenario assembly documentation to ensure structural integrity.
2025-12-02 10:37:57 +00:00
Z. Cliffe Schreuders
a4606f596c Enhance NPC encounter logging and fix item type references in scenario scripts 2025-12-01 17:31:12 +00:00
Z. Cliffe Schreuders
0cf9e0ba62 Add scenario schema and validation script for Break Escape scenarios
- Introduced `scenario-schema.json` to define the structure and requirements for scenario.json.erb files.
- Implemented `validate_scenario.rb` to render ERB templates to JSON and validate against the schema.
- Created a comprehensive `SCENARIO_JSON_FORMAT_GUIDE.md` to outline the correct format for scenario files, including required fields, room definitions, objectives, and common mistakes.
2025-12-01 15:45:24 +00:00
Z. Cliffe Schreuders
47eaffa4c3 Scenario development WiP 2025-12-01 08:48:43 +00:00
Z. Cliffe Schreuders
ef8e2f294a Refactor RFID handling and enhance game logic
- Updated `GamesController` and `Game` model to include RFID lock types in the filtering logic for 'requires' attributes, ensuring proper handling of biometric, bluetooth, and RFID types.
- Improved `RFIDMinigame` to standardize card ID retrieval, supporting both `card_id` and `key_id`.
- Enhanced `unlock-system.js` to prioritize physical keycard checks and streamline the unlocking process with detailed logging.
- Adjusted scenario JSON files to replace `keyId` with `card_id` for consistency and added new lock requirements for various rooms.
2025-11-29 23:43:30 +00:00
Z. Cliffe Schreuders
92330b04dc Enhance flag handling and XML integration for standalone mode
- Updated `GamesController` to support XML flag hints for standalone mode, improving backward compatibility with legacy flag input.
- Introduced `parse_flag_hints_xml` method in `Mission` model to extract flags from XML content.
- Enhanced `Game` model to incorporate `flags_by_vm` from player state for better flag management.
- Modified `new.html.erb` to update UI for flag hints input, replacing the previous comma-separated flags format.
- Improved `FlagStationMinigame` to display accepted VM flags and handle flag submissions more effectively.
- Adjusted scenario JSON to include flag stations with VM-specific flag handling.
2025-11-29 20:57:39 +00:00
Z. Cliffe Schreuders
bb2b0c206e Implement VM object retrieval and enhance game visuals
- Added `vm_object` method in `mission.rb` to fetch VM details from context or return a fallback.
- Introduced new images for VM launchers and flag stations in the assets directory.
- Updated `game.js` to preload new VM launcher and flag station images.
- Refactored `vm-launcher-minigame.js` to streamline VM handling and improve UI messaging.
- Adjusted scenario JSON to utilize the new `vm_object` method for VM data retrieval.
2025-11-29 01:35:20 +00:00
Z. Cliffe Schreuders
ca44cef068 Enhance game setup for VM and standalone modes
- Updated `GamesController` to use `current_player` for VM set retrieval.
- Improved `MissionsController` to handle redirection for both Hacktivity and standalone modes.
- Modified `new.html.erb` to include UI for standalone flag input alongside VM set selection.
- Added new CSS styles for standalone mode instructions and flags input form.
- Introduced new mission configuration for the SecGen VM Lab, integrating VM and flag capture elements.
2025-11-28 17:41:17 +00:00
Z. Cliffe Schreuders
f412d9ba25 feat: Add comprehensive Objectives and Tasks Guide with examples and best practices 2025-11-26 22:42:19 +00:00
Z. Cliffe Schreuders
f4aef2a561 feat: Improve NPC dialogue and objectives handling with global variable synchronization and task unlocking 2025-11-26 14:49:30 +00:00
Z. Cliffe Schreuders
9aaec1a970 feat: Enhance NPC dialogue and objectives system with event mappings for secret mission completion 2025-11-26 13:02:55 +00:00