Merge branch 'master' into Playerbot

This commit is contained in:
Yunfan Li
2025-04-18 22:57:30 +08:00
28 changed files with 922 additions and 74 deletions

View File

@@ -4537,7 +4537,7 @@ void Player::ResurrectPlayer(float restore_percent, bool applySickness)
// trigger update zone for alive state zone updates
uint32 newzone, newarea;
GetZoneAndAreaId(newzone, newarea);
UpdateZone(newzone, newarea);
UpdateZone(newzone, newarea, true);
sOutdoorPvPMgr->HandlePlayerResurrects(this, newzone);
if (Battleground* bg = GetBattleground())

View File

@@ -1852,7 +1852,7 @@ public:
itr->SetPvP(state);
}
void UpdatePvP(bool state, bool _override = false);
void UpdateZone(uint32 newZone, uint32 newArea);
void UpdateZone(uint32 newZone, uint32 newArea, bool force = false);
void UpdateArea(uint32 newArea);
void SetNeedZoneUpdate(bool needUpdate) { m_needZoneUpdate = needUpdate; }

View File

@@ -1250,17 +1250,20 @@ void Player::UpdateArea(uint32 newArea)
RemoveRestFlag(REST_FLAG_IN_FACTION_AREA);
}
void Player::UpdateZone(uint32 newZone, uint32 newArea)
void Player::UpdateZone(uint32 newZone, uint32 newArea, bool force)
{
if (!newZone)
return;
if (m_zoneUpdateId != newZone)
if (m_zoneUpdateId != newZone || force)
{
sOutdoorPvPMgr->HandlePlayerLeaveZone(this, m_zoneUpdateId);
sOutdoorPvPMgr->HandlePlayerEnterZone(this, newZone);
sWorldState->HandlePlayerLeaveZone(this, static_cast<WorldStateZoneId>(m_zoneUpdateId));
sWorldState->HandlePlayerEnterZone(this, static_cast<WorldStateZoneId>(newZone));
}
if (m_zoneUpdateId != newZone)
{
sBattlefieldMgr->HandlePlayerLeaveZone(this, m_zoneUpdateId);
sBattlefieldMgr->HandlePlayerEnterZone(this, newZone);
SendInitWorldStates(newZone,