summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorTakenbacon <revoke1336@live.com>2025-08-18 21:14:08 -0700
committerGitHub <noreply@github.com>2025-08-19 06:14:08 +0200
commite3505df99f93e48a3af1ffb72a40dc5f9bd0f890 (patch)
tree611c5fe75dd0038bca8a04837f9d8308c90c32e1 /src
parent2ae1dbeab25cd27ba1de702d1a06370448439ebe (diff)
fix(Core/Visibility): Fix visibility crash (#22704)
Diffstat (limited to 'src')
-rw-r--r--src/server/game/Entities/Object/Object.cpp8
1 files changed, 7 insertions, 1 deletions
diff --git a/src/server/game/Entities/Object/Object.cpp b/src/server/game/Entities/Object/Object.cpp
index a9fcd71992..3081013be7 100644
--- a/src/server/game/Entities/Object/Object.cpp
+++ b/src/server/game/Entities/Object/Object.cpp
@@ -1696,7 +1696,7 @@ bool WorldObject::CanSeeOrDetect(WorldObject const* obj, bool ignoreStealth, boo
if (this == obj)
return true;
- if (obj->IsNeverVisible() || CanNeverSee(obj))
+ if (CanNeverSee(obj))
return false;
if (obj->IsAlwaysVisibleFor(this) || CanAlwaysSee(obj))
@@ -1840,6 +1840,12 @@ bool WorldObject::CanSeeOrDetect(WorldObject const* obj, bool ignoreStealth, boo
bool WorldObject::CanNeverSee(WorldObject const* obj) const
{
+ if (!IsInWorld())
+ return true;
+
+ if (obj->IsNeverVisible())
+ return true;
+
if (IsCreature() && obj->IsCreature())
return GetMap() != obj->GetMap() || (!InSamePhase(obj) && ToUnit()->GetVehicleBase() != obj && this != obj->ToUnit()->GetVehicleBase());
return GetMap() != obj->GetMap() || !InSamePhase(obj);