示例#1
0
        public override IEnumerable <CardTemplate> GetCards()
        {
            yield return(Card
                         .Named("Jeskai Banner")
                         .ManaCost("{3}")
                         .Type("Artifact")
                         .Text("{T}: Add {U}, {R}, or {W} to your mana pool.{EOL}{U}{R}{W}, {T}, Sacrifice Jeskai Banner: Draw a card.")
                         .FlavorText("Discipline to persevere, insight to discover.")
                         .ManaAbility(p =>
            {
                p.Text = "{T}: Add {U}, {R}, or {W} to your mana pool.";
                p.ManaAmount(Mana.Colored(isBlue: true, isRed: true, isWhite: true));
            })
                         .ActivatedAbility(p =>
            {
                p.Text = "{U}{R}{W}, {T}, Sacrifice Jeskai Banner: Draw a card.";

                p.Cost = new AggregateCost(
                    new PayMana("{U}{R}{W}".Parse()),
                    new Tap(),
                    new Sacrifice());

                p.Effect = () => new DrawCards(1);

                p.TimingRule(new Any(
                                 new WhenOwningCardWillBeDestroyed(),
                                 new OnEndOfOpponentsTurn()));
            })
                         // TODO scoring should depend on number of lands on battlefield
                         .OverrideScore(p => p.Battlefield = Scores.ManaCostToScore[2]));
        }
示例#2
0
        public override IEnumerable <CardTemplate> GetCards()
        {
            yield return(Card
                         .Named("Temur Banner")
                         .ManaCost("{3}")
                         .Type("Artifact")
                         .Text("{T}: Add {G}, {U}, or {R} to your mana pool.{EOL}{G}{U}{R}, {T}, Sacrifice Temur Banner: Draw a card.")
                         .FlavorText("Savagery to survive, courage to triumph.")
                         .ManaAbility(p =>
            {
                p.Text = "{T}: Add {G}, {U}, or {R} to your mana pool.";
                p.ManaAmount(Mana.Colored(isRed: true, isGreen: true, isBlue: true));
            })
                         .ActivatedAbility(p =>
            {
                p.Text = "{G}{U}{R}, {T}, Sacrifice Temur Banner: Draw a card.";

                p.Cost = new AggregateCost(
                    new PayMana("{G}{U}{R}".Parse()),
                    new Tap(),
                    new Sacrifice());

                p.Effect = () => new DrawCards(1);

                p.TimingRule(new Any(
                                 new WhenOwningCardWillBeDestroyed(),
                                 new OnEndOfOpponentsTurn()));
            })
                         // TODO scoring should depend on number of lands on battlefield
                         .OverrideScore(p => p.Battlefield = Scores.ManaCostToScore[2]));
        }
示例#3
0
        public override IEnumerable <CardTemplate> GetCards()
        {
            yield return(Card
                         .Named("Abzan Banner")
                         .ManaCost("{3}")
                         .Type("Artifact")
                         .Text("{T}: Add {W}, {B}, or {G} to your mana pool.{EOL}{W}{B}{G}, {T}, Sacrifice Abzan Banner: Draw a card.")
                         .FlavorText("Stone to endure, roots to remember.")
                         .ManaAbility(p =>
            {
                p.Text = "{T}: Add {W}, {B} or {G} to your mana pool.";
                p.ManaAmount(Mana.Colored(isBlack: true, isGreen: true, isWhite: true));
            })
                         .ActivatedAbility(p =>
            {
                p.Text = "{W}{B}{G}, {T}, Sacrifice Abzan Banner: Draw a card.";
                p.Cost = new AggregateCost(
                    new PayMana("{W}{B}{G}".Parse()),
                    new Tap(),
                    new Sacrifice());

                p.Effect = () => new DrawCards(1);

                p.TimingRule(new Any(
                                 new WhenOwningCardWillBeDestroyed(),
                                 new OnEndOfOpponentsTurn()));
            })
                         // TODO scoring should depend on number of lands on battlefield
                         .OverrideScore(p => p.Battlefield = Scores.ManaCostToScore[2]));
        }
