diff options
author | Azazel <azazel.kon@gmail.com> | 2011-04-21 16:23:20 +0600 |
---|---|---|
committer | Azazel <azazel.kon@gmail.com> | 2011-04-21 16:23:20 +0600 |
commit | 03852e14e597b4bf8581e7904e6ce82de3a8f7e7 (patch) | |
tree | ae5b97b1cbcd96a9ee38ac25e0edd179c72e542e | |
parent | 2b1f6e29a21b4c32dd666ab6561f67215f5a25c4 (diff) |
Core/Conditions: improve CONDITION_QUEST* conditions. Now you can invert meaning of these conditions by setting ConditionValue2 to 1. For example, if you use CONDITION_QUEST_COMPLETE and ConditionValue2=1 then this condition will be true if this quest has any status but completed
-rwxr-xr-x | src/server/game/Conditions/ConditionMgr.cpp | 10 |
1 files changed, 5 insertions, 5 deletions
diff --git a/src/server/game/Conditions/ConditionMgr.cpp b/src/server/game/Conditions/ConditionMgr.cpp index 3c084f47b05..b6792a80f4e 100755 --- a/src/server/game/Conditions/ConditionMgr.cpp +++ b/src/server/game/Conditions/ConditionMgr.cpp @@ -85,24 +85,24 @@ bool Condition::Meets(Player * player, Unit* invoker) condMeets = player->HasSkill(mConditionValue1) && player->GetBaseSkillValue(mConditionValue1) >= mConditionValue2; break; case CONDITION_QUESTREWARDED: - condMeets = player->GetQuestRewardStatus(mConditionValue1); + condMeets = (player->GetQuestRewardStatus(mConditionValue1) == !mConditionValue2); break; case CONDITION_QUESTTAKEN: { QuestStatus status = player->GetQuestStatus(mConditionValue1); - condMeets = (status == QUEST_STATUS_INCOMPLETE); + condMeets = ((status == QUEST_STATUS_INCOMPLETE) == !mConditionValue2); break; } case CONDITION_QUEST_COMPLETE: { QuestStatus status = player->GetQuestStatus(mConditionValue1); - condMeets = (status == QUEST_STATUS_COMPLETE && !player->GetQuestRewardStatus(mConditionValue1)); + condMeets = ((status == QUEST_STATUS_COMPLETE && !player->GetQuestRewardStatus(mConditionValue1)) == !mConditionValue2); break; } case CONDITION_QUEST_NONE: { QuestStatus status = player->GetQuestStatus(mConditionValue1); - condMeets = (status == QUEST_STATUS_NONE); + condMeets = ((status == QUEST_STATUS_NONE) == !mConditionValue2); break; } case CONDITION_NO_AURA: @@ -1145,7 +1145,7 @@ bool ConditionMgr::isConditionTypeValid(Condition* cond) return false; } - if (cond->mConditionValue2) + if (cond->mConditionValue2 > 1) sLog->outErrorDb("Quest condition has useless data in value2 (%u)!", cond->mConditionValue2); break; } |