public static void FindFriends(final LittleEndianAccessor slea, final MapleClient c) {
        byte mode = slea.readByte();
        switch (mode) {
            case 5:
                if (c.getPlayer().getQuestStatus(GameConstants.PLAYER_INFORMATION) == 0) {
                    c.getSession().write(CWvsContext.findFriendResult((byte) 6, null, 0, null));
                    c.getSession().write(CWvsContext.enableActions());
                    return;
                }
            case 7:
                List<MapleCharacter> characters = new LinkedList();
                for (MapleCharacter chr : c.getChannelServer().getPlayerStorage().getAllCharacters()) {
                    if (chr != c.getPlayer()) {
                        if (c.getPlayer().getQuestStatus(GameConstants.PLAYER_INFORMATION) == 0 || characters.isEmpty()) {
                            characters.add(chr);
                        } else {
                            if (chr.getQuestStatus(GameConstants.PLAYER_INFORMATION) == 0 && characters.isEmpty()) {
                                continue;
                            }
                            String[] info = c.getPlayer().getQuest(MapleQuest.getInstance(GameConstants.PLAYER_INFORMATION)).getCustomData().split(";");
                            String[] info2 = chr.getQuest(MapleQuest.getInstance(GameConstants.PLAYER_INFORMATION)).getCustomData().split(";");
                            if (info[0].equals(info2[0]) || info[1].equals(info2[1]) || info[2].equals(info2[2]) || info[3].equals(info2[3])) {
                                characters.add(chr);
                            }
                        }
                    }
                }
                if (characters.isEmpty()) {
                    c.getSession().write(CWvsContext.findFriendResult((byte) 9, null, 12, null));
                } else {
                    c.getSession().write(CWvsContext.findFriendResult((byte) 8, characters, 0, null));
                }
                break;
        }
    }