示例#4
0
        public override IEnumerable <CardTemplate> GetCards()
        {
            yield return(Card
                         .Named("Lotus Blossom")
                         .ManaCost("{2}")
                         .Type("Artifact")
                         .Text(
                             "At the beginning of your upkeep, you may put a petal counter on Lotus Blossom.{EOL}{T}, Sacrifice Lotus Blossom: Add X mana of any color to your mana pool, where X is the number of petal counters on Lotus Blossom.")
                         .Cast(p => p.TimingRule(new OnSecondMain()))
                         .TriggeredAbility(p =>
            {
                p.Text = "At the beginning of your upkeep, you may put a petal counter on Lotus Blossom.";
                p.Trigger(new OnStepStart(Step.Upkeep));
                p.Effect =
                    () => new ApplyModifiersToSelf(() => new AddCounters(() => new SimpleCounter(CounterType.Petal), 1));
                p.TriggerOnlyIfOwningCardIsInPlay = true;
            })
                         .ActivatedAbility(p =>
            {
                p.Text =
                    "{T}, Sacrifice Lotus Blossom: Add X mana of any color to your mana pool, where X is the number of petal counters on Lotus Blossom.";

                p.Cost = new AggregateCost(
                    new Tap(),
                    new Sacrifice());

                p.Effect = () => new AddManaToPool(P(e =>
                                                     Mana.Colored(ManaColor.Any, e.Source.OwningCard.Counters)));

                p.TimingRule(new WhenYouNeedAdditionalMana());
            }));
        }
示例#5
0
        public override IEnumerable <CardTemplate> GetCards()
        {
            yield return(Card
                         .Named("Raging Ravine")
                         .Type("Land")
                         .Text(
                             "Raging Ravine enters the battlefield tapped.{EOL}{T}: Add {R} or {G} to your mana pool.{EOL}{2}{R}{G}: Until end of turn, Raging Ravine becomes a 3/3 red and green Elemental creature with Whenever this creature attacks, put a +1/+1 counter on it. It's still a land.")
                         .Cast(p => p.Effect = () => new CastPermanent(tap: true))
                         .ManaAbility(p =>
            {
                p.Text = "{T}: Add {R} or {G} to your mana pool.";
                p.ManaAmount(Mana.Colored(isRed: true, isGreen: true));
                p.Priority = ManaSourcePriorities.OnlyIfNecessary;
            })
                         .ActivatedAbility(p =>
            {
                p.Text =
                    "{2}{R}{G}: Until end of turn, Raging Ravine becomes a 3/3 red and green Elemental creature with Whenever this creature attacks, put a +1/+1 counter on it. It's still a land.";

                p.Cost = new PayMana("{2}{R}{G}".Parse());

                p.Effect = () => new ApplyModifiersToSelf(
                    () => new ChangeToCreature(
                        power: 3,
                        toughness: 3,
                        colors: L(CardColor.Red, CardColor.Green),
                        type: t => t.Add(baseTypes: "creature", subTypes: "elemental"))
                {
                    UntilEot = true
                },
                    () =>
                {
                    var tp = new TriggeredAbility.Parameters
                    {
                        Text = "Whenever this creature attacks, put a +1/+1 counter on it.",
                        Effect = () => new ApplyModifiersToSelf(() => new AddCounters(() => new PowerToughness(1, 1), 1))
                    };

                    tp.Trigger(new WhenThisAttacks());
                    return new AddTriggeredAbility(new TriggeredAbility(tp))
                    {
                        UntilEot = true
                    };
                });

                p.TimingRule(new WhenStackIsEmpty());
                p.TimingRule(new WhenCardHas(c => !c.Is().Creature));
                p.TimingRule(new WhenYouHaveMana(5));
                p.TimingRule(new Any(new BeforeYouDeclareAttackers(), new AfterOpponentDeclaresAttackers()));
            }));
        }
示例#6
0
 public override IEnumerable <CardTemplate> GetCards()
 {
     yield return(Card
                  .Named("Mystic Monastery")
                  .Type("Land")
                  .Text("Mystic Monastery enters the battlefield tapped.{EOL}{T}: Add {U}, {R} or {W} to your mana pool.")
                  .FlavorText("When asked how many paths reach enlightenment, the monk kicked a heap of sand. \"Count,\" he smiled, \"and then find more grains.\"")
                  .Cast(p => p.Effect = () => new CastPermanent(tap: true))
                  .ManaAbility(p =>
     {
         p.Text = "{T}: Add {U}, {R} or {W} to your mana pool.";
         p.ManaAmount(Mana.Colored(isBlue: true, isRed: true, isWhite: true));
     }));
 }
