diff --git a/Source/Game/Achievements/CriteriaHandler.cs b/Source/Game/Achievements/CriteriaHandler.cs index 467d9e9e9..e89a2cfba 100644 --- a/Source/Game/Achievements/CriteriaHandler.cs +++ b/Source/Game/Achievements/CriteriaHandler.cs @@ -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) diff --git a/Source/Game/DataStorage/Structs/C_Records.cs b/Source/Game/DataStorage/Structs/C_Records.cs index 274d92336..24fa4883b 100644 --- a/Source/Game/DataStorage/Structs/C_Records.cs +++ b/Source/Game/DataStorage/Structs/C_Records.cs @@ -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 diff --git a/Source/Game/Maps/Instances/InstanceScript.cs b/Source/Game/Maps/Instances/InstanceScript.cs index 456c4f669..281ba4fd5 100644 --- a/Source/Game/Maps/Instances/InstanceScript.cs +++ b/Source/Game/Maps/Instances/InstanceScript.cs @@ -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) {