Exemple #1
0
        public void Process(ActivationContext c)
        {
            if (c.HasTargets == false)
            {
                var p = new CostRuleParameters(c.Card, c.MaxX.Value.GetValueOrDefault());
                c.X = CalculateX(p);

                if (c.X > c.MaxX.Value)
                {
                    c.CancelActivation = true;
                }
                return;
            }

            var targetsCombinations = c.TargetsCombinations().ToList();

            foreach (var targetsCombination in targetsCombinations)
            {
                var p = new CostRuleParameters(c.Card, c.MaxX.Value.GetValueOrDefault(), targetsCombination.Targets);
                targetsCombination.X = CalculateX(p);

                if (targetsCombination.X > c.MaxX.Value)
                {
                    c.RemoveTargetCombination(targetsCombination);
                }
            }

            if (c.HasTargets == false)
            {
                c.CancelActivation = true;
            }
        }
        public override int CalculateX(CostRuleParameters p)
        {
            var bestX     = p.MaxX + 1;
            var bestScore = -1;

            for (var i = p.MaxX; i >= 0; i--)
            {
                var yourScore = p.Controller.Battlefield
                                .Where(x => _selector(x))
                                .Where(x => x.ConvertedCost <= i)
                                .Sum(x => x.Score);

                var opponentsScore = p.Controller.Opponent.Battlefield
                                     .Where(x => _selector(x))
                                     .Where(x => x.ConvertedCost <= i)
                                     .Sum(x => x.Score);

                var diff = opponentsScore - yourScore;

                if (diff >= bestScore)
                {
                    bestScore = diff;
                    bestX     = i;
                }
            }

            return(bestX);
        }
        public override int CalculateX(CostRuleParameters p)
        {
            var bestX = p.MaxX + 1;
              var bestScore = -1;

              for (var i = p.MaxX; i >= 0; i--)
              {
            var yourScore = p.Controller.Battlefield
              .Where(x => _selector(x))
              .Where(x => x.ConvertedCost <= i)
              .Sum(x => x.Score);

            var opponentsScore = p.Controller.Opponent.Battlefield
              .Where(x => _selector(x))
              .Where(x => x.ConvertedCost <= i)
              .Sum(x => x.Score);

            var diff = opponentsScore - yourScore;

            if (diff >= bestScore)
            {
              bestScore = diff;
              bestX = i;
            }
              }

              return bestX;
        }
Exemple #4
0
        public void Process(ActivationContext c)
        {
            if (c.HasTargets == false)
              {
            var p = new CostRuleParameters(c.Card, c.MaxX.Value.GetValueOrDefault());
            c.X = CalculateX(p);

            if (c.X > c.MaxX.Value)
            {
              c.CancelActivation = true;
            }
            return;
              }

              var targetsCombinations = c.TargetsCombinations().ToList();

              foreach (var targetsCombination in targetsCombinations)
              {
            var p = new CostRuleParameters(c.Card, c.MaxX.Value.GetValueOrDefault(), targetsCombination.Targets);
            targetsCombination.X = CalculateX(p);

            if (targetsCombination.X > c.MaxX.Value)
            {
              c.RemoveTargetCombination(targetsCombination);
            }
              }

              if (c.HasTargets == false)
            c.CancelActivation = true;
        }
        public override int CalculateX(CostRuleParameters p)
        {
            if (p.Targets.Effect[0].IsPlayer())
              {
            return p.MaxX;
              }

              var lifepoints = p.Targets.Max(x => x.Life());
              return lifepoints;
        }
Exemple #6
0
        public override int CalculateX(CostRuleParameters p)
        {
            if (p.Targets.Effect[0].IsPlayer())
            {
                return(p.MaxX);
            }

            var lifepoints = p.Targets.Max(x => x.Life());

            return(lifepoints);
        }
        public override int CalculateX(CostRuleParameters p)
        {
            var cards = p.Controller.Library
                        .Where(_filter)
                        .ToList();

            var maxConverted = cards.Count > 0
        ? cards.Max(x => x.ConvertedCost)
        : 0;

            return(Math.Min(maxConverted, p.MaxX));
        }
        public override int CalculateX(CostRuleParameters p)
        {
            var cards = p.Controller.Library
            .Where(_filter)
            .ToList();

              var maxConverted = cards.Count > 0
            ? cards.Max(x => x.ConvertedCost)
            : 0;

              return Math.Min(maxConverted, p.MaxX);
        }
        public override int CalculateX(CostRuleParameters p)
        {
            var maxX = p.Controller.GetAvailableConvertedMana(ManaUsage.Spells) - p.OwningCard.ManaCost.Converted;

              if (maxX >= _x)
              {
            var yourScore = p.Controller.Battlefield.Creatures.Sum(x => x.Score);
            var opponentScore = p.Controller.Opponent.Battlefield.Creatures.Sum(x => x.Score);

            return opponentScore >= yourScore ? maxX : 4;
              }

              return maxX;
        }
Exemple #10
0
        public override int CalculateX(CostRuleParameters p)
        {
            var maxX = p.Controller.GetAvailableConvertedMana(ManaUsage.Spells) - p.OwningCard.ManaCost.Converted;

            if (maxX >= _x)
            {
                var yourScore     = p.Controller.Battlefield.Creatures.Sum(x => x.Score);
                var opponentScore = p.Controller.Opponent.Battlefield.Creatures.Sum(x => x.Score);

                return(opponentScore >= yourScore ? maxX : 4);
            }

            return(maxX);
        }
        public override int CalculateX(CostRuleParameters p)
        {
            var maxX = p.Controller.GetAvailableManaCount(
                new ConvokeAndDelveOptions
            {
                CanUseConvoke = p.OwningCard.Has().Convoke,
                CanUseDelve   = p.OwningCard.Has().Delve
            }, ManaUsage.Spells)

                       - p.OwningCard.ManaCost.Converted;

            if (maxX >= _x)
            {
                var yourScore     = p.Controller.Battlefield.Creatures.Sum(x => x.Score);
                var opponentScore = p.Controller.Opponent.Battlefield.Creatures.Sum(x => x.Score);

                return(opponentScore >= yourScore ? maxX : 4);
            }

            return(maxX);
        }
 public override int CalculateX(CostRuleParameters p)
 {
     var value = _selector(p.Controller);
       return value > p.MaxX ? p.MaxX : value;
 }
Exemple #13
0
 public override int CalculateX(CostRuleParameters p)
 {
     return(p.Controller.Opponent.Battlefield.Lands.Count());
 }
Exemple #14
0
        public override int CalculateX(CostRuleParameters p)
        {
            var value = _selector(p.Controller);

            return(value > p.MaxX ? p.MaxX : value);
        }
 public override int CalculateX(CostRuleParameters p)
 {
     return(p.Controller.Battlefield.Creatures.Count(x => x.HasBlockers));
 }
Exemple #16
0
 public abstract int CalculateX(CostRuleParameters p);
Exemple #17
0
 public abstract int CalculateX(CostRuleParameters p);
 public override int CalculateX(CostRuleParameters p)
 {
     return p.Controller.Opponent.Battlefield.Lands.Count();
 }
 public override int CalculateX(CostRuleParameters p)
 {
     return p.Controller.Battlefield.Creatures.Count(x => x.HasBlockers);
 }