changeset 17712:04160ffe763d draft

(svn r22492) -Fix [FS#4624] (r21642, r22328): Only try to insert implicit orders for ground vehicles. Aircraft may reach unscheduled terminals when skippnig orders etc.
author frosch <frosch@openttd.org>
date Wed, 25 May 2011 20:10:02 +0000 (2011-05-25)
parents 53fc5873ea28
children 726c8862ce83
files src/vehicle.cpp
diffstat 1 files changed, 5 insertions(+), 5 deletions(-) [+]
line wrap: on
line diff
--- a/src/vehicle.cpp
+++ b/src/vehicle.cpp
@@ -1854,16 +1854,16 @@
 		this->current_order.SetNonStopType(ONSF_NO_STOP_AT_ANY_STATION);
 
 	} else {
-		assert(this->IsGroundVehicle());
-		bool suppress_implicit_orders = HasBit(this->GetGroundVehicleFlags(), GVF_SUPPRESS_IMPLICIT_ORDERS);
-
 		/* We weren't scheduled to stop here. Insert an implicit order
 		 * to show that we are stopping here, but only do that if the order
-		 * list isn't empty. */
+		 * list isn't empty.
+		 * While only groundvehicles have implicit orders, e.g. aircraft might still enter
+		 * the 'wrong' terminal when skipping orders etc. */
 		Order *in_list = this->GetOrder(this->cur_implicit_order_index);
-		if (in_list != NULL &&
+		if (this->IsGroundVehicle() && in_list != NULL &&
 				(!in_list->IsType(OT_IMPLICIT) ||
 				in_list->GetDestination() != this->last_station_visited)) {
+			bool suppress_implicit_orders = HasBit(this->GetGroundVehicleFlags(), GVF_SUPPRESS_IMPLICIT_ORDERS);
 			/* Do not create consecutive duplicates of implicit orders */
 			Order *prev_order = this->cur_implicit_order_index > 0 ? this->GetOrder(this->cur_implicit_order_index - 1) : NULL;
 			if (prev_order == NULL ||