示例#7
0
 public override IEnumerable <CardTemplate> GetCards()
 {
     yield return(Card
                  .Named("Nomad Outpost")
                  .Type("Land")
                  .Text("Nomad Outpost enters the battlefield tapped.{EOL}{T}: Add {R}, {W} or {B} to your mana pool.")
                  .FlavorText("\"Only the weak imprison themselves behind walls. We live free under the wind, and our freedom makes us strong.\"{EOL}—Zurgo, khan of the Mardu")
                  .Cast(p => p.Effect = () => new CastPermanent(tap: true))
                  .ManaAbility(p =>
     {
         p.Text = "{T}: Add {R}, {W} or {B} to your mana pool.";
         p.ManaAmount(Mana.Colored(isBlack: true, isRed: true, isWhite: true));
     }));
 }
示例#8
0
 public override IEnumerable <CardTemplate> GetCards()
 {
     yield return(Card
                  .Named("Copperline Gorge")
                  .Type("Land")
                  .Text(
                      "Copperline Gorge enters the battlefield tapped unless you control two or fewer other lands.{EOL}{T}: Add {R} or {G} to your mana pool.")
                  .Cast(p => { p.Effect = () => new CastPermanent(tap: P(e => e.Controller.Battlefield.Lands.Count() > 2)); })
                  .ManaAbility(p =>
     {
         p.Text = "{T}: Add {R} or {G} to your mana pool.";
         p.ManaAmount(Mana.Colored(isRed: true, isGreen: true));
     }));
 }
示例#9
0
 public override IEnumerable <CardTemplate> GetCards()
 {
     yield return(Card
                  .Named("Opulent Palace")
                  .Type("Land")
                  .Text("Opulent Palace enters the battlefield tapped.{EOL}{T}: Add {B}, {G} or {U} to your mana pool.")
                  .FlavorText("The dense jungle surrenders to a lush and lavish expanse. At its center uncoil the spires of Qarsi Palace.")
                  .Cast(p => p.Effect = () => new CastPermanent(tap: true))
                  .ManaAbility(p =>
     {
         p.Text = "{T}: Add {B}, {G} or {U} to your mana pool.";
         p.ManaAmount(Mana.Colored(isBlue: true, isBlack: true, isGreen: true));
     }));
 }
示例#10
0
 public override IEnumerable <CardTemplate> GetCards()
 {
     yield return(Card
                  .Named("Frontier Bivouac")
                  .Type("Land")
                  .Text("Frontier Bivouac enters the battlefield tapped.{EOL}{T}: Add {G}, {U} or {R} to your mana pool.")
                  .FlavorText("\"The most powerful dreams visit those who shelter in a dragon's skull.\"{EOL}—Chianul, Who Whispers Twice")
                  .Cast(p => p.Effect = () => new CastPermanent(tap: true))
                  .ManaAbility(p =>
     {
         p.Text = "{T}: Add {G}, {U} or {R} to your mana pool.";
         p.ManaAmount(Mana.Colored(isBlue: true, isRed: true, isGreen: true));
     }));
 }
示例#11
0
 public override IEnumerable <CardTemplate> GetCards()
 {
     yield return(Card
                  .Named("Sandsteppe Citadel")
                  .Type("Land")
                  .Text("Sandsteppe Citadel enters the battlefield tapped.{EOL}{T}: Add {W}, {B} or {G} to your mana pool.")
                  .FlavorText("That which endures, survives.")
                  .Cast(p => p.Effect = () => new CastPermanent(tap: true))
                  .ManaAbility(p =>
     {
         p.Text = "{T}: Add {W}, {B} or {G} to your mana pool.";
         p.ManaAmount(Mana.Colored(isBlack: true, isGreen: true, isWhite: true));
     }));
 }
