aboutsummaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
Diffstat (limited to 'src')
-rw-r--r--src/server/game/Entities/Player/Player.cpp30
-rw-r--r--src/server/game/Entities/Player/Player.h2
2 files changed, 32 insertions, 0 deletions
diff --git a/src/server/game/Entities/Player/Player.cpp b/src/server/game/Entities/Player/Player.cpp
index e3c4a072202..575310f85da 100644
--- a/src/server/game/Entities/Player/Player.cpp
+++ b/src/server/game/Entities/Player/Player.cpp
@@ -16420,6 +16420,19 @@ int32 Player::GetQuestSlotObjectiveData(uint16 slot, QuestObjective const& objec
return GetQuestSlotObjectiveFlag(slot, objective.StorageIndex) ? 1 : 0;
}
+int32 Player::GetQuestSlotObjectiveData(uint32 questId, uint32 objectiveId) const
+{
+ uint16 slot = FindQuestSlot(questId);
+ if (slot >= MAX_QUEST_LOG_SIZE)
+ return 0;
+
+ QuestObjective const* obj = sObjectMgr->GetQuestObjective(objectiveId);
+ if (!obj)
+ return 0;
+
+ return GetQuestSlotObjectiveData(slot, *obj);
+}
+
void Player::SetQuestSlot(uint16 slot, uint32 quest_id)
{
auto questLogField = m_values.ModifyValue(&Player::m_playerData).ModifyValue(&UF::PlayerData::QuestLog, slot);
@@ -17006,6 +17019,23 @@ bool Player::IsQuestObjectiveComplete(uint16 slot, Quest const* quest, QuestObje
return true;
}
+bool Player::IsQuestObjectiveComplete(uint32 questId, uint32 objectiveId) const
+{
+ Quest const* quest = sObjectMgr->GetQuestTemplate(questId);
+ if (!quest)
+ return false;
+
+ uint16 slot = FindQuestSlot(questId);
+ if (slot >= MAX_QUEST_LOG_SIZE)
+ return false;
+
+ QuestObjective const* obj = sObjectMgr->GetQuestObjective(objectiveId);
+ if (!obj)
+ return false;
+
+ return IsQuestObjectiveComplete(slot, quest, *obj);
+}
+
bool Player::IsQuestObjectiveProgressBarComplete(uint16 slot, Quest const* quest) const
{
float progress = 0.0f;
diff --git a/src/server/game/Entities/Player/Player.h b/src/server/game/Entities/Player/Player.h
index ceadbe32831..69e281b17bc 100644
--- a/src/server/game/Entities/Player/Player.h
+++ b/src/server/game/Entities/Player/Player.h
@@ -1611,6 +1611,7 @@ class TC_GAME_API Player : public Unit, public GridObject<Player>
int64 GetQuestSlotEndTime(uint16 slot) const;
bool GetQuestSlotObjectiveFlag(uint16 slot, int8 objectiveIndex) const;
int32 GetQuestSlotObjectiveData(uint16 slot, QuestObjective const& objective) const;
+ int32 GetQuestSlotObjectiveData(uint32 questId, uint32 objectiveId) const;
void SetQuestSlot(uint16 slot, uint32 quest_id);
void SetQuestSlotCounter(uint16 slot, uint8 counter, uint16 count);
void SetQuestSlotState(uint16 slot, uint32 state);
@@ -1644,6 +1645,7 @@ class TC_GAME_API Player : public Unit, public GridObject<Player>
void SetQuestObjectiveData(QuestObjective const& objective, int32 data);
bool IsQuestObjectiveCompletable(uint16 slot, Quest const* quest, QuestObjective const& objective) const;
bool IsQuestObjectiveComplete(uint16 slot, Quest const* quest, QuestObjective const& objective) const;
+ bool IsQuestObjectiveComplete(uint32 questId, uint32 objectiveId) const;
bool IsQuestObjectiveProgressBarComplete(uint16 slot, Quest const* quest) const;
void SendQuestComplete(uint32 questId) const;
void SendQuestReward(Quest const* quest, Creature const* questGiver, uint32 xp, bool hideChatMessage) const;