diff --git a/src/game/AchievementMgr.cpp b/src/game/AchievementMgr.cpp index c24d7d043..9f331ba51 100644 --- a/src/game/AchievementMgr.cpp +++ b/src/game/AchievementMgr.cpp @@ -238,10 +238,14 @@ void AchievementMgr::UpdateAchievementCriteria(AchievementCriteriaTypes type, ui // AchievementMgr::UpdateAchievementCriteria might also be called on login - skip in this case if(!miscvalue1) continue; - if(GetPlayer()->GetMapID() != achievementCriteria->complete_battleground.mapID) + if(GetPlayer()->GetMapId() != achievementCriteria->complete_battleground.mapID) continue; SetCriteriaProgress(achievementCriteria, miscvalue1, true); break; + case ACHIEVEMENT_CRITERIA_TYPE_LEARN_SPELL: + if(GetPlayer()->HasSpell(achievementCriteria->learn_spell.spellID)) + SetCriteriaProgress(achievementCriteria, 1); + break; } if(IsCompletedCriteria(achievementCriteria)) @@ -312,6 +316,8 @@ bool AchievementMgr::IsCompletedCriteria(AchievementCriteriaEntry const* achieve case ACHIEVEMENT_CRITERIA_TYPE_COMPLETE_BATTLEGROUND: // just used as a counter - return false return false; + case ACHIEVEMENT_CRITERIA_TYPE_LEARN_SPELL: + return progress->counter >= 1; } return false; } diff --git a/src/game/Player.cpp b/src/game/Player.cpp index 3ec3f7b84..06e2a9089 100644 --- a/src/game/Player.cpp +++ b/src/game/Player.cpp @@ -2773,6 +2773,9 @@ bool Player::addSpell(uint32 spell_id, bool active, bool learning, bool loading, } } + if(!loading) + GetAchievementMgr().UpdateAchievementCriteria(ACHIEVEMENT_CRITERIA_TYPE_LEARN_SPELL); + // return true (for send learn packet) only if spell active (in case ranked spells) and not replace old spell return active && !disabled && !superceded_old; }