diff --git a/src/water_cmd.cpp b/src/water_cmd.cpp index c4b01c05ed..0648ecef3c 100644 --- a/src/water_cmd.cpp +++ b/src/water_cmd.cpp @@ -1235,7 +1235,7 @@ void TileLoop_Water(TileIndex tile) switch (GetFloodingBehaviour(tile)) { case FLOOD_ACTIVE: for (Direction dir = DIR_BEGIN; dir < DIR_END; dir++) { - TileIndex dest = tile + TileOffsByDir(dir); + TileIndex dest = AddTileIndexDiffCWrap(tile, TileIndexDiffCByDir(dir)); if (!IsValidTile(dest)) continue; /* do not try to flood water tiles - increases performance a lot */ if (IsTileType(dest, MP_WATER)) continue; @@ -1255,8 +1255,8 @@ void TileLoop_Water(TileIndex tile) case FLOOD_DRYUP: { Slope slope_here = std::get<0>(GetFoundationSlope(tile)) & ~SLOPE_HALFTILE_MASK & ~SLOPE_STEEP; for (uint dir : SetBitIterator(_flood_from_dirs[slope_here])) { - TileIndex dest = tile + TileOffsByDir((Direction)dir); - if (dest >= Map::Size()) continue; + TileIndex dest = AddTileIndexDiffCWrap(tile, TileIndexDiffCByDir(static_cast(dir))); + if (!IsValidTile(dest)) continue; FloodingBehaviour dest_behaviour = GetFloodingBehaviour(dest); if ((dest_behaviour == FLOOD_ACTIVE) || (dest_behaviour == FLOOD_PASSIVE)) return;