From 62829e83c4ce891e79aa31a089d361afbc992355 Mon Sep 17 00:00:00 2001 From: Hondacrx Date: Sat, 24 Aug 2024 23:56:43 -0400 Subject: [PATCH] Core/Criteria: Implemented CompleteAnyScenario and CompleteScenario types Port From (https://github.com/TrinityCore/TrinityCore/commit/980ca4c65682657fecd13fc63fde63d5c92fab04) --- Source/Framework/Constants/AchievementConst.cs | 4 ++-- Source/Game/Achievements/CriteriaHandler.cs | 13 ++++++++++--- Source/Game/Scenarios/Scenario.cs | 6 ++++++ 3 files changed, 18 insertions(+), 5 deletions(-) diff --git a/Source/Framework/Constants/AchievementConst.cs b/Source/Framework/Constants/AchievementConst.cs index 234100a66..8dda7f624 100644 --- a/Source/Framework/Constants/AchievementConst.cs +++ b/Source/Framework/Constants/AchievementConst.cs @@ -659,8 +659,8 @@ namespace Framework.Constants KickVoterInLFRDungeon = 148, /*NYI*/ // Kicked in an LFR dungeon (voter) KickTargetInLFRDungeon = 149, /*NYI*/ // Kicked in an LFR dungeon (target) GroupedTankLeftEarlyInLFRDungeon = 150, /*NYI*/ // Grouped tank left early in an LFR dungeon - CompleteAnyScenario = 151, /*NYI*/ // Complete a Scenario - CompleteScenario = 152, /*NYI*/ // Complete scenario "{Scenario}" + CompleteAnyScenario = 151, // Complete a Scenario + CompleteScenario = 152, // Complete scenario "{Scenario}" EnterAreaTriggerWithActionSet = 153, /*NYI*/ // Enter area trigger "{AreaTriggerActionSet}" LeaveAreaTriggerWithActionSet = 154, /*NYI*/ // Leave area trigger "{AreaTriggerActionSet}" LearnedNewPet = 155, // (Account Only) Learned a new pet diff --git a/Source/Game/Achievements/CriteriaHandler.cs b/Source/Game/Achievements/CriteriaHandler.cs index dca8e0c3f..abfd0e939 100644 --- a/Source/Game/Achievements/CriteriaHandler.cs +++ b/Source/Game/Achievements/CriteriaHandler.cs @@ -128,6 +128,8 @@ namespace Game.Achievements case CriteriaType.Login: case CriteriaType.AnyoneTriggerGameEventScenario: case CriteriaType.DefeatDungeonEncounterWhileElegibleForLoot: + case CriteriaType.CompleteAnyScenario: + case CriteriaType.CompleteScenario: case CriteriaType.BattlePetReachLevel: case CriteriaType.ActivelyEarnPetLevel: case CriteriaType.DefeatDungeonEncounter: @@ -387,8 +389,6 @@ namespace Game.Achievements case CriteriaType.KickVoterInLFRDungeon: case CriteriaType.KickTargetInLFRDungeon: case CriteriaType.GroupedTankLeftEarlyInLFRDungeon: - case CriteriaType.CompleteAnyScenario: - case CriteriaType.CompleteScenario: case CriteriaType.AccountObtainPetThroughBattle: case CriteriaType.WinPetBattle: case CriteriaType.PlayerObtainPetThroughBattle: @@ -789,11 +789,13 @@ namespace Game.Achievements case CriteriaType.CompletedLFGDungeonWithStrangers: case CriteriaType.DeliveredKillingBlow: case CriteriaType.CurrencyGained: - case CriteriaType.PlaceGarrisonBuilding: + case CriteriaType.CompleteAnyScenario: + case CriteriaType.CompleteScenario: case CriteriaType.UniquePetsOwned: case CriteriaType.BattlePetReachLevel: case CriteriaType.ActivelyEarnPetLevel: case CriteriaType.DefeatDungeonEncounter: + case CriteriaType.PlaceGarrisonBuilding: case CriteriaType.LearnHeirloom: case CriteriaType.LearnAnyHeirloom: case CriteriaType.EarnArtifactXP: @@ -945,6 +947,7 @@ namespace Game.Achievements case CriteriaType.SellItemsToVendors: case CriteriaType.GainLevels: case CriteriaType.LearnAnyTransmog: + case CriteriaType.CompleteAnyScenario: if (miscValue1 == 0) return false; break; @@ -1210,6 +1213,10 @@ namespace Game.Achievements if (miscValue1 == 0 || miscValue1 != criteria.Entry.Asset) return false; break; + case CriteriaType.CompleteScenario: + if (miscValue1 != criteria.Entry.Asset) + return false; + break; default: break; } diff --git a/Source/Game/Scenarios/Scenario.cs b/Source/Game/Scenarios/Scenario.cs index bc7f40466..fd10f0946 100644 --- a/Source/Game/Scenarios/Scenario.cs +++ b/Source/Game/Scenarios/Scenario.cs @@ -91,6 +91,12 @@ namespace Game.Scenarios public virtual void CompleteScenario() { SendPacket(new ScenarioCompleted(_data.Entry.Id)); + + DoForAllPlayers(player => + { + player.UpdateCriteria(CriteriaType.CompleteAnyScenario, 1); + player.UpdateCriteria(CriteriaType.CompleteScenario, _data.Entry.Id); + }); } void SetStep(ScenarioStepRecord step)