diff options
Diffstat (limited to 'src')
-rwxr-xr-x | src/server/game/Conditions/ConditionMgr.cpp | 7 | ||||
-rwxr-xr-x | src/server/game/Conditions/ConditionMgr.h | 3 |
2 files changed, 9 insertions, 1 deletions
diff --git a/src/server/game/Conditions/ConditionMgr.cpp b/src/server/game/Conditions/ConditionMgr.cpp index 5dc60f909f0..ebfdb2914cc 100755 --- a/src/server/game/Conditions/ConditionMgr.cpp +++ b/src/server/game/Conditions/ConditionMgr.cpp @@ -90,6 +90,12 @@ bool Condition::Meets(Player * player, Unit* invoker) condMeets = (status == QUEST_STATUS_INCOMPLETE); break; } + case CONDITION_QUEST_COMPLETE: + { + QuestStatus status = player->GetQuestStatus(mConditionValue1); + condMeets = (status == QUEST_STATUS_COMPLETE); + break; + } case CONDITION_QUEST_NONE: { QuestStatus status = player->GetQuestStatus(mConditionValue1); @@ -1116,6 +1122,7 @@ bool ConditionMgr::isConditionTypeValid(Condition* cond) case CONDITION_QUESTREWARDED: case CONDITION_QUESTTAKEN: case CONDITION_QUEST_NONE: + case CONDITION_QUEST_COMPLETE: { Quest const *Quest = sObjectMgr.GetQuestTemplate(cond->mConditionValue1); if (!Quest) diff --git a/src/server/game/Conditions/ConditionMgr.h b/src/server/game/Conditions/ConditionMgr.h index da3aa308c9e..5e670f882dd 100755 --- a/src/server/game/Conditions/ConditionMgr.h +++ b/src/server/game/Conditions/ConditionMgr.h @@ -55,7 +55,8 @@ enum ConditionType CONDITION_SPELL = 25, // spell_id 0 +referenceID true if knows spell CONDITION_NOITEM = 26, // item_id bank +referenceID true if player does not have any of the item (if 'bank' is set it searches in bank slots too) CONDITION_LEVEL = 27, // level opt +referenceID true if player's level is equal to param1 (param2 can modify the statement) - CONDITION_MAX = 28 // MAX + CONDITION_QUEST_COMPLETE = 28, // quest_id 0 +referenceID true if player has quest_id with all objectives complete, but not yet rewarded + CONDITION_MAX = 29 // MAX }; enum LevelConditionType |