@Override public String getText(Mode mode) { return "Name a nonland card. " + super.getText(mode); } }
@Override public boolean apply(Game game, Ability source) { String cardName = (String) game.getState().getValue(source.getSourceId().toString() + ChooseACardNameEffect.INFO_KEY); return super.applySearchAndExile(game, source, cardName, targetPointer.getFirst(game, source)); }
@Override public boolean apply(Game game, Ability source) { String cardName = (String) game.getState().getValue(source.getSourceId().toString() + ChooseACardNameEffect.INFO_KEY); return super.applySearchAndExile(game, source, cardName, targetPointer.getFirst(game, source)); }
@Override public String getText(Mode mode) { return "Name a creature card. " + super.getText(mode); }
@Override public boolean apply(Game game, Ability source) { String cardName = (String) game.getState().getValue(source.getSourceId().toString() + ChooseACardNameEffect.INFO_KEY); return super.applySearchAndExile(game, source, cardName, targetPointer.getFirst(game, source)); }
@Override public String getText(Mode mode) { StringBuilder sb = new StringBuilder(); sb.append("Exile target enchantment. If the exiled card is a God card, "); sb.append(super.getText(mode)); return sb.toString(); }
@Override public boolean apply(Game game, Ability source) { String cardName = (String) game.getState().getValue(source.getSourceId().toString() + ChooseACardNameEffect.INFO_KEY); return super.applySearchAndExile(game, source, cardName, targetPointer.getFirst(game, source)); }
@Override public String getText(Mode mode) { StringBuilder sb = new StringBuilder(); sb.append("Exile target ").append(mode.getTargets().get(0).getTargetName()).append(". "); sb.append(super.getText(mode)); return sb.toString(); } }
@Override public boolean apply(Game game, Ability source) { String cardName = (String) game.getState().getValue(source.getSourceId().toString() + ChooseACardNameEffect.INFO_KEY); Player targetPlayer = game.getPlayer(getTargetPointer().getFirst(game, source)); if (targetPlayer != null && cardName != null && !cardName.isEmpty()) { FilterCard filter = new FilterCard(); filter.add(new NamePredicate(cardName)); int cardsInHandBefore = targetPlayer.getHand().count(filter, game); boolean result = super.applySearchAndExile(game, source, cardName, targetPointer.getFirst(game, source)); int cardsExiled = cardsInHandBefore - targetPlayer.getHand().count(filter, game); if (cardsExiled > 0) { targetPlayer.drawCards(cardsExiled, game); } return result; } return false; }
@Override public String getText(Mode mode) { StringBuilder sb = new StringBuilder(); sb.append("Counter target ").append(mode.getTargets().get(0).getFilter().getMessage()).append(". "); sb.append(super.getText(mode)); return sb.toString(); } }
@Override public boolean apply(Game game, Ability source) { Player controller = game.getPlayer(source.getControllerId()); Card sourceCard = game.getCard(source.getSourceId()); if (controller != null && sourceCard != null) { Permanent targetEnchantment = game.getPermanent(getTargetPointer().getFirst(game, source)); if (targetEnchantment != null) { controller.moveCardToExileWithInfo(targetEnchantment, null, "", source.getSourceId(), game, Zone.BATTLEFIELD, true); // 4/26/2014 // Deicide looks at the card in exile, not the permanent that was exiled, to determine // if it is a God. For each of the Gods in the Theros block, it won't matter what your // devotion to its color(s) was. The card is a God card when not on the battlefield. Card cardInExile = game.getExile().getCard(targetEnchantment.getId(), game); if (cardInExile != null && cardInExile.hasSubtype(SubType.GOD, game)) { Player enchantmentController = game.getPlayer(targetEnchantment.getControllerId()); return enchantmentController != null && super.applySearchAndExile(game, source, cardInExile.getName(), enchantmentController.getId()); } } } return false; }
@Override public boolean apply(Game game, Ability source) { Player player = game.getPlayer(this.getTargetPointer().getFirst(game, source)); Player controller = game.getPlayer(source.getControllerId()); if (player != null && controller != null) { Choice cardChoice = new ChoiceImpl(); cardChoice.setChoices(CardRepository.instance.getNonLandNames()); cardChoice.clearChoice(); cardChoice.setMessage("Name a nonland card"); if (!controller.choose(Outcome.Exile, cardChoice, game)) { return false; } String cardName = cardChoice.getChoice(); MageObject sourceObject = game.getObject(source.getSourceId()); if (sourceObject != null) { game.informPlayers(sourceObject.getName() + " named card: [" + cardName + ']'); } super.applySearchAndExile(game, source, cardName, player.getId()); } return true; }
@Override public boolean apply(Game game, Ability source) { Player player = game.getPlayer(getTargetPointer().getFirst(game, source)); Player controller = game.getPlayer(source.getControllerId()); if (player != null && controller != null) { Choice cardChoice = new ChoiceImpl(); cardChoice.setChoices(CardRepository.instance.getCreatureNames()); cardChoice.clearChoice(); cardChoice.setMessage("Name a creature card"); if (!controller.choose(Outcome.Exile, cardChoice, game)) { return false; } String cardName; cardName = cardChoice.getChoice(); MageObject sourceObject = game.getObject(source.getSourceId()); if (sourceObject != null) { game.informPlayers(sourceObject.getName() + " named card: [" + cardName + ']'); } super.applySearchAndExile(game, source, cardName, player.getId()); } return true; }