Scripts/Commands: Add failure state for quest remove
Port From (https://github.com/TrinityCore/TrinityCore/commit/dbd9f88bf07d404336c9643dbd74f8fd80db9597)
This commit is contained in:
@@ -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)]
|
||||||
|
|||||||
Reference in New Issue
Block a user