Core/Achievements: Fix CriteriaTypes related to areas and zones
Port From (https://github.com/TrinityCore/TrinityCore/commit/10b06ff50f77cc0516c5f17adffef8eb75f1d555)
This commit is contained in:
@@ -666,8 +666,8 @@ namespace Framework.Constants
|
||||
BattlePetReachLevel = 160, // (Account Only) Battle pet has reached level {#Level}
|
||||
PlayerObtainPetThroughBattle = 161, /*NYI*/ // (Player) Obtain a pet through battle
|
||||
ActivelyEarnPetLevel = 162, // (Player) Actively earn level {#Level} with a pet by a player
|
||||
EnterArea = 163, /*NYI*/ // Enter Map Area "{AreaTable}"
|
||||
LeaveArea = 164, /*NYI*/ // Leave Map Area "{AreaTable}"
|
||||
EnterArea = 163, // Enter Map Area "{AreaTable}"
|
||||
LeaveArea = 164, // Leave Map Area "{AreaTable}"
|
||||
DefeatDungeonEncounter = 165, /*NYI*/ // Defeat Encounter "{DungeonEncounter}"
|
||||
PlaceAnyGarrisonBuilding = 166, /*NYI*/ // Garrison Building: Place any
|
||||
PlaceGarrisonBuilding = 167, // Garrison Building: Place "{GarrBuilding}"
|
||||
@@ -729,7 +729,7 @@ namespace Framework.Constants
|
||||
LearnTransmogIllusion = 223, /*NYI*/ // Learn Transmog Illusion
|
||||
LearnAnyTransmogIllusion = 224, /*NYI*/ // Learn Any Transmog Illusion
|
||||
EnterTopLevelArea = 225, // Enter Top Level Map Area "{AreaTable}"
|
||||
LeaveTopLevelArea = 226, /*NYI*/ // Leave Top Level Map Area "{AreaTable}"
|
||||
LeaveTopLevelArea = 226, // Leave Top Level Map Area "{AreaTable}"
|
||||
SocketGarrisonTalent = 227, /*NYI*/ // Socket Garrison Talent {GarrTalent}
|
||||
SocketAnySoulbindConduit = 228, /*NYI*/ // Socket Any Soulbind Conduit
|
||||
ObtainAnyItemWithCurrencyValue = 229, /*NYI*/ // Obtain Any Item With Currency Value "{CurrencyTypes}"
|
||||
|
||||
@@ -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;
|
||||
}
|
||||
|
||||
@@ -134,13 +134,17 @@ namespace Game.Entities
|
||||
|
||||
PushQuests();
|
||||
|
||||
UpdateCriteria(CriteriaType.EnterTopLevelArea, newArea);
|
||||
|
||||
UpdateMountCapability();
|
||||
|
||||
if ((oldAreaEntry != null && oldAreaEntry.GetFlags2().HasFlag(AreaFlags2.UseSubzoneForChatChannel))
|
||||
|| (area != null && area.GetFlags2().HasFlag(AreaFlags2.UseSubzoneForChatChannel)))
|
||||
UpdateLocalChannels(newArea);
|
||||
|
||||
if (oldArea != newArea)
|
||||
{
|
||||
UpdateCriteria(CriteriaType.EnterArea, newArea);
|
||||
UpdateCriteria(CriteriaType.LeaveArea, oldArea);
|
||||
}
|
||||
}
|
||||
|
||||
public void UpdateZone(uint newZone, uint newArea)
|
||||
@@ -223,6 +227,9 @@ namespace Game.Entities
|
||||
Guild guild = GetGuild();
|
||||
if (guild != null)
|
||||
guild.UpdateMemberData(this, GuildMemberData.ZoneId, newZone);
|
||||
|
||||
UpdateCriteria(CriteriaType.EnterTopLevelArea, newZone);
|
||||
UpdateCriteria(CriteriaType.LeaveTopLevelArea, oldZone);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user