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(); }
void CShambler :: MonsterAttack( void ) { AI_Charge( 5 ); if( m_iAIState == STATE_ATTACK && m_fSequenceFinished ) MonsterRun(); }
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); } }
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(); }
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); } }