changeset 15897:d613f94dd4ab draft

(svn r20580) -Fix [FS#4039]: go via station and go via waypoint behaved differently when a train went back to the same (unordered) station again
author rubidium <rubidium@openttd.org>
date Fri, 20 Aug 2010 15:30:21 +0000
parents 2338e84ca812
children cfe6456564b2
files src/order_cmd.cpp
diffstat 1 files changed, 6 insertions(+), 2 deletions(-) [+]
line wrap: on
line diff
--- a/src/order_cmd.cpp
+++ b/src/order_cmd.cpp
@@ -1680,11 +1680,15 @@
 	 */
 	bool may_reverse = v->current_order.IsType(OT_NOTHING);
 
-	/* Check if we've reached a non-stop station.. */
+	/* Check if we've reached a 'via' destination. */
 	if (((v->current_order.IsType(OT_GOTO_STATION) && (v->current_order.GetNonStopType() & ONSF_NO_STOP_AT_DESTINATION_STATION)) || v->current_order.IsType(OT_GOTO_WAYPOINT)) &&
 			IsTileType(v->tile, MP_STATION) &&
 			v->current_order.GetDestination() == GetStationIndex(v->tile)) {
-		if (v->current_order.IsType(OT_GOTO_STATION)) v->last_station_visited = v->current_order.GetDestination();
+		/* We set the last visited station here because we do not want
+		 * the train to stop at this 'via' station if the next order
+		 * is a no-non-stop order; in that case not setting the last
+		 * visited station will cause the vehicle to still stop. */
+		v->last_station_visited = v->current_order.GetDestination();
 		UpdateVehicleTimetable(v, true);
 		v->IncrementOrderIndex();
 	}