aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--src/server/game/Entities/Object/Updates/UpdateFields.cpp6
-rw-r--r--src/server/game/Entities/Object/Updates/UpdateFields.h2
-rw-r--r--src/server/game/Entities/Player/Player.cpp20
-rw-r--r--src/server/game/Entities/Player/Player.h2
4 files changed, 23 insertions, 7 deletions
diff --git a/src/server/game/Entities/Object/Updates/UpdateFields.cpp b/src/server/game/Entities/Object/Updates/UpdateFields.cpp
index c6b75392e26..6ae0b678972 100644
--- a/src/server/game/Entities/Object/Updates/UpdateFields.cpp
+++ b/src/server/game/Entities/Object/Updates/UpdateFields.cpp
@@ -1924,7 +1924,7 @@ void QuestLog::WriteCreate(ByteBuffer& data, Player const* owner, Player const*
data << uint32(StateFlags);
data << uint32(EndTime);
data << uint32(AcceptTime);
- data << uint32(Field_10);
+ data << uint32(ObjectiveFlags);
for (std::size_t i = 0; i < 24; ++i)
{
data << int16(ObjectiveProgress[i]);
@@ -1962,7 +1962,7 @@ void QuestLog::WriteUpdate(ByteBuffer& data, bool ignoreChangesMask, Player cons
}
if (changesMask[5])
{
- data << uint32(Field_10);
+ data << uint32(ObjectiveFlags);
}
}
if (changesMask[6])
@@ -1983,7 +1983,7 @@ void QuestLog::ClearChangesMask()
Base::ClearChangesMask(StateFlags);
Base::ClearChangesMask(EndTime);
Base::ClearChangesMask(AcceptTime);
- Base::ClearChangesMask(Field_10);
+ Base::ClearChangesMask(ObjectiveFlags);
Base::ClearChangesMask(ObjectiveProgress);
_changesMask.ResetAll();
}
diff --git a/src/server/game/Entities/Object/Updates/UpdateFields.h b/src/server/game/Entities/Object/Updates/UpdateFields.h
index 35cd04e5bff..cf79965d3ef 100644
--- a/src/server/game/Entities/Object/Updates/UpdateFields.h
+++ b/src/server/game/Entities/Object/Updates/UpdateFields.h
@@ -411,7 +411,7 @@ struct QuestLog : public IsUpdateFieldStructureTag, public HasChangesMask<31>
UpdateField<uint32, 0, 2> StateFlags;
UpdateField<uint32, 0, 3> EndTime;
UpdateField<uint32, 0, 4> AcceptTime;
- UpdateField<uint32, 0, 5> Field_10;
+ UpdateField<uint32, 0, 5> ObjectiveFlags;
UpdateFieldArray<int16, 24, 6, 7> ObjectiveProgress;
void WriteCreate(ByteBuffer& data, Player const* owner, Player const* receiver) const;
diff --git a/src/server/game/Entities/Player/Player.cpp b/src/server/game/Entities/Player/Player.cpp
index c1fd2dd26f3..d1887e61763 100644
--- a/src/server/game/Entities/Player/Player.cpp
+++ b/src/server/game/Entities/Player/Player.cpp
@@ -16756,6 +16756,20 @@ void Player::SetQuestSlotTimer(uint16 slot, uint32 timer)
.ModifyValue(&UF::QuestLog::EndTime), timer);
}
+void Player::SetQuestSlotObjectiveFlag(uint16 slot, int8 objectiveIndex)
+{
+ SetUpdateFieldFlagValue(m_values.ModifyValue(&Player::m_playerData)
+ .ModifyValue(&UF::PlayerData::QuestLog, slot)
+ .ModifyValue(&UF::QuestLog::ObjectiveFlags), 1 << objectiveIndex);
+}
+
+void Player::RemoveQuestSlotObjectiveFlag(uint16 slot, int8 objectiveIndex)
+{
+ RemoveUpdateFieldFlagValue(m_values.ModifyValue(&Player::m_playerData)
+ .ModifyValue(&UF::PlayerData::QuestLog, slot)
+ .ModifyValue(&UF::QuestLog::ObjectiveFlags), 1 << objectiveIndex);
+}
+
void Player::SetQuestCompletedBit(uint32 questBit, bool completed)
{
if (!questBit)
@@ -17457,9 +17471,9 @@ void Player::SetQuestObjectiveData(QuestObjective const& objective, int32 data)
if (!objective.IsStoringFlag())
SetQuestSlotCounter(log_slot, objective.StorageIndex, status.ObjectiveData[objective.StorageIndex]);
else if (data)
- SetQuestSlotState(log_slot, 256 << objective.StorageIndex);
+ SetQuestSlotObjectiveFlag(log_slot, objective.StorageIndex);
else
- RemoveQuestSlotState(log_slot, 256 << objective.StorageIndex);
+ RemoveQuestSlotObjectiveFlag(log_slot, objective.StorageIndex);
}
}
@@ -19655,7 +19669,7 @@ void Player::_LoadQuestStatusObjectives(PreparedQueryResult result)
if (!objectiveItr->IsStoringFlag())
SetQuestSlotCounter(slot, objectiveIndex, data);
else if (data)
- SetQuestSlotState(slot, 256 << objectiveIndex);
+ SetQuestSlotObjectiveFlag(slot, objectiveIndex);
}
else
TC_LOG_ERROR("entities.player", "Player::_LoadQuestStatusObjectives: Player '%s' (%s) has quest %d out of range objective index %u.", GetName().c_str(), GetGUID().ToString().c_str(), questID, objectiveIndex);
diff --git a/src/server/game/Entities/Player/Player.h b/src/server/game/Entities/Player/Player.h
index 52aedc6c55b..feda7a0cb2c 100644
--- a/src/server/game/Entities/Player/Player.h
+++ b/src/server/game/Entities/Player/Player.h
@@ -1413,6 +1413,8 @@ class TC_GAME_API Player : public Unit, public GridObject<Player>
void SetQuestSlotState(uint16 slot, uint32 state);
void RemoveQuestSlotState(uint16 slot, uint32 state);
void SetQuestSlotTimer(uint16 slot, uint32 timer);
+ void SetQuestSlotObjectiveFlag(uint16 slot, int8 objectiveIndex);
+ void RemoveQuestSlotObjectiveFlag(uint16 slot, int8 objectiveIndex);
void SetQuestCompletedBit(uint32 questBit, bool completed);
uint16 GetReqKillOrCastCurrentCount(uint32 quest_id, int32 entry) const;