diff options
Diffstat (limited to 'src/server/game/Conditions/ConditionMgr.cpp')
-rw-r--r-- | src/server/game/Conditions/ConditionMgr.cpp | 12 |
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; } |