Player/PlayerPawn.GameEvents.cs
public sealed partial class PlayerPawn
{
	/// <summary>
	/// Routes a named game event to all weapon components.
	/// </summary>
	public void RunGameEvent( string eventName )
	{
		// Use child component iteration (same as SimulateInventory) to avoid NetList
		// race conditions where the list updates before weapon GameObjects are ready.
		foreach ( var weapon in Components.GetAll<Weapon>( FindMode.InChildren ) )
			weapon.RunGameEvent( eventName );
	}
}