From 2057f7d01d91ce65195d9196e0f23ef46b666059 Mon Sep 17 00:00:00 2001 From: Machiavelli Date: Sat, 15 Aug 2009 17:05:34 +0200 Subject: *Fix logical error in Player::LoadFromDB regarding dual speccing, and relocate code for consistency --HG-- branch : trunk --- src/game/Player.cpp | 17 ++++++++++------- 1 file changed, 10 insertions(+), 7 deletions(-) (limited to 'src/game/Player.cpp') diff --git a/src/game/Player.cpp b/src/game/Player.cpp index 24b7d336d62..463398eeab2 100644 --- a/src/game/Player.cpp +++ b/src/game/Player.cpp @@ -14644,13 +14644,6 @@ bool Player::LoadFromDB( uint32 guid, SqlQueryHolder *holder ) return false; } - m_specsCount = fields[42].GetUInt32(); - m_activeSpec = fields[43].GetUInt32(); - - // sanity check - if (m_specsCount < 2) // Maybe better to check MAX_TALENT_SPECS? - m_activeSpec = 0; - Object::_Create( guid, 0, HIGHGUID_PLAYER ); m_name = fields[3].GetCppString(); @@ -15070,7 +15063,17 @@ bool Player::LoadFromDB( uint32 guid, SqlQueryHolder *holder ) //mails are loaded only when needed ;-) - when player in game click on mailbox. //_LoadMail(); + + m_specsCount = fields[42].GetUInt32(); + m_activeSpec = fields[43].GetUInt32(); + // sanity check + if (m_specsCount > MAX_TALENT_SPECS || m_activeSpec > MAX_TALENT_SPECS) // if (m_specsCount < 2) is not logical + { + m_activeSpec = 0; + sLog.outError("Player %s(GUID: %u) has SpecCount = %u and ActiveSpec = %u.", GetName(), GetGUIDLow(), m_specsCount, m_activeSpec); + } + _LoadTalents(holder->GetResult(PLAYER_LOGIN_QUERY_LOADTALENTS)); _LoadSpells(holder->GetResult(PLAYER_LOGIN_QUERY_LOADSPELLS)); -- cgit v1.2.3