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}
|
BattlePetReachLevel = 160, // (Account Only) Battle pet has reached level {#Level}
|
||||||
PlayerObtainPetThroughBattle = 161, /*NYI*/ // (Player) Obtain a pet through battle
|
PlayerObtainPetThroughBattle = 161, /*NYI*/ // (Player) Obtain a pet through battle
|
||||||
ActivelyEarnPetLevel = 162, // (Player) Actively earn level {#Level} with a pet by a player
|
ActivelyEarnPetLevel = 162, // (Player) Actively earn level {#Level} with a pet by a player
|
||||||
EnterArea = 163, /*NYI*/ // Enter Map Area "{AreaTable}"
|
EnterArea = 163, // Enter Map Area "{AreaTable}"
|
||||||
LeaveArea = 164, /*NYI*/ // Leave Map Area "{AreaTable}"
|
LeaveArea = 164, // Leave Map Area "{AreaTable}"
|
||||||
DefeatDungeonEncounter = 165, /*NYI*/ // Defeat Encounter "{DungeonEncounter}"
|
DefeatDungeonEncounter = 165, /*NYI*/ // Defeat Encounter "{DungeonEncounter}"
|
||||||
PlaceAnyGarrisonBuilding = 166, /*NYI*/ // Garrison Building: Place any
|
PlaceAnyGarrisonBuilding = 166, /*NYI*/ // Garrison Building: Place any
|
||||||
PlaceGarrisonBuilding = 167, // Garrison Building: Place "{GarrBuilding}"
|
PlaceGarrisonBuilding = 167, // Garrison Building: Place "{GarrBuilding}"
|
||||||
@@ -729,7 +729,7 @@ namespace Framework.Constants
|
|||||||
LearnTransmogIllusion = 223, /*NYI*/ // Learn Transmog Illusion
|
LearnTransmogIllusion = 223, /*NYI*/ // Learn Transmog Illusion
|
||||||
LearnAnyTransmogIllusion = 224, /*NYI*/ // Learn Any Transmog Illusion
|
LearnAnyTransmogIllusion = 224, /*NYI*/ // Learn Any Transmog Illusion
|
||||||
EnterTopLevelArea = 225, // Enter Top Level Map Area "{AreaTable}"
|
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}
|
SocketGarrisonTalent = 227, /*NYI*/ // Socket Garrison Talent {GarrTalent}
|
||||||
SocketAnySoulbindConduit = 228, /*NYI*/ // Socket Any Soulbind Conduit
|
SocketAnySoulbindConduit = 228, /*NYI*/ // Socket Any Soulbind Conduit
|
||||||
ObtainAnyItemWithCurrencyValue = 229, /*NYI*/ // Obtain Any Item With Currency Value "{CurrencyTypes}"
|
ObtainAnyItemWithCurrencyValue = 229, /*NYI*/ // Obtain Any Item With Currency Value "{CurrencyTypes}"
|
||||||
|
|||||||
@@ -133,11 +133,9 @@ namespace Game.Achievements
|
|||||||
case CriteriaType.HonorLevelIncrease:
|
case CriteriaType.HonorLevelIncrease:
|
||||||
case CriteriaType.PrestigeLevelIncrease:
|
case CriteriaType.PrestigeLevelIncrease:
|
||||||
case CriteriaType.LearnAnyTransmogInSlot:
|
case CriteriaType.LearnAnyTransmogInSlot:
|
||||||
case CriteriaType.CollectTransmogSetFromGroup:
|
|
||||||
case CriteriaType.CompleteAnyReplayQuest:
|
case CriteriaType.CompleteAnyReplayQuest:
|
||||||
case CriteriaType.BuyItemsFromVendors:
|
case CriteriaType.BuyItemsFromVendors:
|
||||||
case CriteriaType.SellItemsToVendors:
|
case CriteriaType.SellItemsToVendors:
|
||||||
case CriteriaType.EnterTopLevelArea:
|
|
||||||
SetCriteriaProgress(criteria, 1, referencePlayer, ProgressType.Accumulate);
|
SetCriteriaProgress(criteria, 1, referencePlayer, ProgressType.Accumulate);
|
||||||
break;
|
break;
|
||||||
// std case: increment at miscValue1
|
// std case: increment at miscValue1
|
||||||
@@ -246,16 +244,21 @@ namespace Game.Achievements
|
|||||||
// miscValue1 is the ingame fallheight*100 as stored in dbc
|
// miscValue1 is the ingame fallheight*100 as stored in dbc
|
||||||
SetCriteriaProgress(criteria, miscValue1, referencePlayer);
|
SetCriteriaProgress(criteria, miscValue1, referencePlayer);
|
||||||
break;
|
break;
|
||||||
|
case CriteriaType.EarnAchievement:
|
||||||
case CriteriaType.CompleteQuest:
|
case CriteriaType.CompleteQuest:
|
||||||
case CriteriaType.LearnOrKnowSpell:
|
case CriteriaType.LearnOrKnowSpell:
|
||||||
case CriteriaType.RevealWorldMapOverlay:
|
case CriteriaType.RevealWorldMapOverlay:
|
||||||
case CriteriaType.GotHaircut:
|
case CriteriaType.GotHaircut:
|
||||||
case CriteriaType.EquipItemInSlot:
|
case CriteriaType.EquipItemInSlot:
|
||||||
case CriteriaType.EquipItem:
|
case CriteriaType.EquipItem:
|
||||||
case CriteriaType.EarnAchievement:
|
|
||||||
case CriteriaType.RecruitGarrisonFollower:
|
|
||||||
case CriteriaType.LearnedNewPet:
|
case CriteriaType.LearnedNewPet:
|
||||||
|
case CriteriaType.EnterArea:
|
||||||
|
case CriteriaType.LeaveArea:
|
||||||
|
case CriteriaType.RecruitGarrisonFollower:
|
||||||
case CriteriaType.ActivelyReachLevel:
|
case CriteriaType.ActivelyReachLevel:
|
||||||
|
case CriteriaType.CollectTransmogSetFromGroup:
|
||||||
|
case CriteriaType.EnterTopLevelArea:
|
||||||
|
case CriteriaType.LeaveTopLevelArea:
|
||||||
SetCriteriaProgress(criteria, 1, referencePlayer);
|
SetCriteriaProgress(criteria, 1, referencePlayer);
|
||||||
break;
|
break;
|
||||||
case CriteriaType.BankSlotsPurchased:
|
case CriteriaType.BankSlotsPurchased:
|
||||||
@@ -381,8 +384,6 @@ namespace Game.Achievements
|
|||||||
case CriteriaType.AccountObtainPetThroughBattle:
|
case CriteriaType.AccountObtainPetThroughBattle:
|
||||||
case CriteriaType.WinPetBattle:
|
case CriteriaType.WinPetBattle:
|
||||||
case CriteriaType.PlayerObtainPetThroughBattle:
|
case CriteriaType.PlayerObtainPetThroughBattle:
|
||||||
case CriteriaType.EnterArea:
|
|
||||||
case CriteriaType.LeaveArea:
|
|
||||||
case CriteriaType.DefeatDungeonEncounter:
|
case CriteriaType.DefeatDungeonEncounter:
|
||||||
case CriteriaType.ActivateGarrisonBuilding:
|
case CriteriaType.ActivateGarrisonBuilding:
|
||||||
case CriteriaType.UpgradeGarrison:
|
case CriteriaType.UpgradeGarrison:
|
||||||
@@ -767,14 +768,11 @@ namespace Game.Achievements
|
|||||||
case CriteriaType.BankSlotsPurchased:
|
case CriteriaType.BankSlotsPurchased:
|
||||||
case CriteriaType.ReputationGained:
|
case CriteriaType.ReputationGained:
|
||||||
case CriteriaType.TotalExaltedFactions:
|
case CriteriaType.TotalExaltedFactions:
|
||||||
case CriteriaType.GotHaircut:
|
|
||||||
case CriteriaType.EquipItemInSlot:
|
|
||||||
case CriteriaType.RollNeed:
|
case CriteriaType.RollNeed:
|
||||||
case CriteriaType.RollGreed:
|
case CriteriaType.RollGreed:
|
||||||
case CriteriaType.DeliverKillingBlowToClass:
|
case CriteriaType.DeliverKillingBlowToClass:
|
||||||
case CriteriaType.DeliverKillingBlowToRace:
|
case CriteriaType.DeliverKillingBlowToRace:
|
||||||
case CriteriaType.DoEmote:
|
case CriteriaType.DoEmote:
|
||||||
case CriteriaType.EquipItem:
|
|
||||||
case CriteriaType.MoneyEarnedFromQuesting:
|
case CriteriaType.MoneyEarnedFromQuesting:
|
||||||
case CriteriaType.MoneyLootedFromCreatures:
|
case CriteriaType.MoneyLootedFromCreatures:
|
||||||
case CriteriaType.UseGameobject:
|
case CriteriaType.UseGameobject:
|
||||||
@@ -801,18 +799,24 @@ namespace Game.Achievements
|
|||||||
case CriteriaType.CompleteAnyReplayQuest:
|
case CriteriaType.CompleteAnyReplayQuest:
|
||||||
case CriteriaType.BuyItemsFromVendors:
|
case CriteriaType.BuyItemsFromVendors:
|
||||||
case CriteriaType.SellItemsToVendors:
|
case CriteriaType.SellItemsToVendors:
|
||||||
case CriteriaType.EnterTopLevelArea:
|
|
||||||
return progress.Counter >= requiredAmount;
|
return progress.Counter >= requiredAmount;
|
||||||
case CriteriaType.EarnAchievement:
|
case CriteriaType.EarnAchievement:
|
||||||
case CriteriaType.CompleteQuest:
|
case CriteriaType.CompleteQuest:
|
||||||
case CriteriaType.LearnOrKnowSpell:
|
case CriteriaType.LearnOrKnowSpell:
|
||||||
case CriteriaType.RevealWorldMapOverlay:
|
case CriteriaType.RevealWorldMapOverlay:
|
||||||
case CriteriaType.RecruitGarrisonFollower:
|
case CriteriaType.GotHaircut:
|
||||||
|
case CriteriaType.EquipItemInSlot:
|
||||||
|
case CriteriaType.EquipItem:
|
||||||
case CriteriaType.LearnedNewPet:
|
case CriteriaType.LearnedNewPet:
|
||||||
case CriteriaType.HonorLevelIncrease:
|
case CriteriaType.HonorLevelIncrease:
|
||||||
case CriteriaType.PrestigeLevelIncrease:
|
case CriteriaType.PrestigeLevelIncrease:
|
||||||
|
case CriteriaType.EnterArea:
|
||||||
|
case CriteriaType.LeaveArea:
|
||||||
|
case CriteriaType.RecruitGarrisonFollower:
|
||||||
case CriteriaType.ActivelyReachLevel:
|
case CriteriaType.ActivelyReachLevel:
|
||||||
case CriteriaType.CollectTransmogSetFromGroup:
|
case CriteriaType.CollectTransmogSetFromGroup:
|
||||||
|
case CriteriaType.EnterTopLevelArea:
|
||||||
|
case CriteriaType.LeaveTopLevelArea:
|
||||||
return progress.Counter >= 1;
|
return progress.Counter >= 1;
|
||||||
case CriteriaType.AchieveSkillStep:
|
case CriteriaType.AchieveSkillStep:
|
||||||
return progress.Counter >= (requiredAmount * 75);
|
return progress.Counter >= (requiredAmount * 75);
|
||||||
@@ -1148,10 +1152,14 @@ namespace Game.Achievements
|
|||||||
return false;
|
return false;
|
||||||
break;
|
break;
|
||||||
case CriteriaType.PVPKillInArea:
|
case CriteriaType.PVPKillInArea:
|
||||||
case CriteriaType.EnterTopLevelArea:
|
case CriteriaType.EnterArea:
|
||||||
if (miscValue1 == 0 || !Global.DB2Mgr.IsInArea((uint)miscValue1, criteria.Entry.Asset))
|
if (miscValue1 == 0 || !Global.DB2Mgr.IsInArea((uint)miscValue1, criteria.Entry.Asset))
|
||||||
return false;
|
return false;
|
||||||
break;
|
break;
|
||||||
|
case CriteriaType.LeaveArea:
|
||||||
|
if (miscValue1 == 0 || Global.DB2Mgr.IsInArea((uint)miscValue1, criteria.Entry.Asset))
|
||||||
|
return false;
|
||||||
|
break;
|
||||||
case CriteriaType.CurrencyGained:
|
case CriteriaType.CurrencyGained:
|
||||||
if (miscValue1 == 0 || miscValue2 == 0 || (long)miscValue2 < 0
|
if (miscValue1 == 0 || miscValue2 == 0 || (long)miscValue2 < 0
|
||||||
|| miscValue1 != criteria.Entry.Asset)
|
|| miscValue1 != criteria.Entry.Asset)
|
||||||
@@ -1185,6 +1193,11 @@ namespace Game.Achievements
|
|||||||
if (miscValue1 == 0 || miscValue1 != criteria.Entry.Asset)
|
if (miscValue1 == 0 || miscValue1 != criteria.Entry.Asset)
|
||||||
return false;
|
return false;
|
||||||
break;
|
break;
|
||||||
|
case CriteriaType.EnterTopLevelArea:
|
||||||
|
case CriteriaType.LeaveTopLevelArea:
|
||||||
|
if (miscValue1 == 0 || miscValue1 != criteria.Entry.Asset)
|
||||||
|
return false;
|
||||||
|
break;
|
||||||
default:
|
default:
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -134,13 +134,17 @@ namespace Game.Entities
|
|||||||
|
|
||||||
PushQuests();
|
PushQuests();
|
||||||
|
|
||||||
UpdateCriteria(CriteriaType.EnterTopLevelArea, newArea);
|
|
||||||
|
|
||||||
UpdateMountCapability();
|
UpdateMountCapability();
|
||||||
|
|
||||||
if ((oldAreaEntry != null && oldAreaEntry.GetFlags2().HasFlag(AreaFlags2.UseSubzoneForChatChannel))
|
if ((oldAreaEntry != null && oldAreaEntry.GetFlags2().HasFlag(AreaFlags2.UseSubzoneForChatChannel))
|
||||||
|| (area != null && area.GetFlags2().HasFlag(AreaFlags2.UseSubzoneForChatChannel)))
|
|| (area != null && area.GetFlags2().HasFlag(AreaFlags2.UseSubzoneForChatChannel)))
|
||||||
UpdateLocalChannels(newArea);
|
UpdateLocalChannels(newArea);
|
||||||
|
|
||||||
|
if (oldArea != newArea)
|
||||||
|
{
|
||||||
|
UpdateCriteria(CriteriaType.EnterArea, newArea);
|
||||||
|
UpdateCriteria(CriteriaType.LeaveArea, oldArea);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
public void UpdateZone(uint newZone, uint newArea)
|
public void UpdateZone(uint newZone, uint newArea)
|
||||||
@@ -223,6 +227,9 @@ namespace Game.Entities
|
|||||||
Guild guild = GetGuild();
|
Guild guild = GetGuild();
|
||||||
if (guild != null)
|
if (guild != null)
|
||||||
guild.UpdateMemberData(this, GuildMemberData.ZoneId, newZone);
|
guild.UpdateMemberData(this, GuildMemberData.ZoneId, newZone);
|
||||||
|
|
||||||
|
UpdateCriteria(CriteriaType.EnterTopLevelArea, newZone);
|
||||||
|
UpdateCriteria(CriteriaType.LeaveTopLevelArea, oldZone);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user