From e304fffd69cb52013fe03dcce31f28c062090e2a Mon Sep 17 00:00:00 2001 From: "Z. Cliffe Schreuders" Date: Wed, 14 Jan 2026 09:46:32 +0000 Subject: [PATCH] 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 --- .../scenario.json.erb | 50 ++++++++++++++++++- 1 file changed, 48 insertions(+), 2 deletions(-) diff --git a/scenarios/m03_ghost_in_the_machine/scenario.json.erb b/scenarios/m03_ghost_in_the_machine/scenario.json.erb index 463aa05..8955be4 100644 --- a/scenarios/m03_ghost_in_the_machine/scenario.json.erb +++ b/scenarios/m03_ghost_in_the_machine/scenario.json.erb @@ -221,6 +221,24 @@ operational_log_content = "TRANSACTION LOG - Q3 2024\n\n[2024-09-15 14:32:11] Pr } ], "npcs": [ + { + "id": "briefing_cutscene", + "displayName": "Agent 0x99", + "npcType": "person", + "position": {"x": 500, "y": 500}, + "spriteSheet": "hacker", + "spriteConfig": { + "idleFrameStart": 20, + "idleFrameEnd": 23 + }, + "storyPath": "scenarios/m03_ghost_in_the_machine/ink/m03_opening_briefing.json", + "currentKnot": "start", + "timedConversation": { + "delay": 0, + "targetKnot": "start", + "background": "assets/backgrounds/hq1.png" + } + }, { "id": "receptionist_npc", "displayName": "Receptionist", @@ -365,9 +383,12 @@ operational_log_content = "TRANSACTION LOG - Q3 2024\n\n[2024-09-15 14:32:11] Pr }, { "type": "vm-launcher", + "id": "vm_launcher_zero_day", "name": "VM Access Terminal", "takeable": false, - "observations": "Terminal for accessing Zero Day training network VMs" + "observations": "Terminal for accessing Zero Day training network VMs", + "hacktivityMode": <%= vm_context && vm_context['hacktivity_mode'] ? 'true' : 'false' %>, + "vm": <%= vm_object('ghost_in_machine_vm_network', {"id":1,"title":"Zero Day Training Network","ip":"192.168.100.0/24","enable_console":true}) %> }, { "type": "workstation", @@ -377,9 +398,34 @@ operational_log_content = "TRANSACTION LOG - Q3 2024\n\n[2024-09-15 14:32:11] Pr }, { "type": "flag-station", + "id": "flag_station_dropsite", "name": "Drop-Site Terminal", "takeable": false, - "observations": "Terminal for submitting VM flags" + "observations": "Terminal for submitting VM flags from Zero Day training network", + "acceptsVms": ["ghost_in_machine_vm_network"], + "flags": <%= flags_for_vm('ghost_in_machine_vm_network', ['flag{network_scan_complete}', 'flag{ftp_intel_gathered}', 'flag{pricing_intel_decoded}', 'flag{distcc_legacy_compromised}']) %>, + "flagRewards": [ + { + "type": "emit_event", + "event_name": "network_scan_flag_submitted", + "description": "Network scanning flag submitted" + }, + { + "type": "emit_event", + "event_name": "ftp_intel_flag_submitted", + "description": "FTP intelligence flag submitted" + }, + { + "type": "emit_event", + "event_name": "pricing_intel_flag_submitted", + "description": "Pricing intelligence flag submitted" + }, + { + "type": "emit_event", + "event_name": "distcc_exploit_flag_submitted", + "description": "distcc exploitation flag submitted - triggers M2 revelation" + } + ] } ], "npcs": []