diff options
Diffstat (limited to 'code/pawn/component/FallDamageComponent.cs')
| -rw-r--r-- | code/pawn/component/FallDamageComponent.cs | 23 |
1 files changed, 23 insertions, 0 deletions
diff --git a/code/pawn/component/FallDamageComponent.cs b/code/pawn/component/FallDamageComponent.cs new file mode 100644 index 0000000..59e75d3 --- /dev/null +++ b/code/pawn/component/FallDamageComponent.cs @@ -0,0 +1,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;
+ }
+}
|
