Package mage.cards

Examples of mage.cards.CardsImpl


                        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();
View Full Code Here


            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());
                            } else {
                                card.moveToZone(targetPickedCards, source.getSourceId(), game, false);
                                game.informPlayers(player.getName() + " moves a card to " + targetPickedCards.toString().toLowerCase());
                            }
                            if (revealPickedCards) {
                                reveal.add(card);
                            }
                        }
                    }
                    if (revealPickedCards) {
                        player.revealCards(windowName, reveal, game);
View Full Code Here

    }

    @Override
    public boolean apply(Game game, Ability source) {
        Player player = game.getPlayer(source.getControllerId());
        Cards cards = new CardsImpl(Zone.PICK);
        int count = Math.min(player.getLibrary().size(), 4);
        for (int i = 0; i < count; i++) {
            Card card = player.getLibrary().removeFromTop(game);
            cards.add(card);
            game.setZone(card.getId(), Zone.PICK);
        }

        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);
        }

        return true;
    }
View Full Code Here

            if (filtered.isEmpty()) {
                game.informPlayer(player, "You have no " + filterCard.getMessage() + " outside the game.");
                return false;
            }
           
            Cards filteredCards = new CardsImpl();
            for (Card card : filtered) {
                filteredCards.add(card.getId());
            }

            TargetCard target = new TargetCard(Zone.PICK, filterCard);
            if (player.choose(Outcome.Benefit, filteredCards, target, game)) {
                Card card = player.getSideboard().get(target.getFirstTarget(), game);
View Full Code Here

                return false;
            }

            ExileZone exile = game.getExile().getExileZone(CardUtil.getCardExileZoneId(game, source));
            if (exile != null && exile.contains(sourceId)) {
                Cards cards = new CardsImpl(card);
                Player controller = game.getPlayer(source.getControllerId());
                if (controller != null) {
                    // only the controller can see the card, so return always false
                    controller.lookAtCards("Exiled with " + sourceCard.getName(), cards, game);
                }
View Full Code Here

            Permanent permanent = game.getPermanent(event.getTargetId());
            if (permanent != null && permanent.getCardType().contains(CardType.CREATURE)) {
                if (permanent.getAbilities().contains(SoulbondAbility.getInstance())) {
                    Player controller = game.getPlayer(permanent.getControllerId());
                    if (controller != null) {
                        Cards cards = new CardsImpl();
                        cards.add(permanent);
                        controller.lookAtCards("Soulbond", cards, game);
                        if (controller.chooseUse(Outcome.Benefit, "Use Soulbond?", game)) {
                            TargetControlledPermanent target = new TargetControlledPermanent(filter);
                            target.setNotTarget(true);
                            if (target.canChoose(permanent.getId(), controller.getId(), game)) {
                                if (controller.choose(Outcome.Benefit, target, permanent.getId(), game)) {
                                    Permanent chosen = game.getPermanent(target.getFirstTarget());
                                    if (chosen != null) {
                                        chosen.setPairedCard(permanent.getId());
                                        permanent.setPairedCard(chosen.getId());
                                        game.informPlayers(new StringBuilder(controller.getName()).append(" souldbonds ").append(permanent.getLogName()).append(" with ").append(chosen.getName()).toString());
                                    }
                                }
                            }
                        }
                    }
                }

                // if still unpaired
                if (permanent.getPairedCard() == null) {
                    // try to find creature with Soulbond and unpaired
                    Player controller = null;
                    for (Permanent chosen : game.getBattlefield().getActivePermanents(filter, permanent.getControllerId(), permanent.getId(), game)) {
                        if (!chosen.getId().equals(permanent.getId()) && chosen.getAbilities().contains(SoulbondAbility.getInstance()) && chosen.getPairedCard() == null) {
                            if (controller == null) {
                                controller = game.getPlayer(permanent.getControllerId());
                            }
                            if (controller != null) {
                                Cards cards = new CardsImpl();
                                cards.add(chosen);
                                controller.lookAtCards("Soulbond", cards, game);
                                if (controller.chooseUse(Outcome.Benefit, "Use Soulbond for recent " + permanent.getLogName() + "?", game)) {
                                    chosen.setPairedCard(permanent.getId());
                                    permanent.setPairedCard(chosen.getId());
                                    game.informPlayers(new StringBuilder(controller.getName()).append(" souldbonds ").append(permanent.getLogName()).append(" with ").append(chosen.getName()).toString());
View Full Code Here

                    boolean topOpponent = true;
                    // Reveal top cards of involved players
                    StringBuilder message = new StringBuilder("Clash: ");
                    message.append(controller.getName());
                    if (controller.getLibrary().size() > 0) {                       
                        Cards cards = new CardsImpl();
                        cardController = controller.getLibrary().getFromTop(game);
                        cards.add(cardController);
                        controller.revealCards("for clash by " + controller.getName(), cards, game);
                        cmcController = cardController.getManaCost().convertedManaCost();
                        message.append(" (").append(cmcController).append(")");
                    } else {
                        message.append(" no card");
                    }
                    message.append(" vs. ").append(opponent.getName());
                    if (opponent.getLibrary().size() > 0) {
                        Cards cards = new CardsImpl();
                        cardOpponent = opponent.getLibrary().getFromTop(game);
                        cards.add(cardOpponent);
                        opponent.revealCards("for clash by " + opponent.getName(), cards, game);
                        cmcOpponent = cardOpponent.getManaCost().convertedManaCost();
                        message.append(" (").append(cmcOpponent).append(")");
                    } else {
                        message.append(" no card");
View Full Code Here

        this.put(name, cards.copy());
    }

    public Cards createLookedAt(String name) {
        if (!this.containsKey(name)) {
            this.put(name, new CardsImpl());
        }
        return this.get(name);
    }
View Full Code Here

        MageObject sourceObject = game.getObject(source.getSourceId());
        if (sourceCard != null) {
            Player player = game.getPlayer(sourceCard.getOwnerId());
            if (player != null) {
                Zone fromZone = game.getState().getZone(sourceCard.getId());
                Cards cards = new CardsImpl();
                cards.add(sourceCard);
                player.revealCards(sourceObject.getLogName(), cards, game);
                player.moveCardToLibraryWithInfo(sourceCard, source.getSourceId(), game, fromZone, true, true);
                player.shuffleLibrary(game);
                return true;
            }
View Full Code Here

        FilterControlledPermanent filter = new FilterControlledPermanent();
        filter.add(new SubtypePredicate("Ally"));

        int numberOfAllies = game.getBattlefield().countAll(filter, you.getId(), game);

        Cards cardsInHand = new CardsImpl(Zone.PICK);
        cardsInHand.addAll(targetPlayer.getHand());

        int count = Math.min(cardsInHand.size(), numberOfAllies);

        TargetCard target = new TargetCard(count, Zone.PICK, new FilterCard());
        Cards revealedCards = new CardsImpl();

        if (targetPlayer.choose(Outcome.DrawCard, cardsInHand, target, game)) {
            List<UUID> targets = target.getTargets();
            for (UUID targetId : targets) {
                Card card = game.getCard(targetId);
                if (card != null) {
                    revealedCards.add(card);
                }
            }
        }

        TargetCard targetInHand = new TargetCard(Zone.PICK, new FilterCard("card to discard"));

        if (!revealedCards.isEmpty()) {
            targetPlayer.revealCards("Bala Ged Thief", revealedCards, game);
            you.choose(Outcome.Neutral, revealedCards, targetInHand, game);
            Card card = revealedCards.get(targetInHand.getFirstTarget(), game);
            if (card != null) {
                targetPlayer.discard(card, source, game);
                game.informPlayers(new StringBuilder("Bala Ged Thief: ").append(targetPlayer.getName()).append(" discarded ").append(card.getName()).toString());
            }
        }
View Full Code Here

TOP

Related Classes of mage.cards.CardsImpl

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.