diff options
Diffstat (limited to 'src')
-rw-r--r-- | src/cgame/cg_event.c | 10 | ||||
-rw-r--r-- | src/cgame/cg_local.h | 2 | ||||
-rw-r--r-- | src/cgame/cg_servercmds.c | 11 | ||||
-rw-r--r-- | src/cgame/cg_view.c | 13 | ||||
-rw-r--r-- | src/game/bg_misc.c | 28 | ||||
-rw-r--r-- | src/game/bg_public.h | 1 | ||||
-rw-r--r-- | src/game/g_buildable.c | 6 | ||||
-rw-r--r-- | src/game/g_client.c | 4 | ||||
-rw-r--r-- | src/game/g_cmds.c | 20 | ||||
-rw-r--r-- | src/game/g_combat.c | 2 | ||||
-rw-r--r-- | src/game/g_maprotation.c | 2 | ||||
-rw-r--r-- | src/game/g_weapon.c | 2 | ||||
-rw-r--r-- | src/game/tremulous.h | 18 |
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 |