summaryrefslogtreecommitdiff
path: root/src/game
diff options
context:
space:
mode:
authorTim Angus <tim@ngus.net>2005-07-21 01:42:41 +0000
committerTim Angus <tim@ngus.net>2005-07-21 01:42:41 +0000
commit48d452bba1e9845d7935e03c520623f0b65a136d (patch)
treea14ca612d27d7f254920771b1f0a0d0ceb55afe9 /src/game
parente98dcba13a94fb5c826d5d2e50d2a7bcc67040d1 (diff)
* Change death by dragoon obituary from "clawed" to "chomped"
* Fixed the bug where spectators saw team chat * Added ping display to the lagometer * Renormalised some balance variables * Fixed the bug where bodies would sometimes disappear immediately after death * Fixed the "dancing buildables" bug * Fixed the bug where buildable animation sounds were inappropriately played upon entering PVS * Fixed a subtle stage bug * Added code to indicate which stage a team is on via the scoreboard
Diffstat (limited to 'src/game')
-rw-r--r--src/game/bg_misc.c4
-rw-r--r--src/game/bg_public.h1
-rw-r--r--src/game/g_client.c2
-rw-r--r--src/game/g_combat.c28
-rw-r--r--src/game/g_main.c38
-rw-r--r--src/game/g_team.c2
-rw-r--r--src/game/tremulous.h72
7 files changed, 72 insertions, 75 deletions
diff --git a/src/game/bg_misc.c b/src/game/bg_misc.c
index 08484549..bd3db376 100644
--- a/src/game/bg_misc.c
+++ b/src/game/bg_misc.c
@@ -4550,8 +4550,6 @@ void BG_PlayerStateToEntityState( playerState_t *ps, entityState_t *s, qboolean
if( ps->pm_type == PM_INTERMISSION || ps->pm_type == PM_SPECTATOR || ps->pm_type == PM_FREEZE )
s->eType = ET_INVISIBLE;
- else if( ps->stats[STAT_HEALTH] <= GIB_HEALTH )
- s->eType = ET_INVISIBLE;
else if( ps->persistant[ PERS_TEAM ] == TEAM_SPECTATOR )
s->eType = ET_INVISIBLE;
else
@@ -4654,8 +4652,6 @@ void BG_PlayerStateToEntityStateExtraPolate( playerState_t *ps, entityState_t *s
if( ps->pm_type == PM_INTERMISSION || ps->pm_type == PM_SPECTATOR || ps->pm_type == PM_FREEZE )
s->eType = ET_INVISIBLE;
- else if( ps->stats[STAT_HEALTH] <= GIB_HEALTH )
- s->eType = ET_INVISIBLE;
else if( ps->persistant[ PERS_TEAM ] == TEAM_SPECTATOR )
s->eType = ET_INVISIBLE;
else
diff --git a/src/game/bg_public.h b/src/game/bg_public.h
index 0ac09d26..ee2cb067 100644
--- a/src/game/bg_public.h
+++ b/src/game/bg_public.h
@@ -23,7 +23,6 @@
#define GAME_VERSION "baseq3-1"
#define DEFAULT_GRAVITY 800
-#define GIB_HEALTH -40
#define SCORE_NOT_PRESENT -9999 // for the CS_SCORES[12] when only one player is present
diff --git a/src/game/g_client.c b/src/game/g_client.c
index 4ece1b5f..23fca525 100644
--- a/src/game/g_client.c
+++ b/src/game/g_client.c
@@ -701,7 +701,7 @@ void SpawnCorpse( gentity_t *ent )
body->takedamage = qfalse;
body->health = ent->health = ent->client->ps.stats[ STAT_HEALTH ];
- ent->health = ent->client->ps.stats[ STAT_HEALTH ] = GIB_HEALTH - 1;
+ ent->health = 0;
//change body dimensions
BG_FindBBoxForClass( ent->client->ps.stats[ STAT_PCLASS ], NULL, NULL, NULL, body->r.mins, body->r.maxs );
diff --git a/src/game/g_combat.c b/src/game/g_combat.c
index 515ecfe7..7b84ccc2 100644
--- a/src/game/g_combat.c
+++ b/src/game/g_combat.c
@@ -70,24 +70,6 @@ void LookAtKiller( gentity_t *self, gentity_t *inflictor, gentity_t *attacker )
angles[ ROLL ] = 0;
}
-/*
-==================
-body_die
-==================
-*/
-void body_die( gentity_t *self, gentity_t *inflictor, gentity_t *attacker, int damage, int meansOfDeath )
-{
- if( self->health > GIB_HEALTH )
- return;
-
- if( !g_blood.integer )
- {
- self->health = GIB_HEALTH + 1;
- return;
- }
-}
-
-
// these are just for logging, the client prints its own messages
char *modNames[ ] =
{
@@ -387,7 +369,7 @@ void player_die( gentity_t *self, gentity_t *inflictor, gentity_t *attacker, int
self->client->pers.classSelection = PCL_NONE; //TA: reset the classtype
- self->takedamage = qtrue; // can still be gibbed
+ self->takedamage = qfalse; // can still be gibbed
self->s.weapon = WP_NONE;
self->r.contents = CONTENTS_CORPSE;
@@ -447,11 +429,6 @@ void player_die( gentity_t *self, gentity_t *inflictor, gentity_t *attacker, int
}
}
- // for the no-blood option, we need to prevent the health
- // from going to gib level
- if( self->health <= GIB_HEALTH )
- self->health = GIB_HEALTH+1;
-
self->client->ps.legsAnim =
( ( self->client->ps.legsAnim & ANIM_TOGGLEBIT ) ^ ANIM_TOGGLEBIT ) | anim;
@@ -463,9 +440,6 @@ void player_die( gentity_t *self, gentity_t *inflictor, gentity_t *attacker, int
G_AddEvent( self, EV_DEATH1 + i, killer );
- // the body can still be gibbed
- self->die = body_die;
-
// globally cycle through the different death animations
i = ( i + 1 ) % 3;
}
diff --git a/src/game/g_main.c b/src/game/g_main.c
index 94175c4d..badacdb4 100644
--- a/src/game/g_main.c
+++ b/src/game/g_main.c
@@ -891,6 +891,8 @@ void G_CountSpawns( void )
}
+#define PLAYER_COUNT_MOD 5.0f
+
/*
============
G_CalculateBuildPoints
@@ -965,11 +967,37 @@ void G_CalculateBuildPoints( void )
level.humanBuildPointsPowered ) );
//may as well pump the stages here too
- trap_SetConfigstring( CS_STAGES, va( "%d %d",
- g_alienStage.integer, g_humanStage.integer ) );
-}
+ {
+ float alienPlayerCountMod = (float)level.numAlienClients / PLAYER_COUNT_MOD;
+ float humanPlayerCountMod = (float)level.numHumanClients / PLAYER_COUNT_MOD;
+ int alienNextStageThreshold, humanNextStageThreshold;
-#define PLAYER_COUNT_MOD 5.0f
+ if( alienPlayerCountMod < 0.1f )
+ alienPlayerCountMod = 0.1f;
+
+ if( humanPlayerCountMod < 0.1f )
+ humanPlayerCountMod = 0.1f;
+
+ if( g_alienStage.integer == S1 && g_alienMaxStage.integer > S1 )
+ alienNextStageThreshold = (int)( (float)g_alienStage2Threshold.integer * alienPlayerCountMod );
+ else if( g_alienStage.integer == S2 && g_alienMaxStage.integer > S2 )
+ alienNextStageThreshold = (int)( (float)g_alienStage3Threshold.integer * alienPlayerCountMod );
+ else
+ alienNextStageThreshold = -1;
+
+ if( g_humanStage.integer == S1 && g_humanMaxStage.integer > S1 )
+ humanNextStageThreshold = (int)( (float)g_humanStage2Threshold.integer * humanPlayerCountMod );
+ else if( g_humanStage.integer == S2 && g_humanMaxStage.integer > S2 )
+ humanNextStageThreshold = (int)( (float)g_humanStage3Threshold.integer * humanPlayerCountMod );
+ else
+ humanNextStageThreshold = -1;
+
+ trap_SetConfigstring( CS_STAGES, va( "%d %d %d %d %d %d",
+ g_alienStage.integer, g_humanStage.integer,
+ g_alienKills.integer, g_humanKills.integer,
+ alienNextStageThreshold, humanNextStageThreshold ) );
+ }
+}
/*
============
@@ -979,7 +1007,7 @@ G_CalculateStages
void G_CalculateStages( void )
{
float alienPlayerCountMod = (float)level.numAlienClients / PLAYER_COUNT_MOD;
- float humanPlayerCountMod = (float)level.numAlienClients / PLAYER_COUNT_MOD;
+ float humanPlayerCountMod = (float)level.numHumanClients / PLAYER_COUNT_MOD;
if( alienPlayerCountMod < 0.1f )
alienPlayerCountMod = 0.1f;
diff --git a/src/game/g_team.c b/src/game/g_team.c
index 538a29e2..9e0eb078 100644
--- a/src/game/g_team.c
+++ b/src/game/g_team.c
@@ -48,7 +48,7 @@ qboolean OnSameTeam( gentity_t *ent1, gentity_t *ent2 )
if( !ent1->client || !ent2->client )
return qfalse;
- if( ent1->client->ps.stats[ STAT_PTEAM ] == ent2->client->ps.stats[ STAT_PTEAM ] )
+ if( ent1->client->pers.teamSelection == ent2->client->pers.teamSelection )
return qtrue;
return qfalse;
diff --git a/src/game/tremulous.h b/src/game/tremulous.h
index 2416dff9..d82b64aa 100644
--- a/src/game/tremulous.h
+++ b/src/game/tremulous.h
@@ -22,66 +22,66 @@
*
*/
-#define ALIEN_WDMG_MODIFIER 0.80f
+#define ALIEN_WDMG_MODIFIER 1.0f
#define ADM(d) ((int)((float)d*ALIEN_WDMG_MODIFIER))
#define ABUILDER_BUILD_REPEAT 500
-#define ABUILDER_CLAW_DMG ADM(25)
+#define ABUILDER_CLAW_DMG ADM(20)
#define ABUILDER_CLAW_RANGE 64.0f
#define ABUILDER_CLAW_WIDTH 4.0f
#define ABUILDER_CLAW_REPEAT 1000
#define ABUILDER_BASE_DELAY 17000
#define ABUILDER_ADV_DELAY 12000
-#define ABUILDER_BLOB_DMG ADM(5)
+#define ABUILDER_BLOB_DMG ADM(4)
#define ABUILDER_BLOB_REPEAT 1000
#define ABUILDER_BLOB_SPEED 800.0f
#define ABUILDER_BLOB_SPEED_MOD 0.5f
#define ABUILDER_BLOB_TIME 5000
-#define LEVEL0_BITE_DMG ADM(60)
+#define LEVEL0_BITE_DMG ADM(48)
#define LEVEL0_BITE_RANGE 64.0f
#define LEVEL0_BITE_WIDTH 6.0f
#define LEVEL0_BITE_REPEAT 500
-#define LEVEL1_CLAW_DMG ADM(40)
+#define LEVEL1_CLAW_DMG ADM(32)
#define LEVEL1_CLAW_RANGE 96.0f
#define LEVEL1_CLAW_WIDTH 10.0f
#define LEVEL1_CLAW_REPEAT 600
#define LEVEL1_CLAW_U_REPEAT 500
#define LEVEL1_GRAB_RANGE 64.0f
#define LEVEL1_GRAB_TIME 1000
-#define LEVEL1_PCLOUD_DMG ADM(5)
+#define LEVEL1_PCLOUD_DMG ADM(4)
#define LEVEL1_PCLOUD_RANGE 200.0f
#define LEVEL1_PCLOUD_REPEAT 2000
#define LEVEL1_PCLOUD_TIME 10000
-#define LEVEL2_CLAW_DMG ADM(50)
+#define LEVEL2_CLAW_DMG ADM(40)
#define LEVEL2_CLAW_RANGE 96.0f
#define LEVEL2_CLAW_WIDTH 12.0f
#define LEVEL2_CLAW_REPEAT 500
#define LEVEL2_CLAW_U_REPEAT 400
-#define LEVEL2_AREAZAP_DMG ADM(100)
+#define LEVEL2_AREAZAP_DMG ADM(80)
#define LEVEL2_AREAZAP_RANGE 200.0f
#define LEVEL2_AREAZAP_REPEAT 3000
#define LEVEL2_WALLJUMP_MAXSPEED 1000.0f
-#define LEVEL3_CLAW_DMG ADM(100)
+#define LEVEL3_CLAW_DMG ADM(80)
#define LEVEL3_CLAW_RANGE 96.0f
#define LEVEL3_CLAW_WIDTH 16.0f
#define LEVEL3_CLAW_REPEAT 700
#define LEVEL3_CLAW_U_REPEAT 600
-#define LEVEL3_POUNCE_DMG ADM(200)
+#define LEVEL3_POUNCE_DMG ADM(160)
#define LEVEL3_POUNCE_RANGE 96.0f
#define LEVEL3_POUNCE_WIDTH 16.0f
#define LEVEL3_POUNCE_SPEED 700
#define LEVEL3_POUNCE_UPG_SPEED 800
#define LEVEL3_POUNCE_SPEED_MOD 0.75f
#define LEVEL3_POUNCE_TIME 700
-#define LEVEL3_BOUNCEBALL_DMG ADM(150)
+#define LEVEL3_BOUNCEBALL_DMG ADM(120)
#define LEVEL3_BOUNCEBALL_REPEAT 1000
#define LEVEL3_BOUNCEBALL_SPEED 1000.0f
-#define LEVEL4_CLAW_DMG ADM(150)
+#define LEVEL4_CLAW_DMG ADM(120)
#define LEVEL4_CLAW_RANGE 128.0f
#define LEVEL4_CLAW_WIDTH 20.0f
#define LEVEL4_CLAW_REPEAT 750
@@ -92,7 +92,7 @@
#define LEVEL4_CHARGE_CHARGE_TIME 1000
#define LEVEL4_CHARGE_CHARGE_RATIO (LEVEL4_CHARGE_TIME/LEVEL4_CHARGE_CHARGE_TIME)
#define LEVEL4_CHARGE_REPEAT 500
-#define LEVEL4_CHARGE_DMG ADM(200)
+#define LEVEL4_CHARGE_DMG ADM(160)
@@ -308,13 +308,13 @@
*
*/
-#define HUMAN_WDMG_MODIFIER 1.13f
+#define HUMAN_WDMG_MODIFIER 1.0f
#define HDM(d) ((int)((float)d*HUMAN_WDMG_MODIFIER))
#define BLASTER_REPEAT 600
#define BLASTER_SPREAD 200
#define BLASTER_SPEED 700
-#define BLASTER_DMG HDM(10)
+#define BLASTER_DMG HDM(9)
#define RIFLE_CLIPSIZE 30
#define RIFLE_SPAWNCLIPS 4
@@ -323,16 +323,16 @@
#define RIFLE_RELOAD 2000
#define RIFLE_PRICE 0
#define RIFLE_SPREAD 200
-#define RIFLE_DMG HDM(6)
+#define RIFLE_DMG HDM(5)
#define PAINSAW_PRICE 100
#define PAINSAW_REPEAT 75
-#define PAINSAW_DAMAGE HDM(20)
+#define PAINSAW_DAMAGE HDM(18)
#define PAINSAW_RANGE 48.0f
#define GRENADE_PRICE 300
#define GRENADE_REPEAT 0
-#define GRENADE_DAMAGE HDM(350)
+#define GRENADE_DAMAGE HDM(310)
#define GRENADE_RANGE 192.0f
#define GRENADE_SPEED 400.0f
@@ -344,19 +344,19 @@
#define SHOTGUN_REPEAT 1200
#define SHOTGUN_RELOAD 2000
#define SHOTGUN_SPREAD 900
-#define SHOTGUN_DMG HDM(7)
+#define SHOTGUN_DMG HDM(6)
#define LASGUN_PRICE 250
#define LASGUN_AMMO 150
#define LASGUN_REPEAT 200
#define LASGUN_RELOAD 2000
-#define LASGUN_DAMAGE HDM(10)
+#define LASGUN_DAMAGE HDM(9)
#define MDRIVER_PRICE 350
#define MDRIVER_CLIPSIZE 5
#define MDRIVER_SPAWNCLIPS 3
#define MDRIVER_MAXCLIPS 3
-#define MDRIVER_DMG HDM(35)
+#define MDRIVER_DMG HDM(31)
#define MDRIVER_REPEAT 1000
#define MDRIVER_RELOAD 2000
@@ -364,7 +364,7 @@
#define CHAINGUN_BULLETS 200
#define CHAINGUN_REPEAT 80
#define CHAINGUN_SPREAD 1000
-#define CHAINGUN_DMG HDM(6)
+#define CHAINGUN_DMG HDM(5)
#define PRIFLE_PRICE 400
#define PRIFLE_CLIPS 50
@@ -372,13 +372,13 @@
#define PRIFLE_MAXCLIPS 2
#define PRIFLE_REPEAT 100
#define PRIFLE_RELOAD 2000
-#define PRIFLE_DMG HDM(10)
+#define PRIFLE_DMG HDM(9)
#define PRIFLE_SPEED 1000
#define FLAMER_PRICE 450
#define FLAMER_GAS 80
#define FLAMER_REPEAT 300
-#define FLAMER_DMG HDM(35)
+#define FLAMER_DMG HDM(31)
#define FLAMER_RADIUS 50
#define FLAMER_LIFETIME 500.0f
#define FLAMER_SPEED 200.0f
@@ -389,9 +389,9 @@
#define LCANNON_REPEAT 500
#define LCANNON_CHARGEREPEAT 1000
#define LCANNON_RELOAD 2000
-#define LCANNON_DAMAGE HDM(300)
+#define LCANNON_DAMAGE HDM(265)
#define LCANNON_RADIUS 150
-#define LCANNON_SECONDARY_DAMAGE HDM(30)
+#define LCANNON_SECONDARY_DAMAGE HDM(27)
#define LCANNON_SECONDARY_RADIUS 75
#define LCANNON_SPEED 350
#define LCANNON_CHARGE_TIME 2000
@@ -452,7 +452,7 @@
*
*/
-#define HUMAN_BHLTH_MODIFIER 0.62f
+#define HUMAN_BHLTH_MODIFIER 1.0f
#define HBHM(h) ((int)((float)h*HUMAN_BHLTH_MODIFIER))
#define REACTOR_BASESIZE 1000
@@ -461,20 +461,20 @@
#define HSPAWN_BP 10
#define HSPAWN_BT 10000
-#define HSPAWN_HEALTH HBHM(500)
+#define HSPAWN_HEALTH HBHM(310)
#define HSPAWN_SPLASHDAMAGE 50
#define HSPAWN_SPLASHRADIUS 100
#define HSPAWN_VALUE 1
#define MEDISTAT_BP 8
#define MEDISTAT_BT 10000
-#define MEDISTAT_HEALTH HBHM(300)
+#define MEDISTAT_HEALTH HBHM(190)
#define MEDISTAT_SPLASHDAMAGE 50
#define MEDISTAT_SPLASHRADIUS 100
#define MGTURRET_BP 8
#define MGTURRET_BT 10000
-#define MGTURRET_HEALTH HBHM(300)
+#define MGTURRET_HEALTH HBHM(190)
#define MGTURRET_SPLASHDAMAGE 200
#define MGTURRET_SPLASHRADIUS 150
#define MGTURRET_ANGULARSPEED 8 //degrees/think ~= 200deg/sec
@@ -491,28 +491,28 @@
#define TESLAGEN_BP 10
#define TESLAGEN_BT 15000
-#define TESLAGEN_HEALTH HBHM(350)
+#define TESLAGEN_HEALTH HBHM(220)
#define TESLAGEN_SPLASHDAMAGE 50
#define TESLAGEN_SPLASHRADIUS 100
#define TESLAGEN_REPEAT 500
#define TESLAGEN_RANGE 250
-#define TESLAGEN_DMG HDM(15)
+#define TESLAGEN_DMG HDM(13)
#define DC_BP 8
#define DC_BT 10000
-#define DC_HEALTH HBHM(300)
+#define DC_HEALTH HBHM(190)
#define DC_SPLASHDAMAGE 50
#define DC_SPLASHRADIUS 100
#define ARMOURY_BP 10
#define ARMOURY_BT 10000
-#define ARMOURY_HEALTH HBHM(450)
+#define ARMOURY_HEALTH HBHM(280)
#define ARMOURY_SPLASHDAMAGE 50
#define ARMOURY_SPLASHRADIUS 100
#define REACTOR_BP 0
#define REACTOR_BT 20000
-#define REACTOR_HEALTH HBHM(1500)
+#define REACTOR_HEALTH HBHM(930)
#define REACTOR_SPLASHDAMAGE 200
#define REACTOR_SPLASHRADIUS 300
#define REACTOR_ATTACK_RANGE 100.0f
@@ -522,7 +522,7 @@
#define REPEATER_BP 0
#define REPEATER_BT 10000
-#define REPEATER_HEALTH HBHM(400)
+#define REPEATER_HEALTH HBHM(250)
#define REPEATER_SPLASHDAMAGE 50
#define REPEATER_SPLASHRADIUS 100
#define REPEATER_INACTIVE_TIME 90000