From 144ecb881777e75fcff7d891f00d95c7560dd172 Mon Sep 17 00:00:00 2001 From: hondacrx Date: Fri, 16 Apr 2021 14:43:03 -0400 Subject: [PATCH] Scripts/Commands: Add failure state for quest remove Port From (https://github.com/TrinityCore/TrinityCore/commit/dbd9f88bf07d404336c9643dbd74f8fd80db9597) --- Source/Game/Chat/Commands/QuestCommands.cs | 50 +++++++++++++--------- 1 file changed, 29 insertions(+), 21 deletions(-) diff --git a/Source/Game/Chat/Commands/QuestCommands.cs b/Source/Game/Chat/Commands/QuestCommands.cs index 7f9c25b36..4b7fd9b3c 100644 --- a/Source/Game/Chat/Commands/QuestCommands.cs +++ b/Source/Game/Chat/Commands/QuestCommands.cs @@ -184,33 +184,41 @@ namespace Game.Chat QuestStatus oldStatus = player.GetQuestStatus(entry); - // remove all quest entries for 'entry' from quest log - for (byte slot = 0; slot < SharedConst.MaxQuestLogSize; ++slot) + if (player.GetQuestStatus(entry) != QuestStatus.None) { - uint logQuest = player.GetQuestSlotQuestId(slot); - if (logQuest == entry) + // remove all quest entries for 'entry' from quest log + for (byte slot = 0; slot < SharedConst.MaxQuestLogSize; ++slot) { - player.SetQuestSlot(slot, 0); - - // we ignore unequippable quest items in this case, its' still be equipped - player.TakeQuestSourceItem(logQuest, false); - - if (quest.HasFlag(QuestFlags.Pvp)) + uint 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(QuestFlags.Pvp)) + { + player.pvpInfo.IsHostile = player.pvpInfo.IsInHostileArea || player.HasPvPForcingQuest(); + player.UpdatePvPState(); + } } } + + player.RemoveActiveQuest(entry, false); + player.RemoveRewardedQuest(entry); + + Global.ScriptMgr.OnQuestStatusChange(player, entry); + Global.ScriptMgr.OnQuestStatusChange(player, quest, oldStatus, QuestStatus.None); + + handler.SendSysMessage(CypherStrings.CommandQuestRemoved); + return true; + } + else + { + handler.SendSysMessage(CypherStrings.CommandQuestNotfound); + return false; } - - player.RemoveActiveQuest(entry, false); - player.RemoveRewardedQuest(entry); - - Global.ScriptMgr.OnQuestStatusChange(player, entry); - Global.ScriptMgr.OnQuestStatusChange(player, quest, oldStatus, QuestStatus.None); - - handler.SendSysMessage(CypherStrings.CommandQuestRemoved); - return true; } [Command("reward", RBACPermissions.CommandQuestReward)]