To detect range that way, I would compare the enemy's X and Y to the player's X and Y directly, rather than using distance. For example, this would detect any enemy within 16 horizontal and 64 vertical pixels from the player:
If Enemy.X is between Player.X-16 and Player.X+16
If Enemy.Y is between Player.X-64 and Player.Y+64
To detect orientation (mirroring) simply compare the X position, like so:
If Enemy.X > Player.X set Enemy mirrored
If Enemy.X < Player.X set Enemy not mirrored
And similarly to detect if the enemy should shoot up, only by comparing Y positions:
If Enemy.Y > Player.Y then shoot up
If Enemy.Y < Player.Y then shoot down