summaryrefslogtreecommitdiff
path: root/src/game
diff options
context:
space:
mode:
Diffstat (limited to 'src/game')
-rw-r--r--src/game/bg_misc.c2
-rw-r--r--src/game/g_client.c53
-rw-r--r--src/game/g_combat.c49
-rw-r--r--src/game/g_local.h2
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