# HG changeset patch # User rubidium # Date 1213875952 0 # Node ID 583f326582486825c6eebb838877441fed73c97a # Parent 4b240f36ae28e3d7d009dfc8633b38171aedb7c3 (svn r13579) -Fix [FS#2088]: process the order coming after a conditional order, otherwise the vehicle would already leaving the station before it knows where the next destination is, making it leave in the wrong way. However, after processing as many conditional orders as there are in the order list it will stop processing them in order to not create an infinite loop. diff -r 4b240f36ae28 -r 583f32658248 src/order_cmd.cpp --- a/src/order_cmd.cpp Thu Jun 19 11:45:44 2008 +0000 +++ b/src/order_cmd.cpp Thu Jun 19 11:45:52 2008 +0000 @@ -1644,7 +1644,7 @@ * @param order the order the vehicle currently has * @param v the vehicle to update */ -static bool UpdateOrderDest(Vehicle *v, const Order *order) +static bool UpdateOrderDest(Vehicle *v, const Order *order, int conditional_depth = 0) { switch (order->GetType()) { case OT_GOTO_STATION: @@ -1691,7 +1691,13 @@ } else { v->cur_order_index++; } - return false; + + if (conditional_depth > v->num_orders) return false; + + /* Get the current order */ + if (v->cur_order_index >= v->num_orders) v->cur_order_index = 0; + + return UpdateOrderDest(v, GetVehicleOrder(v, v->cur_order_index), conditional_depth + 1); } default: