I just meant that you check if enemy is not overlapping anything and do the move, and the following check about enemy is overlapping and choose a direction happens all within the same move and it's too fast. So it moves the enemy down one space, then checks if overlapping and alters the direction, this always results in choosing the last condition where it chooses left or right because it's not detecting overlaps correctly.
So what I did was allow the enemy to move on the is not overlapping check, then add a small wait, then call a function. The wait is because you are setting a position and there is no condition like 'has moved'. The separate function called has all of the 'is overlapping' checks to then determine if the enemy is now overlapping anything once landed.
FYI if you edit a post I don't get notified of anything.