@Override public boolean apply(Game game, Ability source) { Player player; if (useTargetController) { player = game.getPlayer(getTargetPointer().getFirst(game, source)); } else { player = game.getPlayer(source.getControllerId()); } if (player == null) { return false; } if (player.chooseUse(Outcome.PutCardInPlay, "Put " + filter.getMessage() + " from your hand onto the battlefield?", source, game)) { TargetCardInHand target = new TargetCardInHand(filter); if (player.choose(Outcome.PutCardInPlay, target, source.getSourceId(), game)) { Card card = game.getCard(target.getFirstTarget()); if (card != null) { return player.moveCards(card, Zone.BATTLEFIELD, source, game, tapped, false, false, null); } } } return false; }