diff -r 51bff16a04c9 -r 50f056aa3024 src/clear_cmd.cpp --- a/src/clear_cmd.cpp Fri Dec 19 01:32:07 2008 +0200 +++ b/src/clear_cmd.cpp Fri Dec 19 01:38:09 2008 +0200 @@ -299,10 +299,17 @@ TileIndex tile_new; SetClearGroundDensity(tile, CLEAR_ROCKS, 3); + do { if (--j == 0) goto get_out; - tile_new = tile + TileOffsByDiagDir((DiagDirection)GB(Random(), 0, 2)); + + TileIndexDiff dt = TileOffsByDiagDir((DiagDirection)GB(Random(), 0, 2)); + + if (!IsValidTile(tile + dt)) continue; + + tile_new = tile + dt; } while (!IsTileType(tile_new, MP_CLEAR) || IsClearGround(tile_new, CLEAR_DESERT)); + tile = tile_new; } get_out:;