From 5c0caf1fb9548749f9140772ae1f26b515c4bb21 Mon Sep 17 00:00:00 2001 From: Paweł Redman Date: Sun, 4 Feb 2018 17:01:59 +0100 Subject: Remove knockback from everything but LC and barbs. --- src/game/g_combat.c | 44 ++++++++++++++++++++++---------------------- 1 file changed, 22 insertions(+), 22 deletions(-) (limited to 'src/game/g_combat.c') diff --git a/src/game/g_combat.c b/src/game/g_combat.c index 81a5345..d8eef62 100644 --- a/src/game/g_combat.c +++ b/src/game/g_combat.c @@ -1233,7 +1233,7 @@ inflictor, attacker, dir, and point can be NULL for environmental effects dflags these flags are used to control how T_Damage works DAMAGE_RADIUS damage was indirect (from a nearby explosion) DAMAGE_NO_ARMOR armor does not protect from this damage - DAMAGE_NO_KNOCKBACK do not affect velocity, just view angles + DAMAGE_KNOCKBACK affect velocity, not just view angles DAMAGE_NO_PROTECTION kills godmode, armor, everything ============ */ @@ -1252,7 +1252,7 @@ void G_Damage( gentity_t *targ, gentity_t *inflictor, gentity_t *attacker, gclient_t *client; int take; int asave = 0; - int knockback; + int knockback = 0; float damagemodifier=0.0; int takeNoOverkill; @@ -1294,32 +1294,32 @@ void G_Damage( gentity_t *targ, gentity_t *inflictor, gentity_t *attacker, } if( !dir ) - dflags |= DAMAGE_NO_KNOCKBACK; + dflags &= ~DAMAGE_KNOCKBACK; else VectorNormalize( dir ); - knockback = damage; - - if( inflictor->s.weapon != WP_NONE ) + if( dflags & DAMAGE_KNOCKBACK ) { - knockback = (int)( (float)knockback * - BG_FindKnockbackScaleForWeapon( inflictor->s.weapon ) ); - } + knockback = damage; - if( targ->client ) - { - knockback = (int)( (float)knockback * - BG_FindKnockbackScaleForClass( targ->client->ps.stats[ STAT_PCLASS ] ) ); - } + if( inflictor->s.weapon != WP_NONE ) + { + knockback = (int)( (float)knockback * + BG_FindKnockbackScaleForWeapon( inflictor->s.weapon ) ); + } - if( knockback > 200 ) - knockback = 200; + if( targ->client ) + { + knockback = (int)( (float)knockback * + BG_FindKnockbackScaleForClass( targ->client->ps.stats[ STAT_PCLASS ] ) ); + } - if( targ->flags & FL_NO_KNOCKBACK ) - knockback = 0; + if( knockback > 200 ) + knockback = 200; - if( dflags & DAMAGE_NO_KNOCKBACK ) - knockback = 0; + if( targ->flags & FL_NO_KNOCKBACK ) + knockback = 0; + } // figure momentum add, even if the damage won't be taken if( knockback && targ->client ) @@ -1882,7 +1882,7 @@ G_RadiusDamage ============ */ qboolean G_RadiusDamage( vec3_t origin, gentity_t *attacker, float damage, - float radius, gentity_t *ignore, int mod ) + float radius, gentity_t *ignore, int dflags, int mod ) { float points, dist; gentity_t *ent; @@ -1939,7 +1939,7 @@ qboolean G_RadiusDamage( vec3_t origin, gentity_t *attacker, float damage, // get knocked into the air more dir[ 2 ] += 24; G_Damage( ent, NULL, attacker, dir, origin, - (int)points, DAMAGE_RADIUS|DAMAGE_NO_LOCDAMAGE, mod ); + (int)points, DAMAGE_RADIUS|DAMAGE_NO_LOCDAMAGE|dflags, mod ); } } -- cgit