diff options
author | Shauren <shauren.trinity@gmail.com> | 2023-09-24 01:12:13 +0200 |
---|---|---|
committer | Shauren <shauren.trinity@gmail.com> | 2023-09-24 01:12:13 +0200 |
commit | 4362a8c3f6aff1a8403ab9c1dee3fd23a82db339 (patch) | |
tree | 09c272ea995a778cf6e7c419b5538628855bfab8 /src | |
parent | 68b6d81d4c0fdb35391147725a21e5cfc347dedf (diff) |
Core/Quests: Fixed optional quest objectives incorrectly changing quest state when they change completion state
Diffstat (limited to 'src')
-rw-r--r-- | src/server/game/Entities/Player/Player.cpp | 9 |
1 files changed, 6 insertions, 3 deletions
diff --git a/src/server/game/Entities/Player/Player.cpp b/src/server/game/Entities/Player/Player.cpp index d5b1db07180..54d37c7bbb7 100644 --- a/src/server/game/Entities/Player/Player.cpp +++ b/src/server/game/Entities/Player/Player.cpp @@ -16718,9 +16718,12 @@ void Player::UpdateQuestObjectiveProgress(QuestObjectiveType objectiveType, int3 updateZoneAuras = true; } - if (objectiveIsNowComplete && CanCompleteQuest(questId, objective.ID)) - CompleteQuest(questId); - else if (objectiveItr.second.QuestStatusItr->second.Status == QUEST_STATUS_COMPLETE) + if (objectiveIsNowComplete) + { + if (CanCompleteQuest(questId, objective.ID)) + CompleteQuest(questId); + } + else if (!(objective.Flags & QUEST_OBJECTIVE_FLAG_OPTIONAL) && objectiveItr.second.QuestStatusItr->second.Status == QUEST_STATUS_COMPLETE) IncompleteQuest(questId); } } |