aboutsummaryrefslogtreecommitdiff
path: root/src/server/game/Tools/CharacterDatabaseCleaner.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'src/server/game/Tools/CharacterDatabaseCleaner.cpp')
-rw-r--r--src/server/game/Tools/CharacterDatabaseCleaner.cpp10
1 files changed, 7 insertions, 3 deletions
diff --git a/src/server/game/Tools/CharacterDatabaseCleaner.cpp b/src/server/game/Tools/CharacterDatabaseCleaner.cpp
index 7e6dcc64508..1724aa6d93b 100644
--- a/src/server/game/Tools/CharacterDatabaseCleaner.cpp
+++ b/src/server/game/Tools/CharacterDatabaseCleaner.cpp
@@ -38,8 +38,7 @@ void CharacterDatabaseCleaner::CleanDatabase()
return;
uint32 flags = (*result)[0].GetUInt32();
- sWorld->SetCleaningFlags(flags);
-
+
// clean up
if (flags & CLEANING_FLAG_ACHIEVEMENT_PROGRESS)
CleanCharacterAchievementProgress();
@@ -56,7 +55,12 @@ void CharacterDatabaseCleaner::CleanDatabase()
if (flags & CLEANING_FLAG_QUESTSTATUS)
CleanCharacterQuestStatus();
- CharacterDatabase.DirectPExecute("UPDATE worldstates SET value = value & %u WHERE entry = 20004", sWorld->getIntConfig(CONFIG_PERSISTENT_CHARACTER_CLEAN_FLAGS));
+ // NOTE: In order to have persistentFlags be set in worldstates for the next cleanup,
+ // you need to define them at least once in worldstates.
+ flags &= sWorld->getIntConfig(CONFIG_PERSISTENT_CHARACTER_CLEAN_FLAGS);
+ CharacterDatabase.DirectPExecute("UPDATE worldstates SET value = %u WHERE entry = 20004", flags);
+
+ sWorld->SetCleaningFlags(flags);
sLog->outString(">> Cleaned character database in %u ms", GetMSTimeDiffToNow(oldMSTime));
sLog->outString();