src/roadveh_cmd.cpp
changeset 7250 49ca9a9e70f1
parent 7205 e3d6da6d1e0b
child 7260 23cd58b6bf51
--- a/src/roadveh_cmd.cpp	Wed May 30 13:33:19 2007 +0000
+++ b/src/roadveh_cmd.cpp	Wed May 30 18:22:56 2007 +0000
@@ -729,11 +729,14 @@
 				IsCargoInClass(v->cargo_type, CC_PASSENGERS) ? RoadStop::BUS : RoadStop::TRUCK
 			);
 
+			TileIndex dest = INVALID_TILE;
 			if (rs != NULL) {
-				TileIndex dest = rs->xy;
-				uint mindist = DistanceManhattan(v->tile, rs->xy);
+				uint mindist = MAX_UVALUE(uint);
 
-				for (rs = rs->next; rs != NULL; rs = rs->next) {
+				for (; rs != NULL; rs = rs->next) {
+					/* The vehicle cannot go to this roadstop */
+					if ((GetRoadTypes(rs->xy) & v->u.road.compatible_roadtypes) == ROADTYPES_NONE) continue;
+
 					uint dist = DistanceManhattan(v->tile, rs->xy);
 
 					if (dist < mindist) {
@@ -741,7 +744,10 @@
 						dest = rs->xy;
 					}
 				}
-				v->dest_tile = dest;
+			}
+
+			if (dest != INVALID_TILE) {
+					v->dest_tile = dest;
 			} else {
 				/* There is no stop left at the station, so don't even TRY to go there */
 				v->cur_order_index++;