diff options
| author | Nay <dnpd.dd@gmail.com> | 2012-02-11 19:46:41 +0000 |
|---|---|---|
| committer | Nay <dnpd.dd@gmail.com> | 2012-02-11 19:46:41 +0000 |
| commit | 5c62fd1d6a05f9afb1d3b5cbd2901710d1223b4a (patch) | |
| tree | d520354a085c86e16f4a6c9c8b8b13eee239d9f0 /src/server/game/Conditions/ConditionMgr.cpp | |
| parent | 1fc3470233f0073a7839b6776d77685b96faebb6 (diff) | |
Core/Db/Conditions: Add conditions for world state and phasemask
CONDITION_WORLD_STATE - 11 - index - value - 0
CONDITION_PHASEMASK - 26 - value - 0 - 0
Idea by @LiMCrosS
Diffstat (limited to 'src/server/game/Conditions/ConditionMgr.cpp')
| -rwxr-xr-x | src/server/game/Conditions/ConditionMgr.cpp | 31 |
1 files changed, 31 insertions, 0 deletions
diff --git a/src/server/game/Conditions/ConditionMgr.cpp b/src/server/game/Conditions/ConditionMgr.cpp index 7f47b282a1d..8458f1358c2 100755 --- a/src/server/game/Conditions/ConditionMgr.cpp +++ b/src/server/game/Conditions/ConditionMgr.cpp @@ -312,6 +312,16 @@ bool Condition::Meets(ConditionSourceInfo& sourceInfo) condMeets = CompareValues(static_cast<ComparisionType>(mConditionValue2), unit->GetHealthPct(), static_cast<float>(mConditionValue1)); break; } + case CONDITION_WORLD_STATE: + { + condMeets = mConditionValue2 == sWorld->getWorldState(mConditionValue1); + break; + } + case CONDITION_PHASEMASK: + { + condMeets = (bool)(object->GetPhaseMask() & mConditionValue1); + break; + } default: condMeets = false; break; @@ -1673,6 +1683,27 @@ bool ConditionMgr::isConditionTypeValid(Condition* cond) case CONDITION_AREAID: case CONDITION_INSTANCE_DATA: break; + case CONDITION_WORLD_STATE: + { + if (!sWorld->getWorldState(cond->mConditionValue1)) + { + sLog->outErrorDb("World state condition has non existing world state in value1 (%u), skipped", cond->mConditionValue1); + return false; + } + if (cond->mConditionValue2) + sLog->outErrorDb("World state condition has useless data in value2 (%u)!", cond->mConditionValue2); + if (cond->mConditionValue3) + sLog->outErrorDb("World state condition has useless data in value3 (%u)!", cond->mConditionValue3); + break; + } + case CONDITION_PHASEMASK: + { + if (cond->mConditionValue2) + sLog->outErrorDb("World state condition has useless data in value2 (%u)!", cond->mConditionValue2); + if (cond->mConditionValue3) + sLog->outErrorDb("World state condition has useless data in value3 (%u)!", cond->mConditionValue3); + break; + } default: break; } |
