Core/Quests: Fixed quests that should have objectives immediately marked as complete

Port From (https://github.com/TrinityCore/TrinityCore/commit/fa4e2d3935b0184623a6d816dc25a41bad30b1d8)
This commit is contained in:
hondacrx
2021-06-18 15:03:11 -04:00
parent 72a3f2dd54
commit b5885d2c6c
+8 -8
View File
@@ -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)