diff --git a/src/game/Object/Player.cpp b/src/game/Object/Player.cpp index 9d753fea..5893d7b7 100644 --- a/src/game/Object/Player.cpp +++ b/src/game/Object/Player.cpp @@ -13706,7 +13706,7 @@ void Player::SendQuestReward(Quest const* pQuest, uint32 XP) /// Sent when a quest is failed to be given off at questtaker. Specifically handled reasons: /// INVALIDREASON_QUEST_FAILED_INVENTORY_FULL=4 (or 50) /// INVALIDREASON_QUEST_FAILED_DUPLICATE_ITEM=17 -void Player::SendQuestFailed(uint32 quest_id, uint32 reason) +void Player::SendQuestFailedAtTaker(uint32 quest_id, uint32 reason) { if (quest_id) { @@ -13718,6 +13718,17 @@ void Player::SendQuestFailed(uint32 quest_id, uint32 reason) } } +void Player::SendQuestFailed(uint32 quest_id) +{ + if (quest_id) + { + WorldPacket data(SMSG_QUESTUPDATE_FAILED, 4); + data << uint32(quest_id); + GetSession()->SendPacket(&data); + DEBUG_LOG("WORLD: Sent SMSG_QUESTUPDATE_FAILED"); + } +} + void Player::SendQuestTimerFailed(uint32 quest_id) { if (quest_id) diff --git a/src/game/Object/Player.h b/src/game/Object/Player.h index 51c5fe12..f730ef05 100644 --- a/src/game/Object/Player.h +++ b/src/game/Object/Player.h @@ -1410,7 +1410,8 @@ class Player : public Unit void SendQuestCompleteEvent(uint32 quest_id); void SendQuestReward(Quest const* pQuest, uint32 XP); - void SendQuestFailed(uint32 quest_id, uint32 reason = INVALIDREASON_DONT_HAVE_REQ); + void SendQuestFailed(uint32 quest_id); + void SendQuestFailedAtTaker(uint32 quest_id, uint32 reason = INVALIDREASON_DONT_HAVE_REQ); void SendQuestTimerFailed(uint32 quest_id); void SendCanTakeQuestResponse(uint32 msg) const; void SendQuestConfirmAccept(Quest const* pQuest, Player* pReceiver); diff --git a/src/game/Server/Opcodes.cpp b/src/game/Server/Opcodes.cpp index ccb16bc5..3a6eabf0 100644 --- a/src/game/Server/Opcodes.cpp +++ b/src/game/Server/Opcodes.cpp @@ -465,9 +465,9 @@ void Opcodes::BuildOpcodeList() /*0x192*/ StoreOpcode(SMSG_QUESTGIVER_QUEST_FAILED, "SMSG_QUESTGIVER_QUEST_FAILED", STATUS_NEVER, PROCESS_INPLACE, &WorldSession::Handle_ServerSide); /*[-ZERO] Need check */ /*0x193*/ StoreOpcode(CMSG_QUESTLOG_SWAP_QUEST, "CMSG_QUESTLOG_SWAP_QUEST", STATUS_LOGGEDIN, PROCESS_THREADUNSAFE, &WorldSession::HandleQuestLogSwapQuest); /*[-ZERO] Need check */ /*0x194*/ StoreOpcode(CMSG_QUESTLOG_REMOVE_QUEST, "CMSG_QUESTLOG_REMOVE_QUEST", STATUS_LOGGEDIN, PROCESS_THREADUNSAFE, &WorldSession::HandleQuestLogRemoveQuest); - /*[-ZERO] Need check */ /*0x195*/ StoreOpcode(SMSG_QUESTLOG_FULL, "SMSG_QUESTLOG_FULL", STATUS_NEVER, PROCESS_INPLACE, &WorldSession::Handle_ServerSide); - /*[-ZERO] Need check */ /*0x196*/ StoreOpcode(SMSG_QUESTUPDATE_FAILED, "SMSG_QUESTUPDATE_FAILED", STATUS_NEVER, PROCESS_INPLACE, &WorldSession::Handle_ServerSide); - /*[-ZERO] Need check */ /*0x197*/ StoreOpcode(SMSG_QUESTUPDATE_FAILEDTIMER, "SMSG_QUESTUPDATE_FAILEDTIMER", STATUS_NEVER, PROCESS_INPLACE, &WorldSession::Handle_ServerSide); + /*0x195*/ StoreOpcode(SMSG_QUESTLOG_FULL, "SMSG_QUESTLOG_FULL", STATUS_NEVER, PROCESS_INPLACE, &WorldSession::Handle_ServerSide); + /*0x196*/ StoreOpcode(SMSG_QUESTUPDATE_FAILED, "SMSG_QUESTUPDATE_FAILED", STATUS_NEVER, PROCESS_INPLACE, &WorldSession::Handle_ServerSide); + /*0x197*/ StoreOpcode(SMSG_QUESTUPDATE_FAILEDTIMER, "SMSG_QUESTUPDATE_FAILEDTIMER", STATUS_NEVER, PROCESS_INPLACE, &WorldSession::Handle_ServerSide); /*[-ZERO] Need check */ /*0x198*/ StoreOpcode(SMSG_QUESTUPDATE_COMPLETE, "SMSG_QUESTUPDATE_COMPLETE", STATUS_NEVER, PROCESS_INPLACE, &WorldSession::Handle_ServerSide); /*[-ZERO] Need check */ /*0x199*/ StoreOpcode(SMSG_QUESTUPDATE_ADD_KILL, "SMSG_QUESTUPDATE_ADD_KILL", STATUS_NEVER, PROCESS_INPLACE, &WorldSession::Handle_ServerSide); /*[-ZERO] Need check */ /*0x19A*/ StoreOpcode(SMSG_QUESTUPDATE_ADD_ITEM, "SMSG_QUESTUPDATE_ADD_ITEM", STATUS_NEVER, PROCESS_INPLACE, &WorldSession::Handle_ServerSide);