[12173] Some battleground changes

- bg list works
- placeholders for pvp rewards and rated bg stats packets
- other bg opcode changes

Signed-off-by: Yaki Khadafi <elsoldollo@gmail.com>
This commit is contained in:
Yaki Khadafi 2012-09-03 13:44:28 +03:00 committed by Antz
parent dcc57439a7
commit 372e8e04bf
13 changed files with 163 additions and 86 deletions

View file

@ -166,11 +166,14 @@ enum BattleGroundQueueTypeId
BATTLEGROUND_QUEUE_EY = 4, BATTLEGROUND_QUEUE_EY = 4,
BATTLEGROUND_QUEUE_SA = 5, BATTLEGROUND_QUEUE_SA = 5,
BATTLEGROUND_QUEUE_IC = 6, BATTLEGROUND_QUEUE_IC = 6,
BATTLEGROUND_QUEUE_2v2 = 7, BATTLEGROUND_QUEUE_TP = 7,
BATTLEGROUND_QUEUE_3v3 = 8, BATTLEGROUND_QUEUE_BG = 8,
BATTLEGROUND_QUEUE_5v5 = 9 BATTLEGROUND_QUEUE_2v2 = 9,
BATTLEGROUND_QUEUE_3v3 = 10,
BATTLEGROUND_QUEUE_5v5 = 11,
}; };
#define MAX_BATTLEGROUND_QUEUE_TYPES 10
#define MAX_BATTLEGROUND_QUEUE_TYPES 12
enum ScoreType enum ScoreType
{ {
@ -295,6 +298,7 @@ class BattleGround
/* Battleground */ /* Battleground */
// Get methods: // Get methods:
ObjectGuid GetObjectGuid() { return ObjectGuid(HIGHGUID_BATTLEGROUND, uint32(0), uint32(m_TypeID)); }
char const* GetName() const { return m_Name; } char const* GetName() const { return m_Name; }
BattleGroundTypeId GetTypeID() const { return m_TypeID; } BattleGroundTypeId GetTypeID() const { return m_TypeID; }
BattleGroundBracketId GetBracketId() const { return m_BracketId; } BattleGroundBracketId GetBracketId() const { return m_BracketId; }

View file

@ -72,7 +72,7 @@ void WorldSession::HandleBattlemasterHelloOpcode(WorldPacket& recv_data)
void WorldSession::SendBattlegGroundList(ObjectGuid guid, BattleGroundTypeId bgTypeId) void WorldSession::SendBattlegGroundList(ObjectGuid guid, BattleGroundTypeId bgTypeId)
{ {
WorldPacket data; WorldPacket data;
sBattleGroundMgr.BuildBattleGroundListPacket(&data, guid, _player, bgTypeId, 0); sBattleGroundMgr.BuildBattleGroundListPacket(&data, guid, _player, bgTypeId);
SendPacket(&data); SendPacket(&data);
} }
@ -85,10 +85,15 @@ void WorldSession::HandleBattlemasterJoinOpcode(WorldPacket& recv_data)
bool isPremade = false; bool isPremade = false;
Group* grp; Group* grp;
recv_data >> guid; // battlemaster guid
recv_data >> bgTypeId_; // battleground type id (DBC id)
recv_data >> instanceId; // instance id, 0 if First Available selected recv_data >> instanceId; // instance id, 0 if First Available selected
recv_data >> joinAsGroup; // join as group recv_data.ReadGuidMask<2, 0, 3, 1, 5>(guid);
joinAsGroup = recv_data.ReadBit();
recv_data.ReadGuidMask<4, 6, 7>(guid);
recv_data.ReadGuidBytes<2, 6, 4, 3, 7, 0, 5, 1>(guid);
bgTypeId_ = guid.GetCounter();
DEBUG_LOG("WORLD: Recvd CMSG_BATTLEMASTER_JOIN Message from %s, typeid: %u, asGroup: %u, bg guid: %u",
_player->GetGuidStr().c_str(), bgTypeId_, joinAsGroup, guid.GetString().c_str());
if (!sBattlemasterListStore.LookupEntry(bgTypeId_)) if (!sBattlemasterListStore.LookupEntry(bgTypeId_))
{ {
@ -98,8 +103,6 @@ void WorldSession::HandleBattlemasterJoinOpcode(WorldPacket& recv_data)
BattleGroundTypeId bgTypeId = BattleGroundTypeId(bgTypeId_); BattleGroundTypeId bgTypeId = BattleGroundTypeId(bgTypeId_);
DEBUG_LOG("WORLD: Recvd CMSG_BATTLEMASTER_JOIN Message from %s", guid.GetString().c_str());
// can do this, since it's battleground, not arena // can do this, since it's battleground, not arena
BattleGroundQueueTypeId bgQueueTypeId = BattleGroundMgr::BGQueueTypeId(bgTypeId, ARENA_TYPE_NONE); BattleGroundQueueTypeId bgQueueTypeId = BattleGroundMgr::BGQueueTypeId(bgTypeId, ARENA_TYPE_NONE);
@ -322,12 +325,6 @@ void WorldSession::HandleBattlefieldListOpcode(WorldPacket& recv_data)
uint32 bgTypeId; uint32 bgTypeId;
recv_data >> bgTypeId; // id from DBC recv_data >> bgTypeId; // id from DBC
uint8 fromWhere;
recv_data >> fromWhere; // 0 - battlemaster (lua: ShowBattlefieldList), 1 - UI (lua: RequestBattlegroundInstanceInfo)
uint8 unk1;
recv_data >> unk1; // unknown 3.2.2
BattlemasterListEntry const* bl = sBattlemasterListStore.LookupEntry(bgTypeId); BattlemasterListEntry const* bl = sBattlemasterListStore.LookupEntry(bgTypeId);
if (!bl) if (!bl)
{ {
@ -336,7 +333,7 @@ void WorldSession::HandleBattlefieldListOpcode(WorldPacket& recv_data)
} }
WorldPacket data; WorldPacket data;
sBattleGroundMgr.BuildBattleGroundListPacket(&data, ObjectGuid(), _player, BattleGroundTypeId(bgTypeId), fromWhere); sBattleGroundMgr.BuildBattleGroundListPacket(&data, ObjectGuid(), _player, BattleGroundTypeId(bgTypeId));
SendPacket(&data); SendPacket(&data);
} }
@ -819,7 +816,14 @@ void WorldSession::HandleReportPvPAFK(WorldPacket& recv_data)
reportedPlayer->ReportedAfkBy(_player); reportedPlayer->ReportedAfkBy(_player);
} }
void WorldSession::HandleRequestPvPOptionsEnabled(WorldPacket& recv_data) void WorldSession::HandleRequestRatedBGStatsOpcode(WorldPacket& recv_data)
{
// null packet
GetPlayer()->SendRatedBGStats();
}
void WorldSession::HandleRequestPvPOptionsEnabledOpcode(WorldPacket& recv_data)
{ {
// null packet // null packet
@ -829,3 +833,11 @@ void WorldSession::HandleRequestPvPOptionsEnabled(WorldPacket& recv_data)
SendPacket(&data); SendPacket(&data);
} }
void WorldSession::HandleRequestPvPRewardsOpcode(WorldPacket& recv_data)
{
// null packet
GetPlayer()->SendPvPRewards();
}

