Package mage.target

Examples of mage.target.TargetCard


    for (int i = 0; i < scryNumber; i++) {
      Card card = player.getLibrary().removeFromTop(game);
      cards.add(card);
      game.setZone(card.getId(), Zone.PICK);
    }
    TargetCard target1 = new TargetCard(Zone.PICK, filter1);
    while (cards.size() > 0 && player.choose(cards, target1, game)) {
      Card card = cards.get(target1.getFirstTarget(), game);
      cards.remove(card);
      card.moveToZone(Zone.LIBRARY, source.getId(), game, false);
      target1.clearChosen();
    }
    if (cards.size() > 1) {
      TargetCard target2 = new TargetCard(Zone.PICK, filter2);
      target2.setRequired(true);
      while (cards.size() > 1) {
        player.choose(cards, target2, game);
        Card card = cards.get(target2.getFirstTarget(), game);
        cards.remove(card);
        card.moveToZone(Zone.LIBRARY, source.getId(), game, true);
        target2.clearChosen();
      }
    }
    if (cards.size() == 1) {
      Card card = cards.get(cards.iterator().next(), game);
      card.moveToZone(Zone.LIBRARY, source.getId(), game, true);
View Full Code Here


        Card card = player.getLibrary().remove(cardId, game);
        revealed.add(card);
      }
      player.revealCards(revealed, game);
      if (target.getTargets().size() == 2) {
        TargetCard target2 = new TargetCard(Zone.PICK, filter);
        target2.setRequired(true);
        player.choose(revealed, target2, game);
        Card card = revealed.get(target2.getFirstTarget(), game);
        card.putOntoBattlefield(game, Zone.LIBRARY, source.getId(), source.getControllerId());
        revealed.remove(card);
        Permanent permanent = game.getPermanent(card.getId());
        if (permanent != null)
          permanent.setTapped(true);
View Full Code Here

  @Override
  public boolean apply(Game game, Ability source) {
    Player player = game.getPlayer(source.getControllerId());
    player.drawCards(2, game);
    if (player.getHand().size() > 0) {
      TargetCard target = new TargetCard(Zone.HAND, filter);
      target.setRequired(true);
      player.choose(player.getHand(), target, game);
      Card card = player.getHand().get(target.getFirstTarget(), game);
      if (card != null) {
        player.removeFromHand(card, game);
        card.moveToZone(Zone.LIBRARY, source.getId(), game, true);
        player.getLibrary().shuffle();
        return true;
View Full Code Here

        cards.add(card);
        game.setZone(card.getId(), Zone.PICK);
        card = player.getLibrary().removeFromTop(game);
        cards.add(card);
        game.setZone(card.getId(), Zone.PICK);
        TargetCard target = new TargetCard(Zone.PICK, filter);
        target.setRequired(true);
        player.lookAtCards(cards, game);
        player.choose(cards, target, game);
        card = cards.get(target.getFirstTarget(), game);
        if (card != null) {
          card.moveToZone(Zone.HAND, source.getId(), game, false);
          cards.remove(card);
        }
        for (Card card1: cards.getCards(game)) {
View Full Code Here

            }
            for (int i = 0; i < count; i++) {
                Card card = player.getLibrary().removeFromTop(game);
                cards.add(card);
            }
            TargetCard target1 = new TargetCard(Zone.LIBRARY, filter1);
            target1.setRequired(false);
            // move cards to the bottom of the library
            while (player.isInGame() && cards.size() > 0 && player.choose(Outcome.Detriment, cards, target1, game)) {
                Card card = cards.get(target1.getFirstTarget(), game);
                if (card != null) {
                    cards.remove(card);
                    player.moveCardToLibraryWithInfo(card, source.getSourceId(), game, Zone.LIBRARY, false, false);
                }
                target1.clearChosen();
            }
            // move cards to the top of the library
            player.putCardsOnTopOfLibrary(cards, game, source, true);
            game.fireEvent(new GameEvent(GameEvent.EventType.SCRY, source.getControllerId(), source.getSourceId(), source.getControllerId()));
            player.setTopCardRevealed(revealed);
View Full Code Here

               
                boolean result = true;
                int filteredCardsCount = revealedCards.count(filter, source.getSourceId(), source.getControllerId(), game);
                int numberToDiscard = Math.min(this.numberCardsToDiscard.calculate(game, source, this), filteredCardsCount);
                if (numberToDiscard > 0) {
                    TargetCard target = new TargetCard(numberToDiscard, Zone.HAND, filter);
                    if (controller.choose(Outcome.Benefit, revealedCards, target, game)) {
                        for (Object targetId : target.getTargets()) {
                            Card card = revealedCards.get((UUID) targetId, game);
                            if (card != null) {
                                if (!player.discard(card, source, game)) {
                                    result = false;
                                }
View Full Code Here

                // cards in Graveyard
                int cardsCount = (cardName.isEmpty() ? 0 :targetPlayer.getGraveyard().count(filter, game));
                if (cardsCount > 0) {
                    filter.setMessage("card named " + cardName + " in the graveyard of " + targetPlayer.getName());
                    TargetCard target = new TargetCard((graveyardExileOptional ? 0 :cardsCount), cardsCount,Zone.GRAVEYARD, filter);
                    if (controller.choose(Outcome.Exile, targetPlayer.getGraveyard(), target, game)) {
                        List<UUID> targets = target.getTargets();
                        for (UUID targetId : targets) {
                            Card targetCard = targetPlayer.getGraveyard().get(targetId, game);
                            if (targetCard != null) {
                                targetPlayer.getGraveyard().remove(targetCard);
                                controller.moveCardToExileWithInfo(targetCard, null, null, source.getSourceId(), game, Zone.GRAVEYARD);
                            }
                        }
                    }
                }

                // cards in Hand
                cardsCount = (cardName.isEmpty() ? 0 :targetPlayer.getHand().count(filter, game));
                if (cardsCount > 0) {
                    filter.setMessage("card named " + cardName + " in the hand of " + targetPlayer.getName());
                    TargetCard target = new TargetCard(0, cardsCount, Zone.HAND, filter);
                    if (controller.choose(Outcome.Exile, targetPlayer.getHand(), target, game)) {
                        List<UUID> targets = target.getTargets();
                        for (UUID targetId : targets) {
                            Card targetCard = targetPlayer.getHand().get(targetId, game);
                            if (targetCard != null) {
                                targetPlayer.getHand().remove(targetCard);
                                controller.moveCardToExileWithInfo(targetCard, null, null, source.getSourceId(), game, Zone.HAND);
                            }
                        }
                    }
                } else {
                    if (targetPlayer.getHand().size() > 0) {
                        controller.lookAtCards(targetPlayer.getName() + " hand", targetPlayer.getHand(), game);
                    }
                }

                // cards in Library
                Cards cardsInLibrary = new CardsImpl(Zone.LIBRARY);
                cardsInLibrary.addAll(targetPlayer.getLibrary().getCards(game));
                cardsCount = (cardName.isEmpty() ? 0 : cardsInLibrary.count(filter, game));
                if (cardsCount > 0) {
                    filter.setMessage("card named " + cardName + " in the library of " + targetPlayer.getName());
                    TargetCardInLibrary target = new TargetCardInLibrary(0, cardsCount, filter);
                    if (controller.choose(Outcome.Exile, cardsInLibrary, target, game)) {
                        List<UUID> targets = target.getTargets();
                        for (UUID targetId : targets) {
                            Card targetCard = targetPlayer.getLibrary().remove(targetId, game);
                            if (targetCard != null) {
                                controller.moveCardToExileWithInfo(targetCard, null, null, source.getSourceId(), game, Zone.LIBRARY);
                            }
View Full Code Here

        Player player = game.getPlayer(source.getControllerId());
        if (player != null && foundCardsToPick > 0) {
            if (!optional || player.chooseUse(Outcome.DrawCard, getMayText(), game)) {
                FilterCard pickFilter = filter.copy();
                pickFilter.setMessage(getPickText());
                TargetCard target = new TargetCard((upTo ? 0:numberToPick.calculate(game, source, this)),numberToPick.calculate(game, source, this), Zone.PICK, pickFilter);
                if (player.choose(Outcome.DrawCard, cards, target, game)) {
                    Cards reveal = new CardsImpl();
                    for (UUID cardId : (List<UUID>)target.getTargets()) {
                        Card card = cards.get(cardId, game);
                        if (card != null) {
                            cards.remove(card);
                            if (targetZoneLookedCards.equals(Zone.BATTLEFIELD)) {
                                player.putOntoBattlefieldWithInfo(card, game, Zone.LIBRARY, source.getSourceId());
View Full Code Here

        Player controller = game.getPlayer(source.getControllerId());
        Player opponent = game.getPlayer(source.getFirstTarget());
        if (controller != null && opponent != null) {
            if (!opponent.getHand().isEmpty()) {
                opponent.revealCards("Exile " + filter.getMessage(), opponent.getHand(), game);
                TargetCard target = new TargetCard(Zone.HAND, filter);
                if (controller.choose(Outcome.Exile, opponent.getHand(), target, game)) {
                    Card card = opponent.getHand().get(target.getFirstTarget(), game);
                    if (card != null) {
                        controller.moveCardToExileWithInfo(card, null, "", source.getSourceId(), game, Zone.HAND);
                    }
                }
            }
View Full Code Here

        Permanent hideawaySource = game.getPermanent(source.getSourceId());
        if (cards.size() == 0 || hideawaySource == null) {
            return false;
        }

        TargetCard target1 = new TargetCard(Zone.PICK, filter1);
        if (player.choose(Outcome.Detriment, cards, target1, game)) {
            Card card = cards.get(target1.getFirstTarget(), game);
            if (card != null) {
                cards.remove(card);
                card.setFaceDown(true);
                card.moveToExile(CardUtil.getCardExileZoneId(game, source),
                        new StringBuilder("Hideaway (").append(hideawaySource.getName()).append(")").toString(),
                        source.getSourceId(), game);
            }
            target1.clearChosen();
        }

        if (cards.size() > 0) {
            TargetCard target2 = new TargetCard(Zone.PICK, filter2);
            while (player.isInGame() && cards.size() > 1) {
                player.choose(Outcome.Benefit, cards, target2, game);
                Card card = cards.get(target2.getFirstTarget(), game);
                if (card != null) {
                    cards.remove(card);
                    card.moveToZone(Zone.LIBRARY, source.getSourceId(), game, false);
                }
                target2.clearChosen();
            }
            Card card = cards.get(cards.iterator().next(), game);
            card.moveToZone(Zone.LIBRARY, source.getSourceId(), game, false);
        }
View Full Code Here

TOP

Related Classes of mage.target.TargetCard

Copyright © 2018 www.massapicom. All rights reserved.
All source code are property of their respective owners. Java is a trademark of Sun Microsystems, Inc and owned by ORACLE Inc. Contact coftware#gmail.com.