Component attached to a game object that handles death behavior. When Should is set true it spawns a ragdoll and a spectator object at the object's position, plays a scream sound on the ragdoll, and destroys the original object.
using Sandbox;
public class Death : Component
{
[Property] public GameObject Ragdoll {get;set;}
[Property] public GameObject Spectator {get;set;}
[Sync] public bool Should {get;set;}
SoundEvent Scream;
protected override void OnStart()
{if (IsProxy) return;
Scream = ResourceLibrary.Get<SoundEvent>("prereqs/scream/scream.sound");}
protected override void OnUpdate()
{
if (IsProxy) return;
if (Should) Die();
}
void Die()
{
var ragdoll = Ragdoll.Clone(WorldPosition);
ragdoll.NetworkSpawn(Network.Owner);
PlaySound(ragdoll, Scream);
var spectator = Spectator.Clone(WorldPosition);
spectator.NetworkSpawn(Network.Owner);
GameObject.Destroy();
}
[Rpc.Broadcast]
public void PlaySound(GameObject go, SoundEvent s)
{go.PlaySound(s);}
[Rpc.Broadcast]
public void Now()
{Should = true;}
}