From 3aa7eba1fe1570204bca16468c415f4681a1b19c Mon Sep 17 00:00:00 2001 From: theelk801 Date: Tue, 4 Apr 2023 09:07:19 -0400 Subject: [PATCH] [MOM] Implement Khenra Spellspear / Gitaxian Spellstaker --- .../mage/cards/g/GitaxianSpellstalker.java | 52 +++++++++++++++++++ .../src/mage/cards/k/KhenraSpellspear.java | 50 ++++++++++++++++++ .../src/mage/sets/MarchOfTheMachine.java | 2 + 3 files changed, 104 insertions(+) create mode 100644 Mage.Sets/src/mage/cards/g/GitaxianSpellstalker.java create mode 100644 Mage.Sets/src/mage/cards/k/KhenraSpellspear.java diff --git a/Mage.Sets/src/mage/cards/g/GitaxianSpellstalker.java b/Mage.Sets/src/mage/cards/g/GitaxianSpellstalker.java new file mode 100644 index 0000000000..5f6f4717dc --- /dev/null +++ b/Mage.Sets/src/mage/cards/g/GitaxianSpellstalker.java @@ -0,0 +1,52 @@ +package mage.cards.g; + +import mage.MageInt; +import mage.abilities.costs.mana.ManaCostsImpl; +import mage.abilities.keyword.ProwessAbility; +import mage.abilities.keyword.TrampleAbility; +import mage.abilities.keyword.WardAbility; +import mage.cards.CardImpl; +import mage.cards.CardSetInfo; +import mage.constants.CardType; +import mage.constants.SubType; + +import java.util.UUID; + +/** + * @author TheElk801 + */ +public final class GitaxianSpellstalker extends CardImpl { + + public GitaxianSpellstalker(UUID ownerId, CardSetInfo setInfo) { + super(ownerId, setInfo, new CardType[]{CardType.CREATURE}, ""); + + this.subtype.add(SubType.PHYREXIAN); + this.subtype.add(SubType.JACKAL); + this.power = new MageInt(3); + this.toughness = new MageInt(3); + this.color.setBlue(true); + this.color.setRed(true); + this.nightCard = true; + + // Trample + this.addAbility(TrampleAbility.getInstance()); + + // Ward {2} + this.addAbility(new WardAbility(new ManaCostsImpl<>("{2}"))); + + // Prowess + this.addAbility(new ProwessAbility()); + + // Prowess + this.addAbility(new ProwessAbility()); + } + + private GitaxianSpellstalker(final GitaxianSpellstalker card) { + super(card); + } + + @Override + public GitaxianSpellstalker copy() { + return new GitaxianSpellstalker(this); + } +} diff --git a/Mage.Sets/src/mage/cards/k/KhenraSpellspear.java b/Mage.Sets/src/mage/cards/k/KhenraSpellspear.java new file mode 100644 index 0000000000..c7f6e66c63 --- /dev/null +++ b/Mage.Sets/src/mage/cards/k/KhenraSpellspear.java @@ -0,0 +1,50 @@ +package mage.cards.k; + +import mage.MageInt; +import mage.abilities.common.ActivateAsSorceryActivatedAbility; +import mage.abilities.costs.mana.ManaCostsImpl; +import mage.abilities.effects.common.TransformSourceEffect; +import mage.abilities.keyword.ProwessAbility; +import mage.abilities.keyword.TrampleAbility; +import mage.abilities.keyword.TransformAbility; +import mage.cards.CardImpl; +import mage.cards.CardSetInfo; +import mage.constants.CardType; +import mage.constants.SubType; + +import java.util.UUID; + +/** + * @author TheElk801 + */ +public final class KhenraSpellspear extends CardImpl { + + public KhenraSpellspear(UUID ownerId, CardSetInfo setInfo) { + super(ownerId, setInfo, new CardType[]{CardType.CREATURE}, "{1}{R}"); + + this.subtype.add(SubType.JACKAL); + this.subtype.add(SubType.WARRIOR); + this.power = new MageInt(2); + this.toughness = new MageInt(2); + this.secondSideCardClazz = mage.cards.g.GitaxianSpellstalker.class; + + // Trample + this.addAbility(TrampleAbility.getInstance()); + + // Prowess + this.addAbility(new ProwessAbility()); + + // {3}{U/P}: Transform Khenra Spellspear. Activate only as a sorcery. + this.addAbility(new TransformAbility()); + this.addAbility(new ActivateAsSorceryActivatedAbility(new TransformSourceEffect(), new ManaCostsImpl<>("{3}{U/P}"))); + } + + private KhenraSpellspear(final KhenraSpellspear card) { + super(card); + } + + @Override + public KhenraSpellspear copy() { + return new KhenraSpellspear(this); + } +} diff --git a/Mage.Sets/src/mage/sets/MarchOfTheMachine.java b/Mage.Sets/src/mage/sets/MarchOfTheMachine.java index ad5b7ac77f..734c8c4ae0 100644 --- a/Mage.Sets/src/mage/sets/MarchOfTheMachine.java +++ b/Mage.Sets/src/mage/sets/MarchOfTheMachine.java @@ -58,6 +58,7 @@ public final class MarchOfTheMachine extends ExpansionSet { cards.add(new SetCardInfo("Forest", 281, Rarity.LAND, mage.cards.basiclands.Forest.class, NON_FULL_USE_VARIOUS)); cards.add(new SetCardInfo("Furnace Gremlin", 139, Rarity.UNCOMMON, mage.cards.f.FurnaceGremlin.class)); cards.add(new SetCardInfo("Gift of Compleation", 106, Rarity.UNCOMMON, mage.cards.g.GiftOfCompleation.class)); + cards.add(new SetCardInfo("Gitaxian Spellstalker", 151, Rarity.UNCOMMON, mage.cards.g.GitaxianSpellstalker.class)); cards.add(new SetCardInfo("Glissa, Herald of Predation", 226, Rarity.RARE, mage.cards.g.GlissaHeraldOfPredation.class)); cards.add(new SetCardInfo("Glistening Dawn", 187, Rarity.RARE, mage.cards.g.GlisteningDawn.class)); cards.add(new SetCardInfo("Glistening Deluge", 107, Rarity.UNCOMMON, mage.cards.g.GlisteningDeluge.class)); @@ -71,6 +72,7 @@ public final class MarchOfTheMachine extends ExpansionSet { cards.add(new SetCardInfo("Island", 278, Rarity.LAND, mage.cards.basiclands.Island.class, NON_FULL_USE_VARIOUS)); cards.add(new SetCardInfo("Joyful Stormsculptor", 243, Rarity.UNCOMMON, mage.cards.j.JoyfulStormsculptor.class)); cards.add(new SetCardInfo("Jungle Hollow", 270, Rarity.COMMON, mage.cards.j.JungleHollow.class)); + cards.add(new SetCardInfo("Khenra Spellspear", 151, Rarity.UNCOMMON, mage.cards.k.KhenraSpellspear.class)); cards.add(new SetCardInfo("Kroxa and Kunoros", 245, Rarity.MYTHIC, mage.cards.k.KroxaAndKunoros.class)); cards.add(new SetCardInfo("Lithomantic Barrage", 152, Rarity.UNCOMMON, mage.cards.l.LithomanticBarrage.class)); cards.add(new SetCardInfo("Merciless Repurposing", 117, Rarity.UNCOMMON, mage.cards.m.MercilessRepurposing.class));