@Override public boolean apply(Game game, Ability source) { Player controller = game.getPlayer(source.getControllerId()); if (controller != null) { switch (targetController) { case YOU: controller.setCanGainLife(false); break; case NOT_YOU: for (UUID playerId : game.getState().getPlayersInRange(controller.getId(), game)) { Player player = game.getPlayer(playerId); if (player != null && !player.equals(controller)) { player.setCanGainLife(false); } } break; case OPPONENT: for (UUID playerId : game.getState().getPlayersInRange(controller.getId(), game)) { if (controller.hasOpponent(playerId, game)) { Player player = game.getPlayer(playerId); if (player != null) { player.setCanGainLife(false); } } } break; case ANY: for (UUID playerId : game.getState().getPlayersInRange(controller.getId(), game)) { Player player = game.getPlayer(playerId); if (player != null) { player.setCanGainLife(false); } } break; } return true; } return false; }