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
+6 -2
View File
@@ -194,6 +194,8 @@ namespace Game.Entities
if (_garrison != null)
_garrison.ResetFollowerActivationLimit();
FailCriteria(CriteriaFailEvent.DailyQuestsCleared, 0);
}
public void ResetWeeklyQuestStatus()
@@ -837,7 +839,7 @@ namespace Game.Entities
m_QuestStatusSave[questId] = QuestSaveType.Default;
StartCriteriaTimer(CriteriaStartEvent.AcceptQuest, questId);
StartCriteria(CriteriaStartEvent.AcceptQuest, questId);
SendQuestUpdate(questId);
@@ -1146,6 +1148,7 @@ namespace Game.Entities
SetDailyQuestStatus(questId);
if (quest.IsDaily())
{
StartCriteria(CriteriaStartEvent.CompleteDailyQuest, 0);
UpdateCriteria(CriteriaType.CompleteDailyQuest, questId);
UpdateCriteria(CriteriaType.CompleteAnyDailyQuestPerDay, questId);
}
@@ -2393,7 +2396,7 @@ namespace Game.Entities
real_entry = killed.GetEntry();
}
StartCriteriaTimer(CriteriaStartEvent.KillNPC, real_entry); // MUST BE CALLED FIRST
StartCriteria(CriteriaStartEvent.KillNPC, real_entry); // MUST BE CALLED FIRST
UpdateCriteria(CriteriaType.KillCreature, real_entry, addKillCount, 0, killed);
UpdateQuestObjectiveProgress(QuestObjectiveType.Monster, (int)entry, 1, guid);
@@ -2401,6 +2404,7 @@ namespace Game.Entities
public void KilledPlayerCredit(ObjectGuid victimGuid)
{
StartCriteria(CriteriaStartEvent.KillPlayer, 0);
UpdateQuestObjectiveProgress(QuestObjectiveType.PlayerKills, 0, 1, victimGuid);
}