Index: trunk/src/game/SpellEffects.cpp
===================================================================
--- trunk/src/game/SpellEffects.cpp (revision 70)
+++ trunk/src/game/SpellEffects.cpp (revision 79)
@@ -3084,4 +3084,5 @@
         case SUMMON_TYPE_CRITTER:
         case SUMMON_TYPE_CRITTER2:
+        case SUMMON_TYPE_CRITTER3:
             EffectSummonCritter(i);
             break;
@@ -3098,5 +3099,4 @@
         case SUMMON_TYPE_UNKNOWN4:
         case SUMMON_TYPE_UNKNOWN5:
-        case SUMMON_TYPE_UNKNOWN6:
             break;
         default:
Index: trunk/src/game/Chat.h
===================================================================
--- trunk/src/game/Chat.h (revision 62)
+++ trunk/src/game/Chat.h (revision 79)
@@ -147,4 +147,5 @@
         bool HandleReloadAllScriptsCommand(const char* args);
         bool HandleReloadAllSpellCommand(const char* args);
+        bool HandleReloadAllLocalesCommand(const char* args);
 
         bool HandleReloadConfigCommand(const char* args);
@@ -195,4 +196,10 @@
         bool HandleReloadPageTextsCommand(const char* args);
         bool HandleReloadItemEnchantementsCommand(const char* args);
+        bool HandleReloadLocalesCreatureCommand(const char* args);
+        bool HandleReloadLocalesGameobjectCommand(const char* args);
+        bool HandleReloadLocalesItemCommand(const char* args);
+        bool HandleReloadLocalesNpcTextCommand(const char* args);
+        bool HandleReloadLocalesPageTextCommand(const char* args);
+        bool HandleReloadLocalesQuestCommand(const char* args);
 
         bool HandleInstanceListBindsCommand(const char* args);
Index: trunk/src/game/Level3.cpp
===================================================================
--- trunk/src/game/Level3.cpp (revision 62)
+++ trunk/src/game/Level3.cpp (revision 79)
@@ -25,4 +25,5 @@
 #include "World.h"
 #include "ObjectMgr.h"
+#include "AccountMgr.h"
 #include "PlayerDump.h"
 #include "SpellMgr.h"
@@ -73,4 +74,5 @@
     HandleReloadAllSpellCommand("");
     HandleReloadAllItemCommand("");
+    HandleReloadAllLocalesCommand("");
 
     HandleReloadCommandCommand("");
@@ -159,4 +161,15 @@
 }
 
+bool ChatHandler::HandleReloadAllLocalesCommand(const char* args)
+{
+    HandleReloadLocalesCreatureCommand("a");
+    HandleReloadLocalesGameobjectCommand("a");
+    HandleReloadLocalesItemCommand("a");
+    HandleReloadLocalesNpcTextCommand("a");
+    HandleReloadLocalesPageTextCommand("a");
+    HandleReloadLocalesQuestCommand("a");
+    return true;
+}
+
 bool ChatHandler::HandleReloadConfigCommand(const char* arg)
 {
@@ -598,4 +611,52 @@
     SendGlobalSysMessage("DB table `game_tele` reloaded.");
 
+    return true;
+}
+
+bool ChatHandler::HandleReloadLocalesCreatureCommand(const char* /*arg*/)
+{
+    sLog.outString( "Re-Loading Locales Creature ...");
+    objmgr.LoadCreatureLocales();
+    SendGlobalSysMessage("DB table `locales_creature` reloaded.");
+    return true;
+}
+
+bool ChatHandler::HandleReloadLocalesGameobjectCommand(const char* /*arg*/)
+{
+    sLog.outString( "Re-Loading Locales Gameobject ... ");
+    objmgr.LoadGameObjectLocales();
+    SendGlobalSysMessage("DB table `locales_gameobject` reloaded.");
+    return true;
+}
+
+bool ChatHandler::HandleReloadLocalesItemCommand(const char* /*arg*/)
+{
+    sLog.outString( "Re-Loading Locales Item ... ");
+    objmgr.LoadItemLocales();
+    SendGlobalSysMessage("DB table `locales_item` reloaded.");
+    return true;
+}
+
+bool ChatHandler::HandleReloadLocalesNpcTextCommand(const char* /*arg*/)
+{
+    sLog.outString( "Re-Loading Locales NPC Text ... ");
+    objmgr.LoadNpcTextLocales();
+    SendGlobalSysMessage("DB table `locales_npc_text` reloaded.");
+    return true;
+}
+
+bool ChatHandler::HandleReloadLocalesPageTextCommand(const char* /*arg*/)
+{
+    sLog.outString( "Re-Loading Locales Page Text ... ");
+    objmgr.LoadPageTextLocales();
+    SendGlobalSysMessage("DB table `locales_page_text` reloaded.");
+    return true;
+}
+
+bool ChatHandler::HandleReloadLocalesQuestCommand(const char* /*arg*/)
+{
+    sLog.outString( "Re-Loading Locales Quest ... ");
+    objmgr.LoadQuestLocales();
+    SendGlobalSysMessage("DB table `locales_quest` reloaded.");
     return true;
 }
