From 48d452bba1e9845d7935e03c520623f0b65a136d Mon Sep 17 00:00:00 2001 From: Tim Angus Date: Thu, 21 Jul 2005 01:42:41 +0000 Subject: * 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 --- src/cgame/cg_buildable.c | 8 +++- src/cgame/cg_draw.c | 96 +++++++++++++++++++++++++++++++++++++++++++++-- src/cgame/cg_ents.c | 7 +++- src/cgame/cg_event.c | 2 +- src/cgame/cg_local.h | 4 ++ src/cgame/cg_main.c | 1 - src/cgame/cg_servercmds.c | 8 +++- src/game/bg_misc.c | 4 -- src/game/bg_public.h | 1 - src/game/g_client.c | 2 +- src/game/g_combat.c | 28 +------------- src/game/g_main.c | 38 ++++++++++++++++--- src/game/g_team.c | 2 +- src/game/tremulous.h | 72 +++++++++++++++++------------------ 14 files changed, 188 insertions(+), 85 deletions(-) (limited to 'src') diff --git a/src/cgame/cg_buildable.c b/src/cgame/cg_buildable.c index 9f4e6661..3b462dec 100644 --- a/src/cgame/cg_buildable.c +++ b/src/cgame/cg_buildable.c @@ -559,14 +559,20 @@ static void CG_RunBuildableLerpFrame( centity_t *cent ) { if( cg_debugRandom.integer ) CG_Printf( "newAnimation: %d lf->animationNumber: %d lf->animation: %d\n", - newAnimation, lf->animationNumber, !!lf->animation ); + newAnimation, lf->animationNumber, lf->animation ); CG_SetBuildableLerpFrameAnimation( buildable, lf, newAnimation ); if( !cg_buildables[ buildable ].sounds[ newAnimation ].looped && cg_buildables[ buildable ].sounds[ newAnimation ].enabled ) + { + if( cg_debugRandom.integer ) + CG_Printf( "Sound for animation %d for a %s\n", + newAnimation, BG_FindHumanNameForBuildable( buildable ) ); + trap_S_StartSound( cent->lerpOrigin, cent->currentState.number, CHAN_AUTO, cg_buildables[ buildable ].sounds[ newAnimation ].sound ); + } } if( cg_buildables[ buildable ].sounds[ lf->animationNumber ].looped && diff --git a/src/cgame/cg_draw.c b/src/cgame/cg_draw.c index 7d2fbedd..5df933af 100644 --- a/src/cgame/cg_draw.c +++ b/src/cgame/cg_draw.c @@ -1652,6 +1652,70 @@ static void CG_DrawTeamSpectators( rectDef_t *rect, float scale, vec4_t color, q } } +/* +================== +CG_DrawStageReport +================== +*/ +static void CG_DrawStageReport( rectDef_t *rect, float text_x, float text_y, + vec4_t color, float scale, int align, int textStyle ) +{ + char s[ MAX_TOKEN_CHARS ]; + int tx, w, kills; + + if( cg.snap->ps.persistant[ PERS_TEAM ] == TEAM_SPECTATOR ) + return; + + if( cg.snap->ps.stats[ STAT_PTEAM ] == PTE_ALIENS ) + { + kills = cgs.alienNextStageThreshold - cgs.alienKills; + + if( cgs.alienNextStageThreshold < 0 ) + Com_sprintf( s, MAX_TOKEN_CHARS, "Stage %d", cgs.alienStage + 1 ); + else if( kills == 1 ) + Com_sprintf( s, MAX_TOKEN_CHARS, "Stage %d, %d kill for next stage", + cgs.alienStage + 1, kills ); + else + Com_sprintf( s, MAX_TOKEN_CHARS, "Stage %d, %d kills for next stage", + cgs.alienStage + 1, kills ); + } + else if( cg.snap->ps.stats[ STAT_PTEAM ] == PTE_HUMANS ) + { + kills = cgs.humanNextStageThreshold - cgs.humanKills; + + if( cgs.humanNextStageThreshold < 0 ) + Com_sprintf( s, MAX_TOKEN_CHARS, "Stage %d", cgs.humanStage + 1 ); + else if( kills == 1 ) + Com_sprintf( s, MAX_TOKEN_CHARS, "Stage %d, %d kill for next stage", + cgs.humanStage + 1, kills ); + else + Com_sprintf( s, MAX_TOKEN_CHARS, "Stage %d, %d kills for next stage", + cgs.humanStage + 1, kills ); + } + + w = CG_Text_Width( s, scale, 0 ); + + switch( align ) + { + case ITEM_ALIGN_LEFT: + tx = rect->x; + break; + + case ITEM_ALIGN_RIGHT: + tx = rect->x + rect->w - w; + break; + + case ITEM_ALIGN_CENTER: + tx = rect->x + ( rect->w / 2.0f ) - ( w / 2.0f ); + break; + + default: + tx = 0.0f; + } + + CG_Text_Paint( text_x + tx, rect->y + text_y, scale, color, s, 0, 0, textStyle ); +} + /* ================== CG_DrawFPS @@ -1998,12 +2062,15 @@ static void CG_DrawDisconnect( void ) #define MAX_LAGOMETER_PING 900 #define MAX_LAGOMETER_RANGE 300 +#define PING_FRAMES 40 + /* ============== CG_DrawLagometer ============== */ -static void CG_DrawLagometer( rectDef_t *rect, qhandle_t shader ) +static void CG_DrawLagometer( rectDef_t *rect, float text_x, float text_y, + float scale, vec4_t textColor ) { int a, x, y, i; float v; @@ -2027,7 +2094,6 @@ static void CG_DrawLagometer( rectDef_t *rect, qhandle_t shader ) ah = rect->h; trap_R_SetColor( NULL ); - CG_DrawPic( x, y, rect->w, rect->h, shader ); CG_AdjustFrom640( &ax, &ay, &aw, &ah ); @@ -2125,6 +2191,27 @@ static void CG_DrawLagometer( rectDef_t *rect, qhandle_t shader ) if( cg_nopredict.integer || cg_synchronousClients.integer ) CG_Text_Paint( ax, ay, 0.5, white, "snc", 0, 0, ITEM_TEXTSTYLE_NORMAL ); + else + { + static int previousPings[ PING_FRAMES ]; + static int index; + int i, ping = 0; + char *s; + + previousPings[ index++ ] = cg.snap->ping; + index = index % PING_FRAMES; + + for( i = 0; i < PING_FRAMES; i++ ) + ping += previousPings[ i ]; + + ping /= PING_FRAMES; + + s = va( "%d", ping ); + ax = rect->x + ( rect->w / 2.0f ) - ( CG_Text_Width( s, scale, 0 ) / 2.0f ) + text_x; + ay = rect->y + ( rect->h / 2.0f ) + ( CG_Text_Height( s, scale, 0 ) / 2.0f ) + text_y; + + CG_Text_Paint( ax, ay, scale, textColor, s, 0, 0, ITEM_TEXTSTYLE_NORMAL ); + } CG_DrawDisconnect( ); } @@ -2505,6 +2592,9 @@ void CG_OwnerDraw( float x, float y, float w, float h, float text_x, case CG_PLAYER_CROSSHAIRNAMES: CG_DrawCrosshairNames( &rect, scale, textStyle ); break; + case CG_STAGE_REPORT_TEXT: + CG_DrawStageReport( &rect, text_x, text_y, color, scale, align, textStyle ); + break; //loading screen case CG_LOAD_LEVELSHOT: @@ -2560,7 +2650,7 @@ void CG_OwnerDraw( float x, float y, float w, float h, float text_x, CG_DrawSnapshot( &rect, text_x, text_y, scale, color, align, textStyle ); break; case CG_LAGOMETER: - CG_DrawLagometer( &rect, shader ); + CG_DrawLagometer( &rect, text_x, text_y, scale, color ); break; case CG_CONSOLE: diff --git a/src/cgame/cg_ents.c b/src/cgame/cg_ents.c index 44779bf6..1ed6cb2e 100644 --- a/src/cgame/cg_ents.c +++ b/src/cgame/cg_ents.c @@ -889,10 +889,12 @@ CG_CEntityPVSEnter */ static void CG_CEntityPVSEnter( centity_t *cent ) { + entityState_t *es = ¢->currentState; + if( cg_debugPVS.integer ) CG_Printf( "Entity %d entered PVS\n", cent->currentState.number ); - switch( cent->currentState.eType ) + switch( es->eType ) { case ET_MISSILE: CG_LaunchMissile( cent ); @@ -910,7 +912,8 @@ static void CG_CEntityPVSEnter( centity_t *cent ) //make sure that the buildable animations are in a consistent state //when a buildable enters the PVS - cent->buildableAnim = BANIM_NONE; + cent->buildableAnim = cent->lerpFrame.animationNumber = BANIM_NONE; + cent->oldBuildableAnim = es->legsAnim; } diff --git a/src/cgame/cg_event.c b/src/cgame/cg_event.c index 891e1371..80a82016 100644 --- a/src/cgame/cg_event.c +++ b/src/cgame/cg_event.c @@ -250,7 +250,7 @@ static void CG_Obituary( entityState_t *ent ) message2 = className; break; case MOD_LEVEL3_CLAW: - message = "was clawed by"; + message = "was chomped by"; Com_sprintf( className, 64, "'s %s", BG_FindHumanNameForClassNum( PCL_ALIEN_LEVEL3 ) ); message2 = className; diff --git a/src/cgame/cg_local.h b/src/cgame/cg_local.h index 69c6946b..8db55818 100644 --- a/src/cgame/cg_local.h +++ b/src/cgame/cg_local.h @@ -1301,6 +1301,10 @@ typedef struct int alienStage; int humanStage; + int alienKills; + int humanKills; + int alienNextStageThreshold; + int humanNextStageThreshold; int numAlienSpawns; int numHumanSpawns; diff --git a/src/cgame/cg_main.c b/src/cgame/cg_main.c index 17772d30..0239c95d 100644 --- a/src/cgame/cg_main.c +++ b/src/cgame/cg_main.c @@ -1045,7 +1045,6 @@ void CG_StartMusic( void ) trap_S_StartBackgroundTrack( parm1, parm2 ); } -//TA: FIXME: preliminary integration of CG TA UI stuff // // ============================== // new hud stuff ( mission pack ) diff --git a/src/cgame/cg_servercmds.c b/src/cgame/cg_servercmds.c index bec94eee..a045a6ec 100644 --- a/src/cgame/cg_servercmds.c +++ b/src/cgame/cg_servercmds.c @@ -151,7 +151,8 @@ void CG_SetConfigValues( void ) &cgs.humanBuildPointsTotal, &cgs.humanBuildPointsPowered ); - sscanf( CG_ConfigString( CS_STAGES ), "%d %d", &cgs.alienStage, &cgs.humanStage ); + sscanf( CG_ConfigString( CS_STAGES ), "%d %d %d %d %d %d", &cgs.alienStage, &cgs.humanStage, + &cgs.alienKills, &cgs.humanKills, &cgs.alienNextStageThreshold, &cgs.humanNextStageThreshold ); sscanf( CG_ConfigString( CS_SPAWNS ), "%d %d", &cgs.numAlienSpawns, &cgs.numHumanSpawns ); cgs.levelStartTime = atoi( CG_ConfigString( CS_LEVEL_START_TIME ) ); @@ -279,7 +280,10 @@ static void CG_ConfigStringModified( void ) stage_t oldAlienStage = cgs.alienStage; stage_t oldHumanStage = cgs.humanStage; - sscanf( str, "%d %d", &cgs.alienStage, &cgs.humanStage ); + sscanf( str, "%d %d %d %d %d %d", + &cgs.alienStage, &cgs.humanStage, + &cgs.alienKills, &cgs.humanKills, + &cgs.alienNextStageThreshold, &cgs.humanNextStageThreshold ); if( cgs.alienStage != oldAlienStage ) CG_AnnounceAlienStageTransistion( oldAlienStage, cgs.alienStage ); 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 -- cgit