From b5c5442d039f12bb114aa48c75c04c55d55ae854 Mon Sep 17 00:00:00 2001 From: Shauren Date: Sun, 28 Jun 2015 01:02:39 +0200 Subject: Core/Achievements: Implemented ACHIEVEMENT_CRITERIA_TYPE_PLACE_GARRISON_BUILDING --- src/server/game/Achievements/AchievementMgr.cpp | 7 ++++++- src/server/game/Garrison/Garrison.cpp | 2 ++ 2 files changed, 8 insertions(+), 1 deletion(-) (limited to 'src') 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::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::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::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::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()); -- cgit v1.2.3