From b860733822aebef4bd69d506d32e44c0de9f7789 Mon Sep 17 00:00:00 2001 From: Meji Date: Sat, 19 Oct 2024 15:20:34 +0200 Subject: Core/Conditions: Allow NegativeCondition for references (#30363) --- src/server/game/Conditions/ConditionMgr.cpp | 8 +++++--- 1 file changed, 5 insertions(+), 3 deletions(-) (limited to 'src') 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; -- cgit v1.2.3