DemoCommands.cs
using SWB.Player;
using System.Linq;

namespace SWB.Demo;

internal class DemoCommands
{
	[ConCmd( "kill", Help = "Kills the player" )]
	public static void Kill()
	{
		var player = PlayerBase.GetLocal();
		player?.TakeDamage( Shared.DamageInfo.FromBullet( player.GameObject.Id, null, 99999, Vector3.Zero, Vector3.Zero, System.Array.Empty<string>() ) );
	}

	[ConCmd( "respawn", Help = "Respawns the player (host only)" )]
	public static void Respawn()
	{
		var player = PlayerBase.GetLocal();
		if ( !player.Network.Owner.IsHost ) return;
		player?.Respawn();
	}

	[ConCmd( "god", Help = "Toggles godmode (host only)" )]
	public static void GodMode()
	{
		var player = PlayerBase.GetLocal();
		if ( !player.Network.Owner.IsHost ) return;
		player.GodMode = !player.GodMode;
		Log.Info( (player.GodMode ? "Enabled" : "Disabled") + " Godmode" );
	}

	[ConCmd( "setactive", Help = "Changes the active inventory item" )]
	public static void ChangeWeapon( string className )
	{
		var player = PlayerBase.GetLocal();
		player.Inventory.SetActive( className );
	}

	[ConCmd( "bot", Help = "Adds a bot" )]
	public static void Bot()
	{
		var player = PlayerBase.GetLocal();
		if ( !player.Network.Owner.IsHost ) return;

		var networkManager = Game.ActiveScene.Components.Get<DemoNetworkManager>( FindMode.EnabledInSelfAndChildren );
		var botGO = networkManager.PlayerPrefab.Clone();
		var botPlayer = botGO.Components.Get<PlayerBase>();

		var players = Game.ActiveScene.GetAllComponents<PlayerBase>();
		var bots = players.Count( ( player ) => player.IsBot );
		var botName = "Bot " + (bots + 1);

		botPlayer.IsBot = true;
		botGO.Name = botName;
		botGO.NetworkSpawn();

		Log.Info( botName + " joined the game!" );
	}
}