diff options
| author | QAston <qaston@gmail.com> | 2012-02-10 12:44:07 +0100 |
|---|---|---|
| committer | QAston <qaston@gmail.com> | 2012-02-10 12:46:01 +0100 |
| commit | a7fc2586e765a39371d49bf3f2b0b81d9c9df69a (patch) | |
| tree | 0d71b337b4a63c9b858467dc13cc8ee5131615e5 /src/server/game/Conditions/ConditionMgr.cpp | |
| parent | 03b27179318f7371d47808589f10131aa0887bd5 (diff) | |
Core/Db/Conditions: Add NegativeCondition column to conditions table which allows to check whenever player does not meet condition specified by ConditionTypeOrReference column (ConditionTypeOrReference and ConditionValue3 set to reference id are not affected by the change)
Diffstat (limited to 'src/server/game/Conditions/ConditionMgr.cpp')
| -rwxr-xr-x | src/server/game/Conditions/ConditionMgr.cpp | 10 |
1 files changed, 8 insertions, 2 deletions
diff --git a/src/server/game/Conditions/ConditionMgr.cpp b/src/server/game/Conditions/ConditionMgr.cpp index 8562c66c29f..b05643529ec 100755 --- a/src/server/game/Conditions/ConditionMgr.cpp +++ b/src/server/game/Conditions/ConditionMgr.cpp @@ -215,11 +215,14 @@ bool Condition::Meets(Player* player, Unit* invoker) break; } + if (mNegativeCondition) + condMeets = !condMeets; + bool refMeets = false; if (condMeets && refId)//only have to check references if 'this' is met { ConditionList ref = sConditionMgr->GetConditionReferences(refId); - refMeets = sConditionMgr->IsPlayerMeetToConditions(player, ref); + refMeets = sConditionMgr->IsPlayerMeetToConditions(player, ref, invoker); } else refMeets = true; @@ -391,7 +394,7 @@ void ConditionMgr::LoadConditions(bool isReload) } QueryResult result = WorldDatabase.Query("SELECT SourceTypeOrReferenceId, SourceGroup, SourceEntry, SourceId, ElseGroup, ConditionTypeOrReference, " - " ConditionValue1, ConditionValue2, ConditionValue3, ErrorTextId, ScriptName FROM conditions"); + " ConditionValue1, ConditionValue2, ConditionValue3, ErrorTextId, ScriptName, NegateCondition FROM conditions"); if (!result) { @@ -419,6 +422,7 @@ void ConditionMgr::LoadConditions(bool isReload) cond->mConditionValue3 = fields[8].GetUInt32(); cond->ErrorTextd = fields[9].GetUInt32(); cond->mScriptId = sObjectMgr->GetScriptId(fields[10].GetCString()); + cond->mNegativeCondition = fields[11].GetUInt8(); if (iConditionTypeOrReference >= 0) cond->mConditionType = ConditionType(iConditionTypeOrReference); @@ -443,6 +447,8 @@ void ConditionMgr::LoadConditions(bool isReload) sLog->outErrorDb("Condition %s %i has useless data in value2 (%u)!", rowType, iSourceTypeOrReferenceId, cond->mConditionValue2); if (cond->mConditionValue3) sLog->outErrorDb("Condition %s %i has useless data in value3 (%u)!", rowType, iSourceTypeOrReferenceId, cond->mConditionValue3); + if (cond->mNegativeCondition) + sLog->outErrorDb("Condition %s %i has useless data in NegativeCondition (%u)!", rowType, iSourceTypeOrReferenceId, cond->mNegativeCondition); if (cond->mSourceGroup && iSourceTypeOrReferenceId < 0) sLog->outErrorDb("Condition %s %i has useless data in SourceGroup (%u)!", rowType, iSourceTypeOrReferenceId, cond->mSourceGroup); if (cond->mSourceEntry && iSourceTypeOrReferenceId < 0) |
