Index: src/order_cmd.cpp =================================================================== --- src/order_cmd.cpp (revision 12850) +++ src/order_cmd.cpp (working copy) @@ -1046,6 +1046,15 @@ if (src->cargo_type != dst->cargo_type && (IsCargoInClass(src->cargo_type, CC_PASSENGERS) || IsCargoInClass(dst->cargo_type, CC_PASSENGERS))) return CMD_ERROR; } + /* Normal aircraft can't copy all the orders from helicopters (and visa versa) */ + if (src->type == VEH_AIRCRAFT) { + const Order *order; + FOR_VEHICLE_ORDERS(src,order) { + const Station *st = GetStation(order->GetDestination()); + if (!CanAircraftUseStation(dst->engine_type, st)) + return CMD_ERROR; + } + } /* Is the vehicle already in the shared list? */ { @@ -1107,6 +1116,15 @@ } } } + /* Normal aircraft can't copy all the orders from helicopters (and visa versa) */ + if (src->type == VEH_AIRCRAFT) { + const Order *order; + FOR_VEHICLE_ORDERS(src,order) { + const Station *st = GetStation(order->GetDestination()); + if (!CanAircraftUseStation(dst->engine_type, st)) + return CMD_ERROR; + } + } /* make sure there are orders available */ delta = dst->IsOrderListShared() ? src->num_orders + 1 : src->num_orders - dst->num_orders;