示例#12
0
 public override IEnumerable <CardTemplate> GetCards()
 {
     yield return(Card
                  .Named("Rootbound Crag")
                  .Type("Land")
                  .Text(
                      "Rootbound Crag enters the battlefield tapped unless you control a Mountain or a Forest.{EOL}{T}: Add {R} or {G} to your mana pool.")
                  .Cast(p => p.Effect = () => new CastPermanent(
                            tap: P(e => e.Controller.Battlefield.None(card => card.Is("forest") || card.Is("mountain")))))
                  .ManaAbility(p =>
     {
         p.Text = "{T}: Add {R} or {G} to your mana pool.";
         p.ManaAmount(Mana.Colored(isRed: true, isGreen: true));
     }));
 }
示例#13
0
 public override IEnumerable <CardTemplate> GetCards()
 {
     yield return(Card
                  .Named("Sunpetal Grove")
                  .Type("Land")
                  .Text(
                      "Sunpetal Grove enters the battlefield tapped unless you control a Forest or a Plains.{EOL}{T}: Add {G} or {W} to your mana pool.")
                  .Cast(p => p.Effect = () => new PutIntoPlay(
                            tap: P(e => e.Controller.Battlefield.None(card => card.Is("forest") || card.Is("plains")))))
                  .ManaAbility(p =>
     {
         p.Text = "{T}: Add {G} or {W} to your mana pool.";
         p.ManaAmount(Mana.Colored(isWhite: true, isGreen: true));
     }));
 }
示例#14
0
 public override IEnumerable <CardTemplate> GetCards()
 {
     yield return(Card
                  .Named("Drowned Catacomb")
                  .Type("Land")
                  .Text(
                      "Drowned Catacomb enters the battlefield tapped unless you control an Island or a Swamp.{EOL}{T}: Add {U} or {B} to your mana pool.")
                  .Cast(
                      p => p.Effect = () => new CastPermanent(
                          tap: P(e => e.Controller.Battlefield.None(card => card.Is("island") || card.Is("swamp")))))
                  .ManaAbility(p =>
     {
         p.Text = "{T}: Add {U} or {B} to your mana pool.";
         p.ManaAmount(Mana.Colored(isBlue: true, isBlack: true));
     }));
 }
示例#15
0
 public override IEnumerable <CardTemplate> GetCards()
 {
     yield return(Card
                  .Named("Razorverge Thicket")
                  .Type("Land")
                  .Text(
                      "Razorverge Thicket enters the battlefield tapped unless you control two or fewer other lands.{EOL}{T}: Add {G} or {W} to your mana pool.")
                  .FlavorText(
                      "Where the Razor Fields beat back the Tangle, the crowded thicket yields to bright scimitars of grass.")
                  .Cast(p => p.Effect = () => new CastPermanent(tap: P(e => e.Controller.Battlefield.Lands.Count() > 2)))
                  .ManaAbility(p =>
     {
         p.Text = "{T}: Add {G} or {W} to your mana pool.";
         p.ManaAmount(Mana.Colored(isGreen: true, isWhite: true));
     }));
 }
示例#16
0
 public override IEnumerable <CardTemplate> GetCards()
 {
     yield return(Card
                  .Named("Noble Hierarch")
                  .ManaCost("{G}")
                  .Type("Creature - Human Druid")
                  .Text("Exalted{I}(Whenever a creature you control attacks alone, that creature gets +1/+1 until end of turn.){/I}{EOL}{T}: Add {G},{W}, or {U} to your mana pool.")
                  .FlavorText("She protects the sacred groves from blight, drought, and the Unbeholden.")
                  .Power(0)
                  .Toughness(1)
                  .Exalted()
                  .ManaAbility(p =>
     {
         p.Text = "{T}: Add {G}, {W} or {U} to your mana pool.";
         p.ManaAmount(Mana.Colored(isGreen: true, isBlue: true, isWhite: true));
     }));
 }
示例#17
0
 public override IEnumerable <CardTemplate> GetCards()
 {
     yield return(Card
                  .Named("Jungle Hollow")
                  .Type("Land")
                  .Text("Jungle Hollow enters the battlefield tapped.{EOL}When Jungle Hollow enters the battlefield, you gain 1 life.{EOL}{T}: Add {B} or {G} to your mana pool.")
                  .Cast(p => p.Effect = () => new CastPermanent(tap: true))
                  .ManaAbility(p =>
     {
         p.Text = "{T}: Add {B} or {G} to your mana pool.";
         p.ManaAmount(Mana.Colored(isBlack: true, isGreen: true));
     })
                  .TriggeredAbility(p =>
     {
         p.Text = "When Jungle Hollow enters the battlefield, you gain 1 life.";
         p.Trigger(new OnZoneChanged(to: Zone.Battlefield));
         p.Effect = () => new ChangeLife(1, whos: P(e => e.Controller));
     }));
 }
