mirror of
https://github.com/TrinityCore/TrinityCore.git
synced 2026-01-18 08:28:32 +01:00
Core/Net: Implement sending guild challenges rewards and counts
CMSG_GUILD_REQUEST_CHALLENGE_UPDATE & SMSG_GUILD_CHALLENGE_UPDATED Partial implementation, guild challenges are not being tracked yet
This commit is contained in:
@@ -2156,6 +2156,28 @@ void Guild::HandleGuildPartyRequest(WorldSession* session)
|
||||
TC_LOG_DEBUG("guild", "SMSG_GUILD_PARTY_STATE_RESPONSE [%s]", session->GetPlayerInfo().c_str());
|
||||
}
|
||||
|
||||
void Guild::HandleGuildRequestChallengeUpdate(WorldSession* session)
|
||||
{
|
||||
WorldPacket data(SMSG_GUILD_CHALLENGE_UPDATED, 4 * GUILD_CHALLENGES_TYPES * 5);
|
||||
|
||||
for (int i = 0; i < GUILD_CHALLENGES_TYPES; ++i)
|
||||
data << uint32(GuildChallengeXPReward[i]);
|
||||
|
||||
for (int i = 0; i < GUILD_CHALLENGES_TYPES; ++i)
|
||||
data << uint32(GuildChallengeGoldReward[i]);
|
||||
|
||||
for (int i = 0; i < GUILD_CHALLENGES_TYPES; ++i)
|
||||
data << uint32(GuildChallengesPerWeek[i]);
|
||||
|
||||
for (int i = 0; i < GUILD_CHALLENGES_TYPES; ++i)
|
||||
data << uint32(GuildChallengeMaxLevelGoldReward[i]);
|
||||
|
||||
for (int i = 0; i < GUILD_CHALLENGES_TYPES; ++i)
|
||||
data << uint32(0); /// @todo current count
|
||||
|
||||
session->SendPacket(&data);
|
||||
}
|
||||
|
||||
void Guild::SendEventLog(WorldSession* session) const
|
||||
{
|
||||
WorldPacket data(SMSG_GUILD_EVENT_LOG_QUERY_RESULT, 1 + m_eventLog->GetSize() * (1 + 8 + 4));
|
||||
|
||||
@@ -268,6 +268,14 @@ struct GuildReward
|
||||
|
||||
uint32 const MinNewsItemLevel[MAX_CONTENT] = { 61, 90, 200, 353 };
|
||||
|
||||
// Guild Challenge
|
||||
#define GUILD_CHALLENGES_TYPES 4
|
||||
|
||||
const uint32 GuildChallengeGoldReward[GUILD_CHALLENGES_TYPES] = { 0, 250, 1000, 500 };
|
||||
const uint32 GuildChallengeMaxLevelGoldReward[GUILD_CHALLENGES_TYPES] = { 0, 125, 500, 250 };
|
||||
const uint32 GuildChallengeXPReward[GUILD_CHALLENGES_TYPES] = { 0, 300000, 3000000, 1500000 };
|
||||
const uint32 GuildChallengesPerWeek[GUILD_CHALLENGES_TYPES] = { 0, 7, 1, 3 };
|
||||
|
||||
// Emblem info
|
||||
class EmblemInfo
|
||||
{
|
||||
@@ -798,6 +806,7 @@ public:
|
||||
void HandleDisband(WorldSession* session);
|
||||
void HandleGuildPartyRequest(WorldSession* session);
|
||||
void HandleNewsSetSticky(WorldSession* session, uint32 newsId, bool sticky);
|
||||
void HandleGuildRequestChallengeUpdate(WorldSession* session);
|
||||
|
||||
void UpdateMemberData(Player* player, uint8 dataid, uint32 value);
|
||||
void OnPlayerStatusChange(Player* player, uint32 flag, bool state);
|
||||
|
||||
@@ -709,6 +709,12 @@ void WorldSession::HandleGuildRequestPartyState(WorldPacket& recvPacket)
|
||||
guild->HandleGuildPartyRequest(this);
|
||||
}
|
||||
|
||||
void WorldSession::HandleGuildRequestChallengeUpdate(WorldPacket& /*recvPacket*/)
|
||||
{
|
||||
if (Guild* guild = _player->GetGuild())
|
||||
guild->HandleGuildRequestChallengeUpdate(this);
|
||||
}
|
||||
|
||||
void WorldSession::HandleGuildRequestMaxDailyXP(WorldPacket& recvPacket)
|
||||
{
|
||||
ObjectGuid guid;
|
||||
|
||||
@@ -275,7 +275,7 @@ void OpcodeTable::Initialize()
|
||||
DEFINE_OPCODE_HANDLER(CMSG_GUILD_QUERY_RANKS, STATUS_LOGGEDIN, PROCESS_THREADUNSAFE, &WorldSession::HandleGuildQueryRanksOpcode );
|
||||
DEFINE_OPCODE_HANDLER(CMSG_GUILD_REMOVE, STATUS_LOGGEDIN, PROCESS_THREADUNSAFE, &WorldSession::HandleGuildRemoveOpcode );
|
||||
DEFINE_OPCODE_HANDLER(CMSG_GUILD_REPLACE_GUILD_MASTER, STATUS_UNHANDLED, PROCESS_INPLACE, &WorldSession::Handle_NULL );
|
||||
DEFINE_OPCODE_HANDLER(CMSG_GUILD_REQUEST_CHALLENGE_UPDATE, STATUS_UNHANDLED, PROCESS_INPLACE, &WorldSession::Handle_NULL );
|
||||
DEFINE_OPCODE_HANDLER(CMSG_GUILD_REQUEST_CHALLENGE_UPDATE, STATUS_LOGGEDIN, PROCESS_THREADUNSAFE, &WorldSession::HandleGuildRequestChallengeUpdate);
|
||||
DEFINE_OPCODE_HANDLER(CMSG_GUILD_REQUEST_MAX_DAILY_XP, STATUS_LOGGEDIN, PROCESS_THREADUNSAFE, &WorldSession::HandleGuildRequestMaxDailyXP );
|
||||
DEFINE_OPCODE_HANDLER(CMSG_GUILD_REQUEST_PARTY_STATE, STATUS_LOGGEDIN, PROCESS_THREADUNSAFE, &WorldSession::HandleGuildRequestPartyState );
|
||||
DEFINE_OPCODE_HANDLER(CMSG_GUILD_ROSTER, STATUS_LOGGEDIN, PROCESS_THREADUNSAFE, &WorldSession::HandleGuildRosterOpcode );
|
||||
@@ -855,7 +855,7 @@ void OpcodeTable::Initialize()
|
||||
DEFINE_OPCODE_HANDLER(SMSG_GUILD_BANK_MONEY_WITHDRAWN, STATUS_NEVER, PROCESS_INPLACE, &WorldSession::Handle_ServerSide );
|
||||
DEFINE_OPCODE_HANDLER(SMSG_GUILD_BANK_QUERY_TEXT_RESULT, STATUS_NEVER, PROCESS_INPLACE, &WorldSession::Handle_ServerSide );
|
||||
DEFINE_OPCODE_HANDLER(SMSG_GUILD_CHALLENGE_COMPLETED, STATUS_UNHANDLED, PROCESS_INPLACE, &WorldSession::Handle_ServerSide );
|
||||
DEFINE_OPCODE_HANDLER(SMSG_GUILD_CHALLENGE_UPDATED, STATUS_UNHANDLED, PROCESS_INPLACE, &WorldSession::Handle_ServerSide );
|
||||
DEFINE_OPCODE_HANDLER(SMSG_GUILD_CHALLENGE_UPDATED, STATUS_NEVER, PROCESS_INPLACE, &WorldSession::Handle_ServerSide );
|
||||
DEFINE_OPCODE_HANDLER(SMSG_GUILD_CHANGE_NAME_RESULT, STATUS_UNHANDLED, PROCESS_INPLACE, &WorldSession::Handle_ServerSide );
|
||||
DEFINE_OPCODE_HANDLER(SMSG_GUILD_COMMAND_RESULT, STATUS_NEVER, PROCESS_INPLACE, &WorldSession::Handle_ServerSide );
|
||||
DEFINE_OPCODE_HANDLER(SMSG_GUILD_COMMAND_RESULT_2, STATUS_NEVER, PROCESS_INPLACE, &WorldSession::Handle_ServerSide );
|
||||
|
||||
@@ -594,6 +594,7 @@ class WorldSession
|
||||
void HandleGuildChangeInfoTextOpcode(WorldPacket& recvPacket);
|
||||
void HandleSaveGuildEmblemOpcode(WorldPacket& recvPacket);
|
||||
void HandleGuildRequestPartyState(WorldPacket& recvPacket);
|
||||
void HandleGuildRequestChallengeUpdate(WorldPacket& recvPacket);
|
||||
void HandleGuildRequestMaxDailyXP(WorldPacket& recvPacket);
|
||||
void HandleAutoDeclineGuildInvites(WorldPacket& recvPacket);
|
||||
|
||||
|
||||
Reference in New Issue
Block a user