diff --git a/src/game/ObjectMgr.cpp b/src/game/ObjectMgr.cpp index c8681f9cd..98efb7ca2 100644 --- a/src/game/ObjectMgr.cpp +++ b/src/game/ObjectMgr.cpp @@ -8108,6 +8108,12 @@ bool PlayerCondition::Meets(Player const * player) const } return false; } + case CONDITION_QUEST_NONE: + { + if (!player->IsCurrentQuest(value1) && !player->GetQuestRewardStatus(value1)) + return true; + return false; + } default: return false; } @@ -8219,6 +8225,7 @@ bool PlayerCondition::IsValid(ConditionType condition, uint32 value1, uint32 val case CONDITION_QUESTREWARDED: case CONDITION_QUESTTAKEN: case CONDITION_QUESTAVAILABLE: + case CONDITION_QUEST_NONE: { Quest const *Quest = sObjectMgr.GetQuestTemplate(value1); if (!Quest) diff --git a/src/game/ObjectMgr.h b/src/game/ObjectMgr.h index 520a1bac5..f42aa54df 100644 --- a/src/game/ObjectMgr.h +++ b/src/game/ObjectMgr.h @@ -607,9 +607,10 @@ enum ConditionType CONDITION_QUESTAVAILABLE = 19, // quest_id 0 for case when loot/gossip possible only if player can start quest CONDITION_ACHIEVEMENT = 20, // ach_id 0, 1 (0: has achievement, 1: hasn't achievement) for player CONDITION_ACHIEVEMENT_REALM = 21, // ach_id 0, 1 (0: has achievement, 1: hasn't achievement) for server + CONDITION_QUEST_NONE = 22 // quest_id 0 (quest did not take and not rewarded) }; -#define MAX_CONDITION 22 // maximum value in ConditionType enum +#define MAX_CONDITION 23 // maximum value in ConditionType enum struct PlayerCondition { diff --git a/src/shared/revision_nr.h b/src/shared/revision_nr.h index cbba1e631..58d1be289 100644 --- a/src/shared/revision_nr.h +++ b/src/shared/revision_nr.h @@ -1,4 +1,4 @@ #ifndef __REVISION_NR_H__ #define __REVISION_NR_H__ - #define REVISION_NR "10519" + #define REVISION_NR "10520" #endif // __REVISION_NR_H__