Magic system: Implemented CUser::RemoveSavedMagic() to ensure no race conditions accessing m_savedMagicMap.
AI server: Removed CUser::SendSystemMsg() & the useless "who" parameter from CServerDlg::SendSystemMsg()/AG_SYSTEM_MSG.
Commands: Implemented +test command placeholder for code testing (it's meant to be set for whatever you need to run live, to avoid the command boilerplate code).
Game server: Updated chat opcodes & implemented CUser::SendDeathNotice() which will send the specified death notice type to users in the region.
Started implementing support for C++11's std::thread functionality. VS2010 is still supported (for now).
Implemented sleep() macro to use either portable C++11 functionality, or Windows' Sleep() call (for now; this will most likely be dropped completely soon).
Implemented support for C++11's std::mutex. Refs #77.
Implemented support for C++11's condition variables. Refs #77.
Replaced the unnecessary Windows typedefs I could see being used around the codebase.
BUGFIX: Fixed stack corruption caused by using a bool (1 byte) instead of the intended BOOL (4 bytes) read in from the map file.
Added a 'warning' for the use of the WinAPI call Sleep() (it'll implicitly use sleep(), but encourage you to fix it yourself).
SetConsoleCtrlHandler() is now only called if using Windows.
If not using Windows, SetConsoleTitle() is ignored.
Replaced Windows event signaling logic with our portable Condition class.
Removed the one Windows tie to what little remains of the DX code (already removed it all already!). Might need to ensure the structs are laid out explicitly for other compilers. Refs #77.
Timer code replaced with a more portable threaded version.
BUGFIX: NPCs should not be freed twice (they're already freed by their CSTLMap container).
Various tweaks to fix compilation pre-C++11 & ensure threads are shutdown correctly before the servers exit.
The servers should now shutdown correctly when using std::thread (threads need to all finish correctly otherwise they'll cause trouble). The console input thread now closes on read error (unsure if this will break things); this occurs when ctrl-c is hit (unfortunately not when exiting, however).
Implemented a temporary workaround for a minor discrepancy between std::condition_variable & our Condition implementation.