Core/Objects: Refactor private object checks into separate function
Port From (https://github.com/TrinityCore/TrinityCore/commit/f21270b987211041b95d6befa7192d313692920d)
This commit is contained in:
@@ -1100,20 +1100,36 @@ namespace Game.Entities
|
||||
return 0.0f;
|
||||
}
|
||||
|
||||
public bool CheckPrivateObjectOwnerVisibility(WorldObject seer)
|
||||
{
|
||||
if (!IsPrivateObject())
|
||||
return true;
|
||||
|
||||
// Owner of this private object
|
||||
if (_privateObjectOwner == seer.GetGUID())
|
||||
return true;
|
||||
|
||||
// Another private object of the same owner
|
||||
if (_privateObjectOwner == seer.GetPrivateObjectOwner())
|
||||
return true;
|
||||
|
||||
return false;
|
||||
}
|
||||
|
||||
public bool CanSeeOrDetect(WorldObject obj, bool ignoreStealth = false, bool distanceCheck = false, bool checkAlert = false)
|
||||
{
|
||||
if (this == obj)
|
||||
return true;
|
||||
|
||||
if (!obj.GetPrivateObjectOwner().IsEmpty())
|
||||
return GetGUID() == obj.GetPrivateObjectOwner() || GetPrivateObjectOwner() == obj.GetPrivateObjectOwner();
|
||||
|
||||
if (obj.IsNeverVisibleFor(this) || CanNeverSee(obj))
|
||||
return false;
|
||||
|
||||
if (obj.IsAlwaysVisibleFor(this) || CanAlwaysSee(obj))
|
||||
return true;
|
||||
|
||||
if (!obj.CheckPrivateObjectOwnerVisibility(this))
|
||||
return false;
|
||||
|
||||
bool corpseVisibility = false;
|
||||
if (distanceCheck)
|
||||
{
|
||||
|
||||
Reference in New Issue
Block a user