diff options
-rw-r--r-- | src/game/bg_misc.c | 139 | ||||
-rw-r--r-- | src/game/g_client.c | 6 | ||||
-rw-r--r-- | src/game/g_cmds.c | 25 | ||||
-rw-r--r-- | src/game/g_spawn.c | 12 | ||||
-rw-r--r-- | src/game/tremulous.h | 58 | ||||
-rw-r--r-- | src/ui/ui_main.c | 23 |
6 files changed, 146 insertions, 117 deletions
diff --git a/src/game/bg_misc.c b/src/game/bg_misc.c index fde42787..17d47de5 100644 --- a/src/game/bg_misc.c +++ b/src/game/bg_misc.c @@ -417,7 +417,8 @@ buildableAttributes_t bg_buildableList[ ] = TR_GRAVITY, //trType_t traj; 0.0, //float bounce; BANK_BP, //int buildPoints; - ( 1 << S1 )|( 1 << S2 )|( 1 << S3 ), //int stages + //( 1 << S1 )|( 1 << S2 )|( 1 << S3 ), //int stages + 0, //DISABLE BANK //int stages BANK_HEALTH, //int health; 0, //int regenRate; BANK_SPLASHDAMAGE, //int splashDamage; @@ -1255,7 +1256,7 @@ classAttributes_t bg_classList[ ] = { 15, 15, 6 }, //vec3_t crouchmaxs; { -15, -15, -4 }, //vec3_t deadmins; { 15, 15, 4 }, //vec3_t deadmaxs; - 6, 6, //int viewheight, crouchviewheight; + 7, 7, //int viewheight, crouchviewheight; SOLDIER_HEALTH, //int health; SOLDIER_REGEN, //int regenRate; SCA_WALLCLIMBER|SCA_CANJUMP|SCA_NOWEAPONDRIFT| @@ -1273,66 +1274,6 @@ classAttributes_t bg_classList[ ] = }, { PCL_A_O_LEV1, //int classnum; - "dragoon", //char *classname; - "Dragoon", //char *humanname; - "prowl", //char *modelname; - 0.75f, //float modelScale; - "default", //char *skinname; - "alien_general_hud", //char *hudname; - ( 1 << S1 )|( 1 << S2 )|( 1 << S3 ), //int stages - { -24, -24, -16 }, //vec3_t mins; - { 24, 24, 16 }, //vec3_t maxs; - { 24, 24, 16 }, //vec3_t crouchmaxs; - { -24, -24, -4 }, //vec3_t deadmins; - { 24, 24, 4 }, //vec3_t deadmaxs; - 18, 18, //int viewheight, crouchviewheight; - DRAGOON_HEALTH, //int health; - DRAGOON_REGEN, //int regenRate; - SCA_CANJUMP|SCA_NOWEAPONDRIFT| - SCA_FOVWARPS|SCA_ALIENSENSE|SCA_NOFOOTSTEPS, //int abilities; - WP_POUNCE, //weapon_t startWeapon - 0.0f, //float buildDist; - 110, //int fov; - 0.0005f, //float bob; - 25, //int steptime; - DRAGOON_SPEED, //float speed; - 3.0f, //float sticky; - { PCL_A_O_LEV2, PCL_A_O_LEV1_UPG, PCL_NONE }, //int children[ 3 ]; - DRAGOON_TTE, //int timetoevolve; - DRAGOON_VALUE //int value; - }, - { - PCL_A_O_LEV1_UPG, //int classnum; - "dragoonupg", //char *classname; - "Dragoon Upgrade", //char *humanname; - "prowl", //char *modelname; - 0.75f, //float modelScale; - "default", //char *skinname; - "alien_general_hud", //char *hudname; - ( 1 << S1 )|( 1 << S2 )|( 1 << S3 ), //int stages - { -24, -24, -16 }, //vec3_t mins; - { 24, 24, 16 }, //vec3_t maxs; - { 24, 24, 16 }, //vec3_t crouchmaxs; - { -24, -24, -4 }, //vec3_t deadmins; - { 24, 24, 4 }, //vec3_t deadmaxs; - 20, 20, //int viewheight, crouchviewheight; - DRAGOON_UPG_HEALTH, //int health; - DRAGOON_UPG_REGEN, //int regenRate; - SCA_CANJUMP|SCA_NOWEAPONDRIFT| - SCA_FOVWARPS|SCA_ALIENSENSE|SCA_NOFOOTSTEPS, //int abilities; - WP_POUNCE_UPG, //weapon_t startWeapon - 0.0f, //float buildDist; - 110, //int fov; - 0.0005f, //float bob; - 25, //int steptime; - DRAGOON_UPG_SPEED, //float speed; - 3.0f, //float sticky; - { PCL_A_O_LEV2, PCL_NONE, PCL_NONE }, //int children[ 3 ]; - DRAGOON_UPG_TTE, //int timetoevolve; - DRAGOON_UPG_VALUE //int value; - }, - { - PCL_A_O_LEV2, //int classnum; "hydra", //char *classname; "Hydra", //char *humanname; "spitter", //char *modelname; @@ -1345,7 +1286,7 @@ classAttributes_t bg_classList[ ] = { 18, 18, 18 }, //vec3_t crouchmaxs; { -18, -18, -4 }, //vec3_t deadmins; { 18, 18, 4 }, //vec3_t deadmaxs; - 18, 18, //int viewheight, crouchviewheight; + 9, 9, //int viewheight, crouchviewheight; HYDRA_HEALTH, //int health; HYDRA_REGEN, //int regenRate; SCA_CANJUMP|SCA_NOWEAPONDRIFT| @@ -1353,17 +1294,17 @@ classAttributes_t bg_classList[ ] = SCA_NOFOOTSTEPS, //int abilities; WP_GRAB_CLAW, //weapon_t startWeapon 0.0f, //float buildDist; - 100, //int fov; + 120, //int fov; 0.001f, //float bob; 25, //int steptime; HYDRA_SPEED, //float speed; 4.0f, //float sticky; - { PCL_A_O_LEV3, PCL_A_O_LEV2_UPG, PCL_NONE }, //int children[ 3 ]; + { PCL_A_O_LEV2, PCL_A_O_LEV1_UPG, PCL_NONE }, //int children[ 3 ]; HYDRA_TTE, //int timetoevolve; HYDRA_VALUE //int value; }, { - PCL_A_O_LEV2_UPG, //int classnum; + PCL_A_O_LEV1_UPG, //int classnum; "hydraupg", //char *classname; "Hydra Upgrade", //char *humanname; "spitter", //char *modelname; @@ -1376,7 +1317,7 @@ classAttributes_t bg_classList[ ] = { 20, 20, 20 }, //vec3_t crouchmaxs; { -20, -20, -4 }, //vec3_t deadmins; { 20, 20, 4 }, //vec3_t deadmaxs; - 20, 20, //int viewheight, crouchviewheight; + 10, 10, //int viewheight, crouchviewheight; HYDRA_UPG_HEALTH, //int health; HYDRA_UPG_REGEN, //int regenRate; SCA_CANJUMP|SCA_NOWEAPONDRIFT|SCA_FOVWARPS| @@ -1384,16 +1325,76 @@ classAttributes_t bg_classList[ ] = SCA_NOFOOTSTEPS, //int abilities; WP_GRAB_CLAW_UPG, //weapon_t startWeapon 0.0f, //float buildDist; - 100, //int fov; + 120, //int fov; 0.001f, //float bob; 25, //int steptime; HYDRA_UPG_SPEED, //float speed; 4.0f, //float sticky; - { PCL_A_O_LEV3, PCL_NONE, PCL_NONE }, //int children[ 3 ]; + { PCL_A_O_LEV2, PCL_NONE, PCL_NONE }, //int children[ 3 ]; HYDRA_UPG_TTE, //int timetoevolve; HYDRA_UPG_VALUE //int value; }, { + PCL_A_O_LEV2, //int classnum; + "dragoon", //char *classname; + "Dragoon", //char *humanname; + "prowl", //char *modelname; + 1.0f, //float modelScale; + "default", //char *skinname; + "alien_general_hud", //char *hudname; + ( 1 << S1 )|( 1 << S2 )|( 1 << S3 ), //int stages + { -32, -32, -21 }, //vec3_t mins; + { 32, 32, 21 }, //vec3_t maxs; + { 32, 32, 21 }, //vec3_t crouchmaxs; + { -32, -32, -4 }, //vec3_t deadmins; + { 32, 32, 4 }, //vec3_t deadmaxs; + 24, 24, //int viewheight, crouchviewheight; + DRAGOON_HEALTH, //int health; + DRAGOON_REGEN, //int regenRate; + SCA_CANJUMP|SCA_NOWEAPONDRIFT| + SCA_FOVWARPS|SCA_ALIENSENSE|SCA_NOFOOTSTEPS, //int abilities; + WP_POUNCE, //weapon_t startWeapon + 0.0f, //float buildDist; + 110, //int fov; + 0.0005f, //float bob; + 25, //int steptime; + DRAGOON_SPEED, //float speed; + 3.0f, //float sticky; + { PCL_A_O_LEV3, PCL_A_O_LEV2_UPG, PCL_NONE }, //int children[ 3 ]; + DRAGOON_TTE, //int timetoevolve; + DRAGOON_VALUE //int value; + }, + { + PCL_A_O_LEV2_UPG, //int classnum; + "dragoonupg", //char *classname; + "Dragoon Upgrade", //char *humanname; + "prowl", //char *modelname; + 1.0f, //float modelScale; + "default", //char *skinname; + "alien_general_hud", //char *hudname; + ( 1 << S1 )|( 1 << S2 )|( 1 << S3 ), //int stages + { -32, -32, -21 }, //vec3_t mins; + { 32, 32, 21 }, //vec3_t maxs; + { 32, 32, 21 }, //vec3_t crouchmaxs; + { -32, -32, -4 }, //vec3_t deadmins; + { 32, 32, 4 }, //vec3_t deadmaxs; + 27, 27, //int viewheight, crouchviewheight; + DRAGOON_UPG_HEALTH, //int health; + DRAGOON_UPG_REGEN, //int regenRate; + SCA_CANJUMP|SCA_NOWEAPONDRIFT| + SCA_FOVWARPS|SCA_ALIENSENSE|SCA_NOFOOTSTEPS, //int abilities; + WP_POUNCE_UPG, //weapon_t startWeapon + 0.0f, //float buildDist; + 110, //int fov; + 0.0005f, //float bob; + 25, //int steptime; + DRAGOON_UPG_SPEED, //float speed; + 3.0f, //float sticky; + { PCL_A_O_LEV3, PCL_NONE, PCL_NONE }, //int children[ 3 ]; + DRAGOON_UPG_TTE, //int timetoevolve; + DRAGOON_UPG_VALUE //int value; + }, + { PCL_A_O_LEV3, //int classnum; "chimera", //char *classname; "Chimera", //char *humanname; diff --git a/src/game/g_client.c b/src/game/g_client.c index 472a1d5f..4c95708a 100644 --- a/src/game/g_client.c +++ b/src/game/g_client.c @@ -1383,9 +1383,9 @@ void ClientSpawn( gentity_t *ent, gentity_t *spawn ) client->ps.stats[ STAT_WEAPONS2 ] = 0; client->ps.stats[ STAT_SLOTS ] = 0; - //no credit - if( !spawn ) - client->ps.persistant[ PERS_CREDIT ] = 0; + //NON-VOLATILE CREDIT //no credit +/* if( !spawn ) + client->ps.persistant[ PERS_CREDIT ] = 0;*/ client->ps.eFlags = flags; client->ps.clientNum = index; diff --git a/src/game/g_cmds.c b/src/game/g_cmds.c index 98cd511b..a95f45ea 100644 --- a/src/game/g_cmds.c +++ b/src/game/g_cmds.c @@ -946,8 +946,6 @@ void Cmd_SetViewpos_f( gentity_t *ent ) } -#define NUM_AC 3 - /* ================= Cmd_Class_f @@ -965,14 +963,29 @@ void Cmd_Class_f( gentity_t *ent ) int i; trace_t tr; vec3_t infestOrigin, infestAngles; - int allowedClasses[ NUM_AC ] = { PCL_A_B_BASE, - PCL_A_O_BASE }; + int allowedClasses[ PCL_NUM_CLASSES ]; + int numClasses = 0; + int numLevels; vec3_t fromMins, fromMaxs, toMins, toMaxs; clientNum = ent->client - level.clients; trap_Argv( 1, s, sizeof( s ) ); + if( BG_FindStagesForClass( PCL_A_B_LEV1, g_alienStage.integer ) ) + { + allowedClasses[ 0 ] = PCL_A_B_BASE; + allowedClasses[ 1 ] = PCL_A_B_LEV1; + allowedClasses[ 2 ] = PCL_A_O_BASE; + numClasses = 3; + } + else + { + allowedClasses[ 0 ] = PCL_A_B_BASE; + allowedClasses[ 1 ] = PCL_A_O_BASE; + numClasses = 2; + } + if( ent->client->pers.pteam == PTE_ALIENS && !( ent->client->ps.stats[ STAT_STATE ] & SS_INFESTING ) && !( ent->client->ps.stats[ STAT_STATE ] & SS_HOVELING ) && @@ -1012,7 +1025,7 @@ void Cmd_Class_f( gentity_t *ent ) if( numLevels && BG_FindStagesForClass( ent->client->pers.pclass, g_alienStage.integer ) ) { //remove credit - ent->client->ps.persistant[ PERS_CREDIT ] -= (short)( numLevels - 1 ); + ent->client->ps.persistant[ PERS_CREDIT ] -= (short)numLevels; ClientUserinfoChanged( clientNum ); VectorCopy( infestOrigin, ent->s.pos.trBase ); @@ -1040,7 +1053,7 @@ void Cmd_Class_f( gentity_t *ent ) if( ent->client->pers.pclass != PCL_NONE ) { - for( i = 0; i < NUM_AC; i++ ) + for( i = 0; i < numClasses; i++ ) { if( allowedClasses[ i ] == ent->client->pers.pclass && BG_FindStagesForClass( ent->client->pers.pclass, g_alienStage.integer ) ) diff --git a/src/game/g_spawn.c b/src/game/g_spawn.c index 55b90229..2dec4aa2 100644 --- a/src/game/g_spawn.c +++ b/src/game/g_spawn.c @@ -307,8 +307,16 @@ qboolean G_CallSpawn( gentity_t *ent ) //check buildable spawn functions if( ( buildable = BG_FindBuildNumForEntityName( ent->classname ) ) != BA_NONE ) { - G_SpawnBuildable( ent, buildable ); - return qtrue; + if( BG_FindStagesForBuildable( buildable, 1 ) ) + { + G_SpawnBuildable( ent, buildable ); + return qtrue; + } + else + { + G_Printf( "G_CallSpawn: buildable disabled\n" ); + return qfalse; + } } // check normal spawn functions diff --git a/src/game/tremulous.h b/src/game/tremulous.h index deb419c9..35eb7a02 100644 --- a/src/game/tremulous.h +++ b/src/game/tremulous.h @@ -36,6 +36,17 @@ #define SOLDIER_BITE_RANGE 32.0f #define SOLDIER_BITE_REPEAT 500 +#define HYDRA_CLAW_DMG ADM(50) +#define HYDRA_CLAW_RANGE 96.0f +#define HYDRA_CLAW_REPEAT 500 +#define HYDRA_CLAW_U_REPEAT 500 +#define HYDRA_GRAB_RANGE 64.0f +#define HYDRA_GRAB_TIME 1000 +#define HYDRA_PCLOUD_DMG ADM(5) +#define HYDRA_PCLOUD_RANGE 200.0f +#define HYDRA_PCLOUD_REPEAT 1000 +#define HYDRA_PCLOUD_TIME 10000 + #define DRAGOON_CLAW_DMG ADM(75) #define DRAGOON_CLAW_RANGE 48.0f #define DRAGOON_CLAW_REPEAT 750 @@ -51,17 +62,6 @@ #define DRAGOON_SLOWBLOB_SPEED_MOD 0.5f #define DRAGOON_SLOWBLOB_TIME 5000 -#define HYDRA_CLAW_DMG ADM(50) -#define HYDRA_CLAW_RANGE 96.0f -#define HYDRA_CLAW_REPEAT 500 -#define HYDRA_CLAW_U_REPEAT 500 -#define HYDRA_GRAB_RANGE 64.0f -#define HYDRA_GRAB_TIME 1000 -#define HYDRA_PCLOUD_DMG ADM(5) -#define HYDRA_PCLOUD_RANGE 200.0f -#define HYDRA_PCLOUD_REPEAT 1000 -#define HYDRA_PCLOUD_TIME 10000 - #define CHIMERA_CLAW_DMG ADM(75) #define CHIMERA_CLAW_RANGE 96.0f #define CHIMERA_CLAW_REPEAT 400 @@ -119,29 +119,29 @@ #define SOLDIER_HEALTH AHM(25) #define SOLDIER_REGEN 1 -#define DRAGOON_SPEED 1.3f -#define DRAGOON_TTE 3000 -#define DRAGOON_VALUE AVM(100) -#define DRAGOON_HEALTH AHM(50) -#define DRAGOON_REGEN 2 - -#define DRAGOON_UPG_SPEED 1.3f -#define DRAGOON_UPG_TTE 3000 -#define DRAGOON_UPG_VALUE AVM(120) -#define DRAGOON_UPG_HEALTH AHM(60) -#define DRAGOON_UPG_REGEN 3 - #define HYDRA_SPEED 1.25f #define HYDRA_TTE 3000 -#define HYDRA_VALUE 200 -#define HYDRA_HEALTH AHM(100) -#define HYDRA_REGEN 4 +#define HYDRA_VALUE AVM(100) +#define HYDRA_HEALTH AHM(50) +#define HYDRA_REGEN 2 #define HYDRA_UPG_SPEED 1.25f #define HYDRA_UPG_TTE 3000 -#define HYDRA_UPG_VALUE AVM(240) -#define HYDRA_UPG_HEALTH AHM(120) -#define HYDRA_UPG_REGEN 5 +#define HYDRA_UPG_VALUE AVM(120) +#define HYDRA_UPG_HEALTH AHM(50) +#define HYDRA_UPG_REGEN 3 + +#define DRAGOON_SPEED 1.2f +#define DRAGOON_TTE 3000 +#define DRAGOON_VALUE AVM(200) +#define DRAGOON_HEALTH AHM(100) +#define DRAGOON_REGEN 4 + +#define DRAGOON_UPG_SPEED 1.2f +#define DRAGOON_UPG_TTE 3000 +#define DRAGOON_UPG_VALUE AVM(240) +#define DRAGOON_UPG_HEALTH AHM(120) +#define DRAGOON_UPG_REGEN 5 #define CHIMERA_SPEED 1.2f #define CHIMERA_TTE 3000 diff --git a/src/ui/ui_main.c b/src/ui/ui_main.c index 2bfe2b18..8f20effd 100644 --- a/src/ui/ui_main.c +++ b/src/ui/ui_main.c @@ -3226,7 +3226,7 @@ static void UI_StartSinglePlayer() { UI_GetCurrentAlienStage =============== */ -static stage_t UI_GetCurrentAlienStage( ) +static stage_t UI_GetCurrentAlienStage( void ) { char buffer[ MAX_TOKEN_CHARS ]; stage_t stage, dummy; @@ -3242,7 +3242,7 @@ static stage_t UI_GetCurrentAlienStage( ) UI_GetCurrentHumanStage =============== */ -static stage_t UI_GetCurrentHumanStage( ) +static stage_t UI_GetCurrentHumanStage( void ) { char buffer[ MAX_TOKEN_CHARS ]; stage_t stage, dummy; @@ -3258,7 +3258,7 @@ static stage_t UI_GetCurrentHumanStage( ) UI_LoadTremTeams =============== */ -static void UI_LoadTremTeams( ) +static void UI_LoadTremTeams( void ) { uiInfo.tremTeamCount = 3; uiInfo.tremTeamList[ 0 ].text = String_Alloc( "Aliens" ); @@ -3279,16 +3279,23 @@ static void UI_LoadTremTeams( ) UI_LoadTremAlienClasses =============== */ -static void UI_LoadTremAlienClasses( ) +static void UI_LoadTremAlienClasses( void ) { + pClass_t bClass; + uiInfo.tremAlienClassCount = 2; + if( BG_FindStagesForClass( PCL_A_B_LEV1, UI_GetCurrentAlienStage( ) ) ) + bClass = PCL_A_B_LEV1; + else + bClass = PCL_A_B_BASE; + uiInfo.tremAlienClassList[ 0 ].text = - String_Alloc( BG_FindHumanNameForClassNum( PCL_A_B_BASE ) ); + String_Alloc( BG_FindHumanNameForClassNum( bClass ) ); uiInfo.tremAlienClassList[ 0 ].cmd = - String_Alloc( va( "cmd class %s", BG_FindNameForClassNum( PCL_A_B_BASE ) ) ); + String_Alloc( va( "cmd class %s", BG_FindNameForClassNum( bClass ) ) ); uiInfo.tremAlienClassList[ 0 ].infopane = - UI_FindInfoPaneByName( va( "%sclass", BG_FindNameForClassNum( PCL_A_B_BASE ) ) ); + UI_FindInfoPaneByName( va( "%sclass", BG_FindNameForClassNum( bClass ) ) ); uiInfo.tremAlienClassList[ 1 ].text = String_Alloc( BG_FindHumanNameForClassNum( PCL_A_O_BASE ) ); @@ -3303,7 +3310,7 @@ static void UI_LoadTremAlienClasses( ) UI_LoadTremHumanItems =============== */ -static void UI_LoadTremHumanItems( ) +static void UI_LoadTremHumanItems( void ) { uiInfo.tremHumanItemCount = 2; |