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; } }