diff --git a/Source/Game/Chat/Commands/DebugCommands.cs b/Source/Game/Chat/Commands/DebugCommands.cs index e6bc5ef22..c325f8498 100644 --- a/Source/Game/Chat/Commands/DebugCommands.cs +++ b/Source/Game/Chat/Commands/DebugCommands.cs @@ -46,6 +46,7 @@ namespace Game.Chat handler.SendSysMessage(CypherStrings.DebugAreatriggerOff); player.IsDebugAreaTriggers = false; } + player.UpdateObjectVisibility(); return true; } diff --git a/Source/Game/Entities/AreaTrigger/AreaTrigger.cs b/Source/Game/Entities/AreaTrigger/AreaTrigger.cs index d4ae2eb07..5485c7a1c 100644 --- a/Source/Game/Entities/AreaTrigger/AreaTrigger.cs +++ b/Source/Game/Entities/AreaTrigger/AreaTrigger.cs @@ -256,6 +256,13 @@ namespace Game.Entities SetObjectScale(1.0f); + SetUpdateFieldValue(m_areaTriggerData.ModifyValue(m_areaTriggerData.BoundsRadius2D), GetMaxSearchRadius()); + SetUpdateFieldValue(m_areaTriggerData.ModifyValue(m_areaTriggerData.DecalPropertiesID), 24u); // blue decal, for .debug areatrigger visibility + + ScaleCurve extraScaleCurve = m_areaTriggerData.ModifyValue(m_areaTriggerData.ExtraScaleCurve); + SetUpdateFieldValue(extraScaleCurve.ModifyValue(extraScaleCurve.ParameterCurve), (uint)1.0000001f); + SetUpdateFieldValue(extraScaleCurve.ModifyValue(extraScaleCurve.OverrideActive), true); + _shape = position.Shape; _maxSearchRadius = _shape.GetMaxSearchRadius(); @@ -978,6 +985,23 @@ namespace Game.Entities _ai = null; } + public override bool IsNeverVisibleFor(WorldObject seer, bool allowServersideObjects) + { + if (base.IsNeverVisibleFor(seer, allowServersideObjects)) + return true; + + if (IsServerSide() && !allowServersideObjects) + { + Player seerPlayer = seer.ToPlayer(); + if (seerPlayer != null) + return !seerPlayer.IsDebugAreaTriggers; + + return true; + } + + return false; + } + public override void BuildValuesCreate(WorldPacket data, Player target) { UpdateFieldFlag flags = GetUpdateFieldFlagsFor(target); @@ -1044,11 +1068,6 @@ namespace Game.Entities public bool IsServerSide() { return _areaTriggerTemplate.Id.IsServerSide; } - public override bool IsNeverVisibleFor(WorldObject seer, bool allowServersideObjects = false) - { - return base.IsNeverVisibleFor(seer) || (IsServerSide() && !allowServersideObjects); - } - [System.Diagnostics.Conditional("DEBUG")] void DebugVisualizePosition() {