What determines who attacks first? How is the turn system set up?
In view - Use LOS behavior
Chasing - Use a helper sprite, spawn it at the target and move it x pixels towards enemy, pathfind to helper sprite. Update position of helper sprite as needed.
Overlapping can be a very complicated subject. One approach is to continue moving the pathfinding target helper sprite until it has a free spot, if the original target was already occupied by a pathfinder sprite. Then you add things like give instance variables to the helper sprite to keep track of the expected time of arrival, and use that for prioritizing who gets the closest spot.