diff options
| author | ille <ille@ille> | 2012-01-08 18:22:46 +0100 |
|---|---|---|
| committer | ille <ille@ille> | 2012-01-08 18:22:46 +0100 |
| commit | baa2252bd31718e93ccc3e97aa81afeecb5ec9c3 (patch) | |
| tree | 3117fb09caedd90caccee68f9c149a527ba25f61 /src/server/game/Entities/GameObject | |
| parent | b5a53a72d1e52a25ab5aac429e9d9f793c4df5ba (diff) | |
implement objectdetection
Diffstat (limited to 'src/server/game/Entities/GameObject')
| -rwxr-xr-x | src/server/game/Entities/GameObject/GameObject.cpp | 18 |
1 files changed, 16 insertions, 2 deletions
diff --git a/src/server/game/Entities/GameObject/GameObject.cpp b/src/server/game/Entities/GameObject/GameObject.cpp index df7aa90982e..d2a3bfc884c 100755 --- a/src/server/game/Entities/GameObject/GameObject.cpp +++ b/src/server/game/Entities/GameObject/GameObject.cpp @@ -228,13 +228,13 @@ bool GameObject::Create(uint32 guidlow, uint32 name_id, Map* map, uint32 phaseMa if (GetGOInfo()->trap.stealthed) { m_stealth.AddFlag(STEALTH_TRAP); - m_stealth.AddValue(STEALTH_TRAP, 300); + m_stealth.AddValue(STEALTH_TRAP, 70); } if (GetGOInfo()->trap.invisible) { m_invisibility.AddFlag(INVISIBILITY_TRAP); - m_invisibility.AddValue(INVISIBILITY_TRAP, 70); + m_invisibility.AddValue(INVISIBILITY_TRAP, 300); } break; @@ -850,6 +850,20 @@ bool GameObject::IsAlwaysVisibleFor(WorldObject const* seer) const if (IsTransport()) return true; + if (!seer) + return false; + + // Always seen by owner and friendly units + if (uint64 guid = GetOwnerGUID()) + { + if (seer->GetGUID() == guid) + return true; + + Unit* owner = GetOwner(); + if (owner && seer->isType(TYPEMASK_UNIT) && owner->IsFriendlyTo(((Unit*)seer))) + return true; + } + return false; } |