View file

@ -1704,61 +1704,54 @@ void BattleGroundMgr::CreateInitialBattleGrounds()
sLog.outString(">> Loaded %u battlegrounds", count); sLog.outString(">> Loaded %u battlegrounds", count);
} }
void BattleGroundMgr::BuildBattleGroundListPacket(WorldPacket* data, ObjectGuid guid, Player* plr, BattleGroundTypeId bgTypeId, uint8 fromWhere) void BattleGroundMgr::BuildBattleGroundListPacket(WorldPacket* data, ObjectGuid guid, Player* plr, BattleGroundTypeId bgTypeId)
{ {
if (!plr) if (!plr)
return; return;
BattleGround* bgTemplate = sBattleGroundMgr.GetBattleGroundTemplate(bgTypeId);
data->Initialize(SMSG_BATTLEFIELD_LIST); data->Initialize(SMSG_BATTLEFIELD_LIST);
*data << guid; // battlemaster guid *data << uint32(0); // 4.3.4 winConquest weekend
*data << uint8(fromWhere); // from where you joined *data << uint32(0); // 4.3.4 winConquest random
*data << uint32(bgTypeId); // battleground id *data << uint32(0); // 4.3.4 lossHonor weekend
*data << uint8(0); // unk *data << uint32(bgTypeId); // battleground id
*data << uint8(0); // unk *data << uint32(0); // 4.3.4 lossHonor random
*data << uint32(0); // 4.3.4 winHonor random
*data << uint32(0); // 4.3.4 winHonor weekend
*data << uint8(0); // max level
*data << uint8(0); // min level
data->WriteGuidMask<0, 1, 7>(guid);
data->WriteBit(false); // has holiday bg currency bonus ??
data->WriteBit(false); // has random bg currency bonus ??
// Rewards uint32 count = 0;
*data << uint8(0); // 3.3.3 hasWin ByteBuffer buf;
*data << uint32(0); // 3.3.3 winHonor if (bgTemplate)
*data << uint32(0); // 3.3.3 winArena
*data << uint32(0); // 3.3.3 lossHonor
uint8 isRandom = 0;
*data << uint8(isRandom); // 3.3.3 isRandom
if (isRandom)
{ {
// Rewards (random) // expected bracket entry
*data << uint8(0); // 3.3.3 hasWin_Random if (PvPDifficultyEntry const* bracketEntry = GetBattlegroundBracketByLevel(bgTemplate->GetMapId(), plr->getLevel()))
*data << uint32(0); // 3.3.3 winHonor_Random
*data << uint32(0); // 3.3.3 winArena_Random
*data << uint32(0); // 3.3.3 lossHonor_Random
}
if (bgTypeId == BATTLEGROUND_AA) // arena
{
*data << uint32(0); // arena - no instances showed
}
else // battleground
{
size_t count_pos = data->wpos();
uint32 count = 0;
*data << uint32(0); // number of bg instances
if (BattleGround* bgTemplate = sBattleGroundMgr.GetBattleGroundTemplate(bgTypeId))
{ {
// expected bracket entry BattleGroundBracketId bracketId = bracketEntry->GetBracketId();
if (PvPDifficultyEntry const* bracketEntry = GetBattlegroundBracketByLevel(bgTemplate->GetMapId(), plr->getLevel())) ClientBattleGroundIdSet const& ids = m_ClientBattleGroundIds[bgTypeId][bracketId];
for (ClientBattleGroundIdSet::const_iterator itr = ids.begin(); itr != ids.end(); ++itr)
{ {
BattleGroundBracketId bracketId = bracketEntry->GetBracketId(); buf << uint32(*itr);
ClientBattleGroundIdSet const& ids = m_ClientBattleGroundIds[bgTypeId][bracketId]; ++count;
for (ClientBattleGroundIdSet::const_iterator itr = ids.begin(); itr != ids.end(); ++itr)
{
*data << uint32(*itr);
++count;
}
data->put<uint32>(count_pos , count);
} }
} }
} }
data->WriteBits(count, 24);
data->WriteGuidMask<6, 4, 2, 3>(guid);
data->WriteBit(true); // unk
data->WriteGuidMask<5>(guid);
data->WriteBit(true); // signals EVENT_PVPQUEUE_ANYWHERE_SHOW if set
data->WriteGuidBytes<6, 1, 7, 5>(guid);
if (count)
data->append(buf);
data->WriteGuidBytes<0, 2, 4, 3>(guid);
} }
void BattleGroundMgr::SendToBattleGround(Player* pl, uint32 instanceId, BattleGroundTypeId bgTypeId) void BattleGroundMgr::SendToBattleGround(Player* pl, uint32 instanceId, BattleGroundTypeId bgTypeId)
@ -1816,6 +1809,10 @@ BattleGroundQueueTypeId BattleGroundMgr::BGQueueTypeId(BattleGroundTypeId bgType
return BATTLEGROUND_QUEUE_IC; return BATTLEGROUND_QUEUE_IC;
case BATTLEGROUND_RB: case BATTLEGROUND_RB:
return BATTLEGROUND_QUEUE_NONE; return BATTLEGROUND_QUEUE_NONE;
case BATTLEGROUND_TP:
return BATTLEGROUND_QUEUE_TP;
case BATTLEGROUND_BG:
return BATTLEGROUND_QUEUE_BG;
case BATTLEGROUND_AA: case BATTLEGROUND_AA:
case BATTLEGROUND_NA: case BATTLEGROUND_NA:
case BATTLEGROUND_RL: case BATTLEGROUND_RL:
@ -1854,6 +1851,10 @@ BattleGroundTypeId BattleGroundMgr::BGTemplateId(BattleGroundQueueTypeId bgQueue
return BATTLEGROUND_SA; return BATTLEGROUND_SA;
case BATTLEGROUND_QUEUE_IC: case BATTLEGROUND_QUEUE_IC:
return BATTLEGROUND_IC; return BATTLEGROUND_IC;
case BATTLEGROUND_QUEUE_TP:
return BATTLEGROUND_TP;
case BATTLEGROUND_QUEUE_BG:
return BATTLEGROUND_BG;
case BATTLEGROUND_QUEUE_2v2: case BATTLEGROUND_QUEUE_2v2:
case BATTLEGROUND_QUEUE_3v3: case BATTLEGROUND_QUEUE_3v3:
case BATTLEGROUND_QUEUE_5v5: case BATTLEGROUND_QUEUE_5v5:
@ -1984,10 +1985,13 @@ HolidayIds BattleGroundMgr::BGTypeToWeekendHolidayId(BattleGroundTypeId bgTypeId
switch (bgTypeId) switch (bgTypeId)
{ {
case BATTLEGROUND_AV: return HOLIDAY_CALL_TO_ARMS_AV; case BATTLEGROUND_AV: return HOLIDAY_CALL_TO_ARMS_AV;
case BATTLEGROUND_EY: return HOLIDAY_CALL_TO_ARMS_EY;
case BATTLEGROUND_WS: return HOLIDAY_CALL_TO_ARMS_WS; case BATTLEGROUND_WS: return HOLIDAY_CALL_TO_ARMS_WS;
case BATTLEGROUND_SA: return HOLIDAY_CALL_TO_ARMS_SA;
case BATTLEGROUND_AB: return HOLIDAY_CALL_TO_ARMS_AB; case BATTLEGROUND_AB: return HOLIDAY_CALL_TO_ARMS_AB;
case BATTLEGROUND_EY: return HOLIDAY_CALL_TO_ARMS_EY;
case BATTLEGROUND_SA: return HOLIDAY_CALL_TO_ARMS_SA;
case BATTLEGROUND_IC: return HOLIDAY_CALL_TO_ARMS_IC;
case BATTLEGROUND_TP: return HOLIDAY_CALL_TO_ARMS_TP;
case BATTLEGROUND_BG: return HOLIDAY_CALL_TO_ARMS_BG;
default: return HOLIDAY_NONE; default: return HOLIDAY_NONE;
} }
} }
@ -1997,10 +2001,13 @@ BattleGroundTypeId BattleGroundMgr::WeekendHolidayIdToBGType(HolidayIds holiday)
switch (holiday) switch (holiday)
{ {
case HOLIDAY_CALL_TO_ARMS_AV: return BATTLEGROUND_AV; case HOLIDAY_CALL_TO_ARMS_AV: return BATTLEGROUND_AV;
case HOLIDAY_CALL_TO_ARMS_EY: return BATTLEGROUND_EY;
case HOLIDAY_CALL_TO_ARMS_WS: return BATTLEGROUND_WS; case HOLIDAY_CALL_TO_ARMS_WS: return BATTLEGROUND_WS;
case HOLIDAY_CALL_TO_ARMS_SA: return BATTLEGROUND_SA;
case HOLIDAY_CALL_TO_ARMS_AB: return BATTLEGROUND_AB; case HOLIDAY_CALL_TO_ARMS_AB: return BATTLEGROUND_AB;
case HOLIDAY_CALL_TO_ARMS_EY: return BATTLEGROUND_EY;
case HOLIDAY_CALL_TO_ARMS_SA: return BATTLEGROUND_SA;
case HOLIDAY_CALL_TO_ARMS_IC: return BATTLEGROUND_IC;
case HOLIDAY_CALL_TO_ARMS_TP: return BATTLEGROUND_TP;
case HOLIDAY_CALL_TO_ARMS_BG: return BATTLEGROUND_BG;
default: return BATTLEGROUND_TYPE_NONE; default: return BATTLEGROUND_TYPE_NONE;
} }
} }

