Core/Achievements: Implemented DefeatDungeonEncounter and DefeatDungeonEncounterWhileElegibleForLoot criteria types

Port From (https://github.com/TrinityCore/TrinityCore/commit/765f86fdc001ce352a706d2950197b1007d9afce)
This commit is contained in:
hondacrx
2024-02-03 11:09:53 -05:00
parent 52ea57d5cf
commit d0cd2aae8a
3 changed files with 19 additions and 4 deletions
+11 -2
View File
@@ -126,8 +126,10 @@ namespace Game.Achievements
case CriteriaType.PlayerTriggerGameEvent:
case CriteriaType.Login:
case CriteriaType.AnyoneTriggerGameEventScenario:
case CriteriaType.DefeatDungeonEncounterWhileElegibleForLoot:
case CriteriaType.BattlePetReachLevel:
case CriteriaType.ActivelyEarnPetLevel:
case CriteriaType.DefeatDungeonEncounter:
case CriteriaType.PlaceGarrisonBuilding:
case CriteriaType.ActivateAnyGarrisonBuilding:
case CriteriaType.HonorLevelIncrease:
@@ -385,7 +387,6 @@ namespace Game.Achievements
case CriteriaType.AccountObtainPetThroughBattle:
case CriteriaType.WinPetBattle:
case CriteriaType.PlayerObtainPetThroughBattle:
case CriteriaType.DefeatDungeonEncounter:
case CriteriaType.ActivateGarrisonBuilding:
case CriteriaType.UpgradeGarrison:
case CriteriaType.StartAnyGarrisonMissionWithFollowerType:
@@ -409,7 +410,6 @@ namespace Game.Achievements
case CriteriaType.BattlePetAchievementPointsEarned:
case CriteriaType.ReleasedSpirit:
case CriteriaType.AccountKnownPet:
case CriteriaType.DefeatDungeonEncounterWhileElegibleForLoot:
case CriteriaType.CompletedLFGDungeon:
case CriteriaType.KickInitiatorInLFGDungeon:
case CriteriaType.KickVoterInLFGDungeon:
@@ -781,6 +781,7 @@ namespace Game.Achievements
case CriteriaType.CatchFishInFishingHole:
case CriteriaType.LearnSpellFromSkillLine:
case CriteriaType.WinDuel:
case CriteriaType.DefeatDungeonEncounterWhileElegibleForLoot:
case CriteriaType.GetLootByType:
case CriteriaType.LearnTradeskillSkillLine:
case CriteriaType.CompletedLFGDungeonWithStrangers:
@@ -790,6 +791,7 @@ namespace Game.Achievements
case CriteriaType.UniquePetsOwned:
case CriteriaType.BattlePetReachLevel:
case CriteriaType.ActivelyEarnPetLevel:
case CriteriaType.DefeatDungeonEncounter:
case CriteriaType.LearnAnyTransmogInSlot:
case CriteriaType.ParagonLevelIncreaseWithFaction:
case CriteriaType.PlayerHasEarnedHonor:
@@ -1174,6 +1176,11 @@ namespace Game.Achievements
break;
case CriteriaType.EarnTeamArenaRating:
return false;
case CriteriaType.DefeatDungeonEncounterWhileElegibleForLoot:
case CriteriaType.DefeatDungeonEncounter:
if (miscValue1 == 0 || miscValue1 != criteria.Entry.Asset)
return false;
break;
case CriteriaType.PlaceGarrisonBuilding:
case CriteriaType.ActivateGarrisonBuilding:
if (miscValue1 != criteria.Entry.Asset)
@@ -4068,9 +4075,11 @@ namespace Game.Achievements
case CriteriaType.GainAura:
case CriteriaType.CatchFishInFishingHole:
case CriteriaType.LearnSpellFromSkillLine:
case CriteriaType.DefeatDungeonEncounterWhileElegibleForLoot:
case CriteriaType.GetLootByType:
case CriteriaType.LandTargetedSpellOnTarget:
case CriteriaType.LearnTradeskillSkillLine:
case CriteriaType.DefeatDungeonEncounter:
return true;
default:
return false;
@@ -384,6 +384,12 @@ namespace Game.Maps
dungeonEncounter = bossInfo.GetDungeonEncounterForDifficulty(instance.GetDifficultyID());
if (dungeonEncounter != null)
{
instance.DoOnPlayers(player =>
{
if (!player.IsLockedToDungeonEncounter(dungeonEncounter.Id))
player.UpdateCriteria(CriteriaType.DefeatDungeonEncounterWhileElegibleForLoot, dungeonEncounter.Id);
});
DoUpdateCriteria(CriteriaType.DefeatDungeonEncounter, dungeonEncounter.Id);
SendBossKillCredit(dungeonEncounter.Id);
if (dungeonEncounter.CompleteWorldStateID != 0)