KickCollider.cs
using Sandbox;

[Title( "Kick Collider" )]
[Category( "AI" )]
public sealed class KickCollider : Component, Component.ITriggerListener
{
	[Property] public float TriggerRadius { get; set; } = 50f;

	private bool _triggered = false;

	protected override void OnStart()
	{
		var collider = Components.GetOrCreate<SphereCollider>();
		collider.Radius = TriggerRadius;
		collider.IsTrigger = true;
	}

	public void OnTriggerEnter( Collider other )
	{
		if ( _triggered ) return;

		var player = other.GameObject.Components.Get<PlayerController>( FindMode.EverythingInSelfAndAncestors );
		if ( player is null ) return;

		_triggered = true;

		if ( Networking.IsActive )
		{
			DisconnectPlayer( player.Network.Owner );
		}
		else
		{
			Game.Close();
		}
	}

	[Rpc.Broadcast]
	private void DisconnectPlayer( Connection target )
	{
		if ( Connection.Local != target ) return;
		Game.Disconnect();
	}

	public void OnTriggerExit( Collider other ) { }
	public void OnTriggerEnter( GameObject go ) { }
	public void OnTriggerExit( GameObject go ) { }

	protected override void DrawGizmos()
	{
		Gizmo.Draw.Color = Color.Red.WithAlpha( 0.2f );
		Gizmo.Draw.LineSphere( Vector3.Zero, TriggerRadius );
	}
}