diff options
| author | Meji <alvaro.megias@outlook.com> | 2023-10-15 16:42:17 +0200 |
|---|---|---|
| committer | GitHub <noreply@github.com> | 2023-10-15 16:42:17 +0200 |
| commit | 10b06ff50f77cc0516c5f17adffef8eb75f1d555 (patch) | |
| tree | 73b70118cb1431f680335f1249f4a6a6e2e43599 /src/server/game/Entities | |
| parent | 0f7dd4eadf90a5407fd232d083485430d725152f (diff) | |
Core/Achievements: Fix CriteriaTypes related to areas and zones (#29367)
Diffstat (limited to 'src/server/game/Entities')
| -rw-r--r-- | src/server/game/Entities/Player/Player.cpp | 10 |
1 files changed, 8 insertions, 2 deletions
diff --git a/src/server/game/Entities/Player/Player.cpp b/src/server/game/Entities/Player/Player.cpp index 1dc992bae6c..1ce4d805716 100644 --- a/src/server/game/Entities/Player/Player.cpp +++ b/src/server/game/Entities/Player/Player.cpp @@ -7557,13 +7557,17 @@ void Player::UpdateArea(uint32 newArea) PushQuests(); - UpdateCriteria(CriteriaType::EnterTopLevelArea, newArea); - UpdateMountCapability(); if ((oldAreaEntry && oldAreaEntry->GetFlags2().HasFlag(AreaFlags2::UseSubzoneForChatChannel)) || (area && area->GetFlags2().HasFlag(AreaFlags2::UseSubzoneForChatChannel))) UpdateLocalChannels(newArea); + + if (oldArea != newArea) + { + UpdateCriteria(CriteriaType::EnterArea, newArea); + UpdateCriteria(CriteriaType::LeaveArea, oldArea); + } } void Player::UpdateZone(uint32 newZone, uint32 newArea) @@ -7643,6 +7647,8 @@ void Player::UpdateZone(uint32 newZone, uint32 newArea) SendInitWorldStates(newZone, newArea); // only if really enters to new zone, not just area change, works strange... if (Guild* guild = GetGuild()) guild->UpdateMemberData(this, GUILD_MEMBER_DATA_ZONEID, newZone); + UpdateCriteria(CriteriaType::EnterTopLevelArea, newZone); + UpdateCriteria(CriteriaType::LeaveTopLevelArea, oldZone); } } |
