Exemple #1
0
        private static Card CreateCreature(string name, int attack, int health)
        {
            Card card = new Card(name);

            card.AddComponent(new CreatureComponent(attack, health));
            card.AddAbility(new PlayCard());
            card.AddAbility(new Attack());

            return(card);
        }
Exemple #2
0
        public override Card GetCard(Player owner)
        {
            var card = new Card(owner, new[] { CardType.Land }, new[] { "Island", "Mountain" }, false, false, false);

            card._attrs = MtgCardAttribute.GetAttribute(GetType());

            card.AddAbility(new ManaAbility(card, new TapCost(card), new Common.Mana.ManaAmount(1, ManaColor.Blue), "{T}: Add {U}"));
            card.AddAbility(new ManaAbility(card, new TapCost(card), new Common.Mana.ManaAmount(1, ManaColor.Red), "{T}: Add {R}"));

            return(card);
        }
Exemple #3
0
        public override Card GetCard(Player owner)
        {
            var card = new Card(owner, new[] { CardType.Land }, new[] { "Swamp", "Forest" }, false, false, false);

            card._attrs = MtgCard;

            card.AddAbility(new ManaAbility(card, new TapCost(card), new Common.Mana.ManaAmount(1, ManaColor.Black), "{T}: Add {B}"));
            card.AddAbility(new ManaAbility(card, new TapCost(card), new Common.Mana.ManaAmount(1, ManaColor.Green), "{T}: Add {G}"));

            return(card);
        }
Exemple #4
0
        public override Card GetCard(Player owner)
        {
            var card = new Card(owner, new[] { CardType.Land }, new[] { "Plains", "Swamp" }, false, false, false);

            card._attrs = MtgCardAttribute.GetAttribute(GetType());

            card.AddAbility(new ManaAbility(card, new TapCost(card), new Common.Mana.ManaAmount(1, ManaColor.White), "{T}: Add {W}"));
            card.AddAbility(new ManaAbility(card, new TapCost(card), new Common.Mana.ManaAmount(1, ManaColor.Black), "{T}: Add {B}"));

            return(card);
        }
Exemple #5
0
        public override Card GetCard(Player owner)
        {
            var card = new Card(owner, new[] { CardType.Land }, null, false, false, false);

            card._attrs = MtgCardAttribute.GetAttribute(GetType());

            card.AddAbility(new ManaAbility(card, new TapCost(card), new Common.Mana.ManaAmount(1, ManaColor.Colorless), "{T}: Add {C}"));
            card.AddAbility(new CopyAbility(card));

            return(card);
        }
Exemple #6
0
        public override Card GetCard(Player owner)
        {
            var card = new Card(owner, new[] { CardType.Artifact }, null, false, false);

            card._attrs = MtgCardAttribute.GetAttribute(GetType());

            card.AddAbility(new ManaAbility(card, new AggregateCost(card, new TapCost(card), new SacrificeSourceCost(card)), new ManaAmount(3, ManaColor.White), "{T}, Sacrifice Black Lotus: Add {W}{W}{W}"));
            card.AddAbility(new ManaAbility(card, new AggregateCost(card, new TapCost(card), new SacrificeSourceCost(card)), new ManaAmount(3, ManaColor.Blue), "{T}, Sacrifice Black Lotus: Add {U}{U}{U}"));
            card.AddAbility(new ManaAbility(card, new AggregateCost(card, new TapCost(card), new SacrificeSourceCost(card)), new ManaAmount(3, ManaColor.Black), "{T}, Sacrifice Black Lotus: Add {B}{B}{B}"));
            card.AddAbility(new ManaAbility(card, new AggregateCost(card, new TapCost(card), new SacrificeSourceCost(card)), new ManaAmount(3, ManaColor.Red), "{T}, Sacrifice Black Lotus: Add {R}{R}{R}"));
            card.AddAbility(new ManaAbility(card, new AggregateCost(card, new TapCost(card), new SacrificeSourceCost(card)), new ManaAmount(3, ManaColor.Green), "{T}, Sacrifice Black Lotus: Add {G}{G}{G}"));

            return(card);
        }
        public override Card GetCard(Player owner)
        {
            var card = new Card(owner, new[] { CardType.Artifact, CardType.Creature }, new[] { "Myr" }, false, 2, 2, false, false);

            card._attrs = MtgCardAttribute.GetAttribute(GetType());

            card.Cost = ManaCost.Parse(card, "{3}");

            card.AddAbility(new ManaAbility(card, new TapCost(card), new Common.Mana.ManaAmount(1, ManaColor.White), "{T}: Add {W}."));
            card.AddAbility(new ManaAbility(card, new TapCost(card), new Common.Mana.ManaAmount(1, ManaColor.Blue), "{T}: Add {U}."));
            card.AddAbility(new ManaAbility(card, new TapCost(card), new Common.Mana.ManaAmount(1, ManaColor.Black), "{T}: Add {B}."));
            card.AddAbility(new ManaAbility(card, new TapCost(card), new Common.Mana.ManaAmount(1, ManaColor.Red), "{T}: Add {R}."));
            card.AddAbility(new ManaAbility(card, new TapCost(card), new Common.Mana.ManaAmount(1, ManaColor.Green), "{T}: Add {G}."));

            return(card);
        }
        public override Card GetCard(Player owner)
        {
            var card = new Card(owner, new[] { CardType.Artifact }, null, false);

            card._attrs = CardAttrs;

            card.Cost = ManaCost.Parse(card, "{3}");

            card.AddAbility(new ManaAbility(card, new AggregateCost(card, ManaCost.Parse(card, "{2}"), new TapCost(card)), new ManaAmount(1, ManaColor.White), "{2}{T}: Add {W}."));
            card.AddAbility(new ManaAbility(card, new AggregateCost(card, ManaCost.Parse(card, "{2}"), new TapCost(card)), new ManaAmount(1, ManaColor.Blue), "{2}{T}: Add {U}."));
            card.AddAbility(new ManaAbility(card, new AggregateCost(card, ManaCost.Parse(card, "{2}"), new TapCost(card)), new ManaAmount(1, ManaColor.Black), "{2}{T}: Add {B}."));
            card.AddAbility(new ManaAbility(card, new AggregateCost(card, ManaCost.Parse(card, "{2}"), new TapCost(card)), new ManaAmount(1, ManaColor.Red), "{2}{T}: Add {R}."));
            card.AddAbility(new ManaAbility(card, new AggregateCost(card, ManaCost.Parse(card, "{2}"), new TapCost(card)), new ManaAmount(1, ManaColor.Green), "{2}{T}: Add {G}."));

            return(card);
        }
        public override Card GetCard(Player owner)
        {
            var card = new Card(owner, new[] { CardType.Land }, null, false, true, true);

            card._attrs = MtgCardAttribute.GetAttribute(GetType());

            // Dark Depths enters the battlefield with 10 ice counters on it
            card.AddCounters(card, 10, CounterType.Ice);

            // {3}: Remove an ice counter from Dark Depths
            card.AddAbility(new DarkDepthsAbility(card));

            // When Dark Depths has no ice counters on it, sacrifice it. If you do, create Marit Lage, a legendary 20/20 black Avatar creature token with flying and indestructible
            card.AddAbility(new MaritLageAbility(card));

            return(card);
        }