示例#18
0
 public override IEnumerable <CardTemplate> GetCards()
 {
     yield return(Card
                  .Named("Steam Vents")
                  .Type("Land - Island Mountain")
                  .Text(
                      "{T}: Add {U} or {R} to your mana pool.{EOL}As Steam Vents enters the battlefield, you may pay 2 life. If you don't, Steam Vents enters the battlefield tapped.")
                  .TriggeredAbility(p =>
     {
         p.Trigger(new OnZoneChanged(to: Zone.Battlefield));
         p.Effect = () => new PayLifeOrTapLand(2);
         p.UsesStack = false;
     })
                  .ManaAbility(p =>
     {
         p.Text = "{T}: Add {U} or {R} to your mana pool.";
         p.ManaAmount(Mana.Colored(isBlue: true, isRed: true));
     }));
 }
示例#19
0
 public override IEnumerable <CardTemplate> GetCards()
 {
     yield return(Card
                  .Named("Temple of Silence")
                  .Type("Land")
                  .Text("Temple of Silence enters the battlefield tapped.{EOL}When Temple of Silence enters the battlefield, scry 1.{I}(Look at the top card of your library. You may put that card on the bottom of your library.){/I}{EOL}{T}: Add {W} or {B} to your mana pool.")
                  .Cast(p => p.Effect = () => new CastPermanent(tap: true))
                  .ManaAbility(p =>
     {
         p.Text = "{T}: Add {W} or {B} to your mana pool.";
         p.ManaAmount(Mana.Colored(isBlack: true, isWhite: true));
     })
                  .TriggeredAbility(p =>
     {
         p.Text = "When Temple of Silence enters the battlefield, scry 1.";
         p.Trigger(new OnZoneChanged(to: Zone.Battlefield));
         p.Effect = () => new Scry(1);
     }));
 }
示例#20
0
 public override IEnumerable <CardTemplate> GetCards()
 {
     yield return(Card
                  .Named("Yavimaya Coast")
                  .Type("Land")
                  .Text(
                      "{T}: Add {1} to your mana pool.{EOL}{T}: Add {G} or {U} to your mana pool. Yavimaya Coast deals 1 damage to you.")
                  .ManaAbility(p =>
     {
         p.Text = "{T}: Add {1} to your mana pool.";
         p.ManaAmount(1.Colorless());
     })
                  .ManaAbility(p =>
     {
         p.Text = "{T}: Add {G} or {U} to your mana pool. Yavimaya Coast deals 1 damage to you.";
         p.ManaAmount(Mana.Colored(isGreen: true, isBlue: true));
         p.AdditionalEffects.Add(() => new DealDamageToPlayer(1, P(e => e.Controller)));
         p.Priority = ManaSourcePriorities.Restricted;
     }));
 }
示例#21
0
        public override IEnumerable <CardTemplate> GetCards()
        {
            yield return(Card
                         .Named("Creeping Tar Pit")
                         .Type("Land")
                         .Text(
                             "Creeping Tar Pit enters the battlefield tapped.{EOL}{T}: Add {U} or {B} to your mana pool.{EOL}{1}{U}{B}: Until end of turn, Creeping Tar Pit becomes a 3/2 blue and black Elemental creature and is unblockable. It's still a land.")
                         .Cast(p => p.Effect = () => new CastPermanent(tap: true))
                         .ManaAbility(p =>
            {
                p.Text = "{T}: Add {U} or {B} to your mana pool.";
                p.ManaAmount(Mana.Colored(isBlue: true, isBlack: true));
                p.Priority = ManaSourcePriorities.OnlyIfNecessary;
            })
                         .ActivatedAbility(p =>
            {
                p.Text =
                    "{1}{U}{B}: Until end of turn, Creeping Tar Pit becomes a 3/2 blue and black Elemental creature and is unblockable. It's still a land.";

                p.Cost = new PayMana("{1}{U}{B}".Parse());

                p.Effect = () => new ApplyModifiersToSelf(
                    () => new ChangeToCreature(
                        power: 3,
                        toughness: 2,
                        type: t => t.Add(baseTypes: "creature", subTypes: "elemental"),
                        colors: L(CardColor.Blue, CardColor.Black))
                {
                    UntilEot = true
                },
                    () => new AddSimpleAbility(Static.Unblockable)
                {
                    UntilEot = true
                });

                p.TimingRule(new WhenStackIsEmpty());
                p.TimingRule(new WhenCardHas(c => !c.Is().Creature));
                p.TimingRule(new WhenYouHaveMana(4));
                p.TimingRule(new Any(new BeforeYouDeclareAttackers(), new AfterOpponentDeclaresAttackers()));
            }));
        }
