@@ -426,7 +426,7 @@ bool AchievementCriteriaData::Meets(uint32 criteria_id, Player const* source, Wo
426426 }
427427 case ACHIEVEMENT_CRITERIA_DATA_TYPE_S_EQUIPPED_ITEM:
428428 {
429- AchievementCriteriaEntry const * entry = ASSERT_NOTNULL ( sAchievementMgr -> GetAchievementCriteria ( criteria_id) );
429+ AchievementCriteriaEntry const * entry = sAchievementCriteriaStore . AssertEntry ( criteria_id);
430430
431431 uint32 itemId = (entry->Type == ACHIEVEMENT_CRITERIA_TYPE_EQUIP_EPIC_ITEM ? miscValue2 : miscValue1);
432432 ItemTemplate const * itemTemplate = sObjectMgr ->GetItemTemplate (itemId);
@@ -477,9 +477,8 @@ bool AchievementCriteriaDataSet::Meets(Player const* source, WorldObject const*
477477 return true ;
478478}
479479
480- AchievementMgr::AchievementMgr (Player* player)
480+ AchievementMgr::AchievementMgr (Player* player) : m_player(player), m_achievementPoints( 0 )
481481{
482- m_player = player;
483482}
484483
485484AchievementMgr::~AchievementMgr () { }
@@ -501,6 +500,7 @@ void AchievementMgr::Reset()
501500 }
502501
503502 m_completedAchievements.clear ();
503+ m_achievementPoints = 0 ;
504504 m_criteriaProgress.clear ();
505505 DeleteFromDB (m_player->GetGUID ());
506506
@@ -522,7 +522,7 @@ void AchievementMgr::ResetAchievementCriteria(AchievementCriteriaCondition condi
522522
523523 for (AchievementCriteriaEntry const * achievementCriteria : *achievementCriteriaList)
524524 {
525- AchievementEntry const * achievement = sAchievementMgr -> GetAchievement (achievementCriteria->AchievementID );
525+ AchievementEntry const * achievement = sAchievementStore . LookupEntry (achievementCriteria->AchievementID );
526526 if (!achievement)
527527 continue ;
528528
@@ -610,14 +610,16 @@ void AchievementMgr::LoadFromDB(PreparedQueryResult achievementResult, PreparedQ
610610 uint32 achievementid = fields[0 ].GetUInt16 ();
611611
612612 // must not happen: cleanup at server startup in sAchievementMgr->LoadCompletedAchievements()
613- AchievementEntry const * achievement = sAchievementMgr -> GetAchievement (achievementid);
613+ AchievementEntry const * achievement = sAchievementStore . LookupEntry (achievementid);
614614 if (!achievement)
615615 continue ;
616616
617617 CompletedAchievementData& ca = m_completedAchievements[achievementid];
618618 ca.date = time_t (fields[1 ].GetUInt32 ());
619619 ca.changed = false ;
620620
621+ m_achievementPoints += achievement->Points ;
622+
621623 // title achievement rewards are retroactive
622624 if (AchievementReward const * reward = sAchievementMgr ->GetAchievementReward (achievement))
623625 if (uint32 titleId = reward->TitleId [Player::TeamForRace (GetPlayer ()->GetRace ()) == ALLIANCE ? 0 : 1 ])
@@ -636,7 +638,7 @@ void AchievementMgr::LoadFromDB(PreparedQueryResult achievementResult, PreparedQ
636638 uint32 counter = fields[1 ].GetUInt32 ();
637639 time_t date = time_t (fields[2 ].GetUInt32 ());
638640
639- AchievementCriteriaEntry const * criteria = sAchievementMgr -> GetAchievementCriteria (id);
641+ AchievementCriteriaEntry const * criteria = sAchievementCriteriaStore . LookupEntry (id);
640642 if (!criteria)
641643 {
642644 // Removing non-existing criteria data for all characters
@@ -784,7 +786,7 @@ void AchievementMgr::UpdateAchievementCriteria(AchievementCriteriaTypes type, ui
784786 AchievementCriteriaEntryList const & achievementCriteriaList = sAchievementMgr ->GetAchievementCriteriaByType (type, miscValue1);
785787 for (AchievementCriteriaEntry const * achievementCriteria : achievementCriteriaList)
786788 {
787- AchievementEntry const * achievement = sAchievementMgr -> GetAchievement (achievementCriteria->AchievementID );
789+ AchievementEntry const * achievement = sAchievementStore . LookupEntry (achievementCriteria->AchievementID );
788790 if (!CanUpdateCriteria (achievementCriteria, achievement, miscValue1, miscValue2, ref))
789791 continue ;
790792
@@ -1051,13 +1053,7 @@ void AchievementMgr::UpdateAchievementCriteria(AchievementCriteriaTypes type, ui
10511053 break ;
10521054 case ACHIEVEMENT_CRITERIA_TYPE_EARN_ACHIEVEMENT_POINTS:
10531055 if (!miscValue1)
1054- {
1055- uint32 points = 0 ;
1056- for (std::pair<uint32 const , CompletedAchievementData> const & completedAchievement : m_completedAchievements)
1057- if (AchievementEntry const * completedAchievements = sAchievementMgr ->GetAchievement (completedAchievement.first ))
1058- points += completedAchievements->Points ;
1059- SetCriteriaProgress (achievementCriteria, points, PROGRESS_SET);
1060- }
1056+ SetCriteriaProgress (achievementCriteria, m_achievementPoints, PROGRESS_SET);
10611057 else
10621058 SetCriteriaProgress (achievementCriteria, miscValue1, PROGRESS_ACCUMULATE);
10631059 break ;
@@ -1174,7 +1170,7 @@ bool AchievementMgr::IsCompletedCriteria(AchievementCriteriaEntry const* achieve
11741170 if (!progress)
11751171 return false ;
11761172
1177- switch (achievementCriteria->Type )
1173+ switch (AchievementCriteriaTypes ( achievementCriteria->Type ) )
11781174 {
11791175 case ACHIEVEMENT_CRITERIA_TYPE_WIN_BG:
11801176 case ACHIEVEMENT_CRITERIA_TYPE_KILL_CREATURE:
@@ -1274,6 +1270,7 @@ bool AchievementMgr::IsCompletedCriteria(AchievementCriteriaEntry const* achieve
12741270 default :
12751271 break ;
12761272 }
1273+
12771274 return false ;
12781275}
12791276
@@ -1415,7 +1412,7 @@ void AchievementMgr::SetCriteriaProgress(AchievementCriteriaEntry const* entry,
14151412 if (entry->StartTimer )
14161413 {
14171414 // has to exist, otherwise we wouldn't be here
1418- timedCompleted = IsCompletedCriteria (entry, sAchievementMgr -> GetAchievement (entry->AchievementID ));
1415+ timedCompleted = IsCompletedCriteria (entry, sAchievementStore . LookupEntry (entry->AchievementID ));
14191416 // Client expects this in packet
14201417 timeElapsed = entry->StartTimer - (timedIter->second /IN_MILLISECONDS);
14211418
@@ -1452,7 +1449,7 @@ void AchievementMgr::UpdateTimedAchievements(uint32 timeDiff)
14521449 // Time is up, remove timer and reset progress
14531450 if (itr->second <= timeDiff)
14541451 {
1455- AchievementCriteriaEntry const * entry = sAchievementMgr -> GetAchievementCriteria (itr->first );
1452+ AchievementCriteriaEntry const * entry = sAchievementCriteriaStore . LookupEntry (itr->first );
14561453 RemoveCriteriaProgress (entry);
14571454 m_timedAchievements.erase (itr++);
14581455 }
@@ -1472,7 +1469,7 @@ void AchievementMgr::StartTimedAchievement(AchievementCriteriaTimedTypes type, u
14721469 if (criteria->StartAsset != entry)
14731470 continue ;
14741471
1475- AchievementEntry const * achievement = sAchievementMgr -> GetAchievement (criteria->AchievementID );
1472+ AchievementEntry const * achievement = sAchievementStore . LookupEntry (criteria->AchievementID );
14761473 if (m_timedAchievements.find (criteria->ID ) == m_timedAchievements.end () && !IsCompletedCriteria (criteria, achievement))
14771474 {
14781475 // Start the timer
@@ -1527,6 +1524,8 @@ void AchievementMgr::CompletedAchievement(AchievementEntry const* achievement)
15271524 if (achievement->Flags & (ACHIEVEMENT_FLAG_REALM_FIRST_REACH | ACHIEVEMENT_FLAG_REALM_FIRST_KILL))
15281525 sAchievementMgr ->SetRealmCompleted (achievement);
15291526
1527+ m_achievementPoints += achievement->Points ;
1528+
15301529 UpdateAchievementCriteria (ACHIEVEMENT_CRITERIA_TYPE_COMPLETE_ACHIEVEMENT, achievement->ID );
15311530 UpdateAchievementCriteria (ACHIEVEMENT_CRITERIA_TYPE_EARN_ACHIEVEMENT_POINTS, achievement->Points );
15321531
@@ -1610,7 +1609,7 @@ void AchievementMgr::BuildAllDataPacket(Player const* receiver, WorldPacket* dat
16101609 for (std::pair<uint32 const , CompletedAchievementData> const & completedAchievement : m_completedAchievements)
16111610 {
16121611 // Skip hidden achievements
1613- AchievementEntry const * achievement = sAchievementMgr -> GetAchievement (completedAchievement.first );
1612+ AchievementEntry const * achievement = sAchievementStore . LookupEntry (completedAchievement.first );
16141613 if (!achievement || achievement->Flags & ACHIEVEMENT_FLAG_HIDDEN)
16151614 continue ;
16161615
@@ -2333,11 +2332,11 @@ void AchievementGlobalMgr::LoadAchievementCriteriaList()
23332332 uint32 loaded = 0 ;
23342333 for (uint32 entryId = 0 ; entryId < sAchievementCriteriaStore .GetNumRows (); ++entryId)
23352334 {
2336- AchievementCriteriaEntry const * criteria = sAchievementMgr -> GetAchievementCriteria (entryId);
2335+ AchievementCriteriaEntry const * criteria = sAchievementCriteriaStore . LookupEntry (entryId);
23372336 if (!criteria)
23382337 continue ;
23392338
2340- if (!GetAchievement (criteria->AchievementID ))
2339+ if (!sAchievementStore . LookupEntry (criteria->AchievementID ))
23412340 {
23422341 TC_LOG_DEBUG (" server.loading" , " Achievement {} referenced by criteria {} doesn't exist, criteria not loaded." , criteria->AchievementID , criteria->ID );
23432342 continue ;
@@ -2415,7 +2414,7 @@ void AchievementGlobalMgr::LoadAchievementReferenceList()
24152414
24162415 for (uint32 entryId = 0 ; entryId < sAchievementStore .GetNumRows (); ++entryId)
24172416 {
2418- AchievementEntry const * achievement = sAchievementMgr -> GetAchievement (entryId);
2417+ AchievementEntry const * achievement = sAchievementStore . LookupEntry (entryId);
24192418 if (!achievement || !achievement->SharesCriteria )
24202419 continue ;
24212420
@@ -2424,7 +2423,7 @@ void AchievementGlobalMgr::LoadAchievementReferenceList()
24242423 }
24252424
24262425 // Once Bitten, Twice Shy (10 player) - Icecrown Citadel
2427- if (AchievementEntry const * achievement = sAchievementMgr -> GetAchievement (4539 ))
2426+ if (AchievementEntry const * achievement = sAchievementStore . LookupEntry (4539 ))
24282427 const_cast <AchievementEntry*>(achievement)->InstanceID = 631 ; // Correct map requirement (currently has Ulduar)
24292428
24302429 TC_LOG_INFO (" server.loading" , " >> Loaded {} achievement references in {} ms." , count, GetMSTimeDiffToNow (oldMSTime));
@@ -2451,7 +2450,7 @@ void AchievementGlobalMgr::LoadAchievementCriteriaData()
24512450 Field* fields = result->Fetch ();
24522451 uint32 criteria_id = fields[0 ].GetUInt32 ();
24532452
2454- AchievementCriteriaEntry const * criteria = sAchievementMgr -> GetAchievementCriteria (criteria_id);
2453+ AchievementCriteriaEntry const * criteria = sAchievementCriteriaStore . LookupEntry (criteria_id);
24552454
24562455 if (!criteria)
24572456 {
@@ -2491,7 +2490,7 @@ void AchievementGlobalMgr::LoadAchievementCriteriaData()
24912490 // post loading checks
24922491 for (uint32 entryId = 0 ; entryId < sAchievementCriteriaStore .GetNumRows (); ++entryId)
24932492 {
2494- AchievementCriteriaEntry const * criteria = sAchievementMgr -> GetAchievementCriteria (entryId);
2493+ AchievementCriteriaEntry const * criteria = sAchievementCriteriaStore . LookupEntry (entryId);
24952494 if (!criteria)
24962495 continue ;
24972496
@@ -2517,7 +2516,7 @@ void AchievementGlobalMgr::LoadAchievementCriteriaData()
25172516 break ;
25182517 case ACHIEVEMENT_CRITERIA_TYPE_COMPLETE_QUEST:
25192518 {
2520- AchievementEntry const * achievement = sAchievementMgr -> GetAchievement (criteria->AchievementID );
2519+ AchievementEntry const * achievement = sAchievementStore . LookupEntry (criteria->AchievementID );
25212520 if (!achievement)
25222521 continue ;
25232522
@@ -2546,7 +2545,7 @@ void AchievementGlobalMgr::LoadAchievementCriteriaData()
25462545 case ACHIEVEMENT_CRITERIA_TYPE_COMPLETE_DAILY_QUEST:
25472546 case ACHIEVEMENT_CRITERIA_TYPE_USE_ITEM: // only Children's Week achievements
25482547 {
2549- AchievementEntry const * achievement = sAchievementMgr -> GetAchievement (criteria->AchievementID );
2548+ AchievementEntry const * achievement = sAchievementStore . LookupEntry (criteria->AchievementID );
25502549 if (!achievement)
25512550 continue ;
25522551 if (achievement->Category != CATEGORY_CHILDRENS_WEEK && achievement->ID != 1785 )
@@ -2589,7 +2588,7 @@ void AchievementGlobalMgr::LoadCompletedAchievements()
25892588 Field* fields = result->Fetch ();
25902589
25912590 uint16 achievementId = fields[0 ].GetUInt16 ();
2592- AchievementEntry const * achievement = sAchievementMgr -> GetAchievement (achievementId);
2591+ AchievementEntry const * achievement = sAchievementStore . LookupEntry (achievementId);
25932592 if (!achievement)
25942593 {
25952594 // Remove non-existing achievements from all characters
@@ -2628,7 +2627,7 @@ void AchievementGlobalMgr::LoadRewards()
26282627 {
26292628 Field* fields = result->Fetch ();
26302629 uint32 id = fields[0 ].GetUInt32 ();
2631- AchievementEntry const * achievement = GetAchievement (id);
2630+ AchievementEntry const * achievement = sAchievementStore . LookupEntry (id);
26322631 if (!achievement)
26332632 {
26342633 TC_LOG_ERROR (" sql.sql" , " Table `achievement_reward` contains a wrong achievement ID ({}), ignored." , id);
@@ -2763,13 +2762,3 @@ void AchievementGlobalMgr::LoadRewardLocales()
27632762
27642763 TC_LOG_INFO (" server.loading" , " >> Loaded {} achievement reward locale strings in {} ms." , uint32 (m_achievementRewardLocales.size ()), GetMSTimeDiffToNow (oldMSTime));
27652764}
2766-
2767- AchievementEntry const * AchievementGlobalMgr::GetAchievement (uint32 achievementId) const
2768- {
2769- return sAchievementStore .LookupEntry (achievementId);
2770- }
2771-
2772- AchievementCriteriaEntry const * AchievementGlobalMgr::GetAchievementCriteria (uint32 criteriaId) const
2773- {
2774- return sAchievementCriteriaStore .LookupEntry (criteriaId);
2775- }
0 commit comments