blob: 97d24a46098bd4dedc50a87fd31ef5b1056a524a (
plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
|
using Sandbox;
namespace MurderGame;
public class FallDamageComponent : EntityComponent<Player>, ISingletonComponent
{
private const float LethalFallSpeed = 1024;
private const float SafeFallSpeed = 580;
private const float DamageForSpeed = 100 / (LethalFallSpeed - SafeFallSpeed); // damage per unit per second.
private float PreviousZVelocity;
public void Simulate( IClient cl )
{
var FallSpeed = -PreviousZVelocity;
if ( FallSpeed > SafeFallSpeed * Entity.Scale && Entity.GroundEntity != null )
{
var FallDamage = (FallSpeed - SafeFallSpeed * Entity.Scale) * (DamageForSpeed * Entity.Scale);
var info = DamageInfo.Generic( FallDamage ).WithTag( "fall" );
Entity.TakeDamage( info );
Entity.PlaySound( "fall" );
}
PreviousZVelocity = Entity.Velocity.z;
}
}
|