Exemple #1
0
        public ThreatDamageResult TakeAttack(int amount, ThreatDamageType damageType)
        {
            var damageShielded = 0;
            var damageDone     = amount;

            if (damageType != ThreatDamageType.IgnoresShields)
            {
                damageShielded = UpperStation.ShieldThroughAttack(amount);
                damageDone    -= damageShielded;
            }
            if (damageType == ThreatDamageType.DoubleDamageThroughShields)
            {
                damageDone *= 2;
            }
            if (damageShielded == 0 && damageDone > 0 && damageType == ThreatDamageType.Plasmatic)
            {
                foreach (var player in Players)
                {
                    player.KnockOut();
                }
            }
            var damageResult = TakeDamage(damageDone);

            damageResult.DamageShielded = damageShielded;
            return(damageResult);
        }