fix(Scripts/Commands): Fix level up achievements not being granted (#19969)

This commit is contained in:
Andrew
2024-09-15 15:55:45 -03:00
committed by GitHub
parent 04c8e85434
commit ee6e74eb3c
2 changed files with 9 additions and 2 deletions

View File

@@ -987,8 +987,12 @@ void WorldSession::HandlePlayerLoginFromDB(LoginQueryHolder const& holder)
if (pCurrChar->HasAtLoginFlag(AT_LOGIN_CHECK_ACHIEVS))
{
pCurrChar->RemoveAtLoginFlag(AT_LOGIN_CHECK_ACHIEVS, true);
pCurrChar->CheckAllAchievementCriteria();
// If we process the check while players are loading they won't be notified of the changes.
pCurrChar->m_Events.AddEventAtOffset([pCurrChar]
{
pCurrChar->RemoveAtLoginFlag(AT_LOGIN_CHECK_ACHIEVS, true);
pCurrChar->CheckAllAchievementCriteria();
}, 1s);
}
bool firstLogin = pCurrChar->HasAtLoginFlag(AT_LOGIN_FIRST);

View File

@@ -23,6 +23,7 @@ Category: commandscripts
EndScriptData */
#include "AccountMgr.h"
#include "AchievementMgr.h"
#include "Chat.h"
#include "CommandScript.h"
#include "DBCStores.h"
@@ -272,6 +273,8 @@ public:
stmt->SetData(1, playerGuid.GetCounter());
CharacterDatabase.Execute(stmt);
sAchievementMgr->UpdateAchievementCriteriaForOfflinePlayer(playerGuid.GetCounter(), ACHIEVEMENT_CRITERIA_TYPE_REACH_LEVEL);
sCharacterCache->UpdateCharacterLevel(playerGuid, newLevel);
}
}