mirror of
https://github.com/mod-playerbots/azerothcore-wotlk.git
synced 2026-01-17 10:55:43 +00:00
feat(Core/Hooks): added collection of hooks to extends AC (#3047)
This collection of hooks comes from the Maelstrom project. It allows to release modules such as : - 3v3-soloqueue - 1v1 arena - pvestats and many others
This commit is contained in:
@@ -152,9 +152,7 @@ GroupQueueInfo* BattlegroundQueue::AddGroup(Player* leader, Group* grp, PvPDiffi
|
||||
ginfo->_groupType = index;
|
||||
|
||||
// announce world (this doesn't need mutex)
|
||||
if (isRated && sWorld->getBoolConfig(CONFIG_ARENA_QUEUE_ANNOUNCER_ENABLE))
|
||||
if (ArenaTeam* team = sArenaTeamMgr->GetArenaTeamById(arenateamid))
|
||||
sWorld->SendWorldText(LANG_ARENA_QUEUE_ANNOUNCE_WORLD_JOIN, team->GetName().c_str(), ginfo->ArenaType, ginfo->ArenaType, ginfo->ArenaTeamRating);
|
||||
SendMessageArenaQueue(ginfo, true);
|
||||
|
||||
//add players from group to ginfo
|
||||
if (grp)
|
||||
@@ -185,7 +183,7 @@ GroupQueueInfo* BattlegroundQueue::AddGroup(Player* leader, Group* grp, PvPDiffi
|
||||
return ginfo;
|
||||
|
||||
if (!isRated && !isPremade && sWorld->getBoolConfig(CONFIG_BATTLEGROUND_QUEUE_ANNOUNCER_ENABLE))
|
||||
SendMessageQueue(leader, bg, bracketEntry);
|
||||
SendMessageBGQueue(leader, bg, bracketEntry);
|
||||
|
||||
return ginfo;
|
||||
}
|
||||
@@ -298,9 +296,7 @@ void BattlegroundQueue::RemovePlayer(uint64 guid, bool sentToBg, uint32 playerQu
|
||||
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);
|
||||
SendMessageArenaQueue(groupInfo, false);
|
||||
|
||||
// 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)
|
||||
@@ -726,6 +722,8 @@ void BattlegroundQueue::BattlegroundQueueUpdate(BattlegroundBracketId bracket_id
|
||||
MaxPlayersPerTeam = m_arenaType;
|
||||
}
|
||||
|
||||
sScriptMgr->OnQueueUpdate(this, bracket_id, isRated, arenaRatedTeamId);
|
||||
|
||||
// check if can start new premade battleground
|
||||
if (bg_template->isBattleground() && m_bgTypeId != BATTLEGROUND_RB)
|
||||
if (CheckPremadeMatch(bracket_id, MinPlayersPerTeam, MaxPlayersPerTeam))
|
||||
@@ -963,9 +961,9 @@ bool BattlegroundQueue::IsAllQueuesEmpty(BattlegroundBracketId bracket_id)
|
||||
return queueEmptyCount == BG_QUEUE_MAX;
|
||||
}
|
||||
|
||||
void BattlegroundQueue::SendMessageQueue(Player* leader, Battleground* bg, PvPDifficultyEntry const* bracketEntry)
|
||||
void BattlegroundQueue::SendMessageBGQueue(Player* leader, Battleground* bg, PvPDifficultyEntry const* bracketEntry)
|
||||
{
|
||||
if (!sScriptMgr->CanSendMessageQueue(this, leader, bg, bracketEntry))
|
||||
if (!sScriptMgr->CanSendMessageBGQueue(this, leader, bg, bracketEntry))
|
||||
return;
|
||||
|
||||
BattlegroundBracketId bracketId = bracketEntry->GetBracketId();
|
||||
@@ -1004,6 +1002,32 @@ void BattlegroundQueue::SendMessageQueue(Player* leader, Battleground* bg, PvPDi
|
||||
}
|
||||
}
|
||||
|
||||
void BattlegroundQueue::SendMessageArenaQueue(GroupQueueInfo* ginfo, bool IsJoin)
|
||||
{
|
||||
if (!sWorld->getBoolConfig(CONFIG_ARENA_QUEUE_ANNOUNCER_ENABLE))
|
||||
return;
|
||||
|
||||
if (!sScriptMgr->CanSendMessageArenaQueue(this, ginfo, IsJoin))
|
||||
return;
|
||||
|
||||
ArenaTeam* team = sArenaTeamMgr->GetArenaTeamById(ginfo->ArenaTeamId);
|
||||
if (!team)
|
||||
return;
|
||||
|
||||
if (!ginfo->IsRated)
|
||||
return;
|
||||
|
||||
uint8 ArenaType = ginfo->ArenaType;
|
||||
uint32 ArenaTeamRating = ginfo->ArenaTeamRating;
|
||||
std::string TeamName = team->GetName();
|
||||
|
||||
if (IsJoin)
|
||||
sWorld->SendWorldText(LANG_ARENA_QUEUE_ANNOUNCE_WORLD_JOIN, TeamName.c_str(), ArenaType, ArenaType, ArenaTeamRating);
|
||||
|
||||
if (!IsJoin && ArenaType && ginfo->Players.empty())
|
||||
sWorld->SendWorldText(LANG_ARENA_QUEUE_ANNOUNCE_WORLD_EXIT, TeamName.c_str(), ArenaType, ArenaType, ArenaTeamRating);
|
||||
}
|
||||
|
||||
/*********************************************************/
|
||||
/*** BATTLEGROUND QUEUE EVENTS ***/
|
||||
/*********************************************************/
|
||||
|
||||
Reference in New Issue
Block a user