aboutsummaryrefslogtreecommitdiff
path: root/src/server/game/Entities
diff options
context:
space:
mode:
authorMeji <alvaro.megias@outlook.com>2023-10-15 16:42:17 +0200
committerGitHub <noreply@github.com>2023-10-15 16:42:17 +0200
commit10b06ff50f77cc0516c5f17adffef8eb75f1d555 (patch)
tree73b70118cb1431f680335f1249f4a6a6e2e43599 /src/server/game/Entities
parent0f7dd4eadf90a5407fd232d083485430d725152f (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.cpp10
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);
}
}