Removed a useless NULL ptr check.
CUser::Type3AreaDuration(float) now makes use of the active session map -- I think that's the last one.
Implemented hashmaps for Ebenezer's account & character names.
Fixed a couple of potential deadlock cases (note: need to delay disconnection logic to prevent this from ever occurring).
Sockets now call a disconnection callback in a dedicated thread, so as not to cause any deadlocks with lookups (e.g. looping over the active session map and disconnecting players from within [even if the socket's Send() method failed) would cause a deadlock, as the session lock is acquired and it cannot write to it on disconnection. It's done this way (as opposed to simply using a FastMutex, which would mean it locks unnecessarily in some cases, but wouldn't deadlock within the same thread) for a future update to make players visibly disconnect after a few seconds (to prevent them from abusing killing the client while PVP'ing). As is, it won't support that -- but it will.
Cleaned up the active session map uses to remove the potential deadlock workarounds (because that's now no longer an issue). CEbenezerDlg::KickOutZoneUsers() is also faster, in that it no longer looks up the map for the home zone of each and every player.
Updated & cleaned up the NPC types list, updated CNpc::isGate() to add NPC_VICTORY_GATE to the list of gate types.
Restored a couple of changes that were reverted a little while ago.
Merge branch 'master' of https://github.com/maxmenten/snoxd-koserver
Removed some debug.
Added CUser::isClanAssistant(), removed the unnecessary isInClan() check from these inlined functions, and ensured they were both used.
m_sMerchantsSocketID is now signed. Fixed up a few bad checks involving it (>= MAX_USER is illegal, > MAX_USER includes element at index 3000 -- which would be valid if MAX_USER was 3001, not 3000. 0-indexing! Yay!), and - like the trade system, party system, etc, enforced < 0 (more specifically -1) as the invalid/unused ID. Additionally, it's g_pMain not m_pMain now (one global ref vs _many_ local refs...). ;)