summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorPaweł Redman <pawel.redman@gmail.com>2017-05-20 15:07:01 +0200
committerPaweł Redman <pawel.redman@gmail.com>2017-05-21 15:47:12 +0200
commit722be544c902554eea7e3a035c1ffe344a114dab (patch)
tree62a02e298ad373318bae50f0b9e108d97b68795d
parenta77f4c3465d90b774a30c5ef2db3f57ff21c4e01 (diff)
Reorder BG tables and rewrite BG_Find* functions.
This commit reorders entries in the weapon, building, class, and upgrade tables, so that the order matches the respective enums. This commit also rewrites most BG_Find* functions to take advantage of this and avoid linear searches.
-rw-r--r--src/game/bg_misc.c2234
1 files changed, 646 insertions, 1588 deletions
diff --git a/src/game/bg_misc.c b/src/game/bg_misc.c
index 90c2254..fa5c1c6 100644
--- a/src/game/bg_misc.c
+++ b/src/game/bg_misc.c
@@ -37,6 +37,9 @@ modExtremeType_t modEntry[ MOD_BG_COUNT ];
buildableAttributes_t bg_buildableList[ ] =
{
{
+ BA_NONE,
+ },
+ {
BA_A_SPAWN, //int buildNum;
"eggpod", //char *buildName;
"Egg", //char *humanName;
@@ -74,66 +77,66 @@ buildableAttributes_t bg_buildableList[ ] =
qfalse, //qboolean replacable;
},
{
- BA_A_BARRICADE, //int buildNum;
- "barricade", //char *buildName;
- "Barricade", //char *humanName;
- "team_alien_barricade",//char *entityName;
- { "models/buildables/barricade/barricade.md3", 0, 0, 0 },
+ BA_A_OVERMIND, //int buildNum;
+ "overmind", //char *buildName;
+ "Overmind", //char *humanName;
+ "team_alien_overmind", //char *entityName;
+ { "models/buildables/overmind/overmind.md3", 0, 0, 0 },
1.0f, //float modelScale;
- { -35, -35, -15 }, //vec3_t mins;
- { 35, 35, 60 }, //vec3_t maxs;
+ { -45, -45, -15 }, //vec3_t mins;
+ { 45, 45, 95 }, //vec3_t maxs;
0.0f, //float zOffset;
TR_GRAVITY, //trType_t traj;
0.0, //float bounce;
- BARRICADE_BP, //int buildPoints;
+ OVERMIND_BP, //int buildPoints;
( 1 << S1 )|( 1 << S2 )|( 1 << S3 ), //int stages
- BARRICADE_HEALTH, //int health;
- BARRICADE_REGEN, //int regenRate;
- BARRICADE_SPLASHDAMAGE,//int splashDamage;
- BARRICADE_SPLASHRADIUS,//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;
- 100, //int nextthink;
- BARRICADE_BT, //int buildTime;
+ OVERMIND_ATTACK_REPEAT,//int nextthink;
+ OVERMIND_BT, //int buildTime;
qfalse, //qboolean usable;
0, //int turretRange;
0, //int turretFireSpeed;
WP_NONE, //weapon_t turretProjType;
- 0.707f, //float minNormal;
+ 0.95f, //float minNormal;
qfalse, //qboolean invertNormal;
- qtrue, //qboolean creepTest;
- BARRICADE_CREEPSIZE, //int creepSize;
+ qfalse, //qboolean creepTest;
+ OVERMIND_CREEPSIZE, //int creepSize;
qfalse, //qboolean dccTest;
qfalse, //qboolean transparentTest;
- qfalse, //qboolean reactorTest;
- qfalse, //qboolean replaceable;
+ qtrue, //qboolean reactorTest;
+ qtrue, //qboolean replacable;
},
{
- BA_A_BOOSTER, //int buildNum;
- "booster", //char *buildName;
- "Booster", //char *humanName;
- "team_alien_booster", //char *entityName;
- { "models/buildables/booster/booster.md3", 0, 0, 0 },
+ BA_A_BARRICADE, //int buildNum;
+ "barricade", //char *buildName;
+ "Barricade", //char *humanName;
+ "team_alien_barricade",//char *entityName;
+ { "models/buildables/barricade/barricade.md3", 0, 0, 0 },
1.0f, //float modelScale;
- { -26, -26, -9 }, //vec3_t mins;
- { 26, 26, 9 }, //vec3_t maxs;
+ { -35, -35, -15 }, //vec3_t mins;
+ { 35, 35, 60 }, //vec3_t maxs;
0.0f, //float zOffset;
TR_GRAVITY, //trType_t traj;
0.0, //float bounce;
- BOOSTER_BP, //int buildPoints;
- ( 1 << S2 )|( 1 << S3 ), //int stages
- BOOSTER_HEALTH, //int health;
- BOOSTER_REGEN, //int regenRate;
- BOOSTER_SPLASHDAMAGE, //int splashDamage;
- BOOSTER_SPLASHRADIUS, //int splashRadius;
+ BARRICADE_BP, //int buildPoints;
+ ( 1 << S1 )|( 1 << S2 )|( 1 << S3 ), //int stages
+ 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;
BANIM_IDLE1, //int idleAnim;
100, //int nextthink;
- BOOSTER_BT, //int buildTime;
+ BARRICADE_BT, //int buildTime;
qfalse, //qboolean usable;
0, //int turretRange;
0, //int turretFireSpeed;
@@ -141,11 +144,11 @@ buildableAttributes_t bg_buildableList[ ] =
0.707f, //float minNormal;
qfalse, //qboolean invertNormal;
qtrue, //qboolean creepTest;
- BOOSTER_CREEPSIZE, //int creepSize;
+ BARRICADE_CREEPSIZE, //int creepSize;
qfalse, //qboolean dccTest;
- qtrue, //qboolean transparentTest;
+ qfalse, //qboolean transparentTest;
qfalse, //qboolean reactorTest;
- qtrue, //qboolean replacable;
+ qfalse, //qboolean replaceable;
},
{
BA_A_ACIDTUBE, //int buildNum;
@@ -185,43 +188,6 @@ buildableAttributes_t bg_buildableList[ ] =
qfalse, //qboolean replacable;
},
{
- BA_A_HIVE, //int buildNum;
- "hive", //char *buildName;
- "Hive", //char *humanName;
- "team_alien_hive", //char *entityName;
- { "models/buildables/hive/hive.md3", 0, 0, 0 },
- 1.0f, //float modelScale;
- { -35, -35, -25 }, //vec3_t mins;
- { 35, 35, 25 }, //vec3_t maxs;
- 0.0f, //float zOffset;
- TR_GRAVITY, //trType_t traj;
- 0.0, //float bounce;
- HIVE_BP, //int buildPoints;
- ( 1 << S3 ), //int stages
- HIVE_HEALTH, //int health;
- HIVE_REGEN, //int regenRate;
- HIVE_SPLASHDAMAGE, //int splashDamage;
- HIVE_SPLASHRADIUS, //int splashRadius;
- MOD_ASPAWN, //int meansOfDeath;
- BIT_ALIENS, //int team;
- ( 1 << WP_ABUILD )|( 1 << WP_ABUILD2 ), //weapon_t buildWeapon;
- BANIM_IDLE1, //int idleAnim;
- 500, //int nextthink;
- HIVE_BT, //int buildTime;
- qfalse, //qboolean usable;
- 0, //int turretRange;
- 0, //int turretFireSpeed;
- WP_HIVE, //weapon_t turretProjType;
- 0.0f, //float minNormal;
- qtrue, //qboolean invertNormal;
- qtrue, //qboolean creepTest;
- HIVE_CREEPSIZE, //int creepSize;
- qfalse, //qboolean dccTest;
- qfalse, //qboolean transparentTest;
- qfalse, //qboolean reactorTest;
- qfalse, //qboolean replacable;
- },
- {
BA_A_TRAPPER, //int buildNum;
"trapper", //char *buildName;
"Trapper", //char *humanName;
@@ -259,43 +225,80 @@ buildableAttributes_t bg_buildableList[ ] =
qfalse, //qboolean replacable;
},
{
- BA_A_OVERMIND, //int buildNum;
- "overmind", //char *buildName;
- "Overmind", //char *humanName;
- "team_alien_overmind", //char *entityName;
- { "models/buildables/overmind/overmind.md3", 0, 0, 0 },
+ BA_A_BOOSTER, //int buildNum;
+ "booster", //char *buildName;
+ "Booster", //char *humanName;
+ "team_alien_booster", //char *entityName;
+ { "models/buildables/booster/booster.md3", 0, 0, 0 },
1.0f, //float modelScale;
- { -45, -45, -15 }, //vec3_t mins;
- { 45, 45, 95 }, //vec3_t maxs;
+ { -26, -26, -9 }, //vec3_t mins;
+ { 26, 26, 9 }, //vec3_t maxs;
0.0f, //float zOffset;
TR_GRAVITY, //trType_t traj;
0.0, //float bounce;
- OVERMIND_BP, //int buildPoints;
- ( 1 << S1 )|( 1 << S2 )|( 1 << S3 ), //int stages
- OVERMIND_HEALTH, //int health;
- OVERMIND_REGEN, //int regenRate;
- OVERMIND_SPLASHDAMAGE, //int splashDamage;
- OVERMIND_SPLASHRADIUS, //int splashRadius;
+ BOOSTER_BP, //int buildPoints;
+ ( 1 << S2 )|( 1 << S3 ), //int stages
+ 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;
BANIM_IDLE1, //int idleAnim;
- OVERMIND_ATTACK_REPEAT,//int nextthink;
- OVERMIND_BT, //int buildTime;
+ 100, //int nextthink;
+ BOOSTER_BT, //int buildTime;
qfalse, //qboolean usable;
0, //int turretRange;
0, //int turretFireSpeed;
WP_NONE, //weapon_t turretProjType;
- 0.95f, //float minNormal;
+ 0.707f, //float minNormal;
qfalse, //qboolean invertNormal;
- qfalse, //qboolean creepTest;
- OVERMIND_CREEPSIZE, //int creepSize;
+ qtrue, //qboolean creepTest;
+ BOOSTER_CREEPSIZE, //int creepSize;
qfalse, //qboolean dccTest;
- qfalse, //qboolean transparentTest;
- qtrue, //qboolean reactorTest;
+ qtrue, //qboolean transparentTest;
+ qfalse, //qboolean reactorTest;
qtrue, //qboolean replacable;
},
{
+ BA_A_HIVE, //int buildNum;
+ "hive", //char *buildName;
+ "Hive", //char *humanName;
+ "team_alien_hive", //char *entityName;
+ { "models/buildables/hive/hive.md3", 0, 0, 0 },
+ 1.0f, //float modelScale;
+ { -35, -35, -25 }, //vec3_t mins;
+ { 35, 35, 25 }, //vec3_t maxs;
+ 0.0f, //float zOffset;
+ TR_GRAVITY, //trType_t traj;
+ 0.0, //float bounce;
+ HIVE_BP, //int buildPoints;
+ ( 1 << S3 ), //int stages
+ HIVE_HEALTH, //int health;
+ HIVE_REGEN, //int regenRate;
+ HIVE_SPLASHDAMAGE, //int splashDamage;
+ HIVE_SPLASHRADIUS, //int splashRadius;
+ MOD_ASPAWN, //int meansOfDeath;
+ BIT_ALIENS, //int team;
+ ( 1 << WP_ABUILD )|( 1 << WP_ABUILD2 ), //weapon_t buildWeapon;
+ BANIM_IDLE1, //int idleAnim;
+ 500, //int nextthink;
+ HIVE_BT, //int buildTime;
+ qfalse, //qboolean usable;
+ 0, //int turretRange;
+ 0, //int turretFireSpeed;
+ WP_HIVE, //weapon_t turretProjType;
+ 0.0f, //float minNormal;
+ qtrue, //qboolean invertNormal;
+ qtrue, //qboolean creepTest;
+ HIVE_CREEPSIZE, //int creepSize;
+ qfalse, //qboolean dccTest;
+ qfalse, //qboolean transparentTest;
+ qfalse, //qboolean reactorTest;
+ qfalse, //qboolean replacable;
+ },
+ {
BA_A_HOVEL, //int buildNum;
"hovel", //char *buildName;
"Hovel", //char *humanName;
@@ -370,43 +373,6 @@ buildableAttributes_t bg_buildableList[ ] =
qfalse, //qboolean replacable;
},
{
- BA_H_MEDISTAT, //int buildNum;
- "medistat", //char *buildName;
- "Medistation", //char *humanName;
- "team_human_medistat", //char *entityName;
- { "models/buildables/medistat/medistat.md3", 0, 0, 0 },
- 1.0f, //float modelScale;
- { -35, -35, -7 }, //vec3_t mins;
- { 35, 35, 4 }, //vec3_t maxs;
- 0.0f, //float zOffset;
- TR_GRAVITY, //trType_t traj;
- 0.0, //float bounce;
- MEDISTAT_BP, //int buildPoints;
- ( 1 << S1 )|( 1 << S2 )|( 1 << S3 ), //int stages
- MEDISTAT_HEALTH, //int health;
- 0, //int regenRate;
- 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;
- BANIM_IDLE1, //int idleAnim;
- 100, //int nextthink;
- MEDISTAT_BT, //int buildTime;
- qfalse, //qboolean usable;
- 0, //int turretRange;
- 0, //int turretFireSpeed;
- WP_NONE, //weapon_t turretProjType;
- 0.95f, //float minNormal;
- qfalse, //qboolean invertNormal;
- qfalse, //qboolean creepTest;
- 0, //int creepSize;
- qfalse, //qboolean dccTest;
- qtrue, //qboolean transparentTest;
- qfalse, //qboolean reactorTest;
- qtrue, //qboolean replacable;
- },
- {
BA_H_MGTURRET, //int buildNum;
"mgturret", //char *buildName;
"Machinegun Turret", //char *humanName;
@@ -483,6 +449,43 @@ buildableAttributes_t bg_buildableList[ ] =
qfalse, //qboolean replacable;
},
{
+ BA_H_ARMOURY, //int buildNum;
+ "arm", //char *buildName;
+ "Armoury", //char *humanName;
+ "team_human_armoury", //char *entityName;
+ { "models/buildables/arm/arm.md3", 0, 0, 0 },
+ 1.0f, //float modelScale;
+ { -40, -40, -13 }, //vec3_t mins;
+ { 40, 40, 50 }, //vec3_t maxs;
+ -2.0f, //float zOffset;
+ TR_GRAVITY, //trType_t traj;
+ 0.0, //float bounce;
+ ARMOURY_BP, //int buildPoints;
+ ( 1 << S1 )|( 1 << S2 )|( 1 << S3 ), //int stages
+ ARMOURY_HEALTH, //int health;
+ 0, //int regenRate;
+ 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;
+ BANIM_IDLE1, //int idleAnim;
+ 100, //int nextthink;
+ ARMOURY_BT, //int buildTime;
+ qtrue, //qboolean usable;
+ 0, //int turretRange;
+ 0, //int turretFireSpeed;
+ WP_NONE, //weapon_t turretProjType;
+ 0.95f, //float minNormal;
+ qfalse, //qboolean invertNormal;
+ qfalse, //qboolean creepTest;
+ 0, //int creepSize;
+ qfalse, //qboolean dccTest;
+ qfalse, //qboolean transparentTest;
+ qfalse, //qboolean reactorTest;
+ qtrue, //qboolean replacable;
+ },
+ {
BA_H_DCC, //int buildNum;
"dcc", //char *buildName;
"Defence Computer", //char *humanName;
@@ -520,30 +523,30 @@ buildableAttributes_t bg_buildableList[ ] =
qtrue, //qboolean replacable;
},
{
- BA_H_ARMOURY, //int buildNum;
- "arm", //char *buildName;
- "Armoury", //char *humanName;
- "team_human_armoury", //char *entityName;
- { "models/buildables/arm/arm.md3", 0, 0, 0 },
+ BA_H_MEDISTAT, //int buildNum;
+ "medistat", //char *buildName;
+ "Medistation", //char *humanName;
+ "team_human_medistat", //char *entityName;
+ { "models/buildables/medistat/medistat.md3", 0, 0, 0 },
1.0f, //float modelScale;
- { -40, -40, -13 }, //vec3_t mins;
- { 40, 40, 50 }, //vec3_t maxs;
- -2.0f, //float zOffset;
+ { -35, -35, -7 }, //vec3_t mins;
+ { 35, 35, 4 }, //vec3_t maxs;
+ 0.0f, //float zOffset;
TR_GRAVITY, //trType_t traj;
0.0, //float bounce;
- ARMOURY_BP, //int buildPoints;
+ MEDISTAT_BP, //int buildPoints;
( 1 << S1 )|( 1 << S2 )|( 1 << S3 ), //int stages
- ARMOURY_HEALTH, //int health;
+ MEDISTAT_HEALTH, //int health;
0, //int regenRate;
- ARMOURY_SPLASHDAMAGE, //int splashDamage;
- ARMOURY_SPLASHRADIUS, //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;
BANIM_IDLE1, //int idleAnim;
100, //int nextthink;
- ARMOURY_BT, //int buildTime;
- qtrue, //qboolean usable;
+ MEDISTAT_BT, //int buildTime;
+ qfalse, //qboolean usable;
0, //int turretRange;
0, //int turretFireSpeed;
WP_NONE, //weapon_t turretProjType;
@@ -552,7 +555,7 @@ buildableAttributes_t bg_buildableList[ ] =
qfalse, //qboolean creepTest;
0, //int creepSize;
qfalse, //qboolean dccTest;
- qfalse, //qboolean transparentTest;
+ qtrue, //qboolean transparentTest;
qfalse, //qboolean reactorTest;
qtrue, //qboolean replacable;
},
@@ -632,7 +635,13 @@ buildableAttributes_t bg_buildableList[ ] =
}
};
-int bg_numBuildables = sizeof( bg_buildableList ) / sizeof( bg_buildableList[ 0 ] );
+static inline buildableAttributes_t *FindBuildable( int index )
+{
+ if( index < BA_NONE || index >= BA_NUM_BUILDABLES )
+ Com_Error( ERR_FATAL, "Invalid index in FindBuildable: %i\n", index);
+
+ return bg_buildableList + index;
+}
/*
==============
@@ -643,7 +652,7 @@ int BG_FindBuildNumForName( char *name )
{
int i;
- for( i = 0; i < bg_numBuildables; i++ )
+ for( i = 0; i < BA_NUM_BUILDABLES; i++ )
{
if( !Q_stricmp( bg_buildableList[ i ].buildName, name ) )
return bg_buildableList[ i ].buildNum;
@@ -662,7 +671,7 @@ int BG_FindBuildNumForEntityName( char *name )
{
int i;
- for( i = 0; i < bg_numBuildables; i++ )
+ for( i = 0; i < BA_NUM_BUILDABLES; i++ )
{
if( !Q_stricmp( bg_buildableList[ i ].entityName, name ) )
return bg_buildableList[ i ].buildNum;
@@ -679,16 +688,7 @@ BG_FindNameForBuildNum
*/
char *BG_FindNameForBuildable( int bclass )
{
- int i;
-
- for( i = 0; i < bg_numBuildables; i++ )
- {
- if( bg_buildableList[ i ].buildNum == bclass )
- return bg_buildableList[ i ].buildName;
- }
-
- //wimp out
- return 0;
+ return FindBuildable( bclass )->buildName;
}
/*
@@ -698,16 +698,7 @@ BG_FindHumanNameForBuildNum
*/
char *BG_FindHumanNameForBuildable( int bclass )
{
- int i;
-
- for( i = 0; i < bg_numBuildables; i++ )
- {
- if( bg_buildableList[ i ].buildNum == bclass )
- return bg_buildableList[ i ].humanName;
- }
-
- //wimp out
- return 0;
+ return FindBuildable( bclass )->humanName;
}
/*
@@ -717,16 +708,7 @@ BG_FindEntityNameForBuildNum
*/
char *BG_FindEntityNameForBuildable( int bclass )
{
- int i;
-
- for( i = 0; i < bg_numBuildables; i++ )
- {
- if( bg_buildableList[ i ].buildNum == bclass )
- return bg_buildableList[ i ].entityName;
- }
-
- //wimp out
- return 0;
+ return FindBuildable( bclass )->entityName;
}
/*
@@ -736,16 +718,7 @@ BG_FindModelsForBuildNum
*/
char *BG_FindModelsForBuildable( int bclass, int modelNum )
{
- int i;
-
- for( i = 0; i < bg_numBuildables; i++ )
- {
- if( bg_buildableList[ i ].buildNum == bclass )
- return bg_buildableList[ i ].models[ modelNum ];
- }
-
- //wimp out
- return 0;
+ return FindBuildable( bclass )->models[ modelNum ];
}
/*
@@ -755,16 +728,7 @@ BG_FindModelScaleForBuildable
*/
float BG_FindModelScaleForBuildable( int bclass )
{
- int i;
-
- for( i = 0; i < bg_numBuildables; i++ )
- {
- if( bg_buildableList[ i ].buildNum == bclass )
- return bg_buildableList[ i ].modelScale;
- }
-
- Com_Printf( S_COLOR_YELLOW "WARNING: fallthrough in BG_FindModelScaleForBuildable( %d )\n", bclass );
- return 1.0f;
+ return FindBuildable( bclass )->modelScale;
}
/*
@@ -774,27 +738,13 @@ BG_FindBBoxForBuildable
*/
void BG_FindBBoxForBuildable( int bclass, vec3_t mins, vec3_t maxs )
{
- int i;
-
- for( i = 0; i < bg_numBuildables; i++ )
- {
- if( bg_buildableList[ i ].buildNum == bclass )
- {
- if( mins != NULL )
- VectorCopy( bg_buildableList[ i ].mins, mins );
+ buildableAttributes_t *attr = FindBuildable( bclass );
- if( maxs != NULL )
- VectorCopy( bg_buildableList[ i ].maxs, maxs );
+ if( mins )
+ VectorCopy( attr->mins, mins );
- return;
- }
- }
-
- if( mins != NULL )
- VectorCopy( bg_buildableList[ 0 ].mins, mins );
-
- if( maxs != NULL )
- VectorCopy( bg_buildableList[ 0 ].maxs, maxs );
+ if( maxs )
+ VectorCopy( attr->maxs, maxs );
}
/*
@@ -804,17 +754,7 @@ BG_FindZOffsetForBuildable
*/
float BG_FindZOffsetForBuildable( int bclass )
{
- int i;
-
- for( i = 0; i < bg_numBuildables; i++ )
- {
- if( bg_buildableList[ i ].buildNum == bclass )
- {
- return bg_buildableList[ i ].zOffset;
- }
- }
-
- return 0.0f;
+ return FindBuildable( bclass )->zOffset;
}
/*
@@ -824,17 +764,7 @@ BG_FindTrajectoryForBuildable
*/
trType_t BG_FindTrajectoryForBuildable( int bclass )
{
- int i;
-
- for( i = 0; i < bg_numBuildables; i++ )
- {
- if( bg_buildableList[ i ].buildNum == bclass )
- {
- return bg_buildableList[ i ].traj;
- }
- }
-
- return TR_GRAVITY;
+ return FindBuildable( bclass )->traj;
}
/*
@@ -844,17 +774,7 @@ BG_FindBounceForBuildable
*/
float BG_FindBounceForBuildable( int bclass )
{
- int i;
-
- for( i = 0; i < bg_numBuildables; i++ )
- {
- if( bg_buildableList[ i ].buildNum == bclass )
- {
- return bg_buildableList[ i ].bounce;
- }
- }
-
- return 0.0;
+ return FindBuildable( bclass )->bounce;
}
/*
@@ -864,17 +784,7 @@ BG_FindBuildPointsForBuildable
*/
int BG_FindBuildPointsForBuildable( int bclass )
{
- int i;
-
- for( i = 0; i < bg_numBuildables; i++ )
- {
- if( bg_buildableList[ i ].buildNum == bclass )
- {
- return bg_buildableList[ i ].buildPoints;
- }
- }
-
- return 1000;
+ return FindBuildable( bclass )->buildPoints;
}
/*
@@ -884,20 +794,7 @@ BG_FindStagesForBuildable
*/
qboolean BG_FindStagesForBuildable( int bclass, stage_t stage )
{
- int i;
-
- for( i = 0; i < bg_numBuildables; i++ )
- {
- if( bg_buildableList[ i ].buildNum == bclass )
- {
- if( bg_buildableList[ i ].stages & ( 1 << stage ) )
- return qtrue;
- else
- return qfalse;
- }
- }
-
- return qfalse;
+ return !!( FindBuildable( bclass )->stages & ( 1 << stage ) );
}
/*
@@ -907,17 +804,7 @@ BG_FindHealthForBuildable
*/
int BG_FindHealthForBuildable( int bclass )
{
- int i;
-
- for( i = 0; i < bg_numBuildables; i++ )
- {
- if( bg_buildableList[ i ].buildNum == bclass )
- {
- return bg_buildableList[ i ].health;
- }
- }
-
- return 1000;
+ return FindBuildable( bclass )->health;
}
/*
@@ -927,17 +814,7 @@ BG_FindRegenRateForBuildable
*/
int BG_FindRegenRateForBuildable( int bclass )
{
- int i;
-
- for( i = 0; i < bg_numBuildables; i++ )
- {
- if( bg_buildableList[ i ].buildNum == bclass )
- {
- return bg_buildableList[ i ].regenRate;
- }
- }
-
- return 0;
+ return FindBuildable( bclass )->regenRate;
}
/*
@@ -947,17 +824,7 @@ BG_FindSplashDamageForBuildable
*/
int BG_FindSplashDamageForBuildable( int bclass )
{
- int i;
-
- for( i = 0; i < bg_numBuildables; i++ )
- {
- if( bg_buildableList[ i ].buildNum == bclass )
- {
- return bg_buildableList[ i ].splashDamage;
- }
- }
-
- return 50;
+ return FindBuildable( bclass )->splashDamage;
}
/*
@@ -967,17 +834,7 @@ BG_FindSplashRadiusForBuildable
*/
int BG_FindSplashRadiusForBuildable( int bclass )
{
- int i;
-
- for( i = 0; i < bg_numBuildables; i++ )
- {
- if( bg_buildableList[ i ].buildNum == bclass )
- {
- return bg_buildableList[ i ].splashRadius;
- }
- }
-
- return 200;
+ return FindBuildable( bclass )->splashRadius;
}
/*
@@ -987,17 +844,7 @@ BG_FindMODForBuildable
*/
int BG_FindMODForBuildable( int bclass )
{
- int i;
-
- for( i = 0; i < bg_numBuildables; i++ )
- {
- if( bg_buildableList[ i ].buildNum == bclass )
- {
- return bg_buildableList[ i ].meansOfDeath;
- }
- }
-
- return MOD_UNKNOWN;
+ return FindBuildable( bclass )->meansOfDeath;
}
/*
@@ -1007,17 +854,7 @@ BG_FindTeamForBuildable
*/
int BG_FindTeamForBuildable( int bclass )
{
- int i;
-
- for( i = 0; i < bg_numBuildables; i++ )
- {
- if( bg_buildableList[ i ].buildNum == bclass )
- {
- return bg_buildableList[ i ].team;
- }
- }
-
- return BIT_NONE;
+ return FindBuildable( bclass )->team;
}
/*
@@ -1027,17 +864,7 @@ BG_FindBuildWeaponForBuildable
*/
weapon_t BG_FindBuildWeaponForBuildable( int bclass )
{
- int i;
-
- for( i = 0; i < bg_numBuildables; i++ )
- {
- if( bg_buildableList[ i ].buildNum == bclass )
- {
- return bg_buildableList[ i ].buildWeapon;
- }
- }
-
- return BA_NONE;
+ return FindBuildable( bclass )->buildWeapon;
}
/*
@@ -1047,17 +874,7 @@ BG_FindAnimForBuildable
*/
int BG_FindAnimForBuildable( int bclass )
{
- int i;
-
- for( i = 0; i < bg_numBuildables; i++ )
- {
- if( bg_buildableList[ i ].buildNum == bclass )
- {
- return bg_buildableList[ i ].idleAnim;
- }
- }
-
- return BANIM_IDLE1;
+ return FindBuildable( bclass )->idleAnim;
}
/*
@@ -1067,17 +884,7 @@ BG_FindNextThinkForBuildable
*/
int BG_FindNextThinkForBuildable( int bclass )
{
- int i;
-
- for( i = 0; i < bg_numBuildables; i++ )
- {
- if( bg_buildableList[ i ].buildNum == bclass )
- {
- return bg_buildableList[ i ].nextthink;
- }
- }
-
- return 100;
+ return FindBuildable( bclass )->nextthink;
}
/*
@@ -1087,17 +894,7 @@ BG_FindBuildTimeForBuildable
*/
int BG_FindBuildTimeForBuildable( int bclass )
{
- int i;
-
- for( i = 0; i < bg_numBuildables; i++ )
- {
- if( bg_buildableList[ i ].buildNum == bclass )
- {
- return bg_buildableList[ i ].buildTime;
- }
- }
-
- return 10000;
+ return FindBuildable( bclass )->buildTime;
}
/*
@@ -1107,17 +904,7 @@ BG_FindUsableForBuildable
*/
qboolean BG_FindUsableForBuildable( int bclass )
{
- int i;
-
- for( i = 0; i < bg_numBuildables; i++ )
- {
- if( bg_buildableList[ i ].buildNum == bclass )
- {
- return bg_buildableList[ i ].usable;
- }
- }
-
- return qfalse;
+ return FindBuildable( bclass )->usable;
}
/*
@@ -1127,17 +914,7 @@ BG_FindFireSpeedForBuildable
*/
int BG_FindFireSpeedForBuildable( int bclass )
{
- int i;
-
- for( i = 0; i < bg_numBuildables; i++ )
- {
- if( bg_buildableList[ i ].buildNum == bclass )
- {
- return bg_buildableList[ i ].turretFireSpeed;
- }
- }
-
- return 1000;
+ return FindBuildable( bclass )->turretFireSpeed;
}
/*
@@ -1147,17 +924,7 @@ BG_FindRangeForBuildable
*/
int BG_FindRangeForBuildable( int bclass )
{
- int i;
-
- for( i = 0; i < bg_numBuildables; i++ )
- {
- if( bg_buildableList[ i ].buildNum == bclass )
- {
- return bg_buildableList[ i ].turretRange;
- }
- }
-
- return 1000;
+ return FindBuildable( bclass )->turretRange;
}
/*
@@ -1167,17 +934,7 @@ BG_FindProjTypeForBuildable
*/
weapon_t BG_FindProjTypeForBuildable( int bclass )
{
- int i;
-
- for( i = 0; i < bg_numBuildables; i++ )
- {
- if( bg_buildableList[ i ].buildNum == bclass )
- {
- return bg_buildableList[ i ].turretProjType;
- }
- }
-
- return WP_NONE;
+ return FindBuildable( bclass )->turretProjType;
}
/*
@@ -1187,17 +944,7 @@ BG_FindMinNormalForBuildable
*/
float BG_FindMinNormalForBuildable( int bclass )
{
- int i;
-
- for( i = 0; i < bg_numBuildables; i++ )
- {
- if( bg_buildableList[ i ].buildNum == bclass )
- {
- return bg_buildableList[ i ].minNormal;
- }
- }
-
- return 0.707f;
+ return FindBuildable( bclass )->minNormal;
}
/*
@@ -1207,17 +954,7 @@ BG_FindInvertNormalForBuildable
*/
qboolean BG_FindInvertNormalForBuildable( int bclass )
{
- int i;
-
- for( i = 0; i < bg_numBuildables; i++ )
- {
- if( bg_buildableList[ i ].buildNum == bclass )
- {
- return bg_buildableList[ i ].invertNormal;
- }
- }
-
- return qfalse;
+ return FindBuildable( bclass )->invertNormal;
}
/*
@@ -1227,17 +964,7 @@ BG_FindCreepTestForBuildable
*/
int BG_FindCreepTestForBuildable( int bclass )
{
- int i;
-
- for( i = 0; i < bg_numBuildables; i++ )
- {
- if( bg_buildableList[ i ].buildNum == bclass )
- {
- return bg_buildableList[ i ].creepTest;
- }
- }
-
- return qfalse;
+ return FindBuildable( bclass )->creepTest;
}
/*
@@ -1247,17 +974,7 @@ BG_FindCreepSizeForBuildable
*/
int BG_FindCreepSizeForBuildable( int bclass )
{
- int i;
-
- for( i = 0; i < bg_numBuildables; i++ )
- {
- if( bg_buildableList[ i ].buildNum == bclass )
- {
- return bg_buildableList[ i ].creepSize;
- }
- }
-
- return CREEP_BASESIZE;
+ return FindBuildable( bclass )->creepSize;
}
/*
@@ -1267,17 +984,7 @@ BG_FindDCCTestForBuildable
*/
int BG_FindDCCTestForBuildable( int bclass )
{
- int i;
-
- for( i = 0; i < bg_numBuildables; i++ )
- {
- if( bg_buildableList[ i ].buildNum == bclass )
- {
- return bg_buildableList[ i ].dccTest;
- }
- }
-
- return qfalse;
+ return FindBuildable( bclass )->dccTest;
}
/*
@@ -1287,17 +994,7 @@ BG_FindUniqueTestForBuildable
*/
int BG_FindUniqueTestForBuildable( int bclass )
{
- int i;
-
- for( i = 0; i < bg_numBuildables; i++ )
- {
- if( bg_buildableList[ i ].buildNum == bclass )
- {
- return bg_buildableList[ i ].reactorTest;
- }
- }
-
- return qfalse;
+ return FindBuildable( bclass )->reactorTest;
}
/*
@@ -1307,16 +1004,7 @@ BG_FindReplaceableTestForBuildable
*/
qboolean BG_FindReplaceableTestForBuildable( int bclass )
{
- int i;
-
- for( i = 0; i < bg_numBuildables; i++ )
- {
- if( bg_buildableList[ i ].buildNum == bclass )
- {
- return bg_buildableList[ i ].replaceable;
- }
- }
- return qfalse;
+ return FindBuildable( bclass )->replaceable;
}
/*
@@ -1326,16 +1014,7 @@ BG_FindTransparentTestForBuildable
*/
qboolean BG_FindTransparentTestForBuildable( int bclass )
{
- int i;
-
- for( i = 0; i < bg_numBuildables; i++ )
- {
- if( bg_buildableList[ i ].buildNum == bclass )
- {
- return bg_buildableList[ i ].transparentTest;
- }
- }
- return qfalse;
+ return FindBuildable( bclass )->transparentTest;
}
////////////////////////////////////////////////////////////////////////////////
@@ -1848,7 +1527,13 @@ classAttributes_t bg_classList[ ] =
},
};
-int bg_numPclasses = sizeof( bg_classList ) / sizeof( bg_classList[ 0 ] );
+static inline classAttributes_t *FindClass( int index )
+{
+ if( index < PCL_NONE || index >= PCL_NUM_CLASSES )
+ Com_Error( ERR_FATAL, "Invalid index in FindClass: %i\n", index);
+
+ return bg_classList + index;
+}
/*
==============
@@ -1859,7 +1544,7 @@ int BG_FindClassNumForName( char *name )
{
int i;
- for( i = 0; i < bg_numPclasses; i++ )
+ for( i = 0; i < PCL_NUM_CLASSES; i++ )
{
if( !Q_stricmp( bg_classList[ i ].className, name ) )
return bg_classList[ i ].classNum;
@@ -1876,17 +1561,7 @@ BG_FindNameForClassNum
*/
char *BG_FindNameForClassNum( int pclass )
{
- int i;
-
- for( i = 0; i < bg_numPclasses; i++ )
- {
- if( bg_classList[ i ].classNum == pclass )
- return bg_classList[ i ].className;
- }
-
- Com_Printf( S_COLOR_YELLOW "WARNING: fallthrough in BG_FindNameForClassNum\n" );
- //wimp out
- return 0;
+ return FindClass( pclass )->className;
}
/*
@@ -1896,17 +1571,7 @@ BG_FindHumanNameForClassNum
*/
char *BG_FindHumanNameForClassNum( int pclass )
{
- int i;
-
- for( i = 0; i < bg_numPclasses; i++ )
- {
- if( bg_classList[ i ].classNum == pclass )
- return bg_classList[ i ].humanName;
- }
-
- Com_Printf( S_COLOR_YELLOW "WARNING: fallthrough in BG_FindHumanNameForClassNum\n" );
- //wimp out
- return 0;
+ return FindClass( pclass )->humanName;
}
/*
@@ -1916,17 +1581,7 @@ BG_FindModelNameForClass
*/
char *BG_FindModelNameForClass( int pclass )
{
- int i;
-
- for( i = 0; i < bg_numPclasses; i++ )
- {
- if( bg_classList[ i ].classNum == pclass )
- return bg_classList[ i ].modelName;
- }
-
- Com_Printf( S_COLOR_YELLOW "WARNING: fallthrough in BG_FindModelNameForClass\n" );
- //note: must return a valid modelName!
- return bg_classList[ 0 ].modelName;
+ return FindClass( pclass )->modelName;
}
/*
@@ -1936,18 +1591,7 @@ BG_FindModelScaleForClass
*/
float BG_FindModelScaleForClass( int pclass )
{
- int i;
-
- for( i = 0; i < bg_numPclasses; i++ )
- {
- if( bg_classList[ i ].classNum == pclass )
- {
- return bg_classList[ i ].modelScale;
- }
- }
-
- Com_Printf( S_COLOR_YELLOW "WARNING: fallthrough in BG_FindModelScaleForClass( %d )\n", pclass );
- return 1.0f;
+ return FindClass( pclass )->modelScale;
}
/*
@@ -1957,17 +1601,7 @@ BG_FindSkinNameForClass
*/
char *BG_FindSkinNameForClass( int pclass )
{
- int i;
-
- for( i = 0; i < bg_numPclasses; i++ )
- {
- if( bg_classList[ i ].classNum == pclass )
- return bg_classList[ i ].skinName;
- }
-
- Com_Printf( S_COLOR_YELLOW "WARNING: fallthrough in BG_FindSkinNameForClass\n" );
- //note: must return a valid modelName!
- return bg_classList[ 0 ].skinName;
+ return FindClass( pclass )->skinName;
}
/*
@@ -1977,18 +1611,7 @@ BG_FindShadowScaleForClass
*/
float BG_FindShadowScaleForClass( int pclass )
{
- int i;
-
- for( i = 0; i < bg_numPclasses; i++ )
- {
- if( bg_classList[ i ].classNum == pclass )
- {
- return bg_classList[ i ].shadowScale;
- }
- }
-
- Com_Printf( S_COLOR_YELLOW "WARNING: fallthrough in BG_FindShadowScaleForClass( %d )\n", pclass );
- return 1.0f;
+ return FindClass( pclass )->shadowScale;
}
/*
@@ -1998,17 +1621,7 @@ BG_FindHudNameForClass
*/
char *BG_FindHudNameForClass( int pclass )
{
- int i;
-
- for( i = 0; i < bg_numPclasses; i++ )
- {
- if( bg_classList[ i ].classNum == pclass )
- return bg_classList[ i ].hudName;
- }
-
- Com_Printf( S_COLOR_YELLOW "WARNING: fallthrough in BG_FindHudNameForClass\n" );
- //note: must return a valid hudName!
- return bg_classList[ 0 ].hudName;
+ return FindClass( pclass )->hudName;
}
/*
@@ -2018,21 +1631,7 @@ BG_FindStagesForClass
*/
qboolean BG_FindStagesForClass( int pclass, stage_t stage )
{
- int i;
-
- for( i = 0; i < bg_numPclasses; i++ )
- {
- if( bg_classList[ i ].classNum == pclass )
- {
- if( bg_classList[ i ].stages & ( 1 << stage ) )
- return qtrue;
- else
- return qfalse;
- }
- }
-
- Com_Printf( S_COLOR_YELLOW "WARNING: fallthrough in BG_FindStagesForClass\n" );
- return qfalse;
+ return !!( FindClass( pclass )->stages & ( 1 << stage ) );
}
/*
@@ -2042,45 +1641,22 @@ BG_FindBBoxForClass
*/
void BG_FindBBoxForClass( int pclass, vec3_t mins, vec3_t maxs, vec3_t cmaxs, vec3_t dmins, vec3_t dmaxs )
{
- int i;
+ classAttributes_t *attr = FindClass( pclass );
- for( i = 0; i < bg_numPclasses; i++ )
- {
- if( bg_classList[ i ].classNum == pclass )
- {
- if( mins != NULL )
- VectorCopy( bg_classList[ i ].mins, mins );
-
- if( maxs != NULL )
- VectorCopy( bg_classList[ i ].maxs, maxs );
-
- if( cmaxs != NULL )
- VectorCopy( bg_classList[ i ].crouchMaxs, cmaxs );
+ if( mins )
+ VectorCopy( attr->mins, mins );
- if( dmins != NULL )
- VectorCopy( bg_classList[ i ].deadMins, dmins );
+ if( maxs )
+ VectorCopy( attr->maxs, maxs );
- if( dmaxs != NULL )
- VectorCopy( bg_classList[ i ].deadMaxs, dmaxs );
-
- return;
- }
- }
+ if( cmaxs )
+ VectorCopy( attr->crouchMaxs, cmaxs );
- if( mins != NULL )
- VectorCopy( bg_classList[ 0 ].mins, mins );
+ if( dmins )
+ VectorCopy( attr->deadMins, dmins );
- if( maxs != NULL )
- VectorCopy( bg_classList[ 0 ].maxs, maxs );
-
- if( cmaxs != NULL )
- VectorCopy( bg_classList[ 0 ].crouchMaxs, cmaxs );
-
- if( dmins != NULL )
- VectorCopy( bg_classList[ 0 ].deadMins, dmins );
-
- if( dmaxs != NULL )
- VectorCopy( bg_classList[ 0 ].deadMaxs, dmaxs );
+ if( dmaxs )
+ VectorCopy( attr->deadMaxs, dmaxs );
}
/*
@@ -2090,18 +1666,7 @@ BG_FindZOffsetForClass
*/
float BG_FindZOffsetForClass( int pclass )
{
- int i;
-
- for( i = 0; i < bg_numPclasses; i++ )
- {
- if( bg_classList[ i ].classNum == pclass )
- {
- return bg_classList[ i ].zOffset;
- }
- }
-
- Com_Printf( S_COLOR_YELLOW "WARNING: fallthrough in BG_FindZOffsetForClass\n" );
- return 0.0f;
+ return FindClass( pclass )->zOffset;
}
/*
@@ -2111,29 +1676,13 @@ BG_FindViewheightForClass
*/
void BG_FindViewheightForClass( int pclass, int *viewheight, int *cViewheight )
{
- int i;
- int vh = 0;
- int cvh = 0;
-
- for( i = 0; i < bg_numPclasses; i++ )
- {
- if( bg_classList[ i ].classNum == pclass )
- {
- vh = bg_classList[ i ].viewheight;
- cvh = bg_classList[ i ].crouchViewheight;
- break;
- }
- }
+ classAttributes_t *attr = FindClass(pclass);
- if( vh == 0 )
- vh = bg_classList[ 0 ].viewheight;
- if( cvh == 0 )
- cvh = bg_classList[ 0 ].crouchViewheight;
+ if( viewheight )
+ *viewheight = attr->viewheight;
- if( viewheight != NULL )
- *viewheight = vh;
- if( cViewheight != NULL )
- *cViewheight = cvh;
+ if ( cViewheight )
+ *cViewheight = attr->crouchViewheight;
}
/*
@@ -2143,18 +1692,7 @@ BG_FindHealthForClass
*/
int BG_FindHealthForClass( int pclass )
{
- int i;
-
- for( i = 0; i < bg_numPclasses; i++ )
- {
- if( bg_classList[ i ].classNum == pclass )
- {
- return bg_classList[ i ].health;
- }
- }
-
- Com_Printf( S_COLOR_YELLOW "WARNING: fallthrough in BG_FindHealthForClass\n" );
- return 100;
+ return FindClass( pclass )->health;
}
/*
@@ -2164,18 +1702,7 @@ BG_FindFallDamageForClass
*/
float BG_FindFallDamageForClass( int pclass )
{
- int i;
-
- for( i = 0; i < bg_numPclasses; i++ )
- {
- if( bg_classList[ i ].classNum == pclass )
- {
- return bg_classList[ i ].fallDamage;
- }
- }
-
- Com_Printf( S_COLOR_YELLOW "WARNING: fallthrough in BG_FindFallDamageForClass\n" );
- return 100;
+ return FindClass( pclass )->fallDamage;
}
/*
@@ -2185,18 +1712,7 @@ BG_FindRegenRateForClass
*/
int BG_FindRegenRateForClass( int pclass )
{
- int i;
-
- for( i = 0; i < bg_numPclasses; i++ )
- {
- if( bg_classList[ i ].classNum == pclass )
- {
- return bg_classList[ i ].regenRate;
- }
- }
-
- Com_Printf( S_COLOR_YELLOW "WARNING: fallthrough in BG_FindRegenRateForClass\n" );
- return 0;
+ return FindClass( pclass )->regenRate;
}
/*
@@ -2206,18 +1722,7 @@ BG_FindFovForClass
*/
int BG_FindFovForClass( int pclass )
{
- int i;
-
- for( i = 0; i < bg_numPclasses; i++ )
- {
- if( bg_classList[ i ].classNum == pclass )
- {
- return bg_classList[ i ].fov;
- }
- }
-
- Com_Printf( S_COLOR_YELLOW "WARNING: fallthrough in BG_FindFovForClass\n" );
- return 90;
+ return FindClass( pclass )->fov;
}
/*
@@ -2227,18 +1732,7 @@ BG_FindBobForClass
*/
float BG_FindBobForClass( int pclass )
{
- int i;
-
- for( i = 0; i < bg_numPclasses; i++ )
- {
- if( bg_classList[ i ].classNum == pclass )
- {
- return bg_classList[ i ].bob;
- }
- }
-
- Com_Printf( S_COLOR_YELLOW "WARNING: fallthrough in BG_FindBobForClass\n" );
- return 0.002;
+ return FindClass( pclass )->bob;
}
/*
@@ -2248,18 +1742,7 @@ BG_FindBobCycleForClass
*/
float BG_FindBobCycleForClass( int pclass )
{
- int i;
-
- for( i = 0; i < bg_numPclasses; i++ )
- {
- if( bg_classList[ i ].classNum == pclass )
- {
- return bg_classList[ i ].bobCycle;
- }
- }
-
- Com_Printf( S_COLOR_YELLOW "WARNING: fallthrough in BG_FindBobCycleForClass\n" );
- return 1.0f;
+ return FindClass( pclass )->bobCycle;
}
/*
@@ -2269,18 +1752,7 @@ BG_FindSpeedForClass
*/
float BG_FindSpeedForClass( int pclass )
{
- int i;
-
- for( i = 0; i < bg_numPclasses; i++ )
- {
- if( bg_classList[ i ].classNum == pclass )
- {
- return bg_classList[ i ].speed;
- }
- }
-
- Com_Printf( S_COLOR_YELLOW "WARNING: fallthrough in BG_FindSpeedForClass\n" );
- return 1.0f;
+ return FindClass( pclass )->speed;
}
/*
@@ -2290,18 +1762,7 @@ BG_FindAccelerationForClass
*/
float BG_FindAccelerationForClass( int pclass )
{
- int i;
-
- for( i = 0; i < bg_numPclasses; i++ )
- {
- if( bg_classList[ i ].classNum == pclass )
- {
- return bg_classList[ i ].acceleration;
- }
- }
-
- Com_Printf( S_COLOR_YELLOW "WARNING: fallthrough in BG_FindAccelerationForClass\n" );
- return 10.0f;
+ return FindClass( pclass )->acceleration;
}
/*
@@ -2311,18 +1772,7 @@ BG_FindAirAccelerationForClass
*/
float BG_FindAirAccelerationForClass( int pclass )
{
- int i;
-
- for( i = 0; i < bg_numPclasses; i++ )
- {
- if( bg_classList[ i ].classNum == pclass )
- {
- return bg_classList[ i ].airAcceleration;
- }
- }
-
- Com_Printf( S_COLOR_YELLOW "WARNING: fallthrough in BG_FindAirAccelerationForClass\n" );
- return 1.0f;
+ return FindClass( pclass )->airAcceleration;
}
/*
@@ -2332,18 +1782,7 @@ BG_FindFrictionForClass
*/
float BG_FindFrictionForClass( int pclass )
{
- int i;
-
- for( i = 0; i < bg_numPclasses; i++ )
- {
- if( bg_classList[ i ].classNum == pclass )
- {
- return bg_classList[ i ].friction;
- }
- }
-
- Com_Printf( S_COLOR_YELLOW "WARNING: fallthrough in BG_FindFrictionForClass\n" );
- return 6.0f;
+ return FindClass( pclass )->friction;
}
/*
@@ -2353,18 +1792,7 @@ BG_FindStopSpeedForClass
*/
float BG_FindStopSpeedForClass( int pclass )
{
- int i;
-
- for( i = 0; i < bg_numPclasses; i++ )
- {
- if( bg_classList[ i ].classNum == pclass )
- {
- return bg_classList[ i ].stopSpeed;
- }
- }
-
- Com_Printf( S_COLOR_YELLOW "WARNING: fallthrough in BG_FindStopSpeedForClass\n" );
- return 100.0f;
+ return FindClass( pclass )->stopSpeed;
}
/*
@@ -2374,18 +1802,7 @@ BG_FindJumpMagnitudeForClass
*/
float BG_FindJumpMagnitudeForClass( int pclass )
{
- int i;
-
- for( i = 0; i < bg_numPclasses; i++ )
- {
- if( bg_classList[ i ].classNum == pclass )
- {
- return bg_classList[ i ].jumpMagnitude;
- }
- }
-
- Com_Printf( S_COLOR_YELLOW "WARNING: fallthrough in BG_FindJumpMagnitudeForClass\n" );
- return 270.0f;
+ return FindClass( pclass )->jumpMagnitude;
}
/*
@@ -2395,18 +1812,7 @@ BG_FindKnockbackScaleForClass
*/
float BG_FindKnockbackScaleForClass( int pclass )
{
- int i;
-
- for( i = 0; i < bg_numPclasses; i++ )
- {
- if( bg_classList[ i ].classNum == pclass )
- {
- return bg_classList[ i ].knockbackScale;
- }
- }
-
- Com_Printf( S_COLOR_YELLOW "WARNING: fallthrough in BG_FindKnockbackScaleForClass\n" );
- return 1.0f;
+ return FindClass( pclass )->knockbackScale;
}
/*
@@ -2416,18 +1822,7 @@ BG_FindSteptimeForClass
*/
int BG_FindSteptimeForClass( int pclass )
{
- int i;
-
- for( i = 0; i < bg_numPclasses; i++ )
- {
- if( bg_classList[ i ].classNum == pclass )
- {
- return bg_classList[ i ].steptime;
- }
- }
-
- Com_Printf( S_COLOR_YELLOW "WARNING: fallthrough in BG_FindSteptimeForClass\n" );
- return 200;
+ return FindClass( pclass )->steptime;
}
/*
@@ -2437,17 +1832,7 @@ BG_ClassHasAbility
*/
qboolean BG_ClassHasAbility( int pclass, int ability )
{
- int i;
-
- for( i = 0; i < bg_numPclasses; i++ )
- {
- if( bg_classList[ i ].classNum == pclass )
- {
- return ( bg_classList[ i ].abilities & ability );
- }
- }
-
- return qfalse;
+ return !!( FindClass( pclass )->abilities & ability );
}
/*
@@ -2457,18 +1842,7 @@ BG_FindStartWeaponForClass
*/
weapon_t BG_FindStartWeaponForClass( int pclass )
{
- int i;
-
- for( i = 0; i < bg_numPclasses; i++ )
- {
- if( bg_classList[ i ].classNum == pclass )
- {
- return bg_classList[ i ].startWeapon;
- }
- }
-
- Com_Printf( S_COLOR_YELLOW "WARNING: fallthrough in BG_FindStartWeaponForClass\n" );
- return WP_NONE;
+ return FindClass( pclass )->startWeapon;
}
/*
@@ -2478,18 +1852,7 @@ BG_FindBuildDistForClass
*/
float BG_FindBuildDistForClass( int pclass )
{
- int i;
-
- for( i = 0; i < bg_numPclasses; i++ )
- {
- if( bg_classList[ i ].classNum == pclass )
- {
- return bg_classList[ i ].buildDist;
- }
- }
-
- Com_Printf( S_COLOR_YELLOW "WARNING: fallthrough in BG_FindBuildDistForClass\n" );
- return 0.0f;
+ return FindClass( pclass )->buildDist;
}
/*
@@ -2499,7 +1862,8 @@ BG_ClassCanEvolveFromTo
*/
int BG_ClassCanEvolveFromTo( int fclass, int tclass, int credits, int num )
{
- int i, j, cost;
+ classAttributes_t *attr = FindClass( fclass );
+ int i, cost;
cost = BG_FindCostOfClass( tclass );
@@ -2510,30 +1874,22 @@ int BG_ClassCanEvolveFromTo( int fclass, int tclass, int credits, int num )
if( fclass == PCL_NONE || tclass == PCL_NONE )
return -1;
- for( i = 0; i < bg_numPclasses; i++ )
- {
- if( bg_classList[ i ].classNum == fclass )
- {
- for( j = 0; j < 3; j++ )
- if( bg_classList[ i ].children[ j ] == tclass )
- return num + cost;
-
- for( j = 0; j < 3; j++ )
- {
- int sub;
+ for( i = 0; i < 3; i++ )
+ if( attr->children[ i ] == tclass )
+ return num + cost;
- cost = BG_FindCostOfClass( bg_classList[ i ].children[ j ] );
- sub = BG_ClassCanEvolveFromTo( bg_classList[ i ].children[ j ],
- tclass, credits - cost, num + cost );
- if( sub >= 0 )
- return sub;
- }
+ for( i = 0; i < 3; i++ )
+ {
+ int sub;
- return -1; //may as well return by this point
- }
+ cost = BG_FindCostOfClass( attr->children[ i ] );
+ sub = BG_ClassCanEvolveFromTo( attr->children[ i ],
+ tclass, credits - cost, num + cost );
+ if( sub >= 0 )
+ return sub;
}
- return -1;
+ return -1; //may as well return by this point
}
/*
@@ -2543,18 +1899,7 @@ BG_FindValueOfClass
*/
int BG_FindValueOfClass( int pclass )
{
- int i;
-
- for( i = 0; i < bg_numPclasses; i++ )
- {
- if( bg_classList[ i ].classNum == pclass )
- {
- return bg_classList[ i ].value;
- }
- }
-
- Com_Printf( S_COLOR_YELLOW "WARNING: fallthrough in BG_FindValueOfClass\n" );
- return 0;
+ return FindClass( pclass )->value;
}
/*
@@ -2564,18 +1909,7 @@ BG_FindCostOfClass
*/
int BG_FindCostOfClass( int pclass )
{
- int i;
-
- for( i = 0; i < bg_numPclasses; i++ )
- {
- if( bg_classList[ i ].classNum == pclass )
- {
- return bg_classList[ i ].cost;
- }
- }
-
- Com_Printf( S_COLOR_YELLOW "WARNING: fallthrough in BG_FindCostOfClass\n" );
- return 0;
+ return FindClass( pclass )->cost;
}
////////////////////////////////////////////////////////////////////////////////
@@ -2583,221 +1917,249 @@ int BG_FindCostOfClass( int pclass )
weaponAttributes_t bg_weapons[ ] =
{
{
- WP_BLASTER, //int weaponNum;
+ WP_NONE,
+ },
+ {
+ WP_ALEVEL0, //int weaponNum;
0, //int price;
( 1 << S1 )|( 1 << S2 )|( 1 << S3 ), //int stages
- 0, //int slots;
- "blaster", //char *weaponName;
- "Blaster", //char *weaponHumanName;
+ SLOT_WEAPON, //int slots;
+ "level0", //char *weaponName;
+ "Bite", //char *weaponHumanName;
0, //int maxAmmo;
0, //int maxClips;
qtrue, //int infiniteAmmo;
qfalse, //int usesEnergy;
- BLASTER_REPEAT, //int repeatRate1;
+ LEVEL0_BITE_REPEAT, //int repeatRate1;
0, //int repeatRate2;
0, //int repeatRate3;
0, //int reloadTime;
- BLASTER_K_SCALE, //float knockbackScale;
+ LEVEL0_BITE_K_SCALE, //float knockbackScale;
qfalse, //qboolean hasAltMode;
qfalse, //qboolean hasThirdMode;
qfalse, //qboolean canZoom;
90.0f, //float zoomFov;
qfalse, //qboolean purchasable;
- qtrue, //qboolean longRanged;
+ qfalse, //qboolean longRanged;
0, //int buildDelay;
- WUT_HUMANS //WUTeam_t team;
+ WUT_ALIENS //WUTeam_t team;
},
{
- WP_MACHINEGUN, //int weaponNum;
- RIFLE_PRICE, //int price;
+ WP_ALEVEL1, //int weaponNum;
+ 0, //int price;
( 1 << S1 )|( 1 << S2 )|( 1 << S3 ), //int stages
SLOT_WEAPON, //int slots;
- "rifle", //char *weaponName;
- "Rifle", //char *weaponHumanName;
- RIFLE_CLIPSIZE, //int maxAmmo;
- RIFLE_MAXCLIPS, //int maxClips;
- qfalse, //int infiniteAmmo;
+ "level1", //char *weaponName;
+ "Claws", //char *weaponHumanName;
+ 0, //int maxAmmo;
+ 0, //int maxClips;
+ qtrue, //int infiniteAmmo;
qfalse, //int usesEnergy;
- RIFLE_REPEAT, //int repeatRate1;
+ LEVEL1_CLAW_REPEAT, //int repeatRate1;
0, //int repeatRate2;
0, //int repeatRate3;
- RIFLE_RELOAD, //int reloadTime;
- RIFLE_K_SCALE, //float knockbackScale;
+ 0, //int reloadTime;
+ LEVEL1_CLAW_K_SCALE, //float knockbackScale;
qfalse, //qboolean hasAltMode;
qfalse, //qboolean hasThirdMode;
qfalse, //qboolean canZoom;
90.0f, //float zoomFov;
- qtrue, //qboolean purchasable;
- qtrue, //qboolean longRanged;
+ qfalse, //qboolean purchasable;
+ qfalse, //qboolean longRanged;
0, //int buildDelay;
- WUT_HUMANS //WUTeam_t team;
+ WUT_ALIENS //WUTeam_t team;
},
{
- WP_SHOTGUN, //int weaponNum;
- SHOTGUN_PRICE, //int price;
+ WP_ALEVEL1_UPG, //int weaponNum;
+ 0, //int price;
( 1 << S1 )|( 1 << S2 )|( 1 << S3 ), //int stages
SLOT_WEAPON, //int slots;
- "shotgun", //char *weaponName;
- "Shotgun", //char *weaponHumanName;
- SHOTGUN_SHELLS, //int maxAmmo;
- SHOTGUN_MAXCLIPS, //int maxClips;
- qfalse, //int infiniteAmmo;
+ "level1upg", //char *weaponName;
+ "Claws Upgrade", //char *weaponHumanName;
+ 0, //int maxAmmo;
+ 0, //int maxClips;
+ qtrue, //int infiniteAmmo;
qfalse, //int usesEnergy;
- SHOTGUN_REPEAT, //int repeatRate1;
- 0, //int repeatRate2;
+ LEVEL1_CLAW_U_REPEAT, //int repeatRate1;
+ LEVEL1_PCLOUD_REPEAT, //int repeatRate2;
0, //int repeatRate3;
- SHOTGUN_RELOAD, //int reloadTime;
- SHOTGUN_K_SCALE, //float knockbackScale;
- qfalse, //qboolean hasAltMode;
+ 0, //int reloadTime;
+ LEVEL1_CLAW_U_K_SCALE,//float knockbackScale;
+ qtrue, //qboolean hasAltMode;
qfalse, //qboolean hasThirdMode;
qfalse, //qboolean canZoom;
90.0f, //float zoomFov;
- qtrue, //qboolean purchasable;
+ qfalse, //qboolean purchasable;
qtrue, //qboolean longRanged;
0, //int buildDelay;
- WUT_HUMANS //WUTeam_t team;
+ WUT_ALIENS //WUTeam_t team;
},
{
- WP_FLAMER, //int weaponNum;
- FLAMER_PRICE, //int price;
- ( 1 << S2 )|( 1 << S3 ), //int stages
+ WP_ALEVEL2, //int weaponNum;
+ 0, //int price;
+ ( 1 << S1 )|( 1 << S2 )|( 1 << S3 ), //int stages
SLOT_WEAPON, //int slots;
- "flamer", //char *weaponName;
- "Flame Thrower", //char *weaponHumanName;
- FLAMER_GAS, //int maxAmmo;
+ "level2", //char *weaponName;
+ "Bite", //char *weaponHumanName;
+ 0, //int maxAmmo;
0, //int maxClips;
- qfalse, //int infiniteAmmo;
+ qtrue, //int infiniteAmmo;
qfalse, //int usesEnergy;
- FLAMER_REPEAT, //int repeatRate1;
+ LEVEL2_CLAW_REPEAT, //int repeatRate1;
0, //int repeatRate2;
0, //int repeatRate3;
0, //int reloadTime;
- FLAMER_K_SCALE, //float knockbackScale;
+ LEVEL2_CLAW_K_SCALE, //float knockbackScale;
qfalse, //qboolean hasAltMode;
qfalse, //qboolean hasThirdMode;
qfalse, //qboolean canZoom;
90.0f, //float zoomFov;
- qtrue, //qboolean purchasable;
- qtrue, //qboolean longRanged;
+ qfalse, //qboolean purchasable;
+ qfalse, //qboolean longRanged;
0, //int buildDelay;
- WUT_HUMANS //WUTeam_t team;
+ WUT_ALIENS //WUTeam_t team;
},
{
- WP_CHAINGUN, //int weaponNum;
- CHAINGUN_PRICE, //int price;
+ WP_ALEVEL2_UPG, //int weaponNum;
+ 0, //int price;
( 1 << S1 )|( 1 << S2 )|( 1 << S3 ), //int stages
SLOT_WEAPON, //int slots;
- "chaingun", //char *weaponName;
- "Chaingun", //char *weaponHumanName;
- CHAINGUN_BULLETS, //int maxAmmo;
+ "level2upg", //char *weaponName;
+ "Zap", //char *weaponHumanName;
+ 0, //int maxAmmo;
0, //int maxClips;
- qfalse, //int infiniteAmmo;
+ qtrue, //int infiniteAmmo;
qfalse, //int usesEnergy;
- CHAINGUN_REPEAT, //int repeatRate1;
- 0, //int repeatRate2;
+ LEVEL2_CLAW_U_REPEAT, //int repeatRate1;
+ LEVEL2_AREAZAP_REPEAT,//int repeatRate2;
0, //int repeatRate3;
0, //int reloadTime;
- CHAINGUN_K_SCALE, //float knockbackScale;
- qfalse, //qboolean hasAltMode;
+ LEVEL2_CLAW_U_K_SCALE,//float knockbackScale;
+ qtrue, //qboolean hasAltMode;
qfalse, //qboolean hasThirdMode;
qfalse, //qboolean canZoom;
90.0f, //float zoomFov;
- qtrue, //qboolean purchasable;
- qtrue, //qboolean longRanged;
+ qfalse, //qboolean purchasable;
+ qfalse, //qboolean longRanged;
0, //int buildDelay;
- WUT_HUMANS //WUTeam_t team;
+ WUT_ALIENS //WUTeam_t team;
},
{
- WP_MASS_DRIVER, //int weaponNum;
- MDRIVER_PRICE, //int price;
+ WP_ALEVEL3, //int weaponNum;
+ 0, //int price;
( 1 << S1 )|( 1 << S2 )|( 1 << S3 ), //int stages
SLOT_WEAPON, //int slots;
- "mdriver", //char *weaponName;
- "Mass Driver", //char *weaponHumanName;
- MDRIVER_CLIPSIZE, //int maxAmmo;
- MDRIVER_MAXCLIPS, //int maxClips;
- qfalse, //int infiniteAmmo;
- qtrue, //int usesEnergy;
- MDRIVER_REPEAT, //int repeatRate1;
+ "level3", //char *weaponName;
+ "Pounce", //char *weaponHumanName;
+ 0, //int maxAmmo;
+ 0, //int maxClips;
+ qtrue, //int infiniteAmmo;
+ qfalse, //int usesEnergy;
+ LEVEL3_CLAW_REPEAT, //int repeatRate1;
0, //int repeatRate2;
0, //int repeatRate3;
- MDRIVER_RELOAD, //int reloadTime;
- MDRIVER_K_SCALE, //float knockbackScale;
+ 0, //int reloadTime;
+ LEVEL3_CLAW_K_SCALE, //float knockbackScale;
qfalse, //qboolean hasAltMode;
qfalse, //qboolean hasThirdMode;
- qtrue, //qboolean canZoom;
- 20.0f, //float zoomFov;
- qtrue, //qboolean purchasable;
+ qfalse, //qboolean canZoom;
+ 90.0f, //float zoomFov;
+ qfalse, //qboolean purchasable;
+ qfalse, //qboolean longRanged;
+ 0, //int buildDelay;
+ WUT_ALIENS //WUTeam_t team;
+ },
+ {
+ WP_ALEVEL3_UPG, //int weaponNum;
+ 0, //int price;
+ ( 1 << S1 )|( 1 << S2 )|( 1 << S3 ), //int stages
+ SLOT_WEAPON, //int slots;
+ "level3upg", //char *weaponName;
+ "Pounce (upgrade)", //char *weaponHumanName;
+ 3, //int maxAmmo;
+ 0, //int maxClips;
+ qtrue, //int infiniteAmmo;
+ qfalse, //int usesEnergy;
+ LEVEL3_CLAW_U_REPEAT, //int repeatRate1;
+ 0, //int repeatRate2;
+ LEVEL3_BOUNCEBALL_REPEAT,//int repeatRate3;
+ 0, //int reloadTime;
+ LEVEL3_CLAW_U_K_SCALE,//float knockbackScale;
+ qfalse, //qboolean hasAltMode;
+ qtrue, //qboolean hasThirdMode;
+ qfalse, //qboolean canZoom;
+ 90.0f, //float zoomFov;
+ qfalse, //qboolean purchasable;
qtrue, //qboolean longRanged;
0, //int buildDelay;
- WUT_HUMANS //WUTeam_t team;
+ WUT_ALIENS //WUTeam_t team;
},
{
- WP_PULSE_RIFLE, //int weaponNum;
- PRIFLE_PRICE, //int price;
- ( 1 << S2 )|( 1 << S3 ), //int stages
+ WP_ALEVEL4, //int weaponNum;
+ 0, //int price;
+ ( 1 << S1 )|( 1 << S2 )|( 1 << S3 ), //int stages
SLOT_WEAPON, //int slots;
- "prifle", //char *weaponName;
- "Pulse Rifle", //char *weaponHumanName;
- PRIFLE_CLIPS, //int maxAmmo;
- PRIFLE_MAXCLIPS, //int maxClips;
- qfalse, //int infiniteAmmo;
- qtrue, //int usesEnergy;
- PRIFLE_REPEAT, //int repeatRate1;
+ "level4", //char *weaponName;
+ "Charge", //char *weaponHumanName;
+ 0, //int maxAmmo;
+ 0, //int maxClips;
+ qtrue, //int infiniteAmmo;
+ qfalse, //int usesEnergy;
+ LEVEL4_CLAW_REPEAT, //int repeatRate1;
0, //int repeatRate2;
0, //int repeatRate3;
- PRIFLE_RELOAD, //int reloadTime;
- PRIFLE_K_SCALE, //float knockbackScale;
+ 0, //int reloadTime;
+ LEVEL4_CLAW_K_SCALE, //float knockbackScale;
qfalse, //qboolean hasAltMode;
qfalse, //qboolean hasThirdMode;
qfalse, //qboolean canZoom;
90.0f, //float zoomFov;
- qtrue, //qboolean purchasable;
- qtrue, //qboolean longRanged;
+ qfalse, //qboolean purchasable;
+ qfalse, //qboolean longRanged;
0, //int buildDelay;
- WUT_HUMANS //WUTeam_t team;
+ WUT_ALIENS //WUTeam_t team;
},
{
- WP_LUCIFER_CANNON, //int weaponNum;
- LCANNON_PRICE, //int price;
- ( 1 << S3 ), //int stages
- SLOT_WEAPON, //int slots;
- "lcannon", //char *weaponName;
- "Lucifer Cannon", //char *weaponHumanName;
- LCANNON_AMMO, //int maxAmmo;
+ WP_BLASTER, //int weaponNum;
+ 0, //int price;
+ ( 1 << S1 )|( 1 << S2 )|( 1 << S3 ), //int stages
+ 0, //int slots;
+ "blaster", //char *weaponName;
+ "Blaster", //char *weaponHumanName;
+ 0, //int maxAmmo;
0, //int maxClips;
- qfalse, //int infiniteAmmo;
- qtrue, //int usesEnergy;
- LCANNON_REPEAT, //int repeatRate1;
- LCANNON_CHARGEREPEAT, //int repeatRate2;
+ qtrue, //int infiniteAmmo;
+ qfalse, //int usesEnergy;
+ BLASTER_REPEAT, //int repeatRate1;
+ 0, //int repeatRate2;
0, //int repeatRate3;
- LCANNON_RELOAD, //int reloadTime;
- LCANNON_K_SCALE, //float knockbackScale;
- qtrue, //qboolean hasAltMode;
+ 0, //int reloadTime;
+ BLASTER_K_SCALE, //float knockbackScale;
+ qfalse, //qboolean hasAltMode;
qfalse, //qboolean hasThirdMode;
qfalse, //qboolean canZoom;
90.0f, //float zoomFov;
- qtrue, //qboolean purchasable;
+ qfalse, //qboolean purchasable;
qtrue, //qboolean longRanged;
0, //int buildDelay;
WUT_HUMANS //WUTeam_t team;
},
{
- WP_LAS_GUN, //int weaponNum;
- LASGUN_PRICE, //int price;
+ WP_MACHINEGUN, //int weaponNum;
+ RIFLE_PRICE, //int price;
( 1 << S1 )|( 1 << S2 )|( 1 << S3 ), //int stages
SLOT_WEAPON, //int slots;
- "lgun", //char *weaponName;
- "Las Gun", //char *weaponHumanName;
- LASGUN_AMMO, //int maxAmmo;
- 0, //int maxClips;
+ "rifle", //char *weaponName;
+ "Rifle", //char *weaponHumanName;
+ RIFLE_CLIPSIZE, //int maxAmmo;
+ RIFLE_MAXCLIPS, //int maxClips;
qfalse, //int infiniteAmmo;
- qtrue, //int usesEnergy;
- LASGUN_REPEAT, //int repeatRate1;
+ qfalse, //int usesEnergy;
+ RIFLE_REPEAT, //int repeatRate1;
0, //int repeatRate2;
0, //int repeatRate3;
- LASGUN_RELOAD, //int reloadTime;
- LASGUN_K_SCALE, //float knockbackScale;
+ RIFLE_RELOAD, //int reloadTime;
+ RIFLE_K_SCALE, //float knockbackScale;
qfalse, //qboolean hasAltMode;
qfalse, //qboolean hasThirdMode;
qfalse, //qboolean canZoom;
@@ -2833,221 +2195,196 @@ weaponAttributes_t bg_weapons[ ] =
WUT_HUMANS //WUTeam_t team;
},
{
- WP_GRENADE, //int weaponNum;
- GRENADE_PRICE, //int price;
- ( 1 << S2 )|( 1 << S3 ), //int stages
- SLOT_NONE, //int slots;
- "grenade", //char *weaponName;
- "Grenade", //char *weaponHumanName;
- 1, //int maxAmmo;
- 0, //int maxClips;
+ WP_SHOTGUN, //int weaponNum;
+ SHOTGUN_PRICE, //int price;
+ ( 1 << S1 )|( 1 << S2 )|( 1 << S3 ), //int stages
+ SLOT_WEAPON, //int slots;
+ "shotgun", //char *weaponName;
+ "Shotgun", //char *weaponHumanName;
+ SHOTGUN_SHELLS, //int maxAmmo;
+ SHOTGUN_MAXCLIPS, //int maxClips;
qfalse, //int infiniteAmmo;
qfalse, //int usesEnergy;
- GRENADE_REPEAT, //int repeatRate1;
+ SHOTGUN_REPEAT, //int repeatRate1;
0, //int repeatRate2;
0, //int repeatRate3;
- 0, //int reloadTime;
- GRENADE_K_SCALE, //float knockbackScale;
+ SHOTGUN_RELOAD, //int reloadTime;
+ SHOTGUN_K_SCALE, //float knockbackScale;
qfalse, //qboolean hasAltMode;
qfalse, //qboolean hasThirdMode;
qfalse, //qboolean canZoom;
90.0f, //float zoomFov;
- qfalse, //qboolean purchasable;
- qfalse, //qboolean longRanged;
+ qtrue, //qboolean purchasable;
+ qtrue, //qboolean longRanged;
0, //int buildDelay;
WUT_HUMANS //WUTeam_t team;
},
{
- WP_HBUILD, //int weaponNum;
- HBUILD_PRICE, //int price;
+ WP_LAS_GUN, //int weaponNum;
+ LASGUN_PRICE, //int price;
( 1 << S1 )|( 1 << S2 )|( 1 << S3 ), //int stages
SLOT_WEAPON, //int slots;
- "ckit", //char *weaponName;
- "Construction Kit", //char *weaponHumanName;
- 0, //int maxAmmo;
+ "lgun", //char *weaponName;
+ "Las Gun", //char *weaponHumanName;
+ LASGUN_AMMO, //int maxAmmo;
0, //int maxClips;
- qtrue, //int infiniteAmmo;
- qfalse, //int usesEnergy;
- HBUILD_REPEAT, //int repeatRate1;
- HBUILD_REPEAT, //int repeatRate2;
+ qfalse, //int infiniteAmmo;
+ qtrue, //int usesEnergy;
+ LASGUN_REPEAT, //int repeatRate1;
+ 0, //int repeatRate2;
0, //int repeatRate3;
- 0, //int reloadTime;
- 0.0f, //float knockbackScale;
- qtrue, //qboolean hasAltMode;
+ LASGUN_RELOAD, //int reloadTime;
+ LASGUN_K_SCALE, //float knockbackScale;
+ qfalse, //qboolean hasAltMode;
qfalse, //qboolean hasThirdMode;
qfalse, //qboolean canZoom;
90.0f, //float zoomFov;
qtrue, //qboolean purchasable;
- qfalse, //qboolean longRanged;
- HBUILD_DELAY, //int buildDelay;
+ qtrue, //qboolean longRanged;
+ 0, //int buildDelay;
WUT_HUMANS //WUTeam_t team;
},
{
- WP_HBUILD2, //int weaponNum;
- HBUILD2_PRICE, //int price;
- ( 1 << S2 )|( 1 << S3 ), //int stages
+ WP_MASS_DRIVER, //int weaponNum;
+ MDRIVER_PRICE, //int price;
+ ( 1 << S1 )|( 1 << S2 )|( 1 << S3 ), //int stages
SLOT_WEAPON, //int slots;
- "ackit", //char *weaponName;
- "Adv Construction Kit",//char *weaponHumanName;
- 0, //int maxAmmo;
- 0, //int maxClips;
- qtrue, //int infiniteAmmo;
- qfalse, //int usesEnergy;
- HBUILD2_REPEAT, //int repeatRate1;
- HBUILD2_REPEAT, //int repeatRate2;
+ "mdriver", //char *weaponName;
+ "Mass Driver", //char *weaponHumanName;
+ MDRIVER_CLIPSIZE, //int maxAmmo;
+ MDRIVER_MAXCLIPS, //int maxClips;
+ qfalse, //int infiniteAmmo;
+ qtrue, //int usesEnergy;
+ MDRIVER_REPEAT, //int repeatRate1;
+ 0, //int repeatRate2;
0, //int repeatRate3;
- 0, //int reloadTime;
- 0.0f, //float knockbackScale;
- qtrue, //qboolean hasAltMode;
+ MDRIVER_RELOAD, //int reloadTime;
+ MDRIVER_K_SCALE, //float knockbackScale;
+ qfalse, //qboolean hasAltMode;
qfalse, //qboolean hasThirdMode;
- qfalse, //qboolean canZoom;
- 90.0f, //float zoomFov;
+ qtrue, //qboolean canZoom;
+ 20.0f, //float zoomFov;
qtrue, //qboolean purchasable;
- qfalse, //qboolean longRanged;
- HBUILD2_DELAY, //int buildDelay;
+ qtrue, //qboolean longRanged;
+ 0, //int buildDelay;
WUT_HUMANS //WUTeam_t team;
},
{
- WP_ABUILD, //int weaponNum;
- 0, //int price;
+ WP_CHAINGUN, //int weaponNum;
+ CHAINGUN_PRICE, //int price;
( 1 << S1 )|( 1 << S2 )|( 1 << S3 ), //int stages
SLOT_WEAPON, //int slots;
- "abuild", //char *weaponName;
- "Alien build weapon", //char *weaponHumanName;
- 0, //int maxAmmo;
+ "chaingun", //char *weaponName;
+ "Chaingun", //char *weaponHumanName;
+ CHAINGUN_BULLETS, //int maxAmmo;
0, //int maxClips;
- qtrue, //int infiniteAmmo;
+ qfalse, //int infiniteAmmo;
qfalse, //int usesEnergy;
- ABUILDER_BUILD_REPEAT,//int repeatRate1;
- ABUILDER_BUILD_REPEAT,//int repeatRate2;
+ CHAINGUN_REPEAT, //int repeatRate1;
+ 0, //int repeatRate2;
0, //int repeatRate3;
0, //int reloadTime;
- 0.0f, //float knockbackScale;
- qtrue, //qboolean hasAltMode;
+ CHAINGUN_K_SCALE, //float knockbackScale;
+ qfalse, //qboolean hasAltMode;
qfalse, //qboolean hasThirdMode;
qfalse, //qboolean canZoom;
90.0f, //float zoomFov;
qtrue, //qboolean purchasable;
- qfalse, //qboolean longRanged;
- ABUILDER_BASE_DELAY, //int buildDelay;
- WUT_ALIENS //WUTeam_t team;
- },
- {
- WP_ABUILD2, //int weaponNum;
- 0, //int price;
- ( 1 << S1 )|( 1 << S2 )|( 1 << S3 ), //int stages
- SLOT_WEAPON, //int slots;
- "abuildupg", //char *weaponName;
- "Alien build weapon2",//char *weaponHumanName;
- 0, //int maxAmmo;
- 0, //int maxClips;
- qtrue, //int infiniteAmmo;
- qfalse, //int usesEnergy;
- ABUILDER_BUILD_REPEAT,//int repeatRate1;
- ABUILDER_CLAW_REPEAT, //int repeatRate2;
- ABUILDER_BLOB_REPEAT, //int repeatRate3;
- 0, //int reloadTime;
- ABUILDER_CLAW_K_SCALE,//float knockbackScale;
- qtrue, //qboolean hasAltMode;
- qtrue, //qboolean hasThirdMode;
- qfalse, //qboolean canZoom;
- 90.0f, //float zoomFov;
- qtrue, //qboolean purchasable;
- qfalse, //qboolean longRanged;
- ABUILDER_ADV_DELAY, //int buildDelay;
- WUT_ALIENS //WUTeam_t team;
+ qtrue, //qboolean longRanged;
+ 0, //int buildDelay;
+ WUT_HUMANS //WUTeam_t team;
},
{
- WP_ALEVEL0, //int weaponNum;
- 0, //int price;
- ( 1 << S1 )|( 1 << S2 )|( 1 << S3 ), //int stages
+ WP_PULSE_RIFLE, //int weaponNum;
+ PRIFLE_PRICE, //int price;
+ ( 1 << S2 )|( 1 << S3 ), //int stages
SLOT_WEAPON, //int slots;
- "level0", //char *weaponName;
- "Bite", //char *weaponHumanName;
- 0, //int maxAmmo;
- 0, //int maxClips;
- qtrue, //int infiniteAmmo;
- qfalse, //int usesEnergy;
- LEVEL0_BITE_REPEAT, //int repeatRate1;
+ "prifle", //char *weaponName;
+ "Pulse Rifle", //char *weaponHumanName;
+ PRIFLE_CLIPS, //int maxAmmo;
+ PRIFLE_MAXCLIPS, //int maxClips;
+ qfalse, //int infiniteAmmo;
+ qtrue, //int usesEnergy;
+ PRIFLE_REPEAT, //int repeatRate1;
0, //int repeatRate2;
0, //int repeatRate3;
- 0, //int reloadTime;
- LEVEL0_BITE_K_SCALE, //float knockbackScale;
+ PRIFLE_RELOAD, //int reloadTime;
+ PRIFLE_K_SCALE, //float knockbackScale;
qfalse, //qboolean hasAltMode;
qfalse, //qboolean hasThirdMode;
qfalse, //qboolean canZoom;
90.0f, //float zoomFov;
- qfalse, //qboolean purchasable;
- qfalse, //qboolean longRanged;
+ qtrue, //qboolean purchasable;
+ qtrue, //qboolean longRanged;
0, //int buildDelay;
- WUT_ALIENS //WUTeam_t team;
+ WUT_HUMANS //WUTeam_t team;
},
{
- WP_ALEVEL1, //int weaponNum;
- 0, //int price;
- ( 1 << S1 )|( 1 << S2 )|( 1 << S3 ), //int stages
+ WP_FLAMER, //int weaponNum;
+ FLAMER_PRICE, //int price;
+ ( 1 << S2 )|( 1 << S3 ), //int stages
SLOT_WEAPON, //int slots;
- "level1", //char *weaponName;
- "Claws", //char *weaponHumanName;
- 0, //int maxAmmo;
+ "flamer", //char *weaponName;
+ "Flame Thrower", //char *weaponHumanName;
+ FLAMER_GAS, //int maxAmmo;
0, //int maxClips;
- qtrue, //int infiniteAmmo;
+ qfalse, //int infiniteAmmo;
qfalse, //int usesEnergy;
- LEVEL1_CLAW_REPEAT, //int repeatRate1;
+ FLAMER_REPEAT, //int repeatRate1;
0, //int repeatRate2;
0, //int repeatRate3;
0, //int reloadTime;
- LEVEL1_CLAW_K_SCALE, //float knockbackScale;
+ FLAMER_K_SCALE, //float knockbackScale;
qfalse, //qboolean hasAltMode;
qfalse, //qboolean hasThirdMode;
qfalse, //qboolean canZoom;
90.0f, //float zoomFov;
- qfalse, //qboolean purchasable;
- qfalse, //qboolean longRanged;
+ qtrue, //qboolean purchasable;
+ qtrue, //qboolean longRanged;
0, //int buildDelay;
- WUT_ALIENS //WUTeam_t team;
+ WUT_HUMANS //WUTeam_t team;
},
{
- WP_ALEVEL1_UPG, //int weaponNum;
- 0, //int price;
- ( 1 << S1 )|( 1 << S2 )|( 1 << S3 ), //int stages
+ WP_LUCIFER_CANNON, //int weaponNum;
+ LCANNON_PRICE, //int price;
+ ( 1 << S3 ), //int stages
SLOT_WEAPON, //int slots;
- "level1upg", //char *weaponName;
- "Claws Upgrade", //char *weaponHumanName;
- 0, //int maxAmmo;
+ "lcannon", //char *weaponName;
+ "Lucifer Cannon", //char *weaponHumanName;
+ LCANNON_AMMO, //int maxAmmo;
0, //int maxClips;
- qtrue, //int infiniteAmmo;
- qfalse, //int usesEnergy;
- LEVEL1_CLAW_U_REPEAT, //int repeatRate1;
- LEVEL1_PCLOUD_REPEAT, //int repeatRate2;
+ qfalse, //int infiniteAmmo;
+ qtrue, //int usesEnergy;
+ LCANNON_REPEAT, //int repeatRate1;
+ LCANNON_CHARGEREPEAT, //int repeatRate2;
0, //int repeatRate3;
- 0, //int reloadTime;
- LEVEL1_CLAW_U_K_SCALE,//float knockbackScale;
+ LCANNON_RELOAD, //int reloadTime;
+ LCANNON_K_SCALE, //float knockbackScale;
qtrue, //qboolean hasAltMode;
qfalse, //qboolean hasThirdMode;
qfalse, //qboolean canZoom;
90.0f, //float zoomFov;
- qfalse, //qboolean purchasable;
+ qtrue, //qboolean purchasable;
qtrue, //qboolean longRanged;
0, //int buildDelay;
- WUT_ALIENS //WUTeam_t team;
+ WUT_HUMANS //WUTeam_t team;
},
{
- WP_ALEVEL2, //int weaponNum;
- 0, //int price;
- ( 1 << S1 )|( 1 << S2 )|( 1 << S3 ), //int stages
- SLOT_WEAPON, //int slots;
- "level2", //char *weaponName;
- "Bite", //char *weaponHumanName;
- 0, //int maxAmmo;
+ WP_GRENADE, //int weaponNum;
+ GRENADE_PRICE, //int price;
+ ( 1 << S2 )|( 1 << S3 ), //int stages
+ SLOT_NONE, //int slots;
+ "grenade", //char *weaponName;
+ "Grenade", //char *weaponHumanName;
+ 1, //int maxAmmo;
0, //int maxClips;
- qtrue, //int infiniteAmmo;
+ qfalse, //int infiniteAmmo;
qfalse, //int usesEnergy;
- LEVEL2_CLAW_REPEAT, //int repeatRate1;
+ GRENADE_REPEAT, //int repeatRate1;
0, //int repeatRate2;
0, //int repeatRate3;
0, //int reloadTime;
- LEVEL2_CLAW_K_SCALE, //float knockbackScale;
+ GRENADE_K_SCALE, //float knockbackScale;
qfalse, //qboolean hasAltMode;
qfalse, //qboolean hasThirdMode;
qfalse, //qboolean canZoom;
@@ -3055,25 +2392,25 @@ weaponAttributes_t bg_weapons[ ] =
qfalse, //qboolean purchasable;
qfalse, //qboolean longRanged;
0, //int buildDelay;
- WUT_ALIENS //WUTeam_t team;
+ WUT_HUMANS //WUTeam_t team;
},
{
- WP_ALEVEL2_UPG, //int weaponNum;
+ WP_LOCKBLOB_LAUNCHER, //int weaponNum;
0, //int price;
( 1 << S1 )|( 1 << S2 )|( 1 << S3 ), //int stages
SLOT_WEAPON, //int slots;
- "level2upg", //char *weaponName;
- "Zap", //char *weaponHumanName;
+ "lockblob", //char *weaponName;
+ "Lock Blob", //char *weaponHumanName;
0, //int maxAmmo;
0, //int maxClips;
qtrue, //int infiniteAmmo;
qfalse, //int usesEnergy;
- LEVEL2_CLAW_U_REPEAT, //int repeatRate1;
- LEVEL2_AREAZAP_REPEAT,//int repeatRate2;
- 0, //int repeatRate3;
+ 500, //int repeatRate1;
+ 500, //int repeatRate2;
+ 500, //int repeatRate3;
0, //int reloadTime;
- LEVEL2_CLAW_U_K_SCALE,//float knockbackScale;
- qtrue, //qboolean hasAltMode;
+ LOCKBLOB_K_SCALE, //float knockbackScale;
+ qfalse, //qboolean hasAltMode;
qfalse, //qboolean hasThirdMode;
qfalse, //qboolean canZoom;
90.0f, //float zoomFov;
@@ -3083,21 +2420,21 @@ weaponAttributes_t bg_weapons[ ] =
WUT_ALIENS //WUTeam_t team;
},
{
- WP_ALEVEL3, //int weaponNum;
+ WP_HIVE, //int weaponNum;
0, //int price;
( 1 << S1 )|( 1 << S2 )|( 1 << S3 ), //int stages
SLOT_WEAPON, //int slots;
- "level3", //char *weaponName;
- "Pounce", //char *weaponHumanName;
+ "hive", //char *weaponName;
+ "Hive", //char *weaponHumanName;
0, //int maxAmmo;
0, //int maxClips;
qtrue, //int infiniteAmmo;
qfalse, //int usesEnergy;
- LEVEL3_CLAW_REPEAT, //int repeatRate1;
- 0, //int repeatRate2;
- 0, //int repeatRate3;
+ 500, //int repeatRate1;
+ 500, //int repeatRate2;
+ 500, //int repeatRate3;
0, //int reloadTime;
- LEVEL3_CLAW_K_SCALE, //float knockbackScale;
+ HIVE_K_SCALE, //float knockbackScale;
qfalse, //qboolean hasAltMode;
qfalse, //qboolean hasThirdMode;
qfalse, //qboolean canZoom;
@@ -3108,46 +2445,46 @@ weaponAttributes_t bg_weapons[ ] =
WUT_ALIENS //WUTeam_t team;
},
{
- WP_ALEVEL3_UPG, //int weaponNum;
+ WP_TESLAGEN, //int weaponNum;
0, //int price;
( 1 << S1 )|( 1 << S2 )|( 1 << S3 ), //int stages
SLOT_WEAPON, //int slots;
- "level3upg", //char *weaponName;
- "Pounce (upgrade)", //char *weaponHumanName;
- 3, //int maxAmmo;
+ "teslagen", //char *weaponName;
+ "Tesla Generator", //char *weaponHumanName;
+ 0, //int maxAmmo;
0, //int maxClips;
qtrue, //int infiniteAmmo;
- qfalse, //int usesEnergy;
- LEVEL3_CLAW_U_REPEAT, //int repeatRate1;
- 0, //int repeatRate2;
- LEVEL3_BOUNCEBALL_REPEAT,//int repeatRate3;
+ qtrue, //int usesEnergy;
+ 500, //int repeatRate1;
+ 500, //int repeatRate2;
+ 500, //int repeatRate3;
0, //int reloadTime;
- LEVEL3_CLAW_U_K_SCALE,//float knockbackScale;
+ TESLAGEN_K_SCALE, //float knockbackScale;
qfalse, //qboolean hasAltMode;
- qtrue, //qboolean hasThirdMode;
+ qfalse, //qboolean hasThirdMode;
qfalse, //qboolean canZoom;
90.0f, //float zoomFov;
qfalse, //qboolean purchasable;
- qtrue, //qboolean longRanged;
+ qfalse, //qboolean longRanged;
0, //int buildDelay;
- WUT_ALIENS //WUTeam_t team;
+ WUT_HUMANS //WUTeam_t team;
},
{
- WP_ALEVEL4, //int weaponNum;
+ WP_MGTURRET, //int weaponNum;
0, //int price;
( 1 << S1 )|( 1 << S2 )|( 1 << S3 ), //int stages
SLOT_WEAPON, //int slots;
- "level4", //char *weaponName;
- "Charge", //char *weaponHumanName;
+ "mgturret", //char *weaponName;
+ "Machinegun Turret", //char *weaponHumanName;
0, //int maxAmmo;
0, //int maxClips;
qtrue, //int infiniteAmmo;
qfalse, //int usesEnergy;
- LEVEL4_CLAW_REPEAT, //int repeatRate1;
+ 0, //int repeatRate1;
0, //int repeatRate2;
0, //int repeatRate3;
0, //int reloadTime;
- LEVEL4_CLAW_K_SCALE, //float knockbackScale;
+ MGTURRET_K_SCALE, //float knockbackScale;
qfalse, //qboolean hasAltMode;
qfalse, //qboolean hasThirdMode;
qfalse, //qboolean canZoom;
@@ -3155,111 +2492,117 @@ weaponAttributes_t bg_weapons[ ] =
qfalse, //qboolean purchasable;
qfalse, //qboolean longRanged;
0, //int buildDelay;
- WUT_ALIENS //WUTeam_t team;
+ WUT_HUMANS //WUTeam_t team;
},
{
- WP_LOCKBLOB_LAUNCHER, //int weaponNum;
+ WP_ABUILD, //int weaponNum;
0, //int price;
( 1 << S1 )|( 1 << S2 )|( 1 << S3 ), //int stages
SLOT_WEAPON, //int slots;
- "lockblob", //char *weaponName;
- "Lock Blob", //char *weaponHumanName;
+ "abuild", //char *weaponName;
+ "Alien build weapon", //char *weaponHumanName;
0, //int maxAmmo;
0, //int maxClips;
qtrue, //int infiniteAmmo;
qfalse, //int usesEnergy;
- 500, //int repeatRate1;
- 500, //int repeatRate2;
- 500, //int repeatRate3;
+ ABUILDER_BUILD_REPEAT,//int repeatRate1;
+ ABUILDER_BUILD_REPEAT,//int repeatRate2;
+ 0, //int repeatRate3;
0, //int reloadTime;
- LOCKBLOB_K_SCALE, //float knockbackScale;
- qfalse, //qboolean hasAltMode;
+ 0.0f, //float knockbackScale;
+ qtrue, //qboolean hasAltMode;
qfalse, //qboolean hasThirdMode;
qfalse, //qboolean canZoom;
90.0f, //float zoomFov;
- qfalse, //qboolean purchasable;
+ qtrue, //qboolean purchasable;
qfalse, //qboolean longRanged;
- 0, //int buildDelay;
+ ABUILDER_BASE_DELAY, //int buildDelay;
WUT_ALIENS //WUTeam_t team;
},
{
- WP_HIVE, //int weaponNum;
+ WP_ABUILD2, //int weaponNum;
0, //int price;
( 1 << S1 )|( 1 << S2 )|( 1 << S3 ), //int stages
SLOT_WEAPON, //int slots;
- "hive", //char *weaponName;
- "Hive", //char *weaponHumanName;
+ "abuildupg", //char *weaponName;
+ "Alien build weapon2",//char *weaponHumanName;
0, //int maxAmmo;
0, //int maxClips;
qtrue, //int infiniteAmmo;
qfalse, //int usesEnergy;
- 500, //int repeatRate1;
- 500, //int repeatRate2;
- 500, //int repeatRate3;
+ ABUILDER_BUILD_REPEAT,//int repeatRate1;
+ ABUILDER_CLAW_REPEAT, //int repeatRate2;
+ ABUILDER_BLOB_REPEAT, //int repeatRate3;
0, //int reloadTime;
- HIVE_K_SCALE, //float knockbackScale;
- qfalse, //qboolean hasAltMode;
- qfalse, //qboolean hasThirdMode;
+ ABUILDER_CLAW_K_SCALE,//float knockbackScale;
+ qtrue, //qboolean hasAltMode;
+ qtrue, //qboolean hasThirdMode;
qfalse, //qboolean canZoom;
90.0f, //float zoomFov;
- qfalse, //qboolean purchasable;
+ qtrue, //qboolean purchasable;
qfalse, //qboolean longRanged;
- 0, //int buildDelay;
+ ABUILDER_ADV_DELAY, //int buildDelay;
WUT_ALIENS //WUTeam_t team;
},
{
- WP_MGTURRET, //int weaponNum;
- 0, //int price;
+ WP_HBUILD, //int weaponNum;
+ HBUILD_PRICE, //int price;
( 1 << S1 )|( 1 << S2 )|( 1 << S3 ), //int stages
SLOT_WEAPON, //int slots;
- "mgturret", //char *weaponName;
- "Machinegun Turret", //char *weaponHumanName;
+ "ckit", //char *weaponName;
+ "Construction Kit", //char *weaponHumanName;
0, //int maxAmmo;
0, //int maxClips;
qtrue, //int infiniteAmmo;
qfalse, //int usesEnergy;
- 0, //int repeatRate1;
- 0, //int repeatRate2;
+ HBUILD_REPEAT, //int repeatRate1;
+ HBUILD_REPEAT, //int repeatRate2;
0, //int repeatRate3;
0, //int reloadTime;
- MGTURRET_K_SCALE, //float knockbackScale;
- qfalse, //qboolean hasAltMode;
+ 0.0f, //float knockbackScale;
+ qtrue, //qboolean hasAltMode;
qfalse, //qboolean hasThirdMode;
qfalse, //qboolean canZoom;
90.0f, //float zoomFov;
- qfalse, //qboolean purchasable;
+ qtrue, //qboolean purchasable;
qfalse, //qboolean longRanged;
- 0, //int buildDelay;
+ HBUILD_DELAY, //int buildDelay;
WUT_HUMANS //WUTeam_t team;
},
{
- WP_TESLAGEN, //int weaponNum;
- 0, //int price;
- ( 1 << S1 )|( 1 << S2 )|( 1 << S3 ), //int stages
+ WP_HBUILD2, //int weaponNum;
+ HBUILD2_PRICE, //int price;
+ ( 1 << S2 )|( 1 << S3 ), //int stages
SLOT_WEAPON, //int slots;
- "teslagen", //char *weaponName;
- "Tesla Generator", //char *weaponHumanName;
+ "ackit", //char *weaponName;
+ "Adv Construction Kit",//char *weaponHumanName;
0, //int maxAmmo;
0, //int maxClips;
qtrue, //int infiniteAmmo;
- qtrue, //int usesEnergy;
- 500, //int repeatRate1;
- 500, //int repeatRate2;
- 500, //int repeatRate3;
+ qfalse, //int usesEnergy;
+ HBUILD2_REPEAT, //int repeatRate1;
+ HBUILD2_REPEAT, //int repeatRate2;
+ 0, //int repeatRate3;
0, //int reloadTime;
- TESLAGEN_K_SCALE, //float knockbackScale;
- qfalse, //qboolean hasAltMode;
+ 0.0f, //float knockbackScale;
+ qtrue, //qboolean hasAltMode;
qfalse, //qboolean hasThirdMode;
qfalse, //qboolean canZoom;
90.0f, //float zoomFov;
- qfalse, //qboolean purchasable;
+ qtrue, //qboolean purchasable;
qfalse, //qboolean longRanged;
- 0, //int buildDelay;
+ HBUILD2_DELAY, //int buildDelay;
WUT_HUMANS //WUTeam_t team;
}
};
-int bg_numWeapons = sizeof( bg_weapons ) / sizeof( bg_weapons[ 0 ] );
+static inline weaponAttributes_t *FindWeapon( int index )
+{
+ if( index < WP_NONE || index >= WP_NUM_WEAPONS )
+ Com_Error( ERR_FATAL, "Invalid index in FindWeapon: %i\n", index);
+
+ return bg_weapons + index;
+}
/*
==============
@@ -3268,17 +2611,7 @@ BG_FindPriceForWeapon
*/
int BG_FindPriceForWeapon( int weapon )
{
- int i;
-
- for( i = 0; i < bg_numWeapons; i++ )
- {
- if( bg_weapons[ i ].weaponNum == weapon )
- {
- return bg_weapons[ i ].price;
- }
- }
-
- return 100;
+ return FindWeapon( weapon )->price;
}
/*
@@ -3288,20 +2621,7 @@ BG_FindStagesForWeapon
*/
qboolean BG_FindStagesForWeapon( int weapon, stage_t stage )
{
- int i;
-
- for( i = 0; i < bg_numWeapons; i++ )
- {
- if( bg_weapons[ i ].weaponNum == weapon )
- {
- if( bg_weapons[ i ].stages & ( 1 << stage ) )
- return qtrue;
- else
- return qfalse;
- }
- }
-
- return qfalse;
+ return !!( FindWeapon( weapon )->stages & ( 1 << stage ) );
}
/*
@@ -3311,17 +2631,7 @@ BG_FindSlotsForWeapon
*/
int BG_FindSlotsForWeapon( int weapon )
{
- int i;
-
- for( i = 0; i < bg_numWeapons; i++ )
- {
- if( bg_weapons[ i ].weaponNum == weapon )
- {
- return bg_weapons[ i ].slots;
- }
- }
-
- return SLOT_WEAPON;
+ return FindWeapon( weapon )->slots;
}
/*
@@ -3331,16 +2641,7 @@ BG_FindNameForWeapon
*/
char *BG_FindNameForWeapon( int weapon )
{
- int i;
-
- for( i = 0; i < bg_numWeapons; i++ )
- {
- if( bg_weapons[ i ].weaponNum == weapon )
- return bg_weapons[ i ].weaponName;
- }
-
- //wimp out
- return 0;
+ return FindWeapon( weapon )->weaponName;
}
/*
@@ -3352,7 +2653,7 @@ int BG_FindWeaponNumForName( char *name )
{
int i;
- for( i = 0; i < bg_numWeapons; i++ )
+ for( i = 0; i < WP_NUM_WEAPONS; i++ )
{
if( !Q_stricmp( bg_weapons[ i ].weaponName, name ) )
return bg_weapons[ i ].weaponNum;
@@ -3369,16 +2670,7 @@ BG_FindHumanNameForWeapon
*/
char *BG_FindHumanNameForWeapon( int weapon )
{
- int i;
-
- for( i = 0; i < bg_numWeapons; i++ )
- {
- if( bg_weapons[ i ].weaponNum == weapon )
- return bg_weapons[ i ].weaponHumanName;
- }
-
- //wimp out
- return 0;
+ return FindWeapon( weapon )->weaponHumanName;
}
/*
@@ -3388,26 +2680,13 @@ BG_FindAmmoForWeapon
*/
void BG_FindAmmoForWeapon( int weapon, int *maxAmmo, int *maxClips )
{
- int i;
+ weaponAttributes_t *attr = FindWeapon( weapon );
- for( i = 0; i < bg_numWeapons; i++ )
- {
- if( bg_weapons[ i ].weaponNum == weapon )
- {
- if( maxAmmo != NULL )
- *maxAmmo = bg_weapons[ i ].maxAmmo;
- if( maxClips != NULL )
- *maxClips = bg_weapons[ i ].maxClips;
+ if( maxAmmo )
+ *maxAmmo = attr->maxAmmo;
- //no need to keep going
- return;
- }
- }
-
- if( maxAmmo != NULL )
- *maxAmmo = 0;
- if( maxClips != NULL )
- *maxClips = 0;
+ if( maxClips )
+ *maxClips = attr->maxClips;
}
/*
@@ -3417,17 +2696,7 @@ BG_FindInfinteAmmoForWeapon
*/
qboolean BG_FindInfinteAmmoForWeapon( int weapon )
{
- int i;
-
- for( i = 0; i < bg_numWeapons; i++ )
- {
- if( bg_weapons[ i ].weaponNum == weapon )
- {
- return bg_weapons[ i ].infiniteAmmo;
- }
- }
-
- return qfalse;
+ return FindWeapon( weapon )->infiniteAmmo;
}
/*
@@ -3437,17 +2706,7 @@ BG_FindUsesEnergyForWeapon
*/
qboolean BG_FindUsesEnergyForWeapon( int weapon )
{
- int i;
-
- for( i = 0; i < bg_numWeapons; i++ )
- {
- if( bg_weapons[ i ].weaponNum == weapon )
- {
- return bg_weapons[ i ].usesEnergy;
- }
- }
-
- return qfalse;
+ return FindWeapon( weapon )->usesEnergy;
}
/*
@@ -3457,15 +2716,7 @@ BG_FindRepeatRate1ForWeapon
*/
int BG_FindRepeatRate1ForWeapon( int weapon )
{
- int i;
-
- for( i = 0; i < bg_numWeapons; i++ )
- {
- if( bg_weapons[ i ].weaponNum == weapon )
- return bg_weapons[ i ].repeatRate1;
- }
-
- return 1000;
+ return FindWeapon( weapon )->repeatRate1;
}
/*
@@ -3475,15 +2726,7 @@ 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;
+ return FindWeapon( weapon )->repeatRate2;
}
/*
@@ -3493,15 +2736,7 @@ 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;
+ return FindWeapon( weapon )->repeatRate3;
}
/*
@@ -3511,17 +2746,7 @@ BG_FindReloadTimeForWeapon
*/
int BG_FindReloadTimeForWeapon( int weapon )
{
- int i;
-
- for( i = 0; i < bg_numWeapons; i++ )
- {
- if( bg_weapons[ i ].weaponNum == weapon )
- {
- return bg_weapons[ i ].reloadTime;
- }
- }
-
- return 1000;
+ return FindWeapon( weapon )->reloadTime;
}
/*
@@ -3531,17 +2756,7 @@ BG_FindKnockbackScaleForWeapon
*/
float BG_FindKnockbackScaleForWeapon( int weapon )
{
- int i;
-
- for( i = 0; i < bg_numWeapons; i++ )
- {
- if( bg_weapons[ i ].weaponNum == weapon )
- {
- return bg_weapons[ i ].knockbackScale;
- }
- }
-
- return 1.0f;
+ return FindWeapon( weapon )->knockbackScale;
}
/*
@@ -3551,17 +2766,7 @@ BG_WeaponHasAltMode
*/
qboolean BG_WeaponHasAltMode( int weapon )
{
- int i;
-
- for( i = 0; i < bg_numWeapons; i++ )
- {
- if( bg_weapons[ i ].weaponNum == weapon )
- {
- return bg_weapons[ i ].hasAltMode;
- }
- }
-
- return qfalse;
+ return FindWeapon( weapon )->hasAltMode;
}
/*
@@ -3571,17 +2776,7 @@ BG_WeaponHasThirdMode
*/
qboolean BG_WeaponHasThirdMode( int weapon )
{
- int i;
-
- for( i = 0; i < bg_numWeapons; i++ )
- {
- if( bg_weapons[ i ].weaponNum == weapon )
- {
- return bg_weapons[ i ].hasThirdMode;
- }
- }
-
- return qfalse;
+ return FindWeapon( weapon )->hasThirdMode;
}
/*
@@ -3591,17 +2786,7 @@ BG_WeaponCanZoom
*/
qboolean BG_WeaponCanZoom( int weapon )
{
- int i;
-
- for( i = 0; i < bg_numWeapons; i++ )
- {
- if( bg_weapons[ i ].weaponNum == weapon )
- {
- return bg_weapons[ i ].canZoom;
- }
- }
-
- return qfalse;
+ return FindWeapon( weapon )->canZoom;
}
/*
@@ -3611,17 +2796,7 @@ BG_FindZoomFovForWeapon
*/
float BG_FindZoomFovForWeapon( int weapon )
{
- int i;
-
- for( i = 0; i < bg_numWeapons; i++ )
- {
- if( bg_weapons[ i ].weaponNum == weapon )
- {
- return bg_weapons[ i ].zoomFov;
- }
- }
-
- return qfalse;
+ return FindWeapon( weapon )->zoomFov;
}
/*
@@ -3631,17 +2806,7 @@ BG_FindPurchasableForWeapon
*/
qboolean BG_FindPurchasableForWeapon( int weapon )
{
- int i;
-
- for( i = 0; i < bg_numWeapons; i++ )
- {
- if( bg_weapons[ i ].weaponNum == weapon )
- {
- return bg_weapons[ i ].purchasable;
- }
- }
-
- return qfalse;
+ return FindWeapon( weapon )->purchasable;
}
/*
@@ -3651,17 +2816,7 @@ BG_FindLongRangeForWeapon
*/
qboolean BG_FindLongRangedForWeapon( int weapon )
{
- int i;
-
- for( i = 0; i < bg_numWeapons; i++ )
- {
- if( bg_weapons[ i ].weaponNum == weapon )
- {
- return bg_weapons[ i ].longRanged;
- }
- }
-
- return qfalse;
+ return FindWeapon( weapon )->longRanged;
}
/*
@@ -3671,17 +2826,7 @@ BG_FindBuildDelayForWeapon
*/
int BG_FindBuildDelayForWeapon( int weapon )
{
- int i;
-
- for( i = 0; i < bg_numWeapons; i++ )
- {
- if( bg_weapons[ i ].weaponNum == weapon )
- {
- return bg_weapons[ i ].buildDelay;
- }
- }
-
- return 0;
+ return FindWeapon( weapon )->buildDelay;
}
/*
@@ -3691,17 +2836,7 @@ BG_FindTeamForWeapon
*/
WUTeam_t BG_FindTeamForWeapon( int weapon )
{
- int i;
-
- for( i = 0; i < bg_numWeapons; i++ )
- {
- if( bg_weapons[ i ].weaponNum == weapon )
- {
- return bg_weapons[ i ].team;
- }
- }
-
- return WUT_NONE;
+ return FindWeapon( weapon )->team;
}
////////////////////////////////////////////////////////////////////////////////
@@ -3709,6 +2844,9 @@ WUTeam_t BG_FindTeamForWeapon( int weapon )
upgradeAttributes_t bg_upgrades[ ] =
{
{
+ UP_NONE,
+ },
+ {
UP_LIGHTARMOUR, //int upgradeNum;
LIGHTARMOUR_PRICE, //int price;
( 1 << S1 )|( 1 << S2 )|( 1 << S3 ), //int stages
@@ -3806,7 +2944,13 @@ upgradeAttributes_t bg_upgrades[ ] =
}
};
-int bg_numUpgrades = sizeof( bg_upgrades ) / sizeof( bg_upgrades[ 0 ] );
+static inline upgradeAttributes_t *FindUpgrade( int index )
+{
+ if( index < UP_NONE || index >= UP_NUM_UPGRADES )
+ Com_Error( ERR_FATAL, "Invalid index in FindUpgrade: %i\n", index);
+
+ return bg_upgrades + index;
+}
/*
==============
@@ -3815,17 +2959,7 @@ BG_FindPriceForUpgrade
*/
int BG_FindPriceForUpgrade( int upgrade )
{
- int i;
-
- for( i = 0; i < bg_numUpgrades; i++ )
- {
- if( bg_upgrades[ i ].upgradeNum == upgrade )
- {
- return bg_upgrades[ i ].price;
- }
- }
-
- return 100;
+ return FindUpgrade( upgrade )->price;
}
/*
@@ -3835,20 +2969,7 @@ BG_FindStagesForUpgrade
*/
qboolean BG_FindStagesForUpgrade( int upgrade, stage_t stage )
{
- int i;
-
- for( i = 0; i < bg_numUpgrades; i++ )
- {
- if( bg_upgrades[ i ].upgradeNum == upgrade )
- {
- if( bg_upgrades[ i ].stages & ( 1 << stage ) )
- return qtrue;
- else
- return qfalse;
- }
- }
-
- return qfalse;
+ return !!( FindUpgrade( upgrade )->stages & ( 1 << stage ) );
}
/*
@@ -3858,17 +2979,7 @@ BG_FindSlotsForUpgrade
*/
int BG_FindSlotsForUpgrade( int upgrade )
{
- int i;
-
- for( i = 0; i < bg_numUpgrades; i++ )
- {
- if( bg_upgrades[ i ].upgradeNum == upgrade )
- {
- return bg_upgrades[ i ].slots;
- }
- }
-
- return SLOT_NONE;
+ return FindUpgrade( upgrade )->slots;
}
/*
@@ -3878,16 +2989,7 @@ BG_FindNameForUpgrade
*/
char *BG_FindNameForUpgrade( int upgrade )
{
- int i;
-
- for( i = 0; i < bg_numUpgrades; i++ )
- {
- if( bg_upgrades[ i ].upgradeNum == upgrade )
- return bg_upgrades[ i ].upgradeName;
- }
-
- //wimp out
- return 0;
+ return FindUpgrade( upgrade )->upgradeName;
}
/*
@@ -3899,7 +3001,7 @@ int BG_FindUpgradeNumForName( char *name )
{
int i;
- for( i = 0; i < bg_numUpgrades; i++ )
+ for( i = 0; i < UP_NUM_UPGRADES; i++ )
{
if( !Q_stricmp( bg_upgrades[ i ].upgradeName, name ) )
return bg_upgrades[ i ].upgradeNum;
@@ -3916,16 +3018,7 @@ BG_FindHumanNameForUpgrade
*/
char *BG_FindHumanNameForUpgrade( int upgrade )
{
- int i;
-
- for( i = 0; i < bg_numUpgrades; i++ )
- {
- if( bg_upgrades[ i ].upgradeNum == upgrade )
- return bg_upgrades[ i ].upgradeHumanName;
- }
-
- //wimp out
- return 0;
+ return FindUpgrade( upgrade )->upgradeHumanName;
}
/*
@@ -3935,16 +3028,7 @@ BG_FindIconForUpgrade
*/
char *BG_FindIconForUpgrade( int upgrade )
{
- int i;
-
- for( i = 0; i < bg_numUpgrades; i++ )
- {
- if( bg_upgrades[ i ].upgradeNum == upgrade )
- return bg_upgrades[ i ].icon;
- }
-
- //wimp out
- return 0;
+ return FindUpgrade( upgrade )->icon;
}
/*
@@ -3954,15 +3038,7 @@ BG_FindPurchasableForUpgrade
*/
qboolean BG_FindPurchasableForUpgrade( int upgrade )
{
- int i;
-
- for( i = 0; i < bg_numUpgrades; i++ )
- {
- if( bg_upgrades[ i ].upgradeNum == upgrade )
- return bg_upgrades[ i ].purchasable;
- }
-
- return qfalse;
+ return FindUpgrade( upgrade )->purchasable;
}
/*
@@ -3972,15 +3048,7 @@ BG_FindUsableForUpgrade
*/
qboolean BG_FindUsableForUpgrade( int upgrade )
{
- int i;
-
- for( i = 0; i < bg_numUpgrades; i++ )
- {
- if( bg_upgrades[ i ].upgradeNum == upgrade )
- return bg_upgrades[ i ].usable;
- }
-
- return qfalse;
+ return FindUpgrade( upgrade )->usable;
}
/*
@@ -3990,17 +3058,7 @@ BG_FindTeamForUpgrade
*/
WUTeam_t BG_FindTeamForUpgrade( int upgrade )
{
- int i;
-
- for( i = 0; i < bg_numUpgrades; i++ )
- {
- if( bg_upgrades[ i ].upgradeNum == upgrade )
- {
- return bg_upgrades[ i ].team;
- }
- }
-
- return WUT_NONE;
+ return FindUpgrade( upgrade )->team;
}
////////////////////////////////////////////////////////////////////////////////
@@ -5263,7 +4321,7 @@ void BG_MOD_update( void )
if( updated ) return;
updated = qtrue;
- for( i = 0; i < bg_numBuildables; i++ )
+ for( i = 0; i < BA_NUM_BUILDABLES; i++ )
{
if( modEntry[ MOD_BG_BUILDABLE_HEALTH ] )
{
@@ -5285,7 +4343,7 @@ void BG_MOD_update( void )
}
}
- for( i = 0; i < bg_numPclasses; i++ )
+ for( i = 0; i < PCL_NUM_CLASSES; i++ )
{
if( bg_classList[ i ].classNum == PCL_HUMAN ||
bg_classList[ i ].classNum == PCL_HUMAN_BSUIT )
@@ -5304,7 +4362,7 @@ void BG_MOD_update( void )
}
}
- for( i = 0; i < bg_numWeapons; i++ )
+ for( i = 0; i < WP_NUM_WEAPONS; i++ )
{
if( modEntry[ MOD_BG_WEAPON_AMMO ] &&
bg_weapons[ i ].weaponNum != WP_ALEVEL3_UPG )