aboutsummaryrefslogtreecommitdiff
path: root/src/server/game/Entities/Player
diff options
context:
space:
mode:
authorxinef1 <w.szyszko2@gmail.com>2017-01-21 14:46:32 +0100
committerShauren <shauren.trinity@gmail.com>2018-12-09 14:18:42 +0100
commit8573b651c8bb00612b161cc44664cbbb6dd16327 (patch)
tree29ddd43eaee53238dbbf1e8954e162cbc79a9cd2 /src/server/game/Entities/Player
parent46c69df3a7cd3f863a7a3cca59a136a0a5cdec9d (diff)
Core/Units: Drop hostile world references that are out of our sight (fixes combat bug) (#18591)
(cherry-picked from ba6281bf429384a506aad5125bcc537eef5bfe77)
Diffstat (limited to 'src/server/game/Entities/Player')
-rw-r--r--src/server/game/Entities/Player/Player.cpp13
-rw-r--r--src/server/game/Entities/Player/Player.h1
2 files changed, 14 insertions, 0 deletions
diff --git a/src/server/game/Entities/Player/Player.cpp b/src/server/game/Entities/Player/Player.cpp
index 01d6b9e2066..6131c40aca0 100644
--- a/src/server/game/Entities/Player/Player.cpp
+++ b/src/server/game/Entities/Player/Player.cpp
@@ -210,6 +210,7 @@ Player::Player(WorldSession* session) : Unit(true), m_sceneMgr(this)
m_MirrorTimerFlags = UNDERWATER_NONE;
m_MirrorTimerFlagsLast = UNDERWATER_NONE;
m_isInWater = false;
+ m_hostileReferenceCheckTimer = 0;
m_drunkTimer = 0;
m_deathTimer = 0;
m_deathExpireTime = 0;
@@ -1348,6 +1349,18 @@ void Player::Update(uint32 p_time)
//if (pet && !pet->IsWithinDistInMap(this, GetMap()->GetVisibilityDistance()) && (GetCharmGUID() && (pet->GetGUID() != GetCharmGUID())))
RemovePet(pet, PET_SAVE_NOT_IN_SLOT, true);
+ if (IsAlive())
+ {
+ if (m_hostileReferenceCheckTimer <= p_time)
+ {
+ m_hostileReferenceCheckTimer = 15 * IN_MILLISECONDS;
+ if (!GetMap()->IsDungeon())
+ getHostileRefManager().deleteReferencesOutOfRange(GetVisibilityRange());
+ }
+ else
+ m_hostileReferenceCheckTimer -= p_time;
+ }
+
//we should execute delayed teleports only for alive(!) players
//because we don't want player's ghost teleported from graveyard
if (IsHasDelayedTeleport() && IsAlive())
diff --git a/src/server/game/Entities/Player/Player.h b/src/server/game/Entities/Player/Player.h
index fd2b6e9a049..eb12abc021c 100644
--- a/src/server/game/Entities/Player/Player.h
+++ b/src/server/game/Entities/Player/Player.h
@@ -2593,6 +2593,7 @@ class TC_GAME_API Player : public Unit, public GridObject<Player>
bool m_SeasonalQuestChanged;
time_t m_lastDailyQuestTime;
+ uint32 m_hostileReferenceCheckTimer;
uint32 m_drunkTimer;
uint32 m_weaponChangeTimer;