summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorTim Angus <tim@ngus.net>2002-09-16 01:24:12 +0000
committerTim Angus <tim@ngus.net>2002-09-16 01:24:12 +0000
commit8ecf6d9e5d2a03e965647ac264940f8cd34eef0a (patch)
tree579d5c88e7d3d3b767e39d3cdd3e40ebc974bf75 /src
parenteb401f8e27491f048ca0095a3e2f984e2e3a151b (diff)
* Added global header tremulous.h in preparation for balancing
* Constants propogated throughout the source * Various random fixes and tweaks
Diffstat (limited to 'src')
-rw-r--r--src/cgame/cg_drawtools.c2
-rw-r--r--src/cgame/cg_ents.c2
-rw-r--r--src/cgame/cg_main.c16
-rw-r--r--src/cgame/cg_predict.c2
-rw-r--r--src/cgame/cg_scanner.c30
-rw-r--r--src/cgame/cg_view.c14
-rw-r--r--src/cgame/cg_weapons.c18
-rw-r--r--src/game/bg_misc.c647
-rw-r--r--src/game/bg_pmove.c78
-rw-r--r--src/game/bg_public.h66
-rw-r--r--src/game/g_active.c51
-rw-r--r--src/game/g_buildable.c85
-rw-r--r--src/game/g_client.c5
-rw-r--r--src/game/g_cmds.c2
-rw-r--r--src/game/g_local.h4
-rw-r--r--src/game/g_main.c8
-rw-r--r--src/game/g_missile.c57
-rw-r--r--src/game/g_weapon.c89
-rw-r--r--src/game/tremulous.h466
19 files changed, 1024 insertions, 618 deletions
diff --git a/src/cgame/cg_drawtools.c b/src/cgame/cg_drawtools.c
index 31f7f2e3..d5df1f42 100644
--- a/src/cgame/cg_drawtools.c
+++ b/src/cgame/cg_drawtools.c
@@ -328,7 +328,7 @@ void CG_GetColorForHealth( int health, int armor, vec4_t hcolor )
}
count = armor;
- max = health * ARMOR_PROTECTION / ( 1.0 - ARMOR_PROTECTION );
+ max = health;
if( max < count )
count = max;
diff --git a/src/cgame/cg_ents.c b/src/cgame/cg_ents.c
index c4b287aa..deaf9c56 100644
--- a/src/cgame/cg_ents.c
+++ b/src/cgame/cg_ents.c
@@ -292,7 +292,7 @@ static void CG_Missile( centity_t *cent )
RotateAroundDirection( ent.axis, cg.time / 4 );
- fraction = (float)s1->generic1 / (float)LC_TOTAL_CHARGE;
+ fraction = (float)s1->generic1 / (float)LCANON_TOTAL_CHARGE;
VectorScale( ent.axis[ 0 ], fraction, ent.axis[ 0 ] );
VectorScale( ent.axis[ 1 ], fraction, ent.axis[ 1 ] );
VectorScale( ent.axis[ 2 ], fraction, ent.axis[ 2 ] );
diff --git a/src/cgame/cg_main.c b/src/cgame/cg_main.c
index e19f67d8..e0b4936d 100644
--- a/src/cgame/cg_main.c
+++ b/src/cgame/cg_main.c
@@ -564,7 +564,6 @@ called during a precache command
static void CG_RegisterSounds( void )
{
int i;
- char items[ MAX_ITEMS + 1 ];
char name[ MAX_QPATH ];
const char *soundName;
@@ -623,9 +622,6 @@ static void CG_RegisterSounds( void )
cgs.media.footsteps[ FOOTSTEP_METAL ][ i ] = trap_S_RegisterSound( name, qfalse );
}
- // only register the items that the server says we need
- strcpy( items, CG_ConfigString( CS_ITEMS ) );
-
for( i = 1 ; i < MAX_SOUNDS ; i++ )
{
soundName = CG_ConfigString( CS_SOUNDS + i );
@@ -669,7 +665,6 @@ This function may execute for a couple of minutes with a slow disk.
static void CG_RegisterGraphics( void )
{
int i;
- char items[ MAX_ITEMS + 1 ];
static char *sb_nums[ 11 ] =
{
"gfx/2d/numbers/zero_32b",
@@ -782,9 +777,6 @@ static void CG_RegisterGraphics( void )
memset( cg_weapons, 0, sizeof( cg_weapons ) );
memset( cg_upgrades, 0, sizeof( cg_upgrades ) );
- // only register the items that the server says we need
- strcpy( items, CG_ConfigString( CS_ITEMS) );
-
// wall marks
cgs.media.bulletMarkShader = trap_R_RegisterShader( "gfx/damage/bullet_mrk" );
cgs.media.burnMarkShader = trap_R_RegisterShader( "gfx/damage/burn_med_mrk" );
@@ -1502,6 +1494,12 @@ static void CG_RunCinematicFrame( int handle )
trap_CIN_RunCinematic( handle );
}
+//TA: hack to prevent warning
+static qboolean CG_OwnerDrawVisible( int parameter )
+{
+ return qfalse;
+}
+
/*
=================
CG_LoadHudMenu
@@ -1531,7 +1529,7 @@ void CG_LoadHudMenu( )
cgDC.registerFont = &trap_R_RegisterFont;
cgDC.ownerDrawItem = &CG_OwnerDraw;
cgDC.getValue = &CG_GetValue;
- cgDC.ownerDrawVisible = NULL; //&CG_OwnerDrawVisible;
+ cgDC.ownerDrawVisible = &CG_OwnerDrawVisible;
cgDC.runScript = &CG_RunMenuScript;
cgDC.getTeamColor = &CG_GetTeamColor;
cgDC.setCVar = trap_Cvar_Set;
diff --git a/src/cgame/cg_predict.c b/src/cgame/cg_predict.c
index 6f55f1ce..a8285306 100644
--- a/src/cgame/cg_predict.c
+++ b/src/cgame/cg_predict.c
@@ -414,7 +414,7 @@ void CG_PredictPlayerState( void )
if( cg.snap->ps.persistant[ PERS_TEAM ] == TEAM_SPECTATOR )
cg_pmove.tracemask &= ~CONTENTS_BODY; // spectators can fly through bodies
- cg_pmove.noFootsteps = ( cgs.dmflags & DF_NO_FOOTSTEPS ) > 0;
+ cg_pmove.noFootsteps = 0;
// save the state before the pmove so we can detect transitions
oldPlayerState = cg.predictedPlayerState;
diff --git a/src/cgame/cg_scanner.c b/src/cgame/cg_scanner.c
index 4135eec9..1c730dd7 100644
--- a/src/cgame/cg_scanner.c
+++ b/src/cgame/cg_scanner.c
@@ -13,8 +13,6 @@
#include "cg_local.h"
-#define RANGE 1000.0f
-
#define XPOS 0.0f
#define YPOS 0.0f
#define WIDTH 640.0f
@@ -30,9 +28,9 @@ static void CG_DrawBlips( vec3_t origin, vec4_t colour )
vec3_t up = { 0, 0, 1 };
RotatePointAroundVector( drawOrigin, up, origin, -cg.refdefViewAngles[ 1 ] - 90 );
- drawOrigin[ 0 ] /= ( 2 * RANGE / WIDTH );
- drawOrigin[ 1 ] /= ( 2 * RANGE / HEIGHT );
- drawOrigin[ 2 ] /= ( 2 * RANGE / WIDTH );
+ drawOrigin[ 0 ] /= ( 2 * HELMET_RANGE / WIDTH );
+ drawOrigin[ 1 ] /= ( 2 * HELMET_RANGE / HEIGHT );
+ drawOrigin[ 2 ] /= ( 2 * HELMET_RANGE / WIDTH );
trap_R_SetColor( colour );
@@ -51,7 +49,7 @@ static void CG_DrawBlips( vec3_t origin, vec4_t colour )
trap_R_SetColor( NULL );
}
-#define RANGE2 1000.0f
+#define ALIENSENSE_RANGE 1000.0f
#define XPOS2 20.0f
#define YPOS2 20.0f
@@ -129,7 +127,7 @@ void CG_AlienSense( void )
VectorClear( relOrigin );
VectorSubtract( cg.ep.humanBuildablePos[ i ], origin, relOrigin );
- if( VectorLength( relOrigin ) < RANGE2 )
+ if( VectorLength( relOrigin ) < ALIENSENSE_RANGE )
CG_DrawDir( relOrigin, buildable );
}
@@ -139,7 +137,7 @@ void CG_AlienSense( void )
VectorClear( relOrigin );
VectorSubtract( cg.ep.humanClientPos[ i ], origin, relOrigin );
- if( VectorLength( relOrigin ) < RANGE2 )
+ if( VectorLength( relOrigin ) < ALIENSENSE_RANGE )
CG_DrawDir( relOrigin, client );
}
}
@@ -167,7 +165,7 @@ void CG_Scanner( void )
VectorClear( relOrigin );
VectorSubtract( cg.ep.humanBuildablePos[ i ], origin, relOrigin );
- if( VectorLength( relOrigin ) < RANGE && ( relOrigin[ 2 ] < 0 ) )
+ if( VectorLength( relOrigin ) < HELMET_RANGE && ( relOrigin[ 2 ] < 0 ) )
CG_DrawBlips( relOrigin, hIbelow );
}
@@ -177,7 +175,7 @@ void CG_Scanner( void )
VectorClear( relOrigin );
VectorSubtract( cg.ep.alienBuildablePos[ i ], origin, relOrigin );
- if( VectorLength( relOrigin ) < RANGE && ( relOrigin[ 2 ] < 0 ) )
+ if( VectorLength( relOrigin ) < HELMET_RANGE && ( relOrigin[ 2 ] < 0 ) )
CG_DrawBlips( relOrigin, aIbelow );
}
@@ -187,7 +185,7 @@ void CG_Scanner( void )
VectorClear( relOrigin );
VectorSubtract( cg.ep.humanClientPos[ i ], origin, relOrigin );
- if( VectorLength( relOrigin ) < RANGE && ( relOrigin[ 2 ] < 0 ) )
+ if( VectorLength( relOrigin ) < HELMET_RANGE && ( relOrigin[ 2 ] < 0 ) )
CG_DrawBlips( relOrigin, hIbelow );
}
@@ -197,7 +195,7 @@ void CG_Scanner( void )
VectorClear( relOrigin );
VectorSubtract( cg.ep.alienClientPos[ i ], origin, relOrigin );
- if( VectorLength( relOrigin ) < RANGE && ( relOrigin[ 2 ] < 0 ) )
+ if( VectorLength( relOrigin ) < HELMET_RANGE && ( relOrigin[ 2 ] < 0 ) )
CG_DrawBlips( relOrigin, aIbelow );
}
@@ -209,7 +207,7 @@ void CG_Scanner( void )
VectorClear( relOrigin );
VectorSubtract( cg.ep.humanBuildablePos[ i ], origin, relOrigin );
- if( VectorLength( relOrigin ) < RANGE && ( relOrigin[ 2 ] > 0 ) )
+ if( VectorLength( relOrigin ) < HELMET_RANGE && ( relOrigin[ 2 ] > 0 ) )
CG_DrawBlips( relOrigin, hIabove );
}
@@ -219,7 +217,7 @@ void CG_Scanner( void )
VectorClear( relOrigin );
VectorSubtract( cg.ep.alienBuildablePos[ i ], origin, relOrigin );
- if( VectorLength( relOrigin ) < RANGE && ( relOrigin[ 2 ] > 0 ) )
+ if( VectorLength( relOrigin ) < HELMET_RANGE && ( relOrigin[ 2 ] > 0 ) )
CG_DrawBlips( relOrigin, aIabove );
}
@@ -229,7 +227,7 @@ void CG_Scanner( void )
VectorClear( relOrigin );
VectorSubtract( cg.ep.humanClientPos[ i ], origin, relOrigin );
- if( VectorLength( relOrigin ) < RANGE && ( relOrigin[ 2 ] > 0 ) )
+ if( VectorLength( relOrigin ) < HELMET_RANGE && ( relOrigin[ 2 ] > 0 ) )
CG_DrawBlips( relOrigin, hIabove );
}
@@ -239,7 +237,7 @@ void CG_Scanner( void )
VectorClear( relOrigin );
VectorSubtract( cg.ep.alienClientPos[ i ], origin, relOrigin );
- if( VectorLength( relOrigin ) < RANGE && ( relOrigin[ 2 ] > 0 ) )
+ if( VectorLength( relOrigin ) < HELMET_RANGE && ( relOrigin[ 2 ] > 0 ) )
CG_DrawBlips( relOrigin, aIabove );
}
}
diff --git a/src/cgame/cg_view.c b/src/cgame/cg_view.c
index afe9c979..89f25029 100644
--- a/src/cgame/cg_view.c
+++ b/src/cgame/cg_view.c
@@ -486,7 +486,7 @@ static void CG_OffsetFirstPersonView( void )
AngleVectors( angles, forward, NULL, NULL );
VectorNormalize( forward );
- fraction1 = (float)( cg.time - cg.weapon2Time ) / POUNCE_TIME;
+ fraction1 = (float)( cg.time - cg.weapon2Time ) / (float)DRAGOON_POUNCE_TIME;
if( fraction1 > 1.0f )
fraction1 = 1.0f;
@@ -556,8 +556,8 @@ static void CG_OffsetFirstPersonView( void )
float fraction = sin( ( (float)cg.time / 1000.0f ) * M_PI * 2 * PCLOUD_ROLL_FREQUENCY );
float pitchFraction = sin( ( (float)cg.time / 1000.0f ) * M_PI * 5 * PCLOUD_ROLL_FREQUENCY );
- fraction *= 1.0f - ( ( cg.time - cg.firstPoisonedTime ) / (float)PCLOUD_TIME );
- pitchFraction *= 1.0f - ( ( cg.time - cg.firstPoisonedTime ) / (float)PCLOUD_TIME );
+ fraction *= 1.0f - ( ( cg.time - cg.firstPoisonedTime ) / (float)HYDRA_PCLOUD_TIME );
+ pitchFraction *= 1.0f - ( ( cg.time - cg.firstPoisonedTime ) / (float)HYDRA_PCLOUD_TIME );
angles[ ROLL ] += fraction * PCLOUD_ROLL_AMPLITUDE;
angles[ YAW ] += fraction * PCLOUD_ROLL_AMPLITUDE;
@@ -602,7 +602,7 @@ static void CG_OffsetFirstPersonView( void )
//bit closer to the ground
mins[ 2 ] = -1.0f;
- deltaTime = cg.time - ( cg.firstKnockedTime + (int)( (float)KOVER_TIME / 5.0f ) );
+ deltaTime = cg.time - ( cg.firstKnockedTime + (int)( (float)BMOFO_KOVER_TIME / 5.0f ) );
if( deltaTime < 0 )
{
@@ -625,7 +625,7 @@ static void CG_OffsetFirstPersonView( void )
CG_Trace( &tr, baseOrigin, mins, maxs, origin, cg.predictedPlayerState.clientNum, MASK_SOLID );
VectorCopy( tr.endpos, origin );
- rollFraction = (float)deltaTime / ( (float)KOVER_TIME / 6.0f );
+ rollFraction = (float)deltaTime / ( (float)BMOFO_KOVER_TIME / 6.0f );
if( rollFraction > 1.0f )
rollFraction = 1.0f;
@@ -655,7 +655,7 @@ static void CG_OffsetFirstPersonView( void )
deltaTime = cg.time - cg.firstGetUpTime;
- rollFraction = (float)deltaTime / (float)GETUP_TIME;
+ rollFraction = (float)deltaTime / (float)BMOFO_GETUP_TIME;
if( rollFraction > 1.0f )
rollFraction = 1.0f;
@@ -872,7 +872,7 @@ static int CG_CalcFov( void )
{
phase = cg.time / 1000.0 * PCLOUD_ZOOM_FREQUENCY * M_PI * 2;
v = PCLOUD_ZOOM_AMPLITUDE * sin( phase );
- v *= 1.0f - ( ( cg.time - cg.firstPoisonedTime ) / (float)PCLOUD_TIME );
+ v *= 1.0f - ( ( cg.time - cg.firstPoisonedTime ) / (float)HYDRA_PCLOUD_TIME );
fov_x += v;
fov_y += v;
}
diff --git a/src/cgame/cg_weapons.c b/src/cgame/cg_weapons.c
index e715e544..e8c6aedf 100644
--- a/src/cgame/cg_weapons.c
+++ b/src/cgame/cg_weapons.c
@@ -99,7 +99,7 @@ void CG_TeslaTrail( vec3_t start, vec3_t end, int srcENum, int destENum )
refEntity_t *re;
//add a bunch of bolt segments
- le = CG_AllocLocalEntity();
+ le = CG_AllocLocalEntity( );
re = &le->refEntity;
le->leType = LE_LIGHTNING_BOLT;
@@ -141,8 +141,7 @@ void CG_AlienZap( vec3_t start, vec3_t end, int srcENum, int destENum )
le->destENum = destENum;
le->vOffset = -4;
- //FIXME: share with server
- le->maxRange = 200;
+ le->maxRange = CHIMERA_AREAZAP_RANGE;
VectorCopy( start, re->origin );
VectorCopy( end, re->oldorigin );
@@ -563,7 +562,7 @@ static void CG_LightningBolt( centity_t *cent, vec3_t origin )
VectorMA( muzzlePoint, 14, forward, muzzlePoint );
// project forward by the lightning range
- VectorMA( muzzlePoint, LIGHTNING_RANGE, forward, endPoint );
+ VectorMA( muzzlePoint, TESLAGEN_RANGE, forward, endPoint );
// see if it hit a wall
CG_Trace( &trace, muzzlePoint, vec3_origin, vec3_origin, endPoint,
@@ -673,6 +672,7 @@ static void CG_PoisonCloud( centity_t *cent, int firstPoisonTime )
cent->poisonTime = cg.time + POISONCLOUD_GAP;
}
+#define FIREBALL_GAP 15 //basically as fast as possible yet regular
/*
===============
@@ -697,7 +697,7 @@ static void CG_FlameTrail( centity_t *cent )
{
AngleVectors( cg.refdefViewAngles, forward, right, up );
VectorCopy( cg.refdef.vieworg, muzzlePoint );
- VectorScale( cg.predictedPlayerState.velocity, FIREBALL_LAG, pVelocity );
+ VectorScale( cg.predictedPlayerState.velocity, FLAMER_LAG, pVelocity );
}
else
{
@@ -706,10 +706,10 @@ static void CG_FlameTrail( centity_t *cent )
//FIXME: this is gonna look weird when crouching
muzzlePoint[ 2 ] += DEFAULT_VIEWHEIGHT;
- VectorScale( cent->currentState.pos.trDelta, FIREBALL_LAG, pVelocity );
+ VectorScale( cent->currentState.pos.trDelta, FLAMER_LAG, pVelocity );
}
- VectorMA( pVelocity, FIREBALL_SPEED, forward, velocity );
+ VectorMA( pVelocity, FLAMER_SPEED, forward, velocity );
//FIXME: tweak these numbers when (if?) the flamer model is done
VectorMA( muzzlePoint, 24.0f, forward, muzzlePoint );
@@ -718,7 +718,7 @@ static void CG_FlameTrail( centity_t *cent )
CG_LaunchSprite( muzzlePoint, velocity, vec3_origin, 0.0f,
0.1f, 4.0f, 40.0f, 255.0f, 255.0f,
- rand( ) % 360, cg.time, cg.time, FIREBALL_LIFETIME,
+ rand( ) % 360, cg.time, cg.time, FLAMER_LIFETIME,
cgs.media.flameShader[ 0 ], qfalse, qfalse );
//set next ball time
@@ -1012,7 +1012,7 @@ void CG_AddViewWeapon( playerState_t *ps )
if( ps->weapon == WP_LUCIFER_CANON && ps->stats[ STAT_MISC ] > 0 )
{
- float fraction = (float)ps->stats[ STAT_MISC ] / (float)LC_TOTAL_CHARGE;
+ float fraction = (float)ps->stats[ STAT_MISC ] / (float)LCANON_TOTAL_CHARGE;
VectorMA( hand.origin, random( ) * fraction, cg.refdef.viewaxis[ 0 ], hand.origin );
VectorMA( hand.origin, random( ) * fraction, cg.refdef.viewaxis[ 1 ], hand.origin );
diff --git a/src/game/bg_misc.c b/src/game/bg_misc.c
index 8870abe0..94e3a217 100644
--- a/src/game/bg_misc.c
+++ b/src/game/bg_misc.c
@@ -29,14 +29,13 @@ buildableAttributes_t bg_buildableList[ ] =
{ -15, -15, -15 }, //vec3_t mins;
{ 15, 15, 15 }, //vec3_t maxs;
TR_GRAVITY, //trType_t traj;
- 0.0, //float bounce;
- 100, //int buildPoints;
+ 0.0, //float bounce;
+ ASPAWN_BP, //int buildPoints;
( 1 << S1 )|( 1 << S2 )|( 1 << S3 ), //int stages
- 1000, //int health;
- 50, //int regenRate;
- 50, //int damage;
- 50, //int splashDamage;
- 200, //int splashRadius;
+ ASPAWN_HEALTH, //int health;
+ ASPAWN_REGEN, //int regenRate;
+ ASPAWN_SPLASHDAMAGE, //int splashDamage;
+ ASPAWN_SPLASHRADIUS, //int splashRadius;
MOD_ASPAWN, //int meansOfDeath;
BIT_ALIENS, //int team;
( 1 << WP_ABUILD )|( 1 << WP_ABUILD2 ), //weapon_t buildWeapon;
@@ -48,7 +47,7 @@ buildableAttributes_t bg_buildableList[ ] =
0.5f, //float minNormal;
qtrue, //qboolean invertNormal;
qfalse, //qboolean creepTest;
- 120, //int creepSize;
+ ASPAWN_CREEPSIZE, //int creepSize;
qfalse, //qboolean dccTest;
qfalse //qboolean reactorTest;
},
@@ -61,14 +60,13 @@ buildableAttributes_t bg_buildableList[ ] =
{ -15, -15, -15 }, //vec3_t mins;
{ 15, 15, 15 }, //vec3_t maxs;
TR_GRAVITY, //trType_t traj;
- 0.0, //float bounce;
- 80, //int buildPoints;
+ 0.0, //float bounce;
+ BARRICADE_BP, //int buildPoints;
( 1 << S1 )|( 1 << S2 )|( 1 << S3 ), //int stages
- 1000, //int health;
- 50, //int regenRate;
- 50, //int damage;
- 20, //int splashDamage;
- 50, //int splashRadius;
+ BARRICADE_HEALTH, //int health;
+ BARRICADE_REGEN, //int regenRate;
+ BARRICADE_SPLASHDAMAGE,//int splashDamage;
+ BARRICADE_SPLASHRADIUS,//int splashRadius;
MOD_ASPAWN, //int meansOfDeath;
BIT_ALIENS, //int team;
( 1 << WP_ABUILD )|( 1 << WP_ABUILD2 ), //weapon_t buildWeapon;
@@ -80,7 +78,7 @@ buildableAttributes_t bg_buildableList[ ] =
0.707f, //float minNormal;
qfalse, //qboolean invertNormal;
qtrue, //qboolean creepTest;
- 120, //int creepSize;
+ BARRICADE_CREEPSIZE, //int creepSize;
qfalse, //qboolean dccTest;
qfalse //qboolean reactorTest;
},
@@ -94,13 +92,12 @@ buildableAttributes_t bg_buildableList[ ] =
{ 26, 26, 9 }, //vec3_t maxs;
TR_GRAVITY, //trType_t traj;
0.0, //float bounce;
- 80, //int buildPoints;
+ BOOSTER_BP, //int buildPoints;
( 1 << S1 )|( 1 << S2 )|( 1 << S3 ), //int stages
- 1000, //int health;
- 50, //int regenRate;
- 50, //int damage;
- 20, //int splashDamage;
- 50, //int splashRadius;
+ BOOSTER_HEALTH, //int health;
+ BOOSTER_REGEN, //int regenRate;
+ BOOSTER_SPLASHDAMAGE, //int splashDamage;
+ BOOSTER_SPLASHRADIUS, //int splashRadius;
MOD_ASPAWN, //int meansOfDeath;
BIT_ALIENS, //int team;
( 1 << WP_ABUILD )|( 1 << WP_ABUILD2 ), //weapon_t buildWeapon;
@@ -112,7 +109,7 @@ buildableAttributes_t bg_buildableList[ ] =
0.707f, //float minNormal;
qfalse, //qboolean invertNormal;
qtrue, //qboolean creepTest;
- 120, //int creepSize;
+ BOOSTER_CREEPSIZE, //int creepSize;
qfalse, //qboolean dccTest;
qfalse //qboolean reactorTest;
},
@@ -126,13 +123,12 @@ buildableAttributes_t bg_buildableList[ ] =
{ 15, 15, 15 }, //vec3_t maxs;
TR_GRAVITY, //trType_t traj;
0.0, //float bounce;
- 80, //int buildPoints;
+ ACIDTUBE_BP, //int buildPoints;
( 1 << S1 )|( 1 << S2 )|( 1 << S3 ), //int stages
- 1000, //int health;
- 50, //int regenRate;
- 50, //int damage;
- 20, //int splashDamage;
- 400, //int splashRadius;
+ ACIDTUBE_HEALTH, //int health;
+ ACIDTUBE_REGEN, //int regenRate;
+ ACIDTUBE_SPLASHDAMAGE, //int splashDamage;
+ ACIDTUBE_SPLASHRADIUS, //int splashRadius;
MOD_ASPAWN, //int meansOfDeath;
BIT_ALIENS, //int team;
( 1 << WP_ABUILD )|( 1 << WP_ABUILD2 ), //weapon_t buildWeapon;
@@ -144,7 +140,7 @@ buildableAttributes_t bg_buildableList[ ] =
0.707f, //float minNormal;
qtrue, //qboolean invertNormal;
qtrue, //qboolean creepTest;
- 120, //int creepSize;
+ ACIDTUBE_CREEPSIZE, //int creepSize;
qfalse, //qboolean dccTest;
qfalse //qboolean reactorTest;
},
@@ -158,57 +154,55 @@ buildableAttributes_t bg_buildableList[ ] =
{ 15, 15, 15 }, //vec3_t maxs;
TR_GRAVITY, //trType_t traj;
0.0, //float bounce;
- 80, //int buildPoints;
+ TRAPPER_BP, //int buildPoints;
( 1 << S1 )|( 1 << S2 )|( 1 << S3 ), //int stages
- 1000, //int health;
- 50, //int regenRate;
- 50, //int damage;
- 20, //int splashDamage;
- 50, //int splashRadius;
+ TRAPPER_HEALTH, //int health;
+ TRAPPER_REGEN, //int regenRate;
+ TRAPPER_SPLASHDAMAGE, //int splashDamage;
+ TRAPPER_SPLASHRADIUS, //int splashRadius;
MOD_ASPAWN, //int meansOfDeath;
BIT_ALIENS, //int team;
( 1 << WP_ABUILD )|( 1 << WP_ABUILD2 ), //weapon_t buildWeapon;
BANIM_IDLE1, //int idleAnim;
- 1000, //int nextthink;
- 0, //int turretFireSpeed;
- 400, //int turretRange;
+ 100, //int nextthink;
+ TRAPPER_REPEAT, //int turretFireSpeed;
+ TRAPPER_RANGE, //int turretRange;
WP_LOCKBLOB_LAUNCHER, //weapon_t turretProjType;
0.0f, //float minNormal;
qtrue, //qboolean invertNormal;
qtrue, //qboolean creepTest;
- 30, //int creepSize;
+ TRAPPER_CREEPSIZE, //int creepSize;
qfalse, //qboolean dccTest;
qfalse //qboolean reactorTest;
},
{
BA_A_HIVEMIND, //int buildNum;
"hivemind", //char *buildName;
- "Hivemind", //char *humanName;
+ "Overmind", //char *humanName;
"team_alien_hivemind", //char *entityName;
{ "models/buildables/hivemind/hivemind.md3", 0, 0, 0 },
{ -15, -15, -15 }, //vec3_t mins;
{ 15, 15, 15 }, //vec3_t maxs;
TR_GRAVITY, //trType_t traj;
0.0, //float bounce;
- 0, //int buildPoints;
+ OVERMIND_BP, //int buildPoints;
( 1 << S1 )|( 1 << S2 )|( 1 << S3 ), //int stages
- 1000, //int health;
- 50, //int regenRate;
- 50, //int damage;
- 50, //int splashDamage;
- 300, //int splashRadius;
+ OVERMIND_HEALTH, //int health;
+ OVERMIND_REGEN, //int regenRate;
+ OVERMIND_SPLASHDAMAGE, //int splashDamage;
+ OVERMIND_SPLASHRADIUS, //int splashRadius;
MOD_ASPAWN, //int meansOfDeath;
BIT_ALIENS, //int team;
( 1 << WP_ABUILD )|( 1 << WP_ABUILD2 ), //weapon_t buildWeapon;
BANIM_IDLE1, //int idleAnim;
- 1000, //int nextthink;
+ OVERMIND_ATTACK_REPEAT,//int nextthink;
0, //int turretFireSpeed;
0, //int turretRange;
WP_NONE, //weapon_t turretProjType;
0.707f, //float minNormal;
qfalse, //qboolean invertNormal;
qfalse, //qboolean creepTest;
- 120, //int creepSize;
+ OVERMIND_CREEPSIZE, //int creepSize;
qfalse, //qboolean dccTest;
qtrue //qboolean reactorTest;
},
@@ -222,13 +216,12 @@ buildableAttributes_t bg_buildableList[ ] =
{ 50, 50, 20 }, //vec3_t maxs;
TR_GRAVITY, //trType_t traj;
0.0, //float bounce;
- 80, //int buildPoints;
+ HOVEL_BP, //int buildPoints;
( 1 << S1 )|( 1 << S2 )|( 1 << S3 ), //int stages
- 1000, //int health;
- 50, //int regenRate;
- 50, //int damage;
- 20, //int splashDamage;
- 50, //int splashRadius;
+ HOVEL_HEALTH, //int health;
+ HOVEL_REGEN, //int regenRate;
+ HOVEL_SPLASHDAMAGE, //int splashDamage;
+ HOVEL_SPLASHRADIUS, //int splashRadius;
MOD_ASPAWN, //int meansOfDeath;
BIT_ALIENS, //int team;
( 1 << WP_ABUILD )|( 1 << WP_ABUILD2 ), //weapon_t buildWeapon;
@@ -240,7 +233,7 @@ buildableAttributes_t bg_buildableList[ ] =
0.707f, //float minNormal;
qtrue, //qboolean invertNormal;
qtrue, //qboolean creepTest;
- 120, //int creepSize;
+ HOVEL_CREEPSIZE, //int creepSize;
qfalse, //qboolean dccTest;
qfalse //qboolean reactorTest;
},
@@ -253,14 +246,13 @@ buildableAttributes_t bg_buildableList[ ] =
{ -15, -15, -15 }, //vec3_t mins;
{ 15, 15, 15 }, //vec3_t maxs;
TR_GRAVITY, //trType_t traj;
- 0.0, //float bounce;
- 100, //int buildPoints;
+ 0.0, //float bounce;
+ OBANK_BP, //int buildPoints;
( 1 << S1 )|( 1 << S2 )|( 1 << S3 ), //int stages
- 1000, //int health;
- 50, //int regenRate;
- 50, //int damage;
- 50, //int splashDamage;
- 200, //int splashRadius;
+ OBANK_HEALTH, //int health;
+ OBANK_REGEN, //int regenRate;
+ OBANK_SPLASHDAMAGE, //int splashDamage;
+ OBANK_SPLASHRADIUS, //int splashRadius;
MOD_ASPAWN, //int meansOfDeath;
BIT_ALIENS, //int team;
( 1 << WP_ABUILD )|( 1 << WP_ABUILD2 ), //weapon_t buildWeapon;
@@ -272,7 +264,7 @@ buildableAttributes_t bg_buildableList[ ] =
0.5f, //float minNormal;
qtrue, //qboolean invertNormal;
qtrue, //qboolean creepTest;
- 120, //int creepSize;
+ OBANK_CREEPSIZE, //int creepSize;
qfalse, //qboolean dccTest;
qfalse //qboolean reactorTest;
},
@@ -285,14 +277,13 @@ buildableAttributes_t bg_buildableList[ ] =
{ -40, -40, -4 }, //vec3_t mins;
{ 40, 40, 4 }, //vec3_t maxs;
TR_GRAVITY, //trType_t traj;
- 0.0, //float bounce;
- 100, //int buildPoints;
+ 0.0, //float bounce;
+ HSPAWN_BP, //int buildPoints;
( 1 << S1 )|( 1 << S2 )|( 1 << S3 ), //int stages
- 1000, //int health;
+ HSPAWN_HEALTH, //int health;
0, //int regenRate;
- 50, //int damage;
- 50, //int splashDamage;
- 150, //int splashRadius;
+ HSPAWN_SPLASHDAMAGE, //int splashDamage;
+ HSPAWN_SPLASHRADIUS, //int splashRadius;
MOD_HSPAWN, //int meansOfDeath;
BIT_HUMANS, //int team;
( 1 << WP_HBUILD )|( 1 << WP_HBUILD2 ), //weapon_t buildWeapon;
@@ -317,14 +308,13 @@ buildableAttributes_t bg_buildableList[ ] =
{ -35, -35, -7 }, //vec3_t mins;
{ 35, 35, 7 }, //vec3_t maxs;
TR_GRAVITY, //trType_t traj;
- 0.0, //float bounce;
- 100, //int buildPoints;
+ 0.0, //float bounce;
+ MEDISTAT_BP, //int buildPoints;
( 1 << S1 )|( 1 << S2 )|( 1 << S3 ), //int stages
- 1000, //int health;
+ MEDISTAT_HEALTH, //int health;
0, //int regenRate;
- 50, //int damage;
- 50, //int splashDamage;
- 150, //int splashRadius;
+ MEDISTAT_SPLASHDAMAGE, //int splashDamage;
+ MEDISTAT_SPLASHRADIUS, //int splashRadius;
MOD_HSPAWN, //int meansOfDeath;
BIT_HUMANS, //int team;
( 1 << WP_HBUILD )|( 1 << WP_HBUILD2 ), //weapon_t buildWeapon;
@@ -350,13 +340,12 @@ buildableAttributes_t bg_buildableList[ ] =
{ 65, 65, 7 }, //vec3_t maxs;
TR_GRAVITY, //trType_t traj;
0.0, //float bounce;
- 100, //int buildPoints;
+ ADVMEDISTAT_BP, //int buildPoints;
( 1 << S3 ), //int stages
- 1000, //int health;
+ ADVMEDISTAT_HEALTH, //int health;
0, //int regenRate;
- 50, //int damage;
- 50, //int splashDamage;
- 150, //int splashRadius;
+ ADVMEDISTAT_SPLASHDAMAGE, //int splashDamage;
+ ADVMEDISTAT_SPLASHRADIUS, //int splashRadius;
MOD_HSPAWN, //int meansOfDeath;
BIT_HUMANS, //int team;
( 1 << WP_HBUILD2 ), //weapon_t buildWeapon;
@@ -384,20 +373,19 @@ buildableAttributes_t bg_buildableList[ ] =
{ 25, 25, 20 }, //vec3_t maxs;
TR_GRAVITY, //trType_t traj;
0.0, //float bounce;
- 80, //int buildPoints;
+ MGTURRET_BP, //int buildPoints;
( 1 << S1 )|( 1 << S2 )|( 1 << S3 ), //int stages
- 1000, //int health;
+ MGTURRET_HEALTH, //int health;
0, //int regenRate;
- 50, //int damage;
- 20, //int splashDamage;
- 50, //int splashRadius;
+ MGTURRET_SPLASHDAMAGE, //int splashDamage;
+ MGTURRET_SPLASHRADIUS, //int splashRadius;
MOD_HSPAWN, //int meansOfDeath;
BIT_HUMANS, //int team;
( 1 << WP_HBUILD )|( 1 << WP_HBUILD2 ), //weapon_t buildWeapon;
BANIM_IDLE1, //int idleAnim;
50, //int nextthink;
- 50, //int turretFireSpeed;
- 300, //int turretRange;
+ MGTURRET_REPEAT, //int turretFireSpeed;
+ MGTURRET_RANGE, //int turretRange;
WP_MACHINEGUN, //weapon_t turretProjType;
0.707f, //float minNormal;
qfalse, //qboolean invertNormal;
@@ -416,20 +404,19 @@ buildableAttributes_t bg_buildableList[ ] =
{ 22, 22, 40 }, //vec3_t maxs;
TR_GRAVITY, //trType_t traj;
0.0, //float bounce;
- 80, //int buildPoints;
+ TESLAGEN_BP, //int buildPoints;
( 1 << S3 ), //int stages
- 1000, //int health;
+ TESLAGEN_HEALTH, //int health;
0, //int regenRate;
- 50, //int damage;
- 20, //int splashDamage;
- 50, //int splashRadius;
+ TESLAGEN_SPLASHDAMAGE, //int splashDamage;
+ TESLAGEN_SPLASHRADIUS, //int splashRadius;
MOD_HSPAWN, //int meansOfDeath;
BIT_HUMANS, //int team;
( 1 << WP_HBUILD2 ), //weapon_t buildWeapon;
BANIM_IDLE1, //int idleAnim;
150, //int nextthink;
- 4000, //int turretFireSpeed;
- 1500, //int turretRange;
+ TESLAGEN_REPEAT, //int turretFireSpeed;
+ TESLAGEN_RANGE, //int turretRange;
WP_TESLAGEN, //weapon_t turretProjType;
0.707f, //float minNormal;
qfalse, //qboolean invertNormal;
@@ -441,20 +428,19 @@ buildableAttributes_t bg_buildableList[ ] =
{
BA_H_DCC, //int buildNum;
"dcc", //char *buildName;
- "D.C.C.", //char *humanName;
+ "Defence Computer", //char *humanName;
"team_human_dcc", //char *entityName;
{ "models/buildables/dcc/dcc.md3", 0, 0, 0 },
{ -15, -15, -15 }, //vec3_t mins;
{ 15, 15, 15 }, //vec3_t maxs;
TR_GRAVITY, //trType_t traj;
0.0, //float bounce;
- 200, //int buildPoints;
+ DC_BP, //int buildPoints;
( 1 << S3 ), //int stages
- 1000, //int health;
+ DC_HEALTH, //int health;
0, //int regenRate;
- 50, //int damage;
- 50, //int splashDamage;
- 150, //int splashRadius;
+ DC_SPLASHDAMAGE, //int splashDamage;
+ DC_SPLASHRADIUS, //int splashRadius;
MOD_HSPAWN, //int meansOfDeath;
BIT_HUMANS, //int team;
( 1 << WP_HBUILD2 ), //weapon_t buildWeapon;
@@ -480,13 +466,12 @@ buildableAttributes_t bg_buildableList[ ] =
{ 15, 15, 15 }, //vec3_t maxs;
TR_GRAVITY, //trType_t traj;
0.0, //float bounce;
- 200, //int buildPoints;
+ BANK_BP, //int buildPoints;
( 1 << S2 )|( 1 << S3 ), //int stages
- 1000, //int health;
+ BANK_HEALTH, //int health;
0, //int regenRate;
- 50, //int damage;
- 50, //int splashDamage;
- 150, //int splashRadius;
+ BANK_SPLASHDAMAGE, //int splashDamage;
+ BANK_SPLASHRADIUS, //int splashRadius;
MOD_HSPAWN, //int meansOfDeath;
BIT_HUMANS, //int team;
( 1 << WP_HBUILD2 ), //weapon_t buildWeapon;
@@ -505,20 +490,19 @@ buildableAttributes_t bg_buildableList[ ] =
{
BA_H_MCU, //int buildNum;
"mcu", //char *buildName;
- "M.C.U.", //char *humanName;
+ "Armoury", //char *humanName;
"team_human_mcu", //char *entityName;
{ "models/buildables/mcu/mcu.md3", 0, 0, 0 },
{ -15, -15, -15 }, //vec3_t mins;
{ 15, 15, 15 }, //vec3_t maxs;
TR_GRAVITY, //trType_t traj;
0.0, //float bounce;
- 200, //int buildPoints;
+ ARMOURY_BP, //int buildPoints;
( 1 << S1 )|( 1 << S2 )|( 1 << S3 ), //int stages
- 1000, //int health;
+ ARMOURY_HEALTH, //int health;
0, //int regenRate;
- 50, //int damage;
- 50, //int splashDamage;
- 150, //int splashRadius;
+ ARMOURY_SPLASHDAMAGE, //int splashDamage;
+ ARMOURY_SPLASHRADIUS, //int splashRadius;
MOD_HSPAWN, //int meansOfDeath;
BIT_HUMANS, //int team;
( 1 << WP_HBUILD )|( 1 << WP_HBUILD2 ), //weapon_t buildWeapon;
@@ -544,13 +528,12 @@ buildableAttributes_t bg_buildableList[ ] =
{ 15, 15, 15 }, //vec3_t maxs;
TR_GRAVITY, //trType_t traj;
0.0, //float bounce;
- 0, //int buildPoints;
+ REACTOR_BP, //int buildPoints;
( 1 << S1 )|( 1 << S2 )|( 1 << S3 ), //int stages
- 1000, //int health;
+ REACTOR_HEALTH, //int health;
0, //int regenRate;
- 50, //int damage;
- 50, //int splashDamage;
- 150, //int splashRadius;
+ REACTOR_SPLASHDAMAGE, //int splashDamage;
+ REACTOR_SPLASHRADIUS, //int splashRadius;
MOD_HSPAWN, //int meansOfDeath;
BIT_HUMANS, //int team;
( 1 << WP_HBUILD )|( 1 << WP_HBUILD2 ), //weapon_t buildWeapon;
@@ -576,13 +559,12 @@ buildableAttributes_t bg_buildableList[ ] =
{ 15, 15, 15 }, //vec3_t maxs;
TR_GRAVITY, //trType_t traj;
0.0, //float bounce;
- 10, //int buildPoints;
+ REPEATER_BP, //int buildPoints;
( 1 << S2 )|( 1 << S3 ), //int stages
- 1000, //int health;
+ REPEATER_HEALTH, //int health;
0, //int regenRate;
- 50, //int damage;
- 50, //int splashDamage;
- 150, //int splashRadius;
+ REPEATER_SPLASHDAMAGE, //int splashDamage;
+ REPEATER_SPLASHRADIUS, //int splashRadius;
MOD_HSPAWN, //int meansOfDeath;
BIT_HUMANS, //int team;
( 1 << WP_HBUILD )|( 1 << WP_HBUILD2 ), //weapon_t buildWeapon;
@@ -608,13 +590,12 @@ buildableAttributes_t bg_buildableList[ ] =
{ 25, 25, 25 }, //vec3_t maxs;
TR_BUOYANCY, //trType_t traj;
0.2, //float bounce;
- 10, //int buildPoints;
+ FLOATMINE_BP, //int buildPoints;
( 1 << S2 )|( 1 << S3 ), //int stages
- 100, //int health;
+ FLOATMINE_HEALTH, //int health;
0, //int regenRate;
- 50, //int damage;
- 50, //int splashDamage;
- 150, //int splashRadius;
+ FLOATMINE_SPLASHDAMAGE,//int splashDamage;
+ FLOATMINE_SPLASHRADIUS,//int splashRadius;
MOD_HSPAWN, //int meansOfDeath;
BIT_HUMANS, //int team;
( 1 << WP_HBUILD2 ), //weapon_t buildWeapon;
@@ -903,26 +884,6 @@ int BG_FindRegenRateForBuildable( int bclass )
/*
==============
-BG_FindDamageForBuildable
-==============
-*/
-int BG_FindDamageForBuildable( int bclass )
-{
- int i;
-
- for( i = 0; i < bg_numBuildables; i++ )
- {
- if( bg_buildableList[ i ].buildNum == bclass )
- {
- return bg_buildableList[ i ].damage;
- }
- }
-
- return 50;
-}
-
-/*
-==============
BG_FindSplashDamageForBuildable
==============
*/
@@ -1260,19 +1221,19 @@ classAttributes_t bg_classList[ ] =
{ -15, -15, -4 }, //vec3_t deadmins;
{ 15, 15, 4 }, //vec3_t deadmaxs;
12, 12, //int viewheight, crouchviewheight;
- 50, //int health;
- 5, //int regenRate;
+ ABUILDER_HEALTH, //int health;
+ ABUILDER_REGEN, //int regenRate;
SCA_TAKESFALLDAMAGE|SCA_FOVWARPS, //int abilities;
WP_ABUILD, //weapon_t startWeapon
95.0f, //float buildDist;
80, //int fov;
0.001f, //float bob;
350, //int steptime;
- 0.8f, //float speed;
+ ABUILDER_SPEED, //float speed;
1.0f, //float sticky;
{ PCL_A_B_LEV1, PCL_NONE, PCL_NONE }, //int children[ 3 ];
- 2000, //int timetoevolve;
- 100 //int value;
+ ABUILDER_TTE, //int timetoevolve;
+ ABUILDER_VALUE //int value;
},
{
PCL_A_B_LEV1, //int classnum;
@@ -1289,19 +1250,19 @@ classAttributes_t bg_classList[ ] =
{ -20, -20, -4 }, //vec3_t deadmins;
{ 20, 20, 4 }, //vec3_t deadmaxs;
0, 0, //int viewheight, crouchviewheight;
- 75, //int health;
- 5, //int regenRate;
+ ABUILDER_UPG_HEALTH, //int health;
+ ABUILDER_UPG_REGEN, //int regenRate;
SCA_CANJUMP|SCA_FOVWARPS|SCA_WALLCLIMBER, //int abilities;
WP_ABUILD2, //weapon_t startWeapon
95.0f, //float buildDist;
110, //int fov;
0.001f, //float bob;
200, //int steptime;
- 1.0f, //float speed;
+ ABUILDER_UPG_SPEED, //float speed;
1.0f, //float sticky;
{ PCL_NONE, PCL_NONE, PCL_NONE }, //int children[ 3 ];
- 2000, //int timetoevolve;
- 100 //int value;
+ 0, //int timetoevolve;
+ ABUILDER_UPG_VALUE //int value;
},
{
PCL_A_O_BASE, //int classnum;
@@ -1318,8 +1279,8 @@ classAttributes_t bg_classList[ ] =
{ -15, -15, -4 }, //vec3_t deadmins;
{ 15, 15, 4 }, //vec3_t deadmaxs;
0, 0, //int viewheight, crouchviewheight;
- 25, //int health;
- 5, //int regenRate;
+ SOLDIER_HEALTH, //int health;
+ SOLDIER_REGEN, //int regenRate;
SCA_WALLCLIMBER|SCA_CANJUMP|SCA_NOWEAPONDRIFT|
SCA_FOVWARPS|SCA_ALIENSENSE, //int abilities;
WP_VENOM, //weapon_t startWeapon
@@ -1327,11 +1288,11 @@ classAttributes_t bg_classList[ ] =
140, //int fov;
0.0f, //float bob;
25, //int steptime;
- 1.5f, //float speed;
+ SOLDIER_SPEED, //float speed;
5.0f, //float sticky;
{ PCL_A_O_LEV1, PCL_NONE, PCL_NONE }, //int children[ 3 ];
- 3000, //int timetoevolve;
- 100 //int value;
+ SOLDIER_TTE, //int timetoevolve;
+ SOLDIER_VALUE //int value;
},
{
PCL_A_O_LEV1, //int classnum;
@@ -1348,19 +1309,19 @@ classAttributes_t bg_classList[ ] =
{ -24, -24, -4 }, //vec3_t deadmins;
{ 24, 24, 4 }, //vec3_t deadmaxs;
6, 6, //int viewheight, crouchviewheight;
- 50, //int health;
- 5, //int regenRate;
+ DRAGOON_HEALTH, //int health;
+ DRAGOON_REGEN, //int regenRate;
SCA_CANJUMP|SCA_NOWEAPONDRIFT|SCA_FOVWARPS, //int abilities;
WP_POUNCE, //weapon_t startWeapon
0.0f, //float buildDist;
120, //int fov;
0.0005f, //float bob;
25, //int steptime;
- 1.5f, //float speed;
+ DRAGOON_SPEED, //float speed;
3.0f, //float sticky;
{ PCL_A_O_LEV2, PCL_A_O_LEV1_UPG, PCL_NONE }, //int children[ 3 ];
- 3000, //int timetoevolve;
- 100 //int value;
+ DRAGOON_TTE, //int timetoevolve;
+ DRAGOON_VALUE //int value;
},
{
PCL_A_O_LEV1_UPG, //int classnum;
@@ -1377,19 +1338,19 @@ classAttributes_t bg_classList[ ] =
{ -24, -24, -4 }, //vec3_t deadmins;
{ 24, 24, 4 }, //vec3_t deadmaxs;
6, 6, //int viewheight, crouchviewheight;
- 50, //int health;
- 5, //int regenRate;
+ DRAGOON_UPG_HEALTH, //int health;
+ DRAGOON_UPG_REGEN, //int regenRate;
SCA_CANJUMP|SCA_NOWEAPONDRIFT|SCA_FOVWARPS, //int abilities;
WP_POUNCE_UPG, //weapon_t startWeapon
0.0f, //float buildDist;
120, //int fov;
0.0005f, //float bob;
25, //int steptime;
- 1.5f, //float speed;
+ DRAGOON_UPG_SPEED, //float speed;
3.0f, //float sticky;
{ PCL_A_O_LEV2, PCL_NONE, PCL_NONE }, //int children[ 3 ];
- 3000, //int timetoevolve;
- 100 //int value;
+ DRAGOON_UPG_TTE, //int timetoevolve;
+ DRAGOON_UPG_VALUE //int value;
},
{
PCL_A_O_LEV2, //int classnum;
@@ -1406,8 +1367,8 @@ classAttributes_t bg_classList[ ] =
{ -24, -24, -4 }, //vec3_t deadmins;
{ 24, 24, 4 }, //vec3_t deadmaxs;
6, 6, //int viewheight, crouchviewheight;
- 50, //int health;
- 5, //int regenRate;
+ HYDRA_HEALTH, //int health;
+ HYDRA_REGEN, //int regenRate;
SCA_CANJUMP|SCA_NOWEAPONDRIFT|
SCA_FOVWARPS|SCA_WALLCLIMBER, //int abilities;
WP_GRAB_CLAW, //weapon_t startWeapon
@@ -1415,11 +1376,11 @@ classAttributes_t bg_classList[ ] =
120, //int fov;
0.001f, //float bob;
25, //int steptime;
- 1.5f, //float speed;
+ HYDRA_SPEED, //float speed;
4.0f, //float sticky;
{ PCL_A_O_LEV3, PCL_A_O_LEV2_UPG, PCL_NONE }, //int children[ 3 ];
- 3000, //int timetoevolve;
- 100 //int value;
+ HYDRA_TTE, //int timetoevolve;
+ HYDRA_VALUE //int value;
},
{
PCL_A_O_LEV2_UPG, //int classnum;
@@ -1436,8 +1397,8 @@ classAttributes_t bg_classList[ ] =
{ -24, -24, -4 }, //vec3_t deadmins;
{ 24, 24, 4 }, //vec3_t deadmaxs;
6, 6, //int viewheight, crouchviewheight;
- 50, //int health;
- 5, //int regenRate;
+ HYDRA_UPG_HEALTH, //int health;
+ HYDRA_UPG_REGEN, //int regenRate;
SCA_CANJUMP|SCA_NOWEAPONDRIFT|
SCA_FOVWARPS|SCA_WALLCLIMBER, //int abilities;
WP_GRAB_CLAW_UPG, //weapon_t startWeapon
@@ -1445,11 +1406,11 @@ classAttributes_t bg_classList[ ] =
120, //int fov;
0.001f, //float bob;
25, //int steptime;
- 1.5f, //float speed;
+ HYDRA_UPG_SPEED, //float speed;
4.0f, //float sticky;
{ PCL_A_O_LEV3, PCL_NONE, PCL_NONE }, //int children[ 3 ];
- 3000, //int timetoevolve;
- 100 //int value;
+ HYDRA_UPG_TTE, //int timetoevolve;
+ HYDRA_UPG_VALUE //int value;
},
{
PCL_A_O_LEV3, //int classnum;
@@ -1466,19 +1427,19 @@ classAttributes_t bg_classList[ ] =
{ -15, -15, -4 }, //vec3_t deadmins;
{ 15, 15, 4 }, //vec3_t deadmaxs;
4, 4, //int viewheight, crouchviewheight;
- 100, //int health;
- 5, //int regenRate;
+ CHIMERA_HEALTH, //int health;
+ CHIMERA_REGEN, //int regenRate;
SCA_CANJUMP|SCA_NOWEAPONDRIFT|SCA_FOVWARPS, //int abilities;
WP_AREA_ZAP, //weapon_t startWeapon
0.0f, //float buildDist;
130, //int fov;
0.0f, //float bob;
60, //int steptime;
- 1.3f, //float speed;
+ CHIMERA_SPEED, //float speed;
5.0f, //float sticky;
{ PCL_A_O_LEV4, PCL_A_O_LEV3_UPG, PCL_NONE }, //int children[ 3 ];
- 3000, //int timetoevolve;
- 100 //int value;
+ CHIMERA_TTE, //int timetoevolve;
+ CHIMERA_VALUE //int value;
},
{
PCL_A_O_LEV3_UPG, //int classnum;
@@ -1495,19 +1456,19 @@ classAttributes_t bg_classList[ ] =
{ -15, -15, -4 }, //vec3_t deadmins;
{ 15, 15, 4 }, //vec3_t deadmaxs;
4, 4, //int viewheight, crouchviewheight;
- 100, //int health;
- 5, //int regenRate;
+ CHIMERA_UPG_HEALTH, //int health;
+ CHIMERA_UPG_REGEN, //int regenRate;
SCA_CANJUMP|SCA_NOWEAPONDRIFT|SCA_FOVWARPS, //int abilities;
WP_DIRECT_ZAP, //weapon_t startWeapon
0.0f, //float buildDist;
130, //int fov;
0.0f, //float bob;
60, //int steptime;
- 1.3f, //float speed;
+ CHIMERA_UPG_SPEED, //float speed;
5.0f, //float sticky;
{ PCL_A_O_LEV4, PCL_NONE, PCL_NONE }, //int children[ 3 ];
- 3000, //int timetoevolve;
- 100 //int value;
+ CHIMERA_UPG_TTE, //int timetoevolve;
+ CHIMERA_UPG_VALUE //int value;
},
{
PCL_A_O_LEV4, //int classnum;
@@ -1524,19 +1485,19 @@ classAttributes_t bg_classList[ ] =
{ -15, -15, -4 }, //vec3_t deadmins;
{ 15, 15, 4 }, //vec3_t deadmaxs;
4, 4, //int viewheight, crouchviewheight;
- 100, //int health;
- 5, //int regenRate;
+ BMOFO_HEALTH, //int health;
+ BMOFO_REGEN, //int regenRate;
SCA_CANJUMP|SCA_NOWEAPONDRIFT|SCA_FOVWARPS, //int abilities;
WP_GROUND_POUND, //weapon_t startWeapon
0.0f, //float buildDist;
130, //int fov;
0.0f, //float bob;
60, //int steptime;
- 1.3f, //float speed;
+ BMOFO_SPEED, //float speed;
5.0f, //float sticky;
{ PCL_NONE, PCL_NONE, PCL_NONE }, //int children[ 3 ];
- 3000, //int timetoevolve;
- 100 //int value;
+ 0, //int timetoevolve;
+ BMOFO_VALUE //int value;
},
{
PCL_H_BASE, //int classnum;
@@ -2095,20 +2056,22 @@ weaponAttributes_t bg_weapons[ ] =
{
{
WP_MACHINEGUN, //int weaponNum;
- 100, //int price;
+ RIFLE_PRICE, //int price;
( 1 << S1 )|( 1 << S2 )|( 1 << S3 ), //int stages
SLOT_WEAPON, //int slots;
"rifle", //char *weaponName;
"Rifle", //char *weaponHumanName;
{ "models/weapons2/machinegun/machinegun.md3", 0, 0, 0 },
"icons/iconw_machinegun",
- 30, //int quan;
- 3, //int clips;
- 3, //int maxClips;
+ RIFLE_CLIPSIZE, //int quan;
+ RIFLE_SPAWNCLIPS, //int clips;
+ RIFLE_MAXCLIPS, //int maxClips;
qfalse, //int infiniteAmmo;
qfalse, //int usesEnergy;
- 100, //int repeatRate;
- 2000, //int reloadTime;
+ RIFLE_REPEAT, //int repeatRate1;
+ 0, //int repeatRate2;
+ 0, //int repeatRate3;
+ RIFLE_RELOAD, //int reloadTime;
qfalse, //qboolean hasAltMode;
qfalse, //qboolean hasThirdMode;
qtrue, //qboolean purchasable;
@@ -2117,19 +2080,21 @@ weaponAttributes_t bg_weapons[ ] =
},
{
WP_FLAMER, //int weaponNum;
- 100, //int price;
+ FLAMER_PRICE, //int price;
( 1 << S1 )|( 1 << S2 )|( 1 << S3 ), //int stages
SLOT_WEAPON, //int slots;
"flamer", //char *weaponName;
"Flame Thrower", //char *weaponHumanName;
{ "models/weapons2/plasma/plasma.md3", 0, 0, 0 },
"icons/iconw_plasma",
- 400, //int quan;
+ FLAMER_GAS, //int quan;
0, //int clips;
0, //int maxClips;
qfalse, //int infiniteAmmo;
qfalse, //int usesEnergy;
- 150, //int repeatRate;
+ FLAMER_REPEAT, //int repeatRate1;
+ 0, //int repeatRate2;
+ 0, //int repeatRate3;
0, //int reloadTime;
qfalse, //qboolean hasAltMode;
qfalse, //qboolean hasThirdMode;
@@ -2139,19 +2104,21 @@ weaponAttributes_t bg_weapons[ ] =
},
{
WP_CHAINGUN, //int weaponNum;
- 100, //int price;
+ CHAINGUN_PRICE, //int price;
( 1 << S1 )|( 1 << S2 )|( 1 << S3 ), //int stages
SLOT_WEAPON, //int slots;
"chaingun", //char *weaponName;
"Chaingun", //char *weaponHumanName;
{ "models/weapons2/machinegun/machinegun.md3", 0, 0, 0 },
"icons/iconw_machinegun",
- 300, //int quan;
+ CHAINGUN_BULLETS, //int quan;
0, //int clips;
0, //int maxClips;
qfalse, //int infiniteAmmo;
qfalse, //int usesEnergy;
- 50, //int repeatRate;
+ CHAINGUN_REPEAT, //int repeatRate1;
+ 0, //int repeatRate2;
+ 0, //int repeatRate3;
0, //int reloadTime;
qfalse, //qboolean hasAltMode;
qfalse, //qboolean hasThirdMode;
@@ -2161,20 +2128,22 @@ weaponAttributes_t bg_weapons[ ] =
},
{
WP_MASS_DRIVER, //int weaponNum;
- 100, //int price;
+ MDRIVER_PRICE, //int price;
( 1 << S1 )|( 1 << S2 )|( 1 << S3 ), //int stages
SLOT_WEAPON, //int slots;
"mdriver", //char *weaponName;
"Mass Driver", //char *weaponHumanName;
{ "models/weapons2/bfg/bfg.md3", 0, 0, 0 },
"icons/iconw_bfg",
- 5, //int quan;
- 2, //int clips;
- 3, //int maxClips;
+ MDRIVER_CLIPSIZE, //int quan;
+ MDRIVER_SPAWNCLIPS, //int clips;
+ MDRIVER_MAXCLIPS, //int maxClips;
qfalse, //int infiniteAmmo;
qtrue, //int usesEnergy;
- 1000, //int repeatRate;
- 2000, //int reloadTime;
+ MDRIVER_REPEAT, //int repeatRate1;
+ 0, //int repeatRate2;
+ 0, //int repeatRate3;
+ MDRIVER_RELOAD, //int reloadTime;
qfalse, //qboolean hasAltMode;
qfalse, //qboolean hasThirdMode;
qtrue, //qboolean purchasable;
@@ -2183,20 +2152,22 @@ weaponAttributes_t bg_weapons[ ] =
},
{
WP_PULSE_RIFLE, //int weaponNum;
- 100, //int price;
+ PRIFLE_PRICE, //int price;
( 1 << S1 )|( 1 << S2 )|( 1 << S3 ), //int stages
SLOT_WEAPON, //int slots;
"prifle", //char *weaponName;
"Pulse Rifle", //char *weaponHumanName;
{ "models/weapons2/plasma/plasma.md3", 0, 0, 0 },
"icons/iconw_plasma",
- 50, //int quan;
- 3, //int clips;
- 3, //int maxClips;
+ PRIFLE_CLIPS, //int quan;
+ PRIFLE_SPAWNCLIPS, //int clips;
+ PRIFLE_MAXCLIPS, //int maxClips;
qfalse, //int infiniteAmmo;
- qtrue, //int usesEnergy;
- 50, //int repeatRate;
- 2000, //int reloadTime;
+ qtrue, //int usesEnergy;
+ PRIFLE_REPEAT, //int repeatRate1;
+ 0, //int repeatRate2;
+ 0, //int repeatRate3;
+ PRIFLE_RELOAD, //int reloadTime;
qfalse, //qboolean hasAltMode;
qfalse, //qboolean hasThirdMode;
qtrue, //qboolean purchasable;
@@ -2205,20 +2176,22 @@ weaponAttributes_t bg_weapons[ ] =
},
{
WP_LUCIFER_CANON, //int weaponNum;
- 100, //int price;
+ LCANON_PRICE, //int price;
( 1 << S1 )|( 1 << S2 )|( 1 << S3 ), //int stages
SLOT_WEAPON, //int slots;
"lcanon", //char *weaponName;
"Lucifer Canon", //char *weaponHumanName;
{ "models/weapons2/bfg/bfg.md3", 0, 0, 0 },
"icons/iconw_bfg",
- 30, //int quan;
+ LCANON_AMMO, //int quan;
0, //int clips;
0, //int maxClips;
qfalse, //int infiniteAmmo;
qtrue, //int usesEnergy;
- 500, //int repeatRate;
- 2000, //int reloadTime;
+ LCANON_REPEAT, //int repeatRate1;
+ LCANON_CHARGEREPEAT, //int repeatRate2;
+ 0, //int repeatRate3;
+ LCANON_RELOAD, //int reloadTime;
qtrue, //qboolean hasAltMode;
qfalse, //qboolean hasThirdMode;
qtrue, //qboolean purchasable;
@@ -2227,20 +2200,22 @@ weaponAttributes_t bg_weapons[ ] =
},
{
WP_LAS_GUN, //int weaponNum;
- 100, //int price;
+ LASGUN_PRICE, //int price;
( 1 << S1 )|( 1 << S2 )|( 1 << S3 ), //int stages
SLOT_WEAPON, //int slots;
"lgun", //char *weaponName;
"Las Gun", //char *weaponHumanName;
{ "models/weapons2/grenadel/grenadel.md3", 0, 0, 0 },
"icons/iconw_plasma",
- 300, //int quan;
+ LASGUN_AMMO, //int quan;
0, //int clips;
0, //int maxClips;
qfalse, //int infiniteAmmo;
qtrue, //int usesEnergy;
- 100, //int repeatRate;
- 2000, //int reloadTime;
+ LASGUN_REPEAT, //int repeatRate1;
+ 0, //int repeatRate2;
+ 0, //int repeatRate3;
+ LASGUN_RELOAD, //int reloadTime;
qfalse, //qboolean hasAltMode;
qfalse, //qboolean hasThirdMode;
qtrue, //qboolean purchasable;
@@ -2249,7 +2224,7 @@ weaponAttributes_t bg_weapons[ ] =
},
{
WP_PAIN_SAW, //int weaponNum;
- 100, //int price;
+ PAINSAW_PRICE, //int price;
( 1 << S1 )|( 1 << S2 )|( 1 << S3 ), //int stages
SLOT_WEAPON, //int slots;
"psaw", //char *weaponName;
@@ -2261,7 +2236,9 @@ weaponAttributes_t bg_weapons[ ] =
0, //int maxClips;
qtrue, //int infiniteAmmo;
qfalse, //int usesEnergy;
- 75, //int repeatRate;
+ PAINSAW_REPEAT, //int repeatRate1;
+ 0, //int repeatRate2;
+ 0, //int repeatRate3;
0, //int reloadTime;
qfalse, //qboolean hasAltMode;
qfalse, //qboolean hasThirdMode;
@@ -2271,7 +2248,7 @@ weaponAttributes_t bg_weapons[ ] =
},
{
WP_HBUILD, //int weaponNum;
- 100, //int price;
+ HBUILD_PRICE, //int price;
( 1 << S1 )|( 1 << S2 )|( 1 << S3 ), //int stages
SLOT_WEAPON, //int slots;
"ckit", //char *weaponName;
@@ -2283,17 +2260,19 @@ weaponAttributes_t bg_weapons[ ] =
0, //int maxClips;
qtrue, //int infiniteAmmo;
qfalse, //int usesEnergy;
- 1000, //int repeatRate;
+ HBUILD_REPEAT, //int repeatRate1;
+ HBUILD_REPEAT, //int repeatRate2;
+ 0, //int repeatRate3;
0, //int reloadTime;
qtrue, //qboolean hasAltMode;
qfalse, //qboolean hasThirdMode;
qtrue, //qboolean purchasable;
- 10000, //int buildDelay;
+ HBUILD_DELAY, //int buildDelay;
WUT_HUMANS //WUTeam_t team;
},
{
WP_HBUILD2, //int weaponNum;
- 100, //int price;
+ HBUILD2_PRICE, //int price;
( 1 << S2 )|( 1 << S3 ), //int stages
SLOT_WEAPON, //int slots;
"ackit", //char *weaponName;
@@ -2305,17 +2284,19 @@ weaponAttributes_t bg_weapons[ ] =
0, //int maxClips;
qtrue, //int infiniteAmmo;
qfalse, //int usesEnergy;
- 1000, //int repeatRate;
+ HBUILD2_REPEAT, //int repeatRate1;
+ HBUILD2_REPEAT, //int repeatRate2;
+ 0, //int repeatRate3;
0, //int reloadTime;
qtrue, //qboolean hasAltMode;
qfalse, //qboolean hasThirdMode;
qtrue, //qboolean purchasable;
- 5000, //int buildDelay;
+ HBUILD2_DELAY, //int buildDelay;
WUT_HUMANS //WUTeam_t team;
},
{
WP_ABUILD, //int weaponNum;
- 100, //int price;
+ 0, //int price;
( 1 << S1 )|( 1 << S2 )|( 1 << S3 ), //int stages
SLOT_WEAPON, //int slots;
"dbuild", //char *weaponName;
@@ -2327,17 +2308,19 @@ weaponAttributes_t bg_weapons[ ] =
0, //int maxClips;
qtrue, //int infiniteAmmo;
qfalse, //int usesEnergy;
- 1000, //int repeatRate;
+ ABUILDER_BUILD_REPEAT,//int repeatRate1;
+ 0, //int repeatRate2;
+ 0, //int repeatRate3;
0, //int reloadTime;
qtrue, //qboolean hasAltMode;
qfalse, //qboolean hasThirdMode;
qfalse, //qboolean purchasable;
- 10000, //int buildDelay;
+ ABUILDER_BASE_DELAY, //int buildDelay;
WUT_ALIENS //WUTeam_t team;
},
{
WP_ABUILD2, //int weaponNum;
- 100, //int price;
+ 0, //int price;
( 1 << S1 )|( 1 << S2 )|( 1 << S3 ), //int stages
SLOT_WEAPON, //int slots;
"dbuild2", //char *weaponName;
@@ -2349,17 +2332,19 @@ weaponAttributes_t bg_weapons[ ] =
0, //int maxClips;
qtrue, //int infiniteAmmo;
qfalse, //int usesEnergy;
- 1000, //int repeatRate;
+ ABUILDER_BUILD_REPEAT,//int repeatRate1;
+ ABUILDER_CLAW_REPEAT, //int repeatRate2;
+ 0, //int repeatRate3;
0, //int reloadTime;
qtrue, //qboolean hasAltMode;
qfalse, //qboolean hasThirdMode;
qfalse, //qboolean purchasable;
- 5000, //int buildDelay;
+ ABUILDER_ADV_DELAY, //int buildDelay;
WUT_ALIENS //WUTeam_t team;
},
{
WP_VENOM, //int weaponNum;
- 100, //int price;
+ 0, //int price;
( 1 << S1 )|( 1 << S2 )|( 1 << S3 ), //int stages
SLOT_WEAPON, //int slots;
"venom", //char *weaponName;
@@ -2371,7 +2356,9 @@ weaponAttributes_t bg_weapons[ ] =
0, //int maxClips;
qtrue, //int infiniteAmmo;
qfalse, //int usesEnergy;
- 500, //int repeatRate;
+ SOLDIER_BITE_REPEAT, //int repeatRate1;
+ 0, //int repeatRate2;
+ 0, //int repeatRate3;
0, //int reloadTime;
qfalse, //qboolean hasAltMode;
qfalse, //qboolean hasThirdMode;
@@ -2380,12 +2367,12 @@ weaponAttributes_t bg_weapons[ ] =
WUT_ALIENS //WUTeam_t team;
},
{
- WP_GRAB_CLAW, //int weaponNum;
- 100, //int price;
+ WP_POUNCE, //int weaponNum;
+ 0, //int price;
( 1 << S1 )|( 1 << S2 )|( 1 << S3 ), //int stages
SLOT_WEAPON, //int slots;
- "grabandclaw", //char *weaponName;
- "Claws", //char *weaponHumanName;
+ "pounce", //char *weaponName;
+ "Claw and pounce", //char *weaponHumanName;
{ "models/weapons2/gauntlet/gauntlet.md3", 0, 0, 0 },
"icons/iconw_gauntlet",
0, //int quan;
@@ -2393,7 +2380,9 @@ weaponAttributes_t bg_weapons[ ] =
0, //int maxClips;
qtrue, //int infiniteAmmo;
qfalse, //int usesEnergy;
- 500, //int repeatRate;
+ DRAGOON_CLAW_REPEAT, //int repeatRate1;
+ 0, //int repeatRate2;
+ 0, //int repeatRate3;
0, //int reloadTime;
qfalse, //qboolean hasAltMode;
qfalse, //qboolean hasThirdMode;
@@ -2402,34 +2391,36 @@ weaponAttributes_t bg_weapons[ ] =
WUT_ALIENS //WUTeam_t team;
},
{
- WP_GRAB_CLAW_UPG, //int weaponNum;
- 100, //int price;
+ WP_POUNCE_UPG, //int weaponNum;
+ 0, //int price;
( 1 << S1 )|( 1 << S2 )|( 1 << S3 ), //int stages
SLOT_WEAPON, //int slots;
- "grabandclaw_upgrade",//char *weaponName;
- "Claws Upgrade", //char *weaponHumanName;
+ "pounce_upgrade", //char *weaponName;
+ "Claw and pounce (upgrade)", //char *weaponHumanName;
{ "models/weapons2/gauntlet/gauntlet.md3", 0, 0, 0 },
"icons/iconw_gauntlet",
- 0, //int quan;
+ 3, //int quan;
0, //int clips;
0, //int maxClips;
qtrue, //int infiniteAmmo;
qfalse, //int usesEnergy;
- 500, //int repeatRate;
+ DRAGOON_CLAW_U_REPEAT,//int repeatRate1;
+ 0, //int repeatRate2;
+ DRAGOON_SLOWBLOB_REPEAT,//int repeatRate3;
0, //int reloadTime;
- qtrue, //qboolean hasAltMode;
- qfalse, //qboolean hasThirdMode;
+ qfalse, //qboolean hasAltMode;
+ qtrue, //qboolean hasThirdMode;
qfalse, //qboolean purchasable;
0, //int buildDelay;
WUT_ALIENS //WUTeam_t team;
},
{
- WP_AREA_ZAP, //int weaponNum;
- 100, //int price;
+ WP_GRAB_CLAW, //int weaponNum;
+ 0, //int price;
( 1 << S1 )|( 1 << S2 )|( 1 << S3 ), //int stages
SLOT_WEAPON, //int slots;
- "areazap", //char *weaponName;
- "Area Zap", //char *weaponHumanName;
+ "grabandclaw", //char *weaponName;
+ "Claws", //char *weaponHumanName;
{ "models/weapons2/gauntlet/gauntlet.md3", 0, 0, 0 },
"icons/iconw_gauntlet",
0, //int quan;
@@ -2437,7 +2428,9 @@ weaponAttributes_t bg_weapons[ ] =
0, //int maxClips;
qtrue, //int infiniteAmmo;
qfalse, //int usesEnergy;
- 1500, //int repeatRate;
+ HYDRA_CLAW_REPEAT, //int repeatRate1;
+ 0, //int repeatRate2;
+ 0, //int repeatRate3;
0, //int reloadTime;
qfalse, //qboolean hasAltMode;
qfalse, //qboolean hasThirdMode;
@@ -2446,12 +2439,12 @@ weaponAttributes_t bg_weapons[ ] =
WUT_ALIENS //WUTeam_t team;
},
{
- WP_DIRECT_ZAP, //int weaponNum;
- 100, //int price;
+ WP_GRAB_CLAW_UPG, //int weaponNum;
+ 0, //int price;
( 1 << S1 )|( 1 << S2 )|( 1 << S3 ), //int stages
SLOT_WEAPON, //int slots;
- "directzap", //char *weaponName;
- "Directed Zap", //char *weaponHumanName;
+ "grabandclaw_upgrade",//char *weaponName;
+ "Claws Upgrade", //char *weaponHumanName;
{ "models/weapons2/gauntlet/gauntlet.md3", 0, 0, 0 },
"icons/iconw_gauntlet",
0, //int quan;
@@ -2459,7 +2452,9 @@ weaponAttributes_t bg_weapons[ ] =
0, //int maxClips;
qtrue, //int infiniteAmmo;
qfalse, //int usesEnergy;
- 1500, //int repeatRate;
+ HYDRA_CLAW_U_REPEAT, //int repeatRate1;
+ HYDRA_PCLOUD_REPEAT, //int repeatRate2;
+ 0, //int repeatRate3;
0, //int reloadTime;
qtrue, //qboolean hasAltMode;
qfalse, //qboolean hasThirdMode;
@@ -2468,12 +2463,12 @@ weaponAttributes_t bg_weapons[ ] =
WUT_ALIENS //WUTeam_t team;
},
{
- WP_POUNCE, //int weaponNum;
- 100, //int price;
+ WP_AREA_ZAP, //int weaponNum;
+ 0, //int price;
( 1 << S1 )|( 1 << S2 )|( 1 << S3 ), //int stages
SLOT_WEAPON, //int slots;
- "pounce", //char *weaponName;
- "Claw and pounce", //char *weaponHumanName;
+ "areazap", //char *weaponName;
+ "Area Zap", //char *weaponHumanName;
{ "models/weapons2/gauntlet/gauntlet.md3", 0, 0, 0 },
"icons/iconw_gauntlet",
0, //int quan;
@@ -2481,31 +2476,35 @@ weaponAttributes_t bg_weapons[ ] =
0, //int maxClips;
qtrue, //int infiniteAmmo;
qfalse, //int usesEnergy;
- 750, //int repeatRate;
+ CHIMERA_CLAW_REPEAT, //int repeatRate1;
+ CHIMERA_AREAZAP_REPEAT,//int repeatRate2;
+ 0, //int repeatRate3;
0, //int reloadTime;
- qfalse, //qboolean hasAltMode;
+ qtrue, //qboolean hasAltMode;
qfalse, //qboolean hasThirdMode;
qfalse, //qboolean purchasable;
0, //int buildDelay;
WUT_ALIENS //WUTeam_t team;
},
{
- WP_POUNCE_UPG, //int weaponNum;
- 100, //int price;
+ WP_DIRECT_ZAP, //int weaponNum;
+ 0, //int price;
( 1 << S1 )|( 1 << S2 )|( 1 << S3 ), //int stages
SLOT_WEAPON, //int slots;
- "pounce_upgrade", //char *weaponName;
- "Claw and pounce (upgrade)", //char *weaponHumanName;
+ "directzap", //char *weaponName;
+ "Directed Zap", //char *weaponHumanName;
{ "models/weapons2/gauntlet/gauntlet.md3", 0, 0, 0 },
"icons/iconw_gauntlet",
- 3, //int quan;
+ 0, //int quan;
0, //int clips;
0, //int maxClips;
qtrue, //int infiniteAmmo;
qfalse, //int usesEnergy;
- 750, //int repeatRate;
+ CHIMERA_CLAW_U_REPEAT,//int repeatRate1;
+ CHIMERA_DIRECTZAP_REPEAT,//int repeatRate2;
+ CHIMERA_AREAZAP_REPEAT,//int repeatRate3;
0, //int reloadTime;
- qfalse, //qboolean hasAltMode;
+ qtrue, //qboolean hasAltMode;
qtrue, //qboolean hasThirdMode;
qfalse, //qboolean purchasable;
0, //int buildDelay;
@@ -2513,7 +2512,7 @@ weaponAttributes_t bg_weapons[ ] =
},
{
WP_GROUND_POUND, //int weaponNum;
- 100, //int price;
+ 0, //int price;
( 1 << S1 )|( 1 << S2 )|( 1 << S3 ), //int stages
SLOT_WEAPON, //int slots;
"groundpound", //char *weaponName;
@@ -2525,7 +2524,9 @@ weaponAttributes_t bg_weapons[ ] =
0, //int maxClips;
qtrue, //int infiniteAmmo;
qfalse, //int usesEnergy;
- 750, //int repeatRate;
+ BMOFO_CLAW_REPEAT, //int repeatRate1;
+ BMOFO_KNOCK_REPEAT, //int repeatRate2;
+ BMOFO_CLAW_REPEAT, //int repeatRate3;
0, //int reloadTime;
qtrue, //qboolean hasAltMode;
qtrue, //qboolean hasThirdMode;
@@ -2535,7 +2536,7 @@ weaponAttributes_t bg_weapons[ ] =
},
{
WP_LOCKBLOB_LAUNCHER, //int weaponNum;
- 100, //int price;
+ 0, //int price;
( 1 << S1 )|( 1 << S2 )|( 1 << S3 ), //int stages
SLOT_WEAPON, //int slots;
"lockblob", //char *weaponName;
@@ -2547,7 +2548,9 @@ weaponAttributes_t bg_weapons[ ] =
0, //int maxClips;
qtrue, //int infiniteAmmo;
qfalse, //int usesEnergy;
- 500, //int repeatRate;
+ 500, //int repeatRate1;
+ 500, //int repeatRate2;
+ 500, //int repeatRate3;
0, //int reloadTime;
qfalse, //qboolean hasAltMode;
qfalse, //qboolean hasThirdMode;
@@ -2557,7 +2560,7 @@ weaponAttributes_t bg_weapons[ ] =
},
{
WP_TESLAGEN, //int weaponNum;
- 100, //int price;
+ 0, //int price;
( 1 << S1 )|( 1 << S2 )|( 1 << S3 ), //int stages
SLOT_WEAPON, //int slots;
"teslagen", //char *weaponName;
@@ -2569,7 +2572,9 @@ weaponAttributes_t bg_weapons[ ] =
0, //int maxClips;
qtrue, //int infiniteAmmo;
qtrue, //int usesEnergy;
- 500, //int repeatRate;
+ 500, //int repeatRate1;
+ 500, //int repeatRate2;
+ 500, //int repeatRate3;
0, //int reloadTime;
qfalse, //qboolean hasAltMode;
qfalse, //qboolean hasThirdMode;
@@ -2807,19 +2812,53 @@ qboolean BG_FindUsesEnergyForWeapon( int weapon )
/*
==============
-BG_FindRepeatRateForWeapon
+BG_FindRepeatRate1ForWeapon
==============
*/
-int BG_FindRepeatRateForWeapon( int weapon )
+int BG_FindRepeatRate1ForWeapon( int weapon )
{
int i;
for( i = 0; i < bg_numWeapons; i++ )
{
if( bg_weapons[ i ].weaponNum == weapon )
- {
- return bg_weapons[ i ].repeatRate;
- }
+ return bg_weapons[ i ].repeatRate1;
+ }
+
+ return 1000;
+}
+
+/*
+==============
+BG_FindRepeatRate2ForWeapon
+==============
+*/
+int BG_FindRepeatRate2ForWeapon( int weapon )
+{
+ int i;
+
+ for( i = 0; i < bg_numWeapons; i++ )
+ {
+ if( bg_weapons[ i ].weaponNum == weapon )
+ return bg_weapons[ i ].repeatRate2;
+ }
+
+ return 1000;
+}
+
+/*
+==============
+BG_FindRepeatRate3ForWeapon
+==============
+*/
+int BG_FindRepeatRate3ForWeapon( int weapon )
+{
+ int i;
+
+ for( i = 0; i < bg_numWeapons; i++ )
+ {
+ if( bg_weapons[ i ].weaponNum == weapon )
+ return bg_weapons[ i ].repeatRate3;
}
return 1000;
@@ -2951,7 +2990,7 @@ upgradeAttributes_t bg_upgrades[ ] =
{
{
UP_CHESTARMOUR, //int upgradeNum;
- 100, //int price;
+ CHESTARMOUR_PRICE, //int price;
( 1 << S1 )|( 1 << S2 )|( 1 << S3 ), //int stages
SLOT_TORSO, //int slots;
"carmour", //char *upgradeName;
@@ -2964,7 +3003,7 @@ upgradeAttributes_t bg_upgrades[ ] =
},
{
UP_LIMBARMOUR, //int upgradeNum;
- 100, //int price;
+ LIMBARMOUR_PRICE, //int price;
( 1 << S1 )|( 1 << S2 )|( 1 << S3 ), //int stages
SLOT_ARMS|SLOT_LEGS, //int slots;
"larmour", //char *upgradeName;
@@ -2977,7 +3016,7 @@ upgradeAttributes_t bg_upgrades[ ] =
},
{
UP_HELMET, //int upgradeNum;
- 100, //int price;
+ HELMET_PRICE, //int price;
( 1 << S1 )|( 1 << S2 )|( 1 << S3 ), //int stages
SLOT_HEAD, //int slots;
"helmet", //char *upgradeName;
@@ -2990,7 +3029,7 @@ upgradeAttributes_t bg_upgrades[ ] =
},
{
UP_ANTITOXIN, //int upgradeNum;
- 100, //int price;
+ ANTITOXIN_PRICE, //int price;
( 1 << S1 )|( 1 << S2 )|( 1 << S3 ), //int stages
SLOT_NONE, //int slots;
"atoxin", //char *upgradeName;
@@ -3003,7 +3042,7 @@ upgradeAttributes_t bg_upgrades[ ] =
},
{
UP_BATTPACK, //int upgradeNum;
- 100, //int price;
+ BATTPACK_PRICE, //int price;
( 1 << S1 )|( 1 << S2 )|( 1 << S3 ), //int stages
SLOT_BACKPACK, //int slots;
"battpack", //char *upgradeName;
@@ -3016,7 +3055,7 @@ upgradeAttributes_t bg_upgrades[ ] =
},
{
UP_JETPACK, //int upgradeNum;
- 100, //int price;
+ JETPACK_PRICE, //int price;
( 1 << S1 )|( 1 << S2 )|( 1 << S3 ), //int stages
SLOT_BACKPACK, //int slots;
"jetpack", //char *upgradeName;
@@ -3029,8 +3068,8 @@ upgradeAttributes_t bg_upgrades[ ] =
},
{
UP_BATTLESUIT, //int upgradeNum;
- 100, //int price;
- ( 1 << S1 )|( 1 << S2 )|( 1 << S3 ), //int stages
+ BSUIT_PRICE, //int price;
+ ( 1 << S1 )|( 1 << S2 )|( 1 << S3 ), //int stages
SLOT_HEAD|SLOT_TORSO|SLOT_ARMS|SLOT_LEGS, //int slots;
"bsuit", //char *upgradeName;
"Battlesuit", //char *upgradeHumanName;
@@ -3042,7 +3081,7 @@ upgradeAttributes_t bg_upgrades[ ] =
},
{
UP_MGCLIP, //int upgradeNum;
- 10, //int price;
+ MGCLIP_PRICE, //int price;
( 1 << S1 )|( 1 << S2 )|( 1 << S3 ), //int stages
SLOT_NONE, //int slots;
"mgclip", //char *upgradeName;
@@ -3055,7 +3094,7 @@ upgradeAttributes_t bg_upgrades[ ] =
},
{
UP_100CGAMMO, //int upgradeNum;
- 10, //int price;
+ CGAMMO_PRICE, //int price;
( 1 << S1 )|( 1 << S2 )|( 1 << S3 ), //int stages
SLOT_NONE, //int slots;
"100cgammo", //char *upgradeName;
@@ -3068,7 +3107,7 @@ upgradeAttributes_t bg_upgrades[ ] =
},
{
UP_200GAS, //int upgradeNum;
- 10, //int price;
+ GAS_PRICE, //int price;
( 1 << S1 )|( 1 << S2 )|( 1 << S3 ), //int stages
SLOT_NONE, //int slots;
"200gas", //char *upgradeName;
diff --git a/src/game/bg_pmove.c b/src/game/bg_pmove.c
index b8e3b982..8cf32d01 100644
--- a/src/game/bg_pmove.c
+++ b/src/game/bg_pmove.c
@@ -185,9 +185,8 @@ static void PM_Friction( void )
//TA: make sure vertical velocity is NOT set to zero when wall climbing
VectorCopy( vel, vec );
- if( pml.walking &&
- !( pm->ps->stats[ STAT_STATE ] & SS_WALLCLIMBING ) )
- vec[2] = 0; // ignore slope movement
+ if( pml.walking && !( pm->ps->stats[ STAT_STATE ] & SS_WALLCLIMBING ) )
+ vec[ 2 ] = 0; // ignore slope movement
speed = VectorLength( vec );
@@ -315,18 +314,18 @@ static float PM_CmdScale( usercmd_t *cmd )
if( !( pm->ps->stats[ STAT_STATE ] & SS_SPEEDBOOST ) )
{
//if not sprinting
- modifier *= 0.8;
+ modifier *= HUMAN_JOG_MODIFIER;
}
if( cmd->forwardmove < 0 )
{
//can't run backwards
- modifier *= 0.5;
+ modifier *= HUMAN_BACK_MODIFIER;
}
else if( cmd->rightmove )
{
//can't move that fast sideways
- modifier *= 0.75;
+ modifier *= HUMAN_SIDE_MODIFIER;
}
//must have +ve stamina to jump
@@ -697,9 +696,9 @@ static void PM_JetPackMove( void )
wishvel[ i ] = scale * pml.forward[ i ] * pm->cmd.forwardmove + scale * pml.right[ i ] * pm->cmd.rightmove;
if( pm->cmd.upmove > 0.0f )
- wishvel[ 2 ] = 48.0f;
+ wishvel[ 2 ] = JETPACK_FLOAT_SPEED;
if( pm->cmd.upmove < 0.0f )
- wishvel[ 2 ] = -96.0f;
+ wishvel[ 2 ] = -JETPACK_SINK_SPEED;
VectorCopy( wishvel, wishdir );
wishspeed = VectorNormalize( wishdir );
@@ -1197,13 +1196,13 @@ Returns an event number apropriate for the groundsurface
static int PM_FootstepForSurface( void )
{
//TA:
- if ( pm->ps->stats[ STAT_STATE ] & SS_CREEPSLOWED )
+ if( pm->ps->stats[ STAT_STATE ] & SS_CREEPSLOWED )
return EV_FOOTSTEP_SQUELCH;
- if ( pml.groundTrace.surfaceFlags & SURF_NOSTEPS )
+ if( pml.groundTrace.surfaceFlags & SURF_NOSTEPS )
return 0;
- if ( pml.groundTrace.surfaceFlags & SURF_METALSTEPS )
+ if( pml.groundTrace.surfaceFlags & SURF_METALSTEPS )
return EV_FOOTSTEP_METAL;
return EV_FOOTSTEP;
@@ -1441,7 +1440,7 @@ static void PM_GroundClimbTrace( void )
VectorNegate( movedir, movedir );
}
- for(i = 0; i <= 4; i++)
+ for( i = 0; i <= 4; i++ )
{
switch ( i )
{
@@ -1612,7 +1611,7 @@ static void PM_GroundClimbTrace( void )
vectoangles( trace.plane.normal, toAngles );
vectoangles( pm->ps->grapplePoint, surfAngles );
- pm->ps->delta_angles[1] -= ANGLE2SHORT( ( ( surfAngles[1] - toAngles[1] ) * 2 ) - 180 );
+ pm->ps->delta_angles[ 1 ] -= ANGLE2SHORT( ( ( surfAngles[ 1 ] - toAngles[ 1 ] ) * 2 ) - 180 );
}
}
@@ -2160,27 +2159,6 @@ static void PM_TorsoAnimation( void )
PM_ContinueTorsoAnim( TORSO_STAND );
}
-//synced alt weapons look like the way to go - simpler anyway...
-#if 0
-static void PM_packWeaponTime( int *psWeaponTime, int weaponTime1, int weaponTime2 )
-{
- if( weaponTime1 < 0 && weaponTime2 >= 0 )
- *psWeaponTime = ( *psWeaponTime & 0x00FF ) | ( ( ( weaponTime2 / 10 ) << 8 ) & 0xFF00 );
- if( weaponTime2 < 0 && weaponTime1 >= 0 )
- *psWeaponTime = ( ( weaponTime1 / 10 ) & 0x00FF ) | ( *psWeaponTime & 0xFF00 );
- else if( weaponTime1 >= 0 && weaponTime2 >= 0 )
- *psWeaponTime = ( ( weaponTime1 / 10 ) & 0x00FF ) | ( ( ( weaponTime2 / 10 ) << 8 ) & 0xFF00 );
-}
-
-static void PM_unpackWeaponTime( int psWeaponTime, int *weaponTime1, int *weaponTime2 )
-{
- if( weaponTime1 != NULL )
- *weaponTime1 = ( psWeaponTime & 0x00FF ) * 10;
-
- if( weaponTime2 != NULL )
- *weaponTime2 = ( ( psWeaponTime & 0x00FF ) >> 8 ) * 10;
-}
-#endif
/*
==============
@@ -2191,11 +2169,11 @@ Generates weapon events and modifes the weapon counter
*/
static void PM_Weapon( void )
{
- int addTime;
- int ammo, clips, maxclips;
- qboolean attack1 = qfalse;
- qboolean attack2 = qfalse;
- qboolean attack3 = qfalse;
+ int addTime = 200; //default addTime - should never be used
+ int ammo, clips, maxclips;
+ qboolean attack1 = qfalse;
+ qboolean attack2 = qfalse;
+ qboolean attack3 = qfalse;
// don't allow attack until all buttons are up
if( pm->ps->pm_flags & PMF_RESPAWNED )
@@ -2263,13 +2241,13 @@ static void PM_Weapon( void )
pm->ps->pm_flags &= ~PMF_USE_ITEM_HELD;
}
- if ( pm->ps->weaponTime > 0 )
+ if( pm->ps->weaponTime > 0 )
return;
// change weapon if time
- if ( pm->ps->weaponstate == WEAPON_DROPPING )
+ if( pm->ps->weaponstate == WEAPON_DROPPING )
{
- PM_FinishWeaponChange();
+ PM_FinishWeaponChange( );
return;
}
@@ -2303,7 +2281,7 @@ static void PM_Weapon( void )
if( BG_FindUsesEnergyForWeapon( pm->ps->weapon ) &&
BG_gotItem( UP_BATTPACK, pm->ps->stats ) )
- ammo *= 2;
+ ammo = (int)( (float)ammo * BATTPACK_MODIFIER );
BG_packAmmoArray( pm->ps->weapon, pm->ps->ammo, pm->ps->powerups, ammo, clips, maxclips );
}
@@ -2395,6 +2373,7 @@ static void PM_Weapon( void )
}
PM_AddEvent( EV_FIRE_WEAPON3 );
+ addTime = BG_FindRepeatRate3ForWeapon( pm->ps->weapon );
}
else
{
@@ -2408,6 +2387,7 @@ static void PM_Weapon( void )
if( BG_WeaponHasAltMode( pm->ps->weapon ) )
{
PM_AddEvent( EV_FIRE_WEAPON2 );
+ addTime = BG_FindRepeatRate2ForWeapon( pm->ps->weapon );
}
else
{
@@ -2417,7 +2397,10 @@ static void PM_Weapon( void )
}
}
else if( attack1 )
+ {
PM_AddEvent( EV_FIRE_WEAPON );
+ addTime = BG_FindRepeatRate1ForWeapon( pm->ps->weapon );
+ }
//TA: fire events for autohit weapons
if( pm->autoWeaponHit[ pm->ps->weapon ] )
@@ -2426,11 +2409,13 @@ static void PM_Weapon( void )
{
case WP_VENOM:
PM_AddEvent( EV_FIRE_WEAPON );
+ addTime = BG_FindRepeatRate1ForWeapon( pm->ps->weapon );
break;
case WP_POUNCE:
case WP_POUNCE_UPG:
PM_AddEvent( EV_FIRE_WEAPON2 );
+ addTime = BG_FindRepeatRate2ForWeapon( pm->ps->weapon );
break;
default:
@@ -2448,7 +2433,7 @@ static void PM_Weapon( void )
//special case for lCanon
if( pm->ps->weapon == WP_LUCIFER_CANON && attack1 )
{
- ammo -= (int)( ceil( ( (float)pm->ps->stats[ STAT_MISC ] / (float)LC_TOTAL_CHARGE ) * 10.0f ) );
+ ammo -= (int)( ceil( ( (float)pm->ps->stats[ STAT_MISC ] / (float)LCANON_TOTAL_CHARGE ) * 10.0f ) );
//stay on the safe side
if( ammo < 0 )
@@ -2466,8 +2451,6 @@ static void PM_Weapon( void )
BG_packAmmoArray( pm->ps->weapon, pm->ps->ammo, pm->ps->powerups, ammo, clips, maxclips );
}
- addTime = BG_FindRepeatRateForWeapon( pm->ps->weapon );
-
//FIXME: predicted angles miss a problem??
if( pm->ps->weapon == WP_CHAINGUN )
{
@@ -2598,7 +2581,6 @@ void PM_UpdateViewAngles( playerState_t *ps, const usercmd_t *cmd )
AxisToAngles( rotaxis, tempang );
//force angles to -180 <= x <= 180
- //AnglesSubtract( tempang2, 0, tempang2 );
for( i = 0; i < 3; i++ )
{
while( tempang[ i ] > 180 )
@@ -2631,7 +2613,7 @@ void PM_UpdateViewAngles( playerState_t *ps, const usercmd_t *cmd )
}
}
- //fiz the view to the lock point
+ //fix the view to the lock point
if( ps->pm_type == PM_KNOCKED )
{
for( i = 0; i < 3; i++ )
diff --git a/src/game/bg_public.h b/src/game/bg_public.h
index 90e63e07..3c8606f3 100644
--- a/src/game/bg_public.h
+++ b/src/game/bg_public.h
@@ -14,25 +14,16 @@
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
*/
-
+
+//tremulous balance header
+#include "tremulous.h"
+
// because games can change separately from the main system version, we need a
// second version that must match between game and cgame
#define GAME_VERSION "baseq3-1"
#define DEFAULT_GRAVITY 800
#define GIB_HEALTH -40
-#define ARMOR_PROTECTION 0.66
-
-#define MAX_ITEMS 256
-
-#define RANK_TIED_FLAG 0x4000
-
-#define DEFAULT_SHOTGUN_SPREAD 700
-#define DEFAULT_SHOTGUN_COUNT 11
-
-#define ITEM_RADIUS 15 // item sizes are needed for client side pickup detection
-
-#define LIGHTNING_RANGE 1024
#define SCORE_NOT_PRESENT -9999 // for the CS_SCORES[12] when only one player is present
@@ -43,15 +34,7 @@
#define CROUCH_VIEWHEIGHT 12
#define DEAD_VIEWHEIGHT -16
-#define MAX_POUNCE_SPEED 750
-#define POUNCE_TIME 1000.0f
-
-#define LC_TOTAL_CHARGE 255
-#define LC_CHARGE_TIME 2000.0f
-
-#define PCLOUD_TIME 10000
-#define KOVER_TIME 2000
-#define GETUP_TIME 1000
+#define LCANON_TOTAL_CHARGE 255
//
// config strings are a general means of communicating variable length strings
@@ -83,8 +66,6 @@
#define CS_BOTINFO 25
#define CS_CLIENTS_READY 26 //TA: following suggestion in STAT_ enum STAT_CLIENTS_READY becomes a configstring
-#define CS_ITEMS 27 // string of 0's and 1's that tell which items are present
-
//TA: extra stuff:
#define CS_BUILDPOINTS 28
#define CS_STAGES 29
@@ -324,12 +305,6 @@ typedef enum
HI_NUM_HOLDABLE
} holdable_t;
-//TA: needed client side to size sprites
-#define FIREBALL_LIFETIME 1000.0f
-#define FIREBALL_SPEED 200.0f
-#define FIREBALL_GAP 15 //basically as fast as possible yet regular
-#define FIREBALL_LAG 0.5f //the amount of player velocity that is added to the fireball
-
typedef enum
{
WP_NONE,
@@ -929,7 +904,6 @@ typedef struct
int health;
int regenRate;
- int damage;
int splashDamage;
int splashRadius;
@@ -942,8 +916,8 @@ typedef struct
int nextthink;
- int turretFireSpeed;
int turretRange;
+ int turretFireSpeed;
weapon_t turretProjType;
float minNormal;
@@ -978,7 +952,9 @@ typedef struct
qboolean infiniteAmmo;
qboolean usesEnergy;
- int repeatRate;
+ int repeatRate1;
+ int repeatRate2;
+ int repeatRate3;
int reloadTime;
qboolean hasAltMode;
@@ -1042,7 +1018,6 @@ trType_t BG_FindTrajectoryForBuildable( int bclass );
float BG_FindBounceForBuildable( int bclass );
int BG_FindBuildPointsForBuildable( int bclass );
qboolean BG_FindStagesForBuildable( int bclass, stage_t stage );
-int BG_FindDamageForBuildable( int bclass );
int BG_FindSplashDamageForBuildable( int bclass );
int BG_FindSplashRadiusForBuildable( int bclass );
int BG_FindMODForBuildable( int bclass );
@@ -1050,8 +1025,8 @@ int BG_FindTeamForBuildable( int bclass );
weapon_t BG_FindBuildWeaponForBuildable( int bclass );
int BG_FindAnimForBuildable( int bclass );
int BG_FindNextThinkForBuildable( int bclass );
-int BG_FindFireSpeedForBuildable( int bclass );
int BG_FindRangeForBuildable( int bclass );
+int BG_FindFireSpeedForBuildable( int bclass );
weapon_t BG_FindProjTypeForBuildable( int bclass );
float BG_FindMinNormalForBuildable( int bclass );
qboolean BG_FindInvertNormalForBuildable( int bclass );
@@ -1095,7 +1070,9 @@ char *BG_FindIconForWeapon( int weapon );
void BG_FindAmmoForWeapon( int weapon, int *quan, int *clips, int *maxClips );
qboolean BG_FindInfinteAmmoForWeapon( int weapon );
qboolean BG_FindUsesEnergyForWeapon( int weapon );
-int BG_FindRepeatRateForWeapon( int weapon );
+int BG_FindRepeatRate1ForWeapon( int weapon );
+int BG_FindRepeatRate2ForWeapon( int weapon );
+int BG_FindRepeatRate3ForWeapon( int weapon );
int BG_FindReloadTimeForWeapon( int weapon );
qboolean BG_WeaponHasAltMode( int weapon );
qboolean BG_WeaponHasThirdMode( int weapon );
@@ -1114,19 +1091,14 @@ weapon_t BG_FindWeaponAmmoForBuildable( int upgrade );
void BG_FindAmmoForUpgrade( int upgrade, int *ammo, int *clips );
WUTeam_t BG_FindTeamForUpgrade( int upgrade );
-// g_dmflags->integer flags
-#define DF_NO_FALLING 8
-#define DF_FIXED_FOV 16
-#define DF_NO_FOOTSTEPS 32
-
// content masks
-#define MASK_ALL (-1)
+#define MASK_ALL (-1)
#define MASK_SOLID (CONTENTS_SOLID)
-#define MASK_PLAYERSOLID (CONTENTS_SOLID|CONTENTS_PLAYERCLIP|CONTENTS_BODY)
-#define MASK_DEADSOLID (CONTENTS_SOLID|CONTENTS_PLAYERCLIP)
+#define MASK_PLAYERSOLID (CONTENTS_SOLID|CONTENTS_PLAYERCLIP|CONTENTS_BODY)
+#define MASK_DEADSOLID (CONTENTS_SOLID|CONTENTS_PLAYERCLIP)
#define MASK_WATER (CONTENTS_WATER|CONTENTS_LAVA|CONTENTS_SLIME)
#define MASK_OPAQUE (CONTENTS_SOLID|CONTENTS_SLIME|CONTENTS_LAVA)
-#define MASK_SHOT (CONTENTS_SOLID|CONTENTS_BODY|CONTENTS_CORPSE)
+#define MASK_SHOT (CONTENTS_SOLID|CONTENTS_BODY|CONTENTS_CORPSE)
//
@@ -1173,10 +1145,6 @@ void BG_PlayerStateToEntityStateExtraPolate( playerState_t *ps, entityState_t *
qboolean BG_PlayerTouchesItem( playerState_t *ps, entityState_t *item, int atTime );
-#define CREEP_BASESIZE 120
-#define REACTOR_BASESIZE 1000
-#define REPEATER_BASESIZE 500
-
#define ARENAS_PER_TIER 4
#define MAX_ARENAS 1024
#define MAX_ARENAS_TEXT 8192
diff --git a/src/game/g_active.c b/src/game/g_active.c
index 63e4c0e8..6dda7ade 100644
--- a/src/game/g_active.c
+++ b/src/game/g_active.c
@@ -474,9 +474,9 @@ void ClientTimerActions( gentity_t *ent, int msec )
//client is charging up for a pounce
if( client->ps.weapon == WP_POUNCE || client->ps.weapon == WP_POUNCE_UPG )
{
- if( client->ps.stats[ STAT_MISC ] < MAX_POUNCE_SPEED && ucmd->buttons & BUTTON_ATTACK2 )
+ if( client->ps.stats[ STAT_MISC ] < DRAGOON_POUNCE_SPEED && ucmd->buttons & BUTTON_ATTACK2 )
{
- client->ps.stats[ STAT_MISC ] += ( 100.0f / POUNCE_TIME ) * MAX_POUNCE_SPEED;
+ client->ps.stats[ STAT_MISC ] += ( 100.0f / (float)DRAGOON_POUNCE_TIME ) * DRAGOON_POUNCE_SPEED;
client->allowedToPounce = qtrue;
}
@@ -488,8 +488,8 @@ void ClientTimerActions( gentity_t *ent, int msec )
client->ps.stats[ STAT_MISC ] = 0;
}
- if( client->ps.stats[ STAT_MISC ] > MAX_POUNCE_SPEED )
- client->ps.stats[ STAT_MISC ] = MAX_POUNCE_SPEED;
+ if( client->ps.stats[ STAT_MISC ] > DRAGOON_POUNCE_SPEED )
+ client->ps.stats[ STAT_MISC ] = DRAGOON_POUNCE_SPEED;
}
//client is charging up an lcanon
@@ -499,14 +499,14 @@ void ClientTimerActions( gentity_t *ent, int msec )
BG_unpackAmmoArray( WP_LUCIFER_CANON, client->ps.ammo, client->ps.powerups, &ammo, NULL, NULL );
- if( client->ps.stats[ STAT_MISC ] < LC_TOTAL_CHARGE && ucmd->buttons & BUTTON_ATTACK )
- client->ps.stats[ STAT_MISC ] += ( 100.0f / LC_CHARGE_TIME ) * LC_TOTAL_CHARGE;
+ if( client->ps.stats[ STAT_MISC ] < LCANON_TOTAL_CHARGE && ucmd->buttons & BUTTON_ATTACK )
+ client->ps.stats[ STAT_MISC ] += ( 100.0f / LCANON_CHARGE_TIME ) * LCANON_TOTAL_CHARGE;
- if( client->ps.stats[ STAT_MISC ] > LC_TOTAL_CHARGE )
- client->ps.stats[ STAT_MISC ] = LC_TOTAL_CHARGE;
+ if( client->ps.stats[ STAT_MISC ] > LCANON_TOTAL_CHARGE )
+ client->ps.stats[ STAT_MISC ] = LCANON_TOTAL_CHARGE;
- if( client->ps.stats[ STAT_MISC ] > ( ammo * LC_TOTAL_CHARGE ) / 10 )
- client->ps.stats[ STAT_MISC ] = ammo * LC_TOTAL_CHARGE / 10;
+ if( client->ps.stats[ STAT_MISC ] > ( ammo * LCANON_TOTAL_CHARGE ) / 10 )
+ client->ps.stats[ STAT_MISC ] = ammo * LCANON_TOTAL_CHARGE / 10;
}
switch( client->ps.weapon )
@@ -547,13 +547,13 @@ void ClientTimerActions( gentity_t *ent, int msec )
//client is poisoned
if( client->ps.stats[ STAT_STATE ] & SS_POISONCLOUDED )
- G_Damage( ent, NULL, NULL, NULL, NULL, 5, 0, MOD_VENOM );
+ G_Damage( ent, NULL, NULL, NULL, NULL, HYDRA_PCLOUD_DMG, 0, MOD_VENOM );
//replenish alien health
if( client->ps.stats[ STAT_PTEAM ] == PTE_ALIENS )
{
int entityList[ MAX_GENTITIES ];
- vec3_t range = { 200, 200, 200 };
+ vec3_t range = { BMOFO_REGEN_RANGE, BMOFO_REGEN_RANGE, BMOFO_REGEN_RANGE };
vec3_t mins, maxs, dir;
int i, num;
gentity_t *alienPlayer;
@@ -570,7 +570,7 @@ void ClientTimerActions( gentity_t *ent, int msec )
if( alienPlayer->client && alienPlayer->client->ps.stats[ STAT_PTEAM ] == PTE_ALIENS &&
alienPlayer->client->ps.stats[ STAT_PCLASS ] == PCL_A_O_LEV4 )
{
- modifier = 2.0f;
+ modifier = BMOFO_REGEN_MOD;
break;
}
}
@@ -641,9 +641,6 @@ void ClientEvents( gentity_t *ent, int oldEventSequence )
if( ent->s.eType != ET_PLAYER )
break; // not in the player model
- if( g_dmflags.integer & DF_NO_FALLING )
- break;
-
if( event == EV_FALL_FAR )
damage = 10;
else
@@ -869,23 +866,27 @@ void ClientThink_real( gentity_t *ent )
client->ps.pm_type = PM_NORMAL;
if( client->ps.stats[ STAT_STATE ] & SS_GRABBED &&
- client->lastGrabTime + 1000 < level.time )
+ client->lastGrabTime + HYDRA_GRAB_TIME < level.time )
client->ps.stats[ STAT_STATE ] &= ~SS_GRABBED;
if( client->ps.stats[ STAT_STATE ] & SS_BLOBLOCKED &&
client->lastLockTime + 5000 < level.time )
client->ps.stats[ STAT_STATE ] &= ~SS_BLOBLOCKED;
+ if( client->ps.stats[ STAT_STATE ] & SS_SLOWLOCKED &&
+ client->lastLockTime + DRAGOON_SLOWBLOB_TIME < level.time )
+ client->ps.stats[ STAT_STATE ] &= ~SS_SLOWLOCKED;
+
if( client->ps.stats[ STAT_STATE ] & SS_BOOSTED &&
client->lastBoostedTime + 20000 < level.time )
client->ps.stats[ STAT_STATE ] &= ~SS_BOOSTED;
if( client->ps.stats[ STAT_STATE ] & SS_POISONCLOUDED &&
- client->lastPoisonCloudedTime + PCLOUD_TIME < level.time )
+ client->lastPoisonCloudedTime + HYDRA_PCLOUD_TIME < level.time )
client->ps.stats[ STAT_STATE ] &= ~SS_POISONCLOUDED;
if( client->ps.stats[ STAT_STATE ] & SS_KNOCKEDOVER &&
- client->lastKnockedOverTime + KOVER_TIME < level.time &&
+ client->lastKnockedOverTime + BMOFO_KOVER_TIME < level.time &&
ucmd->upmove > 0 )
{
client->lastGetUpTime = level.time;
@@ -901,7 +902,7 @@ void ClientThink_real( gentity_t *ent )
}
if( client->ps.stats[ STAT_STATE ] & SS_GETTINGUP &&
- client->lastGetUpTime + GETUP_TIME < level.time )
+ client->lastGetUpTime + BMOFO_GETUP_TIME < level.time )
{
client->ps.stats[ STAT_STATE ] &= ~SS_GETTINGUP;
VectorCopy( ent->client->ps.grapplePoint, ent->client->ps.viewangles );
@@ -927,20 +928,20 @@ void ClientThink_real( gentity_t *ent )
//TA: slow player if charging up for a pounce
if( ( client->ps.weapon == WP_POUNCE || client->ps.weapon == WP_POUNCE_UPG ) &&
ucmd->buttons & BUTTON_ATTACK2 )
- client->ps.speed *= 0.75;
+ client->ps.speed *= DRAGOON_POUNCE_SPEED_MOD;
//TA: slow the player if slow locked
if( client->ps.stats[ STAT_STATE ] & SS_SLOWLOCKED )
- client->ps.speed *= 0.5;
+ client->ps.speed *= DRAGOON_SLOWBLOB_SPEED_MOD;
//TA: slow player if standing in creep
- for ( i = 1, creepNode = g_entities + i; i < level.num_entities; i++, creepNode++ )
+ for( i = 1, creepNode = g_entities + i; i < level.num_entities; i++, creepNode++ )
{
if( creepNode->biteam == PTE_ALIENS )
{
VectorSubtract( client->ps.origin, creepNode->s.origin, temp_v );
- if( ( VectorLength( temp_v ) <= CREEP_BASESIZE ) &&
+ if( ( VectorLength( temp_v ) <= BG_FindCreepSizeForBuildable( creepNode->s.modelindex ) ) &&
( temp_v[ 2 ] <= 21 ) && //assumes mins of player is (x, x, -24)
( client->ps.stats[ STAT_PTEAM ] == PTE_HUMANS ) )
{
@@ -1010,7 +1011,7 @@ void ClientThink_real( gentity_t *ent )
pm.trace = trap_Trace;
pm.pointcontents = trap_PointContents;
pm.debugLevel = g_debugMove.integer;
- pm.noFootsteps = ( g_dmflags.integer & DF_NO_FOOTSTEPS ) > 0;
+ pm.noFootsteps = 0;
pm.pmove_fixed = pmove_fixed.integer | client->pers.pmoveFixed;
pm.pmove_msec = pmove_msec.integer;
diff --git a/src/game/g_buildable.c b/src/game/g_buildable.c
index 43690497..4c57d09d 100644
--- a/src/game/g_buildable.c
+++ b/src/game/g_buildable.c
@@ -231,7 +231,7 @@ static qboolean findCreep( gentity_t *self )
}
}
- if( minDistance <= ( CREEP_BASESIZE * 3 ) )
+ if( minDistance <= CREEP_BASESIZE )
{
self->parentNode = closestSpawn;
return qtrue;
@@ -363,8 +363,8 @@ void ASpawn_Blast( gentity_t *self )
vec3_t dir;
// we don't have a valid direction, so just point straight up
- dir[0] = dir[1] = 0;
- dir[2] = 1;
+ dir[ 0 ] = dir[ 1 ] = 0;
+ dir[ 2 ] = 1;
//do a bit of radius damage
G_SelectiveRadiusDamage( self->s.pos.trBase, self->parent, self->splashDamage,
@@ -472,7 +472,7 @@ think function for Alien Acid Tube
void AOvermind_Think( gentity_t *self )
{
int entityList[ MAX_GENTITIES ];
- vec3_t range = { 200, 200, 200 };
+ vec3_t range = { OVERMIND_ATTACK_RANGE, OVERMIND_ATTACK_RANGE, OVERMIND_ATTACK_RANGE };
vec3_t mins, maxs;
int i, num;
gentity_t *enemy;
@@ -518,7 +518,7 @@ pain function for Alien Spawn
*/
void ABarricade_Pain( gentity_t *self, gentity_t *attacker, int damage )
{
- if( random() > 0.5f )
+ if( rand( ) % 1 )
G_setBuildableAnim( self, BANIM_PAIN1, qfalse );
else
G_setBuildableAnim( self, BANIM_PAIN2, qfalse );
@@ -536,8 +536,8 @@ void ABarricade_Blast( gentity_t *self )
vec3_t dir;
// we don't have a valid direction, so just point straight up
- dir[0] = dir[1] = 0;
- dir[2] = 1;
+ dir[ 0 ] = dir[ 1 ] = 0;
+ dir[ 2 ] = 1;
//do a bit of radius damage
G_SelectiveRadiusDamage( self->s.pos.trBase, self->parent, self->splashDamage,
@@ -617,7 +617,7 @@ void AAcidTube_Damage( gentity_t *self )
G_AddEvent( self, EV_GIB_ALIEN, DirToByte( self->s.origin2 ) );
}
- if( ( self->timestamp + 10000 ) > level.time )
+ if( ( self->timestamp + ACIDTUBE_REPEAT ) > level.time )
self->think = AAcidTube_Damage;
else
{
@@ -642,7 +642,7 @@ think function for Alien Acid Tube
void AAcidTube_Think( gentity_t *self )
{
int entityList[ MAX_GENTITIES ];
- vec3_t range = { 200, 200, 200 };
+ vec3_t range = { ACIDTUBE_RANGE, ACIDTUBE_RANGE, ACIDTUBE_RANGE };
vec3_t mins, maxs;
int i, num;
gentity_t *enemy;
@@ -669,6 +669,7 @@ void AAcidTube_Think( gentity_t *self )
self->think = AAcidTube_Damage;
self->nextthink = level.time + 100;
G_setBuildableAnim( self, BANIM_ATTACK1, qfalse );
+ return;
}
}
@@ -757,8 +758,8 @@ void AHovel_Die( gentity_t *self, gentity_t *inflictor, gentity_t *attacker, int
vec3_t dir;
// we don't have a valid direction, so just point straight up
- dir[0] = dir[1] = 0;
- dir[2] = 1;
+ dir[ 0 ] = dir[ 1 ] = 0;
+ dir[ 2 ] = 1;
//do a bit of radius damage
G_SelectiveRadiusDamage( self->s.pos.trBase, self->parent, self->splashDamage,
@@ -843,7 +844,7 @@ void ABooster_Touch( gentity_t *self, gentity_t *other, trace_t *trace )
gclient_t *client = other->client;
//only allow boostage once every 30 seconds
- if( client->lastBoostedTime + 30000 > level.time )
+ if( client->lastBoostedTime + BOOSTER_INTERVAL > level.time )
return;
//restore ammo, if any
@@ -863,9 +864,6 @@ void ABooster_Touch( gentity_t *self, gentity_t *other, trace_t *trace )
//==================================================================================
-#define BLOB_PROJSPEED 500
-#define MIN_DOT 0.85f // max angle = acos( MIN_DOT )
-
/*
================
adef_fireonemeny
@@ -885,7 +883,7 @@ void adef_fireonenemy( gentity_t *self, int firespeed )
VectorScale( self->enemy->jerk, 1.0f / 3.0f, thirdJerk );
//O( time ) - worst case O( time ) = 250 iterations
- for( i = 0; ( i * BLOB_PROJSPEED ) / 1000.0f < distanceToTarget; i++ )
+ for( i = 0; ( i * LOCKBLOB_SPEED ) / 1000.0f < distanceToTarget; i++ )
{
float time = (float)i / 1000.0f;
@@ -943,7 +941,7 @@ qboolean adef_checktarget( gentity_t *self, gentity_t *target, int range )
//only allow a narrow field of "vision"
VectorNormalize( distance ); //is now direction of target
- if( DotProduct( distance, self->s.origin2 ) < MIN_DOT )
+ if( DotProduct( distance, self->s.origin2 ) < LOCKBLOB_DOT )
return qfalse;
trap_Trace( &trace, self->s.pos.trBase, NULL, NULL, target->s.pos.trBase, self->s.number, MASK_SHOT );
@@ -1048,8 +1046,6 @@ void HRpt_Think( gentity_t *self )
self->nextthink = level.time + REFRESH_TIME;
}
-#define REFIL_TIME 500 //1/2 second between every clip refil
-
/*
================
HRpt_Use
@@ -1064,7 +1060,7 @@ void HRpt_Use( gentity_t *self, gentity_t *other, gentity_t *activator )
playerState_t *ps = &activator->client->ps;
- if( activator->client->lastRefilTime + REFIL_TIME > level.time )
+ if( activator->client->lastRefilTime + ENERGY_REFIL_TIME > level.time )
return;
if( !BG_FindUsesEnergyForWeapon( ps->weapon ) )
@@ -1073,7 +1069,7 @@ void HRpt_Use( gentity_t *self, gentity_t *other, gentity_t *activator )
BG_FindAmmoForWeapon( ps->weapon, &maxAmmo, NULL, &maxClips );
if( BG_gotItem( UP_BATTPACK, ps->stats ) )
- maxAmmo *= 2;
+ maxAmmo = (int)( (float)maxAmmo * BATTPACK_MODIFIER );
BG_unpackAmmoArray( ps->weapon, ps->ammo, ps->powerups, &ammo, &clips, NULL );
@@ -1202,9 +1198,6 @@ void HDCC_Think( gentity_t *self )
//==================================================================================
-#define MAX_MEDISTAT_CLIENTS 1
-#define MAX_ADVMEDISTAT_CLIENTS 3
-
/*
================
HMedistat_Think
@@ -1325,8 +1318,8 @@ void HFM_Die( gentity_t *self, gentity_t *inflictor, gentity_t *attacker, int da
vec3_t dir;
// we don't have a valid direction, so just point straight up
- dir[0] = dir[1] = 0;
- dir[2] = -1;
+ dir[ 0 ] = dir[ 1 ] = 0;
+ dir[ 2 ] = -1;
//do a bit of radius damage
G_RadiusDamage( self->s.pos.trBase, self->parent, self->splashDamage,
@@ -1366,10 +1359,6 @@ void HFM_Think( gentity_t *self )
//==================================================================================
-#define HMGTURRET_ANGULARSPEED 20 //degrees/think ~= 200deg/sec
-#define HMGTURRET_ACCURACYTOLERANCE HMGTURRET_ANGULARSPEED / 2 //angular difference for turret to fire
-#define HMGTURRET_VERTICALCAP 30 //- maximum pitch
-
/*
================
HMGTurret_TrackEnemy
@@ -1398,10 +1387,10 @@ qboolean HMGTurret_TrackEnemy( gentity_t *self )
angularDiff[ YAW ] = AngleSubtract( self->s.angles2[ YAW ], angleToTarget[ YAW ] );
//if not pointing at our target then move accordingly
- if( angularDiff[ PITCH ] < -HMGTURRET_ACCURACYTOLERANCE )
- self->s.angles2[ PITCH ] += HMGTURRET_ANGULARSPEED;
- else if( angularDiff[ PITCH ] > HMGTURRET_ACCURACYTOLERANCE )
- self->s.angles2[ PITCH ] -= HMGTURRET_ANGULARSPEED;
+ if( angularDiff[ PITCH ] < -MGTURRET_ACCURACYTOLERANCE )
+ self->s.angles2[ PITCH ] += MGTURRET_ANGULARSPEED;
+ else if( angularDiff[ PITCH ] > MGTURRET_ACCURACYTOLERANCE )
+ self->s.angles2[ PITCH ] -= MGTURRET_ANGULARSPEED;
else
self->s.angles2[ PITCH ] = angleToTarget[ PITCH ];
@@ -1410,14 +1399,14 @@ qboolean HMGTurret_TrackEnemy( gentity_t *self )
if( temp > 180 )
temp -= 360;
- if( temp < -HMGTURRET_VERTICALCAP )
- self->s.angles2[ PITCH ] = (-360)+HMGTURRET_VERTICALCAP;
+ if( temp < -MGTURRET_VERTICALCAP )
+ self->s.angles2[ PITCH ] = (-360) + MGTURRET_VERTICALCAP;
//if not pointing at our target then move accordingly
- if( angularDiff[ YAW ] < -HMGTURRET_ACCURACYTOLERANCE )
- self->s.angles2[ YAW ] += HMGTURRET_ANGULARSPEED;
- else if( angularDiff[ YAW ] > HMGTURRET_ACCURACYTOLERANCE )
- self->s.angles2[ YAW ] -= HMGTURRET_ANGULARSPEED;
+ if( angularDiff[ YAW ] < -MGTURRET_ACCURACYTOLERANCE )
+ self->s.angles2[ YAW ] += MGTURRET_ANGULARSPEED;
+ else if( angularDiff[ YAW ] > MGTURRET_ACCURACYTOLERANCE )
+ self->s.angles2[ YAW ] -= MGTURRET_ANGULARSPEED;
else
self->s.angles2[ YAW ] = angleToTarget[ YAW ];
@@ -1426,8 +1415,8 @@ qboolean HMGTurret_TrackEnemy( gentity_t *self )
vectoangles( dirToTarget, self->turretAim );
//if pointing at our target return true
- if( abs( angleToTarget[ YAW ] - self->s.angles2[ YAW ] ) <= HMGTURRET_ACCURACYTOLERANCE &&
- abs( angleToTarget[ PITCH ] - self->s.angles2[ PITCH ] ) <= HMGTURRET_ACCURACYTOLERANCE )
+ if( abs( angleToTarget[ YAW ] - self->s.angles2[ YAW ] ) <= MGTURRET_ACCURACYTOLERANCE &&
+ abs( angleToTarget[ PITCH ] - self->s.angles2[ PITCH ] ) <= MGTURRET_ACCURACYTOLERANCE )
return qtrue;
return qfalse;
@@ -1625,8 +1614,8 @@ void HSpawn_Blast( gentity_t *self )
vec3_t dir;
// we don't have a valid direction, so just point straight up
- dir[0] = dir[1] = 0;
- dir[2] = 1;
+ dir[ 0 ] = dir[ 1 ] = 0;
+ dir[ 2 ] = 1;
self->s.modelindex = 0; //don't draw the model once its destroyed
G_AddEvent( self, EV_BUILDABLE_EXPLOSION, DirToByte( dir ) );
@@ -1657,7 +1646,7 @@ void HSpawn_Die( gentity_t *self, gentity_t *inflictor, gentity_t *attacker, int
self->die = nullDieFunction;
self->think = HSpawn_Blast;
- self->nextthink = level.time + 5000; //wait 1.5 seconds before damaging others
+ self->nextthink = level.time + HUMAN_DETONATION_DELAY;
self->powered = qfalse; //free up power
trap_LinkEntity( self );
@@ -1675,7 +1664,7 @@ void HSpawn_Think( gentity_t *self )
vec3_t mins, maxs, origin;
gentity_t *ent;
trace_t tr;
- vec3_t up = { 0, 0, 1 };
+ vec3_t up = { 0.0f, 0.0f, 1.0f };
BG_FindBBoxForClass( PCL_H_BASE, mins, maxs, NULL, NULL, NULL );
@@ -1912,7 +1901,6 @@ gentity_t *G_buildItem( gentity_t *builder, buildable_t buildable, vec3_t origin
BG_FindBBoxForBuildable( buildable, built->r.mins, built->r.maxs );
built->health = BG_FindHealthForBuildable( buildable );
- built->damage = BG_FindDamageForBuildable( buildable );
built->splashDamage = BG_FindSplashDamageForBuildable( buildable );
built->splashRadius = BG_FindSplashRadiusForBuildable( buildable );
built->splashMethodOfDeath = BG_FindMODForBuildable( buildable );
@@ -2208,9 +2196,6 @@ void FinishSpawningBuildable( gentity_t *ent )
trap_LinkEntity( built );
}
-
-qboolean itemRegistered[MAX_ITEMS];
-
/*
============
G_SpawnBuildable
diff --git a/src/game/g_client.c b/src/game/g_client.c
index b880d352..1b5ea37d 100644
--- a/src/game/g_client.c
+++ b/src/game/g_client.c
@@ -1226,7 +1226,6 @@ void ClientSpawn( gentity_t *ent, gentity_t *spawn )
int savedPing;
int ammoIndex, ammoSubIndex;
int teamLocal;
- int accuracy_hits, accuracy_shots;
int eventSequence;
char userinfo[MAX_INFO_STRING];
vec3_t bodyMaxs, classMins, up = { 0, 0, 1 };
@@ -1305,8 +1304,6 @@ void ClientSpawn( gentity_t *ent, gentity_t *spawn )
saved = client->pers;
savedSess = client->sess;
savedPing = client->ps.ping;
- accuracy_hits = client->accuracy_hits;
- accuracy_shots = client->accuracy_shots;
for( i = 0; i < MAX_PERSISTANT; i++ )
persistant[ i ] = client->ps.persistant[ i ];
@@ -1317,8 +1314,6 @@ void ClientSpawn( gentity_t *ent, gentity_t *spawn )
client->pers = saved;
client->sess = savedSess;
client->ps.ping = savedPing;
- client->accuracy_hits = accuracy_hits;
- client->accuracy_shots = accuracy_shots;
client->lastkilled_client = -1;
for( i = 0; i < MAX_PERSISTANT; i++ )
diff --git a/src/game/g_cmds.c b/src/game/g_cmds.c
index 1b2e0156..18b33792 100644
--- a/src/game/g_cmds.c
+++ b/src/game/g_cmds.c
@@ -1351,7 +1351,7 @@ void Cmd_Buy_f( gentity_t *ent )
if( BG_FindUsesEnergyForWeapon( weapon ) &&
BG_gotItem( UP_BATTPACK, ent->client->ps.stats ) )
- quan *= 2;
+ quan = (int)( (float)quan * BATTPACK_MODIFIER );
BG_packAmmoArray( weapon, ent->client->ps.ammo, ent->client->ps.powerups,
quan, clips, maxClips );
diff --git a/src/game/g_local.h b/src/game/g_local.h
index e37bdd57..ebe18d2e 100644
--- a/src/game/g_local.h
+++ b/src/game/g_local.h
@@ -312,9 +312,6 @@ struct gclient_s
vec3_t damage_from; // origin for vector calculation
qboolean damage_fromWorld; // if true, don't use the damage_from vector
- int accurateCount; // for "impressive" reward sound
- int accuracy_shots; // total number of shots
- int accuracy_hits; // total number of hits
//
int lastkilled_client;// last client that this client killed
int lasthurt_client; // last client that damaged this client
@@ -754,7 +751,6 @@ extern vmCvar_t g_maxclients; // allow this many total, including spectato
extern vmCvar_t g_maxGameClients; // allow this many active
extern vmCvar_t g_restarted;
-extern vmCvar_t g_dmflags;
extern vmCvar_t g_timelimit;
extern vmCvar_t g_friendlyFire;
extern vmCvar_t g_password;
diff --git a/src/game/g_main.c b/src/game/g_main.c
index 478d0906..edefb98d 100644
--- a/src/game/g_main.c
+++ b/src/game/g_main.c
@@ -32,7 +32,6 @@ typedef struct
gentity_t g_entities[ MAX_GENTITIES ];
gclient_t g_clients[ MAX_CLIENTS ];
-vmCvar_t g_dmflags;
vmCvar_t g_fraglimit;
vmCvar_t g_timelimit;
vmCvar_t g_capturelimit;
@@ -104,10 +103,7 @@ static cvarTable_t gameCvarTable[ ] =
{ &g_maxGameClients, "g_maxGameClients", "0", CVAR_SERVERINFO | CVAR_LATCH | CVAR_ARCHIVE, 0, qfalse },
// change anytime vars
- { &g_dmflags, "dmflags", "0", CVAR_SERVERINFO | CVAR_ARCHIVE, 0, qtrue },
- { &g_fraglimit, "fraglimit", "0", CVAR_SERVERINFO | CVAR_ARCHIVE | CVAR_NORESTART, 0, qtrue },
{ &g_timelimit, "timelimit", "0", CVAR_SERVERINFO | CVAR_ARCHIVE | CVAR_NORESTART, 0, qtrue },
- { &g_capturelimit, "capturelimit", "0", CVAR_SERVERINFO | CVAR_ARCHIVE | CVAR_NORESTART, 0, qtrue },
{ &g_synchronousClients, "g_synchronousClients", "0", CVAR_SYSTEMINFO, 0, qfalse },
@@ -851,8 +847,8 @@ void CalculateRanks( void )
else
{
// we are tied with the previous client
- level.clients[ level.sortedClients[ i - 1 ] ].ps.persistant[ PERS_RANK ] = rank | RANK_TIED_FLAG;
- level.clients[ level.sortedClients[ i ] ].ps.persistant[ PERS_RANK ] = rank | RANK_TIED_FLAG;
+ level.clients[ level.sortedClients[ i - 1 ] ].ps.persistant[ PERS_RANK ] = rank;
+ level.clients[ level.sortedClients[ i ] ].ps.persistant[ PERS_RANK ] = rank;
}
score = newScore;
diff --git a/src/game/g_missile.c b/src/game/g_missile.c
index d7c44dcf..303b192e 100644
--- a/src/game/g_missile.c
+++ b/src/game/g_missile.c
@@ -82,12 +82,9 @@ void G_ExplodeMissile( gentity_t *ent )
ent->freeAfterEvent = qtrue;
// splash damage
- if ( ent->splashDamage ) {
- if( G_RadiusDamage( ent->r.currentOrigin, ent->parent, ent->splashDamage, ent->splashRadius, ent
- , ent->splashMethodOfDeath ) ) {
- g_entities[ent->r.ownerNum].client->accuracy_hits++;
- }
- }
+ if( ent->splashDamage )
+ G_RadiusDamage( ent->r.currentOrigin, ent->parent, ent->splashDamage,
+ ent->splashRadius, ent, ent->splashMethodOfDeath );
trap_LinkEntity( ent );
}
@@ -176,14 +173,8 @@ void G_MissileImpact( gentity_t *ent, trace_t *trace )
// splash damage (doesn't apply to person directly hit)
if( ent->splashDamage )
- {
- if( G_RadiusDamage( trace->endpos, ent->parent, ent->splashDamage, ent->splashRadius,
- other, ent->splashMethodOfDeath ) )
- {
- if( !hitClient )
- g_entities[ ent->r.ownerNum ].client->accuracy_hits++;
- }
- }
+ G_RadiusDamage( trace->endpos, ent->parent, ent->splashDamage, ent->splashRadius,
+ other, ent->splashMethodOfDeath );
trap_LinkEntity( ent );
}
@@ -268,16 +259,16 @@ gentity_t *fire_flamer( gentity_t *self, vec3_t start, vec3_t dir )
bolt = G_Spawn();
bolt->classname = "flame";
- bolt->nextthink = level.time + FIREBALL_LIFETIME;
+ bolt->nextthink = level.time + FLAMER_LIFETIME;
bolt->think = G_ExplodeMissile;
bolt->s.eType = ET_MISSILE;
bolt->r.svFlags = SVF_USE_CURRENT_ORIGIN;
bolt->s.weapon = WP_FLAMER;
bolt->r.ownerNum = self->s.number;
bolt->parent = self;
- bolt->damage = 5;
- bolt->splashDamage = 5;
- bolt->splashRadius = 45;
+ bolt->damage = FLAMER_DMG;
+ bolt->splashDamage = FLAMER_DMG;
+ bolt->splashRadius = FLAMER_RADIUS;
bolt->methodOfDeath = MOD_FLAMER;
bolt->splashMethodOfDeath = MOD_FLAMER_SPLASH;
bolt->clipmask = MASK_SHOT;
@@ -286,11 +277,11 @@ gentity_t *fire_flamer( gentity_t *self, vec3_t start, vec3_t dir )
bolt->s.pos.trType = TR_LINEAR;
bolt->s.pos.trTime = level.time - MISSILE_PRESTEP_TIME; // move a bit on the very first frame
VectorCopy( start, bolt->s.pos.trBase );
- VectorScale( self->client->ps.velocity, FIREBALL_LAG, pvel );
- VectorMA( pvel, FIREBALL_SPEED, dir, bolt->s.pos.trDelta );
+ VectorScale( self->client->ps.velocity, FLAMER_LAG, pvel );
+ VectorMA( pvel, FLAMER_SPEED, dir, bolt->s.pos.trDelta );
SnapVector( bolt->s.pos.trDelta ); // save net bandwidth
- VectorCopy (start, bolt->r.currentOrigin);
+ VectorCopy( start, bolt->r.currentOrigin );
return bolt;
}
@@ -318,7 +309,7 @@ gentity_t *fire_pulseRifle( gentity_t *self, vec3_t start, vec3_t dir )
bolt->s.weapon = WP_PULSE_RIFLE;
bolt->r.ownerNum = self->s.number;
bolt->parent = self;
- bolt->damage = 20;
+ bolt->damage = PRIFLE_DMG;
bolt->splashDamage = 0;
bolt->splashRadius = 0;
//bolt->methodOfDeath = MOD_FLAMER;
@@ -329,10 +320,10 @@ gentity_t *fire_pulseRifle( gentity_t *self, vec3_t start, vec3_t dir )
bolt->s.pos.trType = TR_LINEAR;
bolt->s.pos.trTime = level.time - MISSILE_PRESTEP_TIME; // move a bit on the very first frame
VectorCopy( start, bolt->s.pos.trBase );
- VectorScale( dir, 1500, bolt->s.pos.trDelta );
+ VectorScale( dir, PRIFLE_SPEED, bolt->s.pos.trDelta );
SnapVector( bolt->s.pos.trDelta ); // save net bandwidth
- VectorCopy (start, bolt->r.currentOrigin);
+ VectorCopy( start, bolt->r.currentOrigin );
return bolt;
}
@@ -349,7 +340,7 @@ gentity_t *fire_luciferCanon( gentity_t *self, vec3_t start, vec3_t dir, int dam
{
gentity_t *bolt;
int localDamage = (int)( ceil( ( (float)damage /
- (float)LC_TOTAL_CHARGE ) * 100.0f ) );
+ (float)LCANON_TOTAL_CHARGE ) * (float)LCANON_DAMAGE ) );
VectorNormalize( dir );
@@ -374,10 +365,10 @@ gentity_t *fire_luciferCanon( gentity_t *self, vec3_t start, vec3_t dir, int dam
bolt->s.pos.trType = TR_LINEAR;
bolt->s.pos.trTime = level.time - MISSILE_PRESTEP_TIME; // move a bit on the very first frame
VectorCopy( start, bolt->s.pos.trBase );
- VectorScale( dir, 250, bolt->s.pos.trDelta );
+ VectorScale( dir, LCANON_SPEED, bolt->s.pos.trDelta );
SnapVector( bolt->s.pos.trDelta ); // save net bandwidth
- VectorCopy (start, bolt->r.currentOrigin);
+ VectorCopy( start, bolt->r.currentOrigin );
return bolt;
}
@@ -417,7 +408,7 @@ gentity_t *fire_lockblob( gentity_t *self, vec3_t start, vec3_t dir )
VectorCopy( start, bolt->s.pos.trBase );
VectorScale( dir, 500, bolt->s.pos.trDelta );
SnapVector( bolt->s.pos.trDelta ); // save net bandwidth
- VectorCopy (start, bolt->r.currentOrigin);
+ VectorCopy( start, bolt->r.currentOrigin );
return bolt;
}
@@ -442,7 +433,7 @@ gentity_t *fire_slowBlob( gentity_t *self, vec3_t start, vec3_t dir )
bolt->s.weapon = WP_POUNCE_UPG;
bolt->r.ownerNum = self->s.number;
bolt->parent = self;
- bolt->damage = 20;
+ bolt->damage = DRAGOON_SLOWBLOB_DMG;
bolt->splashDamage = 0;
bolt->splashRadius = 0;
bolt->methodOfDeath = MOD_ROCKET;
@@ -453,9 +444,9 @@ gentity_t *fire_slowBlob( gentity_t *self, vec3_t start, vec3_t dir )
bolt->s.pos.trType = TR_GRAVITY;
bolt->s.pos.trTime = level.time - MISSILE_PRESTEP_TIME; // move a bit on the very first frame
VectorCopy( start, bolt->s.pos.trBase );
- VectorScale( dir, 800, bolt->s.pos.trDelta );
+ VectorScale( dir, DRAGOON_SLOWBLOB_SPEED, bolt->s.pos.trDelta );
SnapVector( bolt->s.pos.trDelta ); // save net bandwidth
- VectorCopy (start, bolt->r.currentOrigin);
+ VectorCopy( start, bolt->r.currentOrigin );
return bolt;
}
@@ -491,9 +482,9 @@ gentity_t *fire_paraLockBlob( gentity_t *self, vec3_t start, vec3_t dir )
bolt->s.pos.trType = TR_GRAVITY;
bolt->s.pos.trTime = level.time - MISSILE_PRESTEP_TIME; // move a bit on the very first frame
VectorCopy( start, bolt->s.pos.trBase );
- VectorScale( dir, 800, bolt->s.pos.trDelta );
+ VectorScale( dir, LOCKBLOB_SPEED, bolt->s.pos.trDelta );
SnapVector( bolt->s.pos.trDelta ); // save net bandwidth
- VectorCopy (start, bolt->r.currentOrigin);
+ VectorCopy( start, bolt->r.currentOrigin );
return bolt;
}
diff --git a/src/game/g_weapon.c b/src/game/g_weapon.c
index 24cce9dd..0837d7e2 100644
--- a/src/game/g_weapon.c
+++ b/src/game/g_weapon.c
@@ -110,13 +110,6 @@ MACHINEGUN
======================================================================
*/
-#define MACHINEGUN_SPREAD 200
-#define MACHINEGUN_DAMAGE 7
-#define MACHINEGUN_TEAM_DAMAGE 5 // wimpier MG in teamplay
-
-#define CHAINGUN_SPREAD 1200
-#define CHAINGUN_DAMAGE 14
-
void bulletFire( gentity_t *ent, float spread, int damage, int mod )
{
trace_t tr;
@@ -126,14 +119,14 @@ void bulletFire( gentity_t *ent, float spread, int damage, int mod )
gentity_t *tent;
gentity_t *traceEnt;
- r = random() * M_PI * 2.0f;
- u = sin(r) * crandom() * spread * 16;
- r = cos(r) * crandom() * spread * 16;
- VectorMA (muzzle, 8192*16, forward, end);
- VectorMA (end, r, right, end);
- VectorMA (end, u, up, end);
+ r = random( ) * M_PI * 2.0f;
+ u = sin( r ) * crandom( ) * spread * 16;
+ r = cos( r ) * crandom( ) * spread * 16;
+ VectorMA( muzzle, 8192 * 16, forward, end );
+ VectorMA( end, r, right, end );
+ VectorMA( end, u, up, end );
- trap_Trace (&tr, muzzle, NULL, NULL, end, ent->s.number, MASK_SHOT);
+ trap_Trace( &tr, muzzle, NULL, NULL, end, ent->s.number, MASK_SHOT );
if( tr.surfaceFlags & SURF_NOIMPACT )
return;
@@ -158,7 +151,7 @@ void bulletFire( gentity_t *ent, float spread, int damage, int mod )
if( traceEnt->takedamage )
{
G_Damage( traceEnt, ent, ent, forward, tr.endpos,
- damage, 0, MOD_MACHINEGUN);
+ damage, 0, MOD_MACHINEGUN );
}
}
@@ -195,7 +188,7 @@ void massDriverFire( gentity_t *ent )
if( traceEnt->takedamage )
{
G_Damage( traceEnt, ent, ent, forward, tr.endpos,
- 50, 0, MOD_MACHINEGUN);
+ MDRIVER_DMG, 0, MOD_MACHINEGUN );
}
}
@@ -293,7 +286,7 @@ void lasGunFire( gentity_t *ent )
tent->s.otherEntityNum = ent->s.number;
if( traceEnt->takedamage )
- G_Damage( traceEnt, ent, ent, forward, tr.endpos, 10, 0, MOD_MACHINEGUN );
+ G_Damage( traceEnt, ent, ent, forward, tr.endpos, LASGUN_DAMAGE, 0, MOD_MACHINEGUN );
}
/*
@@ -316,7 +309,7 @@ void painSawFire( gentity_t *ent )
CalcMuzzlePoint( ent, forward, right, up, muzzle );
- VectorMA( muzzle, 32, forward, end );
+ VectorMA( muzzle, PAINSAW_RANGE, forward, end );
trap_Trace( &tr, muzzle, NULL, NULL, end, ent->s.number, MASK_SHOT );
if ( tr.surfaceFlags & SURF_NOIMPACT )
@@ -334,7 +327,7 @@ void painSawFire( gentity_t *ent )
}
if ( traceEnt->takedamage )
- G_Damage( traceEnt, ent, ent, forward, tr.endpos, 5, DAMAGE_NO_KNOCKBACK, MOD_VENOM );
+ G_Damage( traceEnt, ent, ent, forward, tr.endpos, PAINSAW_DAMAGE, DAMAGE_NO_KNOCKBACK, MOD_VENOM );
}
/*
@@ -355,7 +348,7 @@ void LCChargeFire( gentity_t *ent, qboolean secondary )
gentity_t *m;
if( secondary )
- ent->client->ps.stats[ STAT_MISC ] = LC_TOTAL_CHARGE / 10;
+ ent->client->ps.stats[ STAT_MISC ] = LCANON_SECONDARY_DAMAGE;
m = fire_luciferCanon( ent, muzzle, forward, ent->client->ps.stats[ STAT_MISC ] );
@@ -380,7 +373,7 @@ void teslaFire( gentity_t *ent )
damage = 8;
- VectorMA( muzzle, LIGHTNING_RANGE, forward, end );
+ VectorMA( muzzle, TESLAGEN_RANGE, forward, end );
trap_Trace( &tr, muzzle, NULL, NULL, end, ent->s.number, MASK_SHOT );
@@ -468,7 +461,7 @@ void cancelBuildFire( gentity_t *ent )
}
}
else if( ent->client->ps.weapon == WP_ABUILD2 )
- meleeAttack( ent, 32.0f, 25 ); //melee attack for alien builder
+ meleeAttack( ent, ABUILDER_CLAW_RANGE, ABUILDER_CLAW_DMG ); //melee attack for alien builder
}
void buildFire( gentity_t *ent, dynMenu_t menu )
@@ -517,7 +510,7 @@ qboolean CheckVenomAttack( gentity_t *ent )
CalcMuzzlePoint( ent, forward, right, up, muzzle );
- VectorMA (muzzle, 32, forward, end);
+ VectorMA( muzzle, SOLDIER_BITE_RANGE, forward, end );
trap_Trace (&tr, muzzle, NULL, NULL, end, ent->s.number, MASK_SHOT);
if ( tr.surfaceFlags & SURF_NOIMPACT )
@@ -541,7 +534,7 @@ qboolean CheckVenomAttack( gentity_t *ent )
tent->s.weapon = ent->s.weapon;
}
- G_Damage( traceEnt, ent, ent, forward, tr.endpos, 100, DAMAGE_NO_KNOCKBACK, MOD_VENOM );
+ G_Damage( traceEnt, ent, ent, forward, tr.endpos, SOLDIER_BITE_DMG, DAMAGE_NO_KNOCKBACK, MOD_VENOM );
return qtrue;
}
@@ -570,7 +563,7 @@ void CheckGrabAttack( gentity_t *ent )
CalcMuzzlePoint( ent, forward, right, up, muzzle );
- VectorMA( muzzle, 32, forward, end );
+ VectorMA( muzzle, HYDRA_GRAB_RANGE, forward, end );
trap_Trace( &tr, muzzle, NULL, NULL, end, ent->s.number, MASK_SHOT );
if( tr.surfaceFlags & SURF_NOIMPACT )
@@ -602,7 +595,7 @@ poisonCloud
void poisonCloud( gentity_t *ent )
{
int entityList[ MAX_GENTITIES ];
- vec3_t range = { 200, 200, 200 };
+ vec3_t range = { HYDRA_PCLOUD_RANGE, HYDRA_PCLOUD_RANGE, HYDRA_PCLOUD_RANGE };
vec3_t mins, maxs, dir;
int i, num;
gentity_t *humanPlayer;
@@ -659,7 +652,7 @@ qboolean CheckPounceAttack( gentity_t *ent )
CalcMuzzlePoint( ent, forward, right, up, muzzle );
- VectorMA( muzzle, 48, forward, end );
+ VectorMA( muzzle, DRAGOON_POUNCE_RANGE, forward, end );
trap_Trace( &tr, muzzle, NULL, NULL, end, ent->s.number, MASK_SHOT );
@@ -681,10 +674,10 @@ qboolean CheckPounceAttack( gentity_t *ent )
tent->s.weapon = ent->s.weapon;
}
- if( !traceEnt->takedamage)
+ if( !traceEnt->takedamage )
return qfalse;
- damage = (int)( (float)ent->client->pouncePayload / ( MAX_POUNCE_SPEED / 100.0f ) );
+ damage = (int)( ( (float)ent->client->pouncePayload / (float)DRAGOON_POUNCE_SPEED ) * DRAGOON_POUNCE_DMG );
G_Damage( traceEnt, ent, ent, forward, tr.endpos, damage, DAMAGE_NO_KNOCKBACK, MOD_VENOM );
@@ -710,9 +703,6 @@ ZAP
======================================================================
*/
-#define AREAZAP_DAMAGE 100.0f
-#define DIRECTZAP_DAMAGE 100.0f
-
/*
===============
areaZapFire
@@ -722,7 +712,7 @@ void areaZapFire( gentity_t *ent )
{
int entityList[ MAX_GENTITIES ];
int targetList[ MAX_GENTITIES ];
- vec3_t range = { 200, 200, 200 };
+ vec3_t range = { CHIMERA_AREAZAP_RANGE, CHIMERA_AREAZAP_RANGE, CHIMERA_AREAZAP_RANGE };
vec3_t mins, maxs, dir;
int i, num, numTargets = 0;
gentity_t *enemy;
@@ -751,7 +741,7 @@ void areaZapFire( gentity_t *ent )
}
}
- damage = (int)( AREAZAP_DAMAGE / (float)numTargets );
+ damage = (int)( (float)CHIMERA_AREAZAP_DMG / (float)numTargets );
for( i = 0; i < numTargets; i++ )
{
enemy = &g_entities[ targetList[ i ] ];
@@ -785,7 +775,7 @@ void directZapFire( gentity_t *ent )
{
int entityList[ MAX_GENTITIES ];
int targetList[ MAX_GENTITIES ];
- vec3_t range = { 200, 200, 200 };
+ vec3_t range = { CHIMERA_DIRECTZAP_RANGE, CHIMERA_DIRECTZAP_RANGE, CHIMERA_DIRECTZAP_RANGE };
vec3_t mins, maxs, dir;
int i, num, numTargets = 0;
gentity_t *enemy;
@@ -833,7 +823,7 @@ void directZapFire( gentity_t *ent )
{
//do some damage
G_Damage( target, ent, ent, dir, tr.endpos,
- DIRECTZAP_DAMAGE, DAMAGE_NO_KNOCKBACK, MOD_LIGHTNING );
+ CHIMERA_DIRECTZAP_DMG, DAMAGE_NO_KNOCKBACK, MOD_LIGHTNING );
// snap the endpos to integers to save net bandwidth, but nudged towards the line
SnapVectorTowards( tr.endpos, muzzle );
@@ -865,7 +855,7 @@ groundPound
void groundPound( gentity_t *ent )
{
int entityList[ MAX_GENTITIES ];
- vec3_t range = { 200, 200, 200 };
+ vec3_t range = { BMOFO_KNOCK_RANGE, BMOFO_KNOCK_RANGE, BMOFO_KNOCK_RANGE };
vec3_t mins, maxs, dir;
int i, num;
gentity_t *humanPlayer;
@@ -942,6 +932,9 @@ void FireWeapon3( gentity_t *ent )
case WP_POUNCE_UPG:
slowBlobFire( ent );
break;
+ case WP_DIRECT_ZAP:
+ areaZapFire( ent );
+ break;
case WP_GROUND_POUND:
slowBlobFire( ent );
break;
@@ -976,14 +969,12 @@ void FireWeapon2( gentity_t *ent )
case WP_GRAB_CLAW_UPG:
poisonCloud( ent );
break;
- case WP_POUNCE:
- case WP_POUNCE_UPG:
- meleeAttack( ent, 32.0f, 150 );
- break;
case WP_AREA_ZAP:
- case WP_DIRECT_ZAP:
areaZapFire( ent );
break;
+ case WP_DIRECT_ZAP:
+ directZapFire( ent );
+ break;
case WP_GROUND_POUND:
groundPound( ent );
break;
@@ -1027,27 +1018,27 @@ void FireWeapon( gentity_t *ent )
{
case WP_GRAB_CLAW:
case WP_GRAB_CLAW_UPG:
- meleeAttack( ent, 32.0f, 5 );
+ meleeAttack( ent, HYDRA_CLAW_RANGE, HYDRA_CLAW_DMG );
break;
case WP_POUNCE:
case WP_POUNCE_UPG:
- meleeAttack( ent, 32.0f, 50 );
+ meleeAttack( ent, DRAGOON_CLAW_RANGE, DRAGOON_CLAW_DMG );
break;
case WP_AREA_ZAP:
- areaZapFire( ent );
+ meleeAttack( ent, CHIMERA_CLAW_RANGE, CHIMERA_CLAW_DMG );
break;
case WP_DIRECT_ZAP:
- directZapFire( ent );
+ meleeAttack( ent, CHIMERA_CLAW_RANGE, CHIMERA_CLAW_DMG );
break;
case WP_GROUND_POUND:
- meleeAttack( ent, 32.0f, 150 );
+ meleeAttack( ent, BMOFO_CLAW_RANGE, BMOFO_CLAW_DMG );
break;
case WP_MACHINEGUN:
- bulletFire( ent, MACHINEGUN_SPREAD, MACHINEGUN_DAMAGE, MOD_MACHINEGUN );
+ bulletFire( ent, RIFLE_SPREAD, RIFLE_DMG, MOD_MACHINEGUN );
break;
case WP_CHAINGUN:
- bulletFire( ent, CHAINGUN_SPREAD, CHAINGUN_DAMAGE, MOD_CHAINGUN );
+ bulletFire( ent, CHAINGUN_SPREAD, CHAINGUN_DMG, MOD_CHAINGUN );
break;
case WP_FLAMER:
flamerFire( ent );
diff --git a/src/game/tremulous.h b/src/game/tremulous.h
new file mode 100644
index 00000000..83f1c5ec
--- /dev/null
+++ b/src/game/tremulous.h
@@ -0,0 +1,466 @@
+/*
+ * Portions Copyright (C) 2000-2001 Tim Angus
+ *
+ * This program is free software; you can redistribute it and/or modify it
+ * under the terms of the OSML - Open Source Modification License v1.0 as
+ * described in the file COPYING which is distributed with this source
+ * code.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
+ */
+
+
+/*
+ * ALIEN weapons
+ *
+ * _REPEAT - time in msec until the weapon can be used again
+ * _DMG - amount of damage the weapon does
+ *
+ * ALIEN_WDMG_MODIFIER - overall damage modifier for coarse tuning
+ *
+ */
+
+#define ALIEN_WDMG_MODIFIER 1.0f
+#define ADM(d) ((int)((float)d*ALIEN_WDMG_MODIFIER))
+
+#define ABUILDER_BUILD_REPEAT 500
+#define ABUILDER_CLAW_DMG ADM(25)
+#define ABUILDER_CLAW_RANGE 32.0f
+#define ABUILDER_CLAW_REPEAT 1000
+#define ABUILDER_BASE_DELAY 10000
+#define ABUILDER_ADV_DELAY 5000
+
+#define SOLDIER_BITE_DMG ADM(100)
+#define SOLDIER_BITE_RANGE 32.0f
+#define SOLDIER_BITE_REPEAT 500
+
+#define DRAGOON_CLAW_DMG ADM(75)
+#define DRAGOON_CLAW_RANGE 32.0f
+#define DRAGOON_CLAW_REPEAT 750
+#define DRAGOON_CLAW_U_REPEAT 750
+#define DRAGOON_POUNCE_DMG ADM(100)
+#define DRAGOON_POUNCE_RANGE 48.0f
+#define DRAGOON_POUNCE_SPEED 750
+#define DRAGOON_POUNCE_SPEED_MOD 0.75f
+#define DRAGOON_POUNCE_TIME 1000
+#define DRAGOON_SLOWBLOB_DMG ADM(20)
+#define DRAGOON_SLOWBLOB_REPEAT 1000
+#define DRAGOON_SLOWBLOB_SPEED 800.0f
+#define DRAGOON_SLOWBLOB_SPEED_MOD 0.5f
+#define DRAGOON_SLOWBLOB_TIME 5000
+
+#define HYDRA_CLAW_DMG ADM(50)
+#define HYDRA_CLAW_RANGE 32.0f
+#define HYDRA_CLAW_REPEAT 500
+#define HYDRA_CLAW_U_REPEAT 500
+#define HYDRA_GRAB_RANGE 32.0f
+#define HYDRA_GRAB_TIME 1000
+#define HYDRA_PCLOUD_DMG ADM(5)
+#define HYDRA_PCLOUD_RANGE 200.0f
+#define HYDRA_PCLOUD_REPEAT 1000
+#define HYDRA_PCLOUD_TIME 10000
+
+#define CHIMERA_CLAW_DMG ADM(75)
+#define CHIMERA_CLAW_RANGE 32.0f
+#define CHIMERA_CLAW_REPEAT 400
+#define CHIMERA_CLAW_U_REPEAT 300
+#define CHIMERA_AREAZAP_DMG ADM(125)
+#define CHIMERA_AREAZAP_RANGE 200.0f
+#define CHIMERA_AREAZAP_REPEAT 1500
+#define CHIMERA_DIRECTZAP_DMG ADM(125)
+#define CHIMERA_DIRECTZAP_RANGE 200.0f
+#define CHIMERA_DIRECTZAP_REPEAT 1500
+
+#define BMOFO_CLAW_DMG ADM(150)
+#define BMOFO_CLAW_RANGE 32.0f
+#define BMOFO_CLAW_REPEAT 750
+#define BMOFO_KNOCK_RANGE 200.0f
+#define BMOFO_KNOCK_REPEAT 3000
+#define BMOFO_KOVER_TIME 2000
+#define BMOFO_GETUP_TIME 1000
+#define BMOFO_REGEN_RANGE 200.0f
+#define BMOFO_REGEN_MOD 2.0f
+
+
+
+/*
+ * ALIEN classes
+ *
+ * _SPEED - fraction of Q3A run speed the class can move
+ * _TTE - time in msec for the class to evolve to another
+ * _REGEN - health per second regained
+ *
+ * ALIEN_HLTH_MODIFIER - overall health modifier for coarse tuning
+ *
+ */
+
+#define ALIEN_HLTH_MODIFIER 1.0f
+#define AHM(h) ((int)((float)h*ALIEN_HLTH_MODIFIER))
+
+#define ABUILDER_SPEED 0.8f
+#define ABUILDER_TTE 2000
+#define ABUILDER_VALUE 50
+#define ABUILDER_HEALTH AHM(50)
+#define ABUILDER_REGEN 5
+
+#define ABUILDER_UPG_SPEED 1.0f
+#define ABUILDER_UPG_VALUE 120
+#define ABUILDER_UPG_HEALTH AHM(75)
+#define ABUILDER_UPG_REGEN 7
+
+#define SOLDIER_SPEED 1.5f
+#define SOLDIER_TTE 2000
+#define SOLDIER_VALUE 50
+#define SOLDIER_HEALTH AHM(25)
+#define SOLDIER_REGEN 2
+
+#define DRAGOON_SPEED 1.5f
+#define DRAGOON_TTE 3000
+#define DRAGOON_VALUE 100
+#define DRAGOON_HEALTH AHM(50)
+#define DRAGOON_REGEN 5
+
+#define DRAGOON_UPG_SPEED 1.5f
+#define DRAGOON_UPG_TTE 3000
+#define DRAGOON_UPG_VALUE 120
+#define DRAGOON_UPG_HEALTH AHM(60)
+#define DRAGOON_UPG_REGEN 6
+
+#define HYDRA_SPEED 1.5f
+#define HYDRA_TTE 3000
+#define HYDRA_VALUE 200
+#define HYDRA_HEALTH AHM(100)
+#define HYDRA_REGEN 10
+
+#define HYDRA_UPG_SPEED 1.5f
+#define HYDRA_UPG_TTE 3000
+#define HYDRA_UPG_VALUE 240
+#define HYDRA_UPG_HEALTH AHM(120)
+#define HYDRA_UPG_REGEN 12
+
+#define CHIMERA_SPEED 1.3f
+#define CHIMERA_TTE 3000
+#define CHIMERA_VALUE 300
+#define CHIMERA_HEALTH AHM(200)
+#define CHIMERA_REGEN 15
+
+#define CHIMERA_UPG_SPEED 1.3f
+#define CHIMERA_UPG_TTE 3000
+#define CHIMERA_UPG_VALUE 360
+#define CHIMERA_UPG_HEALTH AHM(250)
+#define CHIMERA_UPG_REGEN 20
+
+#define BMOFO_SPEED 1.2f
+#define BMOFO_VALUE 400
+#define BMOFO_HEALTH AHM(400)
+#define BMOFO_REGEN 30
+
+
+
+/*
+ * ALIEN buildables
+ *
+ * _BP - build points required for this buildable
+ * _REGEN - the amount of health per second regained
+ * _SPLASHDAMGE - the amount of damage caused by this buildable when melting
+ * _SPLASHRADIUS - the radius around which it does this damage
+ *
+ * CREEP_BASESIZE - the maximum distance a buildable can be from an egg/overmind
+ * ALIEN_BHLTH_MODIFIER - overall health modifier for coarse tuning
+ *
+ */
+
+#define ALIEN_BHLTH_MODIFIER 1.0f
+#define ABHM(h) ((int)((float)h*ALIEN_BHLTH_MODIFIER))
+
+#define CREEP_BASESIZE 360
+
+#define ASPAWN_BP 100
+#define ASPAWN_HEALTH ABHM(500)
+#define ASPAWN_REGEN 25
+#define ASPAWN_SPLASHDAMAGE 50
+#define ASPAWN_SPLASHRADIUS 50
+#define ASPAWN_CREEPSIZE 120
+
+#define BARRICADE_BP 80
+#define BARRICADE_HEALTH ABHM(250)
+#define BARRICADE_REGEN 50
+#define BARRICADE_SPLASHDAMAGE 50
+#define BARRICADE_SPLASHRADIUS 50
+#define BARRICADE_CREEPSIZE 120
+
+#define BOOSTER_BP 120
+#define BOOSTER_HEALTH ABHM(200)
+#define BOOSTER_REGEN 10
+#define BOOSTER_SPLASHDAMAGE 50
+#define BOOSTER_SPLASHRADIUS 50
+#define BOOSTER_CREEPSIZE 120
+#define BOOSTER_INTERVAL 30000 //time in msec between uses (per player)
+
+#define ACIDTUBE_BP 50
+#define ACIDTUBE_HEALTH ABHM(100)
+#define ACIDTUBE_REGEN 10
+#define ACIDTUBE_SPLASHDAMAGE 50
+#define ACIDTUBE_SPLASHRADIUS 200
+#define ACIDTUBE_CREEPSIZE 120
+#define ACIDTUBE_RANGE 200.0f
+#define ACIDTUBE_REPEAT 10000
+
+#define TRAPPER_BP 150
+#define TRAPPER_HEALTH ABHM(80)
+#define TRAPPER_REGEN 8
+#define TRAPPER_SPLASHDAMAGE 20
+#define TRAPPER_SPLASHRADIUS 100
+#define TRAPPER_CREEPSIZE 30
+#define TRAPPER_RANGE 400
+#define TRAPPER_REPEAT 1000
+#define LOCKBLOB_SPEED 500
+#define LOCKBLOB_DOT 0.85f // max angle = acos( LOCKBLOB_DOT )
+
+#define OVERMIND_BP 0
+#define OVERMIND_HEALTH ABHM(1000)
+#define OVERMIND_REGEN 50
+#define OVERMIND_SPLASHDAMAGE 100
+#define OVERMIND_SPLASHRADIUS 300
+#define OVERMIND_CREEPSIZE 120
+#define OVERMIND_ATTACK_RANGE 150.0f
+#define OVERMIND_ATTACK_REPEAT 1000
+
+#define HOVEL_BP 80
+#define HOVEL_HEALTH ABHM(750)
+#define HOVEL_REGEN 150
+#define HOVEL_SPLASHDAMAGE 20
+#define HOVEL_SPLASHRADIUS 200
+#define HOVEL_CREEPSIZE 120
+
+#define OBANK_BP 80
+#define OBANK_HEALTH ABHM(100)
+#define OBANK_REGEN 10
+#define OBANK_SPLASHDAMAGE 20
+#define OBANK_SPLASHRADIUS 100
+#define OBANK_CREEPSIZE 120
+
+
+
+/*
+ * ALIEN misc
+ *
+ * ALIENSENSE_RANGE - the distance alien sense is useful for
+ *
+ */
+
+#define ALIENSENSE_RANGE 1000.0f
+
+
+
+/*
+ * HUMAN weapons
+ *
+ * _REPEAT - time between firings
+ * _RELOAD - time needed to reload
+ * _PRICE - amount in credits weapon costs
+ *
+ * HUMAN_WDMG_MODIFIER - overall damage modifier for coarse tuning
+ *
+ */
+
+#define HUMAN_WDMG_MODIFIER 1.0f
+#define HDM(d) ((int)((float)d*HUMAN_WDMG_MODIFIER))
+
+#define RIFLE_CLIPSIZE 30
+#define RIFLE_SPAWNCLIPS 3
+#define RIFLE_MAXCLIPS 3
+#define RIFLE_REPEAT 100
+#define RIFLE_RELOAD 2000
+#define RIFLE_PRICE 100
+#define RIFLE_SPREAD 200
+#define RIFLE_DMG HDM(7)
+
+#define CHAINGUN_BULLETS 300
+#define CHAINGUN_REPEAT 50
+#define CHAINGUN_PRICE 200
+#define CHAINGUN_SPREAD 1200
+#define CHAINGUN_DMG HDM(14)
+
+#define FLAMER_GAS 400
+#define FLAMER_REPEAT 150
+#define FLAMER_PRICE 300
+#define FLAMER_DMG HDM(25)
+#define FLAMER_RADIUS 50
+#define FLAMER_LIFETIME 1000
+#define FLAMER_SPEED 200.0f
+#define FLAMER_LAG 0.5f //the amount of player velocity that is added to the fireball
+
+#define MDRIVER_CLIPSIZE 5
+#define MDRIVER_SPAWNCLIPS 2
+#define MDRIVER_MAXCLIPS 3
+#define MDRIVER_PRICE 300
+#define MDRIVER_DMG HDM(50)
+#define MDRIVER_REPEAT 1000
+#define MDRIVER_RELOAD 2000
+
+#define PRIFLE_CLIPS 50
+#define PRIFLE_SPAWNCLIPS 3
+#define PRIFLE_MAXCLIPS 3
+#define PRIFLE_PRICE 250
+#define PRIFLE_REPEAT 50
+#define PRIFLE_RELOAD 2000
+#define PRIFLE_DMG HDM(20)
+#define PRIFLE_SPEED 1500
+
+#define LCANON_PRICE 400
+#define LCANON_AMMO 30
+#define LCANON_REPEAT 500
+#define LCANON_CHARGEREPEAT 1000
+#define LCANON_RELOAD 2000
+#define LCANON_DAMAGE HDM(200)
+#define LCANON_SECONDARY_DAMAGE 20
+#define LCANON_SPEED 250
+#define LCANON_CHARGE_TIME 2000
+
+#define LASGUN_PRICE 200
+#define LASGUN_AMMO 300
+#define LASGUN_REPEAT 100
+#define LASGUN_RELOAD 2000
+#define LASGUN_DAMAGE HDM(10)
+
+#define PAINSAW_PRICE 100
+#define PAINSAW_REPEAT 75
+#define PAINSAW_DAMAGE HDM(5)
+#define PAINSAW_RANGE 32
+
+#define HBUILD_PRICE 100
+#define HBUILD_REPEAT 1000
+#define HBUILD_DELAY 10000
+
+#define HBUILD2_PRICE 200
+#define HBUILD2_REPEAT 1000
+#define HBUILD2_DELAY 5000
+
+
+
+/*
+ * HUMAN upgrades
+ */
+
+#define CHESTARMOUR_PRICE 75
+
+#define LIMBARMOUR_PRICE 50
+
+#define HELMET_PRICE 90
+#define HELMET_RANGE 1000.0f
+
+#define ANTITOXIN_PRICE 20
+
+#define BATTPACK_PRICE 100
+#define BATTPACK_MODIFIER 2.0f //modifier for extra energy storage available
+
+#define JETPACK_PRICE 120
+#define JETPACK_FLOAT_SPEED 48.0f //up movement speed
+#define JETPACK_SINK_SPEED 96.0f //down movement speed
+
+#define BSUIT_PRICE 200
+
+#define MGCLIP_PRICE 10
+
+#define CGAMMO_PRICE 10
+
+#define GAS_PRICE 10
+
+
+
+/*
+ * HUMAN buildables
+ *
+ * _BP - build points required for this buildable
+ * _SPLASHDAMGE - the amount of damage caused by this buildable when it blows up
+ * _SPLASHRADIUS - the radius around which it does this damage
+ *
+ * REACTOR_BASESIZE - the maximum distance a buildable can be from an reactor
+ * REPEATER_BASESIZE - the maximum distance a buildable can be from a repeater
+ * HUMAN_BHLTH_MODIFIER - overall health modifier for coarse tuning
+ *
+ */
+
+#define HUMAN_BHLTH_MODIFIER 1.0f
+#define HBHM(h) ((int)((float)h*HUMAN_BHLTH_MODIFIER))
+
+#define REACTOR_BASESIZE 1000
+#define REPEATER_BASESIZE 500
+#define HUMAN_DETONATION_DELAY 5000
+
+#define HSPAWN_BP 100
+#define HSPAWN_HEALTH HBHM(500)
+#define HSPAWN_SPLASHDAMAGE 50
+#define HSPAWN_SPLASHRADIUS 100
+
+#define MEDISTAT_BP 80
+#define MEDISTAT_HEALTH HBHM(200)
+#define MEDISTAT_SPLASHDAMAGE 50
+#define MEDISTAT_SPLASHRADIUS 100
+#define MAX_MEDISTAT_CLIENTS 1
+
+#define ADVMEDISTAT_BP 120
+#define ADVMEDISTAT_HEALTH HBHM(300)
+#define ADVMEDISTAT_SPLASHDAMAGE 75
+#define ADVMEDISTAT_SPLASHRADIUS 100
+#define MAX_ADVMEDISTAT_CLIENTS 3
+
+#define MGTURRET_BP 80
+#define MGTURRET_HEALTH HBHM(100)
+#define MGTURRET_SPLASHDAMAGE 50
+#define MGTURRET_SPLASHRADIUS 100
+#define MGTURRET_ANGULARSPEED 20 //degrees/think ~= 200deg/sec
+#define MGTURRET_ACCURACYTOLERANCE MGTURRET_ANGULARSPEED / 2 //angular difference for turret to fire
+#define MGTURRET_VERTICALCAP 30 // +/- maximum pitch
+#define MGTURRET_REPEAT 50
+#define MGTURRET_RANGE 300
+
+#define TESLAGEN_BP 100
+#define TESLAGEN_HEALTH HBHM(200)
+#define TESLAGEN_SPLASHDAMAGE 50
+#define TESLAGEN_SPLASHRADIUS 100
+#define TESLAGEN_REPEAT 150
+#define TESLAGEN_RANGE 1500
+
+#define DC_BP 80
+#define DC_HEALTH HBHM(150)
+#define DC_SPLASHDAMAGE 50
+#define DC_SPLASHRADIUS 100
+
+#define BANK_BP 80
+#define BANK_HEALTH HBHM(100)
+#define BANK_SPLASHDAMAGE 50
+#define BANK_SPLASHRADIUS 100
+
+#define ARMOURY_BP 100
+#define ARMOURY_HEALTH HBHM(175)
+#define ARMOURY_SPLASHDAMAGE 50
+#define ARMOURY_SPLASHRADIUS 100
+
+#define REACTOR_BP 0
+#define REACTOR_HEALTH HBHM(1000)
+#define REACTOR_SPLASHDAMAGE 200
+#define REACTOR_SPLASHRADIUS 300
+
+#define REPEATER_BP 100
+#define REPEATER_HEALTH HBHM(200)
+#define REPEATER_SPLASHDAMAGE 50
+#define REPEATER_SPLASHRADIUS 100
+
+#define ENERGY_REFIL_TIME 500 //1/2 second between every clip refil
+
+#define FLOATMINE_BP 50
+#define FLOATMINE_HEALTH HBHM(10)
+#define FLOATMINE_SPLASHDAMAGE 250
+#define FLOATMINE_SPLASHRADIUS 500
+
+/*
+ * HUMAN misc
+ */
+
+#define HUMAN_JOG_MODIFIER 0.8f
+#define HUMAN_BACK_MODIFIER 0.5f
+#define HUMAN_SIDE_MODIFIER 0.75f