diff --git a/src/town_cmd.cpp b/src/town_cmd.cpp --- a/src/town_cmd.cpp +++ b/src/town_cmd.cpp @@ -1315,17 +1315,19 @@ static bool GrowTown(Town *t) /* No road available, try to build a random road block by * clearing some land and then building a road there. */ - tile = t->xy; - for (ptr = _town_coord_mod; ptr != endof(_town_coord_mod); ++ptr) { - /* Only work with plain land that not already has a house */ - if (!IsTileType(tile, MP_HOUSE) && GetTileSlope(tile, NULL) == SLOPE_FLAT) { - if (CmdSucceeded(DoCommand(tile, 0, 0, DC_AUTO | DC_NO_WATER, CMD_LANDSCAPE_CLEAR))) { - DoCommand(tile, GenRandomRoadBits(), t->index, DC_EXEC | DC_AUTO, CMD_BUILD_ROAD); - _current_company = old_company; - return true; + if (_settings_game.economy.allow_town_roads || _generating_world) { + tile = t->xy; + for (ptr = _town_coord_mod; ptr != endof(_town_coord_mod); ++ptr) { + /* Only work with plain land that not already has a house */ + if (!IsTileType(tile, MP_HOUSE) && GetTileSlope(tile, NULL) == SLOPE_FLAT) { + if (CmdSucceeded(DoCommand(tile, 0, 0, DC_AUTO | DC_NO_WATER, CMD_LANDSCAPE_CLEAR))) { + DoCommand(tile, GenRandomRoadBits(), t->index, DC_EXEC | DC_AUTO, CMD_BUILD_ROAD); + _current_company = old_company; + return true; + } } + tile = TILE_ADD(tile, ToTileIndexDiff(*ptr)); } - tile = TILE_ADD(tile, ToTileIndexDiff(*ptr)); } _current_company = old_company;