diff --git a/src/rail_cmd.cpp b/src/rail_cmd.cpp index d15a4ec64e..46ccda7303 100644 --- a/src/rail_cmd.cpp +++ b/src/rail_cmd.cpp @@ -888,6 +888,7 @@ static CommandCost CmdRailTrackHelper(DoCommandFlags flags, TileIndex tile, Tile CommandCost last_error = CMD_ERROR; for (;;) { ret = remove ? Command::Do(flags, tile, TrackdirToTrack(trackdir)) : Command::Do(flags, tile, railtype, TrackdirToTrack(trackdir), auto_remove_signals); + if (!remove && !fail_on_obstacle && last_error.GetErrorMessage() == STR_ERROR_ALREADY_BUILT) had_success = true; if (ret.Failed()) { last_error = std::move(ret); diff --git a/src/road_cmd.cpp b/src/road_cmd.cpp index 2ceeeebaf9..0d974bbdf5 100644 --- a/src/road_cmd.cpp +++ b/src/road_cmd.cpp @@ -1020,6 +1020,7 @@ CommandCost CmdBuildLongRoad(DoCommandFlags flags, TileIndex end_tile, TileIndex } CommandCost ret = Command::Do(flags, tile, bits, rt, drd, TownID::Invalid()); + if (!is_ai && ret.GetErrorMessage() == STR_ERROR_ALREADY_BUILT) had_success = true; if (ret.Failed()) { last_error = std::move(ret); if (last_error.GetErrorMessage() != STR_ERROR_ALREADY_BUILT) {