public void set(Library newLibrary) { library.clear(); for (UUID card : newLibrary.getCardList()) { library.add(card); } }
protected void randomizePlayers(Game game, UUID playerId) { for (Player player: game.getState().getPlayers().values()) { if (!player.getId().equals(playerId)) { int handSize = player.getHand().size(); player.getLibrary().addAll(player.getHand().getCards(game), game); player.getHand().clear(); player.getLibrary().shuffle(); for (int i = 0; i < handSize; i++) { Card card = player.getLibrary().removeFromTop(game); card.setZone(Zone.HAND, game); player.getHand().add(card); } } else { player.getLibrary().shuffle(); } } }
@Override public boolean applies(GameEvent event, Ability source, Game game) { Player player = game.getPlayer(event.getPlayerId()); if (player != null && player.getLibrary().getCards(game).isEmpty()) { return true; } return false; } }
public void putCardToTopXPos(Card card, int pos, Game game) { if (card != null && pos > -1) { LinkedList<Card> save = new LinkedList<>(); int idx = 1; while (hasCards() && idx < pos) { idx++; save.add(removeFromTop(game)); } putOnTop(card, game); while (!save.isEmpty()) { putOnTop(save.removeLast(), game); } } }
@Override public boolean pay(Ability ability, Game game, UUID sourceId, UUID controllerId, boolean noMana, Cost costToPay) { Player player = game.getPlayer(controllerId); if (player != null && player.getLibrary().size() >= numberOfCards) { paid = true; this.cardsMovedToGraveyard.addAll(player.getLibrary().getTopCards(game, numberOfCards)); player.moveCards(player.getLibrary().getTopCards(game, numberOfCards), Zone.GRAVEYARD, ability, game); } return paid; }
@Override public boolean apply(Game game, Ability source) { Player player = game.getPlayer(source.getControllerId()); if (player != null) { // move cards from library to exile for (int i = 0; i < 5; i++) { if (player.getLibrary().hasCards()) { Card topCard = player.getLibrary().getFromTop(game); topCard.moveToExile(source.getSourceId(), "Cards exiled by Search the City", source.getSourceId(), game); } } return true; } return false; }
MageObject sourceObject = game.getObject(source.getSourceId()); if (sourceObject != null && controller != null) { Cards cards = new CardsImpl(controller.getLibrary().getTopCards(game, 2)); controller.lookAtCards(source, null, cards, game); Card cardToManifest = null; cardToManifest = cards.getRandom(game); if (!controller.getLibrary().getFromTop(game).equals(cardToManifest)) { Card cardToPutBack = controller.getLibrary().removeFromTop(game); cardToManifest = controller.getLibrary().removeFromTop(game); controller.getLibrary().putOnTop(cardToPutBack, game); controller.getLibrary().putOnTop(cardToManifest, game); if (controller.getLibrary().hasCards()) { Card cardToPutBack = controller.getLibrary().getFromTop(game); String position = "on top"; if (controller.chooseUse(Outcome.Detriment, "Put " + cardToPutBack.getName() + " on bottom of library?", source, game)) {
@Override public boolean removeFromLibrary(Card card, Game game) { if (card == null) { return false; } library.remove(card.getId(), game); return true; }
@Override public boolean pay(Ability ability, Game game, UUID sourceId, UUID controllerId, boolean noMana, Cost costToPay) { Player controller = game.getPlayer(controllerId); if (controller != null) { card = controller.getLibrary().getFromTop(game); if (card != null) { paid = controller.moveCards(card, Zone.EXILED, ability, game); } } return paid; }
Player controller = game.getPlayer(source.getControllerId()); MageObject sourceObject = game.getObject(source.getSourceId()); if (controller != null && controller.getLibrary().hasCards()) { Cards cards = new CardsImpl(); Library library = controller.getLibrary(); Card card = null; do { card = library.removeFromTop(game); if (card != null) { cards.add(card); } while (library.hasCards() && card != null && !filter.match(card, game)); if (!cards.isEmpty()) { if (shuffleRestInto) { library.addAll(cards.getCards(game), game); } else { controller.putCardsOnBottomOfLibrary(cards, game, source, anyOrder);
public boolean hasCards() { return size() > 0; }
@Override public boolean putCardOnTopXOfLibrary(Card card, Game game, Ability source, int xFromTheTop) { if (card.isOwnedBy(getId())) { if (library.size() + 1 < xFromTheTop) { putCardsOnBottomOfLibrary(new CardsImpl(card), game, source, true); } else { if (card.moveToZone(Zone.LIBRARY, source.getSourceId(), game, true) && !(card instanceof PermanentToken) && !card.isCopy()) { card = getLibrary().removeFromTop(game); getLibrary().putCardToTopXPos(card, xFromTheTop, game); game.informPlayers(card.getLogName() + " is put into " + getLogName() + "'s library " + CardUtil.numberToOrdinalText(xFromTheTop) + " from the top"); } else { return false; } } } else { return game.getPlayer(card.getOwnerId()).putCardOnTopXOfLibrary(card, game, source, xFromTheTop); } return true; }
@Override public boolean apply(Game game, Ability source) { Player controller = game.getPlayer(source.getControllerId()); if (controller != null && controller.getLibrary().hasCards()) { CardsImpl cards = new CardsImpl(); for (Card card : controller.getLibrary().getCards(game)) { cards.add(card); if (!card.isLand()) { break; } } controller.revealCards(source, cards, game); controller.moveCards(cards, Zone.HAND, source, game); return true; } return false; } }
@Override public boolean apply(Game game, Ability source) { Player controller = game.getPlayer(source.getControllerId()); if (controller != null) { int count = controller.getLibrary().size(); if (count > 0) { for (Card cardToExile: controller.getLibrary().getCards(game)) { cardToExile.moveToExile(null, "", source.getSourceId(), game); cardToExile.setFaceDown(true, game); } } for (Card cardToLibrary: controller.getGraveyard().getCards(game)) { controller.moveCardToLibraryWithInfo(cardToLibrary, source.getSourceId(), game, Zone.GRAVEYARD, true, true); } controller.shuffleLibrary(source, game); return true; } return false; } }
@Override public boolean apply(Game game, Ability source) { Player controller = game.getPlayer(source.getControllerId()); if (controller != null) { boolean putToPlay = true; Cards cards = new CardsImpl(); for (Player player : game.getPlayers().values()) { if (player.getLibrary().hasCards()) { Card card = player.getLibrary().removeFromTop(game); if (card != null) { cards.add(card); if (!card.isCreature()) { putToPlay = false; } player.revealCards(source, "- Revealed by " + player.getName(), cards, game); } } else { putToPlay = false; } } if (putToPlay) { controller.moveCards(cards.getCards(game), Zone.BATTLEFIELD, source, game, false, false, true, null); } return true; } return false; } }
opponent.setTopCardRevealed(false); Cards cards = new CardsImpl(); int count = Math.min(fatesealNumber, opponent.getLibrary().size()); if (count == 0) { return true; Card card = opponent.getLibrary().removeFromTop(game); cards.add(card);
/** * Return a card back to top. * * @param game Game context */ @Override public void undoAction(Game game) { for (int index = drawnCards.size() - 1; index >= 0; index--) { Card card = drawnCards.get(index); player.getHand().remove(card); player.getLibrary().putOnTop(card, game); } } }
@Override public void mulligan(UUID playerId) { Player player = getPlayer(playerId); int numCards = player.getHand().size(); int numToMulliganTo = numCards; player.getLibrary().addAll(player.getHand().getCards(this), this); player.getHand().clear(); player.shuffleLibrary(null, this); if (usedMulligans != null) { String mulliganCode = "7"; if (usedMulligans.containsKey(player.getId())) { mulliganCode = usedMulligans.get(player.getId()); } numToMulliganTo = getNextMulliganNum(mulliganCode); usedMulligans.put(player.getId(), getNextMulligan(mulliganCode)); } fireInformEvent(new StringBuilder(player.getLogName()) .append(" mulligans to ") .append(Integer.toString(numToMulliganTo)) .append(numToMulliganTo == 1 ? " card" : " cards").toString()); player.drawCards(numToMulliganTo, this); }