aboutsummaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
Diffstat (limited to 'src')
-rw-r--r--src/server/game/Achievements/CriteriaHandler.cpp37
-rw-r--r--src/server/game/DataStores/DBCEnums.h12
2 files changed, 46 insertions, 3 deletions
diff --git a/src/server/game/Achievements/CriteriaHandler.cpp b/src/server/game/Achievements/CriteriaHandler.cpp
index e7944aa8e14..04c8ec200ef 100644
--- a/src/server/game/Achievements/CriteriaHandler.cpp
+++ b/src/server/game/Achievements/CriteriaHandler.cpp
@@ -1580,6 +1580,13 @@ bool CriteriaHandler::AdditionalRequirementsSatisfied(ModifierTreeNode const* tr
switch (CriteriaAdditionalCondition(reqType))
{
+ case CRITERIA_ADDITIONAL_CONDITION_SOURCE_PLAYER_CONDITION: // 2
+ {
+ PlayerConditionEntry const* playerCondition = sPlayerConditionStore.LookupEntry(reqValue);
+ if (!playerCondition || !ConditionMgr::IsPlayerMeetingCondition(referencePlayer, playerCondition))
+ return false;
+ break;
+ }
case CRITERIA_ADDITIONAL_CONDITION_ITEM_LEVEL: // 3
{
// miscValue1 is itemid
@@ -1608,6 +1615,10 @@ bool CriteriaHandler::AdditionalRequirementsSatisfied(ModifierTreeNode const* tr
if (!referencePlayer->HasAura(reqValue))
return false;
break;
+ case CRITERIA_ADDITIONAL_CONDITION_SOURCE_HAS_AURA_TYPE: // 9
+ if (!referencePlayer->HasAuraType(AuraType(reqValue)))
+ return false;
+ break;
case CRITERIA_ADDITIONAL_CONDITION_TARGET_HAS_AURA: // 10
if (!unit || !unit->HasAura(reqValue))
return false;
@@ -1616,6 +1627,14 @@ bool CriteriaHandler::AdditionalRequirementsSatisfied(ModifierTreeNode const* tr
if (!unit || !unit->HasAuraType(AuraType(reqValue)))
return false;
break;
+ case CRITERIA_ADDITIONAL_CONDITION_SOURCE_AURA_STATE: // 12
+ if (!referencePlayer->HasAuraState(AuraStateType(reqValue)))
+ return false;
+ break;
+ case CRITERIA_ADDITIONAL_CONDITION_TARGET_AURA_STATE: // 13
+ if (!unit || !unit->HasAuraState(AuraStateType(reqValue)))
+ return false;
+ break;
case CRITERIA_ADDITIONAL_CONDITION_ITEM_QUALITY_MIN: // 14
{
// miscValue1 is itemid
@@ -1717,6 +1736,16 @@ bool CriteriaHandler::AdditionalRequirementsSatisfied(ModifierTreeNode const* tr
if (!unit || unit->GetHealthPct() >= reqValue)
return false;
break;
+ case CRITERIA_ADDITIONAL_CONDITION_TARGET_PLAYER_CONDITION: // 55
+ {
+ if (!unit || !unit->IsPlayer())
+ return false;
+
+ PlayerConditionEntry const* playerCondition = sPlayerConditionStore.LookupEntry(reqValue);
+ if (!playerCondition || !ConditionMgr::IsPlayerMeetingCondition(unit->ToPlayer(), playerCondition))
+ return false;
+ break;
+ }
case CRITERIA_ADDITIONAL_CONDITION_RATED_BATTLEGROUND_RATING: // 64
if (referencePlayer->GetRBGPersonalRating() < reqValue)
return false;
@@ -1732,6 +1761,14 @@ bool CriteriaHandler::AdditionalRequirementsSatisfied(ModifierTreeNode const* tr
if (miscValue1 != reqValue)
return false;
break;
+ case CRITERIA_ADDITIONAL_CONDITION_REWARDED_QUEST: // 110
+ if (!referencePlayer->GetQuestRewardStatus(reqValue))
+ return false;
+ break;
+ case CRITERIA_ADDITIONAL_CONDITION_COMPLETED_QUEST: // 111
+ if (referencePlayer->GetQuestStatus(reqValue) != QUEST_STATUS_COMPLETE)
+ return false;
+ break;
case CRITERIA_ADDITIONAL_CONDITION_GARRISON_FOLLOWER_ENTRY: // 144
{
if (!referencePlayer)
diff --git a/src/server/game/DataStores/DBCEnums.h b/src/server/game/DataStores/DBCEnums.h
index 894ea6a343a..805b59841e2 100644
--- a/src/server/game/DataStores/DBCEnums.h
+++ b/src/server/game/DataStores/DBCEnums.h
@@ -196,18 +196,21 @@ enum CriteriaCondition
enum CriteriaAdditionalCondition
{
CRITERIA_ADDITIONAL_CONDITION_SOURCE_DRUNK_VALUE = 1, // NYI
- CRITERIA_ADDITIONAL_CONDITION_UNK2 = 2,
+ CRITERIA_ADDITIONAL_CONDITION_SOURCE_PLAYER_CONDITION = 2,
CRITERIA_ADDITIONAL_CONDITION_ITEM_LEVEL = 3, // NYI
CRITERIA_ADDITIONAL_CONDITION_TARGET_CREATURE_ENTRY = 4,
CRITERIA_ADDITIONAL_CONDITION_TARGET_MUST_BE_PLAYER = 5,
CRITERIA_ADDITIONAL_CONDITION_TARGET_MUST_BE_DEAD = 6,
CRITERIA_ADDITIONAL_CONDITION_TARGET_MUST_BE_ENEMY = 7,
CRITERIA_ADDITIONAL_CONDITION_SOURCE_HAS_AURA = 8,
+ CRITERIA_ADDITIONAL_CONDITION_SOURCE_HAS_AURA_TYPE = 9,
CRITERIA_ADDITIONAL_CONDITION_TARGET_HAS_AURA = 10,
CRITERIA_ADDITIONAL_CONDITION_TARGET_HAS_AURA_TYPE = 11,
+ CRITERIA_ADDITIONAL_CONDITION_SOURCE_AURA_STATE = 12,
+ CRITERIA_ADDITIONAL_CONDITION_TARGET_AURA_STATE = 13,
CRITERIA_ADDITIONAL_CONDITION_ITEM_QUALITY_MIN = 14,
CRITERIA_ADDITIONAL_CONDITION_ITEM_QUALITY_EQUALS = 15,
- CRITERIA_ADDITIONAL_CONDITION_UNK16 = 16,
+ CRITERIA_ADDITIONAL_CONDITION_SOURCE_IS_ALIVE = 16,
CRITERIA_ADDITIONAL_CONDITION_SOURCE_AREA_OR_ZONE = 17,
CRITERIA_ADDITIONAL_CONDITION_TARGET_AREA_OR_ZONE = 18,
CRITERIA_ADDITIONAL_CONDITION_MAP_DIFFICULTY_OLD = 20,
@@ -229,7 +232,7 @@ enum CriteriaAdditionalCondition
CRITERIA_ADDITIONAL_CONDITION_TARGET_LEVEL = 40,
CRITERIA_ADDITIONAL_CONDITION_TARGET_ZONE = 41,
CRITERIA_ADDITIONAL_CONDITION_TARGET_HEALTH_PERCENT_BELOW = 46,
- CRITERIA_ADDITIONAL_CONDITION_UNK55 = 55,
+ CRITERIA_ADDITIONAL_CONDITION_TARGET_PLAYER_CONDITION = 55,
CRITERIA_ADDITIONAL_CONDITION_MIN_ACHIEVEMENT_POINTS = 56, // NYI
CRITERIA_ADDITIONAL_CONDITION_REQUIRES_LFG_GROUP = 58, // NYI
CRITERIA_ADDITIONAL_CONDITION_UNK60 = 60,
@@ -257,6 +260,9 @@ enum CriteriaAdditionalCondition
//CRITERIA_ADDITIONAL_CONDITION_UNK87 = 87, // Achievement id
CRITERIA_ADDITIONAL_CONDITION_BATTLE_PET_SPECIES = 91,
CRITERIA_ADDITIONAL_CONDITION_EXPANSION = 92,
+ CRITERIA_ADDITIONAL_CONDITION_REWARDED_QUEST = 110,
+ CRITERIA_ADDITIONAL_CONDITION_COMPLETED_QUEST = 111,
+ CRITERIA_ADDITIONAL_CONDITION_COMPLETED_QUEST_OBJECTIVE = 112, // NYI, QuestObjectiveID
CRITERIA_ADDITIONAL_CONDITION_GARRISON_FOLLOWER_ENTRY = 144,
CRITERIA_ADDITIONAL_CONDITION_GARRISON_FOLLOWER_QUALITY = 145,
CRITERIA_ADDITIONAL_CONDITION_GARRISON_FOLLOWER_LEVEL = 146,