aboutsummaryrefslogtreecommitdiff
path: root/src/server/game/Conditions
diff options
context:
space:
mode:
authorMeji <alvaro.megias@outlook.com>2024-10-19 15:20:34 +0200
committerGitHub <noreply@github.com>2024-10-19 15:20:34 +0200
commitb860733822aebef4bd69d506d32e44c0de9f7789 (patch)
treec5f190df42b7f35f24a48fb79619adc0d1bb69ff /src/server/game/Conditions
parent77b80661474d26e38c19bb8b1fbc150858d9ce38 (diff)
Core/Conditions: Allow NegativeCondition for references (#30363)
Diffstat (limited to 'src/server/game/Conditions')
-rw-r--r--src/server/game/Conditions/ConditionMgr.cpp8
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;