diff options
author | Meji <alvaro.megias@outlook.com> | 2024-10-19 15:20:34 +0200 |
---|---|---|
committer | GitHub <noreply@github.com> | 2024-10-19 15:20:34 +0200 |
commit | b860733822aebef4bd69d506d32e44c0de9f7789 (patch) | |
tree | c5f190df42b7f35f24a48fb79619adc0d1bb69ff /src/server/game/Conditions | |
parent | 77b80661474d26e38c19bb8b1fbc150858d9ce38 (diff) |
Core/Conditions: Allow NegativeCondition for references (#30363)
Diffstat (limited to 'src/server/game/Conditions')
-rw-r--r-- | src/server/game/Conditions/ConditionMgr.cpp | 8 |
1 files changed, 5 insertions, 3 deletions
diff --git a/src/server/game/Conditions/ConditionMgr.cpp b/src/server/game/Conditions/ConditionMgr.cpp index f7e42519774..0730d4e9a23 100644 --- a/src/server/game/Conditions/ConditionMgr.cpp +++ b/src/server/game/Conditions/ConditionMgr.cpp @@ -1014,7 +1014,11 @@ bool ConditionMgr::IsObjectMeetToConditionList(ConditionSourceInfo& sourceInfo, auto ref = ConditionStore[CONDITION_SOURCE_TYPE_REFERENCE_CONDITION].find({ condition.ReferenceId, 0, 0 }); if (ref != ConditionStore[CONDITION_SOURCE_TYPE_REFERENCE_CONDITION].end()) { - if (!IsObjectMeetToConditionList(sourceInfo, *ref->second)) + bool condMeets = IsObjectMeetToConditionList(sourceInfo, *ref->second); + if (condition.NegativeCondition) + condMeets = !condMeets; + + if (!condMeets) itr->second = false; } else @@ -1337,8 +1341,6 @@ void ConditionMgr::LoadConditions(bool isReload) TC_LOG_ERROR("sql.sql", "Condition {} {} has useless data in value2 ({})!", rowType, iSourceTypeOrReferenceId, cond.ConditionValue2); if (cond.ConditionValue3) TC_LOG_ERROR("sql.sql", "Condition {} {} has useless data in value3 ({})!", rowType, iSourceTypeOrReferenceId, cond.ConditionValue3); - if (cond.NegativeCondition) - TC_LOG_ERROR("sql.sql", "Condition {} {} has useless data in NegativeCondition ({})!", rowType, iSourceTypeOrReferenceId, cond.NegativeCondition); } else if (!isConditionTypeValid(&cond))//doesn't have reference, validate ConditionType continue; |