public override int PreventDamage(PreventDamageParameters p)
        {
            if (p.Target.IsPlayer())
            return 0;

              var targetCard = p.Target.Card();

              if (targetCard.Controller != _player)
            return 0;

              if (_filter(targetCard) == false)
            return 0;

              if (p.QueryOnly)
            return p.Amount;

              var mp = new ModifierParameters
            {
              SourceCard = targetCard,
            };

              var modifier = new AddCounters(_counter, p.Amount);
              targetCard.AddModifier(modifier, mp);

              return p.Amount;
        }
Пример #2
0
        public override int PreventDamage(PreventDamageParameters p)
        {
            if (p.Target.IsPlayer())
            {
                return(0);
            }

            var targetCard = p.Target.Card();

            if (targetCard.Controller != _player)
            {
                return(0);
            }

            if (_filter(targetCard) == false)
            {
                return(0);
            }

            if (p.QueryOnly)
            {
                return(p.Amount);
            }

            var mp = new ModifierParameters
            {
                SourceCard = targetCard,
            };

            var modifier = new AddCounters(_counter, p.Amount);

            targetCard.AddModifier(modifier, mp);

            return(p.Amount);
        }
Пример #3
0
        public override IEnumerable <CardTemplate> GetCards()
        {
            yield return(Card
                         .Named("Briber's Purse")
                         .ManaCost("{0}").HasXInCost()
                         .Type("Artifact")
                         .Text("Briber's Purse enters the battlefield with X gem counters on it.{EOL}{1},{T}, Remove a gem counter from Briber's Purse: Target creature can't attack or block this turn.")
                         .FlavorText("Victory is certain. The price, negotiable.")
                         .Cast(p =>
            {
                p.CostRule(new XIsAvailableMana(-1));
                p.AfterResolve = (c, ctx) =>
                {
                    var x = ctx.X ?? 0;

                    c.PutToBattlefield();

                    var mp = new ModifierParameters
                    {
                        SourceEffect = ctx.Effect,
                        SourceCard = c,
                        X = x
                    };

                    var addCounters = new AddCounters(() => new SimpleCounter(CounterType.Gem), Value.PlusX);
                    c.AddModifier(addCounters, mp);
                };
            })
                         .ActivatedAbility(p =>
            {
                p.Text = "{1},{T}, Remove a gem counter from Briber's Purse: Target creature can't attack or block this turn.";

                p.Cost = new AggregateCost(
                    new PayMana(1.Colorless()),
                    new Tap(),
                    new RemoveCounters(CounterType.Gem, count: 1));

                p.Effect = () => new ApplyModifiersToTargets(
                    () => new AddSimpleAbility(Static.CannotBlock)
                {
                    UntilEot = true
                },
                    () => new AddSimpleAbility(Static.CannotAttack)
                {
                    UntilEot = true
                }).SetTags(EffectTag.CombatDisabler);

                p.TargetSelector.AddEffect(trg => trg.Is.Creature().On.Battlefield());

                p.TimingRule(new OnStep(Step.BeginningOfCombat));
                p.TargetingRule(new EffectCannotBlockAttack());
            }));
        }
Пример #4
0
        public void ProcessResults(BooleanResult results)
        {
            if (results.IsTrue)
            {
                var p = new ModifierParameters
                {
                    SourceCard   = Source.OwningCard,
                    SourceEffect = this,
                };

                var addCounter = new AddCounters(() => new SimpleCounter(_counterType), 1);
                Source.OwningCard.AddModifier(addCounter, p);
            }
        }
Пример #5
0
        private static void AddCounters(ScenarioCard scenarioCard, Card card)
        {
            if (scenarioCard.HasCounters)
            {
                var p = new ModifierParameters
                {
                    SourceCard = card,
                };

                var counters = new AddCounters(() => new SimpleCounter(scenarioCard.Counters.Type),
                                               scenarioCard.Counters.Count);

                card.AddModifier(counters, p);
            }
        }
Пример #6
0
        protected override void ResolveEffect()
        {
            var p = new ModifierParameters
            {
                SourceEffect = this,
                SourceCard   = Source.OwningCard,
                X            = X
            };

            var modifier = new AddCounters(() => new PowerToughness(1, 1), count: _count.Value);

            var targetCreature = (Card)Target;

            targetCreature.AddModifier(modifier, p);
        }
Пример #7
0
        public override void ProcessResults(ChosenOptions results)
        {
            var lifeToPay = (int) results.Options[0];

              Controller.Life -= lifeToPay;

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

              var addCounters = new AddCounters(() => new SimpleCounter(_counterType), lifeToPay);
              Source.OwningCard.AddModifier(addCounters, p);
        }
Пример #8
0
        public override void ProcessResults(ChosenOptions results)
        {
            var lifeToPay = (int)results.Options[0];

            Controller.Life -= lifeToPay;

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

            var addCounters = new AddCounters(() => new SimpleCounter(_counterType), lifeToPay);

            Source.OwningCard.AddModifier(addCounters, p);
        }
Пример #9
0
        protected override void ResolveEffect()
        {
            if (Source.OwningCard.Has().Monstrosity)
            {
                return;
            }

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

            var modifier1 = new AddCounters(() => new PowerToughness(1, 1), count: _counterCount);
            var modifier2 = new AddSimpleAbility(Static.Monstrosity);

            Source.OwningCard.AddModifier(modifier1, p);
            Source.OwningCard.AddModifier(modifier2, p);
        }
Пример #10
0
        protected override void ResolveEffect()
        {
            var p = new ModifierParameters
            {
                SourceEffect = this,
                SourceCard   = Source.OwningCard,
                X            = X
            };

            for (var i = 0; i < Targets.Effect.Count; i++)
            {
                var target = Targets.Effect[i];
                var count  = Targets.Distribution[i];

                if (IsValid(target) && count > 0)
                {
                    var modifier = new AddCounters(_createCounter, count);
                    target.Card().AddModifier(modifier, p);
                }
            }
        }
Пример #11
0
        private static void AddCounters(ScenarioCard scenarioCard, Card card)
        {
            if (scenarioCard.HasCounters)
            {
                var p = new ModifierParameters
                {
                    SourceCard = card,
                };

                var counters = new AddCounters(() =>
                {
                    if (scenarioCard.Counters.Type == CounterType.PowerToughness)
                    {
                        return(new PowerToughness(1, 1));
                    }

                    return(new SimpleCounter(scenarioCard.Counters.Type));
                }, scenarioCard.Counters.Count);

                card.AddModifier(counters, p);
            }
        }