diff options
-rw-r--r-- | src/server/game/Conditions/ConditionMgr.cpp | 4 | ||||
-rw-r--r-- | src/server/game/Entities/Player/Player.cpp | 9 | ||||
-rw-r--r-- | src/server/game/Entities/Player/Player.h | 2 |
3 files changed, 8 insertions, 7 deletions
diff --git a/src/server/game/Conditions/ConditionMgr.cpp b/src/server/game/Conditions/ConditionMgr.cpp index 667b8b14889..09b84589716 100644 --- a/src/server/game/Conditions/ConditionMgr.cpp +++ b/src/server/game/Conditions/ConditionMgr.cpp @@ -508,10 +508,8 @@ bool Condition::Meets(ConditionSourceInfo& sourceInfo) const QuestObjective const* obj = sObjectMgr->GetQuestObjective(ConditionValue1); if (!obj) break; - Quest const* qInfo = sObjectMgr->GetQuestTemplate(obj->QuestID); - ASSERT(qInfo); - condMeets = (!player->GetQuestRewardStatus(obj->QuestID) && player->IsQuestObjectiveComplete(qInfo, *obj)); + condMeets = (!player->GetQuestRewardStatus(obj->QuestID) && player->IsQuestObjectiveComplete(*obj)); } break; } diff --git a/src/server/game/Entities/Player/Player.cpp b/src/server/game/Entities/Player/Player.cpp index f64407f7710..ad44cf6e9fa 100644 --- a/src/server/game/Entities/Player/Player.cpp +++ b/src/server/game/Entities/Player/Player.cpp @@ -14630,7 +14630,7 @@ bool Player::CanCompleteQuest(uint32 quest_id) { for (QuestObjective const& obj : qInfo->GetObjectives()) { - if (!IsQuestObjectiveComplete(qInfo, obj)) + if (!IsQuestObjectiveComplete(obj)) return false; } @@ -16756,8 +16756,11 @@ int32 Player::GetQuestObjectiveData(Quest const* quest, int8 storageIndex) const return status.ObjectiveData[storageIndex]; } -bool Player::IsQuestObjectiveComplete(Quest const* quest, QuestObjective const& objective) const +bool Player::IsQuestObjectiveComplete(QuestObjective const& objective) const { + Quest const* quest = sObjectMgr->GetQuestTemplate(objective.QuestID); + ASSERT(quest); + switch (objective.Type) { case QUEST_OBJECTIVE_MONSTER: @@ -16797,7 +16800,7 @@ bool Player::IsQuestObjectiveComplete(Quest const* quest, QuestObjective const& break; default: TC_LOG_ERROR("entities.player.quest", "Player::CanCompleteQuest: Player '%s' (%s) tried to complete a quest (ID: %u) with an unknown objective type %u", - GetName().c_str(), GetGUID().ToString().c_str(), quest->ID, objective.Type); + GetName().c_str(), GetGUID().ToString().c_str(), objective.QuestID, objective.Type); return false; } diff --git a/src/server/game/Entities/Player/Player.h b/src/server/game/Entities/Player/Player.h index 4c9315294e7..28772041422 100644 --- a/src/server/game/Entities/Player/Player.h +++ b/src/server/game/Entities/Player/Player.h @@ -1627,7 +1627,7 @@ class TC_GAME_API Player : public Unit, public GridObject<Player> bool CanShareQuest(uint32 questId) const; int32 GetQuestObjectiveData(Quest const* quest, int8 storageIndex) const; - bool IsQuestObjectiveComplete(Quest const* quest, QuestObjective const& objective) const; + bool IsQuestObjectiveComplete(QuestObjective const& objective) const; void SetQuestObjectiveData(Quest const* quest, int8 storageIndex, int32 data); void SendQuestComplete(Quest const* quest) const; void SendQuestReward(Quest const* quest, uint32 XP) const; |