summaryrefslogtreecommitdiff
path: root/src/game/g_combat.c
diff options
context:
space:
mode:
authorPaweł Redman <pawel.redman@gmail.com>2015-04-03 22:27:39 +0200
committerPaweł Redman <pawel.redman@gmail.com>2015-04-03 22:27:39 +0200
commitf3008f9819d57b671a424a0097f50c93926af74e (patch)
treeb7e3ee86c56f9eb6cf0e5fa4e2182e6916b6c740 /src/game/g_combat.c
parent1e7d1146407a5d6dde817ada79ce428b0cb0f481 (diff)
Fix radius damage missing targets randomly.
Diffstat (limited to 'src/game/g_combat.c')
-rw-r--r--src/game/g_combat.c41
1 files changed, 12 insertions, 29 deletions
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 )