@Override public boolean choose(Outcome outcome, Choice choice, Game game) { if (Outcome.PutManaInPool == outcome) { if (currentlyUnpaidMana != null && ManaUtil.tryToAutoSelectAManaColor(choice, currentlyUnpaidMana)) { return true; } } updateGameStatePriority("choose(3)", game); while (canRespond()) { prepareForResponse(game); if (!isExecutingMacro()) { game.fireChooseChoiceEvent(playerId, choice); } waitForResponse(game); String val = response.getString(); if (val != null && !val.isEmpty()) { if (choice.isKeyChoice()) { choice.setChoiceByKey(val); } else { choice.setChoice(val); } return true; } else if (!choice.isRequired()) { return false; } } return false; }