diff options
| author | Shauren <shauren.trinity@gmail.com> | 2019-06-08 16:56:32 +0200 |
|---|---|---|
| committer | Shauren <shauren.trinity@gmail.com> | 2019-06-08 17:10:10 +0200 |
| commit | fbf05e69bb999aa1186ca913cca832f8903affa4 (patch) | |
| tree | fb00a4eeceebbf653c40976c0fe246ef663f47bd /src/server/game/Achievements/CriteriaHandler.cpp | |
| parent | 25819ea926e3ebe026f3e17de66926551e18b2e9 (diff) | |
Core/Achievements: Define and implement new ModifierTree types
Diffstat (limited to 'src/server/game/Achievements/CriteriaHandler.cpp')
| -rw-r--r-- | src/server/game/Achievements/CriteriaHandler.cpp | 37 |
1 files changed, 37 insertions, 0 deletions
diff --git a/src/server/game/Achievements/CriteriaHandler.cpp b/src/server/game/Achievements/CriteriaHandler.cpp index e7944aa8e14..04c8ec200ef 100644 --- a/src/server/game/Achievements/CriteriaHandler.cpp +++ b/src/server/game/Achievements/CriteriaHandler.cpp @@ -1580,6 +1580,13 @@ bool CriteriaHandler::AdditionalRequirementsSatisfied(ModifierTreeNode const* tr switch (CriteriaAdditionalCondition(reqType)) { + case CRITERIA_ADDITIONAL_CONDITION_SOURCE_PLAYER_CONDITION: // 2 + { + PlayerConditionEntry const* playerCondition = sPlayerConditionStore.LookupEntry(reqValue); + if (!playerCondition || !ConditionMgr::IsPlayerMeetingCondition(referencePlayer, playerCondition)) + return false; + break; + } case CRITERIA_ADDITIONAL_CONDITION_ITEM_LEVEL: // 3 { // miscValue1 is itemid @@ -1608,6 +1615,10 @@ bool CriteriaHandler::AdditionalRequirementsSatisfied(ModifierTreeNode const* tr if (!referencePlayer->HasAura(reqValue)) return false; break; + case CRITERIA_ADDITIONAL_CONDITION_SOURCE_HAS_AURA_TYPE: // 9 + if (!referencePlayer->HasAuraType(AuraType(reqValue))) + return false; + break; case CRITERIA_ADDITIONAL_CONDITION_TARGET_HAS_AURA: // 10 if (!unit || !unit->HasAura(reqValue)) return false; @@ -1616,6 +1627,14 @@ bool CriteriaHandler::AdditionalRequirementsSatisfied(ModifierTreeNode const* tr if (!unit || !unit->HasAuraType(AuraType(reqValue))) return false; break; + case CRITERIA_ADDITIONAL_CONDITION_SOURCE_AURA_STATE: // 12 + if (!referencePlayer->HasAuraState(AuraStateType(reqValue))) + return false; + break; + case CRITERIA_ADDITIONAL_CONDITION_TARGET_AURA_STATE: // 13 + if (!unit || !unit->HasAuraState(AuraStateType(reqValue))) + return false; + break; case CRITERIA_ADDITIONAL_CONDITION_ITEM_QUALITY_MIN: // 14 { // miscValue1 is itemid @@ -1717,6 +1736,16 @@ bool CriteriaHandler::AdditionalRequirementsSatisfied(ModifierTreeNode const* tr if (!unit || unit->GetHealthPct() >= reqValue) return false; break; + case CRITERIA_ADDITIONAL_CONDITION_TARGET_PLAYER_CONDITION: // 55 + { + if (!unit || !unit->IsPlayer()) + return false; + + PlayerConditionEntry const* playerCondition = sPlayerConditionStore.LookupEntry(reqValue); + if (!playerCondition || !ConditionMgr::IsPlayerMeetingCondition(unit->ToPlayer(), playerCondition)) + return false; + break; + } case CRITERIA_ADDITIONAL_CONDITION_RATED_BATTLEGROUND_RATING: // 64 if (referencePlayer->GetRBGPersonalRating() < reqValue) return false; @@ -1732,6 +1761,14 @@ bool CriteriaHandler::AdditionalRequirementsSatisfied(ModifierTreeNode const* tr if (miscValue1 != reqValue) return false; break; + case CRITERIA_ADDITIONAL_CONDITION_REWARDED_QUEST: // 110 + if (!referencePlayer->GetQuestRewardStatus(reqValue)) + return false; + break; + case CRITERIA_ADDITIONAL_CONDITION_COMPLETED_QUEST: // 111 + if (referencePlayer->GetQuestStatus(reqValue) != QUEST_STATUS_COMPLETE) + return false; + break; case CRITERIA_ADDITIONAL_CONDITION_GARRISON_FOLLOWER_ENTRY: // 144 { if (!referencePlayer) |