Exemple #10
0
        public static Card CreateSoulReaper()
        {
            Card card = CreateCreature("Похититель Душ", 1, 1);

            card.AddAbility(new InstantKill());

            return(card);
        }
Exemple #11
0
        public static Card CreateLeeroyJenkins()
        {
            Card card = CreateCreature("Лерой Дженкинс", 1, 1);

            card.AddAbility(new DumpAttack(1));

            return(card);
        }
Exemple #12
0
        public static Card CreateFireball()
        {
            Card card = CreateCharm("Огненный шар");

            card.AddAbility(new Fireball(3));

            return(card);
        }
Exemple #13
0
        public static Card CreateHealer()
        {
            Card card = CreateCreature("Лекарь", 1, 3);

            card.AddAbility(new Heal(2));

            return(card);
        }
Exemple #14
0
        public static Card CreateSpearman()
        {
            Card card = CreateCreature("Копейщик", 1, 2);

            card.AddAbility(new InstantFury(3));

            return(card);
        }
Exemple #15
0
        public static Card CreateShovel()
        {
            Card card = CreateCharm("Лопата");

            card.AddAbility(new Revive());

            return(card);
        }
Exemple #16
0
        public static Card CreateBerserker()
        {
            Card card = CreateCreature("Берсеркер", 1, 4);

            card.AddAbility(new Rage(1));

            return(card);
        }
Exemple #17
0
        public static Card CreateGrace()
        {
            Card card = CreateCharm("Благодать");

            card.AddAbility(new Grace(1));

            return(card);
        }
        public override Card GetCard(Player owner)
        {
            var card = new Card(owner, new[] { CardType.Creature }, new[] { "Bird" }, false, 0, 1, false, false);

            card._attrs = MtgCard;

            card.Cost = ManaCost.Parse(card, "{G}");

            card.AddStaticAbility(StaticAbility.Flying);

            card.AddAbility(new ManaAbility(card, new TapCost(card), new Common.Mana.ManaAmount(1, ManaColor.White), "{T}: Add {W}"));
            card.AddAbility(new ManaAbility(card, new TapCost(card), new Common.Mana.ManaAmount(1, ManaColor.Blue), "{T}: Add {U}"));
            card.AddAbility(new ManaAbility(card, new TapCost(card), new Common.Mana.ManaAmount(1, ManaColor.Black), "{T}: Add {B}"));
            card.AddAbility(new ManaAbility(card, new TapCost(card), new Common.Mana.ManaAmount(1, ManaColor.Red), "{T}: Add {R}"));
            card.AddAbility(new ManaAbility(card, new TapCost(card), new Common.Mana.ManaAmount(1, ManaColor.Green), "{T}: Add {G}"));

            return(card);
        }
