diff options
Diffstat (limited to 'src')
-rw-r--r-- | src/server/game/Battlegrounds/Arena.cpp | 2 | ||||
-rw-r--r-- | src/server/game/Battlegrounds/Battleground.cpp | 14 |
2 files changed, 14 insertions, 2 deletions
diff --git a/src/server/game/Battlegrounds/Arena.cpp b/src/server/game/Battlegrounds/Arena.cpp index 0dcd4997bde..96f3e644bea 100644 --- a/src/server/game/Battlegrounds/Arena.cpp +++ b/src/server/game/Battlegrounds/Arena.cpp @@ -143,7 +143,7 @@ void Arena::EndBattleground(uint32 winner) uint32 winnerMatchmakerRating = 0; int32 winnerChange = 0; int32 winnerMatchmakerChange = 0; - bool guildAwarded = false; + bool guildAwarded = false; ArenaTeam* winnerArenaTeam = sArenaTeamMgr->GetArenaTeamById(GetArenaTeamIdForTeam(winner)); ArenaTeam* loserArenaTeam = sArenaTeamMgr->GetArenaTeamById(GetArenaTeamIdForTeam(GetOtherTeam(winner))); diff --git a/src/server/game/Battlegrounds/Battleground.cpp b/src/server/game/Battlegrounds/Battleground.cpp index ca8892d04bf..9b70d208e14 100644 --- a/src/server/game/Battlegrounds/Battleground.cpp +++ b/src/server/game/Battlegrounds/Battleground.cpp @@ -26,6 +26,8 @@ #include "Formulas.h" #include "GridNotifiersImpl.h" #include "Group.h" +#include "GuildMgr.h" +#include "Guild.h" #include "MapManager.h" #include "Object.h" #include "ObjectMgr.h" @@ -743,6 +745,7 @@ void Battleground::EndBattleground(uint32 winner) RemoveFromBGFreeSlotQueue(); int32 winmsg_id = 0; + bool guildAwarded = false; if (winner == ALLIANCE) { @@ -768,7 +771,7 @@ void Battleground::EndBattleground(uint32 winner) SetStatus(STATUS_WAIT_LEAVE); //we must set it this way, because end time is sent in packet! SetRemainingTime(TIME_AUTOCLOSE_BATTLEGROUND); - + WorldPacket pvpLogData; BuildPvPLogDataPacket(pvpLogData); @@ -822,6 +825,15 @@ void Battleground::EndBattleground(uint32 winner) player->ModifyCurrency(CURRENCY_TYPE_CONQUEST_META_ARENA, sWorld->getIntConfig(CONFIG_BG_REWARD_WINNER_CONQUEST_LAST)); player->UpdateAchievementCriteria(ACHIEVEMENT_CRITERIA_TYPE_WIN_BG, 1); + if (!guildAwarded) + { + guildAwarded = true; + if (uint32 guildId = GetBgMap()->GetOwnerGuildId(player->GetTeam())) + { + if (Guild* guild = sGuildMgr->GetGuildById(guildId)) + guild->UpdateAchievementCriteria(ACHIEVEMENT_CRITERIA_TYPE_WIN_BG, 1, 0, 0, NULL, player); + } + } } else { |