diff options
-rwxr-xr-x | src/server/game/Entities/Player/Player.cpp | 21 |
1 files changed, 11 insertions, 10 deletions
diff --git a/src/server/game/Entities/Player/Player.cpp b/src/server/game/Entities/Player/Player.cpp index 1b615f2f3d9..7e9263b641c 100755 --- a/src/server/game/Entities/Player/Player.cpp +++ b/src/server/game/Entities/Player/Player.cpp @@ -7324,6 +7324,17 @@ void Player::UpdateArea(uint32 newArea) UpdatePvPState(true); UpdateAreaDependentAuras(newArea); + + // previously this was in UpdateZone (but after UpdateArea) so nothing will break + pvpInfo.inNoPvPArea = false; + if (area && area->IsSanctuary()) // in sanctuary + { + SetByteFlag(UNIT_FIELD_BYTES_2, 1, UNIT_BYTE2_FLAG_SANCTUARY); + pvpInfo.inNoPvPArea = true; + CombatStopWithPets(); + } + else + RemoveByteFlag(UNIT_FIELD_BYTES_2, 1, UNIT_BYTE2_FLAG_SANCTUARY); } void Player::UpdateZone(uint32 newZone, uint32 newArea) @@ -7379,16 +7390,6 @@ void Player::UpdateZone(uint32 newZone, uint32 newArea) break; } - pvpInfo.inNoPvPArea = false; - if (zone->IsSanctuary()) // in sanctuary - { - SetByteFlag(UNIT_FIELD_BYTES_2, 1, UNIT_BYTE2_FLAG_SANCTUARY); - pvpInfo.inNoPvPArea = true; - CombatStopWithPets(); - } - else - RemoveByteFlag(UNIT_FIELD_BYTES_2, 1, UNIT_BYTE2_FLAG_SANCTUARY); - if (zone->flags & AREA_FLAG_CAPITAL) // in capital city { if (!pvpInfo.inHostileArea || zone->IsSanctuary()) |