public void Process(AbilityArgs args) { //no damage from a color when we have protection if (Colors.Intersect(args.OriginCard.Colors).Count() > 0) { PreventDamage(args.TargetCard, args.OriginCard, args.Damage); } //no damage from a card sub type when we have protection if (CardTypes.Intersect(args.OriginCard.CardTypes).Count() > 0) { PreventDamage(args.TargetCard, args.OriginCard, args.Damage); } //no damage from a card type when we have protection if (SubTypes.Intersect(args.OriginCard.SubTypes).Count() > 0) { PreventDamage(args.TargetCard, args.OriginCard, args.Damage); } }