From 3ca223b67323c38e9819441b5ae84314ff40e805 Mon Sep 17 00:00:00 2001 From: Marco Hladik Date: Wed, 2 Sep 2020 04:09:33 +0200 Subject: [PATCH] PMove: Added a bit of a punchangle when falling/falldamage hits --- src/server/gearbox/server.c | 1 + src/server/scihunt/server.c | 1 + src/server/tfc/server.c | 1 + src/server/valve/server.c | 2 ++ src/shared/pmove.c | 16 ++++++++-------- src/shared/valve/pmove.c | 10 ++++++++-- valve/data.pk3dir/sound/player_valve.sndshd | 8 ++++++++ 7 files changed, 29 insertions(+), 10 deletions(-) create mode 100644 valve/data.pk3dir/sound/player_valve.sndshd diff --git a/src/server/gearbox/server.c b/src/server/gearbox/server.c index a7b49fdf..fd1c23d8 100644 --- a/src/server/gearbox/server.c +++ b/src/server/gearbox/server.c @@ -31,6 +31,7 @@ Game_Worldspawn(void) Sound_Precache("ammo.respawn"); Sound_Precache("player.die"); Sound_Precache("player.fall"); + Sound_Precache("player.lightfall"); precache_model("models/player.mdl"); precache_model("models/w_weaponbox.mdl"); Weapons_Init(); diff --git a/src/server/scihunt/server.c b/src/server/scihunt/server.c index c6950051..d600c1f3 100644 --- a/src/server/scihunt/server.c +++ b/src/server/scihunt/server.c @@ -26,6 +26,7 @@ void Game_Worldspawn(void) precache_model("models/w_weaponbox.mdl"); Sound_Precache("player.die"); Sound_Precache("player.fall"); + Sound_Precache("player.lightfall"); Player_Precache(); Weapons_Init(); diff --git a/src/server/tfc/server.c b/src/server/tfc/server.c index 3a256ecc..d380f351 100644 --- a/src/server/tfc/server.c +++ b/src/server/tfc/server.c @@ -27,6 +27,7 @@ Game_Worldspawn(void) Sound_Precache("ammo.respawn"); Sound_Precache("player.die"); Sound_Precache("player.fall"); + Sound_Precache("player.lightfall"); precache_model("models/player.mdl"); precache_model("models/w_weaponbox.mdl"); Weapons_Init(); diff --git a/src/server/valve/server.c b/src/server/valve/server.c index a7b49fdf..d923dc0d 100644 --- a/src/server/valve/server.c +++ b/src/server/valve/server.c @@ -31,6 +31,8 @@ Game_Worldspawn(void) Sound_Precache("ammo.respawn"); Sound_Precache("player.die"); Sound_Precache("player.fall"); + Sound_Precache("player.lightfall"); + precache_model("models/player.mdl"); precache_model("models/w_weaponbox.mdl"); Weapons_Init(); diff --git a/src/shared/pmove.c b/src/shared/pmove.c index 3425d2e7..6a5fceb3 100644 --- a/src/shared/pmove.c +++ b/src/shared/pmove.c @@ -778,6 +778,14 @@ PMove_Run(void) /* activate any SOLID_TRIGGER entities */ touchtriggers(); + if (self.waterlevel != 0) { + flFallVel = 0; + } + + if ((self.flags & FL_ONGROUND) && self.movetype == MOVETYPE_WALK) { + GamePMove_Fall((player)self, flFallVel); + } + /* timers, these are predicted and shared across client and server */ pl.w_attack_next = max(0, pl.w_attack_next - input_timelength); pl.w_idle_next = max(0, pl.w_idle_next - input_timelength); @@ -787,14 +795,6 @@ PMove_Run(void) pl.punchangle[1] *= punch; pl.punchangle[2] *= punch; - if (self.waterlevel != 0) { - flFallVel = 0; - } - - if ((self.flags & FL_ONGROUND) && self.movetype == MOVETYPE_WALK) { - GamePMove_Fall((player)self, flFallVel); - } - /* weapon/item logic of what the player controls */ Game_Input(); } diff --git a/src/shared/valve/pmove.c b/src/shared/valve/pmove.c index f717eb65..d99256ad 100644 --- a/src/shared/valve/pmove.c +++ b/src/shared/valve/pmove.c @@ -31,8 +31,14 @@ void GamePMove_Fall(player target, float impactspeed) if (impactspeed > 580) { #ifdef SERVER float fFallDamage = (impactspeed - 580) * (100 / (1024 - 580)); - Damage_Apply(self, world, fFallDamage, 0, DMG_FALL); - Sound_Play(self, CHAN_AUTO, "player.fall"); + Damage_Apply(target, world, fFallDamage, 0, DMG_FALL); + Sound_Play(target, CHAN_AUTO, "player.fall"); +#endif + target.punchangle += [15,0,(input_sequence & 1) ? 15 : -15]; + } else if (impactspeed > 400) { + target.punchangle += [15,0,0]; +#ifdef SERVER + Sound_Play(target, CHAN_AUTO, "player.lightfall"); #endif } } diff --git a/valve/data.pk3dir/sound/player_valve.sndshd b/valve/data.pk3dir/sound/player_valve.sndshd new file mode 100644 index 00000000..062cec14 --- /dev/null +++ b/valve/data.pk3dir/sound/player_valve.sndshd @@ -0,0 +1,8 @@ +player.fall +{ + sample player/pl_fallpain3.wav +} +player.lightfall +{ + sample player/pl_fallpain1.wav +}