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])); }
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])); }
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])); }
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()); })); }
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())); })); }
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)); })); }
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)); })); }
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)); })); }
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)); })); }
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)); })); }
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)); })); }
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)); })); }
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)); })); }
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)); })); }
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)); })); }
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)); })); }
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)); })); }
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)); })); }
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); })); }
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; })); }
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())); })); }
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())); })); }
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()); })); }