//processRangedAttack is only called by modelManager when targets collide
        //returns true if the bullet collided and should disappear
        public bool processRangedAttack(Bullet bullet, Player1 target, attackType attackType)
        {
            if (target.isAlive == false)
                return false;

            //Blocked by shielding
            if (target.isShielding)
            {
                shieldBlock(target);
                return true;
            }

            //Dodged by rolling
            if (target.rolling)
            {
                return false;
            }

            //Do ranged attack
            switch (attackType)
            {
                case attackType.BULLET:
                    damageModifier = 1;
                    knockbackModifier = 0;
                    attackKnockbackCap = 0;
                    stunValue = 0;
                    target.myModelManager.playSound(ModelManager.sound.SHOCKHIT);
                    break;

                case attackType.SMASHBULLET:
                    damageModifier = 10;
                    knockbackModifier = 40f;
                    attackKnockbackCap = -1;
                    stunValue = .9f;
                    target.myModelManager.playSound(ModelManager.sound.SHOCKSMASHHIT);
                    break;
            }

            //Recognize the values from the switch
            damageTotal = damageDealt * damageModifier;
            knockbackTotal = knockbackDealt * knockbackModifier;

            //Stun target
            target.stunTimer = stunValue;

            //Calculate and set damage
            if (target.currPercentage + damageTotal > target.maxPercentage)
                target.currPercentage = target.maxPercentage;
            else
                target.currPercentage += damageTotal;

            //Calculate and set knockback
            //
            knockbackDirection = (target.getPosition().X - bullet.getPosition().X);
            //Assess whether facing left or right
            if (knockbackDirection > 0)
                direction = 1;
            else direction = -1;

            //Calculate Distance
            knockbackDirection = knockbackDirection / Math.Abs(knockbackDirection);
            knockbackDistance = target.currPercentage / knockbackTotal * knockbackDirection;

            //Cap knockback and knockback as appropriate
            if (attackKnockbackCap > 0 &&
                Math.Abs(knockbackDistance) > Math.Abs(attackKnockbackCap))
                target.knockback(attackKnockbackCap * direction);
            else if (knockbackTotal != 0 && knockbackDirection != 0)
                target.knockback(knockbackDistance);

            return true;
        }