mirror of
https://github.com/araxiaonline/TrinityCore.git
synced 2026-06-20 06:59:46 -04:00
Core/Achievements: Fixed crash in CheckAllAchievementCriteria
This commit is contained in:
@@ -817,6 +817,11 @@ void AchievementMgr<Guild>::LoadFromDB(PreparedQueryResult achievementResult, Pr
|
||||
|
||||
template<class T>
|
||||
void AchievementMgr<T>::Reset()
|
||||
{
|
||||
}
|
||||
|
||||
template<>
|
||||
void AchievementMgr<Player>::Reset()
|
||||
{
|
||||
for (CompletedAchievementMap::const_iterator iter = m_completedAchievements.begin(); iter != m_completedAchievements.end(); ++iter)
|
||||
{
|
||||
@@ -837,7 +842,7 @@ void AchievementMgr<T>::Reset()
|
||||
DeleteFromDB(_owner->GetGUIDLow());
|
||||
|
||||
// re-fill data
|
||||
CheckAllAchievementCriteria();
|
||||
CheckAllAchievementCriteria(GetOwner());
|
||||
}
|
||||
|
||||
template<>
|
||||
@@ -874,9 +879,6 @@ void AchievementMgr<Guild>::Reset()
|
||||
|
||||
m_completedAchievements.clear();
|
||||
DeleteFromDB(_owner->GetId());
|
||||
|
||||
// re-fill data
|
||||
CheckAllAchievementCriteria();
|
||||
}
|
||||
|
||||
template<class T>
|
||||
@@ -1040,11 +1042,11 @@ void AchievementMgr<Guild>::SendCriteriaUpdate(AchievementCriteriaEntry const* e
|
||||
* called at player login. The player might have fulfilled some achievements when the achievement system wasn't working yet
|
||||
*/
|
||||
template<class T>
|
||||
void AchievementMgr<T>::CheckAllAchievementCriteria()
|
||||
void AchievementMgr<T>::CheckAllAchievementCriteria(Player* referencePlayer)
|
||||
{
|
||||
// suppress sending packets
|
||||
for (uint32 i=0; i<ACHIEVEMENT_CRITERIA_TYPE_TOTAL; ++i)
|
||||
UpdateAchievementCriteria(AchievementCriteriaTypes(i));
|
||||
UpdateAchievementCriteria(AchievementCriteriaTypes(i), 0, 0, NULL, referencePlayer);
|
||||
}
|
||||
|
||||
static const uint32 achievIdByArenaSlot[MAX_ARENA_SLOT] = { 1057, 1107, 1108 };
|
||||
|
||||
@@ -235,7 +235,7 @@ class AchievementMgr
|
||||
void ResetAchievementCriteria(AchievementCriteriaTypes type, uint32 miscvalue1 = 0, uint32 miscvalue2 = 0, bool evenIfCriteriaComplete = false);
|
||||
void UpdateAchievementCriteria(AchievementCriteriaTypes type, uint32 miscValue1 = 0, uint32 miscValue2 = 0, Unit* unit = NULL, Player* referencePlayer = NULL);
|
||||
void CompletedAchievement(AchievementEntry const* entry, Player* referencePlayer);
|
||||
void CheckAllAchievementCriteria();
|
||||
void CheckAllAchievementCriteria(Player* referencePlayer);
|
||||
void SendAllAchievementData(Player* receiver) const;
|
||||
void SendAchievementInfo(Player* receiver, uint32 achievementId = 0) const;
|
||||
bool HasAchieved(uint32 achievementId) const;
|
||||
|
||||
@@ -17456,7 +17456,7 @@ bool Player::LoadFromDB(uint32 guid, SQLQueryHolder *holder)
|
||||
|
||||
_LoadDeclinedNames(holder->GetPreparedResult(PLAYER_LOGIN_QUERY_LOADDECLINEDNAMES));
|
||||
|
||||
m_achievementMgr.CheckAllAchievementCriteria();
|
||||
m_achievementMgr.CheckAllAchievementCriteria(this);
|
||||
|
||||
_LoadEquipmentSets(holder->GetPreparedResult(PLAYER_LOGIN_QUERY_LOADEQUIPMENTSETS));
|
||||
|
||||
|
||||
Reference in New Issue
Block a user