Scripts/Commands: Add failure state for quest remove

Port From (https://github.com/TrinityCore/TrinityCore/commit/dbd9f88bf07d404336c9643dbd74f8fd80db9597)
This commit is contained in:
hondacrx
2021-04-16 14:43:03 -04:00
parent a5d5b7ee3d
commit 144ecb8817
+29 -21
View File
@@ -184,33 +184,41 @@ namespace Game.Chat
QuestStatus oldStatus = player.GetQuestStatus(entry); QuestStatus oldStatus = player.GetQuestStatus(entry);
// remove all quest entries for 'entry' from quest log if (player.GetQuestStatus(entry) != QuestStatus.None)
for (byte slot = 0; slot < SharedConst.MaxQuestLogSize; ++slot)
{ {
uint logQuest = player.GetQuestSlotQuestId(slot); // remove all quest entries for 'entry' from quest log
if (logQuest == entry) for (byte slot = 0; slot < SharedConst.MaxQuestLogSize; ++slot)
{ {
player.SetQuestSlot(slot, 0); uint logQuest = player.GetQuestSlotQuestId(slot);
if (logQuest == entry)
// 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.SetQuestSlot(slot, 0);
player.UpdatePvPState();
// 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)] [Command("reward", RBACPermissions.CommandQuestReward)]