Relax constraints on tile behind overtaking vehicle

This commit is contained in:
Jonathan G Rennison
2020-10-27 23:35:32 +00:00
parent b0dbcf33c1
commit 77c14c2f1e

View File

@@ -1010,8 +1010,13 @@ static void RoadVehCheckOvertake(RoadVehicle *v, RoadVehicle *u)
check_tile = v->tile - check_tile_diff; check_tile = v->tile - check_tile_diff;
for (; tile_count != 0; tile_count--, check_tile -= check_tile_diff) { for (; tile_count != 0; tile_count--, check_tile -= check_tile_diff) {
od.tile = check_tile; od.tile = check_tile;
if (CheckRoadInfraUnsuitableForOvertaking(&od)) return; if (tile_count == 1) {
if (CheckRoadBlockedForOvertaking(&od)) return; RoadBits rb = GetAnyRoadBits(check_tile, RTT_ROAD);
if ((rb & DiagDirToRoadBits(dir)) && HasVehicleOnPos(check_tile, VEH_ROAD, &od, EnumFindVehBlockingOvertakeBehind)) return;
} else {
if (CheckRoadInfraUnsuitableForOvertaking(&od)) return;
if (CheckRoadBlockedForOvertaking(&od)) return;
}
} }
/* When the vehicle in front of us is stopped we may only take /* When the vehicle in front of us is stopped we may only take