From 0c91ef28ba6404745f8b6b9a66c66915e9b7b0c5 Mon Sep 17 00:00:00 2001 From: Jeroen Schweitzer Date: Mon, 6 Jul 2026 21:07:18 +0200 Subject: [PATCH] =?UTF-8?q?feat(simulation):=20D-252=20=E2=80=94=20Facing?= =?UTF-8?q?=20is=20view-only;=20NPC=20gaze=20moves=20to=20path-follow=20in?= =?UTF-8?q?tent=20(T-1093)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit apply_move no longer writes Facing (was the only movement-facing coupling, player-only); the player's view changes solely via explicit SetFacing. NPC path-follow now sets Facing to the step direction — a strict improvement recorded as a D-252 correction: NPCs previously never received Facing from movement, their cones sat at spawn direction while walking. Bump-to-turn retired (blocked moves change nothing) with a regression test for each semantic. Wire schema unchanged; player_facing docs now say view/aim. Gauntlet fixtures regenerated (facing octants now reflect view-only semantics); client replay + live-roundtrip suites green against the new server. Co-Authored-By: Claude Fable 5 --- governance/decisions/architecture.md | 2 +- server/src/bridge/types.rs | 8 +- server/src/perception/vision_cone.rs | 6 +- server/src/simulation/movement.rs | 101 +- server/src/simulation/path_follow.rs | 44 +- tests/fixtures/gauntlet/fog_theater.json | 387 +++- tests/fixtures/gauntlet/fog_theater.msgpack | Bin 20343 -> 22912 bytes .../fixtures/gauntlet/hub_after_movement.json | 1835 ++++++++++++++--- .../gauntlet/hub_after_movement.msgpack | Bin 7116 -> 15258 bytes tests/fixtures/gauntlet/hub_spawn.json | 283 ++- tests/fixtures/gauntlet/hub_spawn.msgpack | Bin 10674 -> 12654 bytes 11 files changed, 2317 insertions(+), 349 deletions(-) diff --git a/governance/decisions/architecture.md b/governance/decisions/architecture.md index fba83db90..51e30b2f6 100644 --- a/governance/decisions/architecture.md +++ b/governance/decisions/architecture.md @@ -1954,7 +1954,7 @@ Technical foundation decisions that constrain implementation: engine, client-ser ### D-252: Facing is view-only — movement no longer writes Facing; NPC gaze is intent -- **Decision:** The `Facing` component (and the wire's `player_facing`/entity facing octants) is the **view direction only** — the vision-cone heading. Accepted moves **no longer overwrite Facing** (`facing_from_delta` is removed from the movement path): the player's Facing changes only via explicit `SetFacing` (the mouse octant, D-054's change-gated send). **Movement direction is not a wire concern** — the client derives body heading from position deltas (the 3D rig's per-leg velocity, [D-248](#d-248-3d-locomotion-presentation--per-leg-constant-velocity-interpolation-keyed-to-the-stance-throttle)). **NPC gaze becomes intent:** the NPC path-follow system sets Facing to the step direction explicitly (same observable behavior as the old physics coupling), which relocates look-where-you-walk from the movement system into AI intent — later behaviors (a patrolling guard glancing sideways, an NPC backing away while watching the player) become Facing writes by the AI, no special cases. +- **Decision:** The `Facing` component (and the wire's `player_facing`/entity facing octants) is the **view direction only** — the vision-cone heading. Accepted moves **no longer overwrite Facing** (`facing_from_delta` is removed from the movement path): the player's Facing changes only via explicit `SetFacing` (the mouse octant, D-054's change-gated send). **Movement direction is not a wire concern** — the client derives body heading from position deltas (the 3D rig's per-leg velocity, [D-248](#d-248-3d-locomotion-presentation--per-leg-constant-velocity-interpolation-keyed-to-the-stance-throttle)). **NPC gaze becomes intent:** the NPC path-follow system sets Facing to the step direction explicitly, relocating look-where-you-walk into AI intent — later behaviors (a patrolling guard glancing sideways, an NPC backing away while watching the player) become Facing writes by the AI, no special cases. *Implementation correction (2026-07-06): the old coupling was player-only — NPCs never received Facing from movement; their cones sat at spawn direction while walking. Path-follow gaze is therefore a strict improvement, not preservation.* - **Motivation (play evidence, T-1088 live session 2026-07-06):** during client path-follows the vision cone flapped to path-forward on every accepted step and stuck there until the mouse crossed an octant boundary — the movement overwrite fought the explicit aim, and the best client-side mitigation (post-step re-assert, ~2-tick delay) still left a ~100 ms flap per step because movement wins within a tick. Splitting the semantics is the correct fix; the walk-one-way-look-another model this enables is exactly the split [Q-084] parked. - **Consequences:** "bump-to-turn" (blocked moves updated facing) is retired — correct under a mouse-view model. The client's post-step `reassert_facing` mitigation is removed. [D-249](#d-249-3d-facing-presentation-authority--server-feet-client-eyes) is **amended by this record**: while moving, the body yaw source is the leg-velocity direction (wire facing while moving is now the *view*, which must never rotate the body); idle behavior is unchanged; the layered head/torso look-at ([T-1088] follow-facing) may run during any movement, not only path-follows. The 2D renderer's player sprite direction follows the view octant in all states (was: move direction while moving) — accepted drift on D-166-frozen code. **Amends [D-054](#d-054-tile-based-movement-with-same-tile-occupancy)** (its facing sentence: octant-only wire + explicit sends stand; the movement overwrite is struck). - **Cross-reference:** D-054, D-248, D-249, D-015 (vision cone), Q-084 (walk-vs-aim split — resolved by this record for semantics; camera rotation option stays parked). Tickets: T-1093 (implementation), T-1088. diff --git a/server/src/bridge/types.rs b/server/src/bridge/types.rs index 6d6cf17f3..d300efaf8 100644 --- a/server/src/bridge/types.rs +++ b/server/src/bridge/types.rs @@ -86,7 +86,10 @@ pub struct ObserverSnapshot { pub tick: u64, /// Game time data for client HUD display (D-031) pub game_time: GameTime, - /// Player character's facing direction for vision cone (D-015) + /// Player character's view direction — the vision-cone heading (D-015). + /// View-only since D-252: this is the aim (SetFacing / mouse octant), NOT + /// the movement direction. The client derives body heading from position + /// deltas (D-248); accepted moves no longer rotate this. pub player_facing: FacingDirection, /// Player's current movement stance for HUD display (#449, D-053). /// Defaults to Walk when stance component is absent. @@ -364,8 +367,9 @@ pub struct InventoryItem { pub slot: u8, } -/// 8-directional facing direction, matching movement system. +/// 8-directional facing direction — the view/aim heading, not movement. /// Used for vision cone computation (D-015) and snapshot wire format. +/// View-only since D-252: set via SetFacing, never by accepted moves. #[derive(Debug, Clone, Copy, PartialEq, Eq, Hash, Default, Serialize, Deserialize)] pub enum FacingDirection { #[default] diff --git a/server/src/perception/vision_cone.rs b/server/src/perception/vision_cone.rs index a7ff173b1..58130380b 100644 --- a/server/src/perception/vision_cone.rs +++ b/server/src/perception/vision_cone.rs @@ -15,8 +15,10 @@ use crate::bridge::types::{FacingDirection, VisibilitySector}; use crate::perception::shadowcast::VisibilityMap; use bevy_ecs::prelude::*; -/// Component tracking which direction an entity faces. -/// Updated by the input system when an entity moves. +/// Component tracking which direction an entity faces — the view/aim heading, +/// not the movement direction (view-only since D-252). Set explicitly: the +/// player's via `handle_set_facing` (SetFacing input), an NPC's via the +/// path-follow system's step-direction intent (`simulation::path_follow`). #[derive(Component, Debug, Clone, Copy, PartialEq, Eq)] pub struct Facing(pub FacingDirection); diff --git a/server/src/simulation/movement.rs b/server/src/simulation/movement.rs index b0a296026..38178a6a5 100644 --- a/server/src/simulation/movement.rs +++ b/server/src/simulation/movement.rs @@ -11,7 +11,6 @@ use std::collections::BTreeMap; use crate::bridge::types::MovementStance; use crate::knowledge::types::SoundRange; -use crate::perception::vision_cone::{facing_from_delta, Facing}; use crate::simulation::sound::{SoundEvent, SoundEventEmitter, SoundEventKind}; use crate::simulation::stance::Stance; @@ -476,10 +475,9 @@ pub fn apply_move( commands.entity(entity).insert(MoveIntent { target: TilePosition::new(pos.x + dx, pos.y + dy, pos.z), }); - // Update facing direction based on movement (D-015 vision cone) - commands - .entity(entity) - .insert(Facing(facing_from_delta(dx, dy))); + // Facing is view-only (D-252): accepted moves no longer overwrite it. The + // player's Facing changes only via the explicit SetFacing input path + // (perception::vision_cone::handle_set_facing). } #[cfg(test)] @@ -1454,4 +1452,97 @@ mod tests { schedule.run(&mut world); assert!(world.get::(player).is_some()); } + + // ----------------------------------------------------------------------- + // Facing is view-only (D-252): movement never writes Facing + // ----------------------------------------------------------------------- + + #[test] + fn accepted_move_does_not_change_explicit_facing() { + use crate::bridge::types::FacingDirection; + use crate::perception::vision_cone::Facing; + + let mut world = bevy_ecs::world::World::new(); + world.insert_resource(InputQueue::default()); + world.insert_resource(SimulationTime::default()); + world.init_resource::(); + + // Player aims east via an explicit SetFacing (represented directly here). + let player = world + .spawn(( + PlayerCharacter, + TilePosition::new(5, 5, 0), + Facing(FacingDirection::East), + )) + .id(); + + let mut schedule = bevy_ecs::schedule::Schedule::default(); + schedule.add_systems(process_player_input); + + world.resource_mut::().push(PlayerInput { + tick: 0, + action: PlayerAction::MoveNorth, + }); + schedule.run(&mut world); + + // The move is accepted… + assert!( + world.get::(player).is_some(), + "move should be accepted" + ); + // …but the explicit aim is untouched — Facing is view-only (D-252). + assert_eq!( + world.get::(player).unwrap().0, + FacingDirection::East, + "accepted move must not overwrite explicit Facing (D-252)" + ); + } + + #[test] + fn blocked_move_does_not_change_facing() { + // "Bump-to-turn" is retired (D-252): a move blocked by terrain leaves + // both position and Facing unchanged. + use crate::bridge::types::FacingDirection; + use crate::perception::vision_cone::Facing; + + let mut world = bevy_ecs::world::World::new(); + world.insert_resource(InputQueue::default()); + world.insert_resource(SimulationTime::default()); + world.init_resource::(); + + // Wall the tile directly north of the player (y-down: north = y-1). + let mut map = WalkabilityMap::new(10, 10, 1); + map.set_walkable(&TilePosition::new(5, 4, 0), false); + world.insert_resource(map); + + let player = world + .spawn(( + PlayerCharacter, + TilePosition::new(5, 5, 0), + Facing(FacingDirection::East), + )) + .id(); + + let mut schedule = bevy_ecs::schedule::Schedule::default(); + schedule.add_systems((process_player_input, validate_movement).chain()); + + world.resource_mut::().push(PlayerInput { + tick: 0, + action: PlayerAction::MoveNorth, + }); + schedule.run(&mut world); + + // Position held by the wall… + assert_eq!( + *world.get::(player).unwrap(), + TilePosition::new(5, 5, 0), + "blocked move should not change position" + ); + // …and Facing unchanged — no bump-to-turn (D-252). + assert_eq!( + world.get::(player).unwrap().0, + FacingDirection::East, + "blocked move must not change Facing (D-252)" + ); + } } diff --git a/server/src/simulation/path_follow.rs b/server/src/simulation/path_follow.rs index 397c15d42..cf3da599c 100644 --- a/server/src/simulation/path_follow.rs +++ b/server/src/simulation/path_follow.rs @@ -6,7 +6,8 @@ use bevy_ecs::prelude::*; use crate::npc::Npc; -use crate::simulation::movement::MoveIntent; +use crate::perception::vision_cone::{facing_from_delta, Facing}; +use crate::simulation::movement::{MoveIntent, TilePosition}; use crate::simulation::pathfinding::{ComputedPath, PathBlocked}; use crate::simulation::tier::ActiveSim; @@ -57,21 +58,38 @@ impl MovementSpeed { pub fn follow_paths( mut commands: Commands, mut query: Query< - (Entity, &mut ComputedPath, Option<&mut MovementSpeed>), + ( + Entity, + &mut ComputedPath, + Option<&TilePosition>, + Option<&mut MovementSpeed>, + ), (With, With), >, ) { - for (entity, mut path, speed_opt) in query.iter_mut() { + for (entity, mut path, pos_opt, speed_opt) in query.iter_mut() { if let Some(mut speed) = speed_opt { if !speed.should_step() { continue; } } - if let Some(next_pos) = path.next_step() { + if let Some(next_pos) = path.next_step().copied() { + // Look where you walk is now AI intent (D-252): the path-follow + // system sets Facing to the step direction explicitly, rather than + // relying on the movement system to couple facing to motion. + if let Some(pos) = pos_opt { + let dx = next_pos.x - pos.x; + let dy = next_pos.y - pos.y; + if dx != 0 || dy != 0 { + commands + .entity(entity) + .insert(Facing(facing_from_delta(dx, dy))); + } + } commands .entity(entity) - .insert(MoveIntent { target: *next_pos }); + .insert(MoveIntent { target: next_pos }); path.advance(); } @@ -92,6 +110,7 @@ pub fn cleanup_path_blocked(mut commands: Commands, query: Query(entity).unwrap(); assert_eq!(path.current_index, 1); + // D-252: the step direction (east) is set as explicit gaze intent. + assert_eq!( + world.get::(entity).unwrap().0, + FacingDirection::East + ); } #[test] @@ -151,6 +175,11 @@ mod tests { assert!(world.get::(entity).is_none()); // But MoveIntent was still created assert!(world.get::(entity).is_some()); + // D-252: the step direction (east) is set as explicit gaze intent. + assert_eq!( + world.get::(entity).unwrap().0, + FacingDirection::East + ); } #[test] @@ -188,6 +217,11 @@ mod tests { world.get::(entity).unwrap().target, TilePosition::new(1, 0, 0) ); + // D-252: gaze intent set on the step tick, not the throttled ticks. + assert_eq!( + world.get::(entity).unwrap().0, + FacingDirection::East + ); } #[test] diff --git a/tests/fixtures/gauntlet/fog_theater.json b/tests/fixtures/gauntlet/fog_theater.json index 89e2209bb..290530fc8 100644 --- a/tests/fixtures/gauntlet/fog_theater.json +++ b/tests/fixtures/gauntlet/fog_theater.json @@ -82,13 +82,7 @@ "relationship": 0, "total": 0 }, - "conversation_ended": [], - "conversation_events": [], - "current_monologue": { - "duration_seconds": 5.0, - "id": "recognition_02", - "text": "Those footsteps... I've heard that pattern before." - }, + "current_monologue": null, "dialogue_response": null, "entities": [ { @@ -174,8 +168,15 @@ "state_hash": 8686526522907766805, "tick": 2, "triangle_crisis_events": [], - "version": 17, "visible_tiles": [ + { + "tile_kind": "Wall", + "visibility": "BoundaryWall", + "x": 35, + "y": 32, + "z": 0, + "zone_id": 1 + }, { "tile_kind": "Floor", "visibility": "Forward", @@ -200,6 +201,14 @@ "z": 0, "zone_id": 1 }, + { + "tile_kind": "Wall", + "visibility": "BoundaryWall", + "x": 36, + "y": 33, + "z": 0, + "zone_id": 1 + }, { "tile_kind": "Floor", "visibility": "Forward", @@ -232,6 +241,14 @@ "z": 0, "zone_id": 1 }, + { + "tile_kind": "Wall", + "visibility": "BoundaryWall", + "x": 37, + "y": 33, + "z": 0, + "zone_id": 1 + }, { "tile_kind": "Floor", "visibility": "Forward", @@ -264,6 +281,14 @@ "z": 0, "zone_id": 1 }, + { + "tile_kind": "Wall", + "visibility": "BoundaryWall", + "x": 38, + "y": 33, + "z": 0, + "zone_id": 1 + }, { "tile_kind": "Floor", "visibility": "Forward", @@ -304,6 +329,14 @@ "z": 0, "zone_id": 1 }, + { + "tile_kind": "Wall", + "visibility": "BoundaryWall", + "x": 39, + "y": 33, + "z": 0, + "zone_id": 1 + }, { "tile_kind": "Floor", "visibility": "Forward", @@ -344,6 +377,14 @@ "z": 0, "zone_id": 1 }, + { + "tile_kind": "Wall", + "visibility": "BoundaryWall", + "x": 40, + "y": 33, + "z": 0, + "zone_id": 1 + }, { "tile_kind": "Floor", "visibility": "Forward", @@ -392,6 +433,14 @@ "z": 0, "zone_id": 1 }, + { + "tile_kind": "Wall", + "visibility": "BoundaryWall", + "x": 41, + "y": 33, + "z": 0, + "zone_id": 1 + }, { "tile_kind": "Floor", "visibility": "Forward", @@ -440,6 +489,14 @@ "z": 0, "zone_id": 1 }, + { + "tile_kind": "Wall", + "visibility": "BoundaryWall", + "x": 42, + "y": 33, + "z": 0, + "zone_id": 1 + }, { "tile_kind": "Floor", "visibility": "Forward", @@ -496,6 +553,14 @@ "z": 0, "zone_id": 1 }, + { + "tile_kind": "Wall", + "visibility": "BoundaryWall", + "x": 43, + "y": 33, + "z": 0, + "zone_id": 1 + }, { "tile_kind": "Floor", "visibility": "Forward", @@ -560,6 +625,14 @@ "z": 0, "zone_id": 1 }, + { + "tile_kind": "Wall", + "visibility": "BoundaryWall", + "x": 44, + "y": 33, + "z": 0, + "zone_id": 1 + }, { "tile_kind": "Floor", "visibility": "Forward", @@ -624,6 +697,14 @@ "z": 0, "zone_id": 1 }, + { + "tile_kind": "Wall", + "visibility": "BoundaryWall", + "x": 45, + "y": 33, + "z": 0, + "zone_id": 1 + }, { "tile_kind": "Floor", "visibility": "Forward", @@ -696,6 +777,14 @@ "z": 0, "zone_id": 1 }, + { + "tile_kind": "Wall", + "visibility": "BoundaryWall", + "x": 46, + "y": 33, + "z": 0, + "zone_id": 1 + }, { "tile_kind": "Floor", "visibility": "Forward", @@ -768,6 +857,14 @@ "z": 0, "zone_id": 1 }, + { + "tile_kind": "Wall", + "visibility": "BoundaryWall", + "x": 47, + "y": 33, + "z": 0, + "zone_id": 1 + }, { "tile_kind": "Floor", "visibility": "Forward", @@ -848,6 +945,14 @@ "z": 0, "zone_id": 1 }, + { + "tile_kind": "Wall", + "visibility": "BoundaryWall", + "x": 48, + "y": 33, + "z": 0, + "zone_id": 1 + }, { "tile_kind": "Floor", "visibility": "Forward", @@ -928,6 +1033,14 @@ "z": 0, "zone_id": 1 }, + { + "tile_kind": "Wall", + "visibility": "BoundaryWall", + "x": 49, + "y": 33, + "z": 0, + "zone_id": 1 + }, { "tile_kind": "Floor", "visibility": "Forward", @@ -1016,6 +1129,14 @@ "z": 0, "zone_id": 1 }, + { + "tile_kind": "Wall", + "visibility": "BoundaryWall", + "x": 50, + "y": 33, + "z": 0, + "zone_id": 1 + }, { "tile_kind": "Floor", "visibility": "Forward", @@ -1112,6 +1233,14 @@ "z": 0, "zone_id": 1 }, + { + "tile_kind": "Wall", + "visibility": "BoundaryWall", + "x": 51, + "y": 33, + "z": 0, + "zone_id": 1 + }, { "tile_kind": "Floor", "visibility": "Forward", @@ -1208,6 +1337,14 @@ "z": 0, "zone_id": 1 }, + { + "tile_kind": "Wall", + "visibility": "BoundaryWall", + "x": 52, + "y": 33, + "z": 0, + "zone_id": 1 + }, { "tile_kind": "Floor", "visibility": "Forward", @@ -1312,6 +1449,14 @@ "z": 0, "zone_id": 1 }, + { + "tile_kind": "Wall", + "visibility": "BoundaryWall", + "x": 53, + "y": 33, + "z": 0, + "zone_id": 1 + }, { "tile_kind": "Floor", "visibility": "Forward", @@ -1416,6 +1561,14 @@ "z": 0, "zone_id": 1 }, + { + "tile_kind": "Wall", + "visibility": "BoundaryWall", + "x": 54, + "y": 33, + "z": 0, + "zone_id": 1 + }, { "tile_kind": "Floor", "visibility": "Forward", @@ -1528,6 +1681,14 @@ "z": 0, "zone_id": 1 }, + { + "tile_kind": "Wall", + "visibility": "BoundaryWall", + "x": 55, + "y": 33, + "z": 0, + "zone_id": 1 + }, { "tile_kind": "Floor", "visibility": "Forward", @@ -1648,6 +1809,14 @@ "z": 0, "zone_id": 1 }, + { + "tile_kind": "Wall", + "visibility": "BoundaryWall", + "x": 56, + "y": 33, + "z": 0, + "zone_id": 1 + }, { "tile_kind": "Floor", "visibility": "Forward", @@ -1760,6 +1929,14 @@ "z": 0, "zone_id": 1 }, + { + "tile_kind": "Wall", + "visibility": "BoundaryWall", + "x": 57, + "y": 33, + "z": 0, + "zone_id": 1 + }, { "tile_kind": "Floor", "visibility": "Forward", @@ -1864,6 +2041,14 @@ "z": 0, "zone_id": 1 }, + { + "tile_kind": "Wall", + "visibility": "BoundaryWall", + "x": 58, + "y": 33, + "z": 0, + "zone_id": 1 + }, { "tile_kind": "Floor", "visibility": "Forward", @@ -1968,6 +2153,14 @@ "z": 0, "zone_id": 1 }, + { + "tile_kind": "Wall", + "visibility": "BoundaryWall", + "x": 59, + "y": 33, + "z": 0, + "zone_id": 1 + }, { "tile_kind": "Floor", "visibility": "Forward", @@ -2064,6 +2257,14 @@ "z": 0, "zone_id": 1 }, + { + "tile_kind": "Wall", + "visibility": "BoundaryWall", + "x": 60, + "y": 33, + "z": 0, + "zone_id": 1 + }, { "tile_kind": "Floor", "visibility": "Forward", @@ -2160,6 +2361,14 @@ "z": 0, "zone_id": 1 }, + { + "tile_kind": "Wall", + "visibility": "BoundaryWall", + "x": 61, + "y": 33, + "z": 0, + "zone_id": 1 + }, { "tile_kind": "Floor", "visibility": "Forward", @@ -2248,6 +2457,28 @@ "z": 0, "zone_id": 1 }, + { + "tile_kind": "Wall", + "visibility": "BoundaryWall", + "x": 62, + "y": 33, + "z": 0, + "zone_id": 1 + }, + { + "tile_kind": "Wall", + "visibility": "BoundaryWall", + "x": 62, + "y": 34, + "z": 0 + }, + { + "tile_kind": "Wall", + "visibility": "BoundaryWall", + "x": 62, + "y": 35, + "z": 0 + }, { "tile_kind": "Floor", "visibility": "Forward", @@ -2350,6 +2581,13 @@ "y": 35, "z": 0 }, + { + "tile_kind": "Wall", + "visibility": "BoundaryWall", + "x": 63, + "y": 36, + "z": 0 + }, { "tile_kind": "Floor", "visibility": "Forward", @@ -2452,6 +2690,13 @@ "y": 35, "z": 0 }, + { + "tile_kind": "Wall", + "visibility": "BoundaryWall", + "x": 64, + "y": 36, + "z": 0 + }, { "tile_kind": "Floor", "visibility": "Forward", @@ -2546,6 +2791,13 @@ "y": 35, "z": 0 }, + { + "tile_kind": "Wall", + "visibility": "BoundaryWall", + "x": 65, + "y": 36, + "z": 0 + }, { "tile_kind": "Floor", "visibility": "Forward", @@ -2640,6 +2892,13 @@ "y": 35, "z": 0 }, + { + "tile_kind": "Wall", + "visibility": "BoundaryWall", + "x": 66, + "y": 36, + "z": 0 + }, { "tile_kind": "Floor", "visibility": "Forward", @@ -2726,6 +2985,13 @@ "y": 35, "z": 0 }, + { + "tile_kind": "Wall", + "visibility": "BoundaryWall", + "x": 67, + "y": 36, + "z": 0 + }, { "tile_kind": "Floor", "visibility": "Forward", @@ -2812,6 +3078,13 @@ "y": 35, "z": 0 }, + { + "tile_kind": "Wall", + "visibility": "BoundaryWall", + "x": 68, + "y": 36, + "z": 0 + }, { "tile_kind": "Floor", "visibility": "Forward", @@ -2890,6 +3163,21 @@ "y": 35, "z": 0 }, + { + "tile_kind": "Wall", + "visibility": "BoundaryWall", + "x": 69, + "y": 36, + "z": 0 + }, + { + "tile_kind": "Wall", + "visibility": "BoundaryWall", + "x": 70, + "y": 26, + "z": 0, + "zone_id": 1 + }, { "tile_kind": "Wall", "visibility": "Forward", @@ -2960,6 +3248,45 @@ "y": 35, "z": 0 }, + { + "tile_kind": "Wall", + "visibility": "BoundaryWall", + "x": 70, + "y": 36, + "z": 0 + }, + { + "tile_kind": "Wall", + "visibility": "BoundaryWall", + "x": 71, + "y": 27, + "z": 0, + "zone_id": 1 + }, + { + "tile_kind": "Wall", + "visibility": "BoundaryWall", + "x": 71, + "y": 28, + "z": 0, + "zone_id": 1 + }, + { + "tile_kind": "Wall", + "visibility": "BoundaryWall", + "x": 71, + "y": 29, + "z": 0, + "zone_id": 1 + }, + { + "tile_kind": "Wall", + "visibility": "BoundaryWall", + "x": 71, + "y": 30, + "z": 0, + "zone_id": 1 + }, { "tile_kind": "Floor", "visibility": "Forward", @@ -2990,6 +3317,13 @@ "y": 35, "z": 0 }, + { + "tile_kind": "Wall", + "visibility": "BoundaryWall", + "x": 71, + "y": 36, + "z": 0 + }, { "tile_kind": "Floor", "visibility": "Forward", @@ -3011,6 +3345,20 @@ "y": 35, "z": 0 }, + { + "tile_kind": "Wall", + "visibility": "BoundaryWall", + "x": 72, + "y": 36, + "z": 0 + }, + { + "tile_kind": "Wall", + "visibility": "BoundaryWall", + "x": 73, + "y": 33, + "z": 0 + }, { "tile_kind": "Wall", "visibility": "Forward", @@ -3024,6 +3372,29 @@ "x": 73, "y": 35, "z": 0 + }, + { + "tile_kind": "Wall", + "visibility": "BoundaryWall", + "x": 73, + "y": 36, + "z": 0 + }, + { + "tile_kind": "Wall", + "visibility": "BoundaryWall", + "x": 74, + "y": 34, + "z": 0, + "zone_id": 9 + }, + { + "tile_kind": "Wall", + "visibility": "BoundaryWall", + "x": 74, + "y": 35, + "z": 0, + "zone_id": 9 } ] } diff --git a/tests/fixtures/gauntlet/fog_theater.msgpack b/tests/fixtures/gauntlet/fog_theater.msgpack index 1630a75e70ed067475944cd594e12baf05d20c51..7a4f340d481993046d6c34f70c168838903b3460 100644 GIT binary patch delta 2065 zcma*o&r8%n6aa8%cC)N3qeR(VeYxM&{847vuC8XTtL=KboOkBSHeT4z>_>Lqo)uq`)6b_Sax>z7E}xg#K#)ab6-1?MVz=1X!$j$DvaXRW|U6!!!HfE?Q-bRBd_9kI~LMQfcqWT=<5Xd zvJ+t+0s3P&;~Pd;`{a!?hb*jFBkQwv{_*&vJvFiF?x0eDMGwHW)-PFaR4sPT@Gyq= zJ0hY9SAToHdoE#cANv+OH(+q55+#>3xYx-s@4P{S`!!T@Lk7pvwfr8|dsFZJ>o2w| z<%oc$LEbNrlAA$GC5AsUHw8xMT6#D|+7UrR3P2Mgm^y-~HyDyuwIU*G(P zg_m)&GaHcTVs~cT%+3iUTDU41H=FaUXWXp72P8NJo-%IM5CRhJBGOEo=ZFD`j}n1Q zn`@-onKs+X0f~PKdzm(WRR$7o)IKw9mekT@-dv*#WUVv+iY+h(64T9q>LM(GgrrR% z6Qlj)g^H$|ZS0GfHs5z#&9r&9ODWUlM0X&;?q$!kx!eaxJon>dVgb6^ZSp}G<;e?} z1vgI)oX!Xmai2UvL3y$QtI*_{kp9Uwp>2~@!a^s@g)dKPUX+=#t|&D*KRqwA1nBp8 z1EVD+sTCzRjY2Z=i&GWS^7BiIOHvDp_4M=1aA(|)v diff --git a/tests/fixtures/gauntlet/hub_after_movement.json b/tests/fixtures/gauntlet/hub_after_movement.json index db60759b9..a5483d87a 100644 --- a/tests/fixtures/gauntlet/hub_after_movement.json +++ b/tests/fixtures/gauntlet/hub_after_movement.json @@ -1,7 +1,7 @@ { "blocked_entities": [ - 1, 2, + 3, 4, 5, 6, @@ -83,8 +83,6 @@ "relationship": 0, "total": 0 }, - "conversation_ended": [], - "conversation_events": [], "current_monologue": null, "dialogue_response": null, "entities": [ @@ -99,13 +97,13 @@ "z": 0 }, { - "entity_id": 3, + "entity_id": 1, "kind": "Object", "observation": "Visible", "relationship": "Unknown", "visibility": "Forward", "x": 50.5, - "y": 68.5, + "y": 48.5, "z": 0 } ], @@ -119,15 +117,15 @@ "nearby_interactions": [], "pending_recognitions": [ { - "entity_id": 3, - "remaining_ticks": 3, + "entity_id": 1, + "remaining_ticks": 2, "total_delay_ticks": 6, "x": 50.5, - "y": 68.5, + "y": 48.5, "z": 0 } ], - "player_facing": "South", + "player_facing": "North", "player_inventory": [], "player_stance": "Walk", "poi_list": [], @@ -137,13 +135,68 @@ "state_hash": 15450425815579635895, "tick": 4, "triangle_crisis_events": [], - "version": 17, "visible_tiles": [ { "tile_kind": "Wall", - "visibility": "Forward", + "visibility": "BoundaryWall", + "x": 38, + "y": 47, + "z": 0, + "zone_id": 0 + }, + { + "tile_kind": "Wall", + "visibility": "BoundaryWall", + "x": 38, + "y": 48, + "z": 0, + "zone_id": 0 + }, + { + "tile_kind": "Wall", + "visibility": "BoundaryWall", + "x": 38, + "y": 49, + "z": 0, + "zone_id": 0 + }, + { + "tile_kind": "Wall", + "visibility": "BoundaryWall", + "x": 38, + "y": 50, + "z": 0, + "zone_id": 0 + }, + { + "tile_kind": "Wall", + "visibility": "BoundaryWall", + "x": 38, + "y": 51, + "z": 0, + "zone_id": 0 + }, + { + "tile_kind": "Wall", + "visibility": "BoundaryWall", + "x": 38, + "y": 52, + "z": 0, + "zone_id": 0 + }, + { + "tile_kind": "Wall", + "visibility": "BoundaryWall", + "x": 38, + "y": 53, + "z": 0, + "zone_id": 0 + }, + { + "tile_kind": "Wall", + "visibility": "BoundaryWall", "x": 39, - "y": 67, + "y": 46, "z": 0, "zone_id": 0 }, @@ -151,23 +204,71 @@ "tile_kind": "Wall", "visibility": "Forward", "x": 39, - "y": 68, + "y": 47, "z": 0, "zone_id": 0 }, { - "tile_kind": "Floor", + "tile_kind": "Wall", "visibility": "Forward", - "x": 40, - "y": 66, + "x": 39, + "y": 48, "z": 0, "zone_id": 0 }, { - "tile_kind": "Floor", + "tile_kind": "Wall", "visibility": "Forward", + "x": 39, + "y": 49, + "z": 0, + "zone_id": 0 + }, + { + "tile_kind": "Wall", + "visibility": "Forward", + "x": 39, + "y": 50, + "z": 0, + "zone_id": 0 + }, + { + "tile_kind": "Wall", + "visibility": "Forward", + "x": 39, + "y": 51, + "z": 0, + "zone_id": 0 + }, + { + "tile_kind": "Wall", + "visibility": "Forward", + "x": 39, + "y": 52, + "z": 0, + "zone_id": 0 + }, + { + "tile_kind": "Wall", + "visibility": "Forward", + "x": 39, + "y": 53, + "z": 0, + "zone_id": 0 + }, + { + "tile_kind": "Wall", + "visibility": "BoundaryWall", + "x": 39, + "y": 54, + "z": 0, + "zone_id": 0 + }, + { + "tile_kind": "Wall", + "visibility": "BoundaryWall", "x": 40, - "y": 67, + "y": 46, "z": 0, "zone_id": 0 }, @@ -175,23 +276,71 @@ "tile_kind": "Wall", "visibility": "Forward", "x": 40, - "y": 68, + "y": 47, "z": 0, "zone_id": 0 }, { "tile_kind": "Floor", "visibility": "Forward", - "x": 41, - "y": 66, + "x": 40, + "y": 48, "z": 0, "zone_id": 0 }, { "tile_kind": "Floor", "visibility": "Forward", + "x": 40, + "y": 49, + "z": 0, + "zone_id": 0 + }, + { + "tile_kind": "Floor", + "visibility": "Forward", + "x": 40, + "y": 50, + "z": 0, + "zone_id": 0 + }, + { + "tile_kind": "Floor", + "visibility": "Forward", + "x": 40, + "y": 51, + "z": 0, + "zone_id": 0 + }, + { + "tile_kind": "Floor", + "visibility": "Forward", + "x": 40, + "y": 52, + "z": 0, + "zone_id": 0 + }, + { + "tile_kind": "Floor", + "visibility": "Forward", + "x": 40, + "y": 53, + "z": 0, + "zone_id": 0 + }, + { + "tile_kind": "Floor", + "visibility": "Forward", + "x": 40, + "y": 54, + "z": 0, + "zone_id": 0 + }, + { + "tile_kind": "Wall", + "visibility": "BoundaryWall", "x": 41, - "y": 67, + "y": 46, "z": 0, "zone_id": 0 }, @@ -199,31 +348,71 @@ "tile_kind": "Wall", "visibility": "Forward", "x": 41, - "y": 68, + "y": 47, "z": 0, "zone_id": 0 }, { "tile_kind": "Floor", "visibility": "Forward", - "x": 42, - "y": 65, + "x": 41, + "y": 48, "z": 0, "zone_id": 0 }, { "tile_kind": "Floor", "visibility": "Forward", - "x": 42, - "y": 66, + "x": 41, + "y": 49, "z": 0, "zone_id": 0 }, { "tile_kind": "Floor", "visibility": "Forward", + "x": 41, + "y": 50, + "z": 0, + "zone_id": 0 + }, + { + "tile_kind": "Floor", + "visibility": "Forward", + "x": 41, + "y": 51, + "z": 0, + "zone_id": 0 + }, + { + "tile_kind": "Floor", + "visibility": "Forward", + "x": 41, + "y": 52, + "z": 0, + "zone_id": 0 + }, + { + "tile_kind": "Floor", + "visibility": "Forward", + "x": 41, + "y": 53, + "z": 0, + "zone_id": 0 + }, + { + "tile_kind": "Floor", + "visibility": "Forward", + "x": 41, + "y": 54, + "z": 0, + "zone_id": 0 + }, + { + "tile_kind": "Wall", + "visibility": "BoundaryWall", "x": 42, - "y": 67, + "y": 46, "z": 0, "zone_id": 0 }, @@ -231,31 +420,79 @@ "tile_kind": "Wall", "visibility": "Forward", "x": 42, - "y": 68, + "y": 47, "z": 0, "zone_id": 0 }, { "tile_kind": "Floor", "visibility": "Forward", - "x": 43, - "y": 65, + "x": 42, + "y": 48, "z": 0, "zone_id": 0 }, { "tile_kind": "Floor", "visibility": "Forward", - "x": 43, - "y": 66, + "x": 42, + "y": 49, "z": 0, "zone_id": 0 }, { "tile_kind": "Floor", "visibility": "Forward", + "x": 42, + "y": 50, + "z": 0, + "zone_id": 0 + }, + { + "tile_kind": "Floor", + "visibility": "Forward", + "x": 42, + "y": 51, + "z": 0, + "zone_id": 0 + }, + { + "tile_kind": "Floor", + "visibility": "Forward", + "x": 42, + "y": 52, + "z": 0, + "zone_id": 0 + }, + { + "tile_kind": "Floor", + "visibility": "Forward", + "x": 42, + "y": 53, + "z": 0, + "zone_id": 0 + }, + { + "tile_kind": "Floor", + "visibility": "Forward", + "x": 42, + "y": 54, + "z": 0, + "zone_id": 0 + }, + { + "tile_kind": "Floor", + "visibility": "Forward", + "x": 42, + "y": 55, + "z": 0, + "zone_id": 0 + }, + { + "tile_kind": "Wall", + "visibility": "BoundaryWall", "x": 43, - "y": 67, + "y": 46, "z": 0, "zone_id": 0 }, @@ -263,39 +500,79 @@ "tile_kind": "Wall", "visibility": "Forward", "x": 43, - "y": 68, + "y": 47, "z": 0, "zone_id": 0 }, { "tile_kind": "Floor", "visibility": "Forward", - "x": 44, - "y": 64, + "x": 43, + "y": 48, "z": 0, "zone_id": 0 }, { "tile_kind": "Floor", "visibility": "Forward", - "x": 44, - "y": 65, + "x": 43, + "y": 49, "z": 0, "zone_id": 0 }, { "tile_kind": "Floor", "visibility": "Forward", - "x": 44, - "y": 66, + "x": 43, + "y": 50, "z": 0, "zone_id": 0 }, { "tile_kind": "Floor", "visibility": "Forward", + "x": 43, + "y": 51, + "z": 0, + "zone_id": 0 + }, + { + "tile_kind": "Floor", + "visibility": "Forward", + "x": 43, + "y": 52, + "z": 0, + "zone_id": 0 + }, + { + "tile_kind": "Floor", + "visibility": "Forward", + "x": 43, + "y": 53, + "z": 0, + "zone_id": 0 + }, + { + "tile_kind": "Floor", + "visibility": "Forward", + "x": 43, + "y": 54, + "z": 0, + "zone_id": 0 + }, + { + "tile_kind": "Floor", + "visibility": "Forward", + "x": 43, + "y": 55, + "z": 0, + "zone_id": 0 + }, + { + "tile_kind": "Wall", + "visibility": "BoundaryWall", "x": 44, - "y": 67, + "y": 46, "z": 0, "zone_id": 0 }, @@ -303,47 +580,87 @@ "tile_kind": "Wall", "visibility": "Forward", "x": 44, - "y": 68, + "y": 47, "z": 0, "zone_id": 0 }, { "tile_kind": "Floor", "visibility": "Forward", - "x": 45, - "y": 63, + "x": 44, + "y": 48, "z": 0, "zone_id": 0 }, { "tile_kind": "Floor", "visibility": "Forward", - "x": 45, - "y": 64, + "x": 44, + "y": 49, "z": 0, "zone_id": 0 }, { "tile_kind": "Floor", "visibility": "Forward", - "x": 45, - "y": 65, + "x": 44, + "y": 50, "z": 0, "zone_id": 0 }, { "tile_kind": "Floor", "visibility": "Forward", - "x": 45, - "y": 66, + "x": 44, + "y": 51, "z": 0, "zone_id": 0 }, { "tile_kind": "Floor", "visibility": "Forward", + "x": 44, + "y": 52, + "z": 0, + "zone_id": 0 + }, + { + "tile_kind": "Floor", + "visibility": "Forward", + "x": 44, + "y": 53, + "z": 0, + "zone_id": 0 + }, + { + "tile_kind": "Floor", + "visibility": "Forward", + "x": 44, + "y": 54, + "z": 0, + "zone_id": 0 + }, + { + "tile_kind": "Floor", + "visibility": "Forward", + "x": 44, + "y": 55, + "z": 0, + "zone_id": 0 + }, + { + "tile_kind": "Floor", + "visibility": "Forward", + "x": 44, + "y": 56, + "z": 0, + "zone_id": 0 + }, + { + "tile_kind": "Wall", + "visibility": "BoundaryWall", "x": 45, - "y": 67, + "y": 46, "z": 0, "zone_id": 0 }, @@ -351,47 +668,95 @@ "tile_kind": "Wall", "visibility": "Forward", "x": 45, - "y": 68, + "y": 47, "z": 0, "zone_id": 0 }, { "tile_kind": "Floor", "visibility": "Forward", - "x": 46, - "y": 63, + "x": 45, + "y": 48, "z": 0, "zone_id": 0 }, { "tile_kind": "Floor", "visibility": "Forward", - "x": 46, - "y": 64, + "x": 45, + "y": 49, "z": 0, "zone_id": 0 }, { "tile_kind": "Floor", "visibility": "Forward", - "x": 46, - "y": 65, + "x": 45, + "y": 50, "z": 0, "zone_id": 0 }, { "tile_kind": "Floor", "visibility": "Forward", - "x": 46, - "y": 66, + "x": 45, + "y": 51, "z": 0, "zone_id": 0 }, { "tile_kind": "Floor", "visibility": "Forward", + "x": 45, + "y": 52, + "z": 0, + "zone_id": 0 + }, + { + "tile_kind": "Floor", + "visibility": "Forward", + "x": 45, + "y": 53, + "z": 0, + "zone_id": 0 + }, + { + "tile_kind": "Floor", + "visibility": "Forward", + "x": 45, + "y": 54, + "z": 0, + "zone_id": 0 + }, + { + "tile_kind": "Floor", + "visibility": "Forward", + "x": 45, + "y": 55, + "z": 0, + "zone_id": 0 + }, + { + "tile_kind": "Floor", + "visibility": "Forward", + "x": 45, + "y": 56, + "z": 0, + "zone_id": 0 + }, + { + "tile_kind": "Floor", + "visibility": "Forward", + "x": 45, + "y": 57, + "z": 0, + "zone_id": 0 + }, + { + "tile_kind": "Wall", + "visibility": "BoundaryWall", "x": 46, - "y": 67, + "y": 46, "z": 0, "zone_id": 0 }, @@ -399,55 +764,95 @@ "tile_kind": "Wall", "visibility": "Forward", "x": 46, - "y": 68, + "y": 47, "z": 0, "zone_id": 0 }, { "tile_kind": "Floor", "visibility": "Forward", - "x": 47, - "y": 62, + "x": 46, + "y": 48, "z": 0, "zone_id": 0 }, { "tile_kind": "Floor", "visibility": "Forward", - "x": 47, - "y": 63, + "x": 46, + "y": 49, "z": 0, "zone_id": 0 }, { "tile_kind": "Floor", "visibility": "Forward", - "x": 47, - "y": 64, + "x": 46, + "y": 50, "z": 0, "zone_id": 0 }, { "tile_kind": "Floor", "visibility": "Forward", - "x": 47, - "y": 65, + "x": 46, + "y": 51, "z": 0, "zone_id": 0 }, { "tile_kind": "Floor", "visibility": "Forward", - "x": 47, - "y": 66, + "x": 46, + "y": 52, "z": 0, "zone_id": 0 }, { "tile_kind": "Floor", "visibility": "Forward", + "x": 46, + "y": 53, + "z": 0, + "zone_id": 0 + }, + { + "tile_kind": "Floor", + "visibility": "Forward", + "x": 46, + "y": 54, + "z": 0, + "zone_id": 0 + }, + { + "tile_kind": "Floor", + "visibility": "Forward", + "x": 46, + "y": 55, + "z": 0, + "zone_id": 0 + }, + { + "tile_kind": "Floor", + "visibility": "Forward", + "x": 46, + "y": 56, + "z": 0, + "zone_id": 0 + }, + { + "tile_kind": "Floor", + "visibility": "Forward", + "x": 46, + "y": 57, + "z": 0, + "zone_id": 0 + }, + { + "tile_kind": "Wall", + "visibility": "BoundaryWall", "x": 47, - "y": 67, + "y": 46, "z": 0, "zone_id": 0 }, @@ -455,55 +860,103 @@ "tile_kind": "Wall", "visibility": "Forward", "x": 47, - "y": 68, + "y": 47, "z": 0, "zone_id": 0 }, { "tile_kind": "Floor", "visibility": "Forward", - "x": 48, - "y": 62, + "x": 47, + "y": 48, "z": 0, "zone_id": 0 }, { "tile_kind": "Floor", "visibility": "Forward", - "x": 48, - "y": 63, + "x": 47, + "y": 49, "z": 0, "zone_id": 0 }, { "tile_kind": "Floor", "visibility": "Forward", - "x": 48, - "y": 64, + "x": 47, + "y": 50, "z": 0, "zone_id": 0 }, { "tile_kind": "Floor", "visibility": "Forward", - "x": 48, - "y": 65, + "x": 47, + "y": 51, "z": 0, "zone_id": 0 }, { "tile_kind": "Floor", "visibility": "Forward", - "x": 48, - "y": 66, + "x": 47, + "y": 52, "z": 0, "zone_id": 0 }, { "tile_kind": "Floor", "visibility": "Forward", + "x": 47, + "y": 53, + "z": 0, + "zone_id": 0 + }, + { + "tile_kind": "Floor", + "visibility": "Forward", + "x": 47, + "y": 54, + "z": 0, + "zone_id": 0 + }, + { + "tile_kind": "Floor", + "visibility": "Forward", + "x": 47, + "y": 55, + "z": 0, + "zone_id": 0 + }, + { + "tile_kind": "Floor", + "visibility": "Forward", + "x": 47, + "y": 56, + "z": 0, + "zone_id": 0 + }, + { + "tile_kind": "Floor", + "visibility": "Forward", + "x": 47, + "y": 57, + "z": 0, + "zone_id": 0 + }, + { + "tile_kind": "Floor", + "visibility": "Forward", + "x": 47, + "y": 58, + "z": 0, + "zone_id": 0 + }, + { + "tile_kind": "Wall", + "visibility": "BoundaryWall", "x": 48, - "y": 67, + "y": 46, "z": 0, "zone_id": 0 }, @@ -511,63 +964,103 @@ "tile_kind": "Wall", "visibility": "Forward", "x": 48, - "y": 68, + "y": 47, "z": 0, "zone_id": 0 }, { "tile_kind": "Floor", "visibility": "Forward", - "x": 49, - "y": 61, + "x": 48, + "y": 48, "z": 0, "zone_id": 0 }, { "tile_kind": "Floor", "visibility": "Forward", - "x": 49, - "y": 62, + "x": 48, + "y": 49, "z": 0, "zone_id": 0 }, { "tile_kind": "Floor", "visibility": "Forward", - "x": 49, - "y": 63, + "x": 48, + "y": 50, "z": 0, "zone_id": 0 }, { "tile_kind": "Floor", "visibility": "Forward", - "x": 49, - "y": 64, + "x": 48, + "y": 51, "z": 0, "zone_id": 0 }, { "tile_kind": "Floor", "visibility": "Forward", - "x": 49, - "y": 65, + "x": 48, + "y": 52, "z": 0, "zone_id": 0 }, { "tile_kind": "Floor", "visibility": "Forward", - "x": 49, - "y": 66, + "x": 48, + "y": 53, "z": 0, "zone_id": 0 }, { "tile_kind": "Floor", "visibility": "Forward", + "x": 48, + "y": 54, + "z": 0, + "zone_id": 0 + }, + { + "tile_kind": "Floor", + "visibility": "Forward", + "x": 48, + "y": 55, + "z": 0, + "zone_id": 0 + }, + { + "tile_kind": "Floor", + "visibility": "Forward", + "x": 48, + "y": 56, + "z": 0, + "zone_id": 0 + }, + { + "tile_kind": "Floor", + "visibility": "Forward", + "x": 48, + "y": 57, + "z": 0, + "zone_id": 0 + }, + { + "tile_kind": "Floor", + "visibility": "Forward", + "x": 48, + "y": 58, + "z": 0, + "zone_id": 0 + }, + { + "tile_kind": "Wall", + "visibility": "BoundaryWall", "x": 49, - "y": 67, + "y": 46, "z": 0, "zone_id": 0 }, @@ -575,7 +1068,215 @@ "tile_kind": "Wall", "visibility": "Forward", "x": 49, - "y": 68, + "y": 47, + "z": 0, + "zone_id": 0 + }, + { + "tile_kind": "Floor", + "visibility": "Forward", + "x": 49, + "y": 48, + "z": 0, + "zone_id": 0 + }, + { + "tile_kind": "Floor", + "visibility": "Forward", + "x": 49, + "y": 49, + "z": 0, + "zone_id": 0 + }, + { + "tile_kind": "Floor", + "visibility": "Forward", + "x": 49, + "y": 50, + "z": 0, + "zone_id": 0 + }, + { + "tile_kind": "Floor", + "visibility": "Forward", + "x": 49, + "y": 51, + "z": 0, + "zone_id": 0 + }, + { + "tile_kind": "Floor", + "visibility": "Forward", + "x": 49, + "y": 52, + "z": 0, + "zone_id": 0 + }, + { + "tile_kind": "Floor", + "visibility": "Forward", + "x": 49, + "y": 53, + "z": 0, + "zone_id": 0 + }, + { + "tile_kind": "Floor", + "visibility": "Forward", + "x": 49, + "y": 54, + "z": 0, + "zone_id": 0 + }, + { + "tile_kind": "Floor", + "visibility": "Forward", + "x": 49, + "y": 55, + "z": 0, + "zone_id": 0 + }, + { + "tile_kind": "Floor", + "visibility": "Forward", + "x": 49, + "y": 56, + "z": 0, + "zone_id": 0 + }, + { + "tile_kind": "Floor", + "visibility": "Forward", + "x": 49, + "y": 57, + "z": 0, + "zone_id": 0 + }, + { + "tile_kind": "Floor", + "visibility": "Forward", + "x": 49, + "y": 58, + "z": 0, + "zone_id": 0 + }, + { + "tile_kind": "Floor", + "visibility": "Forward", + "x": 49, + "y": 59, + "z": 0, + "zone_id": 0 + }, + { + "tile_kind": "Wall", + "visibility": "BoundaryWall", + "x": 50, + "y": 46, + "z": 0, + "zone_id": 0 + }, + { + "tile_kind": "Wall", + "visibility": "Forward", + "x": 50, + "y": 47, + "z": 0, + "zone_id": 0 + }, + { + "tile_kind": "Floor", + "visibility": "Forward", + "x": 50, + "y": 48, + "z": 0, + "zone_id": 0 + }, + { + "tile_kind": "Floor", + "visibility": "Forward", + "x": 50, + "y": 49, + "z": 0, + "zone_id": 0 + }, + { + "tile_kind": "Floor", + "visibility": "Forward", + "x": 50, + "y": 50, + "z": 0, + "zone_id": 0 + }, + { + "tile_kind": "Floor", + "visibility": "Forward", + "x": 50, + "y": 51, + "z": 0, + "zone_id": 0 + }, + { + "tile_kind": "Floor", + "visibility": "Forward", + "x": 50, + "y": 52, + "z": 0, + "zone_id": 0 + }, + { + "tile_kind": "Floor", + "visibility": "Forward", + "x": 50, + "y": 53, + "z": 0, + "zone_id": 0 + }, + { + "tile_kind": "Floor", + "visibility": "Forward", + "x": 50, + "y": 54, + "z": 0, + "zone_id": 0 + }, + { + "tile_kind": "Floor", + "visibility": "Forward", + "x": 50, + "y": 55, + "z": 0, + "zone_id": 0 + }, + { + "tile_kind": "Floor", + "visibility": "Forward", + "x": 50, + "y": 56, + "z": 0, + "zone_id": 0 + }, + { + "tile_kind": "Floor", + "visibility": "Forward", + "x": 50, + "y": 57, + "z": 0, + "zone_id": 0 + }, + { + "tile_kind": "Floor", + "visibility": "Forward", + "x": 50, + "y": 58, + "z": 0, + "zone_id": 0 + }, + { + "tile_kind": "Floor", + "visibility": "Forward", + "x": 50, + "y": 59, "z": 0, "zone_id": 0 }, @@ -587,123 +1288,11 @@ "z": 0, "zone_id": 0 }, - { - "tile_kind": "Floor", - "visibility": "Forward", - "x": 50, - "y": 61, - "z": 0, - "zone_id": 0 - }, - { - "tile_kind": "Floor", - "visibility": "Forward", - "x": 50, - "y": 62, - "z": 0, - "zone_id": 0 - }, - { - "tile_kind": "Floor", - "visibility": "Forward", - "x": 50, - "y": 63, - "z": 0, - "zone_id": 0 - }, - { - "tile_kind": "Floor", - "visibility": "Forward", - "x": 50, - "y": 64, - "z": 0, - "zone_id": 0 - }, - { - "tile_kind": "Floor", - "visibility": "Forward", - "x": 50, - "y": 65, - "z": 0, - "zone_id": 0 - }, - { - "tile_kind": "Floor", - "visibility": "Forward", - "x": 50, - "y": 66, - "z": 0, - "zone_id": 0 - }, - { - "tile_kind": "Floor", - "visibility": "Forward", - "x": 50, - "y": 67, - "z": 0, - "zone_id": 0 - }, { "tile_kind": "Wall", - "visibility": "Forward", - "x": 50, - "y": 68, - "z": 0, - "zone_id": 0 - }, - { - "tile_kind": "Floor", - "visibility": "Forward", + "visibility": "BoundaryWall", "x": 51, - "y": 61, - "z": 0, - "zone_id": 0 - }, - { - "tile_kind": "Floor", - "visibility": "Forward", - "x": 51, - "y": 62, - "z": 0, - "zone_id": 0 - }, - { - "tile_kind": "Floor", - "visibility": "Forward", - "x": 51, - "y": 63, - "z": 0, - "zone_id": 0 - }, - { - "tile_kind": "Floor", - "visibility": "Forward", - "x": 51, - "y": 64, - "z": 0, - "zone_id": 0 - }, - { - "tile_kind": "Floor", - "visibility": "Forward", - "x": 51, - "y": 65, - "z": 0, - "zone_id": 0 - }, - { - "tile_kind": "Floor", - "visibility": "Forward", - "x": 51, - "y": 66, - "z": 0, - "zone_id": 0 - }, - { - "tile_kind": "Floor", - "visibility": "Forward", - "x": 51, - "y": 67, + "y": 46, "z": 0, "zone_id": 0 }, @@ -711,55 +1300,111 @@ "tile_kind": "Wall", "visibility": "Forward", "x": 51, - "y": 68, + "y": 47, "z": 0, "zone_id": 0 }, { "tile_kind": "Floor", "visibility": "Forward", - "x": 52, - "y": 62, + "x": 51, + "y": 48, "z": 0, "zone_id": 0 }, { "tile_kind": "Floor", "visibility": "Forward", - "x": 52, - "y": 63, + "x": 51, + "y": 49, "z": 0, "zone_id": 0 }, { "tile_kind": "Floor", "visibility": "Forward", - "x": 52, - "y": 64, + "x": 51, + "y": 50, "z": 0, "zone_id": 0 }, { "tile_kind": "Floor", "visibility": "Forward", - "x": 52, - "y": 65, + "x": 51, + "y": 51, "z": 0, "zone_id": 0 }, { "tile_kind": "Floor", "visibility": "Forward", - "x": 52, - "y": 66, + "x": 51, + "y": 52, "z": 0, "zone_id": 0 }, { "tile_kind": "Floor", "visibility": "Forward", + "x": 51, + "y": 53, + "z": 0, + "zone_id": 0 + }, + { + "tile_kind": "Floor", + "visibility": "Forward", + "x": 51, + "y": 54, + "z": 0, + "zone_id": 0 + }, + { + "tile_kind": "Floor", + "visibility": "Forward", + "x": 51, + "y": 55, + "z": 0, + "zone_id": 0 + }, + { + "tile_kind": "Floor", + "visibility": "Forward", + "x": 51, + "y": 56, + "z": 0, + "zone_id": 0 + }, + { + "tile_kind": "Floor", + "visibility": "Forward", + "x": 51, + "y": 57, + "z": 0, + "zone_id": 0 + }, + { + "tile_kind": "Floor", + "visibility": "Forward", + "x": 51, + "y": 58, + "z": 0, + "zone_id": 0 + }, + { + "tile_kind": "Floor", + "visibility": "Forward", + "x": 51, + "y": 59, + "z": 0, + "zone_id": 0 + }, + { + "tile_kind": "Wall", + "visibility": "BoundaryWall", "x": 52, - "y": 67, + "y": 46, "z": 0, "zone_id": 0 }, @@ -767,55 +1412,103 @@ "tile_kind": "Wall", "visibility": "Forward", "x": 52, - "y": 68, + "y": 47, "z": 0, "zone_id": 0 }, { "tile_kind": "Floor", "visibility": "Forward", - "x": 53, - "y": 62, + "x": 52, + "y": 48, "z": 0, "zone_id": 0 }, { "tile_kind": "Floor", "visibility": "Forward", - "x": 53, - "y": 63, + "x": 52, + "y": 49, "z": 0, "zone_id": 0 }, { "tile_kind": "Floor", "visibility": "Forward", - "x": 53, - "y": 64, + "x": 52, + "y": 50, "z": 0, "zone_id": 0 }, { "tile_kind": "Floor", "visibility": "Forward", - "x": 53, - "y": 65, + "x": 52, + "y": 51, "z": 0, "zone_id": 0 }, { "tile_kind": "Floor", "visibility": "Forward", - "x": 53, - "y": 66, + "x": 52, + "y": 52, "z": 0, "zone_id": 0 }, { "tile_kind": "Floor", "visibility": "Forward", + "x": 52, + "y": 53, + "z": 0, + "zone_id": 0 + }, + { + "tile_kind": "Floor", + "visibility": "Forward", + "x": 52, + "y": 54, + "z": 0, + "zone_id": 0 + }, + { + "tile_kind": "Floor", + "visibility": "Forward", + "x": 52, + "y": 55, + "z": 0, + "zone_id": 0 + }, + { + "tile_kind": "Floor", + "visibility": "Forward", + "x": 52, + "y": 56, + "z": 0, + "zone_id": 0 + }, + { + "tile_kind": "Floor", + "visibility": "Forward", + "x": 52, + "y": 57, + "z": 0, + "zone_id": 0 + }, + { + "tile_kind": "Floor", + "visibility": "Forward", + "x": 52, + "y": 58, + "z": 0, + "zone_id": 0 + }, + { + "tile_kind": "Wall", + "visibility": "BoundaryWall", "x": 53, - "y": 67, + "y": 46, "z": 0, "zone_id": 0 }, @@ -823,47 +1516,103 @@ "tile_kind": "Wall", "visibility": "Forward", "x": 53, - "y": 68, + "y": 47, "z": 0, "zone_id": 0 }, { "tile_kind": "Floor", "visibility": "Forward", - "x": 54, - "y": 63, + "x": 53, + "y": 48, "z": 0, "zone_id": 0 }, { "tile_kind": "Floor", "visibility": "Forward", - "x": 54, - "y": 64, + "x": 53, + "y": 49, "z": 0, "zone_id": 0 }, { "tile_kind": "Floor", "visibility": "Forward", - "x": 54, - "y": 65, + "x": 53, + "y": 50, "z": 0, "zone_id": 0 }, { "tile_kind": "Floor", "visibility": "Forward", - "x": 54, - "y": 66, + "x": 53, + "y": 51, "z": 0, "zone_id": 0 }, { "tile_kind": "Floor", "visibility": "Forward", + "x": 53, + "y": 52, + "z": 0, + "zone_id": 0 + }, + { + "tile_kind": "Floor", + "visibility": "Forward", + "x": 53, + "y": 53, + "z": 0, + "zone_id": 0 + }, + { + "tile_kind": "Floor", + "visibility": "Forward", + "x": 53, + "y": 54, + "z": 0, + "zone_id": 0 + }, + { + "tile_kind": "Floor", + "visibility": "Forward", + "x": 53, + "y": 55, + "z": 0, + "zone_id": 0 + }, + { + "tile_kind": "Floor", + "visibility": "Forward", + "x": 53, + "y": 56, + "z": 0, + "zone_id": 0 + }, + { + "tile_kind": "Floor", + "visibility": "Forward", + "x": 53, + "y": 57, + "z": 0, + "zone_id": 0 + }, + { + "tile_kind": "Floor", + "visibility": "Forward", + "x": 53, + "y": 58, + "z": 0, + "zone_id": 0 + }, + { + "tile_kind": "Wall", + "visibility": "BoundaryWall", "x": 54, - "y": 67, + "y": 46, "z": 0, "zone_id": 0 }, @@ -871,47 +1620,95 @@ "tile_kind": "Wall", "visibility": "Forward", "x": 54, - "y": 68, + "y": 47, "z": 0, "zone_id": 0 }, { "tile_kind": "Floor", "visibility": "Forward", - "x": 55, - "y": 63, + "x": 54, + "y": 48, "z": 0, "zone_id": 0 }, { "tile_kind": "Floor", "visibility": "Forward", - "x": 55, - "y": 64, + "x": 54, + "y": 49, "z": 0, "zone_id": 0 }, { "tile_kind": "Floor", "visibility": "Forward", - "x": 55, - "y": 65, + "x": 54, + "y": 50, "z": 0, "zone_id": 0 }, { "tile_kind": "Floor", "visibility": "Forward", - "x": 55, - "y": 66, + "x": 54, + "y": 51, "z": 0, "zone_id": 0 }, { "tile_kind": "Floor", "visibility": "Forward", + "x": 54, + "y": 52, + "z": 0, + "zone_id": 0 + }, + { + "tile_kind": "Floor", + "visibility": "Forward", + "x": 54, + "y": 53, + "z": 0, + "zone_id": 0 + }, + { + "tile_kind": "Floor", + "visibility": "Forward", + "x": 54, + "y": 54, + "z": 0, + "zone_id": 0 + }, + { + "tile_kind": "Floor", + "visibility": "Forward", + "x": 54, + "y": 55, + "z": 0, + "zone_id": 0 + }, + { + "tile_kind": "Floor", + "visibility": "Forward", + "x": 54, + "y": 56, + "z": 0, + "zone_id": 0 + }, + { + "tile_kind": "Floor", + "visibility": "Forward", + "x": 54, + "y": 57, + "z": 0, + "zone_id": 0 + }, + { + "tile_kind": "Wall", + "visibility": "BoundaryWall", "x": 55, - "y": 67, + "y": 46, "z": 0, "zone_id": 0 }, @@ -919,39 +1716,95 @@ "tile_kind": "Wall", "visibility": "Forward", "x": 55, - "y": 68, + "y": 47, "z": 0, "zone_id": 0 }, { "tile_kind": "Floor", "visibility": "Forward", + "x": 55, + "y": 48, + "z": 0, + "zone_id": 0 + }, + { + "tile_kind": "Floor", + "visibility": "Forward", + "x": 55, + "y": 49, + "z": 0, + "zone_id": 0 + }, + { + "tile_kind": "Floor", + "visibility": "Forward", + "x": 55, + "y": 50, + "z": 0, + "zone_id": 0 + }, + { + "tile_kind": "Floor", + "visibility": "Forward", + "x": 55, + "y": 51, + "z": 0, + "zone_id": 0 + }, + { + "tile_kind": "Floor", + "visibility": "Forward", + "x": 55, + "y": 52, + "z": 0, + "zone_id": 0 + }, + { + "tile_kind": "Floor", + "visibility": "Forward", + "x": 55, + "y": 53, + "z": 0, + "zone_id": 0 + }, + { + "tile_kind": "Floor", + "visibility": "Forward", + "x": 55, + "y": 54, + "z": 0, + "zone_id": 0 + }, + { + "tile_kind": "Floor", + "visibility": "Forward", + "x": 55, + "y": 55, + "z": 0, + "zone_id": 0 + }, + { + "tile_kind": "Floor", + "visibility": "Forward", + "x": 55, + "y": 56, + "z": 0, + "zone_id": 0 + }, + { + "tile_kind": "Floor", + "visibility": "Forward", + "x": 55, + "y": 57, + "z": 0, + "zone_id": 0 + }, + { + "tile_kind": "Wall", + "visibility": "BoundaryWall", "x": 56, - "y": 64, - "z": 0, - "zone_id": 0 - }, - { - "tile_kind": "Floor", - "visibility": "Forward", - "x": 56, - "y": 65, - "z": 0, - "zone_id": 0 - }, - { - "tile_kind": "Floor", - "visibility": "Forward", - "x": 56, - "y": 66, - "z": 0, - "zone_id": 0 - }, - { - "tile_kind": "Floor", - "visibility": "Forward", - "x": 56, - "y": 67, + "y": 46, "z": 0, "zone_id": 0 }, @@ -959,31 +1812,87 @@ "tile_kind": "Wall", "visibility": "Forward", "x": 56, - "y": 68, + "y": 47, "z": 0, "zone_id": 0 }, { "tile_kind": "Floor", "visibility": "Forward", + "x": 56, + "y": 48, + "z": 0, + "zone_id": 0 + }, + { + "tile_kind": "Floor", + "visibility": "Forward", + "x": 56, + "y": 49, + "z": 0, + "zone_id": 0 + }, + { + "tile_kind": "Floor", + "visibility": "Forward", + "x": 56, + "y": 50, + "z": 0, + "zone_id": 0 + }, + { + "tile_kind": "Floor", + "visibility": "Forward", + "x": 56, + "y": 51, + "z": 0, + "zone_id": 0 + }, + { + "tile_kind": "Floor", + "visibility": "Forward", + "x": 56, + "y": 52, + "z": 0, + "zone_id": 0 + }, + { + "tile_kind": "Floor", + "visibility": "Forward", + "x": 56, + "y": 53, + "z": 0, + "zone_id": 0 + }, + { + "tile_kind": "Floor", + "visibility": "Forward", + "x": 56, + "y": 54, + "z": 0, + "zone_id": 0 + }, + { + "tile_kind": "Floor", + "visibility": "Forward", + "x": 56, + "y": 55, + "z": 0, + "zone_id": 0 + }, + { + "tile_kind": "Floor", + "visibility": "Forward", + "x": 56, + "y": 56, + "z": 0, + "zone_id": 0 + }, + { + "tile_kind": "Wall", + "visibility": "BoundaryWall", "x": 57, - "y": 65, - "z": 0, - "zone_id": 0 - }, - { - "tile_kind": "Floor", - "visibility": "Forward", - "x": 57, - "y": 66, - "z": 0, - "zone_id": 0 - }, - { - "tile_kind": "Floor", - "visibility": "Forward", - "x": 57, - "y": 67, + "y": 46, "z": 0, "zone_id": 0 }, @@ -991,31 +1900,79 @@ "tile_kind": "Wall", "visibility": "Forward", "x": 57, - "y": 68, + "y": 47, "z": 0, "zone_id": 0 }, { "tile_kind": "Floor", "visibility": "Forward", - "x": 58, - "y": 65, + "x": 57, + "y": 48, "z": 0, "zone_id": 0 }, { "tile_kind": "Floor", "visibility": "Forward", - "x": 58, - "y": 66, + "x": 57, + "y": 49, "z": 0, "zone_id": 0 }, { "tile_kind": "Floor", "visibility": "Forward", + "x": 57, + "y": 50, + "z": 0, + "zone_id": 0 + }, + { + "tile_kind": "Floor", + "visibility": "Forward", + "x": 57, + "y": 51, + "z": 0, + "zone_id": 0 + }, + { + "tile_kind": "Floor", + "visibility": "Forward", + "x": 57, + "y": 52, + "z": 0, + "zone_id": 0 + }, + { + "tile_kind": "Floor", + "visibility": "Forward", + "x": 57, + "y": 53, + "z": 0, + "zone_id": 0 + }, + { + "tile_kind": "Floor", + "visibility": "Forward", + "x": 57, + "y": 54, + "z": 0, + "zone_id": 0 + }, + { + "tile_kind": "Floor", + "visibility": "Forward", + "x": 57, + "y": 55, + "z": 0, + "zone_id": 0 + }, + { + "tile_kind": "Wall", + "visibility": "BoundaryWall", "x": 58, - "y": 67, + "y": 46, "z": 0, "zone_id": 0 }, @@ -1023,23 +1980,79 @@ "tile_kind": "Wall", "visibility": "Forward", "x": 58, - "y": 68, + "y": 47, "z": 0, "zone_id": 0 }, { "tile_kind": "Floor", "visibility": "Forward", + "x": 58, + "y": 48, + "z": 0, + "zone_id": 0 + }, + { + "tile_kind": "Floor", + "visibility": "Forward", + "x": 58, + "y": 49, + "z": 0, + "zone_id": 0 + }, + { + "tile_kind": "Floor", + "visibility": "Forward", + "x": 58, + "y": 50, + "z": 0, + "zone_id": 0 + }, + { + "tile_kind": "Floor", + "visibility": "Forward", + "x": 58, + "y": 51, + "z": 0, + "zone_id": 0 + }, + { + "tile_kind": "Floor", + "visibility": "Forward", + "x": 58, + "y": 52, + "z": 0, + "zone_id": 0 + }, + { + "tile_kind": "Floor", + "visibility": "Forward", + "x": 58, + "y": 53, + "z": 0, + "zone_id": 0 + }, + { + "tile_kind": "Floor", + "visibility": "Forward", + "x": 58, + "y": 54, + "z": 0, + "zone_id": 0 + }, + { + "tile_kind": "Floor", + "visibility": "Forward", + "x": 58, + "y": 55, + "z": 0, + "zone_id": 0 + }, + { + "tile_kind": "Wall", + "visibility": "BoundaryWall", "x": 59, - "y": 66, - "z": 0, - "zone_id": 0 - }, - { - "tile_kind": "Floor", - "visibility": "Forward", - "x": 59, - "y": 67, + "y": 46, "z": 0, "zone_id": 0 }, @@ -1047,7 +2060,71 @@ "tile_kind": "Wall", "visibility": "Forward", "x": 59, - "y": 68, + "y": 47, + "z": 0, + "zone_id": 0 + }, + { + "tile_kind": "Floor", + "visibility": "Forward", + "x": 59, + "y": 48, + "z": 0, + "zone_id": 0 + }, + { + "tile_kind": "Floor", + "visibility": "Forward", + "x": 59, + "y": 49, + "z": 0, + "zone_id": 0 + }, + { + "tile_kind": "Floor", + "visibility": "Forward", + "x": 59, + "y": 50, + "z": 0, + "zone_id": 0 + }, + { + "tile_kind": "Floor", + "visibility": "Forward", + "x": 59, + "y": 51, + "z": 0, + "zone_id": 0 + }, + { + "tile_kind": "Floor", + "visibility": "Forward", + "x": 59, + "y": 52, + "z": 0, + "zone_id": 0 + }, + { + "tile_kind": "Floor", + "visibility": "Forward", + "x": 59, + "y": 53, + "z": 0, + "zone_id": 0 + }, + { + "tile_kind": "Floor", + "visibility": "Forward", + "x": 59, + "y": 54, + "z": 0, + "zone_id": 0 + }, + { + "tile_kind": "Wall", + "visibility": "BoundaryWall", + "x": 60, + "y": 46, "z": 0, "zone_id": 0 }, @@ -1055,7 +2132,7 @@ "tile_kind": "Wall", "visibility": "Forward", "x": 60, - "y": 66, + "y": 47, "z": 0, "zone_id": 0 }, @@ -1063,7 +2140,7 @@ "tile_kind": "Wall", "visibility": "Forward", "x": 60, - "y": 67, + "y": 48, "z": 0, "zone_id": 0 }, @@ -1071,7 +2148,119 @@ "tile_kind": "Wall", "visibility": "Forward", "x": 60, - "y": 68, + "y": 49, + "z": 0, + "zone_id": 0 + }, + { + "tile_kind": "Wall", + "visibility": "Forward", + "x": 60, + "y": 50, + "z": 0, + "zone_id": 0 + }, + { + "tile_kind": "Wall", + "visibility": "Forward", + "x": 60, + "y": 51, + "z": 0, + "zone_id": 0 + }, + { + "tile_kind": "Wall", + "visibility": "Forward", + "x": 60, + "y": 52, + "z": 0, + "zone_id": 0 + }, + { + "tile_kind": "Wall", + "visibility": "Forward", + "x": 60, + "y": 53, + "z": 0, + "zone_id": 0 + }, + { + "tile_kind": "Wall", + "visibility": "Forward", + "x": 60, + "y": 54, + "z": 0, + "zone_id": 0 + }, + { + "tile_kind": "Wall", + "visibility": "BoundaryWall", + "x": 60, + "y": 55, + "z": 0, + "zone_id": 0 + }, + { + "tile_kind": "Wall", + "visibility": "BoundaryWall", + "x": 61, + "y": 47, + "z": 0, + "zone_id": 0 + }, + { + "tile_kind": "Wall", + "visibility": "BoundaryWall", + "x": 61, + "y": 48, + "z": 0, + "zone_id": 0 + }, + { + "tile_kind": "Wall", + "visibility": "BoundaryWall", + "x": 61, + "y": 49, + "z": 0, + "zone_id": 0 + }, + { + "tile_kind": "Wall", + "visibility": "BoundaryWall", + "x": 61, + "y": 50, + "z": 0, + "zone_id": 0 + }, + { + "tile_kind": "Wall", + "visibility": "BoundaryWall", + "x": 61, + "y": 51, + "z": 0, + "zone_id": 0 + }, + { + "tile_kind": "Wall", + "visibility": "BoundaryWall", + "x": 61, + "y": 52, + "z": 0, + "zone_id": 0 + }, + { + "tile_kind": "Wall", + "visibility": "BoundaryWall", + "x": 61, + "y": 53, + "z": 0, + "zone_id": 0 + }, + { + "tile_kind": "Wall", + "visibility": "BoundaryWall", + "x": 61, + "y": 54, "z": 0, "zone_id": 0 } diff --git a/tests/fixtures/gauntlet/hub_after_movement.msgpack b/tests/fixtures/gauntlet/hub_after_movement.msgpack index 44294b99140f08d1c0d642450862f60fcd65d365..6743c1126dce02192bf7f73cfb841bb7467bcc3d 100644 GIT binary patch literal 15258 zcmbW;OH&+G0EXd7j8WrVT`hWXwzyYpx1`1<~AAhP>EM&DvBw40mdw-!QQ^>zDb*^^a|w z&hLLMN&Tp7*1qt=>h*vATM#XpD7A58Ws{FV8kpp}Z?>ABHoTxxT3x;|d9hSlZQPiQ z`Ea?kRt=)c51%$4a&<9Cf|(!;(#FP=jhFnmvK^byPXikz^FeKWIr_;o8RKV zx80t!^{C><4PKUz7nA>={fgPE6mDF$k;z_$Te3%%y|V0+Wxp&3WI3qGQ>%?GS?2cK zFY$k-; z&Mj5p&@ENr(k)ft)Gbxv)-6?T?8Ai|R%hg)k?uo-grQNw&?sSOlrS_(7#bxEjS`0L zl!r#T4-FEAMhQcsgrQNw&?sSOlrS_(8+!QmH~n_r2hPfQAl>r-33;G|JWxU&C?OA& zkOxZ01102v67o1F=Ye$310>{u67oO^d7y+mP(mIkArF+02TIFh#QiiA7 zDWZfFQ9_C+A;oSvMWlO*AR$GRkRnP*5hbLE5>iA7DWZfFQ9_C+Aw`sy;+Xq;X^$K* z(mi015HLyz7$pRZ5&}jE0i%R~Q9{5dAz+jcFiHp*B?R0n2aI$N7$gLY5&}jE0i%R~ zQ9{5dAz+jcFiHp*B?OET0!C>8kGsEb_sQ8K-LnS?*`tK)Q9|}8A$ydNJxa(PC1j5h zvPTKoqlD~HLiQ*v`w92M(k~wtr2An335NwG92S&tSWv=YK?#QiB^(x%a9B{nVL=Ip z1tlC7lyF#3!eJSZvq!pT4-&FR3E88B>`_AYC?R{4kUdJs9wlUt60%1L*`tK)2jzf~ z?g4{@fKfugC?Q~!5HLyz7$pRZ5&}jE0i%R~Q9{5dA>bi7V5ED%AR%Cs5HLyz7$pRZ z5&}jE0i%R~Q9{5dAz+jc@UWaB(mh3xkRnP*5hbLE5>iA7DWZfFQ9_C+Aw`ssB1%Yc zL{1Uuo+3y{5hbLE5>iA7DWZfFQ9_C+Aw`ssB1%YcRE`Si9u-K43ME8^5~4y0QK5vW zP(oBFAu5y*)tHSphknu#i0>GWb#wsR3zHMwN@?UjG;Y978w`D1Jr{2;p|$`#0R zH95MQ+SCud3U@Rcx4v|Iw-Wfx2k?E98sF0FT}#S-LvNO* zkKS?Y&f|C8eb0$|@4Nqj2OoO)kw;HH_V^P|KK1l7&p!A33opL(@++^t)^Y0ena;E4 z&Ubb9^!D`+3=R#CjE;>@TzLJBH{Y6k`<-{E-h2Opi_;%&C)w@G{fBMO+Ay?B9v4+p zv-eYZ-p^hUZnM_-;gWi6zTPy;HJg1_+6khB3#;|)b@0Q|Z5K~V>&;)Zw6;M1& delta 1005 zcmY+DO-mb56o%(I5h*AorQo8AA_YGxX^mzKMrty50;S!$D20LqGn61sXc9lhA5iG7 z;Vuf@l)G{zqW*$zr3n6kLVtq0F8iMIb{1|P9_~HozIP6DzaRaoPyY^PPY=_AF~!!-cWZDidYf-B#p(>QrP`h$(}ZGRQ+VBxt-M zTf#)itwwPN2=4&l9U!dPl&w#ZGzzg;muDlyTLPu*h5Nhl=GnbhhsSpkoDb6dPA}_a xA9qH*-MwMxx{cQpX2P8{-Ys73_A`0Aoe^H|PI{PTqv6-f`-@pO?YeOD+duXkN&El+ diff --git a/tests/fixtures/gauntlet/hub_spawn.json b/tests/fixtures/gauntlet/hub_spawn.json index dbae3424d..8cd3a712c 100644 --- a/tests/fixtures/gauntlet/hub_spawn.json +++ b/tests/fixtures/gauntlet/hub_spawn.json @@ -83,8 +83,6 @@ "relationship": 0, "total": 0 }, - "conversation_ended": [], - "conversation_events": [], "current_monologue": null, "dialogue_response": null, "entities": [ @@ -137,8 +135,55 @@ "state_hash": 3925209675202732823, "tick": 2, "triangle_crisis_events": [], - "version": 17, "visible_tiles": [ + { + "tile_kind": "Wall", + "visibility": "BoundaryWall", + "x": 38, + "y": 47, + "z": 0, + "zone_id": 0 + }, + { + "tile_kind": "Wall", + "visibility": "BoundaryWall", + "x": 38, + "y": 48, + "z": 0, + "zone_id": 0 + }, + { + "tile_kind": "Wall", + "visibility": "BoundaryWall", + "x": 38, + "y": 49, + "z": 0, + "zone_id": 0 + }, + { + "tile_kind": "Wall", + "visibility": "BoundaryWall", + "x": 38, + "y": 50, + "z": 0, + "zone_id": 0 + }, + { + "tile_kind": "Wall", + "visibility": "BoundaryWall", + "x": 38, + "y": 51, + "z": 0, + "zone_id": 0 + }, + { + "tile_kind": "Wall", + "visibility": "BoundaryWall", + "x": 39, + "y": 46, + "z": 0, + "zone_id": 0 + }, { "tile_kind": "Wall", "visibility": "Forward", @@ -179,6 +224,22 @@ "z": 0, "zone_id": 0 }, + { + "tile_kind": "Wall", + "visibility": "BoundaryWall", + "x": 39, + "y": 52, + "z": 0, + "zone_id": 0 + }, + { + "tile_kind": "Wall", + "visibility": "BoundaryWall", + "x": 40, + "y": 46, + "z": 0, + "zone_id": 0 + }, { "tile_kind": "Wall", "visibility": "Forward", @@ -227,6 +288,14 @@ "z": 0, "zone_id": 0 }, + { + "tile_kind": "Wall", + "visibility": "BoundaryWall", + "x": 41, + "y": 46, + "z": 0, + "zone_id": 0 + }, { "tile_kind": "Wall", "visibility": "Forward", @@ -275,6 +344,14 @@ "z": 0, "zone_id": 0 }, + { + "tile_kind": "Wall", + "visibility": "BoundaryWall", + "x": 42, + "y": 46, + "z": 0, + "zone_id": 0 + }, { "tile_kind": "Wall", "visibility": "Forward", @@ -331,6 +408,14 @@ "z": 0, "zone_id": 0 }, + { + "tile_kind": "Wall", + "visibility": "BoundaryWall", + "x": 43, + "y": 46, + "z": 0, + "zone_id": 0 + }, { "tile_kind": "Wall", "visibility": "Forward", @@ -387,6 +472,14 @@ "z": 0, "zone_id": 0 }, + { + "tile_kind": "Wall", + "visibility": "BoundaryWall", + "x": 44, + "y": 46, + "z": 0, + "zone_id": 0 + }, { "tile_kind": "Wall", "visibility": "Forward", @@ -451,6 +544,14 @@ "z": 0, "zone_id": 0 }, + { + "tile_kind": "Wall", + "visibility": "BoundaryWall", + "x": 45, + "y": 46, + "z": 0, + "zone_id": 0 + }, { "tile_kind": "Wall", "visibility": "Forward", @@ -523,6 +624,14 @@ "z": 0, "zone_id": 0 }, + { + "tile_kind": "Wall", + "visibility": "BoundaryWall", + "x": 46, + "y": 46, + "z": 0, + "zone_id": 0 + }, { "tile_kind": "Wall", "visibility": "Forward", @@ -595,6 +704,14 @@ "z": 0, "zone_id": 0 }, + { + "tile_kind": "Wall", + "visibility": "BoundaryWall", + "x": 47, + "y": 46, + "z": 0, + "zone_id": 0 + }, { "tile_kind": "Wall", "visibility": "Forward", @@ -675,6 +792,14 @@ "z": 0, "zone_id": 0 }, + { + "tile_kind": "Wall", + "visibility": "BoundaryWall", + "x": 48, + "y": 46, + "z": 0, + "zone_id": 0 + }, { "tile_kind": "Wall", "visibility": "Forward", @@ -755,6 +880,14 @@ "z": 0, "zone_id": 0 }, + { + "tile_kind": "Wall", + "visibility": "BoundaryWall", + "x": 49, + "y": 46, + "z": 0, + "zone_id": 0 + }, { "tile_kind": "Wall", "visibility": "Forward", @@ -843,6 +976,14 @@ "z": 0, "zone_id": 0 }, + { + "tile_kind": "Wall", + "visibility": "BoundaryWall", + "x": 50, + "y": 46, + "z": 0, + "zone_id": 0 + }, { "tile_kind": "Wall", "visibility": "Forward", @@ -939,6 +1080,14 @@ "z": 0, "zone_id": 0 }, + { + "tile_kind": "Wall", + "visibility": "BoundaryWall", + "x": 51, + "y": 46, + "z": 0, + "zone_id": 0 + }, { "tile_kind": "Wall", "visibility": "Forward", @@ -1027,6 +1176,14 @@ "z": 0, "zone_id": 0 }, + { + "tile_kind": "Wall", + "visibility": "BoundaryWall", + "x": 52, + "y": 46, + "z": 0, + "zone_id": 0 + }, { "tile_kind": "Wall", "visibility": "Forward", @@ -1107,6 +1264,14 @@ "z": 0, "zone_id": 0 }, + { + "tile_kind": "Wall", + "visibility": "BoundaryWall", + "x": 53, + "y": 46, + "z": 0, + "zone_id": 0 + }, { "tile_kind": "Wall", "visibility": "Forward", @@ -1187,6 +1352,14 @@ "z": 0, "zone_id": 0 }, + { + "tile_kind": "Wall", + "visibility": "BoundaryWall", + "x": 54, + "y": 46, + "z": 0, + "zone_id": 0 + }, { "tile_kind": "Wall", "visibility": "Forward", @@ -1259,6 +1432,14 @@ "z": 0, "zone_id": 0 }, + { + "tile_kind": "Wall", + "visibility": "BoundaryWall", + "x": 55, + "y": 46, + "z": 0, + "zone_id": 0 + }, { "tile_kind": "Wall", "visibility": "Forward", @@ -1331,6 +1512,14 @@ "z": 0, "zone_id": 0 }, + { + "tile_kind": "Wall", + "visibility": "BoundaryWall", + "x": 56, + "y": 46, + "z": 0, + "zone_id": 0 + }, { "tile_kind": "Wall", "visibility": "Forward", @@ -1395,6 +1584,14 @@ "z": 0, "zone_id": 0 }, + { + "tile_kind": "Wall", + "visibility": "BoundaryWall", + "x": 57, + "y": 46, + "z": 0, + "zone_id": 0 + }, { "tile_kind": "Wall", "visibility": "Forward", @@ -1451,6 +1648,14 @@ "z": 0, "zone_id": 0 }, + { + "tile_kind": "Wall", + "visibility": "BoundaryWall", + "x": 58, + "y": 46, + "z": 0, + "zone_id": 0 + }, { "tile_kind": "Wall", "visibility": "Forward", @@ -1507,6 +1712,14 @@ "z": 0, "zone_id": 0 }, + { + "tile_kind": "Wall", + "visibility": "BoundaryWall", + "x": 59, + "y": 46, + "z": 0, + "zone_id": 0 + }, { "tile_kind": "Wall", "visibility": "Forward", @@ -1555,6 +1768,14 @@ "z": 0, "zone_id": 0 }, + { + "tile_kind": "Wall", + "visibility": "BoundaryWall", + "x": 60, + "y": 46, + "z": 0, + "zone_id": 0 + }, { "tile_kind": "Wall", "visibility": "Forward", @@ -1602,6 +1823,62 @@ "y": 52, "z": 0, "zone_id": 0 + }, + { + "tile_kind": "Wall", + "visibility": "BoundaryWall", + "x": 60, + "y": 53, + "z": 0, + "zone_id": 0 + }, + { + "tile_kind": "Wall", + "visibility": "BoundaryWall", + "x": 61, + "y": 47, + "z": 0, + "zone_id": 0 + }, + { + "tile_kind": "Wall", + "visibility": "BoundaryWall", + "x": 61, + "y": 48, + "z": 0, + "zone_id": 0 + }, + { + "tile_kind": "Wall", + "visibility": "BoundaryWall", + "x": 61, + "y": 49, + "z": 0, + "zone_id": 0 + }, + { + "tile_kind": "Wall", + "visibility": "BoundaryWall", + "x": 61, + "y": 50, + "z": 0, + "zone_id": 0 + }, + { + "tile_kind": "Wall", + "visibility": "BoundaryWall", + "x": 61, + "y": 51, + "z": 0, + "zone_id": 0 + }, + { + "tile_kind": "Wall", + "visibility": "BoundaryWall", + "x": 61, + "y": 52, + "z": 0, + "zone_id": 0 } ] } diff --git a/tests/fixtures/gauntlet/hub_spawn.msgpack b/tests/fixtures/gauntlet/hub_spawn.msgpack index 602ad74bf5ddad1371604b0b081718f58210827a..1491c8f19d4e198997a1c554899db51a40e71a53 100644 GIT binary patch literal 12654 zcmbW;%U2s^7{~Fk)_T8J>;2x+(w6(Ztrt|(;%%cY=S(IqVahOX&ddZz*V^L}{SP<= zfda>(9@nh9aqsEzZ}B^+9BGIq?{8B=$|sXN&o^1U`O7=Lnn&T>kx?C4nEZY55{oIt>sM`JiZR@geX{JA<$x>)HQBXN?~!HGZ1=19pRsberm=R0 znkL#AY8qx|sA-O!p&@OAr{&=z-G>iqJN&h&*xK~qI|0>p`Yl!4@wZfM=igE_E#UCh z4y!Zr@R9Dr2MNPR3ByMT!$%3jM+w94mWPjYA3jJJK1vuqN*F#$7(PlH{_x!&Se?9I z&dMu8x~~i*tPCZr3?-}#C9Di3tPCZr?3}zZr2EQ1!pcy>%22|}P{PVk!pczE%0}GZ zo9E?4Bi$Db5*CdT7L5`XjS?1(5*CdT7LC#tJ?frEkDLe6Jr9tO2TI5TCFFq;@<0iB zpoBb7LLMj~k6t+sqO-2jzf~?g4{@ zfKfugC?Q~!5HLyz7$pRZ5&}jE0i%R~Q9{5&a*9az6hT6YC?Q3ZkRnP*5hbLE5>iA7 zDWZfFQ9_Eta#Tq7s6awgC?P785EV*@3ME8^5~4y0QK5vWP(oBAa#Tq7s6awgC?P78 z5EV*@3ME8^5~4y0QK5vWM&&$^?sr- z33;G|JWxU&C?OA&kOxZ01101!E-xDCzG#rJXq2#Ml(1-&uxOO9Xq2$%33+8m_mzQ! zm7#={p@fy8gq5L$m7#={U65CXbYB@rSQ$!K8A@0gN>~|6SlLB+_(=ERgW3-N&>>z> z+u655ZAaebJ@||+~z^-mpOM|zjN2I-EtH(F2LhvRUXppZDnDQ_@+4QpDo`k z#WtKXWq<$3|7~yj$h}AJJ9hsA4?gtpBac4z_!Cb)_4M&)o;~s0^Dn&k(#x;B`r7Mn zy!qD2Q(dRebe}zUzNfdZe_(KEcw}^JeB#2zOK-pP?t7E(fAHbdM<0K3dHU1stT<7> zf3fWu8^?Ch=gSAV+507&4T_2I4TUOCE~};HyA88cwZ$!OCrUEDgitHy5X9bHUncO@ z8ZXpaowv5Uw~;b{%$RcbM%6}s9A)|P?|B*pNreOaVanGGvi)apqj71UFHOw;F;YKS J=_*}6@i(68CI0{b delta 195 zcmaEtv?-Y99)tMuvecsD%=|pTjm+_kjN3QwXX0VpY|rAxxOqRTGvj6(_DaUh?>Qzj$VG`IKsUvwmZj#E S6i?WMDwvm&nlkyi!E^vluSu!^