public void ManualShoot()
    {
        if (tankTurret)
        {
            tankTurret.ManualShotgun();
            return;
        }

        float manualRange = range * manualRangeMultiplier;

        //spawn proj, get the proj info
        GameObject projGO = ObjectPool.instance.ActivateProjectile(projectileType, fireSpawn.position, fireSpawn.rotation);
        Projectile proj   = projGO.GetComponent <Projectile>();

        //set more specific info based on the type of proj
        if (bulletTurret)
        {
            proj.GetBullet().Initialize(penetration);
        }
        else if (missileTurret)
        {
            proj.GetMissile().SetExplosion(penetration, missileTurret.explosionRadius);
        }
        else if (railgunTurret)
        {
            proj.GetRod().SetPenetration(penetration);
            proj.GetRod().InitializeDirection();
        }

        Ray ray = TryRayCastAndRay(manualRange);

        //set proj info
        proj.SetStats(damage, bossDamage, pivot.position, ray.GetPoint(range));

        if (railgunTurret)
        {
            proj.SetLifePositions(pivot.position, ray.GetPoint(manualRange * 2));
        }

        if (proj)
        {
            proj.MakeTarget(target);
        }
    }