Exemple #19
0
        public override Card GetCard(Player owner)
        {
            var card = new Card(owner, new[] { CardType.Artifact }, null, false, false);

            card._attrs = MtgCard;

            card.Cost = ManaCost.Parse(card, "{3}");

            // {T}: Add {C}{C}{C}
            card.AddAbility(new ManaAbility(card, new TapCost(card), new ManaAmount(3, ManaColor.Colorless), "{T}: Add {C}{C}{C}"));

            // {3}: Untap Basalt Monolith
            card.AddAbility(new BasaltMonolithUntapAbility(card));

            // Basalt monolith doesn't untap during your untap step
            card.UntapsDuringUntapStep = () => false;

            return(card);
        }
Exemple #20
0
        public override Card GetCard(Player owner)
        {
            var card = new Card(owner, new[] { CardType.Artifact }, null, false, false);

            card._attrs = MtgCard;

            card.Cost = ManaCost.Parse(card, "{2}");
            card.AddAbility(new AnkhOfMishraAbility(card));

            return(card);
        }
        public override Card GetCard(Player owner)
        {
            var card = new Card(owner, new[] { CardType.Artifact }, null, false, false);

            card._attrs = MtgCardAttribute.GetAttribute(GetType());

            card.Cost = ManaCost.Parse(card, "{3}");
            card.AddAbility(new ManaAbility(card, new SacrificeCreatureCost(card), new Common.Mana.ManaAmount(2, ManaColor.Colorless), "Sacrifice a Creature: Add {C}{C}."));

            return(card);
        }
Exemple #22
0
        public override Card GetCard(Player owner)
        {
            var card = new Card(owner, new[] { CardType.Creature }, new[] { "Wurm" }, false, 7, 7, false, false);

            card._attrs = MtgCardAttribute.GetAttribute(GetType());

            card.Cost = ManaCost.Parse(card, "{5}{G}{G}");
            card.AddAbility(new EngulfingSlagwurmAbility(card));

            return(card);
        }
        public override Card GetCard(Player owner)
        {
            var card = new Card(owner, new[] { CardType.Creature }, new[] { "Harpy" }, false, 1, 2, false, false);

            card._attrs = MtgCardAttribute.GetAttribute(GetType());

            card.Cost = ManaCost.Parse(card, "{2}{B}");
            card.AddStaticAbility(StaticAbility.Flying);
            card.AddAbility(new RavenousHarpyAbility(card));

            return(card);
        }
Exemple #24
0
        protected Card GetBasicLandCard(Player owner, ManaColor color, CardType[] types, string[] subtypes, bool isSnow)
        {
            var card = new Card(owner, types, subtypes, true, 0, 0, false, isSnow);

            card._attrs = CardAttrs;
            // Basic Lands tap for 1 mana of their specific color
            var cost          = new TapCost(card);
            var manaGenerated = new ManaAmount(1, color);

            card.AddAbility(new ManaAbility(card, cost, manaGenerated, $"{cost}: Add {manaGenerated}"));

            return(card);
        }
        public override Card GetCard(Player owner)
        {
            var card = new Card(owner, new[] { CardType.Artifact, CardType.Creature }, new[] { "Myr" }, false, 1, 1, false, false);

            card._attrs = MtgCardAttribute.GetAttribute(GetType());

            card.Cost = ManaCost.Parse(card, "{2}");

            card.AddStaticAbility(StaticAbility.Infect);

            card.AddAbility(new ManaAbility(card, new TapCost(card), new Common.Mana.ManaAmount(1, ManaColor.Colorless), "{T}: Add {C}."));

            return(card);
        }
Exemple #26
0
        public override Card GetCard(Player owner)
        {
            var card = new Card(owner, new[] { CardType.Artifact }, null, false, false, false);

            card._attrs = MtgCard;

            card.Cost = ManaCost.Parse(card, "{1}");

            card.AddAbility(new BlackViseAbility(card));

            card.OnResolve = (g, c) =>
            {
                var chosenPlayer = c.Controller.ChoosePlayer("As Black Vise enters the battlefield, choose an opponent.", g.Players().Except(new[] { c.Controller }));
                c.SetVar("Chosen Player", chosenPlayer);
            };

            return(card);
        }
        public override Card GetCard(Player owner)
        {
            var card = new Card(owner, new[] { CardType.Artifact }, null, false, false);

            card._attrs = MtgCardAttribute.GetAttribute(GetType());

            card.Cost = ManaCost.Parse(card, "{X}{X}{X}");

            // This must be a new delegate every time. Otherwise we lose the card reference
            (card.Cost as ManaCost).ValueforXChosen += (x => card.SetVar("X", x));

            card.AddAbility(new AstralCornucopiaManaAbility(card));

            card.OnResolve = (g, c) =>
            {
                c.AddCounters(c, c.GetVar <int>("X"), CounterType.Charge);
            };

            return(card);
        }