diff options
author | Shauren <shauren.trinity@gmail.com> | 2023-09-25 00:53:56 +0200 |
---|---|---|
committer | Shauren <shauren.trinity@gmail.com> | 2023-09-25 00:53:56 +0200 |
commit | 41a20b1e4008d450d075847ef1fe367f0e3a240f (patch) | |
tree | 4e202edb0d037a4a406926e6cacd686c7afcbca1 /src/server/game/Quests | |
parent | e1f345756ba34ccf4d4dd07b90c254097a240b51 (diff) |
Core/Achievements: Fixed achievement criteria StartEvent and FailEvent
* Criteria using StartEvent cannot be updated without that event triggering first (not only for timed achievements)
* Implemented most StartEvent and FailEvent types
* Fixed saving criteria removed by RemoveCriteriaProgress
Diffstat (limited to 'src/server/game/Quests')
-rw-r--r-- | src/server/game/Quests/QuestObjectiveCriteriaMgr.cpp | 32 | ||||
-rw-r--r-- | src/server/game/Quests/QuestObjectiveCriteriaMgr.h | 1 |
2 files changed, 0 insertions, 33 deletions
diff --git a/src/server/game/Quests/QuestObjectiveCriteriaMgr.cpp b/src/server/game/Quests/QuestObjectiveCriteriaMgr.cpp index fe0efd9e1ef..a72c213a042 100644 --- a/src/server/game/Quests/QuestObjectiveCriteriaMgr.cpp +++ b/src/server/game/Quests/QuestObjectiveCriteriaMgr.cpp @@ -164,38 +164,6 @@ void QuestObjectiveCriteriaMgr::SaveToDB(CharacterDatabaseTransaction trans) } } -void QuestObjectiveCriteriaMgr::ResetCriteria(CriteriaFailEvent failEvent, int32 failAsset, bool evenIfCriteriaComplete) -{ - TC_LOG_DEBUG("criteria.quest", "QuestObjectiveCriteriaMgr::ResetCriteria({}, {}, {})", uint32(failEvent), failAsset, evenIfCriteriaComplete ? "true" : "false"); - - // disable for gamemasters with GM-mode enabled - if (_owner->IsGameMaster()) - return; - - if (CriteriaList const* playerCriteriaList = sCriteriaMgr->GetCriteriaByFailEvent(failEvent, failAsset)) - { - for (Criteria const* playerCriteria : *playerCriteriaList) - { - std::vector<CriteriaTree const*> const* trees = sCriteriaMgr->GetCriteriaTreesByCriteria(playerCriteria->ID); - bool allComplete = true; - for (CriteriaTree const* tree : *trees) - { - // don't update already completed criteria if not forced - if (!(IsCompletedCriteriaTree(tree) && !evenIfCriteriaComplete)) - { - allComplete = false; - break; - } - } - - if (allComplete) - continue; - - RemoveCriteriaProgress(playerCriteria); - } - } -} - void QuestObjectiveCriteriaMgr::ResetCriteriaTree(uint32 criteriaTreeId) { CriteriaTree const* tree = sCriteriaMgr->GetCriteriaTree(criteriaTreeId); diff --git a/src/server/game/Quests/QuestObjectiveCriteriaMgr.h b/src/server/game/Quests/QuestObjectiveCriteriaMgr.h index ca1eac58a15..a263e153316 100644 --- a/src/server/game/Quests/QuestObjectiveCriteriaMgr.h +++ b/src/server/game/Quests/QuestObjectiveCriteriaMgr.h @@ -35,7 +35,6 @@ public: void LoadFromDB(PreparedQueryResult objectiveResult, PreparedQueryResult criteriaResult); void SaveToDB(CharacterDatabaseTransaction trans); - void ResetCriteria(CriteriaFailEvent failEvent, int32 failAsset, bool evenIfCriteriaComplete = false); void ResetCriteriaTree(uint32 criteriaTreeId); void SendAllData(Player const* receiver) const override; |