From a07f73c846681ff33bbc4ab341e215c9b3bff47a Mon Sep 17 00:00:00 2001 From: xinef1 Date: Sun, 29 Jan 2017 16:10:03 +0100 Subject: [PATCH] Core/Achievements: Mountain o' Mounts and similar achievement will be properly awarded when you have required amount of mounts, not earlier (#19002) (cherry picked from commit 8646e72f18172062e98b449478d3f8e1d554d4b9) --- src/server/game/Achievements/AchievementMgr.cpp | 12 ++++++++++-- 1 file changed, 10 insertions(+), 2 deletions(-) diff --git a/src/server/game/Achievements/AchievementMgr.cpp b/src/server/game/Achievements/AchievementMgr.cpp index 9032355c010..3983ecfe9d7 100644 --- a/src/server/game/Achievements/AchievementMgr.cpp +++ b/src/server/game/Achievements/AchievementMgr.cpp @@ -1374,7 +1374,11 @@ void AchievementMgr::UpdateAchievementCriteria(AchievementCriteriaTypes type, for (SkillLineAbilityMap::const_iterator skillIter = bounds.first; skillIter != bounds.second; ++skillIter) { if (skillIter->second->SkillLine == achievementCriteria->learn_skillline_spell.skillLine) - spellCount++; + { + // do not add couter twice if by any chance skill is listed twice in dbc (eg. skill 777 and spell 22717) + ++spellCount; + break; + } } } SetCriteriaProgress(achievementCriteria, spellCount, referencePlayer); @@ -1397,7 +1401,11 @@ void AchievementMgr::UpdateAchievementCriteria(AchievementCriteriaTypes type, SkillLineAbilityMapBounds bounds = sSpellMgr->GetSkillLineAbilityMapBounds(spellIter.first); for (SkillLineAbilityMap::const_iterator skillIter = bounds.first; skillIter != bounds.second; ++skillIter) if (skillIter->second->SkillLine == achievementCriteria->learn_skill_line.skillLine) - spellCount++; + { + // do not add couter twice if by any chance skill is listed twice in dbc (eg. skill 777 and spell 22717) + ++spellCount; + break; + } } SetCriteriaProgress(achievementCriteria, spellCount, referencePlayer); break;