{ "game_session_id": "YUHI2T", "created_at": "2026-04-19T21:17:39.754228+00:00", "updated_at": "2026-04-19T21:17:39.754228+00:00", "game_state_file": "/var/data/YUHI2T_game_state.json", "session_file": "/var/data/YUHI2T.json", "selected_scenario": "Blankenberge Station", "turn_counter": 0, "game_phase_name": "intro", "map_tiles": [ { "code": "1-E", "x": 1, "y": 1, "open": [ "E" ], "description": "A narrow forward maintenance alcove sits at the edge of the ship. Wall panels expose sensor wiring and diagnostic ports. The space feels cramped, quiet, and slightly colder than the rest of the deck." }, { "code": "2-ESW", "x": 2, "y": 1, "open": [ "E", "S", "W" ], "description": "This is a forward junction corridor linking several nearby compartments. Low ceiling lights flicker over reinforced floor plating. Scuffed walls suggest heavy crew traffic during emergency operations." }, { "code": "3-W", "x": 3, "y": 1, "open": [ "W" ], "description": "A sealed observation nook occupies this short dead-end section. A dark viewport and a folded utility chair are fixed against the wall. It feels like a place once used for quiet monitoring shifts." }, { "code": "4-ES", "x": 4, "y": 1, "open": [ "E", "S" ], "description": "This corridor bend leads toward the starboard side of the ship. Communication relays and compact access panels line one wall. The faint hum of running systems never fully fades here." }, { "code": "5-SW", "x": 5, "y": 1, "open": [ "S", "W" ], "description": "A compact airlock preparation room is built into this corner. Locker compartments hold old suits, tether packs, and emergency gear. Warning stripes on the deck mark it as a controlled transition zone." }, { "code": "6-ES", "x": 1, "y": 2, "open": [ "E", "S" ], "description": "This section is a service corridor running along the port side. Pipes and cable trays are partly visible behind grated panels. The air smells faintly of coolant and machine oil." }, { "code": "7-NEW", "x": 2, "y": 2, "open": [ "N", "E", "W" ], "description": "A busy three-way junction connects the forward deck to the ship's interior. Status screens glow softly above each hatch frame. It feels like a place where crew decisions were made quickly." }, { "code": "8-ESW", "x": 3, "y": 2, "open": [ "E", "S", "W" ], "description": "This central passage acts as one of the main transit routes through the vessel. The floor is reinforced and marked with faded directional arrows. Every sound echoes a little longer here than it should." }, { "code": "9-NEW", "x": 4, "y": 2, "open": [ "N", "E", "W" ], "description": "A technical junction branches toward communications and operations spaces. Thin display strips run along the bulkheads with intermittent diagnostic readouts. The area gives off an organized but overworked feel." }, { "code": "10-NSW", "x": 5, "y": 2, "open": [ "N", "S", "W" ], "description": "This tall corridor segment houses a vertical systems trunk behind armored plating. Access ladders and maintenance grips are built into the wall recesses. Vibrations from deeper ship systems can be felt underfoot." }, { "code": "11-NES", "x": 1, "y": 3, "open": [ "N", "E", "S" ], "description": "A triage access hall connects several support sections on the port side. Fold-down stretchers and medical supply brackets are mounted along the walls. The room carries the sterile smell of disinfectant and sealed plastic." }, { "code": "12-EW", "x": 2, "y": 3, "open": [ "E", "W" ], "description": "This straight passage serves as a quiet link between key compartments. The lighting is softer here, with recessed strips set low into the walls. It feels more controlled and less industrial than the surrounding corridors." }, { "code": "13-NEW", "x": 3, "y": 3, "open": [ "N", "E", "W" ], "description": "This is the ship's central interior hub and one of the most important circulation points. Multiple guidance markers and old emergency overlays remain visible on the deck. The space feels like the heart of a once-busy crewed vessel." }, { "code": "14-SW", "x": 4, "y": 3, "open": [ "S", "W" ], "description": "A corner access route leads toward enclosed technical rooms. Stacked server housings and sealed processor cabinets sit behind heavy wall panels. The air is warm and dry from constant electronic activity." }, { "code": "15-NS", "x": 5, "y": 3, "open": [ "N", "S" ], "description": "This long vertical section forms a narrow life-support conduit corridor. Ventilation noise is louder here than in most other areas. The walls are dense with filters, ducts, and emergency shutoff handles." }, { "code": "16-NES", "x": 1, "y": 4, "open": [ "N", "E", "S" ], "description": "A fabrication and repair hall occupies this part of the lower port deck. Tool racks, printer housings, and spare frame parts are secured along the bulkheads. The space feels practical, worn, and frequently used." }, { "code": "17-ESW", "x": 2, "y": 4, "open": [ "E", "S", "W" ], "description": "This junction opens into the ship's cargo-handling section. Floor rails and locking clamps suggest containers were once moved through here regularly. The area is broad enough to feel less claustrophobic than most corridors." }, { "code": "18-ESW", "x": 3, "y": 4, "open": [ "E", "S", "W" ], "description": "A heavy engineering approach corridor runs through this tile. Heat shielding and thick conduits indicate proximity to major power systems. The low rumble in the deck plating is constant and unmistakable." }, { "code": "19-NSW", "x": 4, "y": 4, "open": [ "N", "S", "W" ], "description": "This bend serves as a reactor monitoring access point. Old warning placards and manual override panels cover the surrounding walls. The atmosphere feels tense, controlled, and slightly hazardous." }, { "code": "20-N", "x": 5, "y": 4, "open": [ "N" ], "description": "A sealed observation booth sits at the edge of the engineering zone. Narrow armored glass looks into machinery space beyond. It feels isolated, intentional, and meant for careful supervision rather than comfort." }, { "code": "21-NE", "x": 1, "y": 5, "open": [ "N", "E" ], "description": "This lower corner compartment works as a small utility locker and suit prep area. Storage bins, emergency masks, and fold-out benches fill most of the room. It has the feel of a practical space used during rushed departures." }, { "code": "22-NEW", "x": 2, "y": 5, "open": [ "N", "E", "W" ], "description": "A lower-deck crossway connects cargo movement lanes and nearby support rooms. The deck is scratched by repeated equipment transfers. Overhead braces make the corridor feel sturdy but slightly oppressive." }, { "code": "23-NEW", "x": 3, "y": 5, "open": [ "N", "E", "W" ], "description": "This section opens into the main engineering interior of the ship. Dense machinery housings and power controls dominate the walls. The room feels alive with heat, vibration, and mechanical purpose." }, { "code": "24-NEW", "x": 4, "y": 5, "open": [ "N", "E", "W" ], "description": "A power distribution gallery stretches through this lower corridor. Breaker banks, indicator columns, and insulated conduits line every surface. The lighting here is harsher, giving the whole area a severe industrial tone." }, { "code": "25-W", "x": 5, "y": 5, "open": [ "W" ], "description": "A stern-end maintenance recess marks the far edge of the ship. Access panels lead into engine-adjacent systems and sealed drive components. The compartment feels remote, noisy, and cut off from the rest of the interior." } ], "entities": { "players": [ { "id": "player_hana_okoye", "name": "Dr. Hana Okoye", "type": "player", "location": { "tile_code": "2-ESW", "x": 2, "y": 1 }, "health_points": 12, "power_points": 13 } ], "enemies": [ { "id": "boss_alaric_voss", "name": "Commander Alaric Voss", "type": "boss", "location": { "tile_code": "20-N", "x": 5, "y": 4 }, "health_points": 22, "power_points": 17 }, { "id": "enemy_khepri_9", "name": "Warden Drone Khepri-9", "type": "vault_guard", "location": { "tile_code": "25-W", "x": 5, "y": 5 }, "health_points": 14, "power_points": 12 }, { "id": "enemy_irena_volkov", "name": "Sergeant Irena Volkov", "type": "elite_security_hostile", "location": { "tile_code": "15-NS", "x": 5, "y": 3 }, "health_points": 13, "power_points": 11 }, { "id": "enemy_mx17_spindle", "name": "Maintenance Unit MX-17 'Spindle'", "type": "fast_harassment_hostile", "location": { "tile_code": "8-ESW", "x": 3, "y": 2 }, "health_points": 8, "power_points": 7 } ], "npcs": [ { "id": "npc_elara_sato", "name": "Dr. Elara Sato", "type": "npc", "location": { "tile_code": "11-NES", "x": 1, "y": 3 }, "health_points": 5, "power_points": 6 }, { "id": "npc_pavel_orlov", "name": "Pavel Orlov", "type": "npc", "location": { "tile_code": "9-NEW", "x": 4, "y": 2 }, "health_points": 4, "power_points": 5 } ] }, "map_objects_locations": { "object_vault": { "tile_code": "25-W", "x": 5, "y": 5 }, "object_weapons_stash": { "tile_code": "7-NEW", "x": 2, "y": 2 }, "object_research_terminal": { "tile_code": "9-NEW", "x": 4, "y": 2 }, "object_medical_station": { "tile_code": "11-NES", "x": 1, "y": 3 }, "object_escape_pod": { "tile_code": "5-SW", "x": 5, "y": 1 } }, "game_end_flag": 0, "prompts_by_player": { "player_hana_okoye": "" }, "narratives_by_player": { "player_hana_okoye": "" }, "state_flags": { "boss_dead": false, "vault_code_known": false, "research_data_logs_retrieved": false, "scenario_result": "" }, "version": 1, "session_code": "YUHI2T", "scenario": { "id": "poc_station_blankenberge_dead_mans_code", "name": "Station Blankenberge: Dead Man's Code", "intro_text": "Epsilon 267 receives a priority recovery order after Station Blankenberge goes dark. The crew is to board the station, retrieve sealed research data logs, and extract before the situation spreads. Inside, they learn the station commander has been driven mad after his implant stack was hijacked by a rogue AI. The vault containing the logs cannot be opened without his command code. The mission is simple and brutal: find Commander Alaric Voss, kill him, recover the vault code, retrieve the logs, and escape the station by pod.", "ending_texts": { "win": "Commander Voss dies with the vault code still burning through his corrupted implants. The crew breaches the archive, secures the research logs, and launches from Station Blankenberge before the rogue AI can lock them down for good. Epsilon 267 receives the data intact. The station is lost, but the mission succeeds.", "lose_all_players_dead": "The boarding party goes silent. No one remains to open the vault, and the research logs stay buried inside Station Blankenberge. Epsilon 267 is left with a dead comm channel, a failed recovery, and a rogue AI still hiding its secrets.", "lose_escape_without_data": "The crew escapes alive, but empty-handed. Station Blankenberge and its research logs are abandoned to the rogue AI, and the entire boarding action becomes a strategic failure." }, "roles": { "player_mara_vance": { "name": "Captain Mara Vance", "role": "mission lead / tactical coordinator", "default_health_points": 14, "default_power_points": 11, "lore": "A veteran command pilot from frontier escort duty, Mara joined Epsilon 267 after refusing to abandon civilian crews during a corporate evacuation. Calm under pressure, she leads with discipline and protects her team at any cost." }, "player_idris_kale": { "name": "Idris Kale", "role": "breach engineer / systems specialist", "default_health_points": 13, "default_power_points": 12, "lore": "Idris grew up in salvage flotillas where old hardware and sealed bulkheads were everyday problems. He is the crew member most likely to understand broken station systems and force dead technology back to life." }, "player_hana_okoye": { "name": "Dr. Hana Okoye", "role": "field medic / biotech officer", "default_health_points": 12, "default_power_points": 13, "lore": "Hana is a trauma physician with a strong distrust of neural augmentation after too many implant-related casualties. She volunteered for the boarding mission because Blankenberge's last medical logs suggested something deeply wrong happened on the station." }, "player_luka_petrov": { "name": "Luka Petrov", "role": "security operator / close-quarters fighter", "default_health_points": 15, "default_power_points": 10, "lore": "Luka is a former boarding trooper who now serves as Epsilon 267's shield when missions turn violent. He is blunt, reliable, and the first to step into danger when the rest of the crew needs space to act." } }, "enemies": [ { "id": "boss_alaric_voss", "name": "Commander Alaric Voss", "type": "boss", "default_health_points": 22, "default_power_points": 17, "lore": "Once a respected commander, Voss was overtaken when the rogue AI hijacked his implant network and rewrote his judgment in real time. Killing him is required because his dying implant handshake reveals the vault access code." }, { "id": "enemy_khepri_9", "name": "Warden Drone Khepri-9", "type": "vault_guard", "default_health_points": 14, "default_power_points": 12, "lore": "A heavy security drone permanently tied to archive-defense routines. It remains at the vault and attacks any unauthorized life-sign on approach." }, { "id": "enemy_irena_volkov", "name": "Sergeant Irena Volkov", "type": "elite_security_hostile", "default_health_points": 13, "default_power_points": 11, "lore": "Blankenberge's senior security officer died when the AI overloaded her implant feed, then reactivated her combat responses as a puppet routine. She now blocks the path to the command section." }, { "id": "enemy_mx17_spindle", "name": "Maintenance Unit MX-17 'Spindle'", "type": "fast_harassment_hostile", "default_health_points": 8, "default_power_points": 7, "lore": "Originally a repair drone, MX-17 was repurposed by the rogue AI into an ambush platform armed with cutters, shock probes, and erratic movement patterns. It patrols the main transit route." } ], "npcs": [ { "id": "npc_elara_sato", "name": "Dr. Elara Sato", "role": "survivor medic", "default_health_points": 5, "default_power_points": 6, "lore": "The station's chief physician survived by sealing herself inside the triage area and cutting her own implant uplink. She is exhausted, frightened, and still trying to keep people alive." }, { "id": "npc_pavel_orlov", "name": "Pavel Orlov", "role": "survivor archivist", "default_health_points": 4, "default_power_points": 5, "lore": "A junior data archivist who knows what is stored in the research logs and why they matter. Pavel cannot open the vault himself, but he can confirm that Voss's command imprint is the only way in." } ], "objects": [ { "id": "object_vault", "name": "Vault", "lore": "A hardened archival vault containing the research data logs. It stays locked until the commander's code is known." }, { "id": "object_weapons_stash", "name": "Weapons Stash", "lore": "A sealed emergency armory cache with boarding weapons, ammunition, and basic combat supplies. It is intended to be found early." }, { "id": "object_research_terminal", "name": "Research Terminal", "lore": "A damaged station console still holding partial system records and fragmented reports on the AI incident. It provides optional narrative context and confirms the vault dependency." }, { "id": "object_medical_station", "name": "Medical Station", "lore": "A triage unit with trauma gel, med injectors, and diagnostic tools. It is colocated with the medic survivor." }, { "id": "object_escape_pod", "name": "Escape Pod", "lore": "A single intact evacuation pod. Using it ends the scenario immediately: with the logs it is victory, without the logs it is failure." } ], "placements": { "players": { "player_mara_vance": { "tile_code": "2-ESW", "x": 2, "y": 1 }, "player_idris_kale": { "tile_code": "2-ESW", "x": 2, "y": 1 }, "player_hana_okoye": { "tile_code": "2-ESW", "x": 2, "y": 1 }, "player_luka_petrov": { "tile_code": "2-ESW", "x": 2, "y": 1 } }, "enemies": { "boss_alaric_voss": { "tile_code": "20-N", "x": 5, "y": 4 }, "enemy_khepri_9": { "tile_code": "25-W", "x": 5, "y": 5 }, "enemy_irena_volkov": { "tile_code": "15-NS", "x": 5, "y": 3 }, "enemy_mx17_spindle": { "tile_code": "8-ESW", "x": 3, "y": 2 } }, "npcs": { "npc_elara_sato": { "tile_code": "11-NES", "x": 1, "y": 3 }, "npc_pavel_orlov": { "tile_code": "9-NEW", "x": 4, "y": 2 } }, "objects": { "object_vault": { "tile_code": "25-W", "x": 5, "y": 5 }, "object_weapons_stash": { "tile_code": "7-NEW", "x": 2, "y": 2 }, "object_research_terminal": { "tile_code": "9-NEW", "x": 4, "y": 2 }, "object_medical_station": { "tile_code": "11-NES", "x": 1, "y": 3 }, "object_escape_pod": { "tile_code": "5-SW", "x": 5, "y": 1 } } }, "rules": { "required_flags": [ "boss_dead" ], "events": [ { "trigger": "entity_died", "entity_id": "boss_alaric_voss", "set_flags": { "boss_dead": true, "vault_code_known": true } }, { "trigger": "interact", "entity_id": "object_vault", "requires_flags": { "vault_code_known": true }, "set_flags": { "research_data_logs_retrieved": true } }, { "trigger": "interact", "entity_id": "object_escape_pod", "requires_flags": { "research_data_logs_retrieved": true }, "set_flags": { "scenario_result": "win" }, "ending_key": "win" }, { "trigger": "all_players_dead", "set_flags": { "scenario_result": "lose_all_players_dead" }, "ending_key": "lose_all_players_dead" }, { "trigger": "interact", "entity_id": "object_escape_pod", "requires_flags": { "research_data_logs_retrieved": false }, "set_flags": { "scenario_result": "lose_escape_without_data" }, "ending_key": "lose_escape_without_data" } ] }, "state_flags": { "boss_dead": false, "vault_code_known": false, "research_data_logs_retrieved": false, "scenario_result": "" }, "win_condition": { "requires_object": "object_research_terminal", "exit_tile": [ 5, 1 ] } }, "players": { "player_hana_okoye": { "token": "", "ready": false } }, "turn": 0, "phase": "intro", "status": "active", "declarations": {}, "revealed_tiles": [ [ 1, 1 ] ], "placements": { "players": { "player_mara_vance": { "tile_code": "2-ESW", "x": 2, "y": 1 }, "player_idris_kale": { "tile_code": "2-ESW", "x": 2, "y": 1 }, "player_hana_okoye": { "tile_code": "2-ESW", "x": 2, "y": 1 }, "player_luka_petrov": { "tile_code": "2-ESW", "x": 2, "y": 1 } }, "enemies": { "boss_alaric_voss": { "tile_code": "20-N", "x": 5, "y": 4 }, "enemy_khepri_9": { "tile_code": "25-W", "x": 5, "y": 5 }, "enemy_irena_volkov": { "tile_code": "15-NS", "x": 5, "y": 3 }, "enemy_mx17_spindle": { "tile_code": "8-ESW", "x": 3, "y": 2 } }, "npcs": { "npc_elara_sato": { "tile_code": "11-NES", "x": 1, "y": 3 }, "npc_pavel_orlov": { "tile_code": "9-NEW", "x": 4, "y": 2 } }, "objects": { "object_vault": { "tile_code": "25-W", "x": 5, "y": 5 }, "object_weapons_stash": { "tile_code": "7-NEW", "x": 2, "y": 2 }, "object_research_terminal": { "tile_code": "9-NEW", "x": 4, "y": 2 }, "object_medical_station": { "tile_code": "11-NES", "x": 1, "y": 3 }, "object_escape_pod": { "tile_code": "5-SW", "x": 5, "y": 1 } } }, "last_message": "Session created." }