blob: 59e75d3fa27e2f4c8d556955c34dc3b78ad04b15 (
plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
|
using Sandbox;
namespace MurderGame;
public partial class FallDamageComponent : EntityComponent<Player>, ISingletonComponent
{
float PreviousZVelocity = 0;
const float LethalFallSpeed = 1024;
const float SafeFallSpeed = 580;
const float DamageForSpeed = (float)100 / (LethalFallSpeed - SafeFallSpeed); // damage per unit per second.
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;
}
}
|