public static void NPCMoreTalk(final LittleEndianAccessor slea, final MapleClient c) {
        final byte lastMsg = slea.readByte(); // 00 (last msg type I think)
        if (lastMsg == 9 && slea.available() >= 4) {
            slea.readShort();
        }
        final byte action = slea.readByte(); // 00 = end chat, 01 == follow

        if (((lastMsg == 0x12 && c.getPlayer().getDirection() >= 0) || (lastMsg == 0x12 && c.getPlayer().getDirection() == -1)) && action == 1) {
            byte lastbyte = slea.readByte(); // 00 = end chat, 01 == follow
            if (lastbyte == 0) {
                c.getSession().write(CWvsContext.enableActions());
            } else {
                MapScriptMethods.startDirectionInfo(c.getPlayer(), lastMsg == 0x13);
                c.getSession().write(CWvsContext.enableActions());
            }
            return;
        }
        final NPCConversationManager cm = NPCScriptManager.getInstance().getCM(c);
        /*if (cm != null && lastMsg == 0x17) {
            c.getPlayer().handleDemonJob(slea.readInt());
            return;
        }*/
        if (cm == null || c.getPlayer().getConversation() == 0 || cm.getLastMsg() != lastMsg) {
            return;
        }
        cm.setLastMsg((byte) -1);
        if (lastMsg == 1) {
            NPCScriptManager.getInstance().action(c, action, lastMsg, -1);
        } else if (lastMsg == 3) {
            if (action != 0) {
                cm.setGetText(slea.readMapleAsciiString());
                if (cm.getType() == 0) {
                    NPCScriptManager.getInstance().startQuest(c, action, lastMsg, -1);
                } else if (cm.getType() == 1) {
                    NPCScriptManager.getInstance().endQuest(c, action, lastMsg, -1);
                } else {
                    NPCScriptManager.getInstance().action(c, action, lastMsg, -1);
                }
            } else {
                cm.dispose();
            }
        } else if (lastMsg == 0x17) {
            NPCScriptManager.getInstance().action(c, (byte) 1, lastMsg, action);
        } else {
            int selection = -1;
            if (slea.available() >= 4) {
                selection = slea.readInt();
            } else if (slea.available() > 0) {
                selection = slea.readByte();
            }
            if (lastMsg == 4 && selection == -1) {
                cm.dispose();
                return;//h4x
            }
            if (selection >= -1 && action != -1) {
                if (cm.getType() == 0) {
                    NPCScriptManager.getInstance().startQuest(c, action, lastMsg, selection);
                } else if (cm.getType() == 1) {
                    NPCScriptManager.getInstance().endQuest(c, action, lastMsg, selection);
                } else {
                    NPCScriptManager.getInstance().action(c, action, lastMsg, selection);
                }
            } else {
                cm.dispose();
            }
        }
    }