From c8c7e266a3b6faddc4b6c01b03fa439eb93dcd56 Mon Sep 17 00:00:00 2001 From: Daniel Bomar Date: Fri, 26 Aug 2022 11:22:19 -0500 Subject: [PATCH] [DMU] Implemented Aether Channeler --- .../src/mage/cards/a/AetherChanneler.java | 61 +++++++++++++++++++ Mage.Sets/src/mage/sets/DominariaUnited.java | 1 + 2 files changed, 62 insertions(+) create mode 100644 Mage.Sets/src/mage/cards/a/AetherChanneler.java diff --git a/Mage.Sets/src/mage/cards/a/AetherChanneler.java b/Mage.Sets/src/mage/cards/a/AetherChanneler.java new file mode 100644 index 0000000000..f02a05d996 --- /dev/null +++ b/Mage.Sets/src/mage/cards/a/AetherChanneler.java @@ -0,0 +1,61 @@ +package mage.cards.a; + +import java.util.UUID; +import mage.MageInt; +import mage.abilities.Ability; +import mage.abilities.Mode; +import mage.abilities.common.EntersBattlefieldTriggeredAbility; +import mage.abilities.effects.common.CreateTokenEffect; +import mage.abilities.effects.common.DrawCardSourceControllerEffect; +import mage.abilities.effects.common.ReturnToHandTargetEffect; +import mage.constants.SubType; +import mage.cards.CardImpl; +import mage.cards.CardSetInfo; +import mage.constants.CardType; +import mage.filter.common.FilterNonlandPermanent; +import mage.filter.predicate.mageobject.AnotherPredicate; +import mage.game.permanent.token.BirdToken; +import mage.target.common.TargetNonlandPermanent; + +/** + * + * @author weirddan455 + */ +public final class AetherChanneler extends CardImpl { + + private static final FilterNonlandPermanent filter = new FilterNonlandPermanent("another nonland permanent"); + + static { + filter.add(AnotherPredicate.instance); + } + + public AetherChanneler(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(2); + this.toughness = new MageInt(1); + + // When Aether Channeler enters the battlefield, choose one -- + // * Create a 1/1 white Bird creature token with flying. + // * Return another target nonland permanent to its owner's hand. + // * Draw a card. + Ability ability = new EntersBattlefieldTriggeredAbility(new CreateTokenEffect(new BirdToken())); + Mode mode = new Mode(new ReturnToHandTargetEffect() + .setText("Return another target nonland permanent to its owner's hand.")); + mode.addTarget(new TargetNonlandPermanent(filter)); + ability.addMode(mode); + ability.addMode(new Mode(new DrawCardSourceControllerEffect(1))); + this.addAbility(ability); + } + + private AetherChanneler(final AetherChanneler card) { + super(card); + } + + @Override + public AetherChanneler copy() { + return new AetherChanneler(this); + } +} diff --git a/Mage.Sets/src/mage/sets/DominariaUnited.java b/Mage.Sets/src/mage/sets/DominariaUnited.java index dd30ad8def..ff8abe802a 100644 --- a/Mage.Sets/src/mage/sets/DominariaUnited.java +++ b/Mage.Sets/src/mage/sets/DominariaUnited.java @@ -34,6 +34,7 @@ public final class DominariaUnited extends ExpansionSet { cards.add(new SetCardInfo("Academy Wall", 41, Rarity.COMMON, mage.cards.a.AcademyWall.class)); cards.add(new SetCardInfo("Adarkar Wastes", 243, Rarity.RARE, mage.cards.a.AdarkarWastes.class)); + cards.add(new SetCardInfo("Aether Channeler", 42, Rarity.RARE, mage.cards.a.AetherChanneler.class)); cards.add(new SetCardInfo("Ajani, Sleeper Agent", 192, Rarity.MYTHIC, mage.cards.a.AjaniSleeperAgent.class)); cards.add(new SetCardInfo("Archangel of Wrath", 3, Rarity.RARE, mage.cards.a.ArchangelOfWrath.class)); cards.add(new SetCardInfo("Argivian Cavalier", 4, Rarity.COMMON, mage.cards.a.ArgivianCavalier.class));