From 914512435d37d9f1e1ea4c045afd4ec5612b7534 Mon Sep 17 00:00:00 2001 From: Leonardo Bishop Date: Sun, 30 Jul 2023 02:45:36 +0100 Subject: Replace movement controllers --- code/pawn/component/FallDamageComponent.cs | 23 +++++++++++++++++++++++ 1 file changed, 23 insertions(+) create mode 100644 code/pawn/component/FallDamageComponent.cs (limited to 'code/pawn/component/FallDamageComponent.cs') 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, 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; + } +} -- cgit v1.2.3-70-g09d2