From df45dd254c4b26f3e0fdb140e370e532f626f8f1 Mon Sep 17 00:00:00 2001 From: Mikko Tiusanen Date: Fri, 1 Aug 2014 02:22:13 +0300 Subject: Added support for 5 stages instead of the traditional 3. --- src/game/bg_misc.c | 258 ++++++++++++++++++++++++++------------------------- src/game/bg_public.h | 4 +- src/game/g_local.h | 8 ++ src/game/g_main.c | 74 +++++++++++++-- src/game/g_weapon.c | 10 +- src/game/tremulous.h | 14 ++- 6 files changed, 222 insertions(+), 146 deletions(-) (limited to 'src/game') diff --git a/src/game/bg_misc.c b/src/game/bg_misc.c index 9daed0b..71f5507 100644 --- a/src/game/bg_misc.c +++ b/src/game/bg_misc.c @@ -37,6 +37,12 @@ void trap_FS_FCloseFile( fileHandle_t f ); void trap_FS_Seek( fileHandle_t f, long offset, fsOrigin_t origin ); // fsOrigin_t int trap_FS_GetFileList( const char *path, const char *extension, char *listbuf, int bufsize ); +#define STAGE_GE_5 ((1 << S5)) +#define STAGE_GE_4 ((1 << S4) | STAGE_GE_5) +#define STAGE_GE_3 ((1 << S3) | STAGE_GE_4) +#define STAGE_GE_2 ((1 << S2) | STAGE_GE_3) +#define STAGE_GE_1 ((1 << S1) | STAGE_GE_2) + static const buildableAttributes_t bg_buildableList[ ] = { //ALIEN BUILDINGS @@ -51,7 +57,7 @@ static const buildableAttributes_t bg_buildableList[ ] = TR_GRAVITY, //trType_t traj; 0.0, //float bounce; ASPAWN_BP, //int buildPoints; - ( 1 << S1 )|( 1 << S2 )|( 1 << S3 ), //int stages + STAGE_GE_1, //int stages ASPAWN_HEALTH, //int health; ASPAWN_REGEN, //int regenRate; ASPAWN_SPLASHDAMAGE, //int splashDamage; @@ -86,7 +92,7 @@ static const buildableAttributes_t bg_buildableList[ ] = TR_GRAVITY, //trType_t traj; 0.0, //float bounce; OVERMIND_BP, //int buildPoints; - ( 1 << S1 )|( 1 << S2 )|( 1 << S3 ), //int stages + STAGE_GE_1, //int stages OVERMIND_HEALTH, //int health; OVERMIND_REGEN, //int regenRate; OVERMIND_SPLASHDAMAGE, //int splashDamage; @@ -121,7 +127,7 @@ static const buildableAttributes_t bg_buildableList[ ] = TR_GRAVITY, //trType_t traj; 0.0, //float bounce; BARRICADE_BP, //int buildPoints; - ( 1 << S1 )|( 1 << S2 )|( 1 << S3 ), //int stages + STAGE_GE_1, //int stages BARRICADE_HEALTH, //int health; BARRICADE_REGEN, //int regenRate; BARRICADE_SPLASHDAMAGE,//int splashDamage; @@ -156,7 +162,7 @@ static const buildableAttributes_t bg_buildableList[ ] = TR_GRAVITY, //trType_t traj; 0.0, //float bounce; ACIDTUBE_BP, //int buildPoints; - ( 1 << S1 )|( 1 << S2 )|( 1 << S3 ), //int stages + STAGE_GE_1, //int stages ACIDTUBE_HEALTH, //int health; ACIDTUBE_REGEN, //int regenRate; ACIDTUBE_SPLASHDAMAGE, //int splashDamage; @@ -191,7 +197,7 @@ static const buildableAttributes_t bg_buildableList[ ] = TR_GRAVITY, //trType_t traj; 0.0, //float bounce; TRAPPER_BP, //int buildPoints; - ( 1 << S2 )|( 1 << S3 ), //int stages + STAGE_GE_2, //int stages TRAPPER_HEALTH, //int health; TRAPPER_REGEN, //int regenRate; TRAPPER_SPLASHDAMAGE, //int splashDamage; @@ -227,7 +233,7 @@ static const buildableAttributes_t bg_buildableList[ ] = TR_GRAVITY, //trType_t traj; 0.0, //float bounce; BOOSTER_BP, //int buildPoints; - ( 1 << S2 )|( 1 << S3 ), //int stages + STAGE_GE_3, //int stages BOOSTER_HEALTH, //int health; BOOSTER_REGEN, //int regenRate; BOOSTER_SPLASHDAMAGE, //int splashDamage; @@ -261,7 +267,7 @@ static const buildableAttributes_t bg_buildableList[ ] = TR_GRAVITY, //trType_t traj; 0.0, //float bounce; HIVE_BP, //int buildPoints; - ( 1 << S3 ), //int stages + STAGE_GE_4, //int stages HIVE_HEALTH, //int health; HIVE_REGEN, //int regenRate; HIVE_SPLASHDAMAGE, //int splashDamage; @@ -295,7 +301,7 @@ static const buildableAttributes_t bg_buildableList[ ] = TR_GRAVITY, //trType_t traj; 0, //float bounce; PANZER_SMALL_BP, //int buildPoints; - ( 1 << S1 )|( 1 << S2 )|( 1 << S3 ), //int stages + STAGE_GE_1, //int stages PANZER_SMALL_HEALTH, //int health; PANZER_SMALL_REGEN, //int regenRate; PANZER_SMALL_SPLASHDAMAGE, //int splashDamage; @@ -329,7 +335,7 @@ static const buildableAttributes_t bg_buildableList[ ] = TR_GRAVITY, //trType_t traj; 0, //float bounce; PANZER_MEDIUM_BP, //int buildPoints; - ( 1 << S2 )|( 1 << S3 ), //int stages + STAGE_GE_3, //int stages PANZER_MEDIUM_HEALTH, //int health; PANZER_MEDIUM_REGEN, //int regenRate; PANZER_MEDIUM_SPLASHDAMAGE, //int splashDamage; @@ -363,7 +369,7 @@ static const buildableAttributes_t bg_buildableList[ ] = TR_GRAVITY, //trType_t traj; 0, //float bounce; PANZER_LARGE_BP, //int buildPoints; - ( 1 << S3 ), //int stages + STAGE_GE_4, //int stages PANZER_LARGE_HEALTH, //int health; PANZER_LARGE_REGEN, //int regenRate; PANZER_LARGE_SPLASHDAMAGE, //int splashDamage; @@ -397,7 +403,7 @@ static const buildableAttributes_t bg_buildableList[ ] = TR_GRAVITY, //trType_t traj; 0, //float bounce; TENDON_SMALL_BP, //int buildPoints; - ( 1 << S1 )|( 1 << S2 )|( 1 << S3 ), //int stages + STAGE_GE_1, //int stages TENDON_SMALL_HEALTH, //int health; TENDON_SMALL_REGEN, //int regenRate; TENDON_SMALL_SPLASHDAMAGE, //int splashDamage; @@ -432,7 +438,7 @@ static const buildableAttributes_t bg_buildableList[ ] = TR_GRAVITY, //trType_t traj; 0.0, //float bounce; TENDON_MEDIUM_BP, //int buildPoints; - ( 1 << S2 )|( 1 << S3 ), //int stages + STAGE_GE_2, //int stages TENDON_MEDIUM_HEALTH, //int health; TENDON_MEDIUM_REGEN, //int regenRate; TENDON_MEDIUM_SPLASHDAMAGE, //int splashDamage; @@ -467,7 +473,7 @@ static const buildableAttributes_t bg_buildableList[ ] = TR_GRAVITY, //trType_t traj; 0, //float bounce; TENDON_LARGE_BP, //int buildPoints; - ( 1 << S3 ), //int stages + STAGE_GE_3, //int stages TENDON_LARGE_HEALTH, //int health; TENDON_LARGE_REGEN, //int regenRate; TENDON_LARGE_SPLASHDAMAGE, //int splashDamage; @@ -503,7 +509,7 @@ static const buildableAttributes_t bg_buildableList[ ] = TR_GRAVITY, //trType_t traj; 0, //float bounce; NET_BP, //int buildPoints; - ( 1 << S2 )|( 1 << S3 ), //int stages + STAGE_GE_3, //int stages NET_HEALTH, //int health; NET_REGEN, //int regenRate; NET_SPLASHDAMAGE, //int splashDamage; @@ -539,7 +545,7 @@ static const buildableAttributes_t bg_buildableList[ ] = TR_GRAVITY, //trType_t traj; 0, //float bounce; NET_SPIKE_BP, //int buildPoints; - ( 1 << S1 )|( 1 << S2 )|( 1 << S3 ), //int stages + STAGE_GE_1, //int stages NET_SPIKE_HEALTH, //int health; NET_SPIKE_REGEN, //int regenRate; NET_SPIKE_SPLASHDAMAGE, //int splashDamage; @@ -576,7 +582,7 @@ static const buildableAttributes_t bg_buildableList[ ] = TR_GRAVITY, //trType_t traj; 0, //float bounce; INFESTATION_SLIME_BP, //int buildPoints; - ( 1 << S2 )|( 1 << S3 ), //int stages + STAGE_GE_5, //int stages INFESTATION_SLIME_HEALTH, //int health; INFESTATION_SLIME_REGEN, //int regenRate; INFESTATION_SLIME_SPLASHDAMAGE, //int splashDamage; @@ -611,7 +617,7 @@ static const buildableAttributes_t bg_buildableList[ ] = TR_GRAVITY, //trType_t traj; 0, //float bounce; INFESTATION_THICKET_BP, //int buildPoints; - ( 1 << S1 )|( 1 << S2 )|( 1 << S3 ), //int stages + STAGE_GE_1, //int stages INFESTATION_THICKET_HEALTH, //int health; INFESTATION_THICKET_REGEN, //int regenRate; INFESTATION_THICKET_SPLASHDAMAGE, //int splashDamage; @@ -647,7 +653,7 @@ static const buildableAttributes_t bg_buildableList[ ] = TR_GRAVITY, //trType_t traj; 0.0, //float bounce; INFESTATION_BLISTER_BP, //int buildPoints; - ( 1 << S2 )|( 1 << S3 ), //int stages + STAGE_GE_2, //int stages INFESTATION_BLISTER_HEALTH, //int health; INFESTATION_BLISTER_REGEN, //int regenRate; INFESTATION_BLISTER_SPLASHDAMAGE, //int splashDamage; @@ -684,7 +690,7 @@ static const buildableAttributes_t bg_buildableList[ ] = TR_GRAVITY, //trType_t traj; 0.0, //float bounce; REFLECTOR_BP, //int buildPoints; - ( 1 << S2 )|( 1 << S3 ), //int stages + STAGE_GE_3, //int stages REFLECTOR_HEALTH, //int health; REFLECTOR_REGEN, //int regenRate; REFLECTOR_SPLASHDAMAGE, //int splashDamage; @@ -717,8 +723,8 @@ static const buildableAttributes_t bg_buildableList[ ] = "team_alien_muscle", //char *entityName; TR_GRAVITY, //trType_t traj; 0, //float bounce; - MUSCLE_BP, //int buildPoints; - ( 1 << S2 )|( 1 << S3 ), //int stages + MUSCLE_BP, //int buildPoints; + STAGE_GE_2, //int stages MUSCLE_HEALTH, //int health; MUSCLE_REGEN, //int regenRate; MUSCLE_SPLASHDAMAGE, //int splashDamage; @@ -753,7 +759,7 @@ static const buildableAttributes_t bg_buildableList[ ] = TR_GRAVITY, //trType_t traj; 0.0, //float bounce; SPITEFUL_ABCESS_BP, //int buildPoints; - ( 1 << S2 )|( 1 << S3 ), //int stages + STAGE_GE_2, //int stages SPITEFUL_ABCESS_HEALTH, //int health; SPITEFUL_ABCESS_REGEN, //int regenRate; SPITEFUL_ABCESS_SPLASHDAMAGE, //int splashDamage; @@ -789,7 +795,7 @@ static const buildableAttributes_t bg_buildableList[ ] = TR_GRAVITY, //trType_t traj; 0, //float bounce; COCOON_BP, //int buildPoints; - ( 1 << S3 ), //int stages + STAGE_GE_4, //int stages COCOON_HEALTH, //int health; COCOON_REGEN, //int regenRate; COCOON_SPLASHDAMAGE, //int splashDamage; @@ -823,7 +829,7 @@ static const buildableAttributes_t bg_buildableList[ ] = TR_GRAVITY, //trType_t traj; 0.0, //float bounce; ORGANIC_BULB_BP, //int buildPoints; - ( 1 << S3 ), //int stages + STAGE_GE_3, //int stages ORGANIC_BULB_HEALTH, //int health; ORGANIC_BULB_REGEN, //int regenRate; ORGANIC_BULB_SPLASHDAMAGE, //int splashDamage; @@ -858,7 +864,7 @@ static const buildableAttributes_t bg_buildableList[ ] = TR_GRAVITY, //trType_t traj; 0.0, //float bounce; POD_BP, //int buildPoints; - ( 1 << S3 ), //int stages + STAGE_GE_4, //int stages POD_HEALTH, //int health; POD_REGEN, //int regenRate; POD_SPLASHDAMAGE, //int splashDamage; @@ -892,7 +898,7 @@ static const buildableAttributes_t bg_buildableList[ ] = TR_GRAVITY, //trType_t traj; 0.0, //float bounce; POD_STUMP_BP, //int buildPoints; - ( 1 << S3 ), //int stages + STAGE_GE_4, //int stages POD_STUMP_HEALTH, //int health; POD_STUMP_REGEN, //int regenRate; POD_STUMP_SPLASHDAMAGE, //int splashDamage; @@ -925,7 +931,7 @@ static const buildableAttributes_t bg_buildableList[ ] = TR_GRAVITY, //trType_t traj; 0.0, //float bounce; CREEPCOLONY_BP, //int buildPoints; - ( 1 << S2 )|( 1 << S3 ), //int stages + STAGE_GE_3, //int stages CREEPCOLONY_HEALTH, //int health; CREEPCOLONY_REGEN, //int regenRate; CREEPCOLONY_SPLASHDAMAGE, //int splashDamage; @@ -962,13 +968,13 @@ static const buildableAttributes_t bg_buildableList[ ] = TR_GRAVITY, //trType_t traj; 0.0, //float bounce; HSPAWN_BP, //int buildPoints; - ( 1 << S1 )|( 1 << S2 )|( 1 << S3 ), //int stages + STAGE_GE_1, //int stages HSPAWN_HEALTH, //int health; 0, //int regenRate; HSPAWN_SPLASHDAMAGE, //int splashDamage; HSPAWN_SPLASHRADIUS, //int splashRadius; MOD_HSPAWN, //int meansOfDeath; - TEAM_HUMANS, //int team; + TEAM_HUMANS, //int team; ( 1 << WP_HBUILD ), //weapon_t buildWeapon; BANIM_IDLE1, //int idleAnim; 100, //int nextthink; @@ -997,7 +1003,7 @@ static const buildableAttributes_t bg_buildableList[ ] = TR_GRAVITY, //trType_t traj; 0.0, //float bounce; MGTURRET_BP, //int buildPoints; - ( 1 << S1 )|( 1 << S2 )|( 1 << S3 ), //int stages + STAGE_GE_1, //int stages MGTURRET_HEALTH, //int health; 0, //int regenRate; MGTURRET_SPLASHDAMAGE, //int splashDamage; @@ -1032,7 +1038,7 @@ static const buildableAttributes_t bg_buildableList[ ] = TR_GRAVITY, //trType_t traj; 0.0, //float bounce; MGTURRET2_BP, //int buildPoints; - ( 1 << S2 )|( 1 << S3 ), //int stages + STAGE_GE_3, //int stages MGTURRET2_HEALTH, //int health; 0, //int regenRate; MGTURRET2_SPLASHDAMAGE, //int splashDamage; @@ -1067,7 +1073,7 @@ static const buildableAttributes_t bg_buildableList[ ] = TR_GRAVITY, //trType_t traj; 0.0, //float bounce; TESLAGEN_BP, //int buildPoints; - ( 1 << S3 ), //int stages + STAGE_GE_4, //int stages TESLAGEN_HEALTH, //int health; 0, //int regenRate; TESLAGEN_SPLASHDAMAGE, //int splashDamage; @@ -1102,7 +1108,7 @@ static const buildableAttributes_t bg_buildableList[ ] = TR_GRAVITY, //trType_t traj; 0.0, //float bounce; ARMOURY_BP, //int buildPoints; - ( 1 << S1 )|( 1 << S2 )|( 1 << S3 ), //int stages + STAGE_GE_1, //int stages ARMOURY_HEALTH, //int health; 0, //int regenRate; ARMOURY_SPLASHDAMAGE, //int splashDamage; @@ -1137,7 +1143,7 @@ static const buildableAttributes_t bg_buildableList[ ] = TR_GRAVITY, //trType_t traj; 0.0, //float bounce; DC_BP, //int buildPoints; - ( 1 << S2 )|( 1 << S3 ), //int stages + STAGE_GE_2, //int stages DC_HEALTH, //int health; 0, //int regenRate; DC_SPLASHDAMAGE, //int splashDamage; @@ -1173,13 +1179,13 @@ static const buildableAttributes_t bg_buildableList[ ] = TR_GRAVITY, //trType_t traj; 0.0, //float bounce; MEDISTAT_BP, //int buildPoints; - ( 1 << S1 )|( 1 << S2 )|( 1 << S3 ), //int stages + STAGE_GE_1, //int stages MEDISTAT_HEALTH, //int health; 0, //int regenRate; MEDISTAT_SPLASHDAMAGE, //int splashDamage; MEDISTAT_SPLASHRADIUS, //int splashRadius; MOD_HSPAWN, //int meansOfDeath; - TEAM_HUMANS, //int team; + TEAM_HUMANS, //int team; ( 1 << WP_HBUILD ), //weapon_t buildWeapon; BANIM_IDLE1, //int idleAnim; 100, //int nextthink; @@ -1208,7 +1214,7 @@ static const buildableAttributes_t bg_buildableList[ ] = TR_GRAVITY, //trType_t traj; 0.0, //float bounce; REACTOR_BP, //int buildPoints; - ( 1 << S1 )|( 1 << S2 )|( 1 << S3 ), //int stages + STAGE_GE_1, //int stages REACTOR_HEALTH, //int health; 0, //int regenRate; REACTOR_SPLASHDAMAGE, //int splashDamage; @@ -1243,13 +1249,13 @@ static const buildableAttributes_t bg_buildableList[ ] = TR_GRAVITY, //trType_t traj; 0.0, //float bounce; REPEATER_BP, //int buildPoints; - ( 1 << S1 )|( 1 << S2 )|( 1 << S3 ), //int stages + STAGE_GE_1, //int stages REPEATER_HEALTH, //int health; 0, //int regenRate; REPEATER_SPLASHDAMAGE, //int splashDamage; REPEATER_SPLASHRADIUS, //int splashRadius; MOD_HSPAWN, //int meansOfDeath; - TEAM_HUMANS, //int team; + TEAM_HUMANS, //int team; ( 1 << WP_HBUILD ), //weapon_t buildWeapon; BANIM_IDLE1, //int idleAnim; 100, //int nextthink; @@ -1278,7 +1284,7 @@ static const buildableAttributes_t bg_buildableList[ ] = TR_GRAVITY, //trType_t traj; 0.0, //float bounce; CONTAINER_SMALL_BP, //int buildPoints; - ( 1 << S1 )|( 1 << S2 )|( 1 << S3 ), //int stages + STAGE_GE_1, //int stages CONTAINER_SMALL_HEALTH, //int health; 0, //int regenRate; CONTAINER_SMALL_SPLASHDAMAGE, //int splashDamage; @@ -1313,7 +1319,7 @@ static const buildableAttributes_t bg_buildableList[ ] = TR_GRAVITY, //trType_t traj; 0.0, //float bounce; CONTAINER_MEDIUM_BP, //int buildPoints; - ( 1 << S2 )|( 1 << S3 ), //int stages + STAGE_GE_3, //int stages CONTAINER_MEDIUM_HEALTH, //int health; 0, //int regenRate; CONTAINER_MEDIUM_SPLASHDAMAGE, //int splashDamage; @@ -1348,7 +1354,7 @@ static const buildableAttributes_t bg_buildableList[ ] = TR_GRAVITY, //trType_t traj; 0.0, //float bounce; CONTAINER_LARGE_BP, //int buildPoints; - ( 1 << S3 ), //int stages + STAGE_GE_4, //int stages CONTAINER_LARGE_HEALTH, //int health; 0, //int regenRate; CONTAINER_LARGE_SPLASHDAMAGE, //int splashDamage; @@ -1383,7 +1389,7 @@ static const buildableAttributes_t bg_buildableList[ ] = TR_GRAVITY, //trType_t traj; 0.0, //float bounce; PLATE_SMALL_BP, //int buildPoints; - ( 1 << S1 )|( 1 << S2 )|( 1 << S3 ), //int stages + STAGE_GE_1, //int stages PLATE_SMALL_HEALTH, //int health; 0, //int regenRate; PLATE_SMALL_SPLASHDAMAGE, //int splashDamage; @@ -1418,7 +1424,7 @@ static const buildableAttributes_t bg_buildableList[ ] = TR_GRAVITY, //trType_t traj; 0.0, //float bounce; PLATE_LARGE_BP, //int buildPoints; - ( 1 << S3 ), //int stages + STAGE_GE_3, //int stages PLATE_LARGE_HEALTH, //int health; 0, //int regenRate; PLATE_LARGE_SPLASHDAMAGE, //int splashDamage; @@ -1453,7 +1459,7 @@ static const buildableAttributes_t bg_buildableList[ ] = TR_GRAVITY, //trType_t traj; 0.0, //float bounce; FENCE_BP, //int buildPoints; - ( 1 << S2 )|( 1 << S3 ), //int stages + STAGE_GE_1, //int stages FENCE_HEALTH, //int health; 0, //int regenRate; FENCE_SPLASHDAMAGE, //int splashDamage; @@ -1488,7 +1494,7 @@ static const buildableAttributes_t bg_buildableList[ ] = TR_GRAVITY, //trType_t traj; 0.0, //float bounce; FENCE_ROD_BP, //int buildPoints; - ( 1 << S2 )|( 1 << S3 ), //int stages + STAGE_GE_1, //int stages FENCE_HEALTH, //int health; 0, //int regenRate; FENCE_ROD_SPLASHDAMAGE, //int splashDamage; @@ -1523,7 +1529,7 @@ static const buildableAttributes_t bg_buildableList[ ] = TR_GRAVITY, //trType_t traj; 0.0, //float bounce; BARRIER_LINE_BP, //int buildPoints; - ( 1 << S1 )|( 1 << S2 )|( 1 << S3 ), //int stages + STAGE_GE_2, //int stages BARRIER_LINE_HEALTH, //int health; 0, //int regenRate; BARRIER_LINE_SPLASHDAMAGE, //int splashDamage; @@ -1558,7 +1564,7 @@ static const buildableAttributes_t bg_buildableList[ ] = TR_GRAVITY, //trType_t traj; 0.0, //float bounce; BARRIER_CORNER_BP, //int buildPoints; - ( 1 << S2 )|( 1 << S3 ), //int stages + STAGE_GE_2, //int stages BARRIER_CORNER_HEALTH, //int health; 0, //int regenRate; BARRIER_CORNER_SPLASHDAMAGE, //int splashDamage; @@ -1593,7 +1599,7 @@ static const buildableAttributes_t bg_buildableList[ ] = TR_GRAVITY, //trType_t traj; 0.0, //float bounce; BARRIER_POINT_BP, //int buildPoints; - ( 1 << S2 )|( 1 << S3 ), //int stages + STAGE_GE_3, //int stages BARRIER_POINT_HEALTH, //int health; 0, //int regenRate; BARRIER_POINT_SPLASHDAMAGE, //int splashDamage; @@ -1628,7 +1634,7 @@ static const buildableAttributes_t bg_buildableList[ ] = TR_GRAVITY, //trType_t traj; 0.0, //float bounce; SHIELD_BP, //int buildPoints; - ( 1 << S3 ), //int stages + STAGE_GE_5, //int stages SHIELD_HEALTH, //int health; 0, //int regenRate; SHIELD_SPLASHDAMAGE, //int splashDamage; @@ -1663,7 +1669,7 @@ static const buildableAttributes_t bg_buildableList[ ] = TR_GRAVITY, //trType_t traj; 0, //float bounce; LADDER_BP, //int buildPoints; - ( 1 << S2 )|( 1 << S3 ), //int stages + STAGE_GE_3, //int stages LADDER_HEALTH, //int health; 0, //int regenRate; LADDER_SPLASHDAMAGE, //int splashDamage; @@ -1698,7 +1704,7 @@ static const buildableAttributes_t bg_buildableList[ ] = TR_GRAVITY, //trType_t traj; 0.0, //float bounce; TEFLON_FOIL_BP, //int buildPoints; - ( 1 << S1 )|( 1 << S2 )|( 1 << S3 ), //int stages + STAGE_GE_1, //int stages TEFLON_FOIL_HEALTH, //int health; 0, //int regenRate; TEFLON_FOIL_SPLASHDAMAGE, //int splashDamage; @@ -1733,7 +1739,7 @@ static const buildableAttributes_t bg_buildableList[ ] = TR_GRAVITY, //trType_t traj; 0.0, //float bounce; BARREL_BP, //int buildPoints; - ( 1 << S1 )|( 1 << S2 )|( 1 << S3 ), //int stages + STAGE_GE_2, //int stages BARREL_HEALTH, //int health; 0, //int regenRate; BARREL_SPLASHDAMAGE, //int splashDamage; @@ -1768,7 +1774,7 @@ static const buildableAttributes_t bg_buildableList[ ] = TR_GRAVITY, //trType_t traj; 0.0, //float bounce; LIGHT_BP, //int buildPoints; - ( 1 << S3 ), //int stages + STAGE_GE_5, //int stages LIGHT_HEALTH, //int health; 0, //int regenRate; LIGHT_SPLASHDAMAGE, //int splashDamage; @@ -1804,7 +1810,7 @@ static const buildableAttributes_t bg_buildableList[ ] = TR_GRAVITY, //trType_t traj; 0.0, //float bounce; COVER_BP, //int buildPoints; - ( 1 << S3 ), //int stages + STAGE_GE_4, //int stages COVER_HEALTH, //int health; 0, //int regenRate; COVER_SPLASHDAMAGE, //int splashDamage; @@ -1839,7 +1845,7 @@ static const buildableAttributes_t bg_buildableList[ ] = TR_GRAVITY, //trType_t traj; 0.0, //float bounce; COVER_STUMP_BP, //int buildPoints; - ( 1 << S3 ), //int stages + STAGE_GE_4, //int stages COVER_STUMP_HEALTH, //int health; 0, //int regenRate; COVER_STUMP_SPLASHDAMAGE, //int splashDamage; @@ -1873,7 +1879,7 @@ static const buildableAttributes_t bg_buildableList[ ] = TR_GRAVITY, //trType_t traj; 0.0, //float bounce; REFINERY_BP, //int buildPoints; - ( 1 << S2 )|( 1 << S3 ), //int stages + STAGE_GE_3, //int stages REFINERY_HEALTH, //int health; 0, //int regenRate; REFINERY_SPLASHDAMAGE, //int splashDamage; @@ -2182,7 +2188,7 @@ static const classAttributes_t bg_classList[ ] = PCL_NONE, //int classnum; "spectator", //char *className; "Observer mode", - ( 1 << S1 )|( 1 << S2 )|( 1 << S3 ), //int stages + STAGE_GE_1, //int stages 0, //int health; 0.0f, //float fallDamage; 0.0f, //float regenRate; @@ -2209,7 +2215,7 @@ static const classAttributes_t bg_classList[ ] = "builder", //char *className; "Responsible for building and maintaining all the alien structures. " "Has a weak melee slash attack.", - ( 1 << S1 )|( 1 << S2 )|( 1 << S3 ), //int stages + STAGE_GE_1, //int stages ABUILDER_HEALTH, //int health; 0.0f, //float fallDamage; ABUILDER_REGEN, //float regenRate; @@ -2237,7 +2243,7 @@ static const classAttributes_t bg_classList[ ] = "Similar to the base Granger, except that in addition to " "being able to build structures it has a spit attack " "that slows victims and the ability to crawl on walls.", - ( 1 << S2 )|( 1 << S3 ), //int stages + STAGE_GE_2, //int stages ABUILDER_UPG_HEALTH, //int health; 0.0f, //float fallDamage; ABUILDER_UPG_REGEN, //float regenRate; @@ -2264,7 +2270,7 @@ static const classAttributes_t bg_classList[ ] = "level0", //char *classname; "Has a lethal reflexive bite and the ability to crawl on " "walls and ceilings.", - ( 1 << S1 )|( 1 << S2 )|( 1 << S3 ), //int stages + STAGE_GE_1, //int stages LEVEL0_HEALTH, //int health; 0.0f, //float fallDamage; LEVEL0_REGEN, //float regenRate; @@ -2282,7 +2288,7 @@ static const classAttributes_t bg_classList[ ] = 400.0f, //float stopSpeed; 250.0f, //float jumpMagnitude; 2.0f, //float knockbackScale; - { PCL_ALIEN_LEVEL0_UPG, PCL_NONE, PCL_NONE }, //int children[ 3 ]; + { PCL_ALIEN_LEVEL1, PCL_ALIEN_LEVEL0_UPG, PCL_NONE }, //int children[ 3 ]; LEVEL0_COST, //int cost; LEVEL0_VALUE, //int value; }, @@ -2292,7 +2298,7 @@ static const classAttributes_t bg_classList[ ] = "In addition to the basic Dretch abilities, the Advanced " "Dretch has the ability to pounce and spread infections. " "Advanced Dretch can also damage defensive structures.", - ( 1 << S1 )|( 1 << S2 )|( 1 << S3 ), //int stages + STAGE_GE_2, //int stages LEVEL0_UPG_HEALTH, //int health; 0.0f, //float fallDamage; LEVEL0_UPG_REGEN, //float regenRate; @@ -2323,7 +2329,7 @@ static const classAttributes_t bg_classList[ ] = "that accelerates the healing rate of nearby aliens. It also has " "an acid bomb that can be used to deal moderate area damage. " "The basilisk is also resistant to flamer.", - ( 1 << S1 )|( 1 << S2 )|( 1 << S3 ), //int stages + STAGE_GE_1, //int stages LEVEL1_HEALTH, //int health; 0.0f, //float fallDamage; LEVEL1_REGEN, //float regenRate; @@ -2355,7 +2361,7 @@ static const classAttributes_t bg_classList[ ] = "still and at full health as long as there is an overmind around. " "It also has an acid bomb similar to basilisk's one but stronger." "The adv. basilisk is also resistant to flamer.", - ( 1 << S2 )|( 1 << S3 ), //int stages + STAGE_GE_3, //int stages LEVEL1_UPG_HEALTH, //int health; 0.0f, //float fallDamage; LEVEL1_UPG_REGEN, //float regenRate; @@ -2382,7 +2388,7 @@ static const classAttributes_t bg_classList[ ] = "level2", //char *classname; "Has a melee attack and the ability to jump off walls. This " "allows the Marauder to gather great speed in enclosed areas.", - ( 1 << S1 )|( 1 << S2 )|( 1 << S3 ), //int stages + STAGE_GE_2, //int stages LEVEL2_HEALTH, //int health; 0.0f, //float fallDamage; LEVEL2_REGEN, //float regenRate; @@ -2410,7 +2416,7 @@ static const classAttributes_t bg_classList[ ] = "The Advanced Marauder has all the abilities of the basic Marauder " "with the addition of a zap attack that chains through other " "adv. marauders and can explode mines.", - ( 1 << S2 )|( 1 << S3 ), //int stages + STAGE_GE_3, //int stages LEVEL2_UPG_HEALTH, //int health; 0.0f, //float fallDamage; LEVEL2_UPG_REGEN, //float regenRate; @@ -2438,7 +2444,7 @@ static const classAttributes_t bg_classList[ ] = "The Hummel is a flying alien with air pounce ability, " "fast melee attacks and unlimited low damage shooting attack " "that does not spread poison.", - ( 1 << S2 )|( 1 << S3 ), //int stages + STAGE_GE_4, //int stages LEVEL5_UPG_HEALTH, //int health; 0.0f, //float fallDamage; LEVEL5_UPG_REGEN, //float regenRate; @@ -2466,7 +2472,7 @@ static const classAttributes_t bg_classList[ ] = "Possesses a melee attack and the pounce ability, which may " "be used as both an attack and a means to reach remote " "locations inaccessible from the ground.", - ( 1 << S1 )|( 1 << S2 )|( 1 << S3 ), //int stages + STAGE_GE_3, //int stages LEVEL3_HEALTH, //int health; 0.0f, //float fallDamage; LEVEL3_REGEN, //float regenRate; @@ -2494,7 +2500,7 @@ static const classAttributes_t bg_classList[ ] = "In addition to the basic Dragoon abilities, the Advanced " "Dragoon has 3 barbs which may be used to attack humans " "from a distance and it has a higher jump height.", - ( 1 << S2 )|( 1 << S3 ), //int stages + STAGE_GE_4, //int stages LEVEL3_UPG_HEALTH, //int health; 0.0f, //float fallDamage; LEVEL3_UPG_REGEN, //float regenRate; @@ -2523,7 +2529,7 @@ static const classAttributes_t bg_classList[ ] = "This class can also charge at enemy players and structures, " "inflicting great damage. Any humans caught under a falling " "Tyrant will be crushed by its weight.", - ( 1 << S3 ), //int stages + STAGE_GE_5, //int stages LEVEL4_HEALTH, //int health; 0.0f, //float fallDamage; LEVEL4_REGEN, //float regenRate; @@ -2549,7 +2555,7 @@ static const classAttributes_t bg_classList[ ] = PCL_HUMAN, //int classnum; "human_base", //char *classname; "", - ( 1 << S1 )|( 1 << S2 )|( 1 << S3 ), //int stages + STAGE_GE_1, //int stages 100, //int health; 1.0f, //float fallDamage; 0.0f, //float regenRate; @@ -2575,7 +2581,7 @@ static const classAttributes_t bg_classList[ ] = PCL_HUMAN_BSUIT, //int classnum; "human_bsuit", //char *classname; "", - ( 1 << S3 ), //int stages + STAGE_GE_5, //int stages 100, //int health; 1.0f, //float fallDamage; 0.0f, //float regenRate; @@ -3083,7 +3089,7 @@ static const weaponAttributes_t bg_weapons[ ] = { WP_ALEVEL0, //int weaponNum; 0, //int price; - ( 1 << S1 )|( 1 << S2 )|( 1 << S3 ), //int stages + STAGE_GE_1, //int stages SLOT_WEAPON, //int slots; "level0", //char *weaponName; "Bite", //char *humanName; @@ -3108,7 +3114,7 @@ static const weaponAttributes_t bg_weapons[ ] = { WP_ALEVEL0_UPG, //int weaponNum; 0, //int price; - ( 1 << S1 )|( 1 << S2 )|( 1 << S3 ), //int stages + STAGE_GE_2, //int stages SLOT_WEAPON, //int slots; "level0upg", //char *weaponName; "Bite Upgrade", //char *humanName; @@ -3133,7 +3139,7 @@ static const weaponAttributes_t bg_weapons[ ] = { WP_ALEVEL1, //int weaponNum; 0, //int price; - ( 1 << S1 )|( 1 << S2 )|( 1 << S3 ), //int stages + STAGE_GE_1, //int stages SLOT_WEAPON, //int slots; "level1", //char *weaponName; "Claws", //char *humanName; @@ -3158,7 +3164,7 @@ static const weaponAttributes_t bg_weapons[ ] = { WP_ALEVEL1_UPG, //int weaponNum; 0, //int price; - ( 1 << S1 )|( 1 << S2 )|( 1 << S3 ), //int stages + STAGE_GE_3, //int stages SLOT_WEAPON, //int slots; "level1upg", //char *weaponName; "Claws Upgrade", //char *humanName; @@ -3183,7 +3189,7 @@ static const weaponAttributes_t bg_weapons[ ] = { WP_ALEVEL2, //int weaponNum; 0, //int price; - ( 1 << S1 )|( 1 << S2 )|( 1 << S3 ), //int stages + STAGE_GE_2, //int stages SLOT_WEAPON, //int slots; "level2", //char *weaponName; "Claws", //char *humanName; @@ -3208,7 +3214,7 @@ static const weaponAttributes_t bg_weapons[ ] = { WP_ALEVEL2_UPG, //int weaponNum; 0, //int price; - ( 1 << S1 )|( 1 << S2 )|( 1 << S3 ), //int stages + STAGE_GE_3, //int stages SLOT_WEAPON, //int slots; "level2upg", //char *weaponName; "Zap", //char *humanName; @@ -3233,7 +3239,7 @@ static const weaponAttributes_t bg_weapons[ ] = { WP_ALEVEL5, //int weaponNum; 0, //int price; - ( 1 << S1 )|( 1 << S2 )|( 1 << S3 ), //int stages + STAGE_GE_4, //int stages SLOT_WEAPON, //int slots; "level5", //char *weaponName; "prickles", //char *humanName; @@ -3258,7 +3264,7 @@ static const weaponAttributes_t bg_weapons[ ] = { WP_ALEVEL3, //int weaponNum; 0, //int price; - ( 1 << S1 )|( 1 << S2 )|( 1 << S3 ), //int stages + STAGE_GE_3, //int stages SLOT_WEAPON, //int slots; "level3", //char *weaponName; "Pounce", //char *humanName; @@ -3283,7 +3289,7 @@ static const weaponAttributes_t bg_weapons[ ] = { WP_ALEVEL3_UPG, //int weaponNum; 0, //int price; - ( 1 << S1 )|( 1 << S2 )|( 1 << S3 ), //int stages + STAGE_GE_4, //int stages SLOT_WEAPON, //int slots; "level3upg", //char *weaponName; "Pounce (upgrade)", //char *humanName; @@ -3308,7 +3314,7 @@ static const weaponAttributes_t bg_weapons[ ] = { WP_ALEVEL4, //int weaponNum; 0, //int price; - ( 1 << S1 )|( 1 << S2 )|( 1 << S3 ), //int stages + STAGE_GE_5, //int stages SLOT_WEAPON, //int slots; "level4", //char *weaponName; "Charge", //char *humanName; @@ -3334,10 +3340,10 @@ static const weaponAttributes_t bg_weapons[ ] = { WP_BLASTER, //int weaponNum; 0, //int price; - ( 1 << S1 )|( 1 << S2 )|( 1 << S3 ), //int stages + STAGE_GE_1, //int stages 0, //int slots; "blaster", //char *weaponName; - "[yefarms]Blaster", //char *humanName; + "[yefarms]Blaster", //char *humanName; "", 0, //int maxAmmo; 0, //int maxClips; @@ -3359,7 +3365,7 @@ static const weaponAttributes_t bg_weapons[ ] = { WP_MACHINEGUN, //int weaponNum; RIFLE_PRICE, //int price; - ( 1 << S1 )|( 1 << S2 )|( 1 << S3 ), //int stages + STAGE_GE_1, //int stages SLOT_WEAPON, //int slots; "rifle", //char *weaponName; "[yefarms]Rifle", //char *humanName; @@ -3385,7 +3391,7 @@ static const weaponAttributes_t bg_weapons[ ] = { WP_PAIN_SAW, //int weaponNum; PAINSAW_PRICE, //int price; - ( 1 << S1 )|( 1 << S2 )|( 1 << S3 ), //int stages + STAGE_GE_1, //int stages SLOT_WEAPON, //int slots; "psaw", //char *weaponName; "[yefarms]Pain Saw", //char *humanName; @@ -3412,7 +3418,7 @@ static const weaponAttributes_t bg_weapons[ ] = { WP_SHOTGUN, //int weaponNum; SHOTGUN_PRICE, //int price; - ( 1 << S1 )|( 1 << S2 )|( 1 << S3 ), //int stages + STAGE_GE_3, //int stages SLOT_WEAPON, //int slots; "shotgun", //char *weaponName; "[yefarms]Shotgun", //char *humanName; @@ -3439,7 +3445,7 @@ static const weaponAttributes_t bg_weapons[ ] = { WP_LAS_GUN, //int weaponNum; LASGUN_PRICE, //int price; - ( 1 << S1 )|( 1 << S2 )|( 1 << S3 ), //int stages + STAGE_GE_2, //int stages SLOT_WEAPON, //int slots; "lgun", //char *weaponName; "[yefarms]Las Gun", //char *humanName; @@ -3465,7 +3471,7 @@ static const weaponAttributes_t bg_weapons[ ] = { WP_MASS_DRIVER, //int weaponNum; MDRIVER_PRICE, //int price; - ( 1 << S1 )|( 1 << S2 )|( 1 << S3 ), //int stages + STAGE_GE_3, //int stages SLOT_WEAPON, //int slots; "mdriver", //char *weaponName; "[yefarms]Mass Driver", //char *humanName; @@ -3492,7 +3498,7 @@ static const weaponAttributes_t bg_weapons[ ] = { WP_CHAINGUN, //int weaponNum; CHAINGUN_PRICE, //int price; - ( 1 << S1 )|( 1 << S2 )|( 1 << S3 ), //int stages + STAGE_GE_3, //int stages SLOT_WEAPON, //int slots; "chaingun", //char *weaponName; "[yefarms]Chaingun", //char *humanName; @@ -3519,7 +3525,7 @@ static const weaponAttributes_t bg_weapons[ ] = { WP_FLAMER, //int weaponNum; FLAMER_PRICE, //int price; - ( 1 << S2 )|( 1 << S3 ), //int stages + STAGE_GE_4, //int stages SLOT_WEAPON, //int slots; "flamer", //char *weaponName; "[yefarms]Flame Thrower", //char *humanName; @@ -3546,7 +3552,7 @@ static const weaponAttributes_t bg_weapons[ ] = { WP_PULSE_RIFLE, //int weaponNum; PRIFLE_PRICE, //int price; - ( 1 << S2 )|( 1 << S3 ), //int stages + STAGE_GE_4, //int stages SLOT_WEAPON, //int slots; "prifle", //char *weaponName; "[yefarms]Pulse Rifle", //char *humanName; @@ -3571,7 +3577,7 @@ static const weaponAttributes_t bg_weapons[ ] = { WP_LUCIFER_CANNON, //int weaponNum; LCANNON_PRICE, //int price; - ( 1 << S3 ), //int stages + STAGE_GE_5, //int stages SLOT_WEAPON, //int slots; "lcannon", //char *weaponName; "[yefarms]Lucifer Cannon", //char *humanName; @@ -3598,7 +3604,7 @@ static const weaponAttributes_t bg_weapons[ ] = { WP_GRENADE, //int weaponNum; GRENADE_PRICE, //int price; - ( 1 << S2 )|( 1 << S3 ), //int stages + STAGE_GE_3, //int stages SLOT_NONE, //int slots; "grenade", //char *weaponName; "Grenade", //char *humanName; @@ -3623,7 +3629,7 @@ static const weaponAttributes_t bg_weapons[ ] = { WP_SMOKE, //int weaponNum; SMOKE_PRICE, //int price; - ( 1 << S1 )|( 1 << S2 )|( 1 << S3 ), //int stages + STAGE_GE_5, //int stages SLOT_NONE, //int slots; "smoke", //char *weaponName; "Smoke", //char *weaponHumanName; @@ -3648,7 +3654,7 @@ static const weaponAttributes_t bg_weapons[ ] = { WP_MINE, //int weaponNum; MINE_PRICE, //int price; - ( 1 << S2 )|( 1 << S3 ), //int stages + STAGE_GE_5, //int stages SLOT_NONE, //int slots; "mine", //char *weaponName; "Mine", //char *weaponHumanName; @@ -3673,7 +3679,7 @@ static const weaponAttributes_t bg_weapons[ ] = { WP_LOCKBLOB_LAUNCHER, //int weaponNum; 0, //int price; - ( 1 << S1 )|( 1 << S2 )|( 1 << S3 ), //int stages + STAGE_GE_1, //int stages SLOT_WEAPON, //int slots; "lockblob", //char *weaponName; "Lock Blob", //char *humanName; @@ -3698,7 +3704,7 @@ static const weaponAttributes_t bg_weapons[ ] = { WP_HIVE, //int weaponNum; 0, //int price; - ( 1 << S1 )|( 1 << S2 )|( 1 << S3 ), //int stages + STAGE_GE_1, //int stages SLOT_WEAPON, //int slots; "hive", //char *weaponName; "Hive", //char *humanName; @@ -3723,7 +3729,7 @@ static const weaponAttributes_t bg_weapons[ ] = { WP_TESLAGEN, //int weaponNum; 0, //int price; - ( 1 << S1 )|( 1 << S2 )|( 1 << S3 ), //int stages + STAGE_GE_1, //int stages SLOT_WEAPON, //int slots; "teslagen", //char *weaponName; "Tesla Generator", //char *humanName; @@ -3748,7 +3754,7 @@ static const weaponAttributes_t bg_weapons[ ] = { WP_MGTURRET, //int weaponNum; 0, //int price; - ( 1 << S1 )|( 1 << S2 )|( 1 << S3 ), //int stages + STAGE_GE_1, //int stages SLOT_WEAPON, //int slots; "mgturret", //char *weaponName; "Machinegun Turret", //char *humanName; @@ -3771,12 +3777,12 @@ static const weaponAttributes_t bg_weapons[ ] = TEAM_HUMANS //team_t team; }, { - WP_MGTURRET2, //int weaponNum; + WP_MGTURRET2, //int weaponNum; 0, //int price; - ( 1 << S3 ), //int stages + STAGE_GE_1, //int stages SLOT_WEAPON, //int slots; - "mgturret2", //char *weaponName; - "Machinegun Turret2", //char *humanName; + "mgturret2", //char *weaponName; + "Machinegun Turret2", //char *humanName; "", 0, //int maxAmmo; 0, //int maxClips; @@ -3786,7 +3792,7 @@ static const weaponAttributes_t bg_weapons[ ] = 0, //int repeatRate2; 0, //int repeatRate3; 0, //int reloadTime; - MGTURRET2_K_SCALE, //float knockbackScale; + MGTURRET2_K_SCALE, //float knockbackScale; qfalse, //qboolean hasAltMode; qfalse, //qboolean hasThirdMode; qfalse, //qboolean canZoom; @@ -3798,7 +3804,7 @@ static const weaponAttributes_t bg_weapons[ ] = { WP_ABUILD, //int weaponNum; 0, //int price; - ( 1 << S1 )|( 1 << S2 )|( 1 << S3 ), //int stages + STAGE_GE_1, //int stages SLOT_WEAPON, //int slots; "abuild", //char *weaponName; "Alien build weapon", //char *humanName; @@ -3823,7 +3829,7 @@ static const weaponAttributes_t bg_weapons[ ] = { WP_ABUILD2, //int weaponNum; 0, //int price; - ( 1 << S1 )|( 1 << S2 )|( 1 << S3 ), //int stages + STAGE_GE_1, //int stages SLOT_WEAPON, //int slots; "abuildupg", //char *weaponName; "Alien build weapon2",//char *humanName; @@ -3848,7 +3854,7 @@ static const weaponAttributes_t bg_weapons[ ] = { WP_HBUILD, //int weaponNum; HBUILD_PRICE, //int price; - ( 1 << S1 )|( 1 << S2 )|( 1 << S3 ), //int stages + STAGE_GE_1, //int stages SLOT_WEAPON, //int slots; "ckit", //char *weaponName; "[yetool]Construction Kit", //char *humanName; @@ -3924,7 +3930,7 @@ static const upgradeAttributes_t bg_upgrades[ ] = { UP_LIGHTARMOUR, //int upgradeNum; LIGHTARMOUR_PRICE, //int price; - ( 1 << S1 )|( 1 << S2 )|( 1 << S3 ), //int stages + STAGE_GE_1, //int stages SLOT_TORSO|SLOT_ARMS|SLOT_LEGS, //int slots; "larmour", //char *upgradeName; "[yeshield]Light Armour", //char *humanName; @@ -3938,7 +3944,7 @@ static const upgradeAttributes_t bg_upgrades[ ] = { UP_HELMET, //int upgradeNum; HELMET_PRICE, //int price; - ( 1 << S2 )|( 1 << S3 ), //int stages + STAGE_GE_3, //int stages SLOT_HEAD, //int slots; "helmet", //char *upgradeName; "[yeshield]Helmet", //char *humanName; @@ -3953,20 +3959,20 @@ static const upgradeAttributes_t bg_upgrades[ ] = { UP_MEDKIT, //int upgradeNum; MEDKIT_PRICE, //int price; - ( 1 << S1 )|( 1 << S2 )|( 1 << S3 ), //int stages + STAGE_GE_1, //int stages SLOT_NONE, //int slots; "medkit", //char *upgradeName; - "[yemed]Medkit", //char *humanName; + "[yemed]Medkit", //char *humanName; "Basic health kit. ", "icons/iconu_atoxin", (SPAWN_WITH_MEDKIT ? qfalse : qtrue), //qboolean purchasable - qtrue, //qboolean usable + qtrue, //qboolean usable TEAM_HUMANS //team_t team; }, { UP_BIOKIT, //int upgradeNum; BIOKIT_PRICE, //int price; - ( 1 << S2 )|( 1 << S3 ), //int stages + STAGE_GE_2, //int stages SLOT_NONE, //int slots; "biokit", //char *upgradeName; "[yebiok]Biokit", //char *humanName; @@ -3981,7 +3987,7 @@ static const upgradeAttributes_t bg_upgrades[ ] = { UP_CLOAK, //int upgradeNum; CLOAK_PRICE, //int price; - ( 1 << S2 )|( 1 << S3 ),//int stages + STAGE_GE_4, //int stages SLOT_NONE, //int slots; "cloak", //char *upgradeName; "[yecloa]Cloak", //char *humanName; @@ -3997,7 +4003,7 @@ static const upgradeAttributes_t bg_upgrades[ ] = { UP_BATTPACK, //int upgradeNum; BATTPACK_PRICE, //int price; - ( 1 << S1 )|( 1 << S2 )|( 1 << S3 ), //int stages + STAGE_GE_3, //int stages SLOT_BACKPACK, //int slots; "battpack", //char *upgradeName; "[yebat]Battery Pack", //char *humanName; @@ -4011,7 +4017,7 @@ static const upgradeAttributes_t bg_upgrades[ ] = { UP_JETPACK, //int upgradeNum; JETPACK_PRICE, //int price; - ( 1 << S2 )|( 1 << S3 ), //int stages + STAGE_GE_4, //int stages SLOT_BACKPACK, //int slots; "jetpack", //char *upgradeName; "[yejet]Jet Pack", //char *humanName; @@ -4026,7 +4032,7 @@ static const upgradeAttributes_t bg_upgrades[ ] = { UP_BATTLESUIT, //int upgradeNum; BSUIT_PRICE, //int price; - ( 1 << S3 ), //int stages + STAGE_GE_5, //int stages SLOT_HEAD|SLOT_TORSO|SLOT_ARMS|SLOT_LEGS|SLOT_BACKPACK, //int slots; "bsuit", //char *upgradeName; "[yeshield]Battlesuit", //char *humanName; @@ -4041,7 +4047,7 @@ static const upgradeAttributes_t bg_upgrades[ ] = { UP_GRENADE, //int upgradeNum; GRENADE_PRICE, //int price; - ( 1 << S2 )|( 1 << S3 ),//int stages + STAGE_GE_4, //int stages SLOT_NONE, //int slots; "gren", //char *upgradeName; "[yenade]Explosive Grenade", //char *humanName; @@ -4055,7 +4061,7 @@ static const upgradeAttributes_t bg_upgrades[ ] = { UP_MINE, //int upgradeNum; MINE_PRICE, //int price; - ( 1 << S2 )|( 1 << S3 ),//int stages + STAGE_GE_5, //int stages SLOT_NONE, //int slots; "min", //char *upgradeName; "[yenade]Mine", //char *upgradeHumanName; @@ -4066,11 +4072,11 @@ static const upgradeAttributes_t bg_upgrades[ ] = TEAM_HUMANS //WUTeam_t team; }, { - UP_SMOKE, //int upgradeNum; - SMOKE_PRICE, //int price; - ( 1 << S1 )|( 1 << S2 )|( 1 << S3 ),//int stages + UP_SMOKE, //int upgradeNum; + SMOKE_PRICE, //int price; + STAGE_GE_5, //int stages SLOT_NONE, //int slots; - "smo", //char *upgradeName; + "smo", //char *upgradeName; "[yenade]Smoke Grenade", //char *upgradeHumanName; "", 0, @@ -4081,7 +4087,7 @@ static const upgradeAttributes_t bg_upgrades[ ] = { UP_AMMO, //int upgradeNum; 0, //int price; - ( 1 << S1 )|( 1 << S2 )|( 1 << S3 ), //int stages + STAGE_GE_1, //int stages SLOT_NONE, //int slots; "ammo", //char *upgradeName; "[yeammo]Ammunition", //char *humanName; diff --git a/src/game/bg_public.h b/src/game/bg_public.h index 7ce0d12..9109a35 100644 --- a/src/game/bg_public.h +++ b/src/game/bg_public.h @@ -961,7 +961,9 @@ typedef enum { S1, S2, - S3 + S3, + S4, + S5 } stage_t; #define MAX_BUILDABLE_MODELS 4 diff --git a/src/game/g_local.h b/src/game/g_local.h index 1804d1c..e437349 100644 --- a/src/game/g_local.h +++ b/src/game/g_local.h @@ -673,8 +673,12 @@ typedef struct int alienStage2Time; int alienStage3Time; + int alienStage4Time; + int alienStage5Time; int humanStage2Time; int humanStage3Time; + int humanStage4Time; + int humanStage5Time; int nextCommandTime; @@ -1198,11 +1202,15 @@ extern vmCvar_t g_humanCredits; extern vmCvar_t g_humanMaxStage; extern vmCvar_t g_humanStage2Threshold; extern vmCvar_t g_humanStage3Threshold; +extern vmCvar_t g_humanStage4Threshold; +extern vmCvar_t g_humanStage5Threshold; extern vmCvar_t g_alienStage; extern vmCvar_t g_alienCredits; extern vmCvar_t g_alienMaxStage; extern vmCvar_t g_alienStage2Threshold; extern vmCvar_t g_alienStage3Threshold; +extern vmCvar_t g_alienStage4Threshold; +extern vmCvar_t g_alienStage5Threshold; extern vmCvar_t g_alienBarbsRegen2x; extern vmCvar_t g_alienBarbsRegen3x; extern vmCvar_t g_alienGrangerDanceBonus; diff --git a/src/game/g_main.c b/src/game/g_main.c index dff13fe..d123d96 100644 --- a/src/game/g_main.c +++ b/src/game/g_main.c @@ -112,11 +112,15 @@ vmCvar_t g_humanCredits; vmCvar_t g_humanMaxStage; vmCvar_t g_humanStage2Threshold; vmCvar_t g_humanStage3Threshold; +vmCvar_t g_humanStage4Threshold; +vmCvar_t g_humanStage5Threshold; vmCvar_t g_alienStage; vmCvar_t g_alienCredits; vmCvar_t g_alienMaxStage; vmCvar_t g_alienStage2Threshold; vmCvar_t g_alienStage3Threshold; +vmCvar_t g_alienStage4Threshold; +vmCvar_t g_alienStage5Threshold; vmCvar_t g_alienBarbsRegen2x; vmCvar_t g_alienBarbsRegen3x; vmCvar_t g_alienGrangerDanceBonus; @@ -270,11 +274,15 @@ static cvarTable_t gameCvarTable[ ] = { &g_humanMaxStage, "g_humanMaxStage", DEFAULT_HUMAN_MAX_STAGE, 0, 0, qfalse, cv_humanMaxStage }, { &g_humanStage2Threshold, "g_humanStage2Threshold", DEFAULT_HUMAN_STAGE2_THRESH, 0, 0, qfalse }, { &g_humanStage3Threshold, "g_humanStage3Threshold", DEFAULT_HUMAN_STAGE3_THRESH, 0, 0, qfalse }, + { &g_humanStage4Threshold, "g_humanStage4Threshold", DEFAULT_HUMAN_STAGE4_THRESH, 0, 0, qfalse }, + { &g_humanStage5Threshold, "g_humanStage5Threshold", DEFAULT_HUMAN_STAGE5_THRESH, 0, 0, qfalse }, { &g_alienStage, "g_alienStage", "0", 0, 0, qfalse }, { &g_alienCredits, "g_alienCredits", "0", 0, 0, qfalse }, { &g_alienMaxStage, "g_alienMaxStage", DEFAULT_ALIEN_MAX_STAGE, 0, 0, qfalse, cv_alienMaxStage }, { &g_alienStage2Threshold, "g_alienStage2Threshold", DEFAULT_ALIEN_STAGE2_THRESH, 0, 0, qfalse }, { &g_alienStage3Threshold, "g_alienStage3Threshold", DEFAULT_ALIEN_STAGE3_THRESH, 0, 0, qfalse }, + { &g_alienStage4Threshold, "g_alienStage4Threshold", DEFAULT_ALIEN_STAGE4_THRESH, 0, 0, qfalse }, + { &g_alienStage5Threshold, "g_alienStage5Threshold", DEFAULT_ALIEN_STAGE5_THRESH, 0, 0, qfalse }, { &g_alienGrangerDanceBonus, "g_alienGrangerDanceBonus", "5", 0, 0, qfalse }, { &g_alienBarbsRegen2x, "g_alienBarbsRegen2x", "1.4", CVAR_ARCHIVE, 0, qfalse }, { &g_alienBarbsRegen3x, "g_alienBarbsRegen3x", "1.6", CVAR_ARCHIVE, 0, qfalse }, @@ -617,8 +625,8 @@ void G_InitGame( int levelTime, int randomSeed, int restart ) memset( &level, 0, sizeof( level ) ); level.time = levelTime; level.startTime = levelTime; - level.alienStage2Time = level.alienStage3Time = - level.humanStage2Time = level.humanStage3Time = level.startTime; + level.alienStage2Time = level.alienStage3Time = level.alienStage4Time = level.alienStage5Time = + level.humanStage2Time = level.humanStage3Time = level.humanStage4Time = level.humanStage5Time = level.startTime; level.snd_fry = G_SoundIndex( "sound/misc/fry.wav" ); // FIXME standing in lava / slime level.humanRewardKills = level.alienRewardKills = 0.0f; trap_Cvar_Set( "g_version", G_MOD_VERSION ); @@ -1394,9 +1402,7 @@ void G_CalculateStages( void ) level.alienStage2Time = level.time; lastAlienStageModCount = g_alienStage.modificationCount; G_LogPrintf("Stage: A 2: Aliens reached Stage 2\n"); - } - - if( g_alienCredits.integer >= + } else if( g_alienCredits.integer >= (int)( ceil( (float)g_alienStage3Threshold.integer * alienPlayerCountMod ) ) && g_alienStage.integer == S2 && g_alienMaxStage.integer > S2 ) { @@ -1404,6 +1410,22 @@ void G_CalculateStages( void ) level.alienStage3Time = level.time; lastAlienStageModCount = g_alienStage.modificationCount; G_LogPrintf("Stage: A 3: Aliens reached Stage 3\n"); + } else if( g_alienCredits.integer >= + (int)( ceil( (float)g_alienStage4Threshold.integer * alienPlayerCountMod ) ) && + g_alienStage.integer == S3 && g_alienMaxStage.integer > S3 ) + { + trap_Cvar_Set( "g_alienStage", va( "%d", S4 ) ); + level.alienStage4Time = level.time; + lastAlienStageModCount = g_alienStage.modificationCount; + G_LogPrintf("Stage: A 4: Aliens reached Stage 4\n"); + } else if( g_alienCredits.integer >= + (int)( ceil( (float)g_alienStage5Threshold.integer * alienPlayerCountMod ) ) && + g_alienStage.integer == S4 && g_alienMaxStage.integer > S4 ) + { + trap_Cvar_Set( "g_alienStage", va( "%d", S5 ) ); + level.alienStage5Time = level.time; + lastAlienStageModCount = g_alienStage.modificationCount; + G_LogPrintf("Stage: A 5: Aliens reached Stage 5\n"); } if( g_humanCredits.integer >= @@ -1414,9 +1436,7 @@ void G_CalculateStages( void ) level.humanStage2Time = level.time; lastHumanStageModCount = g_humanStage.modificationCount; G_LogPrintf("Stage: H 2: Humans reached Stage 2\n"); - } - - if( g_humanCredits.integer >= + } else if( g_humanCredits.integer >= (int)( ceil( (float)g_humanStage3Threshold.integer * humanPlayerCountMod ) ) && g_humanStage.integer == S2 && g_humanMaxStage.integer > S2 ) { @@ -1424,6 +1444,22 @@ void G_CalculateStages( void ) level.humanStage3Time = level.time; lastHumanStageModCount = g_humanStage.modificationCount; G_LogPrintf("Stage: H 3: Humans reached Stage 3\n"); + } else if( g_humanCredits.integer >= + (int)( ceil( (float)g_humanStage4Threshold.integer * humanPlayerCountMod ) ) && + g_humanStage.integer == S3 && g_humanMaxStage.integer > S3 ) + { + trap_Cvar_Set( "g_humanStage", va( "%d", S4 ) ); + level.humanStage4Time = level.time; + lastHumanStageModCount = g_humanStage.modificationCount; + G_LogPrintf("Stage: H 4: Humans reached Stage 4\n"); + } else if( g_humanCredits.integer >= + (int)( ceil( (float)g_humanStage5Threshold.integer * humanPlayerCountMod ) ) && + g_humanStage.integer == S4 && g_humanMaxStage.integer > S4 ) + { + trap_Cvar_Set( "g_humanStage", va( "%d", S5 ) ); + level.humanStage5Time = level.time; + lastHumanStageModCount = g_humanStage.modificationCount; + G_LogPrintf("Stage: H 5: Humans reached Stage 5\n"); } if( g_alienStage.modificationCount > lastAlienStageModCount ) @@ -1434,6 +1470,10 @@ void G_CalculateStages( void ) level.alienStage2Time = level.time; else if( g_alienStage.integer == S3 ) level.alienStage3Time = level.time; + else if( g_alienStage.integer == S4 ) + level.alienStage4Time = level.time; + else if( g_alienStage.integer == S5 ) + level.alienStage5Time = level.time; lastAlienStageModCount = g_alienStage.modificationCount; } @@ -1446,6 +1486,10 @@ void G_CalculateStages( void ) level.humanStage2Time = level.time; else if( g_humanStage.integer == S3 ) level.humanStage3Time = level.time; + else if( g_humanStage.integer == S4 ) + level.humanStage4Time = level.time; + else if( g_humanStage.integer == S5 ) + level.humanStage5Time = level.time; lastHumanStageModCount = g_humanStage.modificationCount; } @@ -1454,6 +1498,10 @@ void G_CalculateStages( void ) alienNextStageThreshold = (int)( ceil( (float)g_alienStage2Threshold.integer * alienPlayerCountMod ) ); else if( g_alienStage.integer == S2 && g_alienMaxStage.integer > S2 ) alienNextStageThreshold = (int)( ceil( (float)g_alienStage3Threshold.integer * alienPlayerCountMod ) ); + else if( g_alienStage.integer == S3 && g_alienMaxStage.integer > S3 ) + alienNextStageThreshold = (int)( ceil( (float)g_alienStage3Threshold.integer * alienPlayerCountMod ) ); + else if( g_alienStage.integer == S4 && g_alienMaxStage.integer > S4 ) + alienNextStageThreshold = (int)( ceil( (float)g_alienStage3Threshold.integer * alienPlayerCountMod ) ); else alienNextStageThreshold = -1; @@ -1461,6 +1509,10 @@ void G_CalculateStages( void ) humanNextStageThreshold = (int)( ceil( (float)g_humanStage2Threshold.integer * humanPlayerCountMod ) ); else if( g_humanStage.integer == S2 && g_humanMaxStage.integer > S2 ) humanNextStageThreshold = (int)( ceil( (float)g_humanStage3Threshold.integer * humanPlayerCountMod ) ); + else if( g_humanStage.integer == S3 && g_humanMaxStage.integer > S3 ) + humanNextStageThreshold = (int)( ceil( (float)g_humanStage3Threshold.integer * humanPlayerCountMod ) ); + else if( g_humanStage.integer == S4 && g_humanMaxStage.integer > S4 ) + humanNextStageThreshold = (int)( ceil( (float)g_humanStage3Threshold.integer * humanPlayerCountMod ) ); else humanNextStageThreshold = -1; @@ -1910,7 +1962,7 @@ void G_SendGameStat( team_t team ) } Com_sprintf( data, BIG_INFO_STRING, - "%s %s T:%c A:%f H:%f M:%s D:%d SD:%d AS:%d AS2T:%d AS3T:%d HS:%d HS2T:%d HS3T:%d CL:%d", + "%s %s T:%c A:%f H:%f M:%s D:%d SD:%d AS:%d AS2T:%d AS3T:%d AS4T:%d AS5T:%d HS:%d HS2T:%d HS3T:%d HS4T: %d HS5T: %d CL:%d", Q3_VERSION, g_tag.string, teamChar, @@ -1922,9 +1974,13 @@ void G_SendGameStat( team_t team ) g_alienStage.integer, level.alienStage2Time - level.startTime, level.alienStage3Time - level.startTime, + level.alienStage4Time - level.startTime, + level.alienStage5Time - level.startTime, g_humanStage.integer, level.humanStage2Time - level.startTime, level.humanStage3Time - level.startTime, + level.humanStage4Time - level.startTime, + level.humanStage5Time - level.startTime, level.numConnectedClients ); dataLength = strlen( data ); diff --git a/src/game/g_weapon.c b/src/game/g_weapon.c index 184949f..a64f0f8 100644 --- a/src/game/g_weapon.c +++ b/src/game/g_weapon.c @@ -1762,11 +1762,11 @@ gclient_t *client; break; case WP_MASS_DRIVER: -if(g_humanStage.integer == S3 && BG_InventoryContainsUpgrade( UP_BATTPACK, ent->client->ps.stats )) -{ - massDriverFire2( ent ); -} - break; + if(g_humanStage.integer == S5 && BG_InventoryContainsUpgrade( UP_BATTPACK, ent->client->ps.stats )) + { + massDriverFire2( ent ); + } + break; case WP_ALEVEL1: case WP_ALEVEL1_UPG: diff --git a/src/game/tremulous.h b/src/game/tremulous.h index 8a393b8..92affa2 100644 --- a/src/game/tremulous.h +++ b/src/game/tremulous.h @@ -38,14 +38,18 @@ TREMULOUS EDGE MOD SRC FILE #define FREEKILL_HUMAN LEVEL0_VALUE #define DEFAULT_ALIEN_BUILDPOINTS "150" #define DEFAULT_ALIEN_QUEUE_TIME "12000" -#define DEFAULT_ALIEN_STAGE2_THRESH "12000" -#define DEFAULT_ALIEN_STAGE3_THRESH "24000" -#define DEFAULT_ALIEN_MAX_STAGE "2" +#define DEFAULT_ALIEN_STAGE2_THRESH "6000" +#define DEFAULT_ALIEN_STAGE3_THRESH "12000" +#define DEFAULT_ALIEN_STAGE4_THRESH "18000" +#define DEFAULT_ALIEN_STAGE5_THRESH "24000" +#define DEFAULT_ALIEN_MAX_STAGE "4" #define DEFAULT_HUMAN_BUILDPOINTS "150" #define DEFAULT_HUMAN_QUEUE_TIME "8000" #define DEFAULT_HUMAN_STAGE2_THRESH "6000" #define DEFAULT_HUMAN_STAGE3_THRESH "12000" -#define DEFAULT_HUMAN_MAX_STAGE "2" +#define DEFAULT_HUMAN_STAGE4_THRESH "18000" +#define DEFAULT_HUMAN_STAGE5_THRESH "24000" +#define DEFAULT_HUMAN_MAX_STAGE "4" #define DAMAGE_FRACTION_FOR_KILL 0.5f //how much damage players (versus structures) need to #define MAXIMUM_BUILD_TIME 30000 // used for pie timer @@ -146,7 +150,7 @@ TREMULOUS EDGE MOD SRC FILE #define LEVEL1_VALUE AVM(270) #define LEVEL1_HEALTH AHM(60) #define LEVEL1_REGEN (0.03f * LEVEL1_HEALTH) -#define LEVEL1_COST 0 +#define LEVEL1_COST 1 #define LEVEL1_UPG_SPEED 1.25f #define LEVEL1_UPG_VALUE AVM(330) #define LEVEL1_UPG_HEALTH AHM(80) -- cgit