From e7eac8823fa054611aa06e179418ad1af7e320d5 Mon Sep 17 00:00:00 2001 From: funjoker Date: Fri, 28 Jan 2022 22:04:31 +0100 Subject: [PATCH] Fix AdditionalRequirement item checkup --- .../game/Achievements/AchievementMgr.cpp | 19 +++++++++++-------- 1 file changed, 11 insertions(+), 8 deletions(-) diff --git a/src/server/game/Achievements/AchievementMgr.cpp b/src/server/game/Achievements/AchievementMgr.cpp index ba3e122f093..cfb43ed1439 100644 --- a/src/server/game/Achievements/AchievementMgr.cpp +++ b/src/server/game/Achievements/AchievementMgr.cpp @@ -2794,7 +2794,7 @@ bool AchievementMgr::RequirementsSatisfied(AchievementCriteriaEntry const* ac } template -bool AchievementMgr::AdditionalRequirementsSatisfied(AchievementCriteriaEntry const* criteria, uint64 miscValue1, uint64 /*miscValue2*/, Unit const* unit, Player* referencePlayer) const +bool AchievementMgr::AdditionalRequirementsSatisfied(AchievementCriteriaEntry const* criteria, uint64 miscValue1, uint64 miscValue2, Unit const* unit, Player* referencePlayer) const { for (uint8 i = 0; i < MAX_ADDITIONAL_CRITERIA_CONDITIONS; ++i) { @@ -2805,7 +2805,8 @@ bool AchievementMgr::AdditionalRequirementsSatisfied(AchievementCriteriaEntry { case ACHIEVEMENT_CRITERIA_ADDITIONAL_CONDITION_ITEM_LEVEL: // 3 { - ItemTemplate const* const item = sObjectMgr->GetItemTemplate(uint32(miscValue1)); + uint64 itemId = (criteria->Type == ACHIEVEMENT_CRITERIA_TYPE_EQUIP_EPIC_ITEM ? miscValue2 : miscValue1); + ItemTemplate const* const item = sObjectMgr->GetItemTemplate(uint32(itemId)); if (!item || item->GetBaseItemLevel() < reqValue) return false; break; @@ -2840,16 +2841,16 @@ bool AchievementMgr::AdditionalRequirementsSatisfied(AchievementCriteriaEntry break; case ACHIEVEMENT_CRITERIA_ADDITIONAL_CONDITION_ITEM_QUALITY_MIN: // 14 { - // miscValue1 is itemid - ItemTemplate const* const item = sObjectMgr->GetItemTemplate(uint32(miscValue1)); + uint64 itemId = (criteria->Type == ACHIEVEMENT_CRITERIA_TYPE_EQUIP_EPIC_ITEM ? miscValue2 : miscValue1); + ItemTemplate const* const item = sObjectMgr->GetItemTemplate(uint32(itemId)); if (!item || item->GetQuality() < reqValue) return false; break; } case ACHIEVEMENT_CRITERIA_ADDITIONAL_CONDITION_ITEM_QUALITY_EQUALS: // 15 { - // miscValue1 is itemid - ItemTemplate const* const item = sObjectMgr->GetItemTemplate(uint32(miscValue1)); + uint64 itemId = (criteria->Type == ACHIEVEMENT_CRITERIA_TYPE_EQUIP_EPIC_ITEM ? miscValue2 : miscValue1); + ItemTemplate const* const item = sObjectMgr->GetItemTemplate(uint32(itemId)); if (!item || item->GetQuality() != reqValue) return false; break; @@ -2911,14 +2912,16 @@ bool AchievementMgr::AdditionalRequirementsSatisfied(AchievementCriteriaEntry break; case ACHIEVEMENT_CRITERIA_ADDITIONAL_CONDITION_ITEM_CLASS: // 33 { - ItemTemplate const* const item = sObjectMgr->GetItemTemplate(uint32(miscValue1)); + uint64 itemId = (criteria->Type == ACHIEVEMENT_CRITERIA_TYPE_EQUIP_EPIC_ITEM ? miscValue2 : miscValue1); + ItemTemplate const* const item = sObjectMgr->GetItemTemplate(uint32(itemId)); if (!item || item->GetClass() != reqValue) return false; break; } case ACHIEVEMENT_CRITERIA_ADDITIONAL_CONDITION_ITEM_SUBCLASS: // 34 { - ItemTemplate const* const item = sObjectMgr->GetItemTemplate(uint32(miscValue1)); + uint64 itemId = (criteria->Type == ACHIEVEMENT_CRITERIA_TYPE_EQUIP_EPIC_ITEM ? miscValue2 : miscValue1); + ItemTemplate const* const item = sObjectMgr->GetItemTemplate(uint32(itemId)); if (!item || item->GetSubClass() != reqValue) return false; break;