82 recv_data >> bgTypeId;
83 recv_data >> instanceId;
84 recv_data >> joinAsGroup;
88 sLog.outError(
"Battleground: invalid bgtype received. possible cheater? player guid %u",
_player->
GetGUIDLow());
121 sLog.outError(
"Battleground: no available bg / template found");
132 data << (
uint32) 0xFFFFFFFE;
162 sLog.outDebug(
"Battleground: the following players are joining as group:");
166 Player* member = itr->GetSource();
167 if (!member)
continue;
181 sBattlegroundMgr.m_BattlegroundQueues[bgQueueTypeId].AddPlayer(member, ginfo);
182 sLog.outDebug(
"Battleground: player joined queue for bg queue type %u bg type %u: GUID %u, NAME %s", bgQueueTypeId, bgTypeId, member->
GetGUIDLow(), member->
GetName());
184 sLog.outDebug(
"Battleground: group end");
210 sLog.outDebug(
"WORLD: Recvd MSG_BATTLEGROUND_PLAYER_POSITIONS Message");
277 sLog.outDebug(
"WORLD: Recvd MSG_PVP_LOG_DATA Message");
287 DEBUG_LOG(
"WORLD: Sent MSG_PVP_LOG_DATA Message");
292 sLog.outDebug(
"WORLD: Recvd CMSG_BATTLEFIELD_LIST Message");
295 recv_data >> bgTypeId;
299 sLog.outError(
"Battleground: invalid bgtype received.");
315 sLog.outDebug(
"WORLD: Recvd CMSG_BATTLEFIELD_PORT Message");
324 recv_data >> type >> unk2 >> bgTypeId >> unk >> action;
328 sLog.outError(
"Battleground: invalid bgtype received.");
346 if (!itrPlayerStatus->second.GroupInfo)
352 bgTypeId = itrPlayerStatus->second.GroupInfo->BgTypeId;
353 uint8 arenatype = itrPlayerStatus->second.GroupInfo->ArenaType;
354 uint8 israted = itrPlayerStatus->second.GroupInfo->IsRated;
358 if (!itrPlayerStatus->second.GroupInfo->IsInvitedToBGInstanceGUID)
367 bg =
sBattlegroundMgr.GetBattleground(itrPlayerStatus->second.GroupInfo->IsInvitedToBGInstanceGUID);
390 BattlegroundQueue::QueuedPlayersMap::iterator itrPlayerStatus;
396 sLog.outError(
"Battleground: itrplayerstatus not found.");
399 instanceId = itrPlayerStatus->second.GroupInfo->IsInvitedToBGInstanceGUID;
402 if (!instanceId && action == 1)
404 sLog.outError(
"Battleground: instance not found.");
411 if (!bg && action == 0)
416 sLog.outError(
"Battleground: bg not found.");
429 uint32 opponentsRating = 0;
433 && pitr->second.GroupInfo)
435 team = pitr->second.GroupInfo->Team;
436 arenatype = pitr->second.GroupInfo->ArenaType;
437 israted = pitr->second.GroupInfo->IsRated;
438 rating = pitr->second.GroupInfo->ArenaTeamRating;
439 opponentsRating = pitr->second.GroupInfo->OpponentsTeamRating;
443 sLog.outError(
"Battleground: Invalid player queue info!");
504 sLog.outDebug(
"UPDATING memberLost's personal arena rating for %u by opponents rating: %u, because he has left queue!",
GUID_LOPART(
_player->
GetGUID()), opponentsRating);
518 sLog.outError(
"Battleground port: unknown action %u", action);
526 sLog.outDebug(
"WORLD: Recvd CMSG_LEAVE_BATTLEFIELD Message");
548 sLog.outDebug(
"WORLD: Battleground status");
570 if (i == queueSlot || !queue_id)
575 if (itrPlayerStatus->second.GroupInfo)
577 arenatype = itrPlayerStatus->second.GroupInfo->ArenaType;
578 isRated = itrPlayerStatus->second.GroupInfo->IsRated;
607 if (itrPlayerStatus->second.GroupInfo)
609 arenatype = itrPlayerStatus->second.GroupInfo->ArenaType;
610 isRated = itrPlayerStatus->second.GroupInfo->IsRated;
631 sLog.outDebug(
"WORLD: CMSG_AREA_SPIRIT_HEALER_QUERY");
652 sLog.outDebug(
"WORLD: CMSG_AREA_SPIRIT_HEALER_QUEUE");
673 sLog.outDebug(
"WORLD: CMSG_BATTLEMASTER_JOIN_ARENA");
682 recv_data >> guid >> arenaslot >> asGroup >> isRated;
710 sLog.outError(
"Unknown arena slot %u at HandleBattlegroundArenaJoin()", arenaslot);
718 sLog.outError(
"Battleground: template bg (all arenas) not found");
772 uint32 avg_pers_rating = 0;
775 Player* member = itr->GetSource();
782 avg_pers_rating /= arenatype;
785 if (avg_pers_rating + 150 < arenaRating)
786 arenaRating = avg_pers_rating;
792 sLog.outDebug(
"Battleground: arena join as group start");
797 Player* member = itr->GetSource();
798 if (!member)
continue;
812 sBattlegroundMgr.m_BattlegroundQueues[bgQueueTypeId].AddPlayer(member, ginfo);
813 sLog.outDebug(
"Battleground: player joined queue for arena as group bg queue type %u bg type %u: GUID %u, NAME %s", bgQueueTypeId, bgTypeId, member->
GetGUIDLow(), member->
GetName());
815 sLog.outDebug(
"Battleground: arena join as group end");
833 sLog.outDebug(
"Battleground: player joined queue for arena, skirmish, bg queue type %u bg type %u: GUID %u, NAME %s", bgQueueTypeId, bgTypeId,
_player->
GetGUIDLow(),
_player->
GetName());
840 recv_data >> playerGuid;
845 sLog.outDebug(
"WorldSession::HandleBattlegroundReportAFK: player not found");
849 sLog.outDebug(
"WorldSession::HandleBattlegroundReportAFK: %s reported %s",
_player->
GetName(), reportedPlayer->
GetName());
void SendNotification(const char *format,...) ATTR_PRINTF(2
void HandleAreaSpiritHealerQueueOpcode(WorldPacket &recv_data)
Battleground * GetBattleground() const
void HandleBattlegroundPlayerPositionsOpcode(WorldPacket &recv_data)
uint32 AddBattlegroundQueueId(uint32 val)
void MemberLost(Player *plr, uint32 againstRating)
#define PLAYER_MAX_BATTLEGROUND_QUEUES
void SetBGTeam(uint32 team)
void SendBattlegroundOrArenaJoinError(uint8 err)
DBCStorage< BattlemasterListEntry > sBattlemasterListStore(BattlemasterListEntryfmt)
bool IsBattleMaster() const
MotionMaster * GetMotionMaster()
void SetBattlegroundEntryPoint()
#define sLog
Log class singleton.
void HandleBattlegroundListOpcode(WorldPacket &recv_data)
void HandleAreaSpiritHealerQueryOpcode(WorldPacket &recv_data)
bool CanJoinToBattleground() const
Player * GetPlayer() const
uint32 GetGUIDLow() const
void SendBattlegGroundList(uint64 guid, uint32 bgTypeId)
void SendPacket(WorldPacket const *packet)
uint32 CanJoinBattlegroundQueue(uint32 bgTypeId, uint32 bgQueueType, uint32 MinPlayerCount, uint32 MaxPlayerCount, bool isRated, uint32 arenaSlot)
#define MAX_BATTLEGROUND_TYPES
void HandleBattlegroundLeaveOpcode(WorldPacket &recv_data)
Creature * GetCreature(uint64 guid)
uint32 GetBattlegroundQueueId(uint32 index) const
float GetOrientation() const
uint8 GetArenaType() const
uint32 GuidHigh2TypeId(uint32 guid_hi)
void HandleBattlegroundHelloOpcode(WorldPacket &recv_data)
uint32 GetBattlegroundQueueIndex(uint32 bgQueueType) const
void LeaveBattleground(bool teleportToEntryPoint=true)
void PSendSysMessage(const char *format,...) ATTR_PRINTF(2
float GetPositionY() const
void HandleBattlegroundPlayerPortOpcode(WorldPacket &recv_data)
float GetPositionZ() const
uint32 GetArenaPersonalRating(uint8 slot)
void ResurrectPlayer(float restore_percent, bool applySickness=false)
void HandleBattlegroundReportAFK(WorldPacket &recv_data)
GroupReference * GetFirstMember()
const char * GetOregonString(int32 entry) const
void CleanupAfterTaxiFlight()
uint32 GetInstanceID() const
void SetBattlegroundId(uint32 val)
const char * GetName() const
bool InBattlegroundQueue() const
void AddPlayerToResurrectQueue(uint64 npc_guid, uint64 player_guid)
bool InBattleground() const
uint32 GetArenaTeamId(uint8 slot)
uint32 GetStartTime() const
uint32 GetMaxPlayersPerTeam() const
bool HasFreeBattlegroundQueueId()
void ReportedAfkBy(Player *reporter)
WorldSession * GetSession() const
void HandleBattlegroundJoinOpcode(WorldPacket &recv_data)
void HandleBattlefieldStatusOpcode(WorldPacket &recv_data)
float GetPositionX() const
uint32 GetBattlegroundQueueIdFromLevel() const
void MovementExpired(bool reset=true)
bool GetBGAccessByLevel(uint32 bgTypeId) const
void RemoveBattlegroundQueueId(uint32 val)
void HandleBattlegroundArenaJoin(WorldPacket &recv_data)
void SendNotInArenaTeamPacket(uint8 type)
void HandleBattlegroundPVPlogdataOpcode(WorldPacket &recv_data)
static void FillMessageData(WorldPacket *data, WorldSession *session, uint8 type, uint32 language, const char *channelName, uint64 target_guid, const char *message, Unit *speaker)
bool IsSpiritService() const
bool IsInvitedForBattlegroundQueueType(uint32 bgQueueType) const