From ae62eb7b0a48758de854556a9f1a1d580df36cfc Mon Sep 17 00:00:00 2001 From: Rudolf Polzer Date: Thu, 8 Mar 2012 14:19:55 +0100 Subject: [PATCH] properly apply damage force via ODE --- qcsrc/server/g_damage.qc | 18 +++++++++++++++++- 1 file changed, 17 insertions(+), 1 deletion(-) diff --git a/qcsrc/server/g_damage.qc b/qcsrc/server/g_damage.qc index bdaeef0a53..f80e3e133c 100644 --- a/qcsrc/server/g_damage.qc +++ b/qcsrc/server/g_damage.qc @@ -887,7 +887,23 @@ void Damage (entity targ, entity inflictor, entity attacker, float damage, float if (vlen(force)) if (self.classname != "player" || time >= self.spawnshieldtime || g_midair) { - self.velocity = self.velocity + damage_explosion_calcpush(self.damageforcescale * force, self.velocity, autocvar_g_balance_damagepush_speedfactor); + vector farce = damage_explosion_calcpush(self.damageforcescale * force, self.velocity, autocvar_g_balance_damagepush_speedfactor); + if(self.movetype == MOVETYPE_PHYSICS) + { + entity farcent; + farcent = spawn(); + farcent.classname = "farce"; + farcent.enemy = self; + farcent.movedir = farce * 10; + if(self.mass) + farcent.movedir = farcent.movedir * self.mass; + farcent.origin = hitloc; + farcent.forcetype = FORCETYPE_FORCEATPOS; + farcent.nextthink = time + 0.1; + farcent.think = SUB_Remove; + } + else + self.velocity = self.velocity + farce; self.flags &~= FL_ONGROUND; UpdateCSQCProjectile(self); } -- 2.39.2