diff options
-rw-r--r-- | src/order_cmd.cpp | 10 |
1 files changed, 8 insertions, 2 deletions
diff --git a/src/order_cmd.cpp b/src/order_cmd.cpp index 01e0fec94..627fdcb76 100644 --- a/src/order_cmd.cpp +++ b/src/order_cmd.cpp @@ -1644,7 +1644,7 @@ static VehicleOrderID ProcessConditionalOrder(const Order *order, const Vehicle * @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 @@ static bool UpdateOrderDest(Vehicle *v, const Order *order) } 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: |