aboutsummaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
Diffstat (limited to 'src')
-rw-r--r--src/server/game/Battlegrounds/Arena.cpp2
-rw-r--r--src/server/game/Battlegrounds/Battleground.cpp14
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
{