Example #1
0
        public CardTemplate Leveler(string cost, EffectTag tag,
                                    params LevelDefinition[] levels)
        {
            ActivatedAbility(p =>
            {
                p.Text   = String.Format("{0}: Put a level counter on this. Level up only as sorcery.", cost);
                p.Cost   = new PayMana(cost.Parse());
                p.Effect = () => new ApplyModifiersToSelf(() => new IncreaseLevel()).SetTags(tag);
                p.TimingRule(new DefaultLevelUpTimingRule(cost.Parse(), levels));
                p.ActivateAsSorcery = true;
            });

            foreach (var level in levels)
            {
                var lvl = level;
                TriggeredAbility(p =>
                {
                    p.Trigger(new OnLevelChanged(lvl.Min));
                    p.Effect = () => new ApplyModifiersToSelf(
                        () =>
                    {
                        var modifier = new AddSimpleAbility(lvl.StaticAbility);
                        modifier.AddLifetime(new LevelLifetime(lvl.Min, lvl.Max));
                        return(modifier);
                    },
                        () =>
                    {
                        var modifier = new SetPowerAndToughness(lvl.Power, lvl.Toughness);
                        modifier.AddLifetime(new LevelLifetime(lvl.Min, lvl.Max));
                        return(modifier);
                    }
                        );
                    p.UsesStack = false;
                    p.TriggerOnlyIfOwningCardIsInPlay = true;
                });
            }

            _init.Add(cp => { cp.IsLeveler = true; });

            return(this);
        }
Example #2
0
        public CardTemplate Leveler(string cost, EffectTag tag,
      params LevelDefinition[] levels)
        {
            ActivatedAbility(p =>
            {
              p.Text = String.Format("{0}: Put a level counter on this. Level up only as sorcery.", cost);
              p.Cost = new PayMana(cost.Parse(), ManaUsage.Abilities);
              p.Effect = () => new ApplyModifiersToSelf(() => new IncreaseLevel()).SetTags(tag);
              p.TimingRule(new DefaultLevelUpTimingRule(cost.Parse(), levels));
              p.ActivateAsSorcery = true;
            });

              foreach (var level in levels)
              {
            var lvl = level;
            TriggeredAbility(p =>
              {
            p.Trigger(new OnLevelChanged(lvl.Min));
            p.Effect = () => new ApplyModifiersToSelf(
              () =>
                {
                  var modifier = new AddStaticAbility(lvl.StaticAbility);
                  modifier.AddLifetime(new LevelLifetime(lvl.Min, lvl.Max));
                  return modifier;
                },
              () =>
                {
                  var modifier = new SetPowerAndToughness(lvl.Power, lvl.Toughness);
                  modifier.AddLifetime(new LevelLifetime(lvl.Min, lvl.Max));
                  return modifier;
                }
              );
            p.UsesStack = false;
            p.TriggerOnlyIfOwningCardIsInPlay = true;
              });
              }

              _init.Add(cp => { cp.IsLeveler = true; });

              return this;
        }