summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
Diffstat (limited to 'src')
-rw-r--r--src/cgame/cg_draw.c73
-rw-r--r--src/cgame/cg_tutorial.c11
-rw-r--r--src/cgame/cg_view.c12
-rw-r--r--src/game/bg_pmove.c165
-rw-r--r--src/game/bg_public.h3
-rw-r--r--src/game/g_active.c22
-rw-r--r--src/game/g_buildable.c9
-rw-r--r--src/game/g_client.c2
-rw-r--r--src/game/g_cmds.c5
-rw-r--r--src/game/tremulous.h22
10 files changed, 8 insertions, 316 deletions
diff --git a/src/cgame/cg_draw.c b/src/cgame/cg_draw.c
index 0af9839..570276b 100644
--- a/src/cgame/cg_draw.c
+++ b/src/cgame/cg_draw.c
@@ -375,34 +375,10 @@ static void CG_DrawPlayerStamina( int ownerDraw, rectDef_t *rect,
vec4_t backColor, vec4_t foreColor,
qhandle_t shader )
{
- playerState_t *ps = &cg.snap->ps;
- float stamina = ps->stats[ STAT_STAMINA ];
- float maxStaminaBy3 = (float)STAMINA_MAX / 3.0f;
float progress;
vec4_t color;
- switch( ownerDraw )
- {
- case CG_PLAYER_STAMINA_1:
- progress = ( stamina - 2 * (int)maxStaminaBy3 ) / maxStaminaBy3;
- break;
- case CG_PLAYER_STAMINA_2:
- progress = ( stamina - (int)maxStaminaBy3 ) / maxStaminaBy3;
- break;
- case CG_PLAYER_STAMINA_3:
- progress = stamina / maxStaminaBy3;
- break;
- case CG_PLAYER_STAMINA_4:
- progress = ( stamina + STAMINA_MAX ) / STAMINA_MAX;
- break;
- default:
- return;
- }
-
- if( progress > 1.0f )
- progress = 1.0f;
- else if( progress < 0.0f )
- progress = 0.0f;
+ progress = 0.0f;
Vector4Lerp( progress, backColor, foreColor, color );
@@ -419,25 +395,9 @@ CG_DrawPlayerStaminaBolt
static void CG_DrawPlayerStaminaBolt( rectDef_t *rect, vec4_t backColor,
vec4_t foreColor, qhandle_t shader )
{
- float stamina = cg.snap->ps.stats[ STAT_STAMINA ];
vec4_t color;
- if( cg.predictedPlayerState.stats[ STAT_STATE ] & SS_SPEEDBOOST )
- {
- if( stamina >= 0 )
- Vector4Lerp( ( sin( cg.time / 150.0f ) + 1 ) / 2,
- backColor, foreColor, color );
- else
- Vector4Lerp( ( sin( cg.time / 2000.0f ) + 1 ) / 2,
- backColor, foreColor, color );
- }
- else
- {
- if( stamina < 0 )
- Vector4Copy( backColor, color );
- else
- Vector4Copy( foreColor, color );
- }
+ Vector4Copy( backColor, color );
trap_R_SetColor( color );
CG_DrawPic( rect->x, rect->y, rect->w, rect->h, shader );
@@ -3460,31 +3420,6 @@ void CG_RunMenuScript( char **args )
}
//END TA UI
-
-/*
-================
-CG_DrawLighting
-
-================
-*/
-static void CG_DrawLighting( void )
-{
- // centity_t *cent;
-
- // cent = &cg_entities[ cg.snap->ps.clientNum ];
-
- //fade to black if stamina is low
- if( ( cg.snap->ps.stats[ STAT_STAMINA ] < STAMINA_BLACKOUT_LEVEL ) &&
- ( cg.snap->ps.stats[ STAT_TEAM ] == TEAM_HUMANS ) )
- {
- vec4_t black = { 0, 0, 0, 0 };
- black[ 3 ] = 1.0 - ( (float)( cg.snap->ps.stats[ STAT_STAMINA ] + 1000 ) / 200.0f );
- trap_R_SetColor( black );
- CG_DrawPic( 0, 0, 640, 480, cgs.media.whiteShader );
- trap_R_SetColor( NULL );
- }
-}
-
/*
===============================================================================
@@ -4162,10 +4097,6 @@ static void CG_Draw2D( void )
if( cg.levelShot )
return;
- // fading to black if stamina runs out
- // (only 2D that can't be disabled)
- CG_DrawLighting( );
-
if( cg_draw2D.integer == 0 )
return;
diff --git a/src/cgame/cg_tutorial.c b/src/cgame/cg_tutorial.c
index d36ecac..d2f01b3 100644
--- a/src/cgame/cg_tutorial.c
+++ b/src/cgame/cg_tutorial.c
@@ -514,17 +514,6 @@ static void CG_HumanText( char *text, playerState_t *ps )
BG_Upgrade( UP_MEDKIT )->humanName ) );
}
- if( ps->stats[ STAT_STAMINA ] <= STAMINA_BLACKOUT_LEVEL )
- {
- Q_strcat( text, MAX_TUTORIAL_TEXT,
- "You are blacking out. Stop sprinting to recover stamina\n" );
- }
- else if( ps->stats[ STAT_STAMINA ] <= STAMINA_SLOW_LEVEL )
- {
- Q_strcat( text, MAX_TUTORIAL_TEXT,
- "Your stamina is low. Stop sprinting to recover\n" );
- }
-
switch( cg.nearUsableBuildable )
{
case BA_H_ARMOURY:
diff --git a/src/cgame/cg_view.c b/src/cgame/cg_view.c
index 1221fe9..333e421 100644
--- a/src/cgame/cg_view.c
+++ b/src/cgame/cg_view.c
@@ -809,18 +809,6 @@ void CG_OffsetFirstPersonView( void )
cg.predictedPlayerState.pm_type == PM_JETPACK ) )
{
angles[PITCH] += cg.bobfracsin * bob2 * 0.5;
-
- // heavy breathing effects //FIXME: sound
- if( cg.predictedPlayerState.stats[ STAT_STAMINA ] < STAMINA_BREATHING_LEVEL )
- {
- float deltaBreath = ( cg.predictedPlayerState.stats[ STAT_STAMINA ] -
- STAMINA_BREATHING_LEVEL ) / -250.0;
- float deltaAngle = cos( (float)cg.time/150.0 ) * deltaBreath;
-
- deltaAngle += ( deltaAngle < 0 ? -deltaAngle : deltaAngle ) * 0.5;
-
- angles[ PITCH ] -= deltaAngle;
- }
}
//===================================
diff --git a/src/game/bg_pmove.c b/src/game/bg_pmove.c
index 476e195..bdddfc3 100644
--- a/src/game/bg_pmove.c
+++ b/src/game/bg_pmove.c
@@ -406,57 +406,6 @@ static float PM_CmdScale( usercmd_t *cmd )
if( pm->ps->stats[ STAT_TEAM ] == TEAM_HUMANS && pm->ps->pm_type == PM_NORMAL )
{
- qboolean wasSprinting;
- qboolean sprint;
- wasSprinting = sprint = pm->ps->stats[ STAT_STATE ] & SS_SPEEDBOOST;
-
- if( pm->ps->persistant[ PERS_STATE ] & PS_SPRINTTOGGLE )
- {
- if( cmd->buttons & BUTTON_SPRINT &&
- !( pm->ps->pm_flags & PMF_SPRINTHELD ) )
- {
- sprint = !sprint;
- pm->ps->pm_flags |= PMF_SPRINTHELD;
- }
- else if( pm->ps->pm_flags & PMF_SPRINTHELD &&
- !( cmd->buttons & BUTTON_SPRINT ) )
- pm->ps->pm_flags &= ~PMF_SPRINTHELD;
- }
- else
- sprint = cmd->buttons & BUTTON_SPRINT;
-
- if( sprint )
- pm->ps->stats[ STAT_STATE ] |= SS_SPEEDBOOST;
- else if( wasSprinting && !sprint )
- pm->ps->stats[ STAT_STATE ] &= ~SS_SPEEDBOOST;
-
- // Walk overrides sprint. We keep the state that we want to be sprinting
- // (above), but don't apply the modifier, and in g_active we skip taking
- // the stamina too.
- if( sprint && !( cmd->buttons & BUTTON_WALKING ) )
- modifier *= HUMAN_SPRINT_MODIFIER;
- else
- modifier *= HUMAN_JOG_MODIFIER;
-
- if( cmd->forwardmove < 0 )
- {
- //can't run backwards
- modifier *= HUMAN_BACK_MODIFIER;
- }
- else if( cmd->rightmove )
- {
- //can't move that fast sideways
- modifier *= HUMAN_SIDE_MODIFIER;
- }
-
- //must have have stamina to jump
- if( pm->ps->stats[ STAT_STAMINA ] < STAMINA_SLOW_LEVEL + STAMINA_JUMP_TAKE )
- cmd->upmove = 0;
-
- //slow down once stamina depletes
- if( pm->ps->stats[ STAT_STAMINA ] <= STAMINA_SLOW_LEVEL )
- modifier *= (float)( pm->ps->stats[ STAT_STAMINA ] + STAMINA_MAX ) / (float)(STAMINA_SLOW_LEVEL + STAMINA_MAX);
-
if( pm->ps->stats[ STAT_STATE ] & SS_CREEPSLOWED )
{
if( BG_InventoryContainsUpgrade( UP_LIGHTARMOUR, pm->ps->stats ) ||
@@ -957,10 +906,6 @@ static qboolean PM_CheckJump( void )
pm->ps->stats[ STAT_MISC ] > 0 )
return qfalse;
- if( ( pm->ps->stats[ STAT_TEAM ] == TEAM_HUMANS ) &&
- ( pm->ps->stats[ STAT_STAMINA ] < STAMINA_SLOW_LEVEL + STAMINA_JUMP_TAKE ) )
- return qfalse;
-
//no bunny hopping off a dodge
if( pm->ps->stats[ STAT_TEAM ] == TEAM_HUMANS &&
pm->ps->pm_time )
@@ -999,10 +944,6 @@ static qboolean PM_CheckJump( void )
pml.walking = qfalse;
pm->ps->pm_flags |= PMF_JUMP_HELD;
- // take some stamina off
- if( pm->ps->stats[ STAT_TEAM ] == TEAM_HUMANS )
- pm->ps->stats[ STAT_STAMINA ] -= STAMINA_JUMP_TAKE;
-
pm->ps->groundEntityNum = ENTITYNUM_NONE;
// jump away from wall
@@ -1084,108 +1025,6 @@ static qboolean PM_CheckWaterJump( void )
return qtrue;
}
-
-/*
-==================
-PM_CheckDodge
-
-Checks the dodge key and starts a human dodge or sprint
-==================
-*/
-static qboolean PM_CheckDodge( void )
-{
- vec3_t right, forward, velocity = { 0.0f, 0.0f, 0.0f };
- float jump, sideModifier;
- int i;
-
- if( pm->ps->stats[ STAT_TEAM ] != TEAM_HUMANS )
- return qfalse;
-
- // Landed a dodge
- if( ( pm->ps->pm_flags & PMF_CHARGE ) &&
- pm->ps->groundEntityNum != ENTITYNUM_NONE )
- {
- pm->ps->pm_flags = ( pm->ps->pm_flags & ~PMF_CHARGE ) | PMF_TIME_LAND;
- pm->ps->pm_time = HUMAN_DODGE_TIMEOUT;
- }
-
- // Reasons why we can't start a dodge or sprint
- if( pm->ps->pm_type != PM_NORMAL || pm->ps->stats[ STAT_STAMINA ] < STAMINA_SLOW_LEVEL + STAMINA_DODGE_TAKE ||
- ( pm->ps->pm_flags & PMF_DUCKED ) )
- return qfalse;
-
- // Can't dodge forward
- if( pm->cmd.forwardmove > 0 )
- return qfalse;
-
- // Reasons why we can't start a dodge only
- if( pm->ps->pm_flags & ( PMF_TIME_LAND | PMF_CHARGE ) ||
- pm->ps->groundEntityNum == ENTITYNUM_NONE ||
- !( pm->cmd.buttons & BUTTON_DODGE ) )
- return qfalse;
-
- // Dodge direction specified with movement keys
- if( ( !pm->cmd.rightmove && !pm->cmd.forwardmove ) || pm->cmd.upmove )
- return qfalse;
-
- AngleVectors( pm->ps->viewangles, NULL, right, NULL );
- forward[ 0 ] = -right[ 1 ];
- forward[ 1 ] = right[ 0 ];
- forward[ 2 ] = 0.0f;
-
- // Dodge magnitude is based on the jump magnitude scaled by the modifiers
- jump = BG_Class( pm->ps->stats[ STAT_CLASS ] )->jumpMagnitude;
- if( pm->cmd.rightmove && pm->cmd.forwardmove )
- jump *= ( 0.5f * M_SQRT2 );
-
- // Weaken dodge if slowed
- if( ( pm->ps->stats[ STAT_STATE ] & SS_SLOWLOCKED ) ||
- ( pm->ps->stats[ STAT_STATE ] & SS_CREEPSLOWED ) ||
- ( pm->ps->eFlags & EF_POISONCLOUDED ) )
- sideModifier = HUMAN_DODGE_SLOWED_MODIFIER;
- else
- sideModifier = HUMAN_DODGE_SIDE_MODIFIER;
-
- // The dodge sets minimum velocity
- if( pm->cmd.rightmove )
- {
- if( pm->cmd.rightmove < 0 )
- VectorNegate( right, right );
- VectorMA( velocity, jump * sideModifier, right, velocity );
- }
-
- if( pm->cmd.forwardmove )
- {
- if( pm->cmd.forwardmove < 0 )
- VectorNegate( forward, forward );
- VectorMA( velocity, jump * sideModifier, forward, velocity );
- }
-
- velocity[ 2 ] = jump * HUMAN_DODGE_UP_MODIFIER;
-
- // Make sure client has minimum velocity
- for( i = 0; i < 3; i++ )
- {
- if( ( velocity[ i ] < 0.0f &&
- pm->ps->velocity[ i ] > velocity[ i ] ) ||
- ( velocity[ i ] > 0.0f &&
- pm->ps->velocity[ i ] < velocity[ i ] ) )
- pm->ps->velocity[ i ] = velocity[ i ];
- }
-
- // Jumped away
- pml.groundPlane = qfalse;
- pml.walking = qfalse;
- pm->ps->groundEntityNum = ENTITYNUM_NONE;
- pm->ps->pm_flags |= PMF_CHARGE;
- pm->ps->stats[ STAT_STAMINA ] -= STAMINA_DODGE_TAKE;
- pm->ps->legsAnim = ( ( pm->ps->legsAnim & ANIM_TOGGLEBIT ) ^
- ANIM_TOGGLEBIT ) | LEGS_JUMP;
- PM_AddEvent( EV_JUMP );
-
- return qtrue;
-}
-
/*
===================
PM_WaterJumpMove
@@ -2909,9 +2748,6 @@ static void PM_Footsteps( void )
bobmove *= BG_Class( pm->ps->stats[ STAT_CLASS ] )->bobCycle;
- if( pm->ps->stats[ STAT_STATE ] & SS_SPEEDBOOST )
- bobmove *= HUMAN_SPRINT_MODIFIER;
-
// check for footstep / splash sounds
old = pm->ps->bobCycle;
pm->ps->bobCycle = (int)( old + bobmove * pml.msec ) & 255;
@@ -4169,7 +4005,6 @@ void PmoveSingle( pmove_t *pmove )
PM_DeadMove( );
PM_DropTimers( );
- PM_CheckDodge( );
if( pm->ps->pm_type == PM_JETPACK )
PM_JetPackMove( );
diff --git a/src/game/bg_public.h b/src/game/bg_public.h
index 1e9d23c..61da2f7 100644
--- a/src/game/bg_public.h
+++ b/src/game/bg_public.h
@@ -224,13 +224,12 @@ typedef enum
STAT_MAX_HEALTH,// health / armor limit, changable by handicap
STAT_CLASS, // player class (for aliens AND humans)
STAT_TEAM, // player team
- STAT_STAMINA, // stamina (human only)
STAT_STATE, // client states e.g. wall climbing
STAT_MISC, // for uh...misc stuff (pounce, trample, lcannon)
STAT_BUILDABLE, // which ghost model to display for building
STAT_FALLDIST, // the distance the player fell
STAT_VIEWLOCK // direction to lock the view in
- // netcode has space for 3 more
+ // netcode has space for 4 more
} statIndex_t;
#define SCA_WALLCLIMBER 0x00000001
diff --git a/src/game/g_active.c b/src/game/g_active.c
index 0c84f57..2bf6400 100644
--- a/src/game/g_active.c
+++ b/src/game/g_active.c
@@ -631,7 +631,6 @@ void SpectatorThink( gentity_t *ent, usercmd_t *ucmd )
client->ps.pm_flags |= PMF_QUEUED;
client->ps.speed = client->pers.flySpeed;
- client->ps.stats[ STAT_STAMINA ] = 0;
client->ps.stats[ STAT_MISC ] = 0;
client->ps.stats[ STAT_BUILDABLE ] = BA_NONE;
client->ps.stats[ STAT_CLASS ] = PCL_NONE;
@@ -807,26 +806,10 @@ void ClientTimerActions( gentity_t *ent, int msec )
client->ps.stats[ STAT_STATE ] &= ~SS_INVI;
}
- // Restore or subtract stamina
- if( stopped || client->ps.pm_type == PM_JETPACK )
- client->ps.stats[ STAT_STAMINA ] += STAMINA_STOP_RESTORE;
- else if( ( client->ps.stats[ STAT_STATE ] & SS_SPEEDBOOST ) &&
- !( client->buttons & BUTTON_WALKING ) ) // walk overrides sprint
- client->ps.stats[ STAT_STAMINA ] -= STAMINA_SPRINT_TAKE;
- else if( walking || crouched )
- client->ps.stats[ STAT_STAMINA ] += STAMINA_WALK_RESTORE;
-
- // Check stamina limits
- if( client->ps.stats[ STAT_STAMINA ] > STAMINA_MAX )
- client->ps.stats[ STAT_STAMINA ] = STAMINA_MAX;
- else if( client->ps.stats[ STAT_STAMINA ] < -STAMINA_MAX )
- client->ps.stats[ STAT_STAMINA ] = -STAMINA_MAX;
-
- // Regenerate health and stamina if we have got a Biokit
+ // Regenerate health if we have got a Biokit
if( BG_InventoryContainsUpgrade( UP_BIOKIT, client->ps.stats ) )
{
int rate_health = BIOKIT_HEALTH_RATE;
- int rate_stamina = BIOKIT_STAMINA_RATE;
if( ent->nextRegenTime < level.time && ent->health > 0 && rate_health > 0 &&
ent->health < client->ps.stats[ STAT_MAX_HEALTH ] )
@@ -840,9 +823,6 @@ void ClientTimerActions( gentity_t *ent, int msec )
ent->nextRegenTime = level.time + 5000/rate_health;
ent->client->alreadyRegenerated = qtrue;
}
-
- if( client->ps.stats[ STAT_STAMINA ] + rate_stamina <= STAMINA_MAX )
- client->ps.stats[ STAT_STAMINA ] += rate_stamina;
}
if( weapon == WP_ABUILD ||
diff --git a/src/game/g_buildable.c b/src/game/g_buildable.c
index 21f5424..fa66979 100644
--- a/src/game/g_buildable.c
+++ b/src/game/g_buildable.c
@@ -2830,8 +2830,7 @@ void HMedistat_Think( gentity_t *self )
if( player->client && player->client->ps.stats[ STAT_TEAM ] == TEAM_HUMANS )
{
- if( ( player->health < player->client->ps.stats[ STAT_MAX_HEALTH ] ||
- player->client->ps.stats[ STAT_STAMINA ] < STAMINA_MAX ) &&
+ if( player->health < player->client->ps.stats[ STAT_MAX_HEALTH ] &&
PM_Live( player->client->ps.pm_type ) )
{
self->enemy = player;
@@ -2861,12 +2860,6 @@ void HMedistat_Think( gentity_t *self )
}
else if( self->enemy && self->enemy->client ) //heal!
{
- if( self->enemy->client->ps.stats[ STAT_STAMINA ] < STAMINA_MAX )
- self->enemy->client->ps.stats[ STAT_STAMINA ] += STAMINA_MEDISTAT_RESTORE;
-
- if( self->enemy->client->ps.stats[ STAT_STAMINA ] > STAMINA_MAX )
- self->enemy->client->ps.stats[ STAT_STAMINA ] = STAMINA_MAX;
-
self->enemy->health++;
//if they're completely healed, give them a medkit
diff --git a/src/game/g_client.c b/src/game/g_client.c
index 896a7fc..bfb79b9 100644
--- a/src/game/g_client.c
+++ b/src/game/g_client.c
@@ -1505,8 +1505,6 @@ void ClientSpawn( gentity_t *ent, gentity_t *spawn, vec3_t origin, vec3_t angles
for( i = 0; i < MAX_CLIENTS; i++ )
ent->credits[ i ] = 0;
- client->ps.stats[ STAT_STAMINA ] = STAMINA_MAX;
-
G_SetOrigin( ent, spawn_origin );
VectorCopy( spawn_origin, client->ps.origin );
diff --git a/src/game/g_cmds.c b/src/game/g_cmds.c
index f3cada7..74dea71 100644
--- a/src/game/g_cmds.c
+++ b/src/game/g_cmds.c
@@ -450,7 +450,7 @@ void Cmd_Give_f( gentity_t *ent )
if( trap_Argc( ) < 2 )
{
ADMP( "usage: give [what]\n" );
- ADMP( "usage: valid choices are: all, health, funds [amount], stamina, "
+ ADMP( "usage: valid choices are: all, health, funds [amount], "
"poison, gas, ammo\n" );
return;
}
@@ -487,9 +487,6 @@ void Cmd_Give_f( gentity_t *ent )
G_AddCreditToClient( ent->client, (short)credits, qtrue );
}
- if( give_all || Q_stricmp( name, "stamina" ) == 0 )
- ent->client->ps.stats[ STAT_STAMINA ] = STAMINA_MAX;
-
if( Q_stricmp( name, "poison" ) == 0 )
{
if( ent->client->pers.teamSelection == TEAM_HUMANS )
diff --git a/src/game/tremulous.h b/src/game/tremulous.h
index 69eb4b1..bbc977d 100644
--- a/src/game/tremulous.h
+++ b/src/game/tremulous.h
@@ -246,7 +246,7 @@ TREMULOUS EDGE MOD SRC FILE
#define LEVEL3_CLAW_K_SCALE 1.0f
#define LEVEL3_CLAW_U_REPEAT 800
#define LEVEL3_CLAW_U_K_SCALE 1.0f
-#define LEVEL3_POUNCE_DMG ADM(90)
+#define LEVEL3_POUNCE_DMG ADM(23)
#define LEVEL3_POUNCE_RANGE 48.0f
#define LEVEL3_POUNCE_UPG_RANGE LEVEL3_POUNCE_RANGE + 3.0f
#define LEVEL3_POUNCE_WIDTH 14.0f
@@ -276,7 +276,7 @@ TREMULOUS EDGE MOD SRC FILE
#define LEVEL4_CLAW_HEIGHT 20.0f
#define LEVEL4_CLAW_REPEAT 800
#define LEVEL4_CLAW_K_SCALE 1.0f
-#define LEVEL4_TRAMPLE_DMG ADM(111)
+#define LEVEL4_TRAMPLE_DMG ADM(28)
#define LEVEL4_TRAMPLE_SPEED 2.0f
#define LEVEL4_TRAMPLE_CHARGE_MIN 375 // minimum msec to start a charge
#define LEVEL4_TRAMPLE_CHARGE_MAX 1000 // msec to maximum charge stored
@@ -324,25 +324,7 @@ TREMULOUS EDGE MOD SRC FILE
* HUMAN
*/
-#define HUMAN_SPRINT_MODIFIER 1.28f
-#define HUMAN_JOG_MODIFIER 1.1f
-#define HUMAN_BACK_MODIFIER 0.8f
-#define HUMAN_SIDE_MODIFIER 0.9f
-#define HUMAN_DODGE_SIDE_MODIFIER 2.9f
-#define HUMAN_DODGE_SLOWED_MODIFIER 0.9f
-#define HUMAN_DODGE_UP_MODIFIER 0.5f
-#define HUMAN_DODGE_TIMEOUT 500
#define HUMAN_LAND_FRICTION 3.0f
-#define STAMINA_STOP_RESTORE 20
-#define STAMINA_WALK_RESTORE 15
-#define STAMINA_MEDISTAT_RESTORE 30 // stacked on STOP or WALK
-#define STAMINA_SPRINT_TAKE 8
-#define STAMINA_JUMP_TAKE 250
-#define STAMINA_DODGE_TAKE 250
-#define STAMINA_MAX 1200
-#define STAMINA_BREATHING_LEVEL 0
-#define STAMINA_SLOW_LEVEL -500
-#define STAMINA_BLACKOUT_LEVEL -800
#define HUMAN_SPAWN_REPEAT_TIME 11000
#define HUMAN_REGEN_DAMAGE_TIME 2000 //msec since damage before dcc repairs
#define HUMAN_MAX_CREDITS 2000