diff --git a/src/server/game/Server/WorldSession.cpp b/src/server/game/Server/WorldSession.cpp index 5f13558e8..a337fb4ad 100644 --- a/src/server/game/Server/WorldSession.cpp +++ b/src/server/game/Server/WorldSession.cpp @@ -804,15 +804,12 @@ void WorldSession::SaveTutorialsData(SQLTransaction &trans) if (!m_TutorialsChanged) return; - bool hasTutorials = false; - for (uint8 i = 0; i < MAX_ACCOUNT_TUTORIAL_VALUES; ++i) - if (m_Tutorials[i] != 0) - { - hasTutorials = true; - break; - } + PreparedStatement* stmt = CharacterDatabase.GetPreparedStatement(CHAR_SEL_HAS_TUTORIALS); + stmt->setUInt32(0, GetAccountId()); + bool hasTutorials = bool(CharacterDatabase.Query(stmt)); + + stmt = CharacterDatabase.GetPreparedStatement(hasTutorials ? CHAR_UPD_TUTORIALS : CHAR_INS_TUTORIALS); - PreparedStatement* stmt = CharacterDatabase.GetPreparedStatement(hasTutorials ? CHAR_UPD_TUTORIALS : CHAR_INS_TUTORIALS); for (uint8 i = 0; i < MAX_ACCOUNT_TUTORIAL_VALUES; ++i) stmt->setUInt32(i, m_Tutorials[i]); stmt->setUInt32(MAX_ACCOUNT_TUTORIAL_VALUES, GetAccountId());