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);
// 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)]