@@ -655,5 +716,5 @@
             }
             targetAccountId = objmgr.GetPlayerAccountIdByGUID(targetGUID);
-            targetSecurity = objmgr.GetSecurityByAccount(targetAccountId);
+            targetSecurity = accmgr.GetSecurity(targetAccountId);
         }
 
@@ -4955,5 +5016,5 @@
         return false;
 
-    uint32 account_id = objmgr.GetAccountByAccountName(acc);
+    uint32 account_id = accmgr.GetId(acc);
     if(!account_id)
     {
@@ -4962,5 +5023,5 @@
         {
             std::string acc_name;
-            if(!objmgr.GetAccountNameByAccount(account_id,acc_name))
+            if(!accmgr.GetName(account_id,acc_name))
                 return false;
         }
Index: trunk/src/game/Chat.cpp
===================================================================
--- trunk/src/game/Chat.cpp (revision 78)
+++ trunk/src/game/Chat.cpp (revision 79)
@@ -149,4 +149,5 @@
         { "all_spell",      SEC_ADMINISTRATOR,  &ChatHandler::HandleReloadAllSpellCommand,      "", NULL },
         { "all_item",       SEC_ADMINISTRATOR,  &ChatHandler::HandleReloadAllItemCommand,       "", NULL },
+        { "all_locales",    SEC_ADMINISTRATOR,  &ChatHandler::HandleReloadAllLocalesCommand,    "", NULL },
 
         { "config",         SEC_ADMINISTRATOR,  &ChatHandler::HandleReloadConfigCommand,        "", NULL },
@@ -197,4 +198,10 @@
         { "spell_target_position",       SEC_ADMINISTRATOR, &ChatHandler::HandleReloadSpellTargetPositionCommand,     "", NULL },
         { "spell_threats",               SEC_ADMINISTRATOR, &ChatHandler::HandleReloadSpellThreatsCommand,            "", NULL },
+        { "locales_creature",            SEC_ADMINISTRATOR, &ChatHandler::HandleReloadLocalesCreatureCommand,         "", NULL },
+        { "locales_gameobject",          SEC_ADMINISTRATOR, &ChatHandler::HandleReloadLocalesGameobjectCommand,       "", NULL },
+        { "locales_item",                SEC_ADMINISTRATOR, &ChatHandler::HandleReloadLocalesItemCommand,             "", NULL },
+        { "locales_npc_text",            SEC_ADMINISTRATOR, &ChatHandler::HandleReloadLocalesNpcTextCommand,          "", NULL },
+        { "locales_page_text",           SEC_ADMINISTRATOR, &ChatHandler::HandleReloadLocalesPageTextCommand,         "", NULL },
+        { "locales_quest",               SEC_ADMINISTRATOR, &ChatHandler::HandleReloadLocalesQuestCommand,            "", NULL },
         { "",                            SEC_ADMINISTRATOR, &ChatHandler::HandleReloadCommand,                        "", NULL },
         { NULL,                          0,                 NULL,                                                     "", NULL }
@@ -716,4 +723,5 @@
 
         if( !hasStringAbbr(table[i].Name, subcmd) )
+            continue;
 
         (list += "\n    ") += table[i].Name;
Index: trunk/src/game/ObjectMgr.h
===================================================================
--- trunk/src/game/ObjectMgr.h (revision 44)
+++ trunk/src/game/ObjectMgr.h (revision 79)
@@ -397,7 +397,4 @@
         uint32 GetPlayerTeamByGUID(const uint64 &guid) const;
         uint32 GetPlayerAccountIdByGUID(const uint64 &guid) const;
-        uint32 GetSecurityByAccount(uint32 acc_id) const;
-        bool GetAccountNameByAccount(uint32 acc_id, std::string &name) const;
-        uint32 GetAccountByAccountName(std::string name) const;
 
         uint32 GetNearestTaxiNode( float x, float y, float z, uint32 mapid );
Index: trunk/src/game/Level2.cpp
===================================================================
--- trunk/src/game/Level2.cpp (revision 44)
+++ trunk/src/game/Level2.cpp (revision 79)
@@ -97,5 +97,5 @@
     {
         account_id = objmgr.GetPlayerAccountIdByGUID(guid);
-        security = objmgr.GetSecurityByAccount(account_id);
+        security = accmgr.GetSecurity(account_id);
     }
 
@@ -163,5 +163,5 @@
     {
         account_id = objmgr.GetPlayerAccountIdByGUID(guid);
-        security = objmgr.GetSecurityByAccount(account_id);
+        security = accmgr.GetSecurity(account_id);
     }
 
@@ -1450,5 +1450,5 @@
         type_str = guid_str;
         pCreature = getSelectedCreature();
-        if(!pCreature)
+        if(!pCreature || pCreature->isPet())
             return false;
         lowguid = pCreature->GetDBTableGUIDLow();
@@ -1596,5 +1596,5 @@
     Creature *pCreature = getSelectedCreature();
 
-    if(!pCreature)
+    if(!pCreature || pCreature->isPet())
     {
         SendSysMessage(LANG_SELECT_CREATURE);
@@ -2213,5 +2213,5 @@
         // -> Player must have selected a creature
 
-        if(!target)
+        if(!target || target->isPet())
         {
             SendSysMessage(LANG_SELECT_CREATURE);
@@ -2297,5 +2297,5 @@
 
         target = ObjectAccessor::GetCreature(*m_session->GetPlayer(),MAKE_NEW_GUID(lowguid,data->id,HIGHGUID_UNIT));
-        if(!target)
+        if(!target || target->isPet())
         {
             PSendSysMessage(LANG_WAYPOINT_CREATNOTFOUND, lowguid);
Index: trunk/src/game/AccountMgr.cpp
===================================================================
--- trunk/src/game/AccountMgr.cpp (revision 44)
+++ trunk/src/game/AccountMgr.cpp (revision 79)
@@ -19,5 +19,5 @@
  */
 
-#include "AccountMgr.h"
+#include "AccountAccessor.h"
 #include "Database/DatabaseEnv.h"
 #include "ObjectMgr.h"
@@ -82,5 +82,5 @@
 
             // kick if player currently
-            if(Player* p = objmgr.GetPlayer(guid))
+            if(Player* p = ObjectAccessor::FindPlayer(guid))
             {
                 WorldSession* s = p->GetSession();
@@ -169,4 +169,30 @@
 }
 
+uint32 AccountMgr::GetSecurity(uint32 acc_id)
+{
+    QueryResult *result = loginDatabase.PQuery("SELECT gmlevel FROM account WHERE id = '%u'", acc_id);
+    if(result)
+    {
+        uint32 sec = (*result)[0].GetUInt32();
+        delete result;
+        return sec;
+    }
+
+    return 0;
+}
+
+bool AccountMgr::GetName(uint32 acc_id, std::string &name)
+{
+    QueryResult *result = loginDatabase.PQuery("SELECT username FROM account WHERE id = '%u'", acc_id);
+    if(result)
+    {
+        name = (*result)[0].GetCppString();
+        delete result;
+        return true;
+    }
+
+    return false;
+}
+
 bool AccountMgr::CheckPassword(uint32 accid, std::string passwd)
 {
Index: trunk/src/game/AccountMgr.h
===================================================================
--- trunk/src/game/AccountMgr.h (revision 44)
+++ trunk/src/game/AccountMgr.h (revision 79)
@@ -51,4 +51,7 @@
 
         uint32 GetId(std::string username);
+        uint32 GetIdByGUID(const uint64 &guid) const;
+        uint32 GetSecurity(uint32 acc_id);
+        bool GetName(uint32 acc_id, std::string &name);
 
         static bool normilizeString(std::string& utf8str);
Index: trunk/src/game/SharedDefines.h
===================================================================
--- trunk/src/game/SharedDefines.h (revision 78)
+++ trunk/src/game/SharedDefines.h (revision 79)
@@ -2058,7 +2058,7 @@
     SUMMON_TYPE_UNKNOWN4    = 187,
     SUMMON_TYPE_UNKNOWN1    = 247,
-    SUMMON_TYPE_UNKNOWN5    = 307,
     SUMMON_TYPE_CRITTER2    = 407,
-    SUMMON_TYPE_UNKNOWN6    = 409,
+    SUMMON_TYPE_CRITTER3    = 307,
+    SUMMON_TYPE_UNKNOWN5    = 409,
     SUMMON_TYPE_UNKNOWN2    = 427,
     SUMMON_TYPE_POSESSED2   = 428
Index: trunk/src/game/ObjectMgr.cpp
===================================================================
--- trunk/src/game/ObjectMgr.cpp (revision 78)
+++ trunk/src/game/ObjectMgr.cpp (revision 79)
@@ -40,4 +40,5 @@
 #include "Spell.h"
 #include "Chat.h"
+#include "AccountMgr.h"
 #include "InstanceSaveMgr.h"
 #include "SpellAuras.h"
@@ -321,4 +322,5 @@
             bidder_accId = GetPlayerAccountIdByGUID(bidder_guid);
             bidder_security = GetSecurityByAccount(bidder_accId);
+            bidder_security = accmgr.GetSecurity(bidder_accId);
 
             if(bidder_security > SEC_PLAYER )               // not do redundant DB requests
@@ -505,4 +507,6 @@
 void ObjectMgr::LoadCreatureLocales()
 {
+    mCreatureLocaleMap.clear();
+    
     QueryResult *result = WorldDatabase.Query("SELECT entry,name_loc1,subname_loc1,name_loc2,subname_loc2,name_loc3,subname_loc3,name_loc4,subname_loc4,name_loc5,subname_loc5,name_loc6,subname_loc6,name_loc7,subname_loc7,name_loc8,subname_loc8 FROM locales_creature");
 
@@ -1298,44 +1302,4 @@
 }
 
-uint32 ObjectMgr::GetSecurityByAccount(uint32 acc_id) const
-{
-    QueryResult *result = loginDatabase.PQuery("SELECT gmlevel FROM account WHERE id = '%u'", acc_id);
-    if(result)
-    {
-        uint32 sec = (*result)[0].GetUInt32();
-        delete result;
-        return sec;
-    }
-
-    return 0;
-}
-
-bool ObjectMgr::GetAccountNameByAccount(uint32 acc_id, std::string &name) const
-{
-    QueryResult *result = loginDatabase.PQuery("SELECT username FROM account WHERE id = '%u'", acc_id);
-    if(result)
-    {
-        name = (*result)[0].GetCppString();
-        delete result;
-        return true;
-    }
-
-    return false;
-}
-
-uint32 ObjectMgr::GetAccountByAccountName(std::string name) const
-{
-    loginDatabase.escape_string(name);
-    QueryResult *result = loginDatabase.PQuery("SELECT id FROM account WHERE username = '%s'", name.c_str());
-    if(result)
-    {
-        uint32 id = (*result)[0].GetUInt32();
-        delete result;
-        return id;
-    }
-
-    return 0;
-}
-
 void ObjectMgr::LoadAuctions()
 {
@@ -1399,4 +1363,6 @@
 void ObjectMgr::LoadItemLocales()
 {
+    mItemLocaleMap.clear();
+    
     QueryResult *result = WorldDatabase.Query("SELECT entry,name_loc1,description_loc1,name_loc2,description_loc2,name_loc3,description_loc3,name_loc4,description_loc4,name_loc5,description_loc5,name_loc6,description_loc6,name_loc7,description_loc7,name_loc8,description_loc8 FROM locales_item");
 
@@ -3420,4 +3386,6 @@
 void ObjectMgr::LoadQuestLocales()
 {
+    mQuestLocaleMap.clear();
+
     QueryResult *result = WorldDatabase.Query("SELECT entry,"
         "Title_loc1,Details_loc1,Objectives_loc1,OfferRewardText_loc1,RequestItemsText_loc1,EndText_loc1,ObjectiveText1_loc1,ObjectiveText2_loc1,ObjectiveText3_loc1,ObjectiveText4_loc1,"
@@ -4015,4 +3983,6 @@
 void ObjectMgr::LoadPageTextLocales()
 {
+    mPageTextLocaleMap.clear();
+    
     QueryResult *result = WorldDatabase.PQuery("SELECT entry,text_loc1,text_loc2,text_loc3,text_loc4,text_loc5,text_loc6,text_loc7,text_loc8 FROM locales_page_text");
 
@@ -4181,4 +4151,6 @@
 void ObjectMgr::LoadNpcTextLocales()
 {
+    mNpcTextLocaleMap.clear();
+    
     QueryResult *result = WorldDatabase.Query("SELECT entry,"
         "Text0_0_loc1,Text0_1_loc1,Text1_0_loc1,Text1_1_loc1,Text2_0_loc1,Text2_1_loc1,Text3_0_loc1,Text3_1_loc1,Text4_0_loc1,Text4_1_loc1,Text5_0_loc1,Text5_1_loc1,Text6_0_loc1,Text6_1_loc1,Text7_0_loc1,Text7_1_loc1,"
@@ -5204,4 +5176,6 @@
 void ObjectMgr::LoadGameObjectLocales()
 {
+    mGameObjectLocaleMap.clear();
+    
     QueryResult *result = WorldDatabase.Query("SELECT entry,"
         "name_loc1,name_loc2,name_loc3,name_loc4,name_loc5,name_loc6,name_loc7,name_loc8,"
Index: trunk/src/game/SpellMgr.cpp
===================================================================
--- trunk/src/game/SpellMgr.cpp (revision 73)
+++ trunk/src/game/SpellMgr.cpp (revision 79)
@@ -326,4 +326,7 @@
                         case 13139:                         // net-o-matic special effect
                         case 23445:                         // evil twin
+                        case 38637:                         // Nether Exhaustion (red)
+                        case 38638:                         // Nether Exhaustion (green)
+                        case 38639:                         // Nether Exhaustion (blue)
                             return false;
                         default:
Index: trunk/src/trinitycore/CliRunnable.cpp
===================================================================
--- trunk/src/trinitycore/CliRunnable.cpp (revision 78)
+++ trunk/src/trinitycore/CliRunnable.cpp (revision 79)
@@ -169,5 +169,5 @@
     }
 
-    uint32 account_id = objmgr.GetAccountByAccountName(acc);
+    uint32 account_id = accmgr.GetId(acc);
     if(!account_id)
     {
@@ -176,5 +176,5 @@
         {
             std::string acc_name;
-            if(!objmgr.GetAccountNameByAccount(account_id,acc_name))
+            if(!accmgr.GetName(account_id,acc_name))
             {
                 zprintf("Failed to load the character! Account not exist.\r\n");
