You are using Wait action inside of "Every 0.2s" event. If the wait time is longer than 0.2s, then the whole thing will quickly become a mess. The event will continue running and creating more and more delayed threads. Which probably explains why the movement is broken.
Also, that code won't work with multiple enemies, because distance() expression will only check the first enemy instance.
I suggest you use a state machine approach with Timer behavior instead of "waits" and "every X seconds".
Use LOS behavior instead of distance, or add "For each enemy" loop if there are more than one enemy instance.