diff options
Diffstat (limited to 'src/server/game/Achievements/CriteriaHandler.cpp')
-rw-r--r-- | src/server/game/Achievements/CriteriaHandler.cpp | 11 |
1 files changed, 11 insertions, 0 deletions
diff --git a/src/server/game/Achievements/CriteriaHandler.cpp b/src/server/game/Achievements/CriteriaHandler.cpp index 0cad619922e..1f303358a86 100644 --- a/src/server/game/Achievements/CriteriaHandler.cpp +++ b/src/server/game/Achievements/CriteriaHandler.cpp @@ -991,6 +991,17 @@ bool CriteriaHandler::IsCompletedCriteriaTree(CriteriaTree const* tree) return false; } + case CRITERIA_TREE_OPERATOR_SUM_CHILDREN_WEIGHT: + { + uint64 progress = 0; + CriteriaMgr::WalkCriteriaTree(tree, [this, &progress](CriteriaTree const* criteriaTree) + { + if (criteriaTree->Criteria) + if (CriteriaProgress const* criteriaProgress = GetCriteriaProgress(criteriaTree->Criteria)) + progress += criteriaProgress->Counter * criteriaTree->Entry->Amount; + }); + return progress >= requiredCount; + } default: break; } |