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:
@@ -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)
|
||||
{
|
||||
|
||||
Reference in New Issue
Block a user