It's a common problem with picking and system waits and it's more difficult than it first seems to get a bunch of enemies working independently on screen. My approach is to add timers to enemies for any waits and use functions for the attacks.
So you start a timer of 0.5 seconds on an enemy and say on timer complete, run function attack. However the important thing here is to identify the one particular enemy so you send the enemy.UID through the attack function as a parameter. Then when the attack function is called you use a condition pick enemy by UID, where UID is function.param(0). This ensures that the particular enemy will do the attacking, and the same enemy is picked from timer ended to running the attack function.