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

This commit is contained in:
Azazel
2011-04-21 16:23:20 +06:00
parent 2b1f6e29a2
commit 03852e14e5
+5 -5
View File
@@ -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;
}