diff options
-rw-r--r-- | src/game/ObjectMgr.cpp | 9 | ||||
-rw-r--r-- | src/game/ObjectMgr.h | 5 |
2 files changed, 13 insertions, 1 deletions
diff --git a/src/game/ObjectMgr.cpp b/src/game/ObjectMgr.cpp index c6cccc7f45e..e8967ef2f3e 100644 --- a/src/game/ObjectMgr.cpp +++ b/src/game/ObjectMgr.cpp @@ -7725,8 +7725,17 @@ bool PlayerCondition::Meets(Player const * player) const FactionEntry const* faction = sFactionStore.LookupEntry(value1); return faction && uint32(player->GetReputationMgr().GetRank(faction)) >= int32(value2); } + case CONDITION_ACHIEVEMENT: + { + AchievementEntry const* achievement = GetAchievementStore()->LookupEntry(value1); + return (achievement,1); + } case CONDITION_TEAM: return player->GetTeam() == value1; + case CONDITION_CLASS: + return player->getClass() == value1; + case CONDITION_RACE: + return player->getRace() == value1; case CONDITION_SKILL: return player->HasSkill(value1) && player->GetBaseSkillValue(value1) >= value2; case CONDITION_QUESTREWARDED: diff --git a/src/game/ObjectMgr.h b/src/game/ObjectMgr.h index 6193eaa2257..5df66a923f1 100644 --- a/src/game/ObjectMgr.h +++ b/src/game/ObjectMgr.h @@ -313,9 +313,12 @@ enum ConditionType CONDITION_ACTIVE_EVENT = 12, // event_id CONDITION_INSTANCE_DATA = 13, // entry data CONDITION_QUEST_NONE = 14, // quest_id 0 + CONDITION_CLASS = 15, // class 0 + CONDITION_RACE = 16, // race 0 + CONDITION_ACHIEVEMENT = 17 // achievement_id 0 }; -#define MAX_CONDITION 15 // maximum value in ConditionType enum +#define MAX_CONDITION 18 // maximum value in ConditionType enum struct PlayerCondition { |