Here's your culprit!
When moving left, you subtract 5 from ammoX but then turn around and add 14 back to it during the next pass...
That's what it looks like to me.
So, near the top, add the following logic:
int ammo_adj = 14;
if (facing_left)
ammo_adj = -14;
dbCreateAnimatedSprite ( 5, "nova.png", 1, 1, 5 );
dbPlaySprite ( 5, 1, 1, 0 );
if ( blnAmmo )
{
ammoX += ammo_adj;
dbSprite ( 5, ammoX, mY - 77, 5 );
//reset blnAmmo variable
if ( ammoX > 650 || ammoX < 0 )
{
dbDeleteSprite ( 5 );
blnAmmo = false;
}
}
if ( CheckFire() == true && blnAmmo == false )
{
blnAmmo = true;
ammoX = (mX + 5);
//playerCheckHitEnemies();
dbSprite ( 5, ammoX++, mY - 77, 5 );
}
else if ( CheckFire() == true && blnAmmo == false && dbSpriteExist (2) )
{
blnAmmo = true;
ammoX = (mX - 5);
//playerCheckHitEnemies();
dbSprite ( 5, ammoX--, mY - 77, 5 );
}
Hope this helps,
JTK