diff options
| author | Shauren <shauren.trinity@gmail.com> | 2024-12-07 21:49:32 +0100 |
|---|---|---|
| committer | Ovahlord <dreadkiller@gmx.de> | 2024-12-12 19:55:15 +0100 |
| commit | 60064b0c433bce7d14b59ddc23402e20ba0e709d (patch) | |
| tree | 32d70fd6a30819c174502c18db7db78416807ba2 /src/server/game/Achievements/CriteriaHandler.cpp | |
| parent | d86e2671d933b20eb81a9a06d3a4b604ad844215 (diff) | |
Core/Achievements: Reduce the list of criteria types updated on login
* Implemented CriteriaType::ReachMaxLevel
* Corrected implementations for CriteriaType::ReachRenownLevel and CriteriaType::LearnTaxiNode
(cherry picked from commit 6da1679cbfdc56cd5f1cab7148f645916bccecc1)
Diffstat (limited to 'src/server/game/Achievements/CriteriaHandler.cpp')
| -rw-r--r-- | src/server/game/Achievements/CriteriaHandler.cpp | 82 |
1 files changed, 82 insertions, 0 deletions
diff --git a/src/server/game/Achievements/CriteriaHandler.cpp b/src/server/game/Achievements/CriteriaHandler.cpp index a4eff377a86..9cadf11de30 100644 --- a/src/server/game/Achievements/CriteriaHandler.cpp +++ b/src/server/game/Achievements/CriteriaHandler.cpp @@ -560,6 +560,8 @@ void CriteriaHandler::UpdateCriteria(CriteriaType type, uint64 miscValue1 /*= 0* case CriteriaType::CompleteAnyReplayQuest: case CriteriaType::BuyItemsFromVendors: case CriteriaType::SellItemsToVendors: + case CriteriaType::ReachMaxLevel: + case CriteriaType::LearnTaxiNode: SetCriteriaProgress(criteria, 1, referencePlayer, PROGRESS_ACCUMULATE); break; // std case: increment at miscValue1 @@ -1225,6 +1227,8 @@ bool CriteriaHandler::IsCompletedCriteria(Criteria const* criteria, uint64 requi case CriteriaType::BuyItemsFromVendors: case CriteriaType::SellItemsToVendors: case CriteriaType::GainLevels: + case CriteriaType::ReachRenownLevel: + case CriteriaType::LearnTaxiNode: return progress->Counter >= requiredAmount; case CriteriaType::EarnAchievement: case CriteriaType::CompleteQuest: @@ -1243,6 +1247,7 @@ bool CriteriaHandler::IsCompletedCriteria(Criteria const* criteria, uint64 requi case CriteriaType::PrestigeLevelIncrease: case CriteriaType::ActivelyReachLevel: case CriteriaType::CollectTransmogSetFromGroup: + case CriteriaType::ReachMaxLevel: case CriteriaType::EnterTopLevelArea: case CriteriaType::LeaveTopLevelArea: return progress->Counter >= 1; @@ -1615,6 +1620,7 @@ bool CriteriaHandler::RequirementsSatisfied(Criteria const* criteria, uint64 mis return false; break; case CriteriaType::CurrencyGained: + case CriteriaType::ReachRenownLevel: if (!miscValue1 || !miscValue2 || int64(miscValue2) < 0 || miscValue1 != uint32(criteria->Entry->Asset.CurrencyID)) return false; @@ -1672,6 +1678,10 @@ bool CriteriaHandler::RequirementsSatisfied(Criteria const* criteria, uint64 mis if (!miscValue1 || miscValue1 != uint32(criteria->Entry->Asset.AreaTriggerActionSetID)) return false; break; + case CriteriaType::LearnTaxiNode: + if (miscValue1 != uint32(criteria->Entry->Asset.TaxiNodesID)) + return false; + break; default: break; } @@ -3856,6 +3866,14 @@ char const* CriteriaMgr::GetCriteriaTypeString(CriteriaType type) return "CompleteTrackingQuest"; case CriteriaType::GainLevels: return "GainLevels"; + case CriteriaType::CompleteQuestsCountOnAccount: + return "CompleteQuestsCountOnAccount"; + case CriteriaType::WarbandBankTabPurchased: + return "WarbandBankTabPurchased"; + case CriteriaType::ReachRenownLevel: + return "ReachRenownLevel"; + case CriteriaType::LearnTaxiNode: + return "LearnTaxiNode"; default: return "MissingType"; } @@ -3906,6 +3924,8 @@ inline bool IsCriteriaTypeStoredByAsset(CriteriaType type) case CriteriaType::LandTargetedSpellOnTarget: case CriteriaType::LearnTradeskillSkillLine: case CriteriaType::DefeatDungeonEncounter: + case CriteriaType::LearnToy: + case CriteriaType::LearnAnyTransmog: return true; default: break; @@ -4276,3 +4296,65 @@ ModifierTreeNode const* CriteriaMgr::GetModifierTree(uint32 modifierTreeId) cons return nullptr; } + +std::span<CriteriaType const> CriteriaMgr::GetRetroactivelyUpdateableCriteriaTypes() +{ + static constexpr CriteriaType Types[] = + { + CriteriaType::CompleteResearchProject, + CriteriaType::CompleteAnyResearchProject, + CriteriaType::ReachLevel, + CriteriaType::SkillRaised, + CriteriaType::CompleteQuestsCount, + CriteriaType::CompleteAnyDailyQuestPerDay, + CriteriaType::CompleteQuestsInZone, + CriteriaType::CompleteQuest, + CriteriaType::LearnOrKnowSpell, + CriteriaType::AcquireItem, + CriteriaType::EarnPersonalArenaRating, + CriteriaType::AchieveSkillStep, + CriteriaType::RevealWorldMapOverlay, + //CriteriaType::EarnTitle, /*NYI*/ + CriteriaType::BankSlotsPurchased, + CriteriaType::ReputationGained, + CriteriaType::TotalExaltedFactions, + //CriteriaType::CompleteQuestsInSort, /*NYI*/ + CriteriaType::LearnSpellFromSkillLine, + CriteriaType::MostMoneyOwned, + CriteriaType::TotalReveredFactions, + CriteriaType::TotalHonoredFactions, + CriteriaType::TotalFactionsEncountered, + //CriteriaType::AccountKnownPet, /*NYI*/ + CriteriaType::LearnTradeskillSkillLine, + CriteriaType::HonorableKills, + //CriteriaType::GuildBankTabsPurchased, /*NYI*/ + //CriteriaType::EarnGuildAchievementPoints, /*NYI*/ + //CriteriaType::EarnBattlegroundRating, /*NYI*/ + //CriteriaType::GuildTabardCreated, /*NYI*/ + CriteriaType::LearnedNewPet, + CriteriaType::UniquePetsOwned, + //CriteriaType::UpgradeGarrison, /*NYI*/ + //CriteriaType::AcquireGarrison, /*NYI*/ + //CriteriaType::LearnGarrisonBlueprint, /*NYI*/ + //CriteriaType::LearnGarrisonSpecialization, /*NYI*/ + //CriteriaType::LearnToy, /*NYI*/ // Learn Toy "{Item}" + //CriteriaType::LearnAnyToy, /*NYI*/ // Learn Any Toy + //CriteriaType::LearnTransmog, /*NYI*/ + CriteriaType::HonorLevelIncrease, + //CriteriaType::AccountHonorLevelReached, /*NYI*/ + CriteriaType::ReachMaxLevel, + //CriteriaType::MemorizeSpell, /*NYI*/ + //CriteriaType::LearnTransmogIllusion, /*NYI*/ + //CriteriaType::MythicPlusRatingAttained, /*NYI*/ + //CriteriaType::MythicPlusDisplaySeasonEnded, /*NYI*/ + //CriteriaType::CompleteTrackingQuest, /*NYI*/ + //CriteriaType::WarbandBankTabPurchased, /*NYI*/ + CriteriaType::LearnTaxiNode, + + CriteriaType::EarnAchievementPoints, + CriteriaType::BattlePetAchievementPointsEarned, + CriteriaType::EarnAchievement // criteria possibly completed by retroactive scan, must be last + }; + + return Types; +} |
