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); }
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); }
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)); }
public virtual int PreventDamage(PreventDamageParameters p) { return 0; }