A trigger zone component that listens for physics trigger enter/exit events and grants players an "Uber" effect when they enter. It looks up a PlayerPawn component on the colliding root object and calls DamageComponent.BroadcastUber() if present on enter. Exit handler does nothing beyond validating the player.
using Sandbox;
using Sandbox.Diagnostics;
namespace KOTH;
public sealed class UberZone : Zone, Component.ITriggerListener
{
void ITriggerListener.OnTriggerEnter(Collider Collider)
{
var PlayerPawn = Collider.GameObject.Root.Components.Get<PlayerPawn>();
if (!PlayerPawn.IsValid())
{
return;
}
PlayerPawn.DamageComponent?.BroadcastUber();
}
void ITriggerListener.OnTriggerExit(Collider Collider)
{
var PlayerPawn = Collider.GameObject.Root.Components.Get<PlayerPawn>();
if (!PlayerPawn.IsValid())
{
return;
}
}
}