SausageExplosionEffect.cs
using Sandbox;
namespace PaintballBaddies;
// Visual/audio-only adaptation of the engine explosion. All damage remains
// host-authoritative in the bolt/grenade; this prefab has no RadiusDamage.
public static class SausageExplosionEffect
{
public static int Plays {get;private set;}
public static void Spawn(Scene scene,Vector3 point,bool grenade)
{
if(!scene.IsValid() || scene!=Game.ActiveScene)return;
var effect=GameObject.Clone("prefabs/effects/sausage_explosion.prefab",new Transform(point),startEnabled:false);
if(!effect.IsValid())
{
Sound.Play("sounds/effects/explosion/explosion_small.sound",point);
DroneDamageFlare.Spawn(scene,point,Color.Orange,true,MultiplayerSession.Find(scene)?.RoundId ?? 0,.5f);
return;
}
effect.NetworkMode=NetworkMode.Never;
effect.WorldScale=new Vector3(grenade ? 1.35f : 1);
effect.Tags.Add("paintball_debris");effect.Enabled=true;Plays++;
if(scene.Camera.IsValid())
{
float distance=(scene.Camera.WorldPosition-point).Length;
float strength=(1-distance/(grenade ? 850 : 550)).Clamp(0,1);
if(strength>0)scene.Camera.AddShake(strength*(grenade ? 1.8f : .65f),35,grenade ? .3f : .18f);
}
}
}