diff --git a/src/server/game/Server/WorldSession.h b/src/server/game/Server/WorldSession.h index 5d46cfdee..38700b33a 100644 --- a/src/server/game/Server/WorldSession.h +++ b/src/server/game/Server/WorldSession.h @@ -516,8 +516,8 @@ public: time_t m_muteTime; // Locales - LocaleConstant GetSessionDbcLocale() const { return m_sessionDbcLocale; } - LocaleConstant GetSessionDbLocaleIndex() const { return m_sessionDbLocaleIndex; } + LocaleConstant GetSessionDbcLocale() const { return _isBot? LOCALE_enUS : m_sessionDbcLocale; } + LocaleConstant GetSessionDbLocaleIndex() const { return _isBot? LOCALE_enUS : m_sessionDbLocaleIndex; } char const* GetAcoreString(uint32 entry) const; uint32 GetLatency() const { return m_latency; } diff --git a/src/server/shared/DataStores/DBCDatabaseLoader.cpp b/src/server/shared/DataStores/DBCDatabaseLoader.cpp index e24fea285..2511ef69f 100644 --- a/src/server/shared/DataStores/DBCDatabaseLoader.cpp +++ b/src/server/shared/DataStores/DBCDatabaseLoader.cpp @@ -28,8 +28,7 @@ DBCDatabaseLoader::DBCDatabaseLoader(char const* tableName, char const* dbcForma _stringPool(stringPool) { // Get sql index position - int32 indexPos = -1; - _recordSize = DBCFileLoader::GetFormatRecordSize(_dbcFormat, &indexPos); + _recordSize = DBCFileLoader::GetFormatRecordSize(_dbcFormat, &_sqlIndexPos); ASSERT(_recordSize); } @@ -71,11 +70,11 @@ char* DBCDatabaseLoader::Load(uint32& records, char**& indexTable) { Field* fields = result->Fetch(); uint32 indexValue = fields[_sqlIndexPos].Get(); - char* dataValue = indexTable[indexValue]; + char* oldDataValue = indexTable[indexValue]; // If exist in DBC file override from DB newIndexes[newRecords] = indexValue; - dataValue = &dataTable[newRecords++ * _recordSize]; + char* dataValue = &dataTable[newRecords++ * _recordSize]; uint32 dataOffset = 0; uint32 sqlColumnNumber = 0; @@ -99,7 +98,15 @@ char* DBCDatabaseLoader::Load(uint32& records, char**& indexTable) dataOffset += sizeof(uint8); break; case FT_STRING: - *reinterpret_cast(&dataValue[dataOffset]) = CloneStringToPool(fields[sqlColumnNumber].Get()); + // not override string if new string is empty + if (fields[sqlColumnNumber].Get().empty() && oldDataValue) + { + *reinterpret_cast(&dataValue[dataOffset]) = *reinterpret_cast(&oldDataValue[dataOffset]); + } + else + { + *reinterpret_cast(&dataValue[dataOffset]) = CloneStringToPool(fields[sqlColumnNumber].Get()); + } dataOffset += sizeof(char*); break; case FT_SORT: