summaryrefslogtreecommitdiff
path: root/order_cmd.c
diff options
context:
space:
mode:
Diffstat (limited to 'order_cmd.c')
-rw-r--r--order_cmd.c10
1 files changed, 8 insertions, 2 deletions
diff --git a/order_cmd.c b/order_cmd.c
index ee4981965..322448c5c 100644
--- a/order_cmd.c
+++ b/order_cmd.c
@@ -968,6 +968,10 @@ void RemoveOrderFromAllVehicles(OrderType type, DestinationID destination)
Order *order;
bool need_invalidate;
+ /* Aircraft have StationIDs for depot orders and never use DepotIDs
+ * This fact is handled specially below
+ */
+
/* Go through all vehicles */
FOR_ALL_VEHICLES(v) {
if (v->orders == NULL) continue;
@@ -977,7 +981,8 @@ void RemoveOrderFromAllVehicles(OrderType type, DestinationID destination)
v->last_station_visited = INVALID_STATION;
/* Check the current order */
- if (v->current_order.type == type && v->current_order.dest == destination) {
+ if ((v->type == VEH_Aircraft && v->current_order.type == OT_GOTO_DEPOT ? OT_GOTO_STATION : v->current_order.type) == type &&
+ v->current_order.dest == destination) {
/* Mark the order as DUMMY */
v->current_order.type = OT_DUMMY;
v->current_order.flags = 0;
@@ -987,7 +992,8 @@ void RemoveOrderFromAllVehicles(OrderType type, DestinationID destination)
/* Clear the order from the order-list */
need_invalidate = false;
FOR_VEHICLE_ORDERS(v, order) {
- if (order->type == type && order->dest == destination) {
+ if ((v->type == VEH_Aircraft && order->type == OT_GOTO_DEPOT ? OT_GOTO_STATION : order->type) == type &&
+ order->dest == destination) {
/* Mark the order as DUMMY */
order->type = OT_DUMMY;
order->flags = 0;