I haven't looked at the cap, but I've got a few tips...
If you want enemies to fire only when on-screen, just add a condition "Is On Screen", I believe sprites have that.
Then add another event that checks when the sprite is out of visible area (Negated On Screen), trigger once, set the 'ammo' to 2. So, whenever it flies onto screen, it would fire two bullets, then as soon as it flies out, it would refresh ammunition.
For random firing, try for every 1000+random(2000) ms. That will randomize it a bit between one and three seconds. Fire a bullet, substract by one, stop firing when it hits 0 ammo.
As for pacing, you want it to face directly north? Then just set angle to 270 (360-90). If you want it to face the player, then use Set Angle Toward (player sprite) - or use angle(enemy.x,enemy.y,player.x,player.y) expression. However, if you don't want the enemy to change angle and wander off its path, you can just change the bullet spawn angle instead. The sprite won't rotate, but the fire will fire into given angle.