diff options
-rw-r--r-- | src/server/game/Handlers/QuestHandler.cpp | 13 | ||||
-rw-r--r-- | src/server/game/Server/Packets/QuestPackets.cpp | 5 | ||||
-rw-r--r-- | src/server/game/Server/Packets/QuestPackets.h | 10 | ||||
-rw-r--r-- | src/server/game/Server/Protocol/Opcodes.cpp | 6 | ||||
-rw-r--r-- | src/server/game/Server/Protocol/Opcodes.h | 2 | ||||
-rw-r--r-- | src/server/game/Server/WorldSession.h | 3 |
6 files changed, 26 insertions, 13 deletions
diff --git a/src/server/game/Handlers/QuestHandler.cpp b/src/server/game/Handlers/QuestHandler.cpp index a13145394e5..56126fb9250 100644 --- a/src/server/game/Handlers/QuestHandler.cpp +++ b/src/server/game/Handlers/QuestHandler.cpp @@ -373,16 +373,13 @@ void WorldSession::HandleQuestLogSwapQuest(WorldPacket& recvData) GetPlayer()->SwapQuestSlot(slot1, slot2); } -void WorldSession::HandleQuestLogRemoveQuest(WorldPacket& recvData) +void WorldSession::HandleQuestLogRemoveQuest(WorldPackets::Quest::QuestLogRemoveQuest& packet) { - uint8 slot; - recvData >> slot; + TC_LOG_DEBUG("network", "WORLD: Received CMSG_QUESTLOG_REMOVE_QUEST slot = %u", packet.Entry); - TC_LOG_DEBUG("network", "WORLD: Received CMSG_QUESTLOG_REMOVE_QUEST slot = %u", slot); - - if (slot < MAX_QUEST_LOG_SIZE) + if (packet.Entry < MAX_QUEST_LOG_SIZE) { - if (uint32 questId = _player->GetQuestSlotQuestId(slot)) + if (uint32 questId = _player->GetQuestSlotQuestId(packet.Entry)) { if (!_player->TakeQuestSourceItem(questId, true)) return; // can't un-equip some items, reject quest cancel @@ -417,7 +414,7 @@ void WorldSession::HandleQuestLogRemoveQuest(WorldPacket& recvData) } } - _player->SetQuestSlot(slot, 0); + _player->SetQuestSlot(packet.Entry, 0); _player->UpdateAchievementCriteria(ACHIEVEMENT_CRITERIA_TYPE_QUEST_ABANDONED, 1); } diff --git a/src/server/game/Server/Packets/QuestPackets.cpp b/src/server/game/Server/Packets/QuestPackets.cpp index 8b14366b334..9801db09844 100644 --- a/src/server/game/Server/Packets/QuestPackets.cpp +++ b/src/server/game/Server/Packets/QuestPackets.cpp @@ -433,3 +433,8 @@ void WorldPackets::Quest::QuestGiverAcceptQuest::Read() _worldPacket >> QuestID; StartCheat = _worldPacket.ReadBit(); } + +void WorldPackets::Quest::QuestLogRemoveQuest::Read() +{ + _worldPacket >> Entry; +} diff --git a/src/server/game/Server/Packets/QuestPackets.h b/src/server/game/Server/Packets/QuestPackets.h index 3c20ead28ae..440c8ea5478 100644 --- a/src/server/game/Server/Packets/QuestPackets.h +++ b/src/server/game/Server/Packets/QuestPackets.h @@ -417,6 +417,16 @@ namespace WorldPackets int32 QuestID = 0; bool StartCheat = false; }; + + class QuestLogRemoveQuest final : public ClientPacket + { + public: + QuestLogRemoveQuest(WorldPacket&& packet) : ClientPacket(CMSG_QUESTLOG_REMOVE_QUEST, std::move(packet)) { } + + void Read() override; + + uint8 Entry = 0; + }; } } diff --git a/src/server/game/Server/Protocol/Opcodes.cpp b/src/server/game/Server/Protocol/Opcodes.cpp index 5f4ad05f6f9..79287a1b720 100644 --- a/src/server/game/Server/Protocol/Opcodes.cpp +++ b/src/server/game/Server/Protocol/Opcodes.cpp @@ -662,15 +662,15 @@ void OpcodeTable::Initialize() DEFINE_HANDLER(CMSG_QUERY_TIME, STATUS_LOGGEDIN, PROCESS_THREADUNSAFE, WorldPackets::Query::QueryTime, &WorldSession::HandleQueryTimeOpcode); DEFINE_HANDLER(CMSG_QUESTGIVER_ACCEPT_QUEST, STATUS_LOGGEDIN, PROCESS_THREADUNSAFE, WorldPackets::Quest::QuestGiverAcceptQuest, &WorldSession::HandleQuestgiverAcceptQuestOpcode); DEFINE_OPCODE_HANDLER_OLD(CMSG_QUESTGIVER_CANCEL, STATUS_UNHANDLED, PROCESS_INPLACE, &WorldSession::Handle_NULL ); - DEFINE_HANDLER(CMSG_QUESTGIVER_CHOOSE_REWARD, STATUS_UNHANDLED, PROCESS_THREADUNSAFE, WorldPackets::Quest::QuestGiverChooseReward, &WorldSession::HandleQuestgiverChooseRewardOpcode); - DEFINE_HANDLER(CMSG_QUESTGIVER_COMPLETE_QUEST, STATUS_UNHANDLED, PROCESS_THREADUNSAFE, WorldPackets::Quest::QuestGiverCompleteQuest, &WorldSession::HandleQuestgiverCompleteQuest); + DEFINE_HANDLER(CMSG_QUESTGIVER_CHOOSE_REWARD, STATUS_LOGGEDIN, PROCESS_THREADUNSAFE, WorldPackets::Quest::QuestGiverChooseReward, &WorldSession::HandleQuestgiverChooseRewardOpcode); + DEFINE_HANDLER(CMSG_QUESTGIVER_COMPLETE_QUEST, STATUS_LOGGEDIN, PROCESS_THREADUNSAFE, WorldPackets::Quest::QuestGiverCompleteQuest, &WorldSession::HandleQuestgiverCompleteQuest); DEFINE_HANDLER(CMSG_QUESTGIVER_HELLO, STATUS_UNHANDLED, PROCESS_THREADUNSAFE, WorldPackets::Quest::QuestGiverHello, &WorldSession::HandleQuestgiverHelloOpcode); DEFINE_HANDLER(CMSG_QUESTGIVER_QUERY_QUEST, STATUS_LOGGEDIN, PROCESS_THREADUNSAFE, WorldPackets::Quest::QuestGiverQueryQuest, &WorldSession::HandleQuestgiverQueryQuestOpcode); DEFINE_OPCODE_HANDLER_OLD(CMSG_QUESTGIVER_QUEST_AUTOLAUNCH, STATUS_UNHANDLED, PROCESS_INPLACE, &WorldSession::Handle_NULL ); DEFINE_HANDLER(CMSG_QUESTGIVER_REQUEST_REWARD, STATUS_UNHANDLED, PROCESS_THREADUNSAFE, WorldPackets::Quest::QuestGiverRequestReward, &WorldSession::HandleQuestgiverRequestRewardOpcode); DEFINE_HANDLER(CMSG_QUESTGIVER_STATUS_MULTIPLE_QUERY, STATUS_LOGGEDIN, PROCESS_THREADUNSAFE, WorldPackets::Quest::QuestGiverStatusMultipleQuery, &WorldSession::HandleQuestgiverStatusMultipleQuery); DEFINE_HANDLER(CMSG_QUESTGIVER_STATUS_QUERY, STATUS_LOGGEDIN, PROCESS_INPLACE, WorldPackets::Quest::QuestGiverStatusQuery, &WorldSession::HandleQuestgiverStatusQueryOpcode); - DEFINE_OPCODE_HANDLER_OLD(CMSG_QUESTLOG_REMOVE_QUEST, STATUS_UNHANDLED, PROCESS_THREADUNSAFE, &WorldSession::HandleQuestLogRemoveQuest ); + DEFINE_HANDLER(CMSG_QUESTLOG_REMOVE_QUEST, STATUS_LOGGEDIN, PROCESS_THREADUNSAFE, WorldPackets::Quest::QuestLogRemoveQuest, &WorldSession::HandleQuestLogRemoveQuest); DEFINE_OPCODE_HANDLER_OLD(CMSG_QUESTLOG_SWAP_QUEST, STATUS_UNHANDLED, PROCESS_INPLACE, &WorldSession::Handle_NULL ); DEFINE_OPCODE_HANDLER_OLD(CMSG_QUEST_CONFIRM_ACCEPT, STATUS_UNHANDLED, PROCESS_THREADUNSAFE, &WorldSession::HandleQuestConfirmAccept ); DEFINE_OPCODE_HANDLER_OLD(CMSG_QUERY_QUEST_COMPLETION_NPCS, STATUS_UNHANDLED, PROCESS_THREADUNSAFE, &WorldSession::HandleQuestNPCQuery ); diff --git a/src/server/game/Server/Protocol/Opcodes.h b/src/server/game/Server/Protocol/Opcodes.h index 1b720f899ff..da7adf5d748 100644 --- a/src/server/game/Server/Protocol/Opcodes.h +++ b/src/server/game/Server/Protocol/Opcodes.h @@ -580,7 +580,7 @@ enum OpcodeClient : uint32 CMSG_QUESTGIVER_REQUEST_REWARD = 0xBADD, CMSG_QUESTGIVER_STATUS_MULTIPLE_QUERY = 0x0A39, CMSG_QUESTGIVER_STATUS_QUERY = 0x0A7B, - CMSG_QUESTLOG_REMOVE_QUEST = 0xBADD, + CMSG_QUESTLOG_REMOVE_QUEST = 0x04C3, CMSG_QUESTLOG_SWAP_QUEST = 0xBADD, CMSG_QUEST_CONFIRM_ACCEPT = 0xBADD, CMSG_QUEST_POI_QUERY = 0x1B2A, diff --git a/src/server/game/Server/WorldSession.h b/src/server/game/Server/WorldSession.h index 5e7f2aaa703..71ce6546d3c 100644 --- a/src/server/game/Server/WorldSession.h +++ b/src/server/game/Server/WorldSession.h @@ -332,6 +332,7 @@ namespace WorldPackets class QuestGiverRequestReward; class QuestGiverQueryQuest; class QuestGiverAcceptQuest; + class QuestLogRemoveQuest; } namespace Social @@ -1102,7 +1103,7 @@ class WorldSession void HandleQuestQueryOpcode(WorldPackets::Quest::QueryQuestInfo& packet); void HandleQuestgiverCancel(WorldPacket& recvData); void HandleQuestLogSwapQuest(WorldPacket& recvData); - void HandleQuestLogRemoveQuest(WorldPacket& recvData); + void HandleQuestLogRemoveQuest(WorldPackets::Quest::QuestLogRemoveQuest& packet); void HandleQuestConfirmAccept(WorldPacket& recvData); void HandleQuestgiverCompleteQuest(WorldPackets::Quest::QuestGiverCompleteQuest& packet); void HandleQuestgiverQuestAutoLaunch(WorldPacket& recvPacket); |