diff --git a/Source/Game/Entities/Player/Player.Quest.cs b/Source/Game/Entities/Player/Player.Quest.cs index 48948efcf..0847d58f8 100644 --- a/Source/Game/Entities/Player/Player.Quest.cs +++ b/Source/Game/Entities/Player/Player.Quest.cs @@ -297,7 +297,7 @@ namespace Game.Entities if (status == QuestStatus.Complete) qm.AddMenuItem(quest_id, 4); else if (status == QuestStatus.Incomplete) - qm.AddMenuItem(quest_id, 2); + qm.AddMenuItem(quest_id, 4); } foreach (var quest_id in objectQR) @@ -743,13 +743,11 @@ namespace Game.Entities QuestStatus oldStatus = questStatusData.Status; // check for repeatable quests status reset + SetQuestSlot(logSlot, questId); questStatusData.Slot = logSlot; questStatusData.Status = QuestStatus.Incomplete; questStatusData.Explored = false; - GiveQuestSourceItem(quest); - AdjustQuestObjectiveProgress(quest); - foreach (QuestObjective obj in quest.Objectives) { m_questObjectiveStatus.Add((obj.Type, obj.ObjectID), new QuestObjectiveStatusData() { QuestStatusPair = (questId, questStatusData), Objective = obj }); @@ -769,6 +767,9 @@ namespace Game.Entities } } + GiveQuestSourceItem(quest); + AdjustQuestObjectiveProgress(quest); + long endTime = 0; uint limittime = quest.LimitTime; if (limittime != 0) @@ -804,7 +805,6 @@ namespace Game.Entities caster.CastSpell(this, spellInfo.Id, new CastSpellExtraArgs(TriggerCastFlags.FullMask).SetCastDifficulty(spellInfo.Difficulty)); } - SetQuestSlot(logSlot, questId); SetQuestSlotEndTime(logSlot, endTime); SetQuestSlotAcceptTime(logSlot, GameTime.GetGameTime()); @@ -824,9 +824,9 @@ namespace Game.Entities { SetQuestStatus(quest_id, QuestStatus.Complete); - ushort log_slot = FindQuestSlot(quest_id); - if (log_slot < SharedConst.MaxQuestLogSize) - SetQuestSlotState(log_slot, QuestSlotStateMask.Complete); + QuestStatusData questStatus = m_QuestStatus.LookupByKey(quest_id); + if (questStatus != null) + SetQuestSlotState(questStatus.Slot, QuestSlotStateMask.Complete); Quest qInfo = Global.ObjectMgr.GetQuestTemplate(quest_id); if (qInfo != null)