diff options
| author | Tim Angus <tim@ngus.net> | 2001-09-15 18:45:39 +0000 | 
|---|---|---|
| committer | Tim Angus <tim@ngus.net> | 2001-09-15 18:45:39 +0000 | 
| commit | 1b02716b661584dddb150e6346aeed3934be418a (patch) | |
| tree | 1733f8765c68cc1f28041fa4c86e828fab39b71c /src/cgame | |
| parent | cab6cb5c4a989b11e6f45b74f87d84a961235984 (diff) | |
Trapper tweaks
Diffstat (limited to 'src/cgame')
| -rw-r--r-- | src/cgame/cg_local.h | 4 | ||||
| -rw-r--r-- | src/cgame/cg_view.c | 54 | ||||
| -rw-r--r-- | src/cgame/cg_weapons.c | 2 | 
3 files changed, 59 insertions, 1 deletions
diff --git a/src/cgame/cg_local.h b/src/cgame/cg_local.h index 89ca9e80..90c4320a 100644 --- a/src/cgame/cg_local.h +++ b/src/cgame/cg_local.h @@ -669,6 +669,10 @@ typedef struct {    vec3_t    lastNormal;   //TA: view smoothage    vec3_t    lastVangles;  //TA: view smoothage    smooth_t  sList[ MAXSMOOTHS ]; //TA: WW smoothing + +  int       forwardMoveTime; //TA: for struggling +  int       rightMoveTime; +  int       upMoveTime;  } cg_t; diff --git a/src/cgame/cg_view.c b/src/cgame/cg_view.c index 28ec3094..b70fc0e8 100644 --- a/src/cgame/cg_view.c +++ b/src/cgame/cg_view.c @@ -429,6 +429,60 @@ static void CG_OffsetFirstPersonView( void ) {      }    } +#define STRUGGLE_DIST 5.0f +#define STRUGGLE_TIME 250 + +  //allow the player to struggle a little whilst grabbed +  if( cg.predictedPlayerState.pm_type == PM_GRABBED ) +  { +    vec3_t    forward, right, up; +    usercmd_t cmd; +    int       cmdNum; +    float     fFraction, rFraction, uFraction; +    float     fFraction2, rFraction2, uFraction2; + +    cmdNum = trap_GetCurrentCmdNumber(); +    trap_GetUserCmd( cmdNum, &cmd ); + +    AngleVectors( angles, forward, right, up ); + +    fFraction = (float)( cg.time - cg.forwardMoveTime ) / STRUGGLE_TIME; +    rFraction = (float)( cg.time - cg.rightMoveTime ) / STRUGGLE_TIME; +    uFraction = (float)( cg.time - cg.upMoveTime ) / STRUGGLE_TIME; + +    if( fFraction > 1.0f ) +      fFraction = 1.0f; +    if( rFraction > 1.0f ) +      rFraction = 1.0f; +    if( uFraction > 1.0f ) +      uFraction = 1.0f; +     +    fFraction2 = -sin( fFraction * M_PI / 2 ); +    rFraction2 = -sin( rFraction * M_PI / 2 ); +    uFraction2 = -sin( uFraction * M_PI / 2 ); +       +    if( cmd.forwardmove > 0 ) +      VectorMA( origin, STRUGGLE_DIST * fFraction, forward, origin ); +    else if( cmd.forwardmove < 0 ) +      VectorMA( origin, -STRUGGLE_DIST * fFraction, forward, origin ); +    else +      cg.forwardMoveTime = cg.time; +       +    if( cmd.rightmove > 0 ) +      VectorMA( origin, STRUGGLE_DIST * rFraction, right, origin ); +    else if( cmd.rightmove < 0 ) +      VectorMA( origin, -STRUGGLE_DIST * rFraction, right, origin ); +    else +      cg.rightMoveTime = cg.time; +       +    if( cmd.upmove > 0 ) +      VectorMA( origin, STRUGGLE_DIST * uFraction, up, origin ); +    else if( cmd.upmove < 0 ) +      VectorMA( origin, -STRUGGLE_DIST * uFraction, up, origin ); +    else +      cg.upMoveTime = cg.time; +  } +    //TA: this *feels* more realisitic for humans    if( cg.predictedPlayerState.stats[ STAT_PTEAM ] == PTE_HUMANS )    { diff --git a/src/cgame/cg_weapons.c b/src/cgame/cg_weapons.c index fbf44067..9aacd702 100644 --- a/src/cgame/cg_weapons.c +++ b/src/cgame/cg_weapons.c @@ -692,7 +692,7 @@ void CG_RegisterWeapon( int weaponNum ) {      break;    case WP_LOCKBLOB_LAUNCHER: -    weaponInfo->missileModel = trap_R_RegisterModel( "models/ammo/sawblade/sawblade.md3" ); +    weaponInfo->missileModel = trap_R_RegisterModel( "models/ammo/trapper/trapper.md3" );  /*    weaponInfo->missileSound = trap_S_RegisterSound( "sound/weapons/rocket/rockfly.wav", qfalse );      weaponInfo->missileTrailFunc = CG_RocketTrail;      weaponInfo->missileDlight = 200;  | 
