From c3e4f234b655acc5e2c51a554183c59d81eaa6e9 Mon Sep 17 00:00:00 2001 From: Hondacrx Date: Sat, 24 Aug 2024 21:09:13 -0400 Subject: [PATCH] Core/Criteria: Implemented CriteriaType ParticipateInArena Port From (https://github.com/TrinityCore/TrinityCore/commit/ef22003a563b9e79a38ae999f05ce14b876513b8) --- Source/Framework/Constants/AchievementConst.cs | 2 +- Source/Game/Achievements/CriteriaHandler.cs | 3 ++- Source/Game/Arenas/Arena.cs | 2 ++ 3 files changed, 5 insertions(+), 2 deletions(-) diff --git a/Source/Framework/Constants/AchievementConst.cs b/Source/Framework/Constants/AchievementConst.cs index 57579a3dd..525e99d6c 100644 --- a/Source/Framework/Constants/AchievementConst.cs +++ b/Source/Framework/Constants/AchievementConst.cs @@ -541,7 +541,7 @@ namespace Framework.Constants TrackedWorldStateUIModified = 30, // Tracked WorldStateUI value "{WorldStateUI}" is modified PVPKillInArea = 31, // Kill someone in PVP in "{AreaTable}" WinArena = 32, // Win arena "{Map}" - ParticipateInArena = 33, /*NYI*/ // Participate in arena "{Map}" + ParticipateInArena = 33, // Participate in arena "{Map}" LearnOrKnowSpell = 34, // Learn or Know spell "{Spell}" EarnHonorableKill = 35, // Earn an honorable kill AcquireItem = 36, // Acquire item "{Item}" diff --git a/Source/Game/Achievements/CriteriaHandler.cs b/Source/Game/Achievements/CriteriaHandler.cs index 4a5c278ad..9d411b287 100644 --- a/Source/Game/Achievements/CriteriaHandler.cs +++ b/Source/Game/Achievements/CriteriaHandler.cs @@ -123,6 +123,7 @@ namespace Game.Achievements case CriteriaType.DeliveredKillingBlow: case CriteriaType.PVPKillInArea: case CriteriaType.WinArena: // This also behaves like CriteriaType.WinAnyRankedArena + case CriteriaType.ParticipateInArena: case CriteriaType.PlayerTriggerGameEvent: case CriteriaType.Login: case CriteriaType.AnyoneTriggerGameEventScenario: @@ -360,7 +361,6 @@ namespace Game.Achievements break; // FIXME: not triggered in code as result, need to implement case CriteriaType.RunInstance: - case CriteriaType.ParticipateInArena: case CriteriaType.EarnTeamArenaRating: case CriteriaType.EarnTitle: case CriteriaType.MoneySpentOnGuildRepair: @@ -828,6 +828,7 @@ namespace Game.Achievements case CriteriaType.EarnAchievementPoints: return progress.Counter >= 9000; case CriteriaType.WinArena: + case CriteriaType.ParticipateInArena: return requiredAmount != 0 && progress.Counter >= requiredAmount; case CriteriaType.Login: return true; diff --git a/Source/Game/Arenas/Arena.cs b/Source/Game/Arenas/Arena.cs index d540f6a0c..02198d744 100644 --- a/Source/Game/Arenas/Arena.cs +++ b/Source/Game/Arenas/Arena.cs @@ -229,6 +229,8 @@ namespace Game.Arenas if (player == null) continue; + player.UpdateCriteria(CriteriaType.ParticipateInArena, GetMapId()); + // per player calculation if (team == winner) {