@Override public boolean apply(Game game, Ability source) { game.getState().getPlayersInRange(source.getControllerId(), game).forEach((playerId) -> { Player player = game.getPlayer(playerId); if (player != null) { int lands = game.getBattlefield().countAll(new FilterControlledLandPermanent(), playerId, game); TargetLandPermanent target = new TargetLandPermanent(Integer.min(5, lands)); target.setNotTarget(true); target.setRequired(true); player.chooseTarget(outcome.Benefit, target, source, game); game.getBattlefield().getAllActivePermanents(new FilterControlledLandPermanent(), playerId, game).stream().filter((land) -> (!target.getTargets().contains(land.getId()))).forEachOrdered((land) -> { land.sacrifice(source.getSourceId(), game); }); } }); return true; } }