From 993c4e748f6013f7a54b4d4b51c07d40af98a31c Mon Sep 17 00:00:00 2001 From: elecyb Date: Mon, 2 Jan 2012 16:33:14 -0300 Subject: [PATCH 1/2] Core/Spells: Update nearby visible objects for new viewpoints, fix spells with Far Sight and Bind Sight effects. --- src/server/game/Entities/Object/Object.cpp | 6 +++++- src/server/game/Entities/Player/Player.cpp | 2 +- 2 files changed, 6 insertions(+), 2 deletions(-) diff --git a/src/server/game/Entities/Object/Object.cpp b/src/server/game/Entities/Object/Object.cpp index 2fabc5130a..2bee996eab 100755 --- a/src/server/game/Entities/Object/Object.cpp +++ b/src/server/game/Entities/Object/Object.cpp @@ -1668,7 +1668,11 @@ bool WorldObject::canSeeOrDetect(WorldObject const* obj, bool ignoreStealth, boo } } - if (!corpseCheck && !IsWithinDist(obj, GetSightRange(obj), false)) + WorldObject const* viewpoint = this; + if (Player const* player = this->ToPlayer()) + viewpoint = player->GetViewpoint(); + + if (!corpseCheck && !viewpoint->IsWithinDist(obj, GetSightRange(obj), false)) return false; } diff --git a/src/server/game/Entities/Player/Player.cpp b/src/server/game/Entities/Player/Player.cpp index 10ec850092..3c1764e126 100755 --- a/src/server/game/Entities/Player/Player.cpp +++ b/src/server/game/Entities/Player/Player.cpp @@ -22974,7 +22974,7 @@ WorldObject* Player::GetViewpoint() const { if (uint64 guid = GetUInt64Value(PLAYER_FARSIGHT)) return (WorldObject*)ObjectAccessor::GetObjectByTypeMask(*this, guid, TYPEMASK_SEER); - return NULL; + return (WorldObject*) this; } bool Player::CanUseBattlegroundObject() From aea8b2af44aa7e8b15347c35a54180b806854c6c Mon Sep 17 00:00:00 2001 From: elecyb Date: Mon, 2 Jan 2012 22:49:08 -0300 Subject: [PATCH 2/2] Core/Spells: Fixed crash introduced in last commit --- src/server/game/Entities/Player/Player.cpp | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/src/server/game/Entities/Player/Player.cpp b/src/server/game/Entities/Player/Player.cpp index 3c1764e126..74f475aab1 100755 --- a/src/server/game/Entities/Player/Player.cpp +++ b/src/server/game/Entities/Player/Player.cpp @@ -22973,7 +22973,10 @@ void Player::SetViewpoint(WorldObject* target, bool apply) WorldObject* Player::GetViewpoint() const { if (uint64 guid = GetUInt64Value(PLAYER_FARSIGHT)) - return (WorldObject*)ObjectAccessor::GetObjectByTypeMask(*this, guid, TYPEMASK_SEER); + { + WorldObject* viewpoint = (WorldObject*) ObjectAccessor::GetObjectByTypeMask(*this, guid, TYPEMASK_SEER); + return viewpoint ? viewpoint : (WorldObject*) this; // always expected not NULL + } return (WorldObject*) this; }