Esempio n. 1
0
        public int CalculatePreventedDamageAmount(int totalAmount, Card source, bool isCombat = false)
        {
            if (HasProtectionFrom(source))
            {
                return totalAmount;
            }

            var damage = new PreventDamageParameters
            {
                Amount = totalAmount,
                QueryOnly = true,
                Source = source,
                IsCombat = isCombat,
                Target = this,
            };

            return Game.PreventDamage(damage);
        }
Esempio n. 2
0
        public int CalculatePreventedReceivedDamageAmount(int totalAmount, Card source, bool isCombat = false)
        {
            var p = new PreventDamageParameters
            {
                Amount = totalAmount,
                Source = source,
                Target = this,
                IsCombat = isCombat,
                QueryOnly = true
            };

            return Game.PreventDamage(p);
        }
Esempio n. 3
0
        public void ReceiveDamage(Damage damage)
        {
            var p = new PreventDamageParameters
            {
                Amount = damage.Amount,
                Source = damage.Source,
                Target = this,
                IsCombat = damage.IsCombat,
                QueryOnly = false
            };

            var prevented = Game.PreventDamage(p);
            damage.Amount -= prevented;

            if (damage.Amount == 0)
                return;

            var wasRedirected = Game.RedirectDamage(damage, this);

            if (wasRedirected)
                return;

            var preventedLifeloss = Game.PreventLifeloss(damage.Amount, this, queryOnly: false);

            Life -= (damage.Amount - preventedLifeloss);

            //if (damage.Source.Has().Lifelink)
            //{
            //    var controller = damage.Source.Controller;
            //    controller.Life += damage.Amount;
            //}

            Publish(new DamageDealtEvent(this, damage));
        }
Esempio n. 4
0
 public virtual int PreventDamage(PreventDamageParameters p)
 {
     return 0;
 }