From c3612fed30308ad4c83fc8816053023aace0b7d3 Mon Sep 17 00:00:00 2001 From: Blumfield Date: Sun, 1 Jan 2017 11:41:34 +0100 Subject: [PATCH] Core/Arena: Add config option for Arena.QueueAnnoncer (#305) --- src/game/Battlegrounds/BattlegroundQueue.cpp | 13 +++++++++++++ src/game/World/World.cpp | 1 + src/game/World/World.h | 1 + 3 files changed, 15 insertions(+) diff --git a/src/game/Battlegrounds/BattlegroundQueue.cpp b/src/game/Battlegrounds/BattlegroundQueue.cpp index 8d85fc671..db417449a 100644 --- a/src/game/Battlegrounds/BattlegroundQueue.cpp +++ b/src/game/Battlegrounds/BattlegroundQueue.cpp @@ -145,6 +145,14 @@ GroupQueueInfo* BattlegroundQueue::AddGroup(Player* leader, Group* grp, PvPDiffi ginfo->_bracketId = bracketId; ginfo->_groupType = index; + // announce world (this doesn't need mutex) + if (isRated && sWorld->getBoolConfig(CONFIG_ARENA_QUEUE_ANNOUNCER_ENABLE)) + { + ArenaTeam* team = sArenaTeamMgr->GetArenaTeamById(arenateamid); + if (team) + sWorld->SendWorldText(LANG_ARENA_QUEUE_ANNOUNCE_WORLD_JOIN, team->GetName().c_str(), ginfo->ArenaType, ginfo->ArenaType, ginfo->ArenaTeamRating); + } + //add players from group to ginfo if (grp) { @@ -307,6 +315,11 @@ void BattlegroundQueue::RemovePlayer(uint64 guid, bool sentToBg, uint32 playerQu // remove player queue info m_QueuedPlayers.erase(itr); + // announce to world if arena team left queue for rated match, show only once + if (groupInfo->ArenaType && groupInfo->IsRated && groupInfo->Players.empty() && sWorld->getBoolConfig(CONFIG_ARENA_QUEUE_ANNOUNCER_ENABLE)) + if (ArenaTeam* team = sArenaTeamMgr->GetArenaTeamById(groupInfo->ArenaTeamId)) + sWorld->SendWorldText(LANG_ARENA_QUEUE_ANNOUNCE_WORLD_EXIT, team->GetName().c_str(), groupInfo->ArenaType, groupInfo->ArenaType, groupInfo->ArenaTeamRating); + // if player leaves queue and he is invited to a rated arena match, then count it as he lost if (groupInfo->IsInvitedToBGInstanceGUID && groupInfo->IsRated && !sentToBg) if (ArenaTeam* at = sArenaTeamMgr->GetArenaTeamById(groupInfo->ArenaTeamId)) diff --git a/src/game/World/World.cpp b/src/game/World/World.cpp index 800786c46..21f30b787 100644 --- a/src/game/World/World.cpp +++ b/src/game/World/World.cpp @@ -1065,6 +1065,7 @@ void World::LoadConfigSettings(bool reload) m_float_configs[CONFIG_ARENA_WIN_RATING_MODIFIER_2] = sConfigMgr->GetFloatDefault("Arena.ArenaWinRatingModifier2", 24.0f); m_float_configs[CONFIG_ARENA_LOSE_RATING_MODIFIER] = sConfigMgr->GetFloatDefault("Arena.ArenaLoseRatingModifier", 24.0f); m_float_configs[CONFIG_ARENA_MATCHMAKER_RATING_MODIFIER] = sConfigMgr->GetFloatDefault("Arena.ArenaMatchmakerRatingModifier", 24.0f); + m_bool_configs[CONFIG_ARENA_QUEUE_ANNOUNCER_ENABLE] = sConfigMgr->GetBoolDefault ("Arena.QueueAnnouncer.Enable", false); m_bool_configs[CONFIG_OFFHAND_CHECK_AT_SPELL_UNLEARN] = sConfigMgr->GetBoolDefault("OffhandCheckAtSpellUnlearn", true); diff --git a/src/game/World/World.h b/src/game/World/World.h index 87ea63413..cc1f3cae7 100644 --- a/src/game/World/World.h +++ b/src/game/World/World.h @@ -123,6 +123,7 @@ enum WorldBoolConfigs CONFIG_BG_XP_FOR_KILL, CONFIG_ARENA_AUTO_DISTRIBUTE_POINTS, CONFIG_ARENA_SEASON_IN_PROGRESS, + CONFIG_ARENA_QUEUE_ANNOUNCER_ENABLE, CONFIG_OFFHAND_CHECK_AT_SPELL_UNLEARN, CONFIG_VMAP_INDOOR_CHECK, CONFIG_PET_LOS,