Core/Quests: Fixed quests not working after relogging
Port From (https://github.com/TrinityCore/TrinityCore/commit/c0261468c58a994f2d87a70b1d08a9db507cf2b4)
This commit is contained in:
@@ -674,9 +674,9 @@ namespace Game.Entities
|
|||||||
{
|
{
|
||||||
do
|
do
|
||||||
{
|
{
|
||||||
uint quest_id = result.Read<uint>(0);
|
uint questId = result.Read<uint>(0);
|
||||||
// used to be new, no delete?
|
// used to be new, no delete?
|
||||||
Quest quest = Global.ObjectMgr.GetQuestTemplate(quest_id);
|
Quest quest = Global.ObjectMgr.GetQuestTemplate(questId);
|
||||||
if (quest != null)
|
if (quest != null)
|
||||||
{
|
{
|
||||||
// find or create
|
// find or create
|
||||||
@@ -689,7 +689,7 @@ namespace Game.Entities
|
|||||||
{
|
{
|
||||||
questStatusData.Status = QuestStatus.Incomplete;
|
questStatusData.Status = QuestStatus.Incomplete;
|
||||||
Log.outError(LogFilter.Player, "Player {0} (GUID: {1}) has invalid quest {2} status ({3}), replaced by QUEST_STATUS_INCOMPLETE(3).",
|
Log.outError(LogFilter.Player, "Player {0} (GUID: {1}) has invalid quest {2} status ({3}), replaced by QUEST_STATUS_INCOMPLETE(3).",
|
||||||
GetName(), GetGUID().ToString(), quest_id, qstatus);
|
GetName(), GetGUID().ToString(), questId, qstatus);
|
||||||
}
|
}
|
||||||
|
|
||||||
questStatusData.Explored = result.Read<byte>(2) > 0;
|
questStatusData.Explored = result.Read<byte>(2) > 0;
|
||||||
@@ -697,9 +697,9 @@ namespace Game.Entities
|
|||||||
long acceptTime = result.Read<long>(3);
|
long acceptTime = result.Read<long>(3);
|
||||||
long endTime = result.Read<long>(4);
|
long endTime = result.Read<long>(4);
|
||||||
|
|
||||||
if (quest.LimitTime != 0 && !GetQuestRewardStatus(quest_id))
|
if (quest.LimitTime != 0 && !GetQuestRewardStatus(questId))
|
||||||
{
|
{
|
||||||
AddTimedQuest(quest_id);
|
AddTimedQuest(questId);
|
||||||
|
|
||||||
if (endTime <= GameTime.GetGameTime())
|
if (endTime <= GameTime.GetGameTime())
|
||||||
questStatusData.Timer = 1;
|
questStatusData.Timer = 1;
|
||||||
@@ -713,7 +713,11 @@ namespace Game.Entities
|
|||||||
if (slot < SharedConst.MaxQuestLogSize && questStatusData.Status != QuestStatus.None)
|
if (slot < SharedConst.MaxQuestLogSize && questStatusData.Status != QuestStatus.None)
|
||||||
{
|
{
|
||||||
questStatusData.Slot = slot;
|
questStatusData.Slot = slot;
|
||||||
SetQuestSlot(slot, quest_id);
|
|
||||||
|
foreach (QuestObjective obj in quest.Objectives)
|
||||||
|
m_questObjectiveStatus.Add((obj.Type, obj.ObjectID), new QuestObjectiveStatusData() { QuestStatusPair = (questId, questStatusData), Objective = obj });
|
||||||
|
|
||||||
|
SetQuestSlot(slot, questId);
|
||||||
SetQuestSlotEndTime(slot, endTime);
|
SetQuestSlotEndTime(slot, endTime);
|
||||||
SetQuestSlotAcceptTime(slot, acceptTime);
|
SetQuestSlotAcceptTime(slot, acceptTime);
|
||||||
|
|
||||||
@@ -725,8 +729,8 @@ namespace Game.Entities
|
|||||||
++slot;
|
++slot;
|
||||||
}
|
}
|
||||||
|
|
||||||
m_QuestStatus[quest_id] = questStatusData;
|
m_QuestStatus[questId] = questStatusData;
|
||||||
Log.outDebug(LogFilter.ServerLoading, "Quest status is {0} for quest {1} for player (GUID: {2})", questStatusData.Status, quest_id, GetGUID().ToString());
|
Log.outDebug(LogFilter.ServerLoading, "Quest status is {0} for quest {1} for player (GUID: {2})", questStatusData.Status, questId, GetGUID().ToString());
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
while (result.NextRow());
|
while (result.NextRow());
|
||||||
@@ -755,7 +759,6 @@ namespace Game.Entities
|
|||||||
if (objective != null)
|
if (objective != null)
|
||||||
{
|
{
|
||||||
int data = result.Read<int>(2);
|
int data = result.Read<int>(2);
|
||||||
m_questObjectiveStatus.Add((objective.Type, objective.ObjectID), new QuestObjectiveStatusData() { QuestStatusPair = (questID, questStatusData), Objective = objective });
|
|
||||||
if (!objective.IsStoringFlag())
|
if (!objective.IsStoringFlag())
|
||||||
SetQuestSlotCounter(questStatusData.Slot, storageIndex, (ushort)data);
|
SetQuestSlotCounter(questStatusData.Slot, storageIndex, (ushort)data);
|
||||||
else if (data != 0)
|
else if (data != 0)
|
||||||
@@ -2543,7 +2546,7 @@ namespace Game.Entities
|
|||||||
float orientation = result.Read<float>(fieldIndex++);
|
float orientation = result.Read<float>(fieldIndex++);
|
||||||
string taximask = result.Read<string>(fieldIndex++);
|
string taximask = result.Read<string>(fieldIndex++);
|
||||||
byte cinematic = result.Read<byte>(fieldIndex++);
|
byte cinematic = result.Read<byte>(fieldIndex++);
|
||||||
uint totaltime = result.Read<uint> (fieldIndex++);
|
uint totaltime = result.Read<uint>(fieldIndex++);
|
||||||
uint leveltime = result.Read<uint>(fieldIndex++);
|
uint leveltime = result.Read<uint>(fieldIndex++);
|
||||||
float rest_bonus = result.Read<float>(fieldIndex++);
|
float rest_bonus = result.Read<float>(fieldIndex++);
|
||||||
long logout_time = result.Read<long>(fieldIndex++);
|
long logout_time = result.Read<long>(fieldIndex++);
|
||||||
@@ -3207,7 +3210,8 @@ namespace Game.Entities
|
|||||||
default:
|
default:
|
||||||
case 0:
|
case 0:
|
||||||
break; // disable
|
break; // disable
|
||||||
case 1: SetGameMaster(true);
|
case 1:
|
||||||
|
SetGameMaster(true);
|
||||||
break; // enable
|
break; // enable
|
||||||
case 2: // save state
|
case 2: // save state
|
||||||
if (extra_flags.HasAnyFlag(PlayerExtraFlags.GMOn))
|
if (extra_flags.HasAnyFlag(PlayerExtraFlags.GMOn))
|
||||||
@@ -3218,7 +3222,8 @@ namespace Game.Entities
|
|||||||
switch (WorldConfig.GetIntValue(WorldCfg.GmVisibleState))
|
switch (WorldConfig.GetIntValue(WorldCfg.GmVisibleState))
|
||||||
{
|
{
|
||||||
default:
|
default:
|
||||||
case 0: SetGMVisible(false);
|
case 0:
|
||||||
|
SetGMVisible(false);
|
||||||
break; // invisible
|
break; // invisible
|
||||||
case 1:
|
case 1:
|
||||||
break; // visible
|
break; // visible
|
||||||
@@ -3233,7 +3238,8 @@ namespace Game.Entities
|
|||||||
default:
|
default:
|
||||||
case 0:
|
case 0:
|
||||||
break; // disable
|
break; // disable
|
||||||
case 1: SetGMChat(true);
|
case 1:
|
||||||
|
SetGMChat(true);
|
||||||
break; // enable
|
break; // enable
|
||||||
case 2: // save state
|
case 2: // save state
|
||||||
if (extra_flags.HasAnyFlag(PlayerExtraFlags.GMChat))
|
if (extra_flags.HasAnyFlag(PlayerExtraFlags.GMChat))
|
||||||
@@ -3246,7 +3252,8 @@ namespace Game.Entities
|
|||||||
default:
|
default:
|
||||||
case 0:
|
case 0:
|
||||||
break; // disable
|
break; // disable
|
||||||
case 1: SetAcceptWhispers(true);
|
case 1:
|
||||||
|
SetAcceptWhispers(true);
|
||||||
break; // enable
|
break; // enable
|
||||||
case 2: // save state
|
case 2: // save state
|
||||||
if (extra_flags.HasAnyFlag(PlayerExtraFlags.AcceptWhispers))
|
if (extra_flags.HasAnyFlag(PlayerExtraFlags.AcceptWhispers))
|
||||||
|
|||||||
Reference in New Issue
Block a user