private void ApplyDamage(GameObjectVertical obj)
        {
            float damage       = ShipInventoryManager.equippedShield.GetShieldDamage(obj) * StatsManager.damageFactor;
            float HPdamage     = 0;
            float shieldDamage = 0;

            if (Shield > damage)
            {
                shieldDamage = damage;
                Shield      -= shieldDamage;
                Game.AddGameObjToShooter(ShieldEffectGenerator.GenerateStandardShieldEffect(Game, spriteSheet, this));

                Game.soundEffectsManager.PlaySoundEffect(SoundEffects.ShieldHit);
            }
            else
            {
                HPdamage     = damage - Shield;
                shieldDamage = Shield;
                HP          -= HPdamage;
                Shield       = 0;

                Game.soundEffectsManager.PlaySoundEffect(obj.getDeathSoundID());
            }

            if (Level.IsLogging)
            {
                Level.AddShipDamage(HPdamage);
                Level.AddShieldDamage(shieldDamage);
            }
        }
        public override void InflictDamage(GameObjectVertical obj)
        {
            if (obj.DisruptionTime > 0)
            {
                disruptionMilliseconds = obj.DisruptionTime;
            }

            float enemyDamage = obj.Damage;

            if (hasShield && currentShield > 0)
            {
                if (currentShield > enemyDamage)
                {
                    currentShield -= enemyDamage;
                    Game.AddGameObjToShooter(ShieldEffectGenerator.GenerateStandardShieldEffect(Game, spriteSheet, this));

                    if (!(obj is BeamBullet))
                    {
                        Game.soundEffectsManager.PlaySoundEffect(SoundEffects.ShieldHit);
                    }
                }
                else
                {
                    HP    -= (obj.Damage - Shield);
                    Shield = 0;

                    if (!(obj is BeamBullet))
                    {
                        Game.soundEffectsManager.PlaySoundEffect(SoundEffects.MuffledExplosion);
                    }
                }
            }
            else
            {
                base.OnDamage();
                HP -= obj.Damage;
            }
        }