Scripts/Commands: Add failure state for quest remove (#20611)

Add more verbose messaging to the .quest remove command

(cherry picked from commit 1cedcf0bf3)
This commit is contained in:
Andrew Letson
2017-12-17 09:51:11 -05:00
committed by funjoker
parent a58dcd1d9c
commit dbd9f88bf0

View File

@@ -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);
// we ignore unequippable quest items in this case, its' still be equipped
player->TakeQuestSourceItem(logQuest, false);
if (quest->HasFlag(QUEST_FLAGS_FLAGS_PVP))
uint32 logQuest = player->GetQuestSlotQuestId(slot);
if (logQuest == entry)
{
player->pvpInfo.IsHostile = player->pvpInfo.IsInHostileArea || player->HasPvPForcingQuest();
player->UpdatePvPState();
player->SetQuestSlot(slot, 0);
// 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();
}
}
}
player->RemoveActiveQuest(entry, false);
player->RemoveRewardedQuest(entry);
sScriptMgr->OnQuestStatusChange(player, entry);
sScriptMgr->OnQuestStatusChange(player, quest, oldStatus, QUEST_STATUS_NONE);
handler->SendSysMessage(LANG_COMMAND_QUEST_REMOVED);
return true;
}
else
{
handler->SendSysMessage(LANG_COMMAND_QUEST_NOTFOUND);
handler->SetSentErrorMessage(true);
return false;
}
player->RemoveActiveQuest(entry, false);
player->RemoveRewardedQuest(entry);
sScriptMgr->OnQuestStatusChange(player, entry);
sScriptMgr->OnQuestStatusChange(player, quest, oldStatus, QUEST_STATUS_NONE);
handler->SendSysMessage(LANG_COMMAND_QUEST_REMOVED);
return true;
}
static bool HandleQuestComplete(ChatHandler* handler, char const* args)