コード例 #1
0
ファイル: agrunt.cpp プロジェクト: Solexid/halflife
//=========================================================
// PrescheduleThink 
//=========================================================
void CAGrunt :: PrescheduleThink ( void )
{
	if ( ShouldSpeak() )
	{
		if ( m_flNextWordTime < gpGlobals->time )
		{
			int num = -1;

			do
			{
				num = RANDOM_LONG(0,ARRAYSIZE(pIdleSounds)-1);
			} while( num == m_iLastWord );

			m_iLastWord = num;

			// play a new sound
			EMIT_SOUND ( ENT(pev), CHAN_VOICE, pIdleSounds[ num ], 1.0, ATTN_NORM );

			// is this word our last?
			if ( RANDOM_LONG( 1, 10 ) <= 1 )
			{
				// stop talking.
				StopTalking();
			}
			else
			{
				m_flNextWordTime = gpGlobals->time + RANDOM_FLOAT( 0.5, 1 );
			}
		}
	}
}
コード例 #2
0
//=========================================================
// PrescheduleThink 
//=========================================================
void CNPC_AlienGrunt::PrescheduleThink ( void )
{
	BaseClass::PrescheduleThink();
	
	if ( ShouldSpeak() )
	{
		if ( m_flNextWordTime < gpGlobals->curtime )
		{
			// play a new sound
			CPASAttenuationFilter filter( this );
			EmitSound( filter, entindex(), "AlienGrunt.Idle" );

			// is this word our last?
			if ( random->RandomInt( 1, 10 ) <= 1 )
			{
				// stop talking.
				StopTalking();
			}
			else
			{
				m_flNextWordTime = gpGlobals->curtime + random->RandomFloat( 0.5, 1 );
			}
		}
	}
}