public override void ProcessResults(ChosenOptions results)
        {
            var color = ChoiceToColorMap.Single(x => x.Choice.Equals(results.Options[0])).Color;

            var cardsToDiscard = Target.Player().Hand.Where(
                x => x.HasColor(color)).ToList();

            foreach (var card in cardsToDiscard)
            {
                Target.Player().DiscardCard(card);
            }
        }
        public override ChosenOptions ChooseResult(List <IEffectChoice> candidates)
        {
            CardColor?color = null;

            if (!Stack.IsEmpty && !Stack.TopSpell.HasColor(CardColor.Colorless) &&
                !Stack.TopSpell.HasColor(CardColor.None))
            {
                color = Stack.TopSpell.Colors[0];
            }

            color = color ?? Controller.Opponent.Battlefield.GetMostCommonColor();

            return(new ChosenOptions(ChoiceToColorMap.Single(x => x.Color == color).Choice));
        }
        public override void ProcessResults(ChosenOptions results)
        {
            var color = ChoiceToColorMap.Single(x => x.Choice.Equals(results.Options[0])).Color;

            var modifier = new AddProtectionFromColors(color)
            {
                UntilEot = true
            };

            var parameters = new ModifierParameters
            {
                SourceEffect = this,
                SourceCard   = Source.OwningCard
            };

            Target.Card().AddModifier(modifier, parameters);
        }
        public override void ProcessResults(ChosenOptions results)
        {
            var color = ChoiceToColorMap.Single(x => x.Choice.Equals(results.Options[0])).Color;

            var mp = new ModifierParameters
            {
                SourceCard   = Source.OwningCard,
                SourceEffect = this,
            };

            foreach (var target in ValidEffectTargets)
            {
                var prevention = new PreventDamageToTarget(target, sourceSelector: (c, ctx) => c.HasColor(color));
                var modifier   = new AddDamagePrevention(prevention)
                {
                    UntilEot = true
                };
                Game.AddModifier(modifier, mp);
            }
        }
        public override ChosenOptions ChooseResult(List <IEffectChoice> operations)
        {
            var color = Target.Player().Battlefield.GetMostCommonColor();

            return(new ChosenOptions(ChoiceToColorMap.Single(x => x.Color == color).Choice));
        }