@Override public boolean pay(Ability ability, Game game, UUID sourceId, UUID controllerId, boolean noMana, Cost costToPay) { Player player = game.getPlayer(controllerId); if (player == null) { return false; } paid = false; if (player.getHand().count(filter, game) > 0 && player.chooseUse(Outcome.Benefit, "Reveal a Merfolk card? Otherwise pay {3}.", ability, game)) { TargetCardInHand target = new TargetCardInHand(filter); if (player.choose(Outcome.Benefit, target, sourceId, game)) { Card card = player.getHand().get(target.getFirstTarget(), game); if (card != null) { paid = true; player.revealCards("Revealed card", new CardsImpl(card), game); } } } else { mana.clearPaid(); if (mana.pay(ability, game, player.getId(), player.getId(), false)) { paid = true; } } return paid; }