View file

@ -194,7 +194,7 @@ class BattleGroundMgr
/* Packet Building */ /* Packet Building */
void BuildPlayerJoinedBattleGroundPacket(WorldPacket* data, Player* plr); void BuildPlayerJoinedBattleGroundPacket(WorldPacket* data, Player* plr);
void BuildPlayerLeftBattleGroundPacket(WorldPacket* data, ObjectGuid guid); void BuildPlayerLeftBattleGroundPacket(WorldPacket* data, ObjectGuid guid);
void BuildBattleGroundListPacket(WorldPacket* data, ObjectGuid guid, Player* plr, BattleGroundTypeId bgTypeId, uint8 fromWhere); void BuildBattleGroundListPacket(WorldPacket* data, ObjectGuid guid, Player* plr, BattleGroundTypeId bgTypeId);
void BuildGroupJoinedBattlegroundPacket(WorldPacket* data, GroupJoinBattlegroundResult result); void BuildGroupJoinedBattlegroundPacket(WorldPacket* data, GroupJoinBattlegroundResult result);
void BuildUpdateWorldStatePacket(WorldPacket* data, uint32 field, uint32 value); void BuildUpdateWorldStatePacket(WorldPacket* data, uint32 field, uint32 value);
void BuildPvpLogDataPacket(WorldPacket* data, BattleGround* bg); void BuildPvpLogDataPacket(WorldPacket* data, BattleGround* bg);

View file

@ -614,10 +614,10 @@ struct BattlemasterListEntry
uint32 HolidayWorldStateId; // 13 m_holidayWorldState uint32 HolidayWorldStateId; // 13 m_holidayWorldState
uint32 minLevel; // 14, m_minlevel (sync with PvPDifficulty.dbc content) uint32 minLevel; // 14, m_minlevel (sync with PvPDifficulty.dbc content)
uint32 maxLevel; // 15, m_maxlevel (sync with PvPDifficulty.dbc content) uint32 maxLevel; // 15, m_maxlevel (sync with PvPDifficulty.dbc content)
uint32 maxGroupSizeRated; // 16 4.0.1 uint32 maxGroupSizeRated; // 16 4.0.1
uint32 minPlayers; // 17 - 4.0.6.13596 uint32 minPlayers; // 17 4.0.6.13596
uint32 maxPlayers; // 18 4.0.1 uint32 maxPlayers; // 18 4.0.1
uint32 rated; // 19 4.0.3, value 2 for Rated Battlegrounds uint32 rated; // 19 4.0.3, value 2 for Rated Battlegrounds
}; };
/*struct Cfg_CategoriesEntry /*struct Cfg_CategoriesEntry

View file

@ -71,6 +71,7 @@ enum HighGuid
HIGHGUID_VEHICLE = 0xF15, // blizz F15/F55 HIGHGUID_VEHICLE = 0xF15, // blizz F15/F55
HIGHGUID_DYNAMICOBJECT = 0xF10, // blizz F10/F50 HIGHGUID_DYNAMICOBJECT = 0xF10, // blizz F10/F50
HIGHGUID_CORPSE = 0xF50, // blizz F10/F50 used second variant to resolve conflict with HIGHGUID_DYNAMICOBJECT HIGHGUID_CORPSE = 0xF50, // blizz F10/F50 used second variant to resolve conflict with HIGHGUID_DYNAMICOBJECT
HIGHGUID_BATTLEGROUND = 0x1F1, // blizz 1F1, used for battlegrounds and battlefields
HIGHGUID_MO_TRANSPORT = 0x1FC, // blizz 1FC (for GAMEOBJECT_TYPE_MO_TRANSPORT) HIGHGUID_MO_TRANSPORT = 0x1FC, // blizz 1FC (for GAMEOBJECT_TYPE_MO_TRANSPORT)
HIGHGUID_INSTANCE = 0x1F4, // blizz 1F4 HIGHGUID_INSTANCE = 0x1F4, // blizz 1F4
HIGHGUID_GROUP = 0x1F5, // blizz 1F5 HIGHGUID_GROUP = 0x1F5, // blizz 1F5

View file

@ -783,7 +783,7 @@ void InitializeOpcodes()
OPCODE(CMSG_MOVE_WATER_WALK_ACK, STATUS_LOGGEDIN, PROCESS_THREADSAFE, &WorldSession::HandleMoveWaterWalkAck ); OPCODE(CMSG_MOVE_WATER_WALK_ACK, STATUS_LOGGEDIN, PROCESS_THREADSAFE, &WorldSession::HandleMoveWaterWalkAck );
//OPCODE(CMSG_MOVE_NOT_ACTIVE_MOVER, STATUS_LOGGEDIN, PROCESS_THREADSAFE, &WorldSession::HandleMoveNotActiveMoverOpcode ); //OPCODE(CMSG_MOVE_NOT_ACTIVE_MOVER, STATUS_LOGGEDIN, PROCESS_THREADSAFE, &WorldSession::HandleMoveNotActiveMoverOpcode );
OPCODE(SMSG_PLAY_SOUND, STATUS_NEVER, PROCESS_INPLACE, &WorldSession::Handle_ServerSide ); OPCODE(SMSG_PLAY_SOUND, STATUS_NEVER, PROCESS_INPLACE, &WorldSession::Handle_ServerSide );
//OPCODE(CMSG_BATTLEFIELD_STATUS, STATUS_LOGGEDIN, PROCESS_THREADUNSAFE, &WorldSession::HandleBattlefieldStatusOpcode ); OPCODE(CMSG_BATTLEFIELD_STATUS, STATUS_LOGGEDIN, PROCESS_THREADUNSAFE, &WorldSession::HandleBattlefieldStatusOpcode );
//OPCODE(SMSG_BATTLEFIELD_STATUS, STATUS_NEVER, PROCESS_INPLACE, &WorldSession::Handle_ServerSide ); //OPCODE(SMSG_BATTLEFIELD_STATUS, STATUS_NEVER, PROCESS_INPLACE, &WorldSession::Handle_ServerSide );
//OPCODE(CMSG_BATTLEFIELD_PORT, STATUS_LOGGEDIN, PROCESS_THREADUNSAFE, &WorldSession::HandleBattleFieldPortOpcode ); //OPCODE(CMSG_BATTLEFIELD_PORT, STATUS_LOGGEDIN, PROCESS_THREADUNSAFE, &WorldSession::HandleBattleFieldPortOpcode );
OPCODE(CMSG_INSPECT_HONOR_STATS, STATUS_LOGGEDIN, PROCESS_THREADUNSAFE, &WorldSession::HandleInspectHonorStatsOpcode ); OPCODE(CMSG_INSPECT_HONOR_STATS, STATUS_LOGGEDIN, PROCESS_THREADUNSAFE, &WorldSession::HandleInspectHonorStatsOpcode );
@ -811,7 +811,7 @@ void InitializeOpcodes()
OPCODE(SMSG_BINDER_CONFIRM, STATUS_NEVER, PROCESS_INPLACE, &WorldSession::Handle_ServerSide ); OPCODE(SMSG_BINDER_CONFIRM, STATUS_NEVER, PROCESS_INPLACE, &WorldSession::Handle_ServerSide );
//OPCODE(SMSG_BATTLEGROUND_PLAYER_JOINED, STATUS_NEVER, PROCESS_INPLACE, &WorldSession::Handle_ServerSide ); //OPCODE(SMSG_BATTLEGROUND_PLAYER_JOINED, STATUS_NEVER, PROCESS_INPLACE, &WorldSession::Handle_ServerSide );
//OPCODE(SMSG_BATTLEGROUND_PLAYER_LEFT, STATUS_NEVER, PROCESS_INPLACE, &WorldSession::Handle_ServerSide ); //OPCODE(SMSG_BATTLEGROUND_PLAYER_LEFT, STATUS_NEVER, PROCESS_INPLACE, &WorldSession::Handle_ServerSide );
//OPCODE(CMSG_BATTLEMASTER_JOIN, STATUS_LOGGEDIN, PROCESS_THREADUNSAFE, &WorldSession::HandleBattlemasterJoinOpcode ); OPCODE(CMSG_BATTLEMASTER_JOIN, STATUS_LOGGEDIN, PROCESS_THREADUNSAFE, &WorldSession::HandleBattlemasterJoinOpcode );
OPCODE(SMSG_ADDON_INFO, STATUS_NEVER, PROCESS_INPLACE, &WorldSession::Handle_ServerSide ); OPCODE(SMSG_ADDON_INFO, STATUS_NEVER, PROCESS_INPLACE, &WorldSession::Handle_ServerSide );
//OPCODE(CMSG_PET_UNLEARN, STATUS_LOGGEDIN, PROCESS_THREADUNSAFE, &WorldSession::HandlePetUnlearnOpcode ); //OPCODE(CMSG_PET_UNLEARN, STATUS_LOGGEDIN, PROCESS_THREADUNSAFE, &WorldSession::HandlePetUnlearnOpcode );
//OPCODE(SMSG_PET_UNLEARN_CONFIRM, STATUS_NEVER, PROCESS_INPLACE, &WorldSession::Handle_ServerSide ); //OPCODE(SMSG_PET_UNLEARN_CONFIRM, STATUS_NEVER, PROCESS_INPLACE, &WorldSession::Handle_ServerSide );
@ -1381,8 +1381,10 @@ void InitializeOpcodes()
OPCODE(SMSG_WEEKLY_RESET_CURRENCIES, STATUS_NEVER, PROCESS_INPLACE, &WorldSession::Handle_ServerSide ); OPCODE(SMSG_WEEKLY_RESET_CURRENCIES, STATUS_NEVER, PROCESS_INPLACE, &WorldSession::Handle_ServerSide );
//OPCODE(CMSG_INSPECT_RATED_BG_STATS, STATUS_LOGGEDIN, PROCESS_THREADUNSAFE, &WorldSession::Handle_NULL ); //OPCODE(CMSG_INSPECT_RATED_BG_STATS, STATUS_LOGGEDIN, PROCESS_THREADUNSAFE, &WorldSession::Handle_NULL );
//OPCODE(CMSG_REQUEST_RATED_BG_INFO, STATUS_LOGGEDIN, PROCESS_THREADUNSAFE, &WorldSession::Handle_NULL ); //OPCODE(CMSG_REQUEST_RATED_BG_INFO, STATUS_LOGGEDIN, PROCESS_THREADUNSAFE, &WorldSession::Handle_NULL );
//OPCODE(CMSG_REQUEST_RATED_BG_STATS, STATUS_LOGGEDIN, PROCESS_THREADUNSAFE, &WorldSession::Handle_NULL ); OPCODE(CMSG_REQUEST_RATED_BG_STATS, STATUS_LOGGEDIN, PROCESS_THREADUNSAFE, &WorldSession::HandleRequestRatedBGStatsOpcode );
//OPCODE(CMSG_REQUEST_PVP_REWARDS, STATUS_LOGGEDIN, PROCESS_THREADUNSAFE, &WorldSession::Handle_NULL ); OPCODE(SMSG_RATED_BG_STATS, STATUS_NEVER, PROCESS_INPLACE, &WorldSession::Handle_ServerSide );
OPCODE(CMSG_REQUEST_PVP_OPTIONS_ENABLED, STATUS_LOGGEDIN, PROCESS_THREADUNSAFE, &WorldSession::HandleRequestPvPOptionsEnabled ); OPCODE(CMSG_REQUEST_PVP_REWARDS, STATUS_LOGGEDIN, PROCESS_THREADUNSAFE, &WorldSession::HandleRequestPvPRewardsOpcode );
OPCODE(SMSG_PVP_REWARDS, STATUS_NEVER, PROCESS_INPLACE, &WorldSession::Handle_ServerSide );
OPCODE(CMSG_REQUEST_PVP_OPTIONS_ENABLED, STATUS_LOGGEDIN, PROCESS_THREADUNSAFE, &WorldSession::HandleRequestPvPOptionsEnabledOpcode );
OPCODE(SMSG_PVP_OPTIONS_ENABLED, STATUS_NEVER, PROCESS_INPLACE, &WorldSession::Handle_ServerSide ); OPCODE(SMSG_PVP_OPTIONS_ENABLED, STATUS_NEVER, PROCESS_INPLACE, &WorldSession::Handle_ServerSide );
}; };

View file

@ -768,9 +768,9 @@ enum Opcodes
CMSG_MOVE_WATER_WALK_ACK = 0x3B00, // 4.3.4 15595 CMSG_MOVE_WATER_WALK_ACK = 0x3B00, // 4.3.4 15595
CMSG_MOVE_NOT_ACTIVE_MOVER = 0x12D2, CMSG_MOVE_NOT_ACTIVE_MOVER = 0x12D2,
SMSG_PLAY_SOUND = 0x2134, // 4.3.4 15595 SMSG_PLAY_SOUND = 0x2134, // 4.3.4 15595
CMSG_BATTLEFIELD_STATUS = 0x12D4, CMSG_BATTLEFIELD_STATUS = 0x2500, // 4.3.4 15595
SMSG_BATTLEFIELD_STATUS = 0x12D5, SMSG_BATTLEFIELD_STATUS = 0x7DA1, // 4.3.4 15595
CMSG_BATTLEFIELD_PORT = 0x12D6, CMSG_BATTLEFIELD_PORT = 0x711A, // 4.3.4 15595
CMSG_INSPECT_HONOR_STATS = 0x791E, // 4.3.4 15595 CMSG_INSPECT_HONOR_STATS = 0x791E, // 4.3.4 15595
SMSG_INSPECT_HONOR_STATS = 0x79A5, // 4.3.4 15595 SMSG_INSPECT_HONOR_STATS = 0x79A5, // 4.3.4 15595
CMSG_BATTLEMASTER_HELLO = 0x12D8, CMSG_BATTLEMASTER_HELLO = 0x12D8,
@ -790,13 +790,13 @@ enum Opcodes
CMSG_GM_UNTEACH = 0x12E6, CMSG_GM_UNTEACH = 0x12E6,
SMSG_WARDEN_DATA = 0x12E7, SMSG_WARDEN_DATA = 0x12E7,
CMSG_WARDEN_DATA = 0x12E8, CMSG_WARDEN_DATA = 0x12E8,
SMSG_GROUP_JOINED_BATTLEGROUND = 0x12E9, SMSG_GROUP_JOINED_BATTLEGROUND = 0x71A7, // 4.3.4 15595
MSG_BATTLEGROUND_PLAYER_POSITIONS = 0x12EA, MSG_BATTLEGROUND_PLAYER_POSITIONS = 0x12EA,
CMSG_PET_STOP_ATTACK = 0x12EB, CMSG_PET_STOP_ATTACK = 0x12EB,
SMSG_BINDER_CONFIRM = 0x2835, // 4.3.4 15595 SMSG_BINDER_CONFIRM = 0x2835, // 4.3.4 15595
SMSG_BATTLEGROUND_PLAYER_JOINED = 0x12ED, SMSG_BATTLEGROUND_PLAYER_JOINED = 0x12ED,
SMSG_BATTLEGROUND_PLAYER_LEFT = 0x12EE, SMSG_BATTLEGROUND_PLAYER_LEFT = 0x12EE,
CMSG_BATTLEMASTER_JOIN = 0x12EF, CMSG_BATTLEMASTER_JOIN = 0x7902, // 4.3.4 15595
SMSG_ADDON_INFO = 0x2C14, // 4.3.4 15595 SMSG_ADDON_INFO = 0x2C14, // 4.3.4 15595
CMSG_PET_UNLEARN = 0x12F1, CMSG_PET_UNLEARN = 0x12F1,
SMSG_PET_UNLEARN_CONFIRM = 0x12F2, SMSG_PET_UNLEARN_CONFIRM = 0x12F2,
@ -902,7 +902,7 @@ enum Opcodes
CMSG_ARENA_TEAM_DISBAND = 0x1356, CMSG_ARENA_TEAM_DISBAND = 0x1356,
CMSG_ARENA_TEAM_LEADER = 0x1357, CMSG_ARENA_TEAM_LEADER = 0x1357,
SMSG_ARENA_TEAM_EVENT = 0x1358, SMSG_ARENA_TEAM_EVENT = 0x1358,
CMSG_BATTLEMASTER_JOIN_ARENA = 0x1359, CMSG_BATTLEMASTER_JOIN_ARENA = 0x701C, // 4.3.4 15595
CMSG_MOVE_START_ASCEND = 0x390A, CMSG_MOVE_START_ASCEND = 0x390A,
CMSG_MOVE_STOP_ASCEND = 0x7B00, // 4.3.4 15595 CMSG_MOVE_STOP_ASCEND = 0x7B00, // 4.3.4 15595
SMSG_ARENA_TEAM_STATS = 0x135C, SMSG_ARENA_TEAM_STATS = 0x135C,
@ -1400,7 +1400,9 @@ enum Opcodes
CMSG_INSPECT_RATED_BG_STATS = 0x3010, // 4.3.4 15595 CMSG_INSPECT_RATED_BG_STATS = 0x3010, // 4.3.4 15595
CMSG_REQUEST_RATED_BG_INFO = 0x2423, // 4.3.4 15595 CMSG_REQUEST_RATED_BG_INFO = 0x2423, // 4.3.4 15595
CMSG_REQUEST_RATED_BG_STATS = 0x05B3, // 4.3.4 15595 CMSG_REQUEST_RATED_BG_STATS = 0x05B3, // 4.3.4 15595
SMSG_RATED_BG_STATS = 0x34A1, // 4.3.4 15595
CMSG_REQUEST_PVP_REWARDS = 0x780C, // 4.3.4 15595 CMSG_REQUEST_PVP_REWARDS = 0x780C, // 4.3.4 15595
SMSG_PVP_REWARDS = 0x5DA4, // 4.3.4 15595
CMSG_REQUEST_PVP_OPTIONS_ENABLED = 0x24A1, // 4.3.4 15595 CMSG_REQUEST_PVP_OPTIONS_ENABLED = 0x24A1, // 4.3.4 15595
SMSG_PVP_OPTIONS_ENABLED = 0x50A1, // 4.3.4 15595 SMSG_PVP_OPTIONS_ENABLED = 0x50A1, // 4.3.4 15595
}; };

View file

@ -23551,3 +23551,29 @@ void Player::ResetCurrencyWeekCounts()
WorldPacket data(SMSG_WEEKLY_RESET_CURRENCIES, 0); WorldPacket data(SMSG_WEEKLY_RESET_CURRENCIES, 0);
SendDirectMessage(&data); SendDirectMessage(&data);
} }
void Player::SendPvPRewards()
{
// Placeholder
WorldPacket data(SMSG_PVP_REWARDS, 6 * 4);
data << uint32(1650); // rbg conquest cap
data << uint32(0); // total conquest earned
data << uint32(1350); // arena conquest cap
data << uint32(0); // rbg conquest earned
data << uint32(0); // arena conquest earned
data << uint32(1650); // total conquest cap
SendDirectMessage(&data);
}
void Player::SendRatedBGStats()
{
// Placeholder
WorldPacket data(SMSG_RATED_BG_STATS, 6 * 4);
for (int i = 0; i < 18; ++i)
data << uint32(i + 1);
SendDirectMessage(&data);
}

View file

@ -1993,6 +1993,8 @@ class MANGOS_DLL_SPEC Player : public Unit
/*********************************************************/ /*********************************************************/
void UpdateHonorKills(); void UpdateHonorKills();
bool RewardHonor(Unit *pVictim, uint32 groupsize, float honor = -1); bool RewardHonor(Unit *pVictim, uint32 groupsize, float honor = -1);
void SendPvPRewards();
void SendRatedBGStats();
uint32 GetMaxPersonalArenaRatingRequirement(uint32 minarenaslot); uint32 GetMaxPersonalArenaRatingRequirement(uint32 minarenaslot);
@ -2091,6 +2093,13 @@ class MANGOS_DLL_SPEC Player : public Unit
} }
BattleGroundQueueTypeId GetBattleGroundQueueTypeId(uint32 index) const { return m_bgBattleGroundQueueID[index].bgQueueTypeId; } BattleGroundQueueTypeId GetBattleGroundQueueTypeId(uint32 index) const { return m_bgBattleGroundQueueID[index].bgQueueTypeId; }
BattleGroundQueueTypeId GetBattleGroundQueueTypeIdByClientInstance(uint32 instanceId) const
{
for (int i = 0; i < PLAYER_MAX_BATTLEGROUND_QUEUES; ++i)
if (m_bgBattleGroundQueueID[i].invitedToInstance == instanceId)
return m_bgBattleGroundQueueID[i].bgQueueTypeId;
return BATTLEGROUND_QUEUE_NONE;
}
uint32 GetBattleGroundQueueIndex(BattleGroundQueueTypeId bgQueueTypeId) const uint32 GetBattleGroundQueueIndex(BattleGroundQueueTypeId bgQueueTypeId) const
{ {
for (int i = 0; i < PLAYER_MAX_BATTLEGROUND_QUEUES; ++i) for (int i = 0; i < PLAYER_MAX_BATTLEGROUND_QUEUES; ++i)

View file

@ -2372,7 +2372,13 @@ enum HolidayIds
HOLIDAY_PILGRIMS_BOUNTY = 404, HOLIDAY_PILGRIMS_BOUNTY = 404,
HOLIDAY_WOTLK_LAUNCH = 406, HOLIDAY_WOTLK_LAUNCH = 406,
HOLIDAY_DAY_OF_DEAD = 409, HOLIDAY_DAY_OF_DEAD = 409,
HOLIDAY_CALL_TO_ARMS_ISLE_OF_C = 420 HOLIDAY_CALL_TO_ARMS_IC = 420,
HOLIDAY_CALL_TO_ARMS_BG = 435,
HOLIDAY_CALL_TO_ARMS_TP = 436,
HOLIDAY_CALL_TO_ARMS_RBG_15v15 = 442,
HOLIDAY_CALL_TO_ARMS_RBG_25v25 = 443,
HOLIDAY_WOW_7TH_ANNIVERSARY = 467,
HOLIDAY_WOW_8TH_ANNIVERSARY = 484,
}; };
// values based at QuestSort.dbc // values based at QuestSort.dbc
@ -3049,11 +3055,17 @@ enum BattleGroundTypeId
BATTLEGROUND_RV = 11, BATTLEGROUND_RV = 11,
BATTLEGROUND_IC = 30, BATTLEGROUND_IC = 30,
BATTLEGROUND_RB = 32, // random battleground BATTLEGROUND_RB = 32, // random battleground
BATTLEGROUND_RBG_10v10 = 100, // rated battleground 10v10
BATTLEGROUND_RBG_15v15 = 101, // rated battleground 15v15
BATTLEGROUND_RBG_5v5 = 102, // rated battleground 5v5
BATTLEGROUND_TP = 108, // 4.0.0 BATTLEGROUND_TP = 108, // 4.0.0
BATTLEGROUND_BG = 118 // 4.0.0 BATTLEGROUND_BG = 120, // 4.3.4
//BATTLEGROUND_UNK1 = 441, // icecrown citadel
//BATTLEGROUND_UNK2 = 443, // ruby sanctum
//BATTLEGROUND_UNK3 = 656, // rated eye of the storm
}; };
#define MAX_BATTLEGROUND_TYPE_ID 119 #define MAX_BATTLEGROUND_TYPE_ID 121
enum ArenaType enum ArenaType
{ {

View file

@ -764,7 +764,9 @@ class MANGOS_DLL_SPEC WorldSession
void HandleLeaveBattlefieldOpcode(WorldPacket& recv_data); void HandleLeaveBattlefieldOpcode(WorldPacket& recv_data);
void HandleBattlemasterJoinArena(WorldPacket& recv_data); void HandleBattlemasterJoinArena(WorldPacket& recv_data);
void HandleReportPvPAFK(WorldPacket& recv_data); void HandleReportPvPAFK(WorldPacket& recv_data);
void HandleRequestPvPOptionsEnabled(WorldPacket& recv_data); void HandleRequestPvPOptionsEnabledOpcode(WorldPacket& recv_data);
void HandleRequestPvPRewardsOpcode(WorldPacket& recv_data);
void HandleRequestRatedBGStatsOpcode(WorldPacket& recv_data);
void HandleWardenDataOpcode(WorldPacket& recv_data); void HandleWardenDataOpcode(WorldPacket& recv_data);
void HandleWorldTeleportOpcode(WorldPacket& recv_data); void HandleWorldTeleportOpcode(WorldPacket& recv_data);

View file

@ -1,4 +1,4 @@
#ifndef __REVISION_NR_H__ #ifndef __REVISION_NR_H__
#define __REVISION_NR_H__ #define __REVISION_NR_H__
#define REVISION_NR "12172" #define REVISION_NR "12173"
#endif // __REVISION_NR_H__ #endif // __REVISION_NR_H__