From fb77ced24a37a5754c9738a7fa74c3d028228849 Mon Sep 17 00:00:00 2001 From: peter1138 Date: Sun, 14 Sep 2008 08:47:18 +0000 Subject: (svn r14317) -Fix (r13662) [FS#2298]: Order distance processing for conditional orders on ships treated v->orders as an array, and didn't use the correct next order. --- src/order_cmd.cpp | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) (limited to 'src/order_cmd.cpp') diff --git a/src/order_cmd.cpp b/src/order_cmd.cpp index eefebf3ba..0c7849dc1 100644 --- a/src/order_cmd.cpp +++ b/src/order_cmd.cpp @@ -304,8 +304,10 @@ static uint GetOrderDistance(const Order *prev, const Order *cur, const Vehicle if (conditional_depth > v->num_orders) return 0; conditional_depth++; - return max(GetOrderDistance(prev, &v->orders[cur->GetConditionSkipToOrder()], v, conditional_depth), - GetOrderDistance(prev, (prev + 1 == &v->orders[v->num_orders]) ? v->orders : (prev + 1), v, conditional_depth)); + + int dist1 = GetOrderDistance(prev, GetVehicleOrder(v, cur->GetConditionSkipToOrder()), v, conditional_depth); + int dist2 = GetOrderDistance(prev, cur->next == NULL ? v->orders : cur->next, v, conditional_depth); + return max(dist1, dist2); } return DistanceManhattan(GetOrderLocation(*prev), GetOrderLocation(*cur)); -- cgit v1.2.3-54-g00ecf