From 1cedcf0bf349581b6fff210e4c325e25b51ccf0c Mon Sep 17 00:00:00 2001 From: Andrew Letson Date: Sun, 17 Dec 2017 09:51:11 -0500 Subject: Scripts/Commands: Add failure state for quest remove (#20611) Add more verbose messaging to the .quest remove command --- src/server/scripts/Commands/cs_quest.cpp | 44 +++++++++++++++++++------------- 1 file changed, 26 insertions(+), 18 deletions(-) (limited to 'src') diff --git a/src/server/scripts/Commands/cs_quest.cpp b/src/server/scripts/Commands/cs_quest.cpp index cd21909a872..6b2113905d7 100644 --- a/src/server/scripts/Commands/cs_quest.cpp +++ b/src/server/scripts/Commands/cs_quest.cpp @@ -128,32 +128,40 @@ public: return false; } - // remove all quest entries for 'entry' from quest log - for (uint8 slot = 0; slot < MAX_QUEST_LOG_SIZE; ++slot) + if (player->GetQuestStatus(entry) != QUEST_STATUS_NONE) { - uint32 logQuest = player->GetQuestSlotQuestId(slot); - if (logQuest == entry) + // remove all quest entries for 'entry' from quest log + for (uint8 slot = 0; slot < MAX_QUEST_LOG_SIZE; ++slot) { - player->SetQuestSlot(slot, 0); + uint32 logQuest = player->GetQuestSlotQuestId(slot); + if (logQuest == entry) + { + player->SetQuestSlot(slot, 0); - // we ignore unequippable quest items in this case, its' still be equipped - player->TakeQuestSourceItem(logQuest, false); + // we ignore unequippable quest items in this case, its' still be equipped + player->TakeQuestSourceItem(logQuest, false); - if (quest->HasFlag(QUEST_FLAGS_FLAGS_PVP)) - { - player->pvpInfo.IsHostile = player->pvpInfo.IsInHostileArea || player->HasPvPForcingQuest(); - player->UpdatePvPState(); + if (quest->HasFlag(QUEST_FLAGS_FLAGS_PVP)) + { + player->pvpInfo.IsHostile = player->pvpInfo.IsInHostileArea || player->HasPvPForcingQuest(); + player->UpdatePvPState(); + } } } - } + player->RemoveActiveQuest(entry, false); + player->RemoveRewardedQuest(entry); - player->RemoveActiveQuest(entry, false); - player->RemoveRewardedQuest(entry); + sScriptMgr->OnQuestStatusChange(player, entry); - sScriptMgr->OnQuestStatusChange(player, entry); - - handler->SendSysMessage(LANG_COMMAND_QUEST_REMOVED); - return true; + handler->SendSysMessage(LANG_COMMAND_QUEST_REMOVED); + return true; + } + else + { + handler->SendSysMessage(LANG_COMMAND_QUEST_NOTFOUND); + handler->SetSentErrorMessage(true); + return false; + } } static bool HandleQuestComplete(ChatHandler* handler, char const* args) -- cgit v1.2.3