SMSG_QUESTGIVER_QUEST_FAILED elaboration
This commit is contained in:
parent
44aea2df35
commit
ed0ac56501
@ -12684,6 +12684,7 @@ void Player::RewardQuest(Quest const* pQuest, uint32 reward, Object* questGiver,
|
|||||||
{ itr->second->ApplyOrRemoveSpellIfCan(this, zone, area, false); }
|
{ itr->second->ApplyOrRemoveSpellIfCan(this, zone, area, false); }
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// TODO be more specific at callers about quest fail reason. Also, quest "fails" when either picking up or giving out is unsuccessful.
|
||||||
void Player::FailQuest(uint32 questId)
|
void Player::FailQuest(uint32 questId)
|
||||||
{
|
{
|
||||||
if (Quest const* pQuest = sObjectMgr.GetQuestTemplate(questId))
|
if (Quest const* pQuest = sObjectMgr.GetQuestTemplate(questId))
|
||||||
@ -13702,12 +13703,16 @@ void Player::SendQuestReward(Quest const* pQuest, uint32 XP)
|
|||||||
GetSession()->SendPacket(&data);
|
GetSession()->SendPacket(&data);
|
||||||
}
|
}
|
||||||
|
|
||||||
void Player::SendQuestFailed(uint32 quest_id)
|
/// 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)
|
||||||
{
|
{
|
||||||
if (quest_id)
|
if (quest_id)
|
||||||
{
|
{
|
||||||
WorldPacket data(SMSG_QUESTGIVER_QUEST_FAILED, 4);
|
WorldPacket data(SMSG_QUESTGIVER_QUEST_FAILED, 8);
|
||||||
data << uint32(quest_id);
|
data << uint32(quest_id);
|
||||||
|
data << uint32(reason);
|
||||||
GetSession()->SendPacket(&data);
|
GetSession()->SendPacket(&data);
|
||||||
DEBUG_LOG("WORLD: Sent SMSG_QUESTGIVER_QUEST_FAILED");
|
DEBUG_LOG("WORLD: Sent SMSG_QUESTGIVER_QUEST_FAILED");
|
||||||
}
|
}
|
||||||
|
@ -1410,7 +1410,7 @@ class Player : public Unit
|
|||||||
|
|
||||||
void SendQuestCompleteEvent(uint32 quest_id);
|
void SendQuestCompleteEvent(uint32 quest_id);
|
||||||
void SendQuestReward(Quest const* pQuest, uint32 XP);
|
void SendQuestReward(Quest const* pQuest, uint32 XP);
|
||||||
void SendQuestFailed(uint32 quest_id);
|
void SendQuestFailed(uint32 quest_id, uint32 reason = INVALIDREASON_DONT_HAVE_REQ);
|
||||||
void SendQuestTimerFailed(uint32 quest_id);
|
void SendQuestTimerFailed(uint32 quest_id);
|
||||||
void SendCanTakeQuestResponse(uint32 msg) const;
|
void SendCanTakeQuestResponse(uint32 msg) const;
|
||||||
void SendQuestConfirmAccept(Quest const* pQuest, Player* pReceiver);
|
void SendQuestConfirmAccept(Quest const* pQuest, Player* pReceiver);
|
||||||
|
@ -455,14 +455,14 @@ void Opcodes::BuildOpcodeList()
|
|||||||
/*0x188*/ StoreOpcode(SMSG_QUESTGIVER_QUEST_DETAILS, "SMSG_QUESTGIVER_QUEST_DETAILS", STATUS_NEVER, PROCESS_INPLACE, &WorldSession::Handle_ServerSide);
|
/*0x188*/ StoreOpcode(SMSG_QUESTGIVER_QUEST_DETAILS, "SMSG_QUESTGIVER_QUEST_DETAILS", STATUS_NEVER, PROCESS_INPLACE, &WorldSession::Handle_ServerSide);
|
||||||
/*[-ZERO] Need check */ /*0x189*/ StoreOpcode(CMSG_QUESTGIVER_ACCEPT_QUEST, "CMSG_QUESTGIVER_ACCEPT_QUEST", STATUS_LOGGEDIN, PROCESS_THREADUNSAFE, &WorldSession::HandleQuestgiverAcceptQuestOpcode);
|
/*[-ZERO] Need check */ /*0x189*/ StoreOpcode(CMSG_QUESTGIVER_ACCEPT_QUEST, "CMSG_QUESTGIVER_ACCEPT_QUEST", STATUS_LOGGEDIN, PROCESS_THREADUNSAFE, &WorldSession::HandleQuestgiverAcceptQuestOpcode);
|
||||||
/*[-ZERO] Need check */ /*0x18A*/ StoreOpcode(CMSG_QUESTGIVER_COMPLETE_QUEST, "CMSG_QUESTGIVER_COMPLETE_QUEST", STATUS_LOGGEDIN, PROCESS_THREADUNSAFE, &WorldSession::HandleQuestgiverCompleteQuest);
|
/*[-ZERO] Need check */ /*0x18A*/ StoreOpcode(CMSG_QUESTGIVER_COMPLETE_QUEST, "CMSG_QUESTGIVER_COMPLETE_QUEST", STATUS_LOGGEDIN, PROCESS_THREADUNSAFE, &WorldSession::HandleQuestgiverCompleteQuest);
|
||||||
/*[-ZERO] Need check */ /*0x18B*/ StoreOpcode(SMSG_QUESTGIVER_REQUEST_ITEMS, "SMSG_QUESTGIVER_REQUEST_ITEMS", STATUS_NEVER, PROCESS_INPLACE, &WorldSession::Handle_ServerSide);
|
/*0x18B*/ StoreOpcode(SMSG_QUESTGIVER_REQUEST_ITEMS, "SMSG_QUESTGIVER_REQUEST_ITEMS", STATUS_NEVER, PROCESS_INPLACE, &WorldSession::Handle_ServerSide);
|
||||||
/*[-ZERO] Need check */ /*0x18C*/ StoreOpcode(CMSG_QUESTGIVER_REQUEST_REWARD, "CMSG_QUESTGIVER_REQUEST_REWARD", STATUS_LOGGEDIN, PROCESS_THREADUNSAFE, &WorldSession::HandleQuestgiverRequestRewardOpcode);
|
/*[-ZERO] Need check */ /*0x18C*/ StoreOpcode(CMSG_QUESTGIVER_REQUEST_REWARD, "CMSG_QUESTGIVER_REQUEST_REWARD", STATUS_LOGGEDIN, PROCESS_THREADUNSAFE, &WorldSession::HandleQuestgiverRequestRewardOpcode);
|
||||||
/*[-ZERO] Need check */ /*0x18D*/ StoreOpcode(SMSG_QUESTGIVER_OFFER_REWARD, "SMSG_QUESTGIVER_OFFER_REWARD", STATUS_NEVER, PROCESS_INPLACE, &WorldSession::Handle_ServerSide);
|
/*0x18D*/ StoreOpcode(SMSG_QUESTGIVER_OFFER_REWARD, "SMSG_QUESTGIVER_OFFER_REWARD", STATUS_NEVER, PROCESS_INPLACE, &WorldSession::Handle_ServerSide);
|
||||||
/*[-ZERO] Need check */ /*0x18E*/ StoreOpcode(CMSG_QUESTGIVER_CHOOSE_REWARD, "CMSG_QUESTGIVER_CHOOSE_REWARD", STATUS_LOGGEDIN, PROCESS_THREADUNSAFE, &WorldSession::HandleQuestgiverChooseRewardOpcode);
|
/*[-ZERO] Need check */ /*0x18E*/ StoreOpcode(CMSG_QUESTGIVER_CHOOSE_REWARD, "CMSG_QUESTGIVER_CHOOSE_REWARD", STATUS_LOGGEDIN, PROCESS_THREADUNSAFE, &WorldSession::HandleQuestgiverChooseRewardOpcode);
|
||||||
/*[-ZERO] Need check */ /*0x18F*/ StoreOpcode(SMSG_QUESTGIVER_QUEST_INVALID, "SMSG_QUESTGIVER_QUEST_INVALID", STATUS_NEVER, PROCESS_INPLACE, &WorldSession::Handle_ServerSide);
|
/*0x18F*/ StoreOpcode(SMSG_QUESTGIVER_QUEST_INVALID, "SMSG_QUESTGIVER_QUEST_INVALID", STATUS_NEVER, PROCESS_INPLACE, &WorldSession::Handle_ServerSide);
|
||||||
/*[-ZERO] Need check */ /*0x190*/ StoreOpcode(CMSG_QUESTGIVER_CANCEL, "CMSG_QUESTGIVER_CANCEL", STATUS_LOGGEDIN, PROCESS_THREADUNSAFE, &WorldSession::HandleQuestgiverCancel);
|
/*[-ZERO] Need check */ /*0x190*/ StoreOpcode(CMSG_QUESTGIVER_CANCEL, "CMSG_QUESTGIVER_CANCEL", STATUS_LOGGEDIN, PROCESS_THREADUNSAFE, &WorldSession::HandleQuestgiverCancel);
|
||||||
/*[-ZERO] Need check */ /*0x191*/ StoreOpcode(SMSG_QUESTGIVER_QUEST_COMPLETE, "SMSG_QUESTGIVER_QUEST_COMPLETE", STATUS_NEVER, PROCESS_INPLACE, &WorldSession::Handle_ServerSide);
|
/*0x191*/ StoreOpcode(SMSG_QUESTGIVER_QUEST_COMPLETE, "SMSG_QUESTGIVER_QUEST_COMPLETE", STATUS_NEVER, PROCESS_INPLACE, &WorldSession::Handle_ServerSide);
|
||||||
/*[-ZERO] Need check */ /*0x192*/ StoreOpcode(SMSG_QUESTGIVER_QUEST_FAILED, "SMSG_QUESTGIVER_QUEST_FAILED", STATUS_NEVER, PROCESS_INPLACE, &WorldSession::Handle_ServerSide);
|
/*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 */ /*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 */ /*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 */ /*0x195*/ StoreOpcode(SMSG_QUESTLOG_FULL, "SMSG_QUESTLOG_FULL", STATUS_NEVER, PROCESS_INPLACE, &WorldSession::Handle_ServerSide);
|
||||||
|
@ -662,6 +662,7 @@ void PlayerMenu::SendQuestGiverOfferReward(Quest const* pQuest, ObjectGuid npcGU
|
|||||||
}
|
}
|
||||||
|
|
||||||
data << EmoteCount; // Emote Count
|
data << EmoteCount; // Emote Count
|
||||||
|
// TODO unify cycle constructions: the previous one allows non-sequential data placing, while the next one does not
|
||||||
for (uint32 i = 0; i < EmoteCount; ++i)
|
for (uint32 i = 0; i < EmoteCount; ++i)
|
||||||
{
|
{
|
||||||
data << uint32(pQuest->OfferRewardEmoteDelay[i]); // Delay Emote
|
data << uint32(pQuest->OfferRewardEmoteDelay[i]); // Delay Emote
|
||||||
|
@ -45,18 +45,19 @@ class ObjectMgr;
|
|||||||
#define QUEST_REPUTATIONS_COUNT 5
|
#define QUEST_REPUTATIONS_COUNT 5
|
||||||
#define QUEST_EMOTE_COUNT 4
|
#define QUEST_EMOTE_COUNT 4
|
||||||
|
|
||||||
// [-ZERO] need update
|
|
||||||
enum QuestFailedReasons
|
enum QuestFailedReasons
|
||||||
{
|
{
|
||||||
INVALIDREASON_DONT_HAVE_REQ = 0, // this is default case
|
INVALIDREASON_DONT_HAVE_REQ = 0, // this is default case
|
||||||
INVALIDREASON_QUEST_FAILED_LOW_LEVEL = 1, // You are not high enough level for that quest.
|
INVALIDREASON_QUEST_FAILED_LOW_LEVEL = 1, // You are not high enough level for that quest.
|
||||||
|
INVALIDREASON_QUEST_FAILED_REQS = 2, // You don't meet the requirements for that quest.
|
||||||
|
INVALIDREASON_QUEST_FAILED_INVENTORY_FULL = 4, // Inventory is full. (Also 50. From SMSG_QUESTGIVER_QUEST_FAILED)
|
||||||
INVALIDREASON_QUEST_FAILED_WRONG_RACE = 6, // That quest is not available to your race.
|
INVALIDREASON_QUEST_FAILED_WRONG_RACE = 6, // That quest is not available to your race.
|
||||||
INVALIDREASON_QUEST_ALREADY_DONE = 7, // You have completed that quest.
|
|
||||||
INVALIDREASON_QUEST_ONLY_ONE_TIMED = 12, // You can only be on one timed quest at a time.
|
INVALIDREASON_QUEST_ONLY_ONE_TIMED = 12, // You can only be on one timed quest at a time.
|
||||||
INVALIDREASON_QUEST_ALREADY_ON = 13, // You are already on that quest.
|
INVALIDREASON_QUEST_ALREADY_ON = 13, // You are already on that quest.
|
||||||
INVALIDREASON_QUEST_ALREADY_ON2 = 18, // You are already on that quest.
|
INVALIDREASON_QUEST_FAILED_DUPLICATE_ITEM = 17, // Duplicate item found. (From SMSG_QUESTGIVER_QUEST_FAILED)
|
||||||
INVALIDREASON_QUEST_FAILED_MISSING_ITEMS = 21, // You don't have the required items with you. Check storage.
|
INVALIDREASON_QUEST_FAILED_MISSING_ITEMS = 20, // You don't have the required items with you. Check storage.
|
||||||
INVALIDREASON_QUEST_FAILED_NOT_ENOUGH_MONEY = 23 // You don't have enough money for that quest.
|
INVALIDREASON_QUEST_FAILED_NOT_ENOUGH_MONEY = 22 // You don't have enough money for that quest.
|
||||||
|
// INVALIDREASON_QUEST_FAILED_REQS = 3,4,5,7-11,14-19,21
|
||||||
};
|
};
|
||||||
|
|
||||||
enum QuestShareMessages
|
enum QuestShareMessages
|
||||||
|
Loading…
x
Reference in New Issue
Block a user