From be03894ec54232f9d95960b9ee86b8d4fb2546bd Mon Sep 17 00:00:00 2001 From: arrai Date: Fri, 31 Oct 2008 20:34:53 +0100 Subject: [PATCH] Implemented ACHIEVEMENT_CRITERIA_TYPE_LEARN_SPELL Fixed typo in my previous commit --- src/game/AchievementMgr.cpp | 8 +++++++- src/game/Player.cpp | 3 +++ 2 files changed, 10 insertions(+), 1 deletion(-) 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; }