diff --git a/Source/Game/Entities/Object/Update/UpdateFields.cs b/Source/Game/Entities/Object/Update/UpdateFields.cs index 3a30631d7..13bb98d1e 100644 --- a/Source/Game/Entities/Object/Update/UpdateFields.cs +++ b/Source/Game/Entities/Object/Update/UpdateFields.cs @@ -2311,7 +2311,7 @@ namespace Game.Entities public UpdateField StateFlags = new UpdateField(0, 2); public UpdateField EndTime = new UpdateField(0, 3); public UpdateField AcceptTime = new UpdateField(0, 4); - public UpdateField Field_10 = new UpdateField(0, 5); + public UpdateField ObjectiveFlags = new UpdateField(0, 5); public UpdateFieldArray ObjectiveProgress = new UpdateFieldArray(24, 6, 7); public QuestLog() : base(31) { } @@ -2322,7 +2322,7 @@ namespace Game.Entities data.WriteUInt32(StateFlags); data.WriteUInt32(EndTime); data.WriteUInt32(AcceptTime); - data.WriteUInt32(Field_10); + data.WriteUInt32(ObjectiveFlags); for (int i = 0; i < 24; ++i) { data.WriteUInt16(ObjectiveProgress[i]); @@ -2360,7 +2360,7 @@ namespace Game.Entities } if (changesMask[5]) { - data.WriteUInt32(Field_10); + data.WriteUInt32(ObjectiveFlags); } } if (changesMask[6]) @@ -2381,7 +2381,7 @@ namespace Game.Entities ClearChangesMask(StateFlags); ClearChangesMask(EndTime); ClearChangesMask(AcceptTime); - ClearChangesMask(Field_10); + ClearChangesMask(ObjectiveFlags); ClearChangesMask(ObjectiveProgress); _changesMask.ResetAll(); } diff --git a/Source/Game/Entities/Player/Player.DB.cs b/Source/Game/Entities/Player/Player.DB.cs index cdc12795d..44dcad55c 100644 --- a/Source/Game/Entities/Player/Player.DB.cs +++ b/Source/Game/Entities/Player/Player.DB.cs @@ -763,7 +763,7 @@ namespace Game.Entities if (!objectiveItr.IsStoringFlag()) SetQuestSlotCounter(slot, objectiveIndex, (ushort)data); else if (data != 0) - SetQuestSlotState(slot, (QuestSlotStateMask)(256 << objectiveIndex)); + SetQuestSlotObjectiveFlag(slot, (sbyte)objectiveIndex); } else Log.outError(LogFilter.Player, "Player {0} ({1}) has quest {2} out of range objective index {3}.", GetName(), GetGUID().ToString(), questID, objectiveIndex); diff --git a/Source/Game/Entities/Player/Player.Quest.cs b/Source/Game/Entities/Player/Player.Quest.cs index 0e5a12846..ecfc4710a 100644 --- a/Source/Game/Entities/Player/Player.Quest.cs +++ b/Source/Game/Entities/Player/Player.Quest.cs @@ -2060,6 +2060,18 @@ namespace Game.Entities SetUpdateFieldValue(questLog.ModifyValue(questLog.EndTime), timer); } + void SetQuestSlotObjectiveFlag(ushort slot, sbyte objectiveIndex) + { + QuestLog questLog = m_values.ModifyValue(m_playerData).ModifyValue(m_playerData.QuestLog, slot); + SetUpdateFieldFlagValue(questLog.ModifyValue(questLog.ObjectiveFlags), 1u << objectiveIndex); + } + + void RemoveQuestSlotObjectiveFlag(ushort slot, sbyte objectiveIndex) + { + QuestLog questLog = m_values.ModifyValue(m_playerData).ModifyValue(m_playerData.QuestLog, slot); + RemoveUpdateFieldFlagValue(questLog.ModifyValue(questLog.ObjectiveFlags), 1u << objectiveIndex); + } + void SetQuestCompletedBit(uint questBit, bool completed) { if (questBit == 0) @@ -2756,9 +2768,9 @@ namespace Game.Entities if (!objective.IsStoringFlag()) SetQuestSlotCounter(log_slot, (byte)objective.StorageIndex, (ushort)status.ObjectiveData[objective.StorageIndex]); else if (data != 0) - SetQuestSlotState(log_slot, (QuestSlotStateMask)(256 << objective.StorageIndex)); + SetQuestSlotObjectiveFlag(log_slot, objective.StorageIndex); else - RemoveQuestSlotState(log_slot, (QuestSlotStateMask)(256 << objective.StorageIndex)); + RemoveQuestSlotObjectiveFlag(log_slot, objective.StorageIndex); } }