summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorTim Angus <tim@ngus.net>2005-06-29 23:35:55 +0000
committerTim Angus <tim@ngus.net>2005-06-29 23:35:55 +0000
commit7c13523d9b02f1319dec7dd0dece68f96f17ed35 (patch)
treecbcfcc603bc34f8352a9a9bf021a5393ccf63821 /src
parent0e56723b5c2e42c67bb12eca353caccc7a1a3886 (diff)
* Fixed a bug where menus would appear during demo playback
* Fixed a bug where delayed suicide would persist over death * Reduced turret health and damage, increased range * Generally strengthened alien buildable health and regen a little * Increased damage that hives do * Unlocked the trapper at stage 1 * Lev0 alien can now damage human defensive structures * Booster now doubles alien regeneration rate * Updated dependancies
Diffstat (limited to 'src')
-rw-r--r--src/cgame/cg_servercmds.c2
-rw-r--r--src/game/bg_misc.c2
-rw-r--r--src/game/g_active.c14
-rw-r--r--src/game/g_combat.c1
-rw-r--r--src/game/g_weapon.c35
-rw-r--r--src/game/tremulous.h45
6 files changed, 62 insertions, 37 deletions
diff --git a/src/cgame/cg_servercmds.c b/src/cgame/cg_servercmds.c
index f01382ec..7a9ed748 100644
--- a/src/cgame/cg_servercmds.c
+++ b/src/cgame/cg_servercmds.c
@@ -908,7 +908,7 @@ static void CG_ServerCommand( void )
//the server has triggered a menu
if( !strcmp( cmd, "servermenu" ) )
{
- if( trap_Argc( ) == 2 )
+ if( trap_Argc( ) == 2 && !cg.demoPlayback )
CG_Menu( atoi( CG_Argv( 1 ) ) );
return;
diff --git a/src/game/bg_misc.c b/src/game/bg_misc.c
index 498db049..83d509dd 100644
--- a/src/game/bg_misc.c
+++ b/src/game/bg_misc.c
@@ -208,7 +208,7 @@ buildableAttributes_t bg_buildableList[ ] =
TR_GRAVITY, //trType_t traj;
0.0, //float bounce;
TRAPPER_BP, //int buildPoints;
- ( 1 << S2 )|( 1 << S3 ), //int stages
+ ( 1 << S1 )|( 1 << S2 )|( 1 << S3 ), //int stages
TRAPPER_HEALTH, //int health;
TRAPPER_REGEN, //int regenRate;
TRAPPER_SPLASHDAMAGE, //int splashDamage;
diff --git a/src/game/g_active.c b/src/game/g_active.c
index 93360a12..ee5d1aa3 100644
--- a/src/game/g_active.c
+++ b/src/game/g_active.c
@@ -695,7 +695,7 @@ void ClientTimerActions( gentity_t *ent, int msec )
vec3_t range = { LEVEL4_REGEN_RANGE, LEVEL4_REGEN_RANGE, LEVEL4_REGEN_RANGE };
vec3_t mins, maxs;
int i, num;
- gentity_t *alienPlayer;
+ gentity_t *boostEntity;
float modifier = 1.0f;
VectorAdd( client->ps.origin, range, maxs );
@@ -704,14 +704,20 @@ void ClientTimerActions( gentity_t *ent, int msec )
num = trap_EntitiesInBox( mins, maxs, entityList, MAX_GENTITIES );
for( i = 0; i < num; i++ )
{
- alienPlayer = &g_entities[ entityList[ i ] ];
+ boostEntity = &g_entities[ entityList[ i ] ];
- if( alienPlayer->client && alienPlayer->client->ps.stats[ STAT_PTEAM ] == PTE_ALIENS &&
- alienPlayer->client->ps.stats[ STAT_PCLASS ] == PCL_ALIEN_LEVEL4 )
+ if( boostEntity->client && boostEntity->client->ps.stats[ STAT_PTEAM ] == PTE_ALIENS &&
+ boostEntity->client->ps.stats[ STAT_PCLASS ] == PCL_ALIEN_LEVEL4 )
{
modifier = LEVEL4_REGEN_MOD;
break;
}
+ else if( boostEntity->s.eType == ET_BUILDABLE &&
+ boostEntity->s.modelindex == BA_A_BOOSTER )
+ {
+ modifier = BOOSTER_REGEN_MOD;
+ break;
+ }
}
if( ent->health < client->ps.stats[ STAT_MAX_HEALTH ] &&
diff --git a/src/game/g_combat.c b/src/game/g_combat.c
index e923c1ee..0bf8b1b8 100644
--- a/src/game/g_combat.c
+++ b/src/game/g_combat.c
@@ -164,6 +164,7 @@ void player_die( gentity_t *self, gentity_t *inflictor, gentity_t *attacker, int
return;
self->client->ps.pm_type = PM_DEAD;
+ self->suicideTime = 0;
if( attacker )
{
diff --git a/src/game/g_weapon.c b/src/game/g_weapon.c
index aca895d6..c12c82d0 100644
--- a/src/game/g_weapon.c
+++ b/src/game/g_weapon.c
@@ -696,6 +696,7 @@ qboolean CheckVenomAttack( gentity_t *ent )
gentity_t *tent;
gentity_t *traceEnt;
vec3_t mins, maxs;
+ int damage = LEVEL0_BITE_DMG;
VectorSet( mins, -LEVEL0_BITE_WIDTH, -LEVEL0_BITE_WIDTH, -LEVEL0_BITE_WIDTH );
VectorSet( maxs, LEVEL0_BITE_WIDTH, LEVEL0_BITE_WIDTH, LEVEL0_BITE_WIDTH );
@@ -709,22 +710,38 @@ qboolean CheckVenomAttack( gentity_t *ent )
trap_Trace( &tr, muzzle, mins, maxs, end, ent->s.number, MASK_SHOT );
- if ( tr.surfaceFlags & SURF_NOIMPACT )
+ if( tr.surfaceFlags & SURF_NOIMPACT )
return qfalse;
traceEnt = &g_entities[ tr.entityNum ];
- if( !traceEnt->takedamage)
- return qfalse;
- if( !traceEnt->client )
- return qfalse;
- if( traceEnt->client->ps.stats[ STAT_PTEAM ] == PTE_ALIENS )
+ if( !traceEnt->takedamage )
return qfalse;
- if( traceEnt->client->ps.stats[ STAT_HEALTH ] <= 0 )
+
+ if( !traceEnt->client && !traceEnt->s.eType == ET_BUILDABLE )
return qfalse;
+ //allow bites to work against defensive buildables only
+ if( traceEnt->s.eType == ET_BUILDABLE )
+ {
+ if( traceEnt->s.modelindex != BA_H_MGTURRET &&
+ traceEnt->s.modelindex != BA_H_TESLAGEN )
+ return qfalse;
+
+ //hackery
+ damage *= 0.5f;
+ }
+
+ if( traceEnt->client )
+ {
+ if( traceEnt->client->ps.stats[ STAT_PTEAM ] == PTE_ALIENS )
+ return qfalse;
+ if( traceEnt->client->ps.stats[ STAT_HEALTH ] <= 0 )
+ return qfalse;
+ }
+
// send blood impact
- if ( traceEnt->takedamage && traceEnt->client )
+ if( traceEnt->takedamage && traceEnt->client )
{
tent = G_TempEntity( tr.endpos, EV_MISSILE_HIT );
tent->s.otherEntityNum = traceEnt->s.number;
@@ -733,7 +750,7 @@ qboolean CheckVenomAttack( gentity_t *ent )
tent->s.generic1 = ent->s.generic1; //weaponMode
}
- G_Damage( traceEnt, ent, ent, forward, tr.endpos, LEVEL0_BITE_DMG, DAMAGE_NO_KNOCKBACK, MOD_LEVEL0_BITE );
+ G_Damage( traceEnt, ent, ent, forward, tr.endpos, damage, DAMAGE_NO_KNOCKBACK, MOD_LEVEL0_BITE );
return qtrue;
}
diff --git a/src/game/tremulous.h b/src/game/tremulous.h
index f444fc5d..5f7831ec 100644
--- a/src/game/tremulous.h
+++ b/src/game/tremulous.h
@@ -139,31 +139,31 @@
#define LEVEL1_UPG_SPEED 1.25f
#define LEVEL1_UPG_VALUE AVM(275)
#define LEVEL1_UPG_HEALTH AHM(100)
-#define LEVEL1_UPG_REGEN 2
+#define LEVEL1_UPG_REGEN 3
#define LEVEL1_UPG_COST 1
#define LEVEL2_SPEED 1.2f
#define LEVEL2_VALUE AVM(350)
#define LEVEL2_HEALTH AHM(150)
-#define LEVEL2_REGEN 3
+#define LEVEL2_REGEN 4
#define LEVEL2_COST 1
#define LEVEL2_UPG_SPEED 1.2f
#define LEVEL2_UPG_VALUE AVM(450)
#define LEVEL2_UPG_HEALTH AHM(175)
-#define LEVEL2_UPG_REGEN 4
+#define LEVEL2_UPG_REGEN 5
#define LEVEL2_UPG_COST 1
#define LEVEL3_SPEED 1.1f
#define LEVEL3_VALUE AVM(500)
#define LEVEL3_HEALTH AHM(200)
-#define LEVEL3_REGEN 5
+#define LEVEL3_REGEN 6
#define LEVEL3_COST 1
#define LEVEL3_UPG_SPEED 1.1f
#define LEVEL3_UPG_VALUE AVM(600)
#define LEVEL3_UPG_HEALTH AHM(250)
-#define LEVEL3_UPG_REGEN 6
+#define LEVEL3_UPG_REGEN 7
#define LEVEL3_UPG_COST 1
#define LEVEL4_SPEED 1.2f
@@ -188,7 +188,7 @@
*
*/
-#define ALIEN_BHLTH_MODIFIER 0.5f
+#define ALIEN_BHLTH_MODIFIER 1.0f
#define ABHM(h) ((int)((float)h*ALIEN_BHLTH_MODIFIER))
#define CREEP_BASESIZE 700
@@ -199,7 +199,7 @@
#define ASPAWN_BP 10
#define ASPAWN_BT 15000
-#define ASPAWN_HEALTH ABHM(500)
+#define ASPAWN_HEALTH ABHM(250)
#define ASPAWN_REGEN 8
#define ASPAWN_SPLASHDAMAGE 50
#define ASPAWN_SPLASHRADIUS 50
@@ -208,7 +208,7 @@
#define BARRICADE_BP 10
#define BARRICADE_BT 20000
-#define BARRICADE_HEALTH ABHM(400)
+#define BARRICADE_HEALTH ABHM(200)
#define BARRICADE_REGEN 12
#define BARRICADE_SPLASHDAMAGE 50
#define BARRICADE_SPLASHRADIUS 50
@@ -216,17 +216,18 @@
#define BOOSTER_BP 12
#define BOOSTER_BT 15000
-#define BOOSTER_HEALTH ABHM(300)
+#define BOOSTER_HEALTH ABHM(150)
#define BOOSTER_REGEN 8
#define BOOSTER_SPLASHDAMAGE 50
#define BOOSTER_SPLASHRADIUS 50
#define BOOSTER_CREEPSIZE 120
#define BOOSTER_INTERVAL 30000 //time in msec between uses (per player)
+#define BOOSTER_REGEN_MOD 2.0f
#define ACIDTUBE_BP 8
#define ACIDTUBE_BT 15000
-#define ACIDTUBE_HEALTH ABHM(200)
-#define ACIDTUBE_REGEN 8
+#define ACIDTUBE_HEALTH ABHM(125)
+#define ACIDTUBE_REGEN 10
#define ACIDTUBE_SPLASHDAMAGE 30
#define ACIDTUBE_SPLASHRADIUS 300
#define ACIDTUBE_CREEPSIZE 120
@@ -235,20 +236,20 @@
#define HIVE_BP 12
#define HIVE_BT 20000
-#define HIVE_HEALTH ABHM(200)
-#define HIVE_REGEN 8
+#define HIVE_HEALTH ABHM(125)
+#define HIVE_REGEN 10
#define HIVE_SPLASHDAMAGE 30
#define HIVE_SPLASHRADIUS 200
#define HIVE_CREEPSIZE 120
#define HIVE_RANGE 400.0f
-#define HIVE_REPEAT 10000
-#define HIVE_DMG 20
-#define HIVE_SPEED 230.0f
+#define HIVE_REPEAT 5000
+#define HIVE_DMG 50
+#define HIVE_SPEED 240.0f
#define HIVE_DIR_CHANGE_PERIOD 500
#define TRAPPER_BP 10
#define TRAPPER_BT 12000
-#define TRAPPER_HEALTH ABHM(80)
+#define TRAPPER_HEALTH ABHM(50)
#define TRAPPER_REGEN 6
#define TRAPPER_SPLASHDAMAGE 15
#define TRAPPER_SPLASHRADIUS 100
@@ -260,7 +261,7 @@
#define OVERMIND_BP 0
#define OVERMIND_BT 30000
-#define OVERMIND_HEALTH ABHM(1000)
+#define OVERMIND_HEALTH ABHM(500)
#define OVERMIND_REGEN 10
#define OVERMIND_SPLASHDAMAGE 15
#define OVERMIND_SPLASHRADIUS 300
@@ -271,7 +272,7 @@
#define HOVEL_BP 8
#define HOVEL_BT 15000
-#define HOVEL_HEALTH ABHM(750)
+#define HOVEL_HEALTH ABHM(375)
#define HOVEL_REGEN 20
#define HOVEL_SPLASHDAMAGE 20
#define HOVEL_SPLASHRADIUS 200
@@ -472,16 +473,16 @@
#define MGTURRET_BP 8
#define MGTURRET_BT 10000
-#define MGTURRET_HEALTH HBHM(350)
+#define MGTURRET_HEALTH HBHM(300)
#define MGTURRET_SPLASHDAMAGE 200
#define MGTURRET_SPLASHRADIUS 150
#define MGTURRET_ANGULARSPEED 8 //degrees/think ~= 200deg/sec
#define MGTURRET_ACCURACYTOLERANCE MGTURRET_ANGULARSPEED / 1.5f //angular difference for turret to fire
#define MGTURRET_VERTICALCAP 30 // +/- maximum pitch
#define MGTURRET_REPEAT 100
-#define MGTURRET_RANGE 250
+#define MGTURRET_RANGE 300.0f
#define MGTURRET_SPREAD 200
-#define MGTURRET_DMG HDM(5)
+#define MGTURRET_DMG HDM(4)
#define MGTURRET_DCC_ANGULARSPEED 10
#define MGTURRET_DCC_ACCURACYTOLERANCE MGTURRET_DCC_ANGULARSPEED / 1.5f