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
@@ -605,7 +605,7 @@ namespace Framework.Constants
RollAnyGreed = 94, // Roll any number on greed
ReleasedSpirit = 95, /*NYI*/ // Released Spirit
AccountKnownPet = 96, /*NYI*/ // Account knows pet "{Creature}" (Backtracked)
DefeatDungeonEncounterWhileElegibleForLoot = 97, /*NYI*/ // Defeat Encounter "{DungeonEncounter}" While Eligible For Loot
DefeatDungeonEncounterWhileElegibleForLoot = 97, // Defeat Encounter "{DungeonEncounter}" While Eligible For Loot
// UNUSED 18{} = 98, // Unused
// UNUSED 19{} = 99, // Unused
// UNUSED 20{} = 100, // Unused
@@ -673,7 +673,7 @@ namespace Framework.Constants
ActivelyEarnPetLevel = 162, // (Player) Actively earn level {#Level} with a pet by a player
EnterArea = 163, // Enter Map Area "{AreaTable}"
LeaveArea = 164, // Leave Map Area "{AreaTable}"
DefeatDungeonEncounter = 165, /*NYI*/ // Defeat Encounter "{DungeonEncounter}"
DefeatDungeonEncounter = 165, // Defeat Encounter "{DungeonEncounter}"
PlaceAnyGarrisonBuilding = 166, /*NYI*/ // Garrison Building: Place any
PlaceGarrisonBuilding = 167, // Garrison Building: Place "{GarrBuilding}"
ActivateAnyGarrisonBuilding = 168, // Garrison Building: Activate any
+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)