aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorAzazel <azazel.kon@gmail.com>2011-04-21 16:23:20 +0600
committerAzazel <azazel.kon@gmail.com>2011-04-21 16:23:20 +0600
commit03852e14e597b4bf8581e7904e6ce82de3a8f7e7 (patch)
treeae5b97b1cbcd96a9ee38ac25e0edd179c72e542e
parent2b1f6e29a21b4c32dd666ab6561f67215f5a25c4 (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-xsrc/server/game/Conditions/ConditionMgr.cpp10
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;
}