@Override
public boolean apply(Game game, Ability source) {
Player player = game.getPlayer(source.getControllerId());
if (player.getLibrary().size() > 0) {
if (player.getLibrary().size() == 1) {
Card card = player.getLibrary().removeFromTop(game);
card.moveToZone(Zone.HAND, source.getId(), game, false);
}
else {
Cards cards = new CardsImpl(Zone.PICK);
Card card = player.getLibrary().removeFromTop(game);
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)) {
card1.moveToZone(Zone.LIBRARY, source.getId(), game, false);
}