Core/Achievements: Fixed achievement criteria StartEvent and FailEvent

* Criteria using StartEvent cannot be updated without that event triggering first (not only for timed achievements)
* Implemented most StartEvent and FailEvent types
* Fixed saving criteria removed by RemoveCriteriaProgress
Port From (https://github.com/TrinityCore/TrinityCore/commit/41a20b1e4008d450d075847ef1fe367f0e3a240f)
This commit is contained in:
hondacrx
2024-01-30 10:22:01 -05:00
parent 902b217d88
commit a1cb1d95ee
16 changed files with 148 additions and 211 deletions
+3 -2
View File
@@ -416,7 +416,7 @@ namespace Game.Entities
}
}
m_achievementSys.UpdateTimedCriteria(diff);
m_achievementSys.UpdateTimedCriteria(TimeSpan.FromMilliseconds(diff));
if (HasUnitState(UnitState.MeleeAttacking) && !HasUnitState(UnitState.Casting | UnitState.Charging))
{
@@ -662,7 +662,7 @@ namespace Game.Entities
UpdateCriteria(CriteriaType.DieInInstance, 1);
// reset all death criterias
ResetCriteria(CriteriaFailEvent.Death, 0);
FailCriteria(CriteriaFailEvent.Death, 0);
}
base.SetDeathState(s);
@@ -5365,6 +5365,7 @@ namespace Game.Entities
DB.Characters.CommitTransaction(trans);
}
StartCriteria(CriteriaStartEvent.ReachLevel, level);
UpdateCriteria(CriteriaType.ReachLevel);
UpdateCriteria(CriteriaType.ActivelyReachLevel, level);