diff --git a/Mage.Sets/src/mage/cards/f/FabledPassage.java b/Mage.Sets/src/mage/cards/f/FabledPassage.java new file mode 100644 index 0000000000..a1cdd2098b --- /dev/null +++ b/Mage.Sets/src/mage/cards/f/FabledPassage.java @@ -0,0 +1,90 @@ +package mage.cards.f; + +import mage.abilities.Ability; +import mage.abilities.common.SimpleActivatedAbility; +import mage.abilities.costs.common.SacrificeSourceCost; +import mage.abilities.costs.common.TapSourceCost; +import mage.abilities.effects.OneShotEffect; +import mage.cards.Card; +import mage.cards.CardImpl; +import mage.cards.CardSetInfo; +import mage.constants.CardType; +import mage.constants.Outcome; +import mage.constants.Zone; +import mage.filter.StaticFilters; +import mage.game.Game; +import mage.game.permanent.Permanent; +import mage.players.Player; +import mage.target.common.TargetCardInLibrary; + +import java.util.UUID; + +/** + * @author TheElk801 + */ +public final class FabledPassage extends CardImpl { + + public FabledPassage(UUID ownerId, CardSetInfo setInfo) { + super(ownerId, setInfo, new CardType[]{CardType.LAND}, ""); + + // {T}, Sacrifice Fabled Passage: Search your library for a basic land card, put it onto the battlefield tapped, then shuffle your library. Then if you control four or more lands, untap that land. + Ability ability = new SimpleActivatedAbility(new FabledPassageEffect(), new TapSourceCost()); + ability.addCost(new SacrificeSourceCost()); + this.addAbility(ability); + } + + private FabledPassage(final FabledPassage card) { + super(card); + } + + @Override + public FabledPassage copy() { + return new FabledPassage(this); + } +} + +class FabledPassageEffect extends OneShotEffect { + + FabledPassageEffect() { + super(Outcome.Benefit); + staticText = "Search your library for a basic land card, put it onto the battlefield tapped, " + + "then shuffle your library. Then if you control four or more lands, untap that land."; + } + + private FabledPassageEffect(final FabledPassageEffect effect) { + super(effect); + } + + @Override + public FabledPassageEffect copy() { + return new FabledPassageEffect(this); + } + + @Override + public boolean apply(Game game, Ability source) { + Player player = game.getPlayer(source.getControllerId()); + if (player == null) { + return false; + } + TargetCardInLibrary target = new TargetCardInLibrary(StaticFilters.FILTER_CARD_BASIC_LAND_A); + if (!player.searchLibrary(target, source, game)) { + return false; + } + player.shuffleLibrary(source, game); + Card card = game.getCard(target.getFirstTarget()); + if (card == null) { + return false; + } + if (!player.moveCards(card, Zone.BATTLEFIELD, source, game)) { + return false; + } + if (game.getBattlefield().countAll(StaticFilters.FILTER_LAND, source.getControllerId(), game) < 4) { + return true; + } + Permanent permanent = game.getPermanent(card.getId()); + if (permanent == null) { + return false; + } + return permanent.untap(game); + } +} diff --git a/Mage.Sets/src/mage/sets/ThroneOfEldraine.java b/Mage.Sets/src/mage/sets/ThroneOfEldraine.java index f24c7e340e..53e8e666f5 100644 --- a/Mage.Sets/src/mage/sets/ThroneOfEldraine.java +++ b/Mage.Sets/src/mage/sets/ThroneOfEldraine.java @@ -84,6 +84,7 @@ public final class ThroneOfEldraine extends ExpansionSet { cards.add(new SetCardInfo("Epic Downfall", 85, Rarity.UNCOMMON, mage.cards.e.EpicDownfall.class)); cards.add(new SetCardInfo("Escape to the Wilds", 189, Rarity.RARE, mage.cards.e.EscapeToTheWilds.class)); cards.add(new SetCardInfo("Eye Collector", 86, Rarity.COMMON, mage.cards.e.EyeCollector.class)); + cards.add(new SetCardInfo("Fabled Passage", 244, Rarity.RARE, mage.cards.f.FabledPassage.class)); cards.add(new SetCardInfo("Fae of Wishes", 44, Rarity.RARE, mage.cards.f.FaeOfWishes.class)); cards.add(new SetCardInfo("Faeburrow Elder", 190, Rarity.RARE, mage.cards.f.FaeburrowElder.class)); cards.add(new SetCardInfo("Faerie Formation", 316, Rarity.RARE, mage.cards.f.FaerieFormation.class));