Core/Achievements: Reduce the list of criteria types updated on login
* Implemented CriteriaType::ReachMaxLevel * Corrected implementations for CriteriaType::ReachRenownLevel and CriteriaType::LearnTaxiNode Port From (https://github.com/TrinityCore/TrinityCore/commit/6da1679cbfdc56cd5f1cab7148f645916bccecc1)
This commit is contained in:
@@ -613,7 +613,7 @@ namespace Framework.Constants
|
||||
TotalFactionsEncountered = 89, // Total factions encountered
|
||||
LootAnyItem = 90, // Loot any item
|
||||
ObtainAnyItem = 91, // Obtain any item
|
||||
AnyoneTriggerGameEventScenario = 92, /*NYI*/ // Anyone will Trigger game event "{GameEvents}" (Scenario Only)
|
||||
AnyoneTriggerGameEventScenario = 92, // Anyone will Trigger game event "{GameEvents}" (Scenario Only)
|
||||
RollAnyNeed = 93, // Roll any number on need
|
||||
RollAnyGreed = 94, // Roll any number on greed
|
||||
ReleasedSpirit = 95, /*NYI*/ // Released Spirit
|
||||
@@ -742,7 +742,7 @@ namespace Framework.Constants
|
||||
CompleteAnyReplayQuest = 218, // Complete Any Replay Quest
|
||||
BuyItemsFromVendors = 219, // Buy items from vendors
|
||||
SellItemsToVendors = 220, // Sell items to vendors
|
||||
ReachMaxLevel = 221, /*NYI*/ // Reach Max Level
|
||||
ReachMaxLevel = 221, // Reach Max Level
|
||||
MemorizeSpell = 222, /*NYI*/ // Memorize Spell "{Spell}"
|
||||
LearnTransmogIllusion = 223, /*NYI*/ // Learn Transmog Illusion
|
||||
LearnAnyTransmogIllusion = 224, /*NYI*/ // Learn Any Transmog Illusion
|
||||
|
||||
@@ -31,8 +31,8 @@ namespace Game.Achievements
|
||||
public void CheckAllAchievementCriteria(Player referencePlayer)
|
||||
{
|
||||
// suppress sending packets
|
||||
for (CriteriaType i = 0; i < CriteriaType.Count; ++i)
|
||||
UpdateCriteria(i, 0, 0, 0, null, referencePlayer);
|
||||
foreach (CriteriaType criteriaType in CriteriaManager.GetRetroactivelyUpdateableCriteriaTypes())
|
||||
UpdateCriteria(criteriaType, 0, 0, 0, null, referencePlayer);
|
||||
}
|
||||
|
||||
public bool HasAchieved(uint achievementId)
|
||||
|
||||
@@ -144,6 +144,8 @@ namespace Game.Achievements
|
||||
case CriteriaType.CompleteAnyReplayQuest:
|
||||
case CriteriaType.BuyItemsFromVendors:
|
||||
case CriteriaType.SellItemsToVendors:
|
||||
case CriteriaType.ReachMaxLevel:
|
||||
case CriteriaType.LearnTaxiNode:
|
||||
SetCriteriaProgress(criteria, 1, referencePlayer, ProgressType.Accumulate);
|
||||
break;
|
||||
// std case: increment at miscValue1
|
||||
@@ -815,6 +817,8 @@ namespace Game.Achievements
|
||||
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:
|
||||
@@ -833,6 +837,7 @@ namespace Game.Achievements
|
||||
case CriteriaType.PrestigeLevelIncrease:
|
||||
case CriteriaType.ActivelyReachLevel:
|
||||
case CriteriaType.CollectTransmogSetFromGroup:
|
||||
case CriteriaType.ReachMaxLevel:
|
||||
case CriteriaType.EnterTopLevelArea:
|
||||
case CriteriaType.LeaveTopLevelArea:
|
||||
return progress.Counter >= 1;
|
||||
@@ -1173,6 +1178,7 @@ namespace Game.Achievements
|
||||
return false;
|
||||
break;
|
||||
case CriteriaType.CurrencyGained:
|
||||
case CriteriaType.ReachRenownLevel:
|
||||
if (miscValue1 == 0 || miscValue2 == 0 || (long)miscValue2 < 0
|
||||
|| miscValue1 != criteria.Entry.Asset)
|
||||
return false;
|
||||
@@ -1229,6 +1235,10 @@ namespace Game.Achievements
|
||||
if (miscValue1 == 0 || miscValue1 != criteria.Entry.Asset)
|
||||
return false;
|
||||
break;
|
||||
case CriteriaType.LearnTaxiNode:
|
||||
if (miscValue1 != criteria.Entry.Asset)
|
||||
return false;
|
||||
break;
|
||||
default:
|
||||
break;
|
||||
}
|
||||
@@ -4086,6 +4096,62 @@ namespace Game.Achievements
|
||||
return _criteriaModifiers.LookupByKey(modifierTreeId);
|
||||
}
|
||||
|
||||
public static CriteriaType[] GetRetroactivelyUpdateableCriteriaTypes() =>
|
||||
[
|
||||
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
|
||||
];
|
||||
|
||||
bool IsCriteriaTypeStoredByAsset(CriteriaType type)
|
||||
{
|
||||
switch (type)
|
||||
@@ -4123,6 +4189,8 @@ namespace Game.Achievements
|
||||
case CriteriaType.LandTargetedSpellOnTarget:
|
||||
case CriteriaType.LearnTradeskillSkillLine:
|
||||
case CriteriaType.DefeatDungeonEncounter:
|
||||
case CriteriaType.LearnToy:
|
||||
case CriteriaType.LearnAnyTransmog:
|
||||
return true;
|
||||
default:
|
||||
return false;
|
||||
|
||||
@@ -5453,6 +5453,8 @@ namespace Game.Entities
|
||||
UpdateCriteria(CriteriaType.ActivelyReachLevel, level);
|
||||
if (level > oldLevel)
|
||||
UpdateCriteria(CriteriaType.GainLevels, level - oldLevel);
|
||||
if (IsMaxLevel())
|
||||
UpdateCriteria(CriteriaType.ReachMaxLevel);
|
||||
|
||||
PushQuests();
|
||||
|
||||
|
||||
@@ -22,8 +22,8 @@ namespace Game
|
||||
public void CheckAllQuestObjectiveCriteria(Player referencePlayer)
|
||||
{
|
||||
// suppress sending packets
|
||||
for (CriteriaType i = 0; i < CriteriaType.Count; ++i)
|
||||
UpdateCriteria(i, 0, 0, 0, null, referencePlayer);
|
||||
foreach (CriteriaType criteriaType in CriteriaManager.GetRetroactivelyUpdateableCriteriaTypes())
|
||||
UpdateCriteria(criteriaType, 0, 0, 0, null, referencePlayer);
|
||||
}
|
||||
|
||||
public override void Reset()
|
||||
|
||||
Reference in New Issue
Block a user