From 1e7d1146407a5d6dde817ada79ce428b0cb0f481 Mon Sep 17 00:00:00 2001 From: Paweł Redman Date: Fri, 3 Apr 2015 21:55:26 +0200 Subject: Fix a bug in G_Damage. --- src/game/g_combat.c | 6 ++---- 1 file changed, 2 insertions(+), 4 deletions(-) (limited to 'src/game') diff --git a/src/game/g_combat.c b/src/game/g_combat.c index 1a54981..c095d1c 100644 --- a/src/game/g_combat.c +++ b/src/game/g_combat.c @@ -1447,14 +1447,12 @@ void G_Damage( gentity_t *targ, gentity_t *inflictor, gentity_t *attacker, G_CombatStats_HitMOD( attacker, targ, mod, take ); - if( attacker && attacker->client && take && attacker != targ ) + if( attacker && attacker->client && take && attacker != targ && + attacker->client->bufferedBlobCount < MAX_BUFFERED_BLOBS ) { g_damageBlob_t *blob; int flags = 0; - if( attacker->client->bufferedBlobCount == MAX_BUFFERED_BLOBS ) - return; - if( OnSameTeam( attacker, targ ) || ( targ->s.eType == ET_BUILDABLE && attacker->client->pers.teamSelection == targ->buildableTeam ) ) -- cgit From f3008f9819d57b671a424a0097f50c93926af74e Mon Sep 17 00:00:00 2001 From: Paweł Redman Date: Fri, 3 Apr 2015 22:27:39 +0200 Subject: Fix radius damage missing targets randomly. --- src/game/g_combat.c | 41 ++++++++++++----------------------------- 1 file changed, 12 insertions(+), 29 deletions(-) (limited to 'src/game') diff --git a/src/game/g_combat.c b/src/game/g_combat.c index c095d1c..50bfea3 100644 --- a/src/game/g_combat.c +++ b/src/game/g_combat.c @@ -1451,46 +1451,29 @@ void G_Damage( gentity_t *targ, gentity_t *inflictor, gentity_t *attacker, attacker->client->bufferedBlobCount < MAX_BUFFERED_BLOBS ) { g_damageBlob_t *blob; - int flags = 0; + + blob = attacker->client->blobBuffer + + ( attacker->client->bufferedBlobCount++ ); + + blob->flags = 0; + blob->value = take; if( OnSameTeam( attacker, targ ) || ( targ->s.eType == ET_BUILDABLE && attacker->client->pers.teamSelection == targ->buildableTeam ) ) - flags |= DAMAGE_BLOB_FRIENDLY; + blob->flags |= DAMAGE_BLOB_FRIENDLY; if( targ->s.eType == ET_BUILDABLE ) - flags |= DAMAGE_BLOB_BUILDABLE; + blob->flags |= DAMAGE_BLOB_BUILDABLE; if( dflags & DAMAGE_RADIUS ) { - vec3_t mins = {0}, maxs = {0}; - - flags |= DAMAGE_BLOB_SPLASH; - - switch( targ->s.eType ) - { - case ET_BUILDABLE: - BG_BuildableBoundingBox( targ->s.modelindex, mins, maxs ); - break; - - case ET_PLAYER: - BG_ClassBoundingBox( targ->client->ps.stats[ STAT_CLASS ], mins, maxs, NULL, NULL, NULL ); - break; - } - - VectorAdd( mins, maxs, point ); - VectorScale( point, 0.5f, point ); - VectorAdd( point, targ->s.origin, point ); + blob->flags |= DAMAGE_BLOB_SPLASH; + VectorAdd( targ->r.absmin, targ->r.absmax, blob->origin ); + VectorScale( blob->origin, 0.5f, blob->origin ); } else if( inflictor->s.eType == ET_MISSILE ) - VectorCopy( inflictor->r.currentOrigin, point ); - - blob = attacker->client->blobBuffer + - ( attacker->client->bufferedBlobCount++ ); - - VectorCopy( point, blob->origin ); - blob->value = take; - blob->flags = flags; + VectorCopy( inflictor->r.currentOrigin, blob->origin ); } if( targ->health <= 0 ) -- cgit From 752d1bbed1f59eb45b3c89cbddc1430d817b1102 Mon Sep 17 00:00:00 2001 From: Paweł Redman Date: Sat, 4 Apr 2015 12:38:02 +0200 Subject: Fix blob origin not being set for hitscan weapons. --- src/game/g_combat.c | 2 ++ 1 file changed, 2 insertions(+) (limited to 'src/game') diff --git a/src/game/g_combat.c b/src/game/g_combat.c index 50bfea3..0c6086d 100644 --- a/src/game/g_combat.c +++ b/src/game/g_combat.c @@ -1474,6 +1474,8 @@ void G_Damage( gentity_t *targ, gentity_t *inflictor, gentity_t *attacker, } else if( inflictor->s.eType == ET_MISSILE ) VectorCopy( inflictor->r.currentOrigin, blob->origin ); + else + VectorCopy( point, blob->origin ); } if( targ->health <= 0 ) -- cgit