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