Пример #1
0
void CHellKnight :: MonsterAttack( void )
{
	if( m_Activity == ACT_RANGE_ATTACK1 )
		AI_Face();

	if( m_Activity == ACT_MELEE_ATTACK1 )
		AI_Charge( 5 );

	if( m_Activity == ACT_SPECIAL_ATTACK1 )
		AI_Charge( 18 );

	if( m_iAIState == STATE_ATTACK && m_fSequenceFinished )
		MonsterRun();
}
Пример #2
0
void CShambler :: MonsterAttack( void )
{
	AI_Charge( 5 );

	if( m_iAIState == STATE_ATTACK && m_fSequenceFinished )
		MonsterRun();
}
Пример #3
0
void COgre :: ChainSaw( float side )
{
	if( m_hEnemy == NULL )
		return;

	if (!Q_CanDamage( m_hEnemy, this ))
		return;

	AI_Charge( 10 );

	Vector delta = m_hEnemy->pev->origin - pev->origin;

	if (delta.Length() > 100)
		return;

	float ldmg = (RANDOM_FLOAT( 0.0f, 1.0f ) + RANDOM_FLOAT( 0.0f, 1.0f ) + RANDOM_FLOAT( 0.0f, 1.0f )) * 4;
	m_hEnemy->TakeDamage (pev, pev, ldmg, DMG_GENERIC);

	if( side )
	{
		UTIL_MakeVectors( pev->angles );
		if (side == 1)
			SpawnMeatSpray (pev->origin + gpGlobals->v_forward * 16, RANDOM_FLOAT( -100.0f, 100.0f ) * gpGlobals->v_right);
		else
			SpawnMeatSpray (pev->origin + gpGlobals->v_forward * 16, side * gpGlobals->v_right);
	}
}
Пример #4
0
void COgre :: MonsterAttack( void )
{
	if( m_Activity == ACT_RANGE_ATTACK1 )
		AI_Face();

	if( m_Activity == ACT_MELEE_ATTACK1 )
		AI_Charge( 4 );

	if( m_iAIState == STATE_ATTACK && m_fSequenceFinished )
		MonsterRun();
}
Пример #5
0
void CShambler :: ShamblerClaw( float side )
{
	if (m_hEnemy == NULL)
		return;

	AI_Charge(10);

	Vector delta = m_hEnemy->pev->origin - pev->origin;

	if (delta.Length() > 100)
		return;
		
	float ldmg = (RANDOM_FLOAT(0,1) + RANDOM_FLOAT(0,1) + RANDOM_FLOAT(0,1)) * 20;
	m_hEnemy->TakeDamage( pev, pev, ldmg, DMG_SLASH);
	EMIT_SOUND( edict(), CHAN_VOICE, "shambler/smack.wav", 1, ATTN_NORM);

	if (side)
	{
		UTIL_MakeVectors( pev->angles );
		SpawnMeatSpray (pev->origin + gpGlobals->v_forward * 16, side * gpGlobals->v_right);
	}
}