示例#22
0
        public override IEnumerable <CardTemplate> GetCards()
        {
            yield return(Card
                         .Named("Stirring Wildwood")
                         .Type("Land")
                         .Text(
                             "Stirring Wildwood enters the battlefield tapped.{EOL}{T}: Add {G} or {W} to your mana pool.{EOL}{1}{G}{W}: Until end of turn, Stirring Wildwood becomes a 3/4 green and white Elemental creature with reach. It's still a land.")
                         .Cast(p => p.Effect = () => new CastPermanent(tap: true))
                         .ManaAbility(p =>
            {
                p.Text = "{T}: Add {G} or {W} to your mana pool.";
                p.ManaAmount(Mana.Colored(isGreen: true, isWhite: true));
                p.Priority = ManaSourcePriorities.OnlyIfNecessary;
            })
                         .ActivatedAbility(p =>
            {
                p.Text =
                    "{1}{G}{W}: Until end of turn, Stirring Wildwood becomes a 3/4 green and white Elemental creature with reach. It's still a land.";
                p.Cost = new PayMana("{1}{G}{W}".Parse());

                p.Effect = () => new ApplyModifiersToSelf(
                    () => new ChangeToCreature(
                        power: 3,
                        toughness: 4,
                        colors: L(CardColor.Green, CardColor.White),
                        type: t => t.Add(baseTypes: "creature", subTypes: "elemental"))
                {
                    UntilEot = true
                },
                    () => new AddSimpleAbility(Static.Reach)
                {
                    UntilEot = true
                });

                p.TimingRule(new WhenStackIsEmpty());
                p.TimingRule(new WhenCardHas(c => !c.Is().Creature));
                p.TimingRule(new WhenYouHaveMana(4));
                p.TimingRule(new Any(new BeforeYouDeclareAttackers(), new AfterOpponentDeclaresAttackers()));
            }));
        }
示例#23
0
        public override IEnumerable <CardTemplate> GetCards()
        {
            yield return(Card
                         .Named("Dragonrage")
                         .ManaCost("{2}{R}")
                         .Type("Instant")
                         .Text("Add {R} to your mana pool for each attacking creature you control. Until end of turn, attacking creatures you control gain \"{R}: This creature gets +1/+0 until end of turn.\"")
                         .FlavorText("\"Dragons in the skies of Tarkir—for the first time, it feels like my home.\"{EOL}—Sarkhan Vol")
                         .Cast(p =>
            {
                p.Effect = () => new CompoundEffect(
                    new AddManaToPool(P(e =>
                                        Mana.Colored(ManaColor.Red, e.Controller.Battlefield.Creatures.Count(x => x.IsAttacker)))),
                    new ApplyModifiersToPermanents(
                        selector: (c, ctx) => c.Is().Creature&& c.IsAttacker && ctx.You == c.Controller,
                        modifier: () =>
                {
                    var ap = new ActivatedAbilityParameters
                    {
                        Text = "{R}: This creature gets +1/+0 until end of turn.",
                        Cost = new PayMana(Mana.Red, supportsRepetitions: true),
                        Effect = () => new ApplyModifiersToSelf(
                            () => new AddPowerAndToughness(1, 0)
                        {
                            UntilEot = true
                        }).SetTags(EffectTag.IncreasePower),
                    };

                    ap.TimingRule(new AfterYouDeclareAttackers());
                    ap.RepetitionRule(new RepeatMaxTimes());

                    return new AddActivatedAbility(new ActivatedAbility(ap));
                }));

                p.TimingRule(new AfterYouDeclareAttackers());
            }));
        }