diff options
author | Andrew Letson <velinath@users.noreply.github.com> | 2017-12-17 09:51:11 -0500 |
---|---|---|
committer | funjoker <funjoker109@gmail.com> | 2021-04-15 05:53:27 +0200 |
commit | dbd9f88bf07d404336c9643dbd74f8fd80db9597 (patch) | |
tree | 9222d6ed20ebd4d6d29a3a793c9649508c676d12 /src | |
parent | a58dcd1d9cf5f943342d00628601170d6023ae25 (diff) |
Scripts/Commands: Add failure state for quest remove (#20611)
Add more verbose messaging to the .quest remove command
(cherry picked from commit 1cedcf0bf349581b6fff210e4c325e25b51ccf0c)
Diffstat (limited to 'src')
-rw-r--r-- | src/server/scripts/Commands/cs_quest.cpp | 46 |
1 files changed, 27 insertions, 19 deletions
diff --git a/src/server/scripts/Commands/cs_quest.cpp b/src/server/scripts/Commands/cs_quest.cpp index fa6b1a0a0bd..a46c851cbe0 100644 --- a/src/server/scripts/Commands/cs_quest.cpp +++ b/src/server/scripts/Commands/cs_quest.cpp @@ -131,33 +131,41 @@ public: QuestStatus oldStatus = player->GetQuestStatus(entry); - // 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, quest, oldStatus, QUEST_STATUS_NONE); + sScriptMgr->OnQuestStatusChange(player, entry); + sScriptMgr->OnQuestStatusChange(player, quest, oldStatus, QUEST_STATUS_NONE); - 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) |