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:
@@ -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;
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user