Core/Achievements: Refactored HasAchieved to take only achievement id as parameter
This commit is contained in:
@@ -451,7 +451,7 @@ void AchievementMgr::ResetAchievementCriteria(AchievementCriteriaTypes type, uin
|
||||
continue;
|
||||
|
||||
// don't update already completed criteria if not forced or achievement already complete
|
||||
if ((IsCompletedCriteria(achievementCriteria, achievement) && !evenIfCriteriaComplete) || HasAchieved(achievement))
|
||||
if ((IsCompletedCriteria(achievementCriteria, achievement) && !evenIfCriteriaComplete) || HasAchieved(achievement->ID))
|
||||
continue;
|
||||
|
||||
for (uint8 j = 0; j < MAX_CRITERIA_REQUIREMENTS; ++j)
|
||||
@@ -1766,7 +1766,7 @@ void AchievementMgr::CompletedCriteriaFor(AchievementEntry const* achievement)
|
||||
return;
|
||||
|
||||
// already completed and stored
|
||||
if (HasAchieved(achievement))
|
||||
if (HasAchieved(achievement->ID))
|
||||
return;
|
||||
|
||||
if (IsCompletedAchievement(achievement))
|
||||
@@ -2000,7 +2000,7 @@ void AchievementMgr::CompletedAchievement(AchievementEntry const* achievement)
|
||||
if (m_player->isGameMaster())
|
||||
return;
|
||||
|
||||
if (achievement->flags & ACHIEVEMENT_FLAG_COUNTER || HasAchieved(achievement))
|
||||
if (achievement->flags & ACHIEVEMENT_FLAG_COUNTER || HasAchieved(achievement->ID))
|
||||
return;
|
||||
|
||||
SendAchievementEarned(achievement);
|
||||
@@ -2115,9 +2115,9 @@ void AchievementMgr::BuildAllDataPacket(WorldPacket* data) const
|
||||
*data << int32(-1);
|
||||
}
|
||||
|
||||
bool AchievementMgr::HasAchieved(AchievementEntry const* achievement) const
|
||||
bool AchievementMgr::HasAchieved(uint32 achievementId) const
|
||||
{
|
||||
return m_completedAchievements.find(achievement->ID) != m_completedAchievements.end();
|
||||
return m_completedAchievements.find(achievementId) != m_completedAchievements.end();
|
||||
}
|
||||
|
||||
bool AchievementMgr::CanUpdateCriteria(AchievementCriteriaEntry const* criteria, AchievementEntry const* achievement)
|
||||
|
||||
@@ -257,7 +257,7 @@ class AchievementMgr
|
||||
void CheckAllAchievementCriteria();
|
||||
void SendAllAchievementData() const;
|
||||
void SendRespondInspectAchievements(Player* player) const;
|
||||
bool HasAchieved(AchievementEntry const* achievement) const;
|
||||
bool HasAchieved(uint32 achievementId) const;
|
||||
Player* GetPlayer() const { return m_player; }
|
||||
void UpdateTimedAchievements(uint32 timeDiff);
|
||||
void StartTimedAchievement(AchievementCriteriaTimedTypes type, uint32 entry, uint32 timeLost = 0);
|
||||
|
||||
@@ -67,11 +67,8 @@ bool Condition::Meets(Player* player, Unit* invoker)
|
||||
break;
|
||||
}
|
||||
case CONDITION_ACHIEVEMENT:
|
||||
{
|
||||
AchievementEntry const* achievement = GetAchievementStore()->LookupEntry(mConditionValue1);
|
||||
condMeets = player->GetAchievementMgr().HasAchieved(achievement);
|
||||
condMeets = player->GetAchievementMgr().HasAchieved(mConditionValue1);
|
||||
break;
|
||||
}
|
||||
case CONDITION_TEAM:
|
||||
condMeets = player->GetTeam() == mConditionValue1;
|
||||
break;
|
||||
|
||||
@@ -389,7 +389,7 @@ void LFGMgr::InitializeLockedDungeons(Player* player)
|
||||
locktype = LFG_LOCKSTATUS_TOO_HIGH_LEVEL;
|
||||
else if (locktype == LFG_LOCKSTATUS_OK && ar)
|
||||
{
|
||||
if (ar->achievement && !player->GetAchievementMgr().HasAchieved(sAchievementStore.LookupEntry(ar->achievement)))
|
||||
if (ar->achievement && !player->GetAchievementMgr().HasAchieved(ar->achievement))
|
||||
locktype = LFG_LOCKSTATUS_RAID_LOCKED; // FIXME: Check the correct lock value
|
||||
else if (player->GetTeam() == ALLIANCE && ar->quest_A && !player->GetQuestRewardStatus(ar->quest_A))
|
||||
locktype = LFG_LOCKSTATUS_QUEST_NOT_COMPLETED;
|
||||
|
||||
@@ -18121,7 +18121,7 @@ bool Player::Satisfy(AccessRequirement const* ar, uint32 target_map, bool report
|
||||
missingQuest = ar->quest_H;
|
||||
|
||||
uint32 missingAchievement = 0;
|
||||
if (ar->achievement && !GetAchievementMgr().HasAchieved(sAchievementStore.LookupEntry(ar->achievement)))
|
||||
if (ar->achievement && !GetAchievementMgr().HasAchieved(ar->achievement))
|
||||
missingAchievement = ar->achievement;
|
||||
|
||||
Difficulty target_difficulty = GetDifficulty(mapEntry->IsRaid());
|
||||
|
||||
Reference in New Issue
Block a user