Core/Achievements: Implemented criteria flag "Reset on Start" and removed manual script workarounds for it

Port From (https://github.com/TrinityCore/TrinityCore/commit/e1abd8256be38c299156264424999c0108613198)
This commit is contained in:
hondacrx
2022-05-31 19:54:05 -04:00
parent adfca19d4c
commit 4b0b5df152
3 changed files with 3 additions and 7 deletions
+1 -1
View File
@@ -493,7 +493,7 @@ namespace Game.Achievements
bool canStart = false;
foreach (CriteriaTree tree in trees)
{
if (!_timeCriteriaTrees.ContainsKey(tree.Id) && !IsCompletedCriteriaTree(tree))
if ((!_timeCriteriaTrees.ContainsKey(tree.Id) || criteria.Entry.GetFlags().HasFlag(CriteriaFlags.ResetOnStart)) && !IsCompletedCriteriaTree(tree))
{
// Start the timer
if (criteria.Entry.StartTimer * Time.InMilliseconds > timeLost)
@@ -496,6 +496,8 @@ namespace Game.DataStorage
public byte Flags;
public ushort EligibilityWorldStateID;
public byte EligibilityWorldStateValue;
public CriteriaFlags GetFlags() => (CriteriaFlags)Flags;
}
public sealed class CriteriaTreeRecord
@@ -606,12 +606,6 @@ namespace Game.Maps
instance.DoOnPlayers(player => player.StartCriteriaTimer(startEvent, entry));
}
// Stop timed achievement for all players in instance
public void DoStopCriteriaTimer(CriteriaStartEvent startEvent, uint entry)
{
instance.DoOnPlayers(player => player.RemoveCriteriaTimer(startEvent, entry));
}
// Remove Auras due to Spell on all players in instance
public void DoRemoveAurasDueToSpellOnPlayers(uint spell, bool includePets = false, bool includeControlled = false)
{