Search in sources :

Example 1 with TargetCard

use of mage.target.TargetCard in project mage by magefree.

the class BoosterTutorEffect method apply.

@Override
public boolean apply(Game game, Ability source) {
    ChooseExpansionSetEffect effect = new ChooseExpansionSetEffect(Outcome.UnboostCreature);
    effect.apply(game, source);
    Player controller = game.getPlayer(source.getControllerId());
    String setChosen = null;
    if (effect.getValue("setchosen") != null) {
        setChosen = (String) effect.getValue("setchosen");
    } else if (game.getState().getValue(this.getId() + "_set") != null) {
        setChosen = (String) game.getState().getValue(this.getId() + "_set");
    }
    if (setChosen != null && controller != null) {
        // ExpansionInfo set = ExpansionRepository.instance.getSetByName(setChosen);
        ExpansionSet expansionSet = Sets.findSet(setChosen);
        if (expansionSet != null) {
            List<Card> boosterPack = expansionSet.create15CardBooster();
            if (boosterPack != null) {
                StringBuilder message = new StringBuilder(controller.getLogName()).append(" opened: ");
                for (Card card : boosterPack) {
                    message.append(card.getName()).append(" ");
                }
                game.informPlayers(message.toString());
                TargetCard targetCard = new TargetCard(Zone.ALL, new FilterCard());
                Set<Card> cardsToLoad = new HashSet<Card>(boosterPack);
                game.loadCards(cardsToLoad, controller.getId());
                CardsImpl cards = new CardsImpl();
                cards.addAll(boosterPack);
                if (controller.choose(Outcome.Benefit, cards, targetCard, game)) {
                    Card card = game.getCard(targetCard.getFirstTarget());
                    if (card != null) {
                        controller.moveCards(card, Zone.HAND, source, game);
                    }
                }
            }
        }
        return true;
    }
    return false;
}
Also used : FilterCard(mage.filter.FilterCard) Player(mage.players.Player) ChooseExpansionSetEffect(mage.abilities.effects.common.ChooseExpansionSetEffect) TargetCard(mage.target.TargetCard) ExpansionSet(mage.cards.ExpansionSet) CardsImpl(mage.cards.CardsImpl) FilterCard(mage.filter.FilterCard) TargetCard(mage.target.TargetCard) Card(mage.cards.Card) HashSet(java.util.HashSet)

Example 2 with TargetCard

use of mage.target.TargetCard in project mage by magefree.

the class BoneyardParleyEffect method apply.

@Override
public boolean apply(Game game, Ability source) {
    Player player = game.getPlayer(source.getControllerId());
    if (player != null) {
        Cards cards = new CardsImpl();
        for (Target target : source.getTargets()) {
            for (UUID cardId : target.getTargets()) {
                cards.add(cardId);
            }
        }
        if (!cards.isEmpty() && player.moveCards(cards, Zone.EXILED, source, game)) {
            TargetOpponent targetOpponent = new TargetOpponent(true);
            if (player.choose(Outcome.Neutral, targetOpponent, source.getSourceId(), game)) {
                Player opponent = game.getPlayer(targetOpponent.getFirstTarget());
                if (opponent != null) {
                    TargetCard targetCards = new TargetCard(0, cards.size(), Zone.EXILED, new FilterCard("cards to put in the first pile"));
                    List<Card> pile1 = new ArrayList<>();
                    if (opponent.choose(Outcome.Neutral, cards, targetCards, game)) {
                        List<UUID> targets = targetCards.getTargets();
                        for (UUID targetId : targets) {
                            Card card = cards.get(targetId, game);
                            if (card != null) {
                                pile1.add(card);
                                cards.remove(card);
                            }
                        }
                    }
                    List<Card> pile2 = new ArrayList<>();
                    pile2.addAll(cards.getCards(game));
                    boolean choice = player.choosePile(outcome, "Choose a pile to put onto the battlefield.", pile1, pile2, game);
                    Zone pile1Zone = Zone.GRAVEYARD;
                    Zone pile2Zone = Zone.BATTLEFIELD;
                    if (choice) {
                        pile1Zone = Zone.BATTLEFIELD;
                        pile2Zone = Zone.GRAVEYARD;
                    }
                    Set<Card> pile1Set = new HashSet<>();
                    Set<Card> pile2Set = new HashSet<>();
                    pile1Set.addAll(pile1);
                    pile2Set.addAll(pile2);
                    // Cards toBattlefield = new CardsImpl();
                    // Cards toGraveyard = new CardsImpl();
                    // 
                    // if (pile1Zone == Zone.BATTLEFIELD) {
                    // toBattlefield.addAll(pile1);
                    // toGraveyard.addAll(pile2);
                    // } else {
                    // toBattlefield.addAll(pile2);
                    // toGraveyard.addAll(pile1);
                    // }
                    player.moveCards(pile1Set, pile1Zone, source, game, false, false, false, null);
                    player.moveCards(pile2Set, pile2Zone, source, game, false, false, false, null);
                // StringBuilder sb = new StringBuilder("Pile 1, going to ").append(pile1Zone == Zone.BATTLEFIELD ? "Battlefield" : "Graveyard").append(": ");
                // game.informPlayers(sb.toString());
                // sb = new StringBuilder("Pile 2, going to ").append(pile2Zone == Zone.BATTLEFIELD ? "Battlefield" : "Graveyard").append(':');
                // game.informPlayers(sb.toString());
                }
                return true;
            }
        }
    }
    return false;
}
Also used : Player(mage.players.Player) TargetOpponent(mage.target.common.TargetOpponent) Zone(mage.constants.Zone) ArrayList(java.util.ArrayList) TargetCard(mage.target.TargetCard) FilterCard(mage.filter.FilterCard) TargetCard(mage.target.TargetCard) Card(mage.cards.Card) FilterCard(mage.filter.FilterCard) Target(mage.target.Target) UUID(java.util.UUID) Cards(mage.cards.Cards) CardsImpl(mage.cards.CardsImpl) HashSet(java.util.HashSet)

Example 3 with TargetCard

use of mage.target.TargetCard in project mage by magefree.

the class CheckForTrapsEffect method apply.

@Override
public boolean apply(Game game, Ability source) {
    Player controller = game.getPlayer(source.getControllerId());
    Player opponent = game.getPlayer(targetPointer.getFirst(game, source));
    if (controller == null || opponent == null) {
        return false;
    }
    opponent.revealCards(source, opponent.getHand(), game);
    TargetCard target = new TargetCard(Zone.HAND, StaticFilters.FILTER_CARD_NON_LAND);
    target.setNotTarget(true);
    boolean opponentLoseLife = false;
    if (controller.choose(outcome, opponent.getHand(), target, game)) {
        Card card = game.getCard(target.getFirstTarget());
        if (card != null) {
            controller.moveCards(card, Zone.EXILED, source, game);
            if (card.isInstant(game) || card.hasAbility(FlashAbility.getInstance(), game)) {
                opponentLoseLife = true;
            }
        }
    }
    if (opponentLoseLife) {
        opponent.loseLife(1, game, source, false);
    } else {
        controller.loseLife(1, game, source, false);
    }
    return true;
}
Also used : Player(mage.players.Player) TargetCard(mage.target.TargetCard) TargetCard(mage.target.TargetCard) Card(mage.cards.Card)

Example 4 with TargetCard

use of mage.target.TargetCard in project mage by magefree.

the class CreamOfTheCropEffect method apply.

@Override
public boolean apply(Game game, Ability source) {
    Player controller = game.getPlayer(source.getControllerId());
    Permanent permanent = getTargetPointer().getFirstTargetPermanentOrLKI(game, source);
    if (controller != null && permanent != null) {
        Cards cards = new CardsImpl(controller.getLibrary().getTopCards(game, permanent.getPower().getValue()));
        if (!cards.isEmpty()) {
            TargetCard target = new TargetCard(Zone.LIBRARY, new FilterCard("card to put on top of your library"));
            target.setNotTarget(true);
            controller.chooseTarget(Outcome.Benefit, cards, target, source, game);
            Card card = cards.get(target.getFirstTarget(), game);
            if (card != null) {
                cards.remove(card);
                controller.putCardsOnTopOfLibrary(new CardsImpl(card), game, source, true);
            }
            controller.putCardsOnBottomOfLibrary(cards, game, source, true);
        }
        return true;
    }
    return false;
}
Also used : FilterCard(mage.filter.FilterCard) Player(mage.players.Player) Permanent(mage.game.permanent.Permanent) TargetCard(mage.target.TargetCard) FilterCard(mage.filter.FilterCard) TargetCard(mage.target.TargetCard)

Example 5 with TargetCard

use of mage.target.TargetCard in project mage by magefree.

the class DeliverUntoEvilEffect method apply.

@Override
public boolean apply(Game game, Ability source) {
    Player player = game.getPlayer(source.getControllerId());
    if (player == null) {
        return false;
    }
    Cards cards = new CardsImpl(source.getTargets().get(0).getTargets());
    if (cards.isEmpty()) {
        return false;
    }
    if (!game.getBattlefield().getActivePermanents(filter, source.getControllerId(), game).isEmpty()) {
        return player.moveCards(cards, Zone.HAND, source, game);
    }
    TargetOpponent targetOpponent = new TargetOpponent();
    targetOpponent.setNotTarget(true);
    if (!player.choose(outcome, targetOpponent, source.getSourceId(), game)) {
        return false;
    }
    Player opponent = game.getPlayer(targetOpponent.getFirstTarget());
    if (opponent == null) {
        return false;
    }
    TargetCard targetCard = new TargetCardInGraveyard(Math.min(2, cards.size()), filter2);
    if (!opponent.choose(outcome, cards, targetCard, game)) {
        return false;
    }
    cards.removeAll(targetCard.getTargets());
    return player.moveCards(cards, Zone.HAND, source, game);
}
Also used : Player(mage.players.Player) TargetOpponent(mage.target.common.TargetOpponent) TargetCardInGraveyard(mage.target.common.TargetCardInGraveyard) TargetCard(mage.target.TargetCard) Cards(mage.cards.Cards) CardsImpl(mage.cards.CardsImpl)

Aggregations

TargetCard (mage.target.TargetCard)309 Player (mage.players.Player)297 FilterCard (mage.filter.FilterCard)177 Card (mage.cards.Card)130 CardsImpl (mage.cards.CardsImpl)96 UUID (java.util.UUID)83 Cards (mage.cards.Cards)81 MageObject (mage.MageObject)80 TargetCardInLibrary (mage.target.common.TargetCardInLibrary)52 Permanent (mage.game.permanent.Permanent)49 TargetCardInYourGraveyard (mage.target.common.TargetCardInYourGraveyard)30 ApprovingObject (mage.ApprovingObject)26 TargetPlayer (mage.target.TargetPlayer)25 FilterCreatureCard (mage.filter.common.FilterCreatureCard)22 TargetOpponent (mage.target.common.TargetOpponent)22 TargetCardInHand (mage.target.common.TargetCardInHand)21 Target (mage.target.Target)19 FilterNonlandCard (mage.filter.common.FilterNonlandCard)18 FixedTarget (mage.target.targetpointer.FixedTarget)18 ArrayList (java.util.ArrayList)16