Fix player pain sound.

This commit is contained in:
Night Owl 2017-12-29 08:07:40 +05:00
parent c15514ea16
commit b7bf8d90fb
1 changed files with 23 additions and 34 deletions

View File

@ -415,44 +415,33 @@ void CBasePlayer::TraceAttack( entvars_t *pevAttacker, float flDamage, Vector ve
TraceBleed( flDamage, vecDir, ptr, bitsDamageType ); TraceBleed( flDamage, vecDir, ptr, bitsDamageType );
AddMultiDamage( pevAttacker, this, flDamage, bitsDamageType ); AddMultiDamage( pevAttacker, this, flDamage, bitsDamageType );
if( bitsDamageType & ( DMG_BLAST | DMG_SHOCK | DMG_SONIC | DMG_ENERGYBEAM ) ) if( flDamage >= pev->health * 0.333 )
{ {
float flRand = RANDOM_FLOAT( 0, 1 ); switch( ptr->iHitgroup )
// Blast damage always trigger pain sounds.
if( bitsDamageType & DMG_BLAST )
flRand = 0;
//
// 25% chances playing damage location based pain sound.
//
if( flRand <= 0.25 )
{ {
switch( ptr->iHitgroup ) case HITGROUP_HEAD:
{ EMIT_SOUND( ENT( pev ), CHAN_VOICE, "player/pain/pain_head.wav", 1, ATTN_NORM );
case HITGROUP_HEAD: break;
EMIT_SOUND( ENT( pev ), CHAN_VOICE, "player/pain/pain_head.wav", 1, ATTN_NORM ); case HITGROUP_CHEST:
break; EMIT_SOUND( ENT( pev ), CHAN_VOICE, "player/pain/pain_chest.wav", 1, ATTN_NORM );
case HITGROUP_CHEST: break;
EMIT_SOUND( ENT( pev ), CHAN_VOICE, "player/pain/pain_chest.wav", 1, ATTN_NORM ); case HITGROUP_STOMACH:
break; EMIT_SOUND( ENT( pev ), CHAN_VOICE, "player/pain/pain_stomach.wav", 1, ATTN_NORM );
case HITGROUP_STOMACH: break;
EMIT_SOUND( ENT( pev ), CHAN_VOICE, "player/pain/pain_stomach.wav", 1, ATTN_NORM ); case HITGROUP_LEFTARM:
break; case HITGROUP_RIGHTARM:
case HITGROUP_LEFTARM: EMIT_SOUND( ENT( pev ), CHAN_VOICE, "player/pain/pain_arm.wav", 1, ATTN_NORM );
case HITGROUP_RIGHTARM: break;
EMIT_SOUND( ENT( pev ), CHAN_VOICE, "player/pain/pain_arm.wav", 1, ATTN_NORM ); case HITGROUP_LEFTLEG:
break; case HITGROUP_RIGHTLEG:
case HITGROUP_LEFTLEG: EMIT_SOUND( ENT( pev ), CHAN_VOICE, "player/pain/pain_leg.wav", 1, ATTN_NORM );
case HITGROUP_RIGHTLEG: break;
EMIT_SOUND( ENT( pev ), CHAN_VOICE, "player/pain/pain_leg.wav", 1, ATTN_NORM ); default:
break; break;
default:
EMIT_SOUND( ENT( pev ), CHAN_VOICE, "player/pain/spout.wav", 1, ATTN_NORM );
break;
}
} }
} }
else
EMIT_SOUND( ENT( pev ), CHAN_VOICE, "player/pain/spout.wav", 1, ATTN_NORM );
} }
} }