Core/Achievements: Minor fixes

Port From (https://github.com/TrinityCore/TrinityCore/commit/3e833739071a689dc34e33f7a511d8cc50e00b94)
This commit is contained in:
hondacrx
2020-05-22 14:11:32 -04:00
parent 13cb4fb0ee
commit 3b44a21d76
3 changed files with 91 additions and 46 deletions
+10 -35
View File
@@ -1596,6 +1596,7 @@ namespace Game.Achievements
return false;
break;
case CriteriaAdditionalCondition.HasAchievement: // 86
case CriteriaAdditionalCondition.HasAchievementOnCharacter: // 87
if (!referencePlayer.HasAchieved(reqValue))
return false;
break;
@@ -2498,12 +2499,9 @@ namespace Game.Achievements
// Build tree
foreach (var treeNode in _criteriaModifiers.Values)
{
if (treeNode.Entry.Parent == 0)
continue;
var parent = _criteriaModifiers.LookupByKey(treeNode.Entry.Parent);
if (parent != null)
parent.Children.Add(treeNode);
ModifierTreeNode parentNode = _criteriaModifiers.LookupByKey(treeNode.Entry.Parent);
if (parentNode != null)
parentNode.Children.Add(treeNode);
}
Log.outInfo(LogFilter.ServerLoading, "Loaded {0} criteria modifiers in {1} ms", _criteriaModifiers.Count, Time.GetMSTimeDiffToNow(oldMSTime));
@@ -2535,12 +2533,6 @@ namespace Game.Achievements
{
uint oldMSTime = Time.GetMSTime();
if (CliDB.CriteriaTreeStorage.Empty())
{
Log.outError(LogFilter.ServerLoading, "Loaded 0 criteria.");
return;
}
Dictionary<uint /*criteriaTreeID*/, AchievementRecord> achievementCriteriaTreeIds = new Dictionary<uint, AchievementRecord>();
foreach (AchievementRecord achievement in CliDB.AchievementStorage.Values)
if (achievement.CriteriaTree != 0)
@@ -2589,25 +2581,11 @@ namespace Game.Achievements
// Build tree
foreach (var pair in _criteriaTrees)
{
if (pair.Value.Entry.Parent == 0)
continue;
var parent = _criteriaTrees.LookupByKey(pair.Value.Entry.Parent);
CriteriaTree parent = _criteriaTrees.LookupByKey(pair.Value.Entry.Parent);
if (parent != null)
{
parent.Children.Add(pair.Value);
while (parent != null)
{
var cur = parent;
parent = _criteriaTrees.LookupByKey(parent.Entry.Parent);
if (parent == null)
{
if (CliDB.CriteriaStorage.ContainsKey(pair.Value.Entry.CriteriaID))
_criteriaTreeByCriteria.Add(pair.Value.Entry.CriteriaID, cur);
}
}
}
else if (CliDB.CriteriaStorage.ContainsKey(pair.Value.Entry.CriteriaID))
if (CliDB.CriteriaStorage.HasRecord(pair.Value.Entry.CriteriaID))
_criteriaTreeByCriteria.Add(pair.Value.Entry.CriteriaID, pair.Value);
}
@@ -2633,14 +2611,14 @@ namespace Game.Achievements
Criteria criteria = new Criteria();
criteria.Id = criteriaEntry.Id;
criteria.Entry = criteriaEntry;
var mod = _criteriaModifiers.LookupByKey(criteriaEntry.ModifierTreeId);
if (mod != null)
criteria.Modifier = mod;
criteria.Modifier = _criteriaModifiers.LookupByKey(criteriaEntry.ModifierTreeId);
_criteria[criteria.Id] = criteria;
foreach (CriteriaTree tree in treeList)
{
tree.Criteria = criteria;
AchievementRecord achievement = tree.Achievement;
if (achievement != null)
{
@@ -2688,9 +2666,6 @@ namespace Game.Achievements
_criteriasByFailEvent[criteriaEntry.FailEvent].Add((int)criteriaEntry.FailAsset, criteria);
}
foreach (var p in _criteriaTrees)
p.Value.Criteria = GetCriteria(p.Value.Entry.CriteriaID);
Log.outInfo(LogFilter.ServerLoading, $"Loaded {criterias} criteria, {guildCriterias} guild criteria, {scenarioCriterias} scenario criteria and {questObjectiveCriterias} quest objective criteria in {Time.GetMSTimeDiffToNow(oldMSTime)} ms.");
}