summaryrefslogtreecommitdiff
path: root/src/game
diff options
context:
space:
mode:
authorMikko Tiusanen <ams@daug.net>2014-05-15 19:42:24 +0300
committerMikko Tiusanen <ams@daug.net>2014-05-15 19:42:24 +0300
commitde7bd9bbba26589b9deb1e7c9eda80a75ff0184f (patch)
treeea07e7f50c80c4fba406b9cbbec86a005a123427 /src/game
parent454a1a21c4d0be8e542160ff60f897594762501b (diff)
More hummel air pounce fixes. Changed hummel stats.
Diffstat (limited to 'src/game')
-rw-r--r--src/game/bg_pmove.c35
-rw-r--r--src/game/g_active.c8
-rw-r--r--src/game/g_weapon.c14
-rw-r--r--src/game/tremulous.h18
4 files changed, 42 insertions, 33 deletions
diff --git a/src/game/bg_pmove.c b/src/game/bg_pmove.c
index cd6cb21..603f569 100644
--- a/src/game/bg_pmove.c
+++ b/src/game/bg_pmove.c
@@ -579,6 +579,13 @@ PM_CheckCharge
*/
static void PM_CheckCharge( void )
{
+ // Reset hummel pounce payload when walking
+ if (pm->ps->weapon == WP_ALEVEL5)
+ {
+ pm->ps->stats[ STAT_STATE ] &= ~SS_CHARGING;
+ pm->pmext->pouncePayload = 0;
+ }
+
if( pm->ps->weapon != WP_ALEVEL4 )
return;
@@ -707,12 +714,11 @@ static qboolean PM_CheckAirPounce( void )
return qfalse;
// We were pouncing, but we've landed
- if( /*pm->ps->groundEntityNum != ENTITYNUM_NONE &&*/
+ if( /* pm->ps->groundEntityNum != ENTITYNUM_NONE && */
( pm->ps->pm_flags & PMF_CHARGE ) )
{
pm->ps->pm_flags &= ~PMF_CHARGE;
pm->ps->weaponTime += LEVEL5_POUNCE_REPEAT;
- pm->pmext->pouncePayload = 0;
return qfalse;
}
@@ -3058,6 +3064,7 @@ static void PM_Weapon( void )
qboolean attack1 = pm->cmd.buttons & BUTTON_ATTACK;
qboolean attack2 = pm->cmd.buttons & BUTTON_ATTACK2;
qboolean attack3 = pm->cmd.buttons & BUTTON_USE_HOLDABLE;
+ qboolean walk = pm->cmd.buttons & BUTTON_WALKING;
// Ignore weapons in some cases
if( pm->ps->persistant[ PERS_SPECSTATE ] != SPECTATOR_NOT )
@@ -3071,7 +3078,7 @@ static void PM_Weapon( void )
}
// Charging for or canceling a pounce/drill attack
- if( pm->ps->weapon == WP_ALEVEL3 || pm->ps->weapon == WP_ALEVEL3_UPG ||
+ if( pm->ps->weapon == WP_ALEVEL3 || pm->ps->weapon == WP_ALEVEL3_UPG ||
pm->ps->weapon == WP_ALEVEL5 || pm->ps->weapon == WP_ALEVEL0_UPG )
{
int max;
@@ -3090,19 +3097,21 @@ static void PM_Weapon( void )
max = LEVEL0_DRILL_TIME;
break;
}
- if( pm->cmd.buttons & BUTTON_ATTACK2 )
+
+ if( attack2 && (pm->ps->weapon != WP_ALEVEL5 || walk) )
pm->ps->stats[ STAT_MISC ] += pml.msec;
else
pm->ps->stats[ STAT_MISC ] -= pml.msec;
if( pm->ps->stats[ STAT_MISC ] > max )
pm->ps->stats[ STAT_MISC ] = max;
- else if( pm->ps->stats[ STAT_MISC ] < 0 )
+ else if( pm->ps->stats[ STAT_MISC ] <= 0 ) {
pm->ps->stats[ STAT_MISC ] = 0;
+ }
}
// Trample charge mechanics
- if( pm->ps->weapon == WP_ALEVEL4 )
+ else if( pm->ps->weapon == WP_ALEVEL4 )
{
// Charging up
if( !( pm->ps->stats[ STAT_STATE ] & SS_CHARGING ) )
@@ -3223,7 +3232,7 @@ static void PM_Weapon( void )
return;
// no bite during pounce
- if( ( pm->ps->weapon == WP_ALEVEL3 || pm->ps->weapon == WP_ALEVEL3_UPG )
+ if( ( pm->ps->weapon == WP_ALEVEL3 || pm->ps->weapon == WP_ALEVEL3_UPG || pm->ps->weapon == WP_ALEVEL5)
&& ( pm->cmd.buttons & BUTTON_ATTACK )
&& ( pm->ps->pm_flags & PMF_CHARGE ) )
return;
@@ -3521,12 +3530,12 @@ static void PM_Weapon( void )
{
if( BG_Weapon( pm->ps->weapon )->hasThirdMode )
{
- if( pm->ps->weapon == WP_MASS_DRIVER )
- {
+ if( pm->ps->weapon == WP_MASS_DRIVER )
+ {
attack3 = qtrue;
- }
+ }
- if( pm->ps->weapon == WP_ALEVEL5 && !pm->ps->ammo )
+ if( pm->ps->weapon == WP_ALEVEL5 && !pm->ps->ammo )
{
pm->ps->weaponTime += 400;
return;
@@ -3608,10 +3617,10 @@ static void PM_Weapon( void )
PM_AddEvent( EV_FIRE_WEAPON );
addTime = BG_Weapon( pm->ps->weapon )->repeatRate1;
break;
-
+
case WP_ALEVEL5:
pm->ps->generic1 = WPM_SECONDARY;
- PM_AddEvent( EV_FIRE_WEAPON );
+ PM_AddEvent( EV_FIRE_WEAPON2 );
addTime = BG_Weapon( pm->ps->weapon )->repeatRate2;
break;
diff --git a/src/game/g_active.c b/src/game/g_active.c
index 9046a79..04ae3ec 100644
--- a/src/game/g_active.c
+++ b/src/game/g_active.c
@@ -1197,9 +1197,9 @@ void ClientEvents( gentity_t *ent, int oldEventSequence )
FireWeapon2( ent );
break;
- case EV_FIRE_WEAPON3:
- FireWeapon3( ent );
- break;
+ case EV_FIRE_WEAPON3:
+ FireWeapon3( ent );
+ break;
case EV_NOAMMO:
break;
@@ -2000,7 +2000,7 @@ client->ps.pm_type = PM_HUMMEL;
}
break;
- case WP_ALEVEL5:
+ case WP_ALEVEL5:
if( !CheckPounceAttack( ent ) )
{
client->ps.weaponstate = WEAPON_READY;
diff --git a/src/game/g_weapon.c b/src/game/g_weapon.c
index f7c68c9..fd24482 100644
--- a/src/game/g_weapon.c
+++ b/src/game/g_weapon.c
@@ -1789,23 +1789,23 @@ void FireWeapon2( gentity_t *ent )
areaZapFire( ent );
break;
- case WP_PAIN_SAW:
+ case WP_PAIN_SAW:
painSawFire2( ent );
break;
- case WP_LUCIFER_CANNON:
- LCChargeFire( ent, qtrue );
+ case WP_LUCIFER_CANNON:
+ LCChargeFire( ent, qtrue );
break;
- case WP_CHAINGUN:
- bulletFire( ent, CHAINGUN_SPREAD2, CHAINGUN_DMG2, MOD_CHAINGUN );
+ case WP_CHAINGUN:
+ bulletFire( ent, CHAINGUN_SPREAD2, CHAINGUN_DMG2, MOD_CHAINGUN );
break;
- case WP_FLAMER:
+ case WP_FLAMER:
FlamerNormal( ent );
break;
- case WP_PULSE_RIFLE:
+ case WP_PULSE_RIFLE:
prifleStasisFire( ent );
break;
diff --git a/src/game/tremulous.h b/src/game/tremulous.h
index d0c4dd1..82a2c7e 100644
--- a/src/game/tremulous.h
+++ b/src/game/tremulous.h
@@ -291,14 +291,14 @@ TREMULOUS EDGE MOD SRC FILE
//Hummel
#define LEVEL5_UPG_SPEED 1.1f
#define LEVEL5_UPG_VALUE AVM(400)
-#define LEVEL5_UPG_HEALTH AHM(200)
+#define LEVEL5_UPG_HEALTH AHM(180)
#define LEVEL5_UPG_REGEN (0.03f * LEVEL5_UPG_HEALTH)
#define LEVEL5_UPG_COST 2
-#define LEVEL5_CLAW_U_REPEAT 500
+#define LEVEL5_CLAW_U_REPEAT 333
#define LEVEL5_CLAW_U_K_SCALE 1.0f
#define LEVEL5_CLAW_U_RANGE 70.0f
#define LEVEL5_CLAW_WIDTH 12.0f
-#define LEVEL5_CLAW_DMG ADM(40)
+#define LEVEL5_CLAW_DMG ADM(30)
#define LEVEL5_PRICKLES_REPEAT 200
#define LEVEL5_PRICKLES_NEXTTHINK 6000
#define LEVEL5_PRICKLES_RADIUS 50
@@ -307,14 +307,14 @@ TREMULOUS EDGE MOD SRC FILE
#define LEVEL5_PRICKLES_DMG 6
#define LEVEL5_PRICKLES_RELOADTIME 2300
#define LEVEL5_PRICKLES_AMMO 10
-#define LEVEL5_POUNCE_JUMP_MAG 500
-#define LEVEL5_POUNCE_REPEAT 1000
-#define LEVEL5_POUNCE_TIME 600
+#define LEVEL5_POUNCE_JUMP_MAG 800
+#define LEVEL5_POUNCE_REPEAT 300
+#define LEVEL5_POUNCE_TIME 800
#define LEVEL5_POUNCE_TIME_MIN 200
#define LEVEL5_POUNCE_DMG 40
-#define LEVEL5_POUNCE_RANGE 48.0f
-#define LEVEL5_POUNCE_WIDTH 14.0f
-#define LEVEL5_POUNCE_SPEED_MOD 0.75f
+#define LEVEL5_POUNCE_RANGE 40.0f
+#define LEVEL5_POUNCE_WIDTH 12.0f
+#define LEVEL5_POUNCE_SPEED_MOD 0.8f
/*
* HUMAN
*/