diff options
-rw-r--r-- | src/cgame/cg_draw.c | 6 | ||||
-rw-r--r-- | src/game/bg_misc.c | 88 | ||||
-rw-r--r-- | src/game/g_active.c | 2 | ||||
-rw-r--r-- | src/game/g_client.c | 47 | ||||
-rw-r--r-- | src/game/g_cmds.c | 6 | ||||
-rw-r--r-- | src/game/tremulous.h | 12 |
6 files changed, 104 insertions, 57 deletions
diff --git a/src/cgame/cg_draw.c b/src/cgame/cg_draw.c index 675e791d..188c1e44 100644 --- a/src/cgame/cg_draw.c +++ b/src/cgame/cg_draw.c @@ -861,9 +861,13 @@ static void CG_DrawPlayerAmmoValue( rectDef_t *rect, vec4_t color ) { case WP_ABUILD: case WP_ABUILD2: + //percentage of BP remaining + value = (int)( ( (float)cgs.alienBuildPoints / (float)cgs.alienBuildPointsTotal ) * 100.0f ); + break; + case WP_HBUILD: case WP_HBUILD2: - //percentage of power remaining + //percentage of BP remaining value = (int)( ( (float)cgs.humanBuildPoints / (float)cgs.humanBuildPointsTotal ) * 100.0f ); break; diff --git a/src/game/bg_misc.c b/src/game/bg_misc.c index ad5727ca..7512c19c 100644 --- a/src/game/bg_misc.c +++ b/src/game/bg_misc.c @@ -1220,7 +1220,7 @@ classAttributes_t bg_classList[ ] = { 15, 15, 20 }, //vec3_t crouchmaxs; { -15, -15, -4 }, //vec3_t deadmins; { 15, 15, 4 }, //vec3_t deadmaxs; - 12, 12, //int viewheight, crouchviewheight; + 20, 20, //int viewheight, crouchviewheight; ABUILDER_HEALTH, //int health; ABUILDER_REGEN, //int regenRate; SCA_TAKESFALLDAMAGE|SCA_FOVWARPS| @@ -1250,7 +1250,7 @@ classAttributes_t bg_classList[ ] = { 20, 20, 20 }, //vec3_t crouchmaxs; { -20, -20, -4 }, //vec3_t deadmins; { 20, 20, 4 }, //vec3_t deadmaxs; - 0, 0, //int viewheight, crouchviewheight; + 20, 20, //int viewheight, crouchviewheight; ABUILDER_UPG_HEALTH, //int health; ABUILDER_UPG_REGEN, //int regenRate; SCA_CANJUMP|SCA_FOVWARPS|SCA_WALLCLIMBER| @@ -1310,14 +1310,14 @@ classAttributes_t bg_classList[ ] = { 24, 24, 9 }, //vec3_t crouchmaxs; { -24, -24, -4 }, //vec3_t deadmins; { 24, 24, 4 }, //vec3_t deadmaxs; - 6, 6, //int viewheight, crouchviewheight; + 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; - 120, //int fov; + 110, //int fov; 0.0005f, //float bob; 25, //int steptime; DRAGOON_SPEED, //float speed; @@ -1340,14 +1340,14 @@ classAttributes_t bg_classList[ ] = { 24, 24, 11 }, //vec3_t crouchmaxs; { -24, -24, -4 }, //vec3_t deadmins; { 24, 24, 4 }, //vec3_t deadmaxs; - 6, 6, //int viewheight, crouchviewheight; + 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; - 120, //int fov; + 110, //int fov; 0.0005f, //float bob; 25, //int steptime; DRAGOON_UPG_SPEED, //float speed; @@ -1361,16 +1361,16 @@ classAttributes_t bg_classList[ ] = "hydra", //char *classname; "Hydra", //char *humanname; "spitter", //char *modelname; - 0.4f, //float modelScale; + 0.6f, //float modelScale; "default", //char *skinname; "alien_hud", //char *hudname; ( 1 << S1 )|( 1 << S2 )|( 1 << S3 ), //int stages - { -24, -24, -12 }, //vec3_t mins; - { 24, 24, 12 }, //vec3_t maxs; - { 24, 24, 12 }, //vec3_t crouchmaxs; - { -24, -24, -4 }, //vec3_t deadmins; - { 24, 24, 4 }, //vec3_t deadmaxs; - 6, 6, //int viewheight, crouchviewheight; + { -18, -18, -18 }, //vec3_t mins; + { 18, 18, 18 }, //vec3_t maxs; + { 18, 18, 18 }, //vec3_t crouchmaxs; + { -18, -18, -4 }, //vec3_t deadmins; + { 18, 18, 4 }, //vec3_t deadmaxs; + 18, 18, //int viewheight, crouchviewheight; HYDRA_HEALTH, //int health; HYDRA_REGEN, //int regenRate; SCA_CANJUMP|SCA_NOWEAPONDRIFT| @@ -1378,7 +1378,7 @@ classAttributes_t bg_classList[ ] = SCA_NOFOOTSTEPS, //int abilities; WP_GRAB_CLAW, //weapon_t startWeapon 0.0f, //float buildDist; - 120, //int fov; + 100, //int fov; 0.001f, //float bob; 25, //int steptime; HYDRA_SPEED, //float speed; @@ -1392,16 +1392,16 @@ classAttributes_t bg_classList[ ] = "hydraupg", //char *classname; "Hydra Upgrade", //char *humanname; "spitter", //char *modelname; - 0.5f, //float modelScale; + 0.7f, //float modelScale; "blue", //char *skinname; "alien_hud", //char *hudname; ( 1 << S1 )|( 1 << S2 )|( 1 << S3 ), //int stages - { -24, -24, -14 }, //vec3_t mins; - { 24, 24, 14 }, //vec3_t maxs; - { 24, 24, 14 }, //vec3_t crouchmaxs; - { -24, -24, -4 }, //vec3_t deadmins; - { 24, 24, 4 }, //vec3_t deadmaxs; - 6, 6, //int viewheight, crouchviewheight; + { -20, -20, -20 }, //vec3_t mins; + { 20, 20, 20 }, //vec3_t maxs; + { 20, 20, 20 }, //vec3_t crouchmaxs; + { -20, -20, -4 }, //vec3_t deadmins; + { 20, 20, 4 }, //vec3_t deadmaxs; + 20, 20, //int viewheight, crouchviewheight; HYDRA_UPG_HEALTH, //int health; HYDRA_UPG_REGEN, //int regenRate; SCA_CANJUMP|SCA_NOWEAPONDRIFT|SCA_FOVWARPS| @@ -1409,7 +1409,7 @@ classAttributes_t bg_classList[ ] = SCA_NOFOOTSTEPS, //int abilities; WP_GRAB_CLAW_UPG, //weapon_t startWeapon 0.0f, //float buildDist; - 120, //int fov; + 100, //int fov; 0.001f, //float bob; 25, //int steptime; HYDRA_UPG_SPEED, //float speed; @@ -1423,23 +1423,23 @@ classAttributes_t bg_classList[ ] = "chimera", //char *classname; "Chimera", //char *humanname; "tarantula", //char *modelname; - 0.5f, //float modelScale; + 0.75f, //float modelScale; "default", //char *skinname; "alien_hud", //char *hudname; ( 1 << S1 )|( 1 << S2 )|( 1 << S3 ), //int stages - { -15, -15, -15 }, //vec3_t mins; - { 15, 15, 15 }, //vec3_t maxs; - { 15, 15, 15 }, //vec3_t crouchmaxs; - { -15, -15, -4 }, //vec3_t deadmins; - { 15, 15, 4 }, //vec3_t deadmaxs; - 4, 4, //int viewheight, crouchviewheight; + { -22, -22, -22 }, //vec3_t mins; + { 22, 22, 22 }, //vec3_t maxs; + { 22, 22, 22 }, //vec3_t crouchmaxs; + { -22, -22, -4 }, //vec3_t deadmins; + { 22, 22, 4 }, //vec3_t deadmaxs; + 30, 30, //int viewheight, crouchviewheight; CHIMERA_HEALTH, //int health; CHIMERA_REGEN, //int regenRate; SCA_CANJUMP|SCA_NOWEAPONDRIFT| SCA_FOVWARPS|SCA_ALIENSENSE|SCA_NOFOOTSTEPS, //int abilities; WP_AREA_ZAP, //weapon_t startWeapon 0.0f, //float buildDist; - 130, //int fov; + 90, //int fov; 0.0f, //float bob; 60, //int steptime; CHIMERA_SPEED, //float speed; @@ -1453,23 +1453,23 @@ classAttributes_t bg_classList[ ] = "chimeraupg", //char *classname; "Chimera Upgrade", //char *humanname; "tarantula", //char *modelname; - 0.6f, //float modelScale; + 0.9f, //float modelScale; "red", //char *skinname; "alien_hud", //char *hudname; ( 1 << S1 )|( 1 << S2 )|( 1 << S3 ), //int stages - { -15, -15, -16 }, //vec3_t mins; - { 15, 15, 16 }, //vec3_t maxs; - { 15, 15, 16 }, //vec3_t crouchmaxs; - { -15, -15, -4 }, //vec3_t deadmins; - { 15, 15, 4 }, //vec3_t deadmaxs; - 4, 4, //int viewheight, crouchviewheight; + { -24, -24, -24 }, //vec3_t mins; + { 24, 24, 24 }, //vec3_t maxs; + { 24, 24, 24 }, //vec3_t crouchmaxs; + { -24, -24, -4 }, //vec3_t deadmins; + { 24, 24, 4 }, //vec3_t deadmaxs; + 32, 32, //int viewheight, crouchviewheight; CHIMERA_UPG_HEALTH, //int health; CHIMERA_UPG_REGEN, //int regenRate; SCA_CANJUMP|SCA_NOWEAPONDRIFT| SCA_FOVWARPS|SCA_ALIENSENSE|SCA_NOFOOTSTEPS, //int abilities; WP_DIRECT_ZAP, //weapon_t startWeapon 0.0f, //float buildDist; - 130, //int fov; + 90, //int fov; 0.0f, //float bob; 60, //int steptime; CHIMERA_UPG_SPEED, //float speed; @@ -1483,23 +1483,23 @@ classAttributes_t bg_classList[ ] = "bigmofo", //char *classname; "Big Mofo", //char *humanname; "bug", //char *modelname; - 1.5f, //float modelScale; + 1.2f, //float modelScale; "default", //char *skinname; "alien_hud", //char *hudname; ( 1 << S1 )|( 1 << S2 )|( 1 << S3 ), //int stages - { -30, -30, -36 }, //vec3_t mins; - { 30, 30, 36 }, //vec3_t maxs; - { 30, 30, 36 }, //vec3_t crouchmaxs; + { -30, -30, -29 }, //vec3_t mins; + { 30, 30, 29 }, //vec3_t maxs; + { 30, 30, 29 }, //vec3_t crouchmaxs; { -15, -15, -4 }, //vec3_t deadmins; { 15, 15, 4 }, //vec3_t deadmaxs; - 4, 4, //int viewheight, crouchviewheight; + 50, 50, //int viewheight, crouchviewheight; BMOFO_HEALTH, //int health; BMOFO_REGEN, //int regenRate; SCA_CANJUMP|SCA_NOWEAPONDRIFT| SCA_FOVWARPS|SCA_ALIENSENSE|SCA_NOFOOTSTEPS, //int abilities; WP_GROUND_POUND, //weapon_t startWeapon 0.0f, //float buildDist; - 130, //int fov; + 90, //int fov; 0.0f, //float bob; 60, //int steptime; BMOFO_SPEED, //float speed; diff --git a/src/game/g_active.c b/src/game/g_active.c index 7c643014..bb0211b6 100644 --- a/src/game/g_active.c +++ b/src/game/g_active.c @@ -1153,7 +1153,7 @@ void ClientThink_real( gentity_t *ent ) } // check for respawning - if( client->ps.stats[STAT_HEALTH] <= 0 ) + if( client->ps.stats[ STAT_HEALTH ] <= 0 ) { // wait for the attack button to be pressed if( level.time > client->respawnTime ) diff --git a/src/game/g_client.c b/src/game/g_client.c index b6bb58f8..c943faa8 100644 --- a/src/game/g_client.c +++ b/src/game/g_client.c @@ -1231,10 +1231,12 @@ void ClientSpawn( gentity_t *ent, gentity_t *spawn ) int teamLocal; int eventSequence; char userinfo[MAX_INFO_STRING]; - vec3_t bodyMaxs, classMins, up = { 0, 0, 1 }; + vec3_t classMins, classMaxs, up = { 0, 0, 1 }; int ammo, clips, maxClips; weapon_t weapon; float hModifier; + trace_t tr; + vec3_t avgNormal, nudgeOrigin; index = ent - g_entities; @@ -1275,10 +1277,47 @@ void ClientSpawn( gentity_t *ent, gentity_t *spawn ) VectorCopy( spawn->s.pos.trBase, spawn_origin ); VectorCopy( spawn->s.angles, spawn_angles ); - BG_FindBBoxForClass( spawn->s.clientNum, NULL, NULL, NULL, NULL, bodyMaxs ); - BG_FindBBoxForClass( ent->client->pers.pclass, classMins, NULL, NULL, NULL, NULL ); + BG_FindBBoxForClass( ent->client->pers.pclass, classMins, classMaxs, NULL, NULL, NULL ); - spawn_origin[ 2 ] += bodyMaxs[ 2 ] + fabs( classMins[ 2 ] ) + 1; + spawn_origin[ 2 ] += fabs( classMins[ 2 ] ) + 1; + + trap_Trace( &tr, spawn_origin, classMins, classMaxs, spawn_origin, ent->s.number, MASK_SHOT ); + +#define MAX_NUDGES 20 +#define NUDGE_SIZE 10.f + + VectorClear( avgNormal ); + VectorCopy( spawn_origin, nudgeOrigin ); + + //if the spawn is blocked nudge it away from whatever is blocking it + for( i = 0; i < MAX_NUDGES && tr.fraction < 1.0f; i++ ) + { + VectorMA( nudgeOrigin, NUDGE_SIZE, tr.plane.normal, nudgeOrigin ); + VectorAdd( avgNormal, tr.plane.normal, avgNormal ); + + trap_Trace( &tr, nudgeOrigin, classMins, classMaxs, nudgeOrigin, ent->s.number, MASK_SHOT ); + } + + if( i = MAX_NUDGES ) + { + VectorNormalize( avgNormal ); + VectorCopy( spawn_origin, nudgeOrigin ); + + for( i = 0; i < MAX_NUDGES && tr.fraction < 1.0f; i++ ) + { + VectorMA( nudgeOrigin, NUDGE_SIZE, avgNormal, nudgeOrigin ); + + trap_Trace( &tr, nudgeOrigin, classMins, classMaxs, nudgeOrigin, ent->s.number, MASK_SHOT ); + } + + if( i != MAX_NUDGES ) + VectorCopy( nudgeOrigin, spawn_origin ); + //else + //use original position and hope PM sorts it out + } + else + VectorCopy( nudgeOrigin, spawn_origin ); + G_AddEvent( spawn, EV_GIB_ALIEN, DirToByte( up ) ); spawn->freeAfterEvent = qtrue; diff --git a/src/game/g_cmds.c b/src/game/g_cmds.c index 32c3c6ee..ed269e34 100644 --- a/src/game/g_cmds.c +++ b/src/game/g_cmds.c @@ -1031,7 +1031,11 @@ void Cmd_Class_f( gentity_t *ent ) ent->client->infestBody = victim; VectorCopy( victim->s.pos.trBase, infestOrigin ); - infestOrigin[ 2 ] += 128; + infestOrigin[ 2 ] += 128.0f; + trap_Trace( &tr, victim->s.pos.trBase, ent->r.mins, ent->r.maxs, + infestOrigin, ent->s.number, MASK_SHOT ); + VectorCopy( tr.endpos, infestOrigin ); + infestOrigin[ 2 ] -= 16.0f; VectorCopy( victim->s.angles, infestAngles ); diff --git a/src/game/tremulous.h b/src/game/tremulous.h index e4dece74..1c554f07 100644 --- a/src/game/tremulous.h +++ b/src/game/tremulous.h @@ -27,7 +27,7 @@ #define ABUILDER_BUILD_REPEAT 500 #define ABUILDER_CLAW_DMG ADM(25) -#define ABUILDER_CLAW_RANGE 32.0f +#define ABUILDER_CLAW_RANGE 48.0f #define ABUILDER_CLAW_REPEAT 1000 #define ABUILDER_BASE_DELAY 9000 #define ABUILDER_ADV_DELAY 4000 @@ -37,7 +37,7 @@ #define SOLDIER_BITE_REPEAT 500 #define DRAGOON_CLAW_DMG ADM(75) -#define DRAGOON_CLAW_RANGE 32.0f +#define DRAGOON_CLAW_RANGE 48.0f #define DRAGOON_CLAW_REPEAT 750 #define DRAGOON_CLAW_U_REPEAT 750 #define DRAGOON_POUNCE_DMG ADM(100) @@ -52,10 +52,10 @@ #define DRAGOON_SLOWBLOB_TIME 5000 #define HYDRA_CLAW_DMG ADM(50) -#define HYDRA_CLAW_RANGE 32.0f +#define HYDRA_CLAW_RANGE 96.0f #define HYDRA_CLAW_REPEAT 500 #define HYDRA_CLAW_U_REPEAT 500 -#define HYDRA_GRAB_RANGE 32.0f +#define HYDRA_GRAB_RANGE 64.0f #define HYDRA_GRAB_TIME 1000 #define HYDRA_PCLOUD_DMG ADM(5) #define HYDRA_PCLOUD_RANGE 200.0f @@ -63,7 +63,7 @@ #define HYDRA_PCLOUD_TIME 10000 #define CHIMERA_CLAW_DMG ADM(75) -#define CHIMERA_CLAW_RANGE 32.0f +#define CHIMERA_CLAW_RANGE 96.0f #define CHIMERA_CLAW_REPEAT 400 #define CHIMERA_CLAW_U_REPEAT 300 #define CHIMERA_AREAZAP_DMG ADM(125) @@ -74,7 +74,7 @@ #define CHIMERA_DIRECTZAP_REPEAT 1500 #define BMOFO_CLAW_DMG ADM(150) -#define BMOFO_CLAW_RANGE 64.0f +#define BMOFO_CLAW_RANGE 128.0f #define BMOFO_CLAW_REPEAT 750 #define BMOFO_KNOCK_RANGE 200.0f #define BMOFO_KNOCK_REPEAT 15000 |