diff options
author | Rat <none@none> | 2010-10-05 17:54:27 +0200 |
---|---|---|
committer | Rat <none@none> | 2010-10-05 17:54:27 +0200 |
commit | f733d8b224ee17fbfbb0a1f3eda360b50a9b355b (patch) | |
tree | dfa60ddff345be09c718fb86eebf8fac2f98ef93 /src | |
parent | cac4cfda42f6d392fa6232bdb211334d5b5638fa (diff) |
Code/ConditionMgr: added CONDITION_LEVEL(27) value1: player level, value2: modify test statement, default(0) is '=='
--HG--
branch : trunk
Diffstat (limited to 'src')
-rw-r--r-- | src/server/game/Conditions/ConditionMgr.cpp | 31 | ||||
-rw-r--r-- | src/server/game/Conditions/ConditionMgr.h | 3 |
2 files changed, 33 insertions, 1 deletions
diff --git a/src/server/game/Conditions/ConditionMgr.cpp b/src/server/game/Conditions/ConditionMgr.cpp index a0b25d3d00f..b60cb428d3b 100644 --- a/src/server/game/Conditions/ConditionMgr.cpp +++ b/src/server/game/Conditions/ConditionMgr.cpp @@ -156,6 +156,28 @@ bool Condition::Meets(Player * player, Unit* invoker) case CONDITION_NOITEM: condMeets = !player->HasItemCount(mConditionValue1, 1, mConditionValue2 ? true : false); break; + case CONDITION_LEVEL: + { + switch (mConditionValue2) + { + case 0: + condMeets = player->getLevel() == mConditionValue1; + break; + case 1: + condMeets = player->getLevel() > mConditionValue1; + break; + case 2: + condMeets = player->getLevel() < mConditionValue1; + break; + case 3: + condMeets = player->getLevel() >= mConditionValue1; + break; + case 4: + condMeets = player->getLevel() <= mConditionValue1; + break; + } + break; + } default: condMeets = false; refId = 0; @@ -1241,6 +1263,15 @@ bool ConditionMgr::isConditionTypeValid(Condition* cond) } break; } + case CONDITION_LEVEL: + { + if (cond->mConditionValue2 > 4) + { + sLog.outErrorDb("Level condition has invalid option (%u), skipped", cond->mConditionValue2); + return false; + } + break; + } case CONDITION_AREAID: case CONDITION_INSTANCE_DATA: break; diff --git a/src/server/game/Conditions/ConditionMgr.h b/src/server/game/Conditions/ConditionMgr.h index a4068fef025..73aab9a0bac 100644 --- a/src/server/game/Conditions/ConditionMgr.h +++ b/src/server/game/Conditions/ConditionMgr.h @@ -56,7 +56,8 @@ enum ConditionType CONDITION_ITEM_TARGET = 24, // ItemRequiredTargetType, TargetEntry, 0 CONDITION_SPELL = 25, // spell_id 0 +referenceID true if knows spell CONDITION_NOITEM = 26, // item_id bank +referenceID true if player does not have any of the item (if 'bank' is set it searches in bank slots too) - CONDITION_MAX = 27 // MAX + CONDITION_LEVEL = 27, // level opt +referenceID true if player's level is equal to param1 (param2 can modify the statement) + CONDITION_MAX = 28 // MAX }; enum ConditionSourceType |