public static List<Tile> familarTile(IClientContext ctx) {
		final Tile location = ctx.players.local().tile();
		List<Tile> tiles = new ArrayList<Tile>();
		LogicailArea area = new LogicailArea(location.derive(-7, -7), location.derive(5, 5));

		boolean edgeville = false;

		if (LocationAttribute.EDGEVILLE.isInLargeArea(ctx)) {
			edgeville = true;
			if (IMovement.Euclidean(location, EDGEVILLE_AREA_LEFT.getCentralTile()) < IMovement.Euclidean(location, EDGEVILLE_AREA_TOP.getCentralTile())) {
				area = EDGEVILLE_AREA_LEFT;
			} else {
				area = EDGEVILLE_AREA_TOP;
			}
		}

		for (Tile tile : area.getTileArray()) {
			final double distanceTo = location.distanceTo(tile);
			if (distanceTo > 2 && (edgeville || distanceTo < 9)) {
				tiles.add(tile);
			}
		}

		Iterator<Tile> iterator = tiles.iterator();
		while (iterator.hasNext()) {
			final Tile next = iterator.next();
			if (!next.matrix(ctx).reachable()) {
				iterator.remove();
			}
		}

		Collections.shuffle(tiles);

		return tiles.isEmpty() ? tiles : tiles.subList(0, Math.min(6, tiles.size()));
	}