mirror of
https://github.com/TrinityCore/TrinityCore.git
synced 2026-01-15 23:20:36 +01:00
Core/PacketIO: Updated and enabled CMSG_CONFIRM_RESPEC_WIPE, SMSG_RESPEC_WIPE_CONFIRM
This commit is contained in:
@@ -9045,10 +9045,11 @@ void Player::SetBindPoint(ObjectGuid guid) const
|
||||
|
||||
void Player::SendRespecWipeConfirm(ObjectGuid const& guid, uint32 cost) const
|
||||
{
|
||||
WorldPacket data(SMSG_RESPEC_WIPE_CONFIRM, 8 + 4);
|
||||
data << guid;
|
||||
data << cost;
|
||||
GetSession()->SendPacket(&data);
|
||||
WorldPackets::Talent::RespecWipeConfirm respecWipeConfirm;
|
||||
respecWipeConfirm.RespecMaster = guid;
|
||||
respecWipeConfirm.Cost = cost;
|
||||
respecWipeConfirm.RespecType = SPEC_RESET_TALENTS;
|
||||
GetSession()->SendPacket(respecWipeConfirm.Write());
|
||||
}
|
||||
|
||||
void Player::ResetPetTalents()
|
||||
|
||||
@@ -155,6 +155,14 @@ enum TalentSpecialization // talent tabs
|
||||
TALENT_SPEC_MONK_MISTWEAVER = 270
|
||||
};
|
||||
|
||||
enum SpecResetType
|
||||
{
|
||||
SPEC_RESET_TALENTS = 0,
|
||||
SPEC_RESET_SPECIALIZATION = 1,
|
||||
SPEC_RESET_GLYPHS = 2,
|
||||
SPEC_RESET_PET_TALENTS = 3
|
||||
};
|
||||
|
||||
// Spell modifier (used for modify other spells)
|
||||
struct SpellModifier
|
||||
{
|
||||
|
||||
@@ -37,16 +37,18 @@ void WorldSession::HandleLearnTalentsOpcode(WorldPackets::Talent::LearnTalents&
|
||||
_player->SendTalentsInfoData();
|
||||
}
|
||||
|
||||
void WorldSession::HandleConfirmRespecWipeOpcode(WorldPacket& recvData)
|
||||
void WorldSession::HandleConfirmRespecWipeOpcode(WorldPackets::Talent::ConfirmRespecWipe& confirmRespecWipe)
|
||||
{
|
||||
TC_LOG_DEBUG("network", "MSG_TALENT_WIPE_CONFIRM");
|
||||
ObjectGuid guid;
|
||||
recvData >> guid;
|
||||
|
||||
Creature* unit = GetPlayer()->GetNPCIfCanInteractWith(guid, UNIT_NPC_FLAG_TRAINER);
|
||||
Creature* unit = GetPlayer()->GetNPCIfCanInteractWith(confirmRespecWipe.RespecMaster, UNIT_NPC_FLAG_TRAINER);
|
||||
if (!unit)
|
||||
{
|
||||
TC_LOG_DEBUG("network", "WORLD: HandleConfirmRespecWipeOpcode - %s not found or you can't interact with him.", guid.ToString().c_str());
|
||||
TC_LOG_DEBUG("network", "WORLD: HandleConfirmRespecWipeOpcode - %s not found or you can't interact with him.", confirmRespecWipe.RespecMaster.ToString().c_str());
|
||||
return;
|
||||
}
|
||||
|
||||
if (confirmRespecWipe.RespecType != SPEC_RESET_TALENTS)
|
||||
{
|
||||
TC_LOG_DEBUG("network", "WORLD: HandleConfirmRespecWipeOpcode - reset type %d is not implemented.", confirmRespecWipe.RespecType);
|
||||
return;
|
||||
}
|
||||
|
||||
|
||||
@@ -54,4 +54,18 @@ void WorldPackets::Talent::LearnTalents::Read()
|
||||
_worldPacket >> talent;
|
||||
Talents.push_back(talent);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
WorldPacket const* WorldPackets::Talent::RespecWipeConfirm::Write()
|
||||
{
|
||||
_worldPacket << int8(RespecType);
|
||||
_worldPacket << uint32(Cost);
|
||||
_worldPacket << RespecMaster;
|
||||
return &_worldPacket;
|
||||
}
|
||||
|
||||
void WorldPackets::Talent::ConfirmRespecWipe::Read()
|
||||
{
|
||||
_worldPacket >> RespecMaster;
|
||||
_worldPacket >> RespecType;
|
||||
}
|
||||
|
||||
@@ -68,8 +68,31 @@ namespace WorldPackets
|
||||
|
||||
void Read() override;
|
||||
std::vector<uint16> Talents;
|
||||
|
||||
};
|
||||
|
||||
class RespecWipeConfirm final : public ServerPacket
|
||||
{
|
||||
public:
|
||||
RespecWipeConfirm() : ServerPacket(SMSG_RESPEC_WIPE_CONFIRM, 16 + 4 +1) { }
|
||||
|
||||
WorldPacket const* Write() override;
|
||||
|
||||
ObjectGuid RespecMaster;
|
||||
uint32 Cost = 0;
|
||||
int8 RespecType = 0;
|
||||
};
|
||||
|
||||
class ConfirmRespecWipe final : public ClientPacket
|
||||
{
|
||||
public:
|
||||
ConfirmRespecWipe(WorldPacket&& packet) : ClientPacket(CMSG_CONFIRM_RESPEC_WIPE, std::move(packet)) { }
|
||||
|
||||
void Read() override;
|
||||
|
||||
ObjectGuid RespecMaster;
|
||||
uint8 RespecType = 0;
|
||||
};
|
||||
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@@ -294,7 +294,7 @@ void OpcodeTable::Initialize()
|
||||
DEFINE_OPCODE_HANDLER_OLD(CMSG_COMPLAINT, STATUS_UNHANDLED, PROCESS_THREADUNSAFE, &WorldSession::HandleComplainOpcode );
|
||||
DEFINE_HANDLER(CMSG_COMPLETE_CINEMATIC, STATUS_LOGGEDIN, PROCESS_THREADUNSAFE, WorldPackets::Misc::CompleteCinematic, &WorldSession::HandleCompleteCinematic);
|
||||
DEFINE_HANDLER(CMSG_COMPLETE_MOVIE, STATUS_UNHANDLED, PROCESS_INPLACE, WorldPackets::Null, &WorldSession::Handle_NULL);
|
||||
DEFINE_OPCODE_HANDLER_OLD(CMSG_CONFIRM_RESPEC_WIPE, STATUS_UNHANDLED, PROCESS_THREADUNSAFE, &WorldSession::HandleConfirmRespecWipeOpcode );
|
||||
DEFINE_HANDLER(CMSG_CONFIRM_RESPEC_WIPE, STATUS_LOGGEDIN, PROCESS_THREADUNSAFE, WorldPackets::Talent::ConfirmRespecWipe, &WorldSession::HandleConfirmRespecWipeOpcode);
|
||||
DEFINE_HANDLER(CMSG_CONNECT_TO_FAILED, STATUS_NEVER, PROCESS_INPLACE, WorldPacket, &WorldSession::Handle_EarlyProccess);
|
||||
DEFINE_HANDLER(CMSG_CONVERT_RAID, STATUS_LOGGEDIN, PROCESS_INPLACE, WorldPackets::Party::ConvertRaid, &WorldSession::HandleConvertRaidOpcode);
|
||||
DEFINE_HANDLER(CMSG_CREATE_CHARACTER, STATUS_AUTHED, PROCESS_THREADUNSAFE, WorldPackets::Character::CreateCharacter, &WorldSession::HandleCharCreateOpcode);
|
||||
@@ -1527,7 +1527,7 @@ void OpcodeTable::Initialize()
|
||||
DEFINE_SERVER_OPCODE_HANDLER(SMSG_RESET_FAILED_NOTIFY, STATUS_UNHANDLED, CONNECTION_TYPE_REALM);
|
||||
DEFINE_SERVER_OPCODE_HANDLER(SMSG_RESET_RANGED_COMBAT_TIMER, STATUS_UNHANDLED, CONNECTION_TYPE_REALM);
|
||||
DEFINE_SERVER_OPCODE_HANDLER(SMSG_RESET_WEEKLY_CURRENCY, STATUS_UNHANDLED, CONNECTION_TYPE_REALM);
|
||||
DEFINE_SERVER_OPCODE_HANDLER(SMSG_RESPEC_WIPE_CONFIRM, STATUS_UNHANDLED, CONNECTION_TYPE_REALM);
|
||||
DEFINE_SERVER_OPCODE_HANDLER(SMSG_RESPEC_WIPE_CONFIRM, STATUS_NEVER, CONNECTION_TYPE_INSTANCE);
|
||||
DEFINE_SERVER_OPCODE_HANDLER(SMSG_RESPOND_INSPECT_ACHIEVEMENTS, STATUS_NEVER, CONNECTION_TYPE_INSTANCE);
|
||||
DEFINE_SERVER_OPCODE_HANDLER(SMSG_RESUME_CAST_BAR, STATUS_UNHANDLED, CONNECTION_TYPE_REALM);
|
||||
DEFINE_SERVER_OPCODE_HANDLER(SMSG_RESUME_COMMS, STATUS_NEVER, CONNECTION_TYPE_REALM);
|
||||
|
||||
@@ -582,6 +582,7 @@ namespace WorldPackets
|
||||
{
|
||||
class SetSpecialization;
|
||||
class LearnTalents;
|
||||
class ConfirmRespecWipe;
|
||||
}
|
||||
|
||||
namespace Taxi
|
||||
@@ -1369,7 +1370,7 @@ class WorldSession
|
||||
void HandleCancelAutoRepeatSpellOpcode(WorldPackets::Spells::CancelAutoRepeatSpell& cancelAutoRepeatSpell);
|
||||
|
||||
void HandleLearnTalentsOpcode(WorldPackets::Talent::LearnTalents& packet);
|
||||
void HandleConfirmRespecWipeOpcode(WorldPacket& recvPacket);
|
||||
void HandleConfirmRespecWipeOpcode(WorldPackets::Talent::ConfirmRespecWipe& confirmRespecWipe);
|
||||
void HandleUnlearnSkillOpcode(WorldPackets::Spells::UnlearnSkill& packet);
|
||||
void HandleSetSpecializationOpcode(WorldPackets::Talent::SetSpecialization& packet);
|
||||
|
||||
|
||||
Reference in New Issue
Block a user