diff options
author | Michael Lutz <michi@icosahedron.de> | 2019-03-20 22:46:02 +0100 |
---|---|---|
committer | Charles Pigott <charlespigott@googlemail.com> | 2019-03-21 19:15:59 +0000 |
commit | 2cf7ac2863028181bfdb5e3d63dc1f37bf604e72 (patch) | |
tree | 8606a13ced9272624691aa673c87c3133163de3c /src/order_cmd.cpp | |
parent | 1585c12bb9b0306739320e70513195d11206da2c (diff) | |
download | openttd-2cf7ac2863028181bfdb5e3d63dc1f37bf604e72.tar.xz |
Fix #7391, 9b99b95: Don't invalidate go to depot orders of non-aircraft when invalidating hangar orders that happen to share IDs.
This was caused because hangars are referred to by station ID, which is not unique with respect to depot IDs.
Diffstat (limited to 'src/order_cmd.cpp')
-rw-r--r-- | src/order_cmd.cpp | 3 |
1 files changed, 2 insertions, 1 deletions
diff --git a/src/order_cmd.cpp b/src/order_cmd.cpp index 007cfa5ec..dae6e58ad 100644 --- a/src/order_cmd.cpp +++ b/src/order_cmd.cpp @@ -1851,7 +1851,7 @@ void RemoveOrderFromAllVehicles(OrderType type, DestinationID destination, bool order = &v->current_order; if ((v->type == VEH_AIRCRAFT && order->IsType(OT_GOTO_DEPOT) && !hangar ? OT_GOTO_STATION : order->GetType()) == type && - v->current_order.GetDestination() == destination) { + (!hangar || v->type == VEH_AIRCRAFT) && v->current_order.GetDestination() == destination) { order->MakeDummy(); SetWindowDirty(WC_VEHICLE_VIEW, v->index); } @@ -1864,6 +1864,7 @@ restart: OrderType ot = order->GetType(); if (ot == OT_GOTO_DEPOT && (order->GetDepotActionType() & ODATFB_NEAREST_DEPOT) != 0) continue; + if (ot == OT_GOTO_DEPOT && hangar && v->type != VEH_AIRCRAFT) continue; // Not an aircraft? Can't have a hangar order. if (ot == OT_IMPLICIT || (v->type == VEH_AIRCRAFT && ot == OT_GOTO_DEPOT && !hangar)) ot = OT_GOTO_STATION; if (ot == type && order->GetDestination() == destination) { /* We want to clear implicit orders, but we don't want to make them |