Another way would be to fire invisible bullets (bullet behaviour) every 2 seconds or so from the front and back of the pirate ship. They'd start off with the same width as the pirate ship, then gradually get bigger as they get further from the ship. This will give a triangular line of sight. If there's a hit, then rotate towards player position.
Also fire off bullets from the sides. If a side bullet hits the player (before rotation), then player is at the correct angle to fire at. If a side bullet hits the player (while rotating), then stop rotating and fire those cannons! The logic seems sound ;p
Of course, only fire the bullets when player is within a certain distance.