Core/Achievements: Fix CriteriaTypes related to areas and zones

Port From (https://github.com/TrinityCore/TrinityCore/commit/10b06ff50f77cc0516c5f17adffef8eb75f1d555)
This commit is contained in:
hondacrx
2024-02-01 10:55:35 -05:00
parent c00a8d32ea
commit fde94074be
3 changed files with 37 additions and 17 deletions
+25 -12
View File
@@ -133,11 +133,9 @@ namespace Game.Achievements
case CriteriaType.HonorLevelIncrease:
case CriteriaType.PrestigeLevelIncrease:
case CriteriaType.LearnAnyTransmogInSlot:
case CriteriaType.CollectTransmogSetFromGroup:
case CriteriaType.CompleteAnyReplayQuest:
case CriteriaType.BuyItemsFromVendors:
case CriteriaType.SellItemsToVendors:
case CriteriaType.EnterTopLevelArea:
SetCriteriaProgress(criteria, 1, referencePlayer, ProgressType.Accumulate);
break;
// std case: increment at miscValue1
@@ -246,16 +244,21 @@ namespace Game.Achievements
// miscValue1 is the ingame fallheight*100 as stored in dbc
SetCriteriaProgress(criteria, miscValue1, referencePlayer);
break;
case CriteriaType.EarnAchievement:
case CriteriaType.CompleteQuest:
case CriteriaType.LearnOrKnowSpell:
case CriteriaType.RevealWorldMapOverlay:
case CriteriaType.GotHaircut:
case CriteriaType.EquipItemInSlot:
case CriteriaType.EquipItem:
case CriteriaType.EarnAchievement:
case CriteriaType.RecruitGarrisonFollower:
case CriteriaType.LearnedNewPet:
case CriteriaType.EnterArea:
case CriteriaType.LeaveArea:
case CriteriaType.RecruitGarrisonFollower:
case CriteriaType.ActivelyReachLevel:
case CriteriaType.CollectTransmogSetFromGroup:
case CriteriaType.EnterTopLevelArea:
case CriteriaType.LeaveTopLevelArea:
SetCriteriaProgress(criteria, 1, referencePlayer);
break;
case CriteriaType.BankSlotsPurchased:
@@ -381,8 +384,6 @@ namespace Game.Achievements
case CriteriaType.AccountObtainPetThroughBattle:
case CriteriaType.WinPetBattle:
case CriteriaType.PlayerObtainPetThroughBattle:
case CriteriaType.EnterArea:
case CriteriaType.LeaveArea:
case CriteriaType.DefeatDungeonEncounter:
case CriteriaType.ActivateGarrisonBuilding:
case CriteriaType.UpgradeGarrison:
@@ -767,14 +768,11 @@ namespace Game.Achievements
case CriteriaType.BankSlotsPurchased:
case CriteriaType.ReputationGained:
case CriteriaType.TotalExaltedFactions:
case CriteriaType.GotHaircut:
case CriteriaType.EquipItemInSlot:
case CriteriaType.RollNeed:
case CriteriaType.RollGreed:
case CriteriaType.DeliverKillingBlowToClass:
case CriteriaType.DeliverKillingBlowToRace:
case CriteriaType.DoEmote:
case CriteriaType.EquipItem:
case CriteriaType.MoneyEarnedFromQuesting:
case CriteriaType.MoneyLootedFromCreatures:
case CriteriaType.UseGameobject:
@@ -801,18 +799,24 @@ namespace Game.Achievements
case CriteriaType.CompleteAnyReplayQuest:
case CriteriaType.BuyItemsFromVendors:
case CriteriaType.SellItemsToVendors:
case CriteriaType.EnterTopLevelArea:
return progress.Counter >= requiredAmount;
case CriteriaType.EarnAchievement:
case CriteriaType.CompleteQuest:
case CriteriaType.LearnOrKnowSpell:
case CriteriaType.RevealWorldMapOverlay:
case CriteriaType.RecruitGarrisonFollower:
case CriteriaType.GotHaircut:
case CriteriaType.EquipItemInSlot:
case CriteriaType.EquipItem:
case CriteriaType.LearnedNewPet:
case CriteriaType.HonorLevelIncrease:
case CriteriaType.PrestigeLevelIncrease:
case CriteriaType.EnterArea:
case CriteriaType.LeaveArea:
case CriteriaType.RecruitGarrisonFollower:
case CriteriaType.ActivelyReachLevel:
case CriteriaType.CollectTransmogSetFromGroup:
case CriteriaType.EnterTopLevelArea:
case CriteriaType.LeaveTopLevelArea:
return progress.Counter >= 1;
case CriteriaType.AchieveSkillStep:
return progress.Counter >= (requiredAmount * 75);
@@ -1148,10 +1152,14 @@ namespace Game.Achievements
return false;
break;
case CriteriaType.PVPKillInArea:
case CriteriaType.EnterTopLevelArea:
case CriteriaType.EnterArea:
if (miscValue1 == 0 || !Global.DB2Mgr.IsInArea((uint)miscValue1, criteria.Entry.Asset))
return false;
break;
case CriteriaType.LeaveArea:
if (miscValue1 == 0 || Global.DB2Mgr.IsInArea((uint)miscValue1, criteria.Entry.Asset))
return false;
break;
case CriteriaType.CurrencyGained:
if (miscValue1 == 0 || miscValue2 == 0 || (long)miscValue2 < 0
|| miscValue1 != criteria.Entry.Asset)
@@ -1185,6 +1193,11 @@ namespace Game.Achievements
if (miscValue1 == 0 || miscValue1 != criteria.Entry.Asset)
return false;
break;
case CriteriaType.EnterTopLevelArea:
case CriteriaType.LeaveTopLevelArea:
if (miscValue1 == 0 || miscValue1 != criteria.Entry.Asset)
return false;
break;
default:
break;
}