diff options
Diffstat (limited to 'src/game')
-rw-r--r-- | src/game/bg_misc.c | 60 | ||||
-rw-r--r-- | src/game/bg_pmove.c | 35 | ||||
-rw-r--r-- | src/game/bg_public.h | 1 | ||||
-rw-r--r-- | src/game/g_active.c | 38 | ||||
-rw-r--r-- | src/game/g_buildable.c | 2 | ||||
-rw-r--r-- | src/game/g_cmds.c | 12 | ||||
-rw-r--r-- | src/game/g_combat.c | 6 | ||||
-rw-r--r-- | src/game/g_local.h | 2 | ||||
-rw-r--r-- | src/game/g_main.c | 8 | ||||
-rw-r--r-- | src/game/g_missile.c | 2 | ||||
-rw-r--r-- | src/game/g_weapon.c | 6 | ||||
-rw-r--r-- | src/game/tremulous.h | 34 |
12 files changed, 140 insertions, 66 deletions
diff --git a/src/game/bg_misc.c b/src/game/bg_misc.c index b793a38b..69ff92e5 100644 --- a/src/game/bg_misc.c +++ b/src/game/bg_misc.c @@ -42,7 +42,7 @@ buildableAttributes_t bg_buildableList[ ] = ( 1 << WP_ABUILD )|( 1 << WP_ABUILD2 ), //weapon_t buildWeapon; BANIM_IDLE1, //int idleAnim; 100, //int nextthink; - 10000, //int buildTime; + ASPAWN_BT, //int buildTime; qfalse, //qboolean usable; 0, //int turretRange; 0, //int turretFireSpeed; @@ -76,7 +76,7 @@ buildableAttributes_t bg_buildableList[ ] = ( 1 << WP_ABUILD )|( 1 << WP_ABUILD2 ), //weapon_t buildWeapon; BANIM_IDLE1, //int idleAnim; 100, //int nextthink; - 10000, //int buildTime; + BARRICADE_BT, //int buildTime; qfalse, //qboolean usable; 0, //int turretRange; 0, //int turretFireSpeed; @@ -100,7 +100,7 @@ buildableAttributes_t bg_buildableList[ ] = TR_GRAVITY, //trType_t traj; 0.0, //float bounce; BOOSTER_BP, //int buildPoints; - ( 1 << S1 )|( 1 << S2 )|( 1 << S3 ), //int stages + ( 1 << S2 )|( 1 << S3 ), //int stages BOOSTER_HEALTH, //int health; BOOSTER_REGEN, //int regenRate; BOOSTER_SPLASHDAMAGE, //int splashDamage; @@ -110,7 +110,7 @@ buildableAttributes_t bg_buildableList[ ] = ( 1 << WP_ABUILD )|( 1 << WP_ABUILD2 ), //weapon_t buildWeapon; BANIM_IDLE1, //int idleAnim; 100, //int nextthink; - 10000, //int buildTime; + BOOSTER_BT, //int buildTime; qfalse, //qboolean usable; 0, //int turretRange; 0, //int turretFireSpeed; @@ -144,7 +144,7 @@ buildableAttributes_t bg_buildableList[ ] = ( 1 << WP_ABUILD )|( 1 << WP_ABUILD2 ), //weapon_t buildWeapon; BANIM_IDLE1, //int idleAnim; 500, //int nextthink; - 10000, //int buildTime; + ACIDTUBE_BT, //int buildTime; qfalse, //qboolean usable; 0, //int turretRange; 0, //int turretFireSpeed; @@ -168,7 +168,7 @@ buildableAttributes_t bg_buildableList[ ] = TR_GRAVITY, //trType_t traj; 0.0, //float bounce; HIVE_BP, //int buildPoints; - ( 1 << S1 )|( 1 << S2 )|( 1 << S3 ), //int stages + ( 1 << S3 ), //int stages HIVE_HEALTH, //int health; HIVE_REGEN, //int regenRate; HIVE_SPLASHDAMAGE, //int splashDamage; @@ -178,7 +178,7 @@ buildableAttributes_t bg_buildableList[ ] = ( 1 << WP_ABUILD )|( 1 << WP_ABUILD2 ), //weapon_t buildWeapon; BANIM_IDLE1, //int idleAnim; 500, //int nextthink; - 10000, //int buildTime; + HIVE_BT, //int buildTime; qfalse, //qboolean usable; 0, //int turretRange; 0, //int turretFireSpeed; @@ -202,7 +202,7 @@ buildableAttributes_t bg_buildableList[ ] = TR_GRAVITY, //trType_t traj; 0.0, //float bounce; TRAPPER_BP, //int buildPoints; - ( 1 << S1 )|( 1 << S2 )|( 1 << S3 ), //int stages + ( 1 << S2 )|( 1 << S3 ), //int stages TRAPPER_HEALTH, //int health; TRAPPER_REGEN, //int regenRate; TRAPPER_SPLASHDAMAGE, //int splashDamage; @@ -212,7 +212,7 @@ buildableAttributes_t bg_buildableList[ ] = ( 1 << WP_ABUILD )|( 1 << WP_ABUILD2 ), //weapon_t buildWeapon; BANIM_IDLE1, //int idleAnim; 100, //int nextthink; - 10000, //int buildTime; + TRAPPER_BT, //int buildTime; qfalse, //qboolean usable; TRAPPER_RANGE, //int turretRange; TRAPPER_REPEAT, //int turretFireSpeed; @@ -246,7 +246,7 @@ buildableAttributes_t bg_buildableList[ ] = ( 1 << WP_ABUILD )|( 1 << WP_ABUILD2 ), //weapon_t buildWeapon; BANIM_IDLE1, //int idleAnim; OVERMIND_ATTACK_REPEAT,//int nextthink; - 10000, //int buildTime; + OVERMIND_BT, //int buildTime; qfalse, //qboolean usable; 0, //int turretRange; 0, //int turretFireSpeed; @@ -270,7 +270,7 @@ buildableAttributes_t bg_buildableList[ ] = TR_GRAVITY, //trType_t traj; 0.0, //float bounce; HOVEL_BP, //int buildPoints; - ( 1 << S1 )|( 1 << S2 )|( 1 << S3 ), //int stages + ( 1 << S3 ), //int stages HOVEL_HEALTH, //int health; HOVEL_REGEN, //int regenRate; HOVEL_SPLASHDAMAGE, //int splashDamage; @@ -280,7 +280,7 @@ buildableAttributes_t bg_buildableList[ ] = ( 1 << WP_ABUILD )|( 1 << WP_ABUILD2 ), //weapon_t buildWeapon; BANIM_IDLE1, //int idleAnim; 150, //int nextthink; - 10000, //int buildTime; + HOVEL_BT, //int buildTime; qtrue, //qboolean usable; 0, //int turretRange; 0, //int turretFireSpeed; @@ -314,7 +314,7 @@ buildableAttributes_t bg_buildableList[ ] = ( 1 << WP_HBUILD )|( 1 << WP_HBUILD2 ), //weapon_t buildWeapon; BANIM_IDLE1, //int idleAnim; 100, //int nextthink; - 10000, //int buildTime; + HSPAWN_BT, //int buildTime; qfalse, //qboolean usable; 0, //int turretRange; 0, //int turretFireSpeed; @@ -348,7 +348,7 @@ buildableAttributes_t bg_buildableList[ ] = ( 1 << WP_HBUILD )|( 1 << WP_HBUILD2 ), //weapon_t buildWeapon; BANIM_IDLE1, //int idleAnim; 100, //int nextthink; - 10000, //int buildTime; + MEDISTAT_BT, //int buildTime; qfalse, //qboolean usable; 0, //int turretRange; 0, //int turretFireSpeed; @@ -384,7 +384,7 @@ buildableAttributes_t bg_buildableList[ ] = ( 1 << WP_HBUILD )|( 1 << WP_HBUILD2 ), //weapon_t buildWeapon; BANIM_IDLE1, //int idleAnim; 50, //int nextthink; - 10000, //int buildTime; + MGTURRET_BT, //int buildTime; qfalse, //qboolean usable; MGTURRET_RANGE, //int turretRange; MGTURRET_REPEAT, //int turretFireSpeed; @@ -418,7 +418,7 @@ buildableAttributes_t bg_buildableList[ ] = ( 1 << WP_HBUILD2 ), //weapon_t buildWeapon; BANIM_IDLE1, //int idleAnim; 150, //int nextthink; - 10000, //int buildTime; + TESLAGEN_BT, //int buildTime; qfalse, //qboolean usable; TESLAGEN_RANGE, //int turretRange; TESLAGEN_REPEAT, //int turretFireSpeed; @@ -442,7 +442,7 @@ buildableAttributes_t bg_buildableList[ ] = TR_GRAVITY, //trType_t traj; 0.0, //float bounce; DC_BP, //int buildPoints; - ( 1 << S3 ), //int stages + ( 1 << S2 )|( 1 << S3 ), //int stages DC_HEALTH, //int health; 0, //int regenRate; DC_SPLASHDAMAGE, //int splashDamage; @@ -452,7 +452,7 @@ buildableAttributes_t bg_buildableList[ ] = ( 1 << WP_HBUILD2 ), //weapon_t buildWeapon; BANIM_IDLE1, //int idleAnim; 100, //int nextthink; - 10000, //int buildTime; + DC_BT, //int buildTime; qfalse, //qboolean usable; 0, //int turretRange; 0, //int turretFireSpeed; @@ -486,7 +486,7 @@ buildableAttributes_t bg_buildableList[ ] = ( 1 << WP_HBUILD )|( 1 << WP_HBUILD2 ), //weapon_t buildWeapon; BANIM_IDLE1, //int idleAnim; 100, //int nextthink; - 10000, //int buildTime; + ARMOURY_BT, //int buildTime; qtrue, //qboolean usable; 0, //int turretRange; 0, //int turretFireSpeed; @@ -520,7 +520,7 @@ buildableAttributes_t bg_buildableList[ ] = ( 1 << WP_HBUILD )|( 1 << WP_HBUILD2 ), //weapon_t buildWeapon; BANIM_IDLE1, //int idleAnim; -1, //int nextthink; - 10000, //int buildTime; + REACTOR_BT, //int buildTime; qtrue, //qboolean usable; 0, //int turretRange; 0, //int turretFireSpeed; @@ -554,7 +554,7 @@ buildableAttributes_t bg_buildableList[ ] = ( 1 << WP_HBUILD )|( 1 << WP_HBUILD2 ), //weapon_t buildWeapon; BANIM_IDLE1, //int idleAnim; 100, //int nextthink; - 10000, //int buildTime; + REPEATER_BT, //int buildTime; qtrue, //qboolean usable; 0, //int turretRange; 0, //int turretFireSpeed; @@ -1452,7 +1452,7 @@ classAttributes_t bg_classList[ ] = 80, //int fov; 0.001f, //float bob; 2.0f, //float bobCycle; - 350, //int steptime; + 200, //int steptime; ABUILDER_SPEED, //float speed; 10.0f, //float acceleration; 1.0f, //float airAcceleration; @@ -1581,7 +1581,7 @@ classAttributes_t bg_classList[ ] = "blue", //char *skinname; 1.0f, //float shadowScale; "alien_general_hud", //char *hudname; - ( 1 << S1 )|( 1 << S2 )|( 1 << S3 ), //int stages + ( 1 << S2 )|( 1 << S3 ), //int stages { -20, -20, -20 }, //vec3_t mins; { 20, 20, 20 }, //vec3_t maxs; { 20, 20, 20 }, //vec3_t crouchmaxs; @@ -1655,7 +1655,7 @@ classAttributes_t bg_classList[ ] = "red", //char *skinname; 1.0f, //float shadowScale; "alien_general_hud", //char *hudname; - ( 1 << S1 )|( 1 << S2 )|( 1 << S3 ), //int stages + ( 1 << S2 )|( 1 << S3 ), //int stages { -24, -24, -24 }, //vec3_t mins; { 24, 24, 24 }, //vec3_t maxs; { 24, 24, 24 }, //vec3_t crouchmaxs; @@ -1729,7 +1729,7 @@ classAttributes_t bg_classList[ ] = "default", //char *skinname; 1.0f, //float shadowScale; "alien_general_hud", //char *hudname; - ( 1 << S1 )|( 1 << S2 )|( 1 << S3 ), //int stages + ( 1 << S3 ), //int stages { -32, -32, -21 }, //vec3_t mins; { 32, 32, 21 }, //vec3_t maxs; { 32, 32, 21 }, //vec3_t crouchmaxs; @@ -2872,7 +2872,7 @@ weaponAttributes_t bg_weapons[ ] = { WP_FLAMER, //int weaponNum; FLAMER_PRICE, //int price; - ( 1 << S1 )|( 1 << S2 )|( 1 << S3 ), //int stages + ( 1 << S2 )|( 1 << S3 ), //int stages SLOT_WEAPON, //int slots; "flamer", //char *weaponName; "Flame Thrower", //char *weaponHumanName; @@ -2938,7 +2938,7 @@ weaponAttributes_t bg_weapons[ ] = { WP_PULSE_RIFLE, //int weaponNum; PRIFLE_PRICE, //int price; - ( 1 << S1 )|( 1 << S2 )|( 1 << S3 ), //int stages + ( 1 << S2 )|( 1 << S3 ), //int stages SLOT_WEAPON, //int slots; "prifle", //char *weaponName; "Pulse Rifle", //char *weaponHumanName; @@ -2960,7 +2960,7 @@ weaponAttributes_t bg_weapons[ ] = { WP_LUCIFER_CANNON, //int weaponNum; LCANNON_PRICE, //int price; - ( 1 << S1 )|( 1 << S2 )|( 1 << S3 ), //int stages + ( 1 << S3 ), //int stages SLOT_WEAPON, //int slots; "lcannon", //char *weaponName; "Lucifer Cannon", //char *weaponHumanName; @@ -3786,7 +3786,7 @@ upgradeAttributes_t bg_upgrades[ ] = { UP_JETPACK, //int upgradeNum; JETPACK_PRICE, //int price; - ( 1 << S1 )|( 1 << S2 )|( 1 << S3 ), //int stages + ( 1 << S2 )|( 1 << S3 ), //int stages SLOT_BACKPACK, //int slots; "jetpack", //char *upgradeName; "Jet Pack", //char *upgradeHumanName; @@ -3796,7 +3796,7 @@ upgradeAttributes_t bg_upgrades[ ] = { UP_BATTLESUIT, //int upgradeNum; BSUIT_PRICE, //int price; - ( 1 << S1 )|( 1 << S2 )|( 1 << S3 ), //int stages + ( 1 << S2 )|( 1 << S3 ), //int stages SLOT_HEAD|SLOT_TORSO|SLOT_ARMS|SLOT_LEGS|SLOT_BACKPACK, //int slots; "bsuit", //char *upgradeName; "Battlesuit", //char *upgradeHumanName; diff --git a/src/game/bg_pmove.c b/src/game/bg_pmove.c index d7007733..7f1799b5 100644 --- a/src/game/bg_pmove.c +++ b/src/game/bg_pmove.c @@ -643,7 +643,7 @@ static qboolean PM_CheckJump( void ) if( BG_ClassHasAbility( pm->ps->stats[ STAT_PCLASS ], SCA_WALLJUMPER ) ) return PM_CheckWallJump( ); - //can't jump and pounce charge at the same time + //can't jump and pounce at the same time if( ( pm->ps->weapon == WP_DRAGOON || pm->ps->weapon == WP_DRAGOON_UPG ) && pm->ps->stats[ STAT_MISC ] > 0 ) @@ -2409,7 +2409,10 @@ static void PM_Footsteps( void ) if( pm->xyspeed > 160 ) { bobmove = 0.4f; // faster speeds bob faster - if( pm->ps->pm_flags & PMF_BACKWARDS_RUN ) + + if( pm->ps->pm_flags & PMF_CHARGE ) + PM_ContinueLegsAnim( NSPA_CHARGE ); + else if( pm->ps->pm_flags & PMF_BACKWARDS_RUN ) { if( !( pm->ps->persistant[ PERS_STATE ] & PS_NONSEGMODEL ) ) PM_ContinueLegsAnim( LEGS_BACK ); @@ -2895,12 +2898,28 @@ static void PM_Weapon( void ) PM_StartTorsoAnim( TORSO_ATTACK ); else { - if( attack1 ) - PM_ForceLegsAnim( NSPA_ATTACK1 ); - else if( attack2 ) - PM_ForceLegsAnim( NSPA_ATTACK2 ); - else if( attack3 ) - PM_ForceLegsAnim( NSPA_ATTACK3 ); + if( pm->ps->weapon == WP_BIGMOFO ) + { + //hack to get random attack animations + //FIXME: does pm->ps->weaponTime cycle enough? + int num = abs( pm->ps->weaponTime ) % 3; + + if( num == 0 ) + PM_ForceLegsAnim( NSPA_ATTACK1 ); + else if( num == 1 ) + PM_ForceLegsAnim( NSPA_ATTACK2 ); + else if( num == 2 ) + PM_ForceLegsAnim( NSPA_ATTACK3 ); + } + else + { + if( attack1 ) + PM_ForceLegsAnim( NSPA_ATTACK1 ); + else if( attack2 ) + PM_ForceLegsAnim( NSPA_ATTACK2 ); + else if( attack3 ) + PM_ForceLegsAnim( NSPA_ATTACK3 ); + } pm->ps->torsoTimer = TIMER_ATTACK; } diff --git a/src/game/bg_public.h b/src/game/bg_public.h index 07a2862b..09f01060 100644 --- a/src/game/bg_public.h +++ b/src/game/bg_public.h @@ -668,6 +668,7 @@ typedef enum NSPA_WALK, NSPA_RUN, NSPA_RUNBACK, + NSPA_CHARGE, NSPA_RUNLEFT, NSPA_WALKLEFT, diff --git a/src/game/g_active.c b/src/game/g_active.c index 4eb271b2..61e78365 100644 --- a/src/game/g_active.c +++ b/src/game/g_active.c @@ -432,6 +432,9 @@ void ClientTimerActions( gentity_t *ent, int msec ) if( aForward <= 64 ) client->ps.stats[ STAT_STATE ] &= ~SS_SPEEDBOOST; + if( BG_gotItem( UP_JETPACK, client->ps.stats ) && BG_activated( UP_JETPACK, client->ps.stats ) ) + client->ps.stats[ STAT_STATE ] &= ~SS_SPEEDBOOST; + if( ( client->ps.stats[ STAT_STATE ] & SS_SPEEDBOOST ) && ucmd->upmove >= 0 ) { //subtract stamina @@ -461,14 +464,6 @@ void ClientTimerActions( gentity_t *ent, int msec ) client->ps.stats[ STAT_STAMINA ] = MAX_STAMINA; } - //client is poisoned - if( client->ps.stats[ STAT_STATE ] & SS_POISONED ) - { - int damage = ( level.time - client->lastPoisonTime ) / 1000; - - G_Damage( ent, client->lastPoisonClient, client->lastPoisonClient, NULL, NULL, damage, 0, MOD_POISON ); - } - //client is charging up for a pounce if( client->ps.weapon == WP_DRAGOON || client->ps.weapon == WP_DRAGOON_UPG ) { @@ -576,11 +571,32 @@ void ClientTimerActions( gentity_t *ent, int msec ) { client->time1000 -= 1000; - //client is poisoned + //client is hydra poisoned if( client->ps.stats[ STAT_STATE ] & SS_POISONCLOUDED ) G_Damage( ent, client->lastPoisonCloudedClient, client->lastPoisonCloudedClient, NULL, NULL, HYDRA_PCLOUD_DMG, 0, MOD_HYDRA_PCLOUD ); + //client is poisoned + if( client->ps.stats[ STAT_STATE ] & SS_POISONED ) + { + int i; + int seconds = ( ( level.time - client->lastPoisonTime ) / 1000 ) + 1; + int damage = ALIEN_POISON_DMG, damage2; + + for( i = 0; i < seconds; i++ ) + { + if( i == seconds - 1 ) + damage2 = damage; + + damage *= ALIEN_POISON_DIVIDER; + } + + damage = damage2 - damage; + + G_Damage( ent, client->lastPoisonClient, client->lastPoisonClient, NULL, NULL, + damage, 0, MOD_POISON ); + } + //replenish alien health if( client->ps.stats[ STAT_PTEAM ] == PTE_ALIENS ) { @@ -923,6 +939,10 @@ void ClientThink_real( gentity_t *ent ) client->lastPoisonCloudedTime + HYDRA_PCLOUD_TIME < level.time ) client->ps.stats[ STAT_STATE ] &= ~SS_POISONCLOUDED; + if( client->ps.stats[ STAT_STATE ] & SS_POISONED && + client->lastPoisonTime + ALIEN_POISON_TIME < level.time ) + client->ps.stats[ STAT_STATE ] &= ~SS_POISONED; + client->ps.gravity = g_gravity.value; if( BG_gotItem( UP_ANTITOXIN, client->ps.stats ) && diff --git a/src/game/g_buildable.c b/src/game/g_buildable.c index b3af71e4..26a9bdbb 100644 --- a/src/game/g_buildable.c +++ b/src/game/g_buildable.c @@ -524,7 +524,7 @@ void ASpawn_Pain( gentity_t *self, gentity_t *attacker, int damage ) ================ AOvermind_Think -think function for Alien Acid Tube +Think function for Alien Overmind ================ */ void AOvermind_Think( gentity_t *self ) diff --git a/src/game/g_cmds.c b/src/game/g_cmds.c index 684b2526..e5c130e9 100644 --- a/src/game/g_cmds.c +++ b/src/game/g_cmds.c @@ -1619,6 +1619,10 @@ Cmd_Boost_f */ void Cmd_Boost_f( gentity_t *ent ) { + if( BG_gotItem( UP_JETPACK, ent->client->ps.stats ) && + BG_activated( UP_JETPACK, ent->client->ps.stats ) ) + return; + if( ( ent->client->ps.stats[ STAT_PTEAM ] == PTE_HUMANS ) && ( ent->client->ps.stats[ STAT_STAMINA ] > 0 ) ) ent->client->ps.stats[ STAT_STATE ] |= SS_SPEEDBOOST; @@ -1634,10 +1638,14 @@ void Cmd_Test_f( gentity_t *ent ) if( !CheatsOk( ent ) ) return; - ent->client->ps.stats[ STAT_STATE ] |= SS_POISONCLOUDED; +/* ent->client->ps.stats[ STAT_STATE ] |= SS_POISONCLOUDED; ent->client->lastPoisonCloudedTime = level.time; ent->client->lastPoisonCloudedClient = ent; - trap_SendServerCommand( ent->client->ps.clientNum, "poisoncloud" ); + trap_SendServerCommand( ent->client->ps.clientNum, "poisoncloud" );*/ + + ent->client->ps.stats[ STAT_STATE ] |= SS_POISONED; + ent->client->lastPoisonTime = level.time; + ent->client->lastPoisonClient = ent; } /* diff --git a/src/game/g_combat.c b/src/game/g_combat.c index 847b0606..ad247227 100644 --- a/src/game/g_combat.c +++ b/src/game/g_combat.c @@ -620,6 +620,9 @@ static float G_CalcDamageModifier( vec3_t point, gentity_t *targ, gentity_t *att float modifier = 1.0f; int i, j; + if( point == NULL ) + return 1.0f; + clientHeight = targ->r.maxs[ 2 ] - targ->r.mins[ 2 ]; if( targ->client->ps.stats[ STAT_STATE ] & SS_WALLCLIMBING ) @@ -974,7 +977,8 @@ void G_Damage( gentity_t *targ, gentity_t *inflictor, gentity_t *attacker, //if boosted poison every attack if( attacker->client && attacker->client->ps.stats[ STAT_STATE ] & SS_BOOSTED ) { - if( !( targ->client->ps.stats[ STAT_STATE ] & SS_POISONED ) ) + if( !( targ->client->ps.stats[ STAT_STATE ] & SS_POISONED ) && + !BG_gotItem( UP_BATTLESUIT, targ->client->ps.stats ) ) { targ->client->ps.stats[ STAT_STATE ] |= SS_POISONED; targ->client->lastPoisonTime = level.time; diff --git a/src/game/g_local.h b/src/game/g_local.h index 66b0bd33..ba1ff47d 100644 --- a/src/game/g_local.h +++ b/src/game/g_local.h @@ -546,7 +546,7 @@ void G_Physics( gentity_t *ent, int msec ); // #define M_ROOT3 1.732050808f -#define MAX_ALIEN_BBOX 15 +#define MAX_ALIEN_BBOX 20 typedef enum { diff --git a/src/game/g_main.c b/src/game/g_main.c index 23677497..a5e60315 100644 --- a/src/game/g_main.c +++ b/src/game/g_main.c @@ -159,12 +159,12 @@ static cvarTable_t gameCvarTable[ ] = { &g_alienBuildPoints, "g_alienBuildPoints", "1000", 0, 0, qfalse }, { &g_humanStage, "g_humanStage", "0", 0, 0, qfalse }, { &g_humanMaxStage, "g_humanMaxStage", "2", 0, 0, qfalse }, - { &g_humanStage2Threshold, "g_humanStage2Threshold", "50", 0, 0, qfalse }, - { &g_humanStage3Threshold, "g_humanStage3Threshold", "100", 0, 0, qfalse }, + { &g_humanStage2Threshold, "g_humanStage2Threshold", "25", 0, 0, qfalse }, + { &g_humanStage3Threshold, "g_humanStage3Threshold", "50", 0, 0, qfalse }, { &g_alienStage, "g_alienStage", "0", 0, 0, qfalse }, { &g_alienMaxStage, "g_alienMaxStage", "2", 0, 0, qfalse }, - { &g_alienStage2Threshold, "g_alienStage2Threshold", "50", 0, 0, qfalse }, - { &g_alienStage3Threshold, "g_alienStage3Threshold", "100", 0, 0, qfalse }, + { &g_alienStage2Threshold, "g_alienStage2Threshold", "25", 0, 0, qfalse }, + { &g_alienStage3Threshold, "g_alienStage3Threshold", "50", 0, 0, qfalse }, { &g_debugMapRotation, "g_debugMapRotation", "0", 0, 0, qfalse }, { &g_currentMapRotation, "g_currentMapRotation", "-1", 0, 0, qfalse }, // -1 = NOT_ROTATING diff --git a/src/game/g_missile.c b/src/game/g_missile.c index cb72502d..ca316818 100644 --- a/src/game/g_missile.c +++ b/src/game/g_missile.c @@ -732,7 +732,7 @@ gentity_t *fire_bounceBall( gentity_t *self, vec3_t start, vec3_t dir ) VectorScale( dir, DRAGOON_BOUNCEBALL_SPEED, bolt->s.pos.trDelta ); SnapVector( bolt->s.pos.trDelta ); // save net bandwidth VectorCopy( start, bolt->r.currentOrigin ); - bolt->s.eFlags |= EF_BOUNCE; + /*bolt->s.eFlags |= EF_BOUNCE;*/ return bolt; } diff --git a/src/game/g_weapon.c b/src/game/g_weapon.c index b5094a50..c6a8759e 100644 --- a/src/game/g_weapon.c +++ b/src/game/g_weapon.c @@ -767,6 +767,12 @@ void poisonCloud( gentity_t *ent ) if( humanPlayer->client && humanPlayer->client->ps.stats[ STAT_PTEAM ] == PTE_HUMANS ) { + if( BG_gotItem( UP_LIGHTARMOUR, humanPlayer->client->ps.stats ) ) + continue; + + if( BG_gotItem( UP_BATTLESUIT, humanPlayer->client->ps.stats ) ) + continue; + if( !( humanPlayer->client->ps.stats[ STAT_STATE ] & SS_POISONCLOUDED ) ) { humanPlayer->client->ps.stats[ STAT_STATE ] |= SS_POISONCLOUDED; diff --git a/src/game/tremulous.h b/src/game/tremulous.h index 27d9f01b..7a38cad5 100644 --- a/src/game/tremulous.h +++ b/src/game/tremulous.h @@ -159,6 +159,7 @@ * ALIEN buildables * * _BP - build points required for this buildable + * _BT - build time required for this buildable * _REGEN - the amount of health per second regained * _SPLASHDAMGE - the amount of damage caused by this buildable when melting * _SPLASHRADIUS - the radius around which it does this damage @@ -177,6 +178,7 @@ #define CREEP_ARMOUR_MODIFIER 0.75f #define ASPAWN_BP 100 +#define ASPAWN_BT 10000 #define ASPAWN_HEALTH ABHM(500) #define ASPAWN_REGEN 10 #define ASPAWN_SPLASHDAMAGE 50 @@ -185,6 +187,7 @@ #define ASPAWN_VALUE 150 #define BARRICADE_BP 80 +#define BARRICADE_BT 10000 #define BARRICADE_HEALTH ABHM(250) #define BARRICADE_REGEN 15 #define BARRICADE_SPLASHDAMAGE 50 @@ -192,6 +195,7 @@ #define BARRICADE_CREEPSIZE 120 #define BOOSTER_BP 120 +#define BOOSTER_BT 10000 #define BOOSTER_HEALTH ABHM(200) #define BOOSTER_REGEN 10 #define BOOSTER_SPLASHDAMAGE 50 @@ -200,15 +204,17 @@ #define BOOSTER_INTERVAL 30000 //time in msec between uses (per player) #define ACIDTUBE_BP 50 +#define ACIDTUBE_BT 10000 #define ACIDTUBE_HEALTH ABHM(100) #define ACIDTUBE_REGEN 10 -#define ACIDTUBE_SPLASHDAMAGE 30 -#define ACIDTUBE_SPLASHRADIUS 200 +#define ACIDTUBE_SPLASHDAMAGE 40 +#define ACIDTUBE_SPLASHRADIUS 300 #define ACIDTUBE_CREEPSIZE 120 -#define ACIDTUBE_RANGE 200.0f +#define ACIDTUBE_RANGE 300.0f #define ACIDTUBE_REPEAT 3000 #define HIVE_BP 50 +#define HIVE_BT 10000 #define HIVE_HEALTH ABHM(100) #define HIVE_REGEN 10 #define HIVE_SPLASHDAMAGE 30 @@ -221,6 +227,7 @@ #define HIVE_DIR_CHANGE_PERIOD 500 #define TRAPPER_BP 150 +#define TRAPPER_BT 5000 #define TRAPPER_HEALTH ABHM(80) #define TRAPPER_REGEN 8 #define TRAPPER_SPLASHDAMAGE 15 @@ -232,6 +239,7 @@ #define LOCKBLOB_DOT 0.85f // max angle = acos( LOCKBLOB_DOT ) #define OVERMIND_BP 0 +#define OVERMIND_BT 20000 #define OVERMIND_HEALTH ABHM(1000) #define OVERMIND_REGEN 15 #define OVERMIND_SPLASHDAMAGE 100 @@ -242,6 +250,7 @@ #define OVERMIND_VALUE 300 #define HOVEL_BP 80 +#define HOVEL_BT 10000 #define HOVEL_HEALTH ABHM(750) #define HOVEL_REGEN 20 #define HOVEL_SPLASHDAMAGE 20 @@ -261,6 +270,9 @@ #define ALIENSTAGE2_HLTH_MODIFIER 1.2f #define ALIENSTAGE3_HLTH_MODIFIER 1.5f +#define ALIEN_POISON_TIME 10000 +#define ALIEN_POISON_DMG 30 +#define ALIEN_POISON_DIVIDER (1.0f/1.32f) //about 1.0/(time`th root of damage) /* @@ -347,7 +359,7 @@ #define LASGUN_AMMO 300 #define LASGUN_REPEAT 150 #define LASGUN_RELOAD 2000 -#define LASGUN_DAMAGE HDM(10) +#define LASGUN_DAMAGE HDM(15) #define PAINSAW_PRICE 100 #define PAINSAW_REPEAT 75 @@ -398,6 +410,7 @@ * HUMAN buildables * * _BP - build points required for this buildable + * _BT - build time required for this buildable * _SPLASHDAMGE - the amount of damage caused by this buildable when it blows up * _SPLASHRADIUS - the radius around which it does this damage * @@ -415,18 +428,21 @@ #define HUMAN_DETONATION_DELAY 5000 #define HSPAWN_BP 100 +#define HSPAWN_BT 10000 #define HSPAWN_HEALTH HBHM(500) #define HSPAWN_SPLASHDAMAGE 50 #define HSPAWN_SPLASHRADIUS 100 #define HSPAWN_VALUE 1 #define MEDISTAT_BP 80 +#define MEDISTAT_BT 10000 #define MEDISTAT_HEALTH HBHM(200) #define MEDISTAT_SPLASHDAMAGE 50 #define MEDISTAT_SPLASHRADIUS 100 #define MAX_MEDISTAT_CLIENTS 1 #define MGTURRET_BP 80 +#define MGTURRET_BT 10000 #define MGTURRET_HEALTH HBHM(100) #define MGTURRET_SPLASHDAMAGE 50 #define MGTURRET_SPLASHRADIUS 100 @@ -441,6 +457,7 @@ #define MGTURRET_DCC_ACCURACYTOLERANCE MGTURRET_DCC_ANGULARSPEED / 1.5f #define TESLAGEN_BP 100 +#define TESLAGEN_BT 15000 #define TESLAGEN_HEALTH HBHM(200) #define TESLAGEN_SPLASHDAMAGE 50 #define TESLAGEN_SPLASHRADIUS 100 @@ -449,33 +466,32 @@ #define TESLAGEN_DMG HDM(50) #define DC_BP 80 +#define DC_BT 10000 #define DC_HEALTH HBHM(150) #define DC_SPLASHDAMAGE 50 #define DC_SPLASHRADIUS 100 #define ARMOURY_BP 100 +#define ARMOURY_BT 10000 #define ARMOURY_HEALTH HBHM(175) #define ARMOURY_SPLASHDAMAGE 50 #define ARMOURY_SPLASHRADIUS 100 #define REACTOR_BP 0 +#define REACTOR_BT 20000 #define REACTOR_HEALTH HBHM(1000) #define REACTOR_SPLASHDAMAGE 200 #define REACTOR_SPLASHRADIUS 300 #define REACTOR_VALUE 2 #define REPEATER_BP 100 +#define REPEATER_BT 10000 #define REPEATER_HEALTH HBHM(200) #define REPEATER_SPLASHDAMAGE 50 #define REPEATER_SPLASHRADIUS 100 #define ENERGY_REFIL_TIME 1000 //1/2 second between every clip refil -#define FLOATMINE_BP 50 -#define FLOATMINE_HEALTH HBHM(10) -#define FLOATMINE_SPLASHDAMAGE 250 -#define FLOATMINE_SPLASHRADIUS 500 - /* * HUMAN misc */ |