@Override
public boolean apply(Game game, Ability source) {
Player controller = game.getPlayer(source.getControllerId());
if (controller != null) {
int denialCount = 0;
int duplicationCount = 0;
for (UUID playerId : game.getState().getPlayersInRange(controller.getId(), game)) {
Player player = game.getPlayer(playerId);
if (player != null) {
if (player.chooseUse(Outcome.ExtraTurn, "Choose denial?", source, game)) {
denialCount++;
game.informPlayers(player.getLogName() + " has voted for denial");
} else {
duplicationCount++;
game.informPlayers(player.getLogName() + " has voted for duplication");
}
}
}
if (denialCount > duplicationCount) {
return game.getStack().counter(getTargetPointer().getFirst(game, source), source.getSourceId(), game);
} else {
return new CopyTargetSpellEffect().apply(game, source);
}
}
return false;
}
}