diff --git a/Mage.Sets/src/mage/cards/s/SparkshaperVisionary.java b/Mage.Sets/src/mage/cards/s/SparkshaperVisionary.java new file mode 100644 index 00000000000..22e6fd74b32 --- /dev/null +++ b/Mage.Sets/src/mage/cards/s/SparkshaperVisionary.java @@ -0,0 +1,100 @@ +package mage.cards.s; + +import mage.MageInt; +import mage.abilities.TriggeredAbility; +import mage.abilities.common.BeginningOfCombatTriggeredAbility; +import mage.abilities.common.DealsCombatDamageToAPlayerTriggeredAbility; +import mage.abilities.effects.common.continuous.BecomesCreatureTargetEffect; +import mage.abilities.effects.keyword.ScryEffect; +import mage.abilities.keyword.FlyingAbility; +import mage.abilities.keyword.HexproofAbility; +import mage.cards.CardImpl; +import mage.cards.CardSetInfo; +import mage.constants.CardType; +import mage.constants.Duration; +import mage.constants.SubType; +import mage.constants.TargetController; +import mage.filter.common.FilterControlledPermanent; +import mage.filter.common.FilterControlledPlaneswalkerPermanent; +import mage.game.permanent.token.TokenImpl; +import mage.target.common.TargetControlledPermanent; + +import java.util.UUID; + +/** + * @author Susucr + */ +public final class SparkshaperVisionary extends CardImpl { + + public static final FilterControlledPermanent filter = + new FilterControlledPlaneswalkerPermanent("planeswalkers you control"); + + public SparkshaperVisionary(UUID ownerId, CardSetInfo setInfo) { + super(ownerId, setInfo, new CardType[]{CardType.CREATURE}, "{2}{U}"); + + this.subtype.add(SubType.HUMAN); + this.subtype.add(SubType.WIZARD); + this.power = new MageInt(0); + this.toughness = new MageInt(5); + + // At the beginning of combat on your turn, choose any number of target planeswalkers you control. Until end of turn, they become 3/3 blue Bird creatures with flying, hexproof, and "Whenever this creature deals combat damage to a player, scry 1." + TriggeredAbility triggeredAbility = + new BeginningOfCombatTriggeredAbility( + new BecomesCreatureTargetEffect( + new SparkshaperVisionaryToken(), + false, false, Duration.EndOfTurn, + false, true, true + ).setText("choose any number of target planeswalkers you control. Until end of turn, " + + "they become 3/3 blue Bird creatures with flying, hexproof, and " + + "\"Whenever this creature deals combat damage to a player, scry 1.\"" + + " (They're no longer planeswalkers. Loyalty abilities can still be activated.)"), + TargetController.YOU, + false + ); + + triggeredAbility.addTarget( + new TargetControlledPermanent(0, Integer.MAX_VALUE, + filter, false + ) + ); + + this.addAbility(triggeredAbility); + } + + private SparkshaperVisionary(final SparkshaperVisionary card) { + super(card); + } + + @Override + public SparkshaperVisionary copy() { + return new SparkshaperVisionary(this); + } +} + +class SparkshaperVisionaryToken extends TokenImpl { + + SparkshaperVisionaryToken() { + super("", "3/3 blue Bird creatures with flying, hexproof, and " + + "\"Whenever this creature deals combat damage to a player, scry 1.\""); + cardType.add(CardType.CREATURE); + subtype.add(SubType.BIRD); + color.setBlue(true); + this.power = new MageInt(3); + this.toughness = new MageInt(3); + this.addAbility(FlyingAbility.getInstance()); + this.addAbility(HexproofAbility.getInstance()); + + this.addAbility(new DealsCombatDamageToAPlayerTriggeredAbility( + new ScryEffect(1, false), + false + )); + } + + private SparkshaperVisionaryToken(final SparkshaperVisionaryToken token) { + super(token); + } + + public SparkshaperVisionaryToken copy() { + return new SparkshaperVisionaryToken(this); + } +} diff --git a/Mage.Sets/src/mage/sets/CommanderMasters.java b/Mage.Sets/src/mage/sets/CommanderMasters.java index fdfb7af7d95..46c76e9b72a 100644 --- a/Mage.Sets/src/mage/sets/CommanderMasters.java +++ b/Mage.Sets/src/mage/sets/CommanderMasters.java @@ -581,6 +581,7 @@ public final class CommanderMasters extends ExpansionSet { cards.add(new SetCardInfo("Soul of New Phyrexia", 974, Rarity.MYTHIC, mage.cards.s.SoulOfNewPhyrexia.class)); cards.add(new SetCardInfo("Sower of Discord", 187, Rarity.RARE, mage.cards.s.SowerOfDiscord.class)); cards.add(new SetCardInfo("Spark Double", 856, Rarity.RARE, mage.cards.s.SparkDouble.class)); + cards.add(new SetCardInfo("Sparkshaper Visionary", 726, Rarity.RARE, mage.cards.s.SparkshaperVisionary.class)); cards.add(new SetCardInfo("Spatial Contortion", 809, Rarity.UNCOMMON, mage.cards.s.SpatialContortion.class)); cards.add(new SetCardInfo("Spectator Seating", 427, Rarity.RARE, mage.cards.s.SpectatorSeating.class)); cards.add(new SetCardInfo("Spectral Grasp", 58, Rarity.COMMON, mage.cards.s.SpectralGrasp.class));