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.
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.
- 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
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.
- 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.
- 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.
- 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.
- 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.
- 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.
- 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.
- 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.
- 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.
- 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.
- 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.
- 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.
- 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.
- 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.
- 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.
- 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.