diff options
-rw-r--r-- | road_cmd.c | 7 | ||||
-rw-r--r-- | town_cmd.c | 14 |
2 files changed, 11 insertions, 10 deletions
diff --git a/road_cmd.c b/road_cmd.c index a9b2ef350..5b221c9d6 100644 --- a/road_cmd.c +++ b/road_cmd.c @@ -966,13 +966,6 @@ static void TileLoop_Road(uint tile) grp = 0; if (t != NULL) { - /* In SE, set the owner to OWNER_TOWN */ - if (_game_mode == GM_EDITOR && _map_owner[tile] != OWNER_TOWN) { - _map_owner[tile] = OWNER_TOWN; - /* XXX - This line is not perfect, any suggestions? */ - _map2[tile] = ClosestTownFromTile(tile, (uint)-1)->index; - } - grp = GetTownRadiusGroup(t, tile); // Show an animation to indicate road work diff --git a/town_cmd.c b/town_cmd.c index 7c9737a05..0c7a16756 100644 --- a/town_cmd.c +++ b/town_cmd.c @@ -729,9 +729,17 @@ static int GrowTownAtRoad(Town *t, uint tile) do block = Random() & 3; while (!HASBIT(mask,block)); tile += ToTileIndexDiff(_roadblock_tileadd[block]); - /* Don't allow building over roads of other cities */ - if (IsTileType(tile, MP_STREET) && _map_owner[tile] == OWNER_TOWN && GetTown(_map2[tile]) != t) - _grow_town_result = -1; + if (IsTileType(tile, MP_STREET)) { + /* Don't allow building over roads of other cities */ + if (_map_owner[tile] == OWNER_TOWN && GetTown(_map2[tile]) != t) + _grow_town_result = -1; + else if (_game_mode == GM_EDITOR) { + /* If we are in the SE, and this road-piece has no town owner yet, it just found an + * owner :) (happy happy happy road now) */ + _map_owner[tile] = OWNER_TOWN; + _map2[tile] = t->index; + } + } // Max number of times is checked. } while (--_grow_town_result >= 0); |