diff options
author | Tim Angus <tim@ngus.net> | 2005-07-21 01:42:41 +0000 |
---|---|---|
committer | Tim Angus <tim@ngus.net> | 2005-07-21 01:42:41 +0000 |
commit | 48d452bba1e9845d7935e03c520623f0b65a136d (patch) | |
tree | a14ca612d27d7f254920771b1f0a0d0ceb55afe9 /src/game | |
parent | e98dcba13a94fb5c826d5d2e50d2a7bcc67040d1 (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.c | 4 | ||||
-rw-r--r-- | src/game/bg_public.h | 1 | ||||
-rw-r--r-- | src/game/g_client.c | 2 | ||||
-rw-r--r-- | src/game/g_combat.c | 28 | ||||
-rw-r--r-- | src/game/g_main.c | 38 | ||||
-rw-r--r-- | src/game/g_team.c | 2 | ||||
-rw-r--r-- | src/game/tremulous.h | 72 |
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 |