World/KillZone.cs

A component that listens for trigger entries on a Zone and instantly kills player pawns entering it by sending a DamageRequestEvent with maximal damage.

Networking
using Sandbox;
using Sandbox.Events;

namespace KOTH;

public sealed class KillZone : Component, Component.ITriggerListener
{
	[RequireComponent] public Zone Zone { get; private set; }

	void ITriggerListener.OnTriggerEnter(Collider Collider)
	{
		var PlayerPawn = Collider.GameObject.Root.Components.Get<PlayerPawn>();
		if (PlayerPawn.IsValid())
		{
			FDamageRequest DamageRequest = new()
			{
				TargetDamageComponent = PlayerPawn.DamageComponent,
				AttackerPlayerPawn = null,
				DamageOrigin = 0,
				BaseDamage = int.MaxValue,
				BaseKnockbackStrength = 0,
				DirectImpact = true,
				DamageType = EDamageType.Melee,
			};
			Game.ActiveScene.Dispatch(new DamageRequestEvent(DamageRequest));
		}
	}
}