diff options
| author | SnapperRy <snapperryen@gmail.com> | 2016-08-24 18:08:15 +0200 |
|---|---|---|
| committer | joschiwald <joschiwald.trinity@gmail.com> | 2017-02-18 15:57:18 +0100 |
| commit | 41ed592d05521f04ed459de86afb72572ad3207e (patch) | |
| tree | 33261c04fb8e2dee7343ee7e29e780683d615825 /src/server/game/Achievements/CriteriaHandler.cpp | |
| parent | bf5988733bf63a2bdf489b95dc49629ba8a1c0e6 (diff) | |
Core/Achievements: implement ACHIEVEMENT_CRITERIA_DATA_TYPE_S_ITEM_QUALITY to check if the item with entry miscvalue1 is exactly of the quality specified in achievement_criteria_data's value1 field.
Also ACHIEVEMENT_CRITERIA_DATA_TYPE_S_EQUIPED_ITEM --> ACHIEVEMENT_CRITERIA_DATA_TYPE_S_EQUIPPED_ITEM
(cherry picked from commit 2b48082b9d914e0dc2773447bcba3946f5106a38)
Diffstat (limited to 'src/server/game/Achievements/CriteriaHandler.cpp')
| -rw-r--r-- | src/server/game/Achievements/CriteriaHandler.cpp | 23 |
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; } |
