From your code, you should only have a single enemy finding a path every 0.15 seconds cause you are only picking one instance with the "pick random" condition.
Your last event could be causing the problems though because it would be setting has_moved to false on the same tick that an enemy is finding a path and setting Has_Moved to true.
What is the behaviour that you are trying to achieve? Do you want all of your enemies to find a valid path on the same tick?
This is actually my last attempt, i tried another ways, using for.. for each.. etc
What I want to achieve is:
All enemies should move 1 tile closer to the player like "every 0.5 seconds" all them move to the next square of the path found. And they are moving, what I think that is happening, is all them are calculing the path togheter, and when they try to move, if there are 2 enemies closer, sometimes they try to move to the same tile