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.cpp82
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;
+}