aboutsummaryrefslogtreecommitdiff
path: root/src/server/game/Conditions/ConditionMgr.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'src/server/game/Conditions/ConditionMgr.cpp')
-rw-r--r--src/server/game/Conditions/ConditionMgr.cpp12
1 files changed, 11 insertions, 1 deletions
diff --git a/src/server/game/Conditions/ConditionMgr.cpp b/src/server/game/Conditions/ConditionMgr.cpp
index 2ff7196a2dc..a1ca9bd5f73 100644
--- a/src/server/game/Conditions/ConditionMgr.cpp
+++ b/src/server/game/Conditions/ConditionMgr.cpp
@@ -2621,8 +2621,15 @@ bool ConditionMgr::IsPlayerMeetingCondition(Player* player, PlayerConditionEntry
std::array<bool, AuraCount::value> results;
results.fill(true);
for (std::size_t i = 0; i < AuraCount::value; ++i)
+ {
if (condition->AuraSpellID[i])
- results[i] = player->HasAura(condition->AuraSpellID[i]);
+ {
+ if (condition->AuraCount[i])
+ results[i] = player->GetAuraCount(condition->AuraSpellID[i]) >= condition->AuraCount[i];
+ else
+ results[i] = player->HasAura(condition->AuraSpellID[i]);
+ }
+ }
if (!PlayerConditionLogic(condition->AuraSpellLogic, results))
return false;
@@ -2728,5 +2735,8 @@ bool ConditionMgr::IsPlayerMeetingCondition(Player* player, PlayerConditionEntry
if (condition->MaxAvgEquippedItemLevel && uint32(std::floor(player->GetFloatValue(PLAYER_FIELD_AVG_ITEM_LEVEL + 1))) > condition->MaxAvgEquippedItemLevel)
return false;
+ if (condition->ModifierTreeID && !player->ModifierTreeSatisfied(condition->ModifierTreeID))
+ return false;
+
return true;
}