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 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 :: CastLightning( void ) { if( !m_iAttackCount ) { // plays a ligtning sound EMIT_SOUND( edict(), CHAN_WEAPON, "shambler/sboom.wav", 1.0, ATTN_NORM ); } if( pev->owner ) { // remove lightning (if present) CBaseEntity *pLightning = CBaseEntity::Instance( pev->owner ); if( pLightning ) UTIL_Remove( pLightning ); pev->owner = NULL; } if( m_iAttackCount > 2 && g_iSkillLevel != SKILL_NIGHTMARE ) return; if (m_hEnemy == NULL) return; pev->effects |= EF_MUZZLEFLASH; m_iAttackCount++; // count shoots AI_Face (); // Lightning bolt effect TraceResult trace; Vector vecOrg = pev->origin + Vector(0,0,40); // adjust lightning origin Vector vecDir = (m_hEnemy->pev->origin + Vector(0,0,16) - vecOrg).Normalize(); UTIL_TraceLine( vecOrg, pev->origin + vecDir * 600, ignore_monsters, ENT(pev), &trace ); MESSAGE_BEGIN( MSG_BROADCAST, gmsgTempEntity ); WRITE_BYTE( TE_LIGHTNING1 ); WRITE_ENTITY( entindex() ); WRITE_COORD( vecOrg.x ); WRITE_COORD( vecOrg.y ); WRITE_COORD( vecOrg.z ); WRITE_COORD( trace.vecEndPos.x ); WRITE_COORD( trace.vecEndPos.y ); WRITE_COORD( trace.vecEndPos.z ); MESSAGE_END(); // Do damage CBasePlayer::LightningDamage(pev->origin, trace.vecEndPos, this, 10, vecDir ); }
void CSoldier :: MonsterFire( void ) { if( m_fInAttack ) return; AI_Face(); EMIT_SOUND( edict(), CHAN_VOICE, "soldier/sattck1.wav", 1.0, ATTN_NORM ); // fire somewhat behind the player, so a dodging player is harder to hit Vector vecDir = ((m_hEnemy->pev->origin - m_hEnemy->pev->velocity * 0.2f) - pev->origin).Normalize(); CBasePlayer::FireBullets( pev, 4, vecDir, Vector(0.1, 0.1, 0) ); pev->effects |= EF_MUZZLEFLASH; m_fInAttack = TRUE; }
void CSoldier :: MonsterAttack( void ) { if( m_fAttackFinished ) { m_fAttackFinished = FALSE; m_fInAttack = FALSE; if( CheckRefire()) { MonsterMissileAttack (); } else { MonsterRun(); } } AI_Face(); }