From 03852e14e597b4bf8581e7904e6ce82de3a8f7e7 Mon Sep 17 00:00:00 2001 From: Azazel Date: Thu, 21 Apr 2011 16:23:20 +0600 Subject: 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 --- src/server/game/Conditions/ConditionMgr.cpp | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) (limited to 'src') 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; } -- cgit v1.2.3