(svn r6739) -Fix (r6001): Crash on removing farmland belonging to a farm. The search would loop

around the edges causing some troubles. Also make sure that the land after
 farm removal is not barren but 2/3rd grass. Better suited.
pull/155/head
Darkvater 18 years ago
parent 61f3deb5da
commit e0787f3afa

@ -682,7 +682,7 @@ static void TileLoop_Clear(TileIndex tile)
if (GetIndustryIndexOfField(tile) == INVALID_INDUSTRY && GetFieldType(tile) >= 7) {
/* This farmfield is no longer farmfield, so make it grass again */
MakeClear(tile, CLEAR_GRASS, 0);
MakeClear(tile, CLEAR_GRASS, 2);
} else {
field_type = GetFieldType(tile);
field_type = (field_type < 8) ? field_type + 1 : 0;

@ -147,6 +147,7 @@ void DestroyIndustry(Industry *i)
if (i->type == IT_FARM || i->type == IT_FARM_2) {
/* Remove the farmland and convert it to regular tiles over time. */
BEGIN_TILE_LOOP(tile_cur, 42, 42, i->xy - TileDiffXY(21, 21)) {
tile_cur = TILE_MASK(tile_cur);
if (IsTileType(tile_cur, MP_CLEAR) && IsClearGround(tile_cur, CLEAR_FIELDS) &&
GetIndustryIndexOfField(tile_cur) == i->index) {
SetIndustryIndexOfField(tile_cur, INVALID_INDUSTRY);

Loading…
Cancel
Save