diff options
author | Shauren <shauren.trinity@gmail.com> | 2015-06-28 01:02:39 +0200 |
---|---|---|
committer | Shauren <shauren.trinity@gmail.com> | 2015-06-28 01:02:39 +0200 |
commit | b5c5442d039f12bb114aa48c75c04c55d55ae854 (patch) | |
tree | 8a3c4553c46d2f07c590623e3b0b126c29c39911 | |
parent | ccb55fb90100ad3aac76df85212967e98e205896 (diff) |
Core/Achievements: Implemented ACHIEVEMENT_CRITERIA_TYPE_PLACE_GARRISON_BUILDING
-rw-r--r-- | src/server/game/Achievements/AchievementMgr.cpp | 7 | ||||
-rw-r--r-- | src/server/game/Garrison/Garrison.cpp | 2 |
2 files changed, 8 insertions, 1 deletions
diff --git a/src/server/game/Achievements/AchievementMgr.cpp b/src/server/game/Achievements/AchievementMgr.cpp index 8d01010a7fe..68d76272e22 100644 --- a/src/server/game/Achievements/AchievementMgr.cpp +++ b/src/server/game/Achievements/AchievementMgr.cpp @@ -1056,6 +1056,7 @@ void AchievementMgr<T>::UpdateAchievementCriteria(AchievementCriteriaTypes type, case ACHIEVEMENT_CRITERIA_TYPE_HONORABLE_KILL_AT_AREA: case ACHIEVEMENT_CRITERIA_TYPE_WIN_ARENA: // This also behaves like ACHIEVEMENT_CRITERIA_TYPE_WIN_RATED_ARENA case ACHIEVEMENT_CRITERIA_TYPE_ON_LOGIN: + case ACHIEVEMENT_CRITERIA_TYPE_PLACE_GARRISON_BUILDING: SetCriteriaProgress(achievementCriteria, 1, referencePlayer, PROGRESS_ACCUMULATE); break; // std case: increment at miscValue1 @@ -1289,7 +1290,6 @@ void AchievementMgr<T>::UpdateAchievementCriteria(AchievementCriteriaTypes type, case ACHIEVEMENT_CRITERIA_TYPE_ENTER_AREA: case ACHIEVEMENT_CRITERIA_TYPE_LEAVE_AREA: case ACHIEVEMENT_CRITERIA_TYPE_COMPLETE_DUNGEON_ENCOUNTER: - case ACHIEVEMENT_CRITERIA_TYPE_PLACE_GARRISON_BUILDING: case ACHIEVEMENT_CRITERIA_TYPE_UPGRADE_GARRISON_BUILDING: case ACHIEVEMENT_CRITERIA_TYPE_CONSTRUCT_GARRISON_BUILDING: case ACHIEVEMENT_CRITERIA_TYPE_UPGRADE_GARRISON: @@ -1443,6 +1443,7 @@ bool AchievementMgr<T>::IsCompletedCriteria(AchievementCriteria const* achieveme case ACHIEVEMENT_CRITERIA_TYPE_USE_LFD_TO_GROUP_WITH_PLAYERS: case ACHIEVEMENT_CRITERIA_TYPE_GET_KILLING_BLOWS: case ACHIEVEMENT_CRITERIA_TYPE_CURRENCY: + case ACHIEVEMENT_CRITERIA_TYPE_PLACE_GARRISON_BUILDING: return progress->counter >= requiredAmount; case ACHIEVEMENT_CRITERIA_TYPE_COMPLETE_ACHIEVEMENT: case ACHIEVEMENT_CRITERIA_TYPE_COMPLETE_QUEST: @@ -2381,6 +2382,10 @@ bool AchievementMgr<T>::RequirementsSatisfied(AchievementCriteria const* achieve break; case ACHIEVEMENT_CRITERIA_TYPE_HIGHEST_TEAM_RATING: return false; + case ACHIEVEMENT_CRITERIA_TYPE_PLACE_GARRISON_BUILDING: + if (miscValue1 != achievementCriteria->Entry->Asset.GarrBuildingID) + return false; + break; default: break; } diff --git a/src/server/game/Garrison/Garrison.cpp b/src/server/game/Garrison/Garrison.cpp index e5aa0aab5cd..f4669b2b340 100644 --- a/src/server/game/Garrison/Garrison.cpp +++ b/src/server/game/Garrison/Garrison.cpp @@ -397,6 +397,8 @@ void Garrison::PlaceBuilding(uint32 garrPlotInstanceId, uint32 garrBuildingId) buildingRemoved.GarrBuildingID = oldBuildingId; _owner->SendDirectMessage(buildingRemoved.Write()); } + + _owner->UpdateAchievementCriteria(ACHIEVEMENT_CRITERIA_TYPE_PLACE_GARRISON_BUILDING, garrBuildingId); } _owner->SendDirectMessage(placeBuildingResult.Write()); |