Your events are in the wrong order, if I'm not mistaken.
Currently you have :
IF (Enemy is not dead ; Enemy is attacking ; Frame = 4 ; Trigger Once)
THEN for each enemy
IF Is trgtInAtkRng
DO something
Meaning if ONE enemy meets the conditions for the first IF, you are checking the range of each enemy, when you just want to check the range for this particular enemy.
Also : as long as an enemy meets this condition, since you have a Trigger Once, it won't happen again. If a lot of enemies are attacking, at all time you could have at least one with the AnimationFrame = 4, and that would block everything.
Try the events like this :
FOR EACH Enemy
IF (Enemy is not dead ; Enemy is attacking ; Frame = 4 ; Is trgtInAtkRng ; Trigger Once)
DO something
Now each enemy should be independently checking its own Attack Range when the conditions are met and shoot only once