@Override public void useDeck(Deck deck, Game game) { library.clear(); library.addAll(deck.getCards(), game); sideboard.clear(); for (Card card : deck.getSideboard()) { sideboard.add(card); } }
@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); }
@Override public void mulligan(UUID playerId) { Player player = getPlayer(playerId); int numCards = player.getHand().size(); player.getLibrary().addAll(player.getHand().getCards(this), this); player.getHand().clear(); player.shuffleLibrary(null, this); int deduction = 1; if (freeMulligans > 0) { if (usedFreeMulligans.containsKey(player.getId())) { int used = usedFreeMulligans.get(player.getId()); if (used < freeMulligans) { deduction = 0; usedFreeMulligans.put(player.getId(), used + 1); } } else { deduction = 0; usedFreeMulligans.put(player.getId(), 1); } } fireInformEvent(new StringBuilder(player.getLogName()) .append(" mulligans") .append(deduction == 0 ? " for free and draws " : " down to ") .append((numCards - deduction)) .append(numCards - deduction == 1 ? " card" : " cards").toString()); player.drawCards(numCards - deduction, this); }
@Override public boolean apply(Game game, Ability source) { Player player = game.getPlayer(source.getControllerId()); if (player == null) { return false; } Cards cards = new CardsImpl(); for (UUID targetId : targetPointer.getTargets(game, source)) { Card card = game.getCard(targetId); if (card != null) { cards.add(card); } } player.getLibrary().addAll(cards.getCards(game), game); player.shuffleLibrary(source, game); return true; } }
@Override public boolean apply(Game game, Ability source) { Player controller = game.getPlayer(source.getControllerId()); if (controller != null) { game.informPlayers(controller.getLogName() + " shuffle their graveyard into their library"); for (Card card : controller.getGraveyard().getCards(game)) { controller.moveCardToLibraryWithInfo(card, source.getSourceId(), game, Zone.GRAVEYARD, true, true); } controller.getLibrary().addAll(controller.getGraveyard().getCards(game), game); controller.getGraveyard().clear(); controller.shuffleLibrary(source, game); return true; } return false; }
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(); } } }
if (!newPlayer.getId().equals(playerId)) { int handSize = newPlayer.getHand().size(); newPlayer.getLibrary().addAll(newPlayer.getHand().getCards(mcts), mcts); newPlayer.getHand().clear(); newPlayer.getLibrary().shuffle();
if (!cards.isEmpty()) { if (shuffleRestInto) { library.addAll(cards.getCards(game), game); } else { controller.putCardsOnBottomOfLibrary(cards, game, source, anyOrder);