aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMachiavelli <machiaveltman@gmail.com>2012-01-03 03:57:01 -0800
committerMachiavelli <machiaveltman@gmail.com>2012-01-03 03:57:01 -0800
commit65aca2b8061c2da59a7dd8155894e6064f5b5c7d (patch)
tree5dfa7ac9337fc85a1c9e5a1907b50da2b85ff422
parente35fd87d3f83d5d336e50695dfce7461a6e75193 (diff)
parentaea8b2af44aa7e8b15347c35a54180b806854c6c (diff)
Merge pull request #4591 from elecyb/farsight
Core/Spells: Update nearby visible objects for new viewpoints
-rwxr-xr-xsrc/server/game/Entities/Object/Object.cpp6
-rwxr-xr-xsrc/server/game/Entities/Player/Player.cpp7
2 files changed, 10 insertions, 3 deletions
diff --git a/src/server/game/Entities/Object/Object.cpp b/src/server/game/Entities/Object/Object.cpp
index 2fabc5130a8..2bee996eab0 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 10ec8500923..74f475aab17 100755
--- a/src/server/game/Entities/Player/Player.cpp
+++ b/src/server/game/Entities/Player/Player.cpp
@@ -22973,8 +22973,11 @@ 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);
- return NULL;
+ {
+ WorldObject* viewpoint = (WorldObject*) ObjectAccessor::GetObjectByTypeMask(*this, guid, TYPEMASK_SEER);
+ return viewpoint ? viewpoint : (WorldObject*) this; // always expected not NULL
+ }
+ return (WorldObject*) this;
}
bool Player::CanUseBattlegroundObject()