aboutsummaryrefslogtreecommitdiff
path: root/src/server/game/Achievements/CriteriaHandler.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'src/server/game/Achievements/CriteriaHandler.cpp')
-rw-r--r--src/server/game/Achievements/CriteriaHandler.cpp23
1 files changed, 20 insertions, 3 deletions
diff --git a/src/server/game/Achievements/CriteriaHandler.cpp b/src/server/game/Achievements/CriteriaHandler.cpp
index 03fbbb50a3a..ac0ee493d88 100644
--- a/src/server/game/Achievements/CriteriaHandler.cpp
+++ b/src/server/game/Achievements/CriteriaHandler.cpp
@@ -66,6 +66,8 @@ bool CriteriaData::IsValid(Criteria const* criteria)
case CRITERIA_TYPE_GET_KILLING_BLOWS:
case CRITERIA_TYPE_REACH_LEVEL:
case CRITERIA_TYPE_ON_LOGIN:
+ case CRITERIA_TYPE_LOOT_EPIC_ITEM:
+ case CRITERIA_TYPE_RECEIVE_EPIC_ITEM:
break;
default:
if (DataType != CRITERIA_DATA_TYPE_SCRIPT)
@@ -219,10 +221,10 @@ bool CriteriaData::IsValid(Criteria const* criteria)
}
case CRITERIA_DATA_TYPE_BG_LOSS_TEAM_SCORE:
return true; // not check correctness node indexes
- case CRITERIA_DATA_TYPE_S_EQUIPED_ITEM:
+ case CRITERIA_DATA_TYPE_S_EQUIPPED_ITEM:
if (EquippedItem.Quality >= MAX_ITEM_QUALITY)
{
- TC_LOG_ERROR("sql.sql", "Table `criteria_data` (Entry: %u Type: %u) for data type CRITERIA_DATA_TYPE_S_EQUIPED_ITEM (%u) contains an unknown quality state value in value1 (%u), ignored.",
+ TC_LOG_ERROR("sql.sql", "Table `criteria_data` (Entry: %u Type: %u) for data type CRITERIA_DATA_TYPE_S_EQUIPPED_ITEM (%u) contains an unknown quality state value in value2 (%u), ignored.",
criteria->ID, criteria->Entry->Type, DataType, EquippedItem.Quality);
return false;
}
@@ -262,6 +264,14 @@ bool CriteriaData::IsValid(Criteria const* criteria)
return false;
}
return true;
+ case CRITERIA_DATA_TYPE_S_ITEM_QUALITY:
+ if (ItemQuality.Quality >= MAX_ITEM_QUALITY)
+ {
+ TC_LOG_ERROR("sql.sql", "Table `criteria_data` (Entry: %u Type: %u) for data type CRITERIA_DATA_TYPE_S_ITEM_QUALITY (%u) contains an unknown quality state value in value1 (%u), ignored.",
+ criteria->ID, criteria->Entry->Type, DataType, ItemQuality.Quality);
+ return false;
+ }
+ return true;
default:
TC_LOG_ERROR("sql.sql", "Table `criteria_data` (Entry: %u Type: %u) contains data of a non-supported data type (%u), ignored.", criteria->ID, criteria->Entry->Type, DataType);
return false;
@@ -355,7 +365,7 @@ bool CriteriaData::Meets(uint32 criteriaId, Player const* source, Unit const* ta
}
return instance->CheckAchievementCriteriaMeet(criteriaId, source, target, miscValue1);
}
- case CRITERIA_DATA_TYPE_S_EQUIPED_ITEM:
+ case CRITERIA_DATA_TYPE_S_EQUIPPED_ITEM:
{
ItemTemplate const* pProto = sObjectMgr->GetItemTemplate(miscValue1);
if (!pProto)
@@ -371,6 +381,13 @@ bool CriteriaData::Meets(uint32 criteriaId, Player const* source, Unit const* ta
return false;
}
+ case CRITERIA_DATA_TYPE_S_ITEM_QUALITY:
+ {
+ ItemTemplate const* pProto = sObjectMgr->GetItemTemplate(miscValue1);
+ if (!pProto)
+ return false;
+ return pProto->GetQuality() == ItemQuality.Quality;
+ }
default:
break;
}