mirror of
https://github.com/ReactionQuake3/reaction.git
synced 2025-03-31 23:11:32 +00:00
Blaze: Falling damage tweaks
This commit is contained in:
parent
bb4f35017c
commit
3a336d349c
2 changed files with 31 additions and 25 deletions
|
@ -1121,7 +1121,7 @@ static void PM_CrashLand( void ) {
|
|||
pm->ps->legsTimer = TIMER_LAND;
|
||||
|
||||
// calculate the exact velocity on landing
|
||||
dist = pm->ps->origin[2] - pml.previous_origin[2];
|
||||
/*dist = pm->ps->origin[2] - pml.previous_origin[2];
|
||||
vel = pml.previous_velocity[2];
|
||||
acc = -pm->ps->gravity;
|
||||
|
||||
|
@ -1134,7 +1134,7 @@ static void PM_CrashLand( void ) {
|
|||
return;
|
||||
}
|
||||
t = (-b - sqrt( den ) ) / ( 2 * a );
|
||||
|
||||
*/
|
||||
//delta = vel + t * acc;
|
||||
//Blaze: added to make it more like aq2
|
||||
delta = pm->ps->velocity[2] - pml.previous_velocity[2];
|
||||
|
@ -1166,27 +1166,28 @@ static void PM_CrashLand( void ) {
|
|||
|
||||
// SURF_NODAMAGE is used for bounce pads where you don't ever
|
||||
// want to take damage or play a crunch sound
|
||||
damage = (int)(((delta-30)/2));
|
||||
if (damage < 1) damage = 1;
|
||||
damage *= 10;
|
||||
|
||||
if (delta > 30)
|
||||
{
|
||||
|
||||
//Com_Printf("delta =(%f), delta - 30 = (%f), damage = (%d)",delta,delta-30,(int)(((delta-30)/2)));
|
||||
damage = (int)(((delta-30)/2));
|
||||
if (damage < 1) damage = 1;
|
||||
damage *= 10;
|
||||
|
||||
if ( !(pml.groundTrace.surfaceFlags & SURF_NODAMAGE) ) {
|
||||
if ( delta > 30 ) {
|
||||
//Blaze lots of changes to make it more like aq2
|
||||
// this is a pain grunt, so don't play it if dead
|
||||
if ( pm->ps->stats[STAT_HEALTH] > 0 ) {
|
||||
PM_AddEvent( EV_FALL_FAR );
|
||||
pm->ps->stats[STAT_FALLDAMAGE] = damage;
|
||||
if ( !(pml.groundTrace.surfaceFlags & SURF_NODAMAGE) ) {
|
||||
//Blaze lots of changes to make it more like aq2
|
||||
// this is a pain grunt, so don't play it if dead
|
||||
if ( pm->ps->stats[STAT_HEALTH] > 0 && damage > 0) {
|
||||
PM_AddEvent( EV_FALL_FAR );
|
||||
pm->ps->stats[STAT_FALLDAMAGE] = damage;
|
||||
}
|
||||
else
|
||||
{
|
||||
PM_AddEvent( PM_FootstepForSurface() );
|
||||
//Elder: added? useful?
|
||||
pm->ps->stats[STAT_FALLDAMAGE] = 0;
|
||||
}
|
||||
} else if ( delta > 7 ) {
|
||||
PM_AddEvent( EV_FALL_SHORT );
|
||||
pm->ps->stats[STAT_FALLDAMAGE] = 0;
|
||||
|
||||
}
|
||||
else {
|
||||
PM_AddEvent( PM_FootstepForSurface() );
|
||||
//Elder: added? useful?
|
||||
pm->ps->stats[STAT_FALLDAMAGE] = 0;
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -1833,14 +1834,16 @@ static void PM_Weapon( void ) {
|
|||
// check for item using
|
||||
if ( pm->cmd.buttons & BUTTON_USE_HOLDABLE ) {
|
||||
if ( ! ( pm->ps->pm_flags & PMF_USE_ITEM_HELD ) ) {
|
||||
|
||||
/* Blaze: No more medkit
|
||||
if ( bg_itemlist[pm->ps->stats[STAT_HOLDABLE_ITEM]].giTag == HI_MEDKIT
|
||||
&& pm->ps->stats[STAT_HEALTH] >= (125) ) { //medikit check pm->ps->stats[STAT_MAX_HEALTH] + 25) ) {
|
||||
// don't use medkit if at max health
|
||||
} else {
|
||||
} else {*/
|
||||
pm->ps->pm_flags |= PMF_USE_ITEM_HELD;
|
||||
PM_AddEvent( EV_USE_ITEM0 + bg_itemlist[pm->ps->stats[STAT_HOLDABLE_ITEM]].giTag );
|
||||
pm->ps->stats[STAT_HOLDABLE_ITEM] = 0;
|
||||
}
|
||||
//}
|
||||
return;
|
||||
}
|
||||
} else {
|
||||
|
|
|
@ -178,9 +178,10 @@ int Pickup_Holdable( gentity_t *ent, gentity_t *other ) {
|
|||
|
||||
other->client->ps.stats[STAT_HOLDABLE_ITEM] = ent->item - bg_itemlist;
|
||||
|
||||
/* Blaze: No Kamikazie
|
||||
if( ent->item->giTag == HI_KAMIKAZE ) {
|
||||
other->client->ps.eFlags |= EF_KAMIKAZE;
|
||||
}
|
||||
}*/
|
||||
|
||||
return RESPAWN_HOLDABLE;
|
||||
}
|
||||
|
@ -537,6 +538,7 @@ void RespawnItem( gentity_t *ent ) {
|
|||
te->r.svFlags |= SVF_BROADCAST;
|
||||
}
|
||||
|
||||
/* Blaze: No Kamikaze item
|
||||
if ( ent->item->giType == IT_HOLDABLE && ent->item->giTag == HI_KAMIKAZE ) {
|
||||
// play powerup spawn sound to all clients
|
||||
gentity_t *te;
|
||||
|
@ -551,6 +553,7 @@ void RespawnItem( gentity_t *ent ) {
|
|||
te->s.eventParm = G_SoundIndex( "sound/items/kamikazerespawn.wav" );
|
||||
te->r.svFlags |= SVF_BROADCAST;
|
||||
}
|
||||
*/
|
||||
|
||||
// play the normal respawn sound only to nearby clients
|
||||
G_AddEvent( ent, EV_ITEM_RESPAWN, 0 );
|
||||
|
@ -929,7 +932,7 @@ gentity_t *LaunchItem( gitem_t *item, vec3_t origin, vec3_t velocity, int xr_fla
|
|||
dropped->s.pos.trTime = level.time; // +50; no pre-step if it doesn't clip players
|
||||
VectorScale( velocity, 40, dropped->s.pos.trDelta ); // 700 500 400
|
||||
SnapVector( dropped->s.pos.trDelta ); // save net bandwidth
|
||||
dropped->physicsBounce = 0.1;
|
||||
dropped->physicsBounce = 0.1f;
|
||||
}
|
||||
|
||||
trap_LinkEntity (dropped);
|
||||
|
|
Loading…
Reference in a new issue