summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorTim Angus <tim@ngus.net>2004-01-11 00:20:04 +0000
committerTim Angus <tim@ngus.net>2004-01-11 00:20:04 +0000
commit5b4909a3e494eb8c677e3ae65818469fa9c22e3c (patch)
treefe72405533331b4995a3a41c8f582b73998dacf5 /src
parentbddd5e171dabad555ac767013de9114678a82ee7 (diff)
* Sorted out hydra gas screwups
* Synced MOD_ and EV_ lists * Removed "devmap" command from map rotation system * Increased soldier bite damage to 50 * Reduced price of light armour to 70 * Added visibility tests to the hive and acid tube * Some other stuff
Diffstat (limited to 'src')
-rw-r--r--src/cgame/cg_event.c10
-rw-r--r--src/cgame/cg_local.h2
-rw-r--r--src/cgame/cg_servercmds.c11
-rw-r--r--src/cgame/cg_view.c13
-rw-r--r--src/game/bg_misc.c28
-rw-r--r--src/game/bg_public.h1
-rw-r--r--src/game/g_buildable.c6
-rw-r--r--src/game/g_client.c4
-rw-r--r--src/game/g_cmds.c20
-rw-r--r--src/game/g_combat.c2
-rw-r--r--src/game/g_maprotation.c2
-rw-r--r--src/game/g_weapon.c2
-rw-r--r--src/game/tremulous.h18
13 files changed, 77 insertions, 42 deletions
diff --git a/src/cgame/cg_event.c b/src/cgame/cg_event.c
index 0df4ea5c..b9f4f714 100644
--- a/src/cgame/cg_event.c
+++ b/src/cgame/cg_event.c
@@ -852,16 +852,6 @@ void CG_EntityEvent( centity_t *cent, vec3_t position )
}
break;
- case EV_POISONCLOUD:
- DEBUGNAME( "EV_POISONCLOUD" );
- cg.poisonedTime = cg.time;
- {
- particleSystem_t *ps = CG_SpawnNewParticleSystem( cgs.media.poisonCloudPS );
- CG_SetParticleSystemCent( ps, &cg.predictedPlayerEntity );
- CG_AttachParticleSystemToCent( ps );
- }
- break;
-
case EV_ALIEN_EVOLVE:
DEBUGNAME( "EV_ALIEN_EVOLVE" );
trap_S_StartSound( NULL, es->number, CHAN_BODY, cgs.media.alienEvolveSound );
diff --git a/src/cgame/cg_local.h b/src/cgame/cg_local.h
index 8a660c4a..14527607 100644
--- a/src/cgame/cg_local.h
+++ b/src/cgame/cg_local.h
@@ -1013,6 +1013,8 @@ typedef struct
consoleLine_t consoleLines[ MAX_CONSOLE_LINES ];
int numConsoleLines;
qboolean consoleValid;
+
+ particleSystem_t *poisonCloudPS;
} cg_t;
diff --git a/src/cgame/cg_servercmds.c b/src/cgame/cg_servercmds.c
index fdd11783..a385fea6 100644
--- a/src/cgame/cg_servercmds.c
+++ b/src/cgame/cg_servercmds.c
@@ -847,6 +847,17 @@ static void CG_ServerCommand( void )
trap_SendConsoleCommand( "closemenus\n" );
return;
}
+
+ //poison cloud effect needs to be reliable
+ if( !strcmp( cmd, "poisoncloud" ) )
+ {
+ cg.poisonedTime = cg.time;
+ cg.poisonCloudPS = CG_SpawnNewParticleSystem( cgs.media.poisonCloudPS );
+ CG_SetParticleSystemCent( cg.poisonCloudPS, &cg.predictedPlayerEntity );
+ CG_AttachParticleSystemToCent( cg.poisonCloudPS );
+
+ return;
+ }
CG_Printf( "Unknown client game command: %s\n", cmd );
}
diff --git a/src/cgame/cg_view.c b/src/cgame/cg_view.c
index 863dc776..4256e494 100644
--- a/src/cgame/cg_view.c
+++ b/src/cgame/cg_view.c
@@ -382,6 +382,7 @@ static void CG_OffsetFirstPersonView( void )
float bob2;
vec3_t normal, baseOrigin;
playerState_t *ps = &cg.predictedPlayerState;
+ centity_t *cent = &cg.predictedPlayerEntity;
if( ps->stats[ STAT_STATE ] & SS_WALLCLIMBING )
{
@@ -584,7 +585,7 @@ static void CG_OffsetFirstPersonView( void )
angles[ YAW ] += fraction * PCLOUD_ROLL_AMPLITUDE;
angles[ PITCH ] += pitchFraction * PCLOUD_ROLL_AMPLITUDE / 2.0f;
}
-
+
//TA: this *feels* more realisitic for humans
if( cg.predictedPlayerState.stats[ STAT_PTEAM ] == PTE_HUMANS )
{
@@ -1127,6 +1128,16 @@ static int CG_CalcViewValues( void )
cg.predictedErrorTime = 0;
}
+ //shut off the poison cloud effect if it's still on the go
+ if( cg.snap->ps.stats[ STAT_HEALTH ] <= 0 )
+ {
+ if( cg.poisonCloudPS != NULL )
+ {
+ CG_DestroyParticleSystem( cg.poisonCloudPS );
+ cg.poisonCloudPS = NULL;
+ }
+ }
+
if( cg.renderingThirdPerson )
{
// back away from character
diff --git a/src/game/bg_misc.c b/src/game/bg_misc.c
index 3eb2ca01..b793a38b 100644
--- a/src/game/bg_misc.c
+++ b/src/game/bg_misc.c
@@ -4117,6 +4117,7 @@ char *eventnames[ ] =
"EV_FALL_SHORT",
"EV_FALL_MEDIUM",
"EV_FALL_FAR",
+ "EV_FALLING",
"EV_JUMP_PAD", // boing sound at origin", jump sound on player
@@ -4144,14 +4145,12 @@ char *eventnames[ ] =
"EV_BULLET_HIT_FLESH",
"EV_BULLET_HIT_WALL",
- "EV_LAS_HIT_FLESH",
- "EV_LAS_HIT_WALL",
- "EV_MASS_DRIVER_HIT",
+
+ "EV_SHOTGUN",
"EV_MISSILE_HIT",
"EV_MISSILE_MISS",
"EV_MISSILE_MISS_METAL",
- "EV_BUILDABLE_EXPLOSION", //TA: human item explosions
"EV_TESLATRAIL",
"EV_ALIENZAP",
"EV_BULLET", // otherEntity is the shooter
@@ -4163,20 +4162,29 @@ char *eventnames[ ] =
"EV_OBITUARY",
"EV_GIB_PLAYER", // gib a previously living player
- "EV_GIB_ALIEN", //TA: generic green gib for aliens
"EV_BUILD_CONSTRUCT", //TA
"EV_BUILD_DESTROY", //TA
- "EV_BUILD_ANIM", //TA
+ "EV_BUILD_DELAY", //TA: can't build yet
+ "EV_BUILD_REPAIR", //TA: repairing buildable
+ "EV_BUILD_REPAIRED", //TA: buildable has full health
+ "EV_HUMAN_BUILDABLE_EXPLOSION",
+ "EV_ALIEN_BUILDABLE_EXPLOSION",
+ "EV_ALIEN_ACIDTUBE",
+ "EV_HUMAN_BUILDABLE_DAMAGE",
+ "EV_ALIEN_BUILDABLE_DAMAGE",
+
+ "EV_ALIEN_EVOLVE",
"EV_DEBUG_LINE",
"EV_STOPLOOPINGSOUND",
"EV_TAUNT",
- "EV_BUILD_DELAY", //TA: can't build yet
- "EV_POISONCLOUD", //TA: client poisoned
- "EV_KNOCKOVER", //TA: client knocked over
- "EV_GETUP" //TA: client getting up
+ "EV_OVERMIND_ATTACK", //TA: overmind under attack
+ "EV_OVERMIND_DYING", //TA: overmind close to death
+ "EV_OVERMIND_SPAWNS", //TA: overmind needs spawns
+
+ "EV_RPTUSE_SOUND" //TA: trigger a sound
};
/*
diff --git a/src/game/bg_public.h b/src/game/bg_public.h
index 95892add..07a2862b 100644
--- a/src/game/bg_public.h
+++ b/src/game/bg_public.h
@@ -557,7 +557,6 @@ typedef enum
EV_OVERMIND_DYING, //TA: overmind close to death
EV_OVERMIND_SPAWNS, //TA: overmind needs spawns
- EV_POISONCLOUD, //TA: client poisoned
EV_RPTUSE_SOUND //TA: trigger a sound
} entity_event_t;
diff --git a/src/game/g_buildable.c b/src/game/g_buildable.c
index 4eadaf12..b3af71e4 100644
--- a/src/game/g_buildable.c
+++ b/src/game/g_buildable.c
@@ -754,6 +754,9 @@ void AAcidTube_Think( gentity_t *self )
{
enemy = &g_entities[ entityList[ i ] ];
+ if( !G_Visible( self, enemy ) )
+ continue;
+
if( enemy->client && enemy->client->ps.stats[ STAT_PTEAM ] == PTE_HUMANS )
{
self->timestamp = level.time;
@@ -820,6 +823,9 @@ void AHive_Think( gentity_t *self )
if( enemy->health <= 0 )
continue;
+ if( !G_Visible( self, enemy ) )
+ continue;
+
if( enemy->client && enemy->client->ps.stats[ STAT_PTEAM ] == PTE_HUMANS )
{
self->active = qtrue;
diff --git a/src/game/g_client.c b/src/game/g_client.c
index cf66ae1e..688b730e 100644
--- a/src/game/g_client.c
+++ b/src/game/g_client.c
@@ -314,7 +314,7 @@ gentity_t *SelectAlienSpawnPoint( void )
continue;
//spawn is blocked
- if( tr.fraction < 1.0f )
+ if( tr.fraction < 1.0f || tr.startsolid )
continue;
spots[ count ] = spot;
@@ -377,7 +377,7 @@ gentity_t *SelectHumanSpawnPoint( void )
continue;
//spawn is blocked
- if( tr.fraction < 1.0f )
+ if( tr.fraction < 1.0f || tr.startsolid )
continue;
spots[ count ] = spot;
diff --git a/src/game/g_cmds.c b/src/game/g_cmds.c
index 3662a8ab..684b2526 100644
--- a/src/game/g_cmds.c
+++ b/src/game/g_cmds.c
@@ -1381,13 +1381,19 @@ void Cmd_Buy_f( gentity_t *ent )
return;
}
- weaponAmmo = ent->client->ps.weapon;
-
- if( upgrade == UP_AMMO && !BG_FindUsesEnergyForWeapon( weaponAmmo ) )
+ if( upgrade == UP_AMMO )
{
- BG_FindAmmoForWeapon( weaponAmmo, &quan, &clips, &maxClips );
- BG_packAmmoArray( weaponAmmo, ent->client->ps.ammo, ent->client->ps.powerups,
- quan, clips, maxClips );
+ for( i = WP_NONE; i < WP_NUM_WEAPONS; i++ )
+ {
+ if( BG_gotWeapon( i, ent->client->ps.stats ) &&
+ !BG_FindUsesEnergyForWeapon( i ) &&
+ !BG_FindInfinteAmmoForWeapon( i ) )
+ {
+ BG_FindAmmoForWeapon( i, &quan, &clips, &maxClips );
+ BG_packAmmoArray( i, ent->client->ps.ammo, ent->client->ps.powerups,
+ quan, clips, maxClips );
+ }
+ }
}
else
{
@@ -1631,7 +1637,7 @@ void Cmd_Test_f( gentity_t *ent )
ent->client->ps.stats[ STAT_STATE ] |= SS_POISONCLOUDED;
ent->client->lastPoisonCloudedTime = level.time;
ent->client->lastPoisonCloudedClient = ent;
- G_AddPredictableEvent( ent, EV_POISONCLOUD, 0 );
+ trap_SendServerCommand( ent->client->ps.clientNum, "poisoncloud" );
}
/*
diff --git a/src/game/g_combat.c b/src/game/g_combat.c
index e95722c2..847b0606 100644
--- a/src/game/g_combat.c
+++ b/src/game/g_combat.c
@@ -120,6 +120,7 @@ char *modNames[ ] =
"MOD_HYDRA_PCLOUD",
"MOD_DRAGOON_CLAW",
"MOD_DRAGOON_POUNCE",
+ "MOD_DRAGOON_BOUNCEBALL",
"MOD_CHIMERA_CLAW",
"MOD_CHIMERA_ZAP",
"MOD_BMOFO_CLAW",
@@ -127,6 +128,7 @@ char *modNames[ ] =
"MOD_SLOWBLOB",
"MOD_POISON",
+ "MOD_SWARM",
"MOD_HSPAWN",
"MOD_TESLAGEN",
diff --git a/src/game/g_maprotation.c b/src/game/g_maprotation.c
index 38bbc325..b5f55522 100644
--- a/src/game/g_maprotation.c
+++ b/src/game/g_maprotation.c
@@ -466,7 +466,7 @@ static void G_IssueMapChange( int rotation )
int map = G_GetCurrentMap( rotation );
char cmd[ MAX_TOKEN_CHARS ];
- trap_SendConsoleCommand( EXEC_APPEND, va( "devmap %s\n",
+ trap_SendConsoleCommand( EXEC_APPEND, va( "map %s\n",
mapRotations.rotations[ rotation ].maps[ map ].name ) );
for( i = 0; i < mapRotations.rotations[ rotation ].maps[ map ].numCmds; i++ )
diff --git a/src/game/g_weapon.c b/src/game/g_weapon.c
index 56a5a611..b5094a50 100644
--- a/src/game/g_weapon.c
+++ b/src/game/g_weapon.c
@@ -772,7 +772,7 @@ void poisonCloud( gentity_t *ent )
humanPlayer->client->ps.stats[ STAT_STATE ] |= SS_POISONCLOUDED;
humanPlayer->client->lastPoisonCloudedTime = level.time;
humanPlayer->client->lastPoisonCloudedClient = ent;
- G_AddPredictableEvent( humanPlayer, EV_POISONCLOUD, 0 );
+ trap_SendServerCommand( humanPlayer->client->ps.clientNum, "poisoncloud" );
}
}
}
diff --git a/src/game/tremulous.h b/src/game/tremulous.h
index ffcb9205..27d9f01b 100644
--- a/src/game/tremulous.h
+++ b/src/game/tremulous.h
@@ -37,7 +37,7 @@
#define ABUILDER_BLOB_SPEED_MOD 0.5f
#define ABUILDER_BLOB_TIME 5000
-#define SOLDIER_BITE_DMG ADM(34)
+#define SOLDIER_BITE_DMG ADM(50)
#define SOLDIER_BITE_RANGE 32.0f
#define SOLDIER_BITE_REPEAT 500
@@ -126,32 +126,32 @@
#define HYDRA_UPG_SPEED 1.25f
#define HYDRA_UPG_VALUE AVM(120)
#define HYDRA_UPG_HEALTH AHM(50)
-#define HYDRA_UPG_REGEN 3
+#define HYDRA_UPG_REGEN 2
#define CHIMERA_SPEED 1.2f
#define CHIMERA_VALUE AVM(200)
#define CHIMERA_HEALTH AHM(100)
-#define CHIMERA_REGEN 4
+#define CHIMERA_REGEN 3
#define CHIMERA_UPG_SPEED 1.2f
#define CHIMERA_UPG_VALUE AVM(340)
#define CHIMERA_UPG_HEALTH AHM(120)
-#define CHIMERA_UPG_REGEN 5
+#define CHIMERA_UPG_REGEN 4
#define DRAGOON_SPEED 1.2f
#define DRAGOON_VALUE AVM(300)
#define DRAGOON_HEALTH AHM(200)
-#define DRAGOON_REGEN 6
+#define DRAGOON_REGEN 5
#define DRAGOON_UPG_SPEED 1.2f
#define DRAGOON_UPG_VALUE AVM(360)
#define DRAGOON_UPG_HEALTH AHM(250)
-#define DRAGOON_UPG_REGEN 7
+#define DRAGOON_UPG_REGEN 6
#define BMOFO_SPEED 1.1f
#define BMOFO_VALUE AVM(400)
#define BMOFO_HEALTH AHM(400)
-#define BMOFO_REGEN 9
+#define BMOFO_REGEN 7
@@ -309,7 +309,7 @@
#define FLAMER_GAS 80
#define FLAMER_REPEAT 300
-#define FLAMER_PRICE 300
+#define FLAMER_PRICE 350
#define FLAMER_DMG HDM(30)
#define FLAMER_RADIUS 50
#define FLAMER_LIFETIME 1000.0f
@@ -368,7 +368,7 @@
* HUMAN upgrades
*/
-#define LIGHTARMOUR_PRICE 100
+#define LIGHTARMOUR_PRICE 70
#define HELMET_PRICE 90
#define HELMET_RANGE 1000.0f