--- 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:;