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