CClient::~CClient() { bool bWasChar; // update ip history #ifndef _MTNETWORK HistoryIP& history = g_NetworkIn.getIPHistoryManager().getHistoryForIP(GetPeer()); #else HistoryIP& history = g_NetworkManager.getIPHistoryManager().getHistoryForIP(GetPeer()); #endif if ( GetConnectType() != CONNECT_GAME ) history.m_connecting--; history.m_connected--; bWasChar = ( m_pChar != NULL ); CharDisconnect(); // am i a char in game ? Cmd_GM_PageClear(); // Clear containers (CTAG and TOOLTIP) m_TagDefs.Empty(); m_TooltipData.Clean(true); CAccount * pAccount = GetAccount(); if ( pAccount ) { pAccount->OnLogout(this, bWasChar); m_pAccount = NULL; } if (m_pPopupPacket != NULL) { delete m_pPopupPacket; m_pPopupPacket = NULL; } if (m_net->isClosed() == false) g_Log.EventError("Client being deleted without being safely removed from the network system\n"); }