Mnemonic Betrayal will no longer allow lands to be played from the Exile Zone.
@@ -13,7 +13,6 @@ import mage.game.events.GameEvent;
import mage.players.ManaPoolItem;
import mage.players.Player;
import mage.util.CardUtil;
-
import java.util.HashMap;
import java.util.Map;
import java.util.UUID;
@@ -26,7 +25,10 @@ public final class MnemonicBetrayal extends CardImpl {
public MnemonicBetrayal(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.SORCERY}, "{1}{U}{B}");
- // Exile all cards from all opponents' graveyards. You may cast those cards this turn, and you may spend mana as though it were mana of any type to cast those spells. At the beginning of the next end step, if any of those cards remain exiled, return them to their owner's graveyards.
+ // Exile all cards from all opponents' graveyards. You may cast those cards
+ // this turn, and you may spend mana as though it were mana of any type to cast
+ // those spells. At the beginning of the next end step, if any of those
+ // cards remain exiled, return them to their owner's graveyards.
this.getSpellAbility().addEffect(new MnemonicBetrayalExileEffect());
// Exile Mnemonic Betrayal.
@@ -72,7 +74,8 @@ class MnemonicBetrayalExileEffect extends OneShotEffect {
}
Cards cards = new CardsImpl();
Map<UUID, Integer> cardMap = new HashMap<>();
- game.getOpponents(source.getControllerId()).stream().map((playerId) -> game.getPlayer(playerId)).filter((player) -> (player != null)).forEachOrdered((player) -> {
+ game.getOpponents(source.getControllerId()).stream().map((playerId)
+ -> game.getPlayer(playerId)).filter((player) -> (player != null)).forEachOrdered((player) -> {
cards.addAll(player.getGraveyard());
});
cards.getCards(game).stream().map((card) -> {
@@ -84,7 +87,8 @@ class MnemonicBetrayalExileEffect extends OneShotEffect {
}).forEachOrdered((card) -> {
game.addEffect(new MnemonicBetrayalAnyColorEffect(card, game), source);
});
- controller.moveCardsToExile(cards.getCards(game), source, game, true, source.getSourceId(), source.getSourceObjectIfItStillExists(game).getName());
+ controller.moveCardsToExile(cards.getCards(game), source, game, true,
+ source.getSourceId(), source.getSourceObjectIfItStillExists(game).getName());
game.addDelayedTriggeredAbility(new MnemonicBetrayalDelayedTriggeredAbility(cards, cardMap), source);
return true;
}
@@ -125,7 +129,8 @@ class MnemonicBetrayalCastFromExileEffect extends AsThoughEffectImpl {
}
return objectId.equals(card.getId())
&& card.getZoneChangeCounter(game) == zoneCounter
- && affectedControllerId.equals(source.getControllerId());
+ && affectedControllerId.equals(source.getControllerId()
+ && !card.isLand()); // cast only not play
}
}
