diff options
author | Meji <alvaro.megias@outlook.com> | 2023-10-15 16:42:17 +0200 |
---|---|---|
committer | GitHub <noreply@github.com> | 2023-10-15 16:42:17 +0200 |
commit | 10b06ff50f77cc0516c5f17adffef8eb75f1d555 (patch) | |
tree | 73b70118cb1431f680335f1249f4a6a6e2e43599 /src/server/game/Achievements/CriteriaHandler.cpp | |
parent | 0f7dd4eadf90a5407fd232d083485430d725152f (diff) |
Core/Achievements: Fix CriteriaTypes related to areas and zones (#29367)
Diffstat (limited to 'src/server/game/Achievements/CriteriaHandler.cpp')
-rw-r--r-- | src/server/game/Achievements/CriteriaHandler.cpp | 37 |
1 files changed, 25 insertions, 12 deletions
diff --git a/src/server/game/Achievements/CriteriaHandler.cpp b/src/server/game/Achievements/CriteriaHandler.cpp index 8375e9943bf..9718600ccc7 100644 --- a/src/server/game/Achievements/CriteriaHandler.cpp +++ b/src/server/game/Achievements/CriteriaHandler.cpp @@ -551,11 +551,9 @@ void CriteriaHandler::UpdateCriteria(CriteriaType type, uint64 miscValue1 /*= 0* case CriteriaType::HonorLevelIncrease: case CriteriaType::PrestigeLevelIncrease: case CriteriaType::LearnAnyTransmogInSlot: - case CriteriaType::CollectTransmogSetFromGroup: case CriteriaType::CompleteAnyReplayQuest: case CriteriaType::BuyItemsFromVendors: case CriteriaType::SellItemsToVendors: - case CriteriaType::EnterTopLevelArea: SetCriteriaProgress(criteria, 1, referencePlayer, PROGRESS_ACCUMULATE); break; // std case: increment at miscValue1 @@ -662,16 +660,21 @@ void CriteriaHandler::UpdateCriteria(CriteriaType type, uint64 miscValue1 /*= 0* // miscValue1 is the ingame fallheight*100 as stored in dbc SetCriteriaProgress(criteria, miscValue1, referencePlayer); break; + case CriteriaType::EarnAchievement: case CriteriaType::CompleteQuest: case CriteriaType::LearnOrKnowSpell: case CriteriaType::RevealWorldMapOverlay: case CriteriaType::GotHaircut: case CriteriaType::EquipItemInSlot: case CriteriaType::EquipItem: - case CriteriaType::EarnAchievement: - case CriteriaType::RecruitGarrisonFollower: case CriteriaType::LearnedNewPet: + case CriteriaType::EnterArea: + case CriteriaType::LeaveArea: + case CriteriaType::RecruitGarrisonFollower: case CriteriaType::ActivelyReachLevel: + case CriteriaType::CollectTransmogSetFromGroup: + case CriteriaType::EnterTopLevelArea: + case CriteriaType::LeaveTopLevelArea: SetCriteriaProgress(criteria, 1, referencePlayer); break; case CriteriaType::BankSlotsPurchased: @@ -795,8 +798,6 @@ void CriteriaHandler::UpdateCriteria(CriteriaType type, uint64 miscValue1 /*= 0* case CriteriaType::AccountObtainPetThroughBattle: case CriteriaType::WinPetBattle: case CriteriaType::PlayerObtainPetThroughBattle: - case CriteriaType::EnterArea: - case CriteriaType::LeaveArea: case CriteriaType::DefeatDungeonEncounter: case CriteriaType::ActivateGarrisonBuilding: case CriteriaType::UpgradeGarrison: @@ -1181,14 +1182,11 @@ bool CriteriaHandler::IsCompletedCriteria(Criteria const* criteria, uint64 requi case CriteriaType::BankSlotsPurchased: case CriteriaType::ReputationGained: case CriteriaType::TotalExaltedFactions: - case CriteriaType::GotHaircut: - case CriteriaType::EquipItemInSlot: case CriteriaType::RollNeed: case CriteriaType::RollGreed: case CriteriaType::DeliverKillingBlowToClass: case CriteriaType::DeliverKillingBlowToRace: case CriteriaType::DoEmote: - case CriteriaType::EquipItem: case CriteriaType::MoneyEarnedFromQuesting: case CriteriaType::MoneyLootedFromCreatures: case CriteriaType::UseGameobject: @@ -1215,18 +1213,24 @@ bool CriteriaHandler::IsCompletedCriteria(Criteria const* criteria, uint64 requi case CriteriaType::CompleteAnyReplayQuest: case CriteriaType::BuyItemsFromVendors: case CriteriaType::SellItemsToVendors: - case CriteriaType::EnterTopLevelArea: return progress->Counter >= requiredAmount; case CriteriaType::EarnAchievement: case CriteriaType::CompleteQuest: case CriteriaType::LearnOrKnowSpell: case CriteriaType::RevealWorldMapOverlay: - case CriteriaType::RecruitGarrisonFollower: + case CriteriaType::GotHaircut: + case CriteriaType::EquipItemInSlot: + case CriteriaType::EquipItem: case CriteriaType::LearnedNewPet: case CriteriaType::HonorLevelIncrease: case CriteriaType::PrestigeLevelIncrease: + case CriteriaType::EnterArea: + case CriteriaType::LeaveArea: + case CriteriaType::RecruitGarrisonFollower: case CriteriaType::ActivelyReachLevel: case CriteriaType::CollectTransmogSetFromGroup: + case CriteriaType::EnterTopLevelArea: + case CriteriaType::LeaveTopLevelArea: return progress->Counter >= 1; case CriteriaType::AchieveSkillStep: return progress->Counter >= (requiredAmount * 75); @@ -1593,10 +1597,14 @@ bool CriteriaHandler::RequirementsSatisfied(Criteria const* criteria, uint64 mis return false; break; case CriteriaType::PVPKillInArea: - case CriteriaType::EnterTopLevelArea: + case CriteriaType::EnterArea: if (!miscValue1 || !DB2Manager::IsInArea(uint32(miscValue1), uint32(criteria->Entry->Asset.AreaID))) return false; break; + case CriteriaType::LeaveArea: + if (!miscValue1 || DB2Manager::IsInArea(uint32(miscValue1), uint32(criteria->Entry->Asset.AreaID))) + return false; + break; case CriteriaType::CurrencyGained: if (!miscValue1 || !miscValue2 || int64(miscValue2) < 0 || miscValue1 != uint32(criteria->Entry->Asset.CurrencyID)) @@ -1630,6 +1638,11 @@ bool CriteriaHandler::RequirementsSatisfied(Criteria const* criteria, uint64 mis if (!miscValue1 || miscValue1 != uint32(criteria->Entry->Asset.PlayerLevel)) return false; break; + case CriteriaType::EnterTopLevelArea: + case CriteriaType::LeaveTopLevelArea: + if (!miscValue1 || miscValue1 != uint32(criteria->Entry->Asset.ZoneID)) + return false; + break; default: break; } |