diff options
Diffstat (limited to 'src/game')
-rw-r--r-- | src/game/bg_misc.c | 2 | ||||
-rw-r--r-- | src/game/g_client.c | 53 | ||||
-rw-r--r-- | src/game/g_combat.c | 49 | ||||
-rw-r--r-- | src/game/g_local.h | 2 |
4 files changed, 78 insertions, 28 deletions
diff --git a/src/game/bg_misc.c b/src/game/bg_misc.c index 68b6b9da..893f2f2d 100644 --- a/src/game/bg_misc.c +++ b/src/game/bg_misc.c @@ -1462,7 +1462,7 @@ classAttributes_t bg_classList[ ] = "chimera", //char *classname; "Chimera", //char *humanname; "prowl", //char *modelname; - 1.0f, //float modelScale; + 0.75f, //float modelScale; "default", //char *skinname; "alien_hud", //char *hudname; ( 1 << S1 )|( 1 << S2 )|( 1 << S3 ), //int stages diff --git a/src/game/g_client.c b/src/game/g_client.c index 224c4bca..edd2ebed 100644 --- a/src/game/g_client.c +++ b/src/game/g_client.c @@ -709,6 +709,7 @@ void SpawnCorpse( gentity_t *ent ) body->r.contents = CONTENTS_CORPSE; body->clipmask = CONTENTS_SOLID | CONTENTS_PLAYERCLIP; body->s.clientNum = ent->client->ps.stats[ STAT_PCLASS ]; + body->nonSegModel = ent->client->ps.persistant[ PERS_STATE ] & PS_NONSEGMODEL; if( ent->client->ps.stats[ STAT_PTEAM ] == PTE_HUMANS ) { @@ -746,21 +747,45 @@ void SpawnCorpse( gentity_t *ent ) } body->s.legsAnim = ent->s.legsAnim; - switch( body->s.legsAnim & ~ANIM_TOGGLEBIT ) + + if( !body->nonSegModel ) { - case BOTH_DEATH1: - case BOTH_DEAD1: - body->s.torsoAnim = body->s.legsAnim = BOTH_DEAD1; - break; - case BOTH_DEATH2: - case BOTH_DEAD2: - body->s.torsoAnim = body->s.legsAnim = BOTH_DEAD2; - break; - case BOTH_DEATH3: - case BOTH_DEAD3: - default: - body->s.torsoAnim = body->s.legsAnim = BOTH_DEAD3; - break; + switch( body->s.legsAnim & ~ANIM_TOGGLEBIT ) + { + case BOTH_DEATH1: + case BOTH_DEAD1: + body->s.torsoAnim = body->s.legsAnim = BOTH_DEAD1; + break; + case BOTH_DEATH2: + case BOTH_DEAD2: + body->s.torsoAnim = body->s.legsAnim = BOTH_DEAD2; + break; + case BOTH_DEATH3: + case BOTH_DEAD3: + default: + body->s.torsoAnim = body->s.legsAnim = BOTH_DEAD3; + break; + } + } + else + { + G_Printf( "nonsegmented death\n" ); + switch( body->s.legsAnim & ~ANIM_TOGGLEBIT ) + { + case NSPA_DEATH1: + case NSPA_DEAD1: + body->s.legsAnim = NSPA_DEAD1; + break; + case NSPA_DEATH2: + case NSPA_DEAD2: + body->s.legsAnim = NSPA_DEAD2; + break; + case NSPA_DEATH3: + case NSPA_DEAD3: + default: + body->s.legsAnim = NSPA_DEAD3; + break; + } } body->takedamage = qfalse; diff --git a/src/game/g_combat.c b/src/game/g_combat.c index a394d29f..391c09b6 100644 --- a/src/game/g_combat.c +++ b/src/game/g_combat.c @@ -312,18 +312,37 @@ void player_die( gentity_t *self, gentity_t *inflictor, gentity_t *attacker, int // normal death static int i; - switch( i ) + if( !( self->client->ps.persistant[ PERS_STATE ] & PS_NONSEGMODEL ) ) { - case 0: - anim = BOTH_DEATH1; - break; - case 1: - anim = BOTH_DEATH2; - break; - case 2: - default: - anim = BOTH_DEATH3; - break; + switch( i ) + { + case 0: + anim = BOTH_DEATH1; + break; + case 1: + anim = BOTH_DEATH2; + break; + case 2: + default: + anim = BOTH_DEATH3; + break; + } + } + else + { + switch( i ) + { + case 0: + anim = NSPA_DEATH1; + break; + case 1: + anim = NSPA_DEATH2; + break; + case 2: + default: + anim = NSPA_DEATH3; + break; + } } // for the no-blood option, we need to prevent the health @@ -333,8 +352,12 @@ void player_die( gentity_t *self, gentity_t *inflictor, gentity_t *attacker, int self->client->ps.legsAnim = ( ( self->client->ps.legsAnim & ANIM_TOGGLEBIT ) ^ ANIM_TOGGLEBIT ) | anim; - self->client->ps.torsoAnim = - ( ( self->client->ps.torsoAnim & ANIM_TOGGLEBIT ) ^ ANIM_TOGGLEBIT ) | anim; + + if( !( self->client->ps.persistant[ PERS_STATE ] & PS_NONSEGMODEL ) ) + { + self->client->ps.torsoAnim = + ( ( self->client->ps.torsoAnim & ANIM_TOGGLEBIT ) ^ ANIM_TOGGLEBIT ) | anim; + } G_AddEvent( self, EV_DEATH1 + i, killer ); diff --git a/src/game/g_local.h b/src/game/g_local.h index ed67b3ee..7a6c5521 100644 --- a/src/game/g_local.h +++ b/src/game/g_local.h @@ -191,6 +191,8 @@ struct gentity_s vec3_t turretAim; //TA: aim vector for turrets gentity_t *builder; //TA: occupant of this hovel + + qboolean nonSegModel; //TA: this entity uses a nonsegmented player model }; typedef enum |