diff options
Diffstat (limited to 'server/data/src')
| -rw-r--r-- | server/data/src/entities.rs | 2 | ||||
| -rw-r--r-- | server/data/src/lib.rs | 8 | ||||
| -rw-r--r-- | server/data/src/registry.rs | 13 |
3 files changed, 18 insertions, 5 deletions
diff --git a/server/data/src/entities.rs b/server/data/src/entities.rs index 62947b05..cd1ba18d 100644 --- a/server/data/src/entities.rs +++ b/server/data/src/entities.rs @@ -44,6 +44,8 @@ pub enum EntityDecl { #[serde(default = "default_tile")] in_tile: TileIndex, #[serde(default = "default_tile")] + neutral_tile: TileIndex, + #[serde(default = "default_tile")] out_tile: TileIndex, }, Customers { diff --git a/server/data/src/lib.rs b/server/data/src/lib.rs index d06aadd1..b490fbc2 100644 --- a/server/data/src/lib.rs +++ b/server/data/src/lib.rs @@ -225,11 +225,15 @@ fn build_data( exclusive_tiles.entry(*blocker_tile).or_default(); } EntityDecl::PlayerPortalPair { - in_tile, out_tile, .. + in_tile, + out_tile, + neutral_tile, + .. } => { *in_tile = reg.register_tile("black-hole".to_owned()); + *neutral_tile = reg.register_tile("grey-hole".to_owned()); *out_tile = reg.register_tile("white-hole".to_owned()); - tile_walkable.extend([*in_tile, *out_tile]); + tile_walkable.extend([*in_tile, *neutral_tile, *out_tile]); } _ => (), } diff --git a/server/data/src/registry.rs b/server/data/src/registry.rs index 372df653..f405489b 100644 --- a/server/data/src/registry.rs +++ b/server/data/src/registry.rs @@ -93,8 +93,11 @@ pub(crate) fn filter_unused_tiles_and_items(data: &mut Gamedata, serverdata: &mu used_tiles.insert(*blocker_tile); } EntityDecl::PlayerPortalPair { - in_tile, out_tile, .. - } => used_tiles.extend([*in_tile, *out_tile]), + in_tile, + out_tile, + neutral_tile, + .. + } => used_tiles.extend([*in_tile, *out_tile, *neutral_tile]), _ => (), }; } @@ -197,9 +200,13 @@ pub(crate) fn filter_unused_tiles_and_items(data: &mut Gamedata, serverdata: &mu *blocker_tile = tile_map[blocker_tile]; } EntityDecl::PlayerPortalPair { - in_tile, out_tile, .. + in_tile, + out_tile, + neutral_tile, + .. } => { *in_tile = tile_map[in_tile]; + *neutral_tile = tile_map[neutral_tile]; *out_tile = tile_map[out_tile]; } _ => (), |