@Override public boolean apply(Game game, Ability source) { Player player = game.getPlayer(source.getControllerId()); Permanent permanent = game.getPermanentEntering(source.getSourceId()); if (player != null && permanent != null) { String colors; ChoiceColor colorChoice = new ChoiceColor(); colorChoice.setMessage("Choose the first color"); while (!player.choose(Outcome.GainLife, colorChoice, game)) { if (!player.canRespond()) { return false; } } game.getState().setValue(permanent.getId() + "_color1", colorChoice.getColor().toString()); colors = colorChoice.getChoice().toLowerCase() + " and "; colorChoice.getChoices().remove(colorChoice.getChoice()); colorChoice.setMessage("Choose the second color"); while (!player.choose(Outcome.GainLife, colorChoice, game) && player.canRespond()) { game.debugMessage("player canceled choosing type. retrying."); } game.getState().setValue(permanent.getId() + "_color2", colorChoice.getColor().toString()); colors = colors + colorChoice.getChoice().toLowerCase(); game.informPlayers( permanent.getName() + ": " + player.getLogName() + " has chosen " + colors); } return false; }
@Override public boolean apply(Game game, Ability source) { Player controller = game.getPlayer(source.getControllerId()); if (controller != null) { Choice cardChoice = new ChoiceImpl(); cardChoice.setChoices(CardRepository.instance.getNonLandAndNonCreatureNames()); cardChoice.clearChoice(); while (!controller.choose(Outcome.Detriment, cardChoice, game)) { game.debugMessage("player canceled choosing name. retrying."); } String cardName = cardChoice.getChoice(); game.informPlayers("Council of the Absolute, named card: [" + cardName + "]"); game.getState().setValue(source.getSourceId().toString(), cardName); } return false; }
@Override public boolean apply(Game game, Ability source) { Player player = game.getPlayer(targetPointer.getFirst(game, source)); Player controller = game.getPlayer(source.getControllerId()); if (player != null && controller != null) { Choice cardChoice = new ChoiceImpl(); cardChoice.setChoices(CardRepository.instance.getNonLandNames()); cardChoice.clearChoice(); while (!controller.choose(Outcome.Exile, cardChoice, game)) { game.debugMessage("player canceled choosing name. retrying."); } String cardName = cardChoice.getChoice(); game.informPlayers("CranialExtraction, named card: [" + cardName + "]"); for (Card card : player.getGraveyard().getCards(game)) { if (card.getName().equals(cardName)) { card.moveToExile(null, "", source.getId(), game); } } for (Card card : player.getHand().getCards(game)) { if (card.getName().equals(cardName)) { card.moveToExile(null, "", source.getId(), game); } } for (Card card : player.getLibrary().getCards(game)) { if (card.getName().equals(cardName)) { card.moveToExile(null, "", source.getId(), game); } } controller.lookAtCards("CranialExtraction Hand", player.getHand(), game); controller.lookAtCards( "CranialExtraction Library", new CardsImpl(Zone.PICK, player.getLibrary().getCards(game)), game); player.shuffleLibrary(game); } return true; }