@Override public CounterTargetWithReplacementEffect copy() { return new CounterTargetWithReplacementEffect(this); }
public Hinder(UUID ownerId, CardSetInfo setInfo) { super(ownerId,setInfo,new CardType[]{CardType.INSTANT},"{1}{U}{U}"); // Counter target spell. If that spell is countered this way, put that card on the top or bottom of its owner's library instead of into that player's graveyard. this.getSpellAbility().addEffect(new CounterTargetWithReplacementEffect(Zone.LIBRARY, ZoneDetail.CHOOSE)); this.getSpellAbility().addTarget(new TargetSpell()); }
public Liquify(UUID ownerId, CardSetInfo setInfo) { super(ownerId,setInfo,new CardType[]{CardType.INSTANT},"{2}{U}"); // Counter target spell with converted mana cost 3 or less. If that spell is countered this way, exile it instead of putting it into its owner's graveyard. this.getSpellAbility().addEffect(new CounterTargetWithReplacementEffect(Zone.EXILED)); this.getSpellAbility().addTarget(new TargetSpell(filter)); }
public MemoryLapse(UUID ownerId, CardSetInfo setInfo) { super(ownerId,setInfo,new CardType[]{CardType.INSTANT},"{1}{U}"); // Counter target spell. If that spell is countered this way, put it on top of its owner's library instead of into that player's graveyard. this.getSpellAbility().addEffect(new CounterTargetWithReplacementEffect(Zone.LIBRARY, ZoneDetail.TOP)); this.getSpellAbility().addTarget(new TargetSpell()); }
public Dissipate(UUID ownerId, CardSetInfo setInfo) { super(ownerId,setInfo,new CardType[]{CardType.INSTANT},"{1}{U}{U}"); // Counter target spell. If that spell is countered this way, exile it instead of putting it into its owner's graveyard. this.getSpellAbility().addEffect(new CounterTargetWithReplacementEffect(Zone.EXILED)); this.getSpellAbility().addTarget(new TargetSpell()); }
public LapseOfCertainty(UUID ownerId, CardSetInfo setInfo) { super(ownerId,setInfo,new CardType[]{CardType.INSTANT},"{2}{W}"); // Counter target spell. If that spell is countered this way, put it on top of its owner's library instead of into that player's graveyard. this.getSpellAbility().addEffect(new CounterTargetWithReplacementEffect(Zone.LIBRARY, ZoneDetail.TOP)); this.getSpellAbility().addTarget(new TargetSpell()); }
public FaerieTrickery(UUID ownerId, CardSetInfo setInfo) { super(ownerId,setInfo,new CardType[]{CardType.TRIBAL,CardType.INSTANT},"{1}{U}{U}"); this.subtype.add(SubType.FAERIE); // Counter target non-Faerie spell. If that spell is countered this way, exile it instead of putting it into its owner's graveyard. this.getSpellAbility().addEffect(new CounterTargetWithReplacementEffect(Zone.EXILED)); this.getSpellAbility().addTarget(new TargetSpell(filter)); }
public HorriblyAwry(UUID ownerId, CardSetInfo setInfo) { super(ownerId, setInfo, new CardType[]{CardType.INSTANT}, "{1}{U}"); // Devoid (This card has no color.) this.addAbility(new DevoidAbility(this.color)); // Counter target creature spell with converted mana cost 4 or less. If that spell is countered this way, exile it instead of putting it into its owner's graveyard. this.getSpellAbility().addEffect(new CounterTargetWithReplacementEffect(Zone.EXILED)); this.getSpellAbility().addTarget(new TargetSpell(filter)); }
public DenyExistence(UUID ownerId, CardSetInfo setInfo) { super(ownerId,setInfo,new CardType[]{CardType.INSTANT},"{2}{U}"); // Counter target creature spell. If that spell is countered this way, exile it instead of putting it into its owner's graveyard. this.getSpellAbility().addEffect(new CounterTargetWithReplacementEffect(Zone.EXILED)); this.getSpellAbility().addTarget(new TargetSpell(new FilterCreatureSpell())); }
public VoidShatter(UUID ownerId, CardSetInfo setInfo) { super(ownerId,setInfo,new CardType[]{CardType.INSTANT},"{1}{U}{U}"); // Devoid this.addAbility(new DevoidAbility(this.color)); // Counter target spell. If that spell is countered this way, exile it instead of putting it into its owner's graveyard. this.getSpellAbility().addEffect(new CounterTargetWithReplacementEffect(Zone.EXILED)); this.getSpellAbility().addTarget(new TargetSpell()); }
public AssertAuthority(UUID ownerId, CardSetInfo setInfo) { super(ownerId,setInfo,new CardType[]{CardType.INSTANT},"{5}{U}{U}"); // Affinity for artifacts this.addAbility(new AffinityForArtifactsAbility()); // Counter target spell. If that spell is countered this way, exile it instead of putting it into its owner's graveyard. this.getSpellAbility().addEffect(new CounterTargetWithReplacementEffect(Zone.EXILED)); this.getSpellAbility().addTarget(new TargetSpell()); }
public Remand(UUID ownerId, CardSetInfo setInfo) { super(ownerId,setInfo,new CardType[]{CardType.INSTANT},"{1}{U}"); // Counter target spell. If that spell is countered this way, put it into its owner's hand instead of into that player's graveyard. this.getSpellAbility().addEffect(new CounterTargetWithReplacementEffect(Zone.HAND)); this.getSpellAbility().addTarget(new TargetSpell()); // Draw a card. this.getSpellAbility().addEffect(new DrawCardSourceControllerEffect(1)); }
public DeviousCoverUp(UUID ownerId, CardSetInfo setInfo) { super(ownerId, setInfo, new CardType[]{CardType.INSTANT}, "{2}{U}{U}"); // Counter target spell. If that spell is countered this way, exile it instead of putting it into its owner's graveyard. this.getSpellAbility().addEffect(new CounterTargetWithReplacementEffect(Zone.EXILED)); this.getSpellAbility().addTarget(new TargetSpell()); // You may shuffle up to four target cards from your graveyard into your library. this.getSpellAbility().addEffect(new DeviousCoverUpEffect().setTargetPointer(new SecondTargetPointer())); this.getSpellAbility().addTarget(new TargetCardInYourGraveyard(0, 4)); }
@Override public boolean apply(Game game, Ability source) { Player controller = game.getPlayer(source.getControllerId()); Spell spell = game.getStack().getSpell(getTargetPointer().getFirst(game, source)); if (controller != null && spell != null) { Effect effect = new CounterTargetWithReplacementEffect(Zone.EXILED); effect.setTargetPointer(targetPointer); Card card = game.getCard(spell.getSourceId()); if (card != null && effect.apply(game, source) && game.getState().getZone(card.getId()) == Zone.EXILED) { boolean hasSuspend = card.getAbilities().containsClass(SuspendAbility.class); UUID exileId = SuspendAbility.getSuspendExileId(controller.getId(), game); if (controller.moveCardToExileWithInfo(card, exileId, "Suspended cards of " + controller.getLogName(), source.getSourceId(), game, Zone.HAND, true)) { card.addCounters(CounterType.TIME.createInstance(3), source, game); if (!hasSuspend) { game.addEffect(new GainSuspendEffect(new MageObjectReference(card, game)), source); } game.informPlayers(controller.getLogName() + " suspends 3 - " + card.getName()); } } return true; } return false; } }