示例#1
0
        void UpdateFollowerAI(const uint32 uiDiff)
        {
            if (!UpdateVictim())
            {
                if (!HasFollowState(STATE_FOLLOW_INPROGRESS))
                    return;

                if (!HasFollowState(STATE_FOLLOW_PAUSED))
                {
                    if (m_uiFallAsleepTimer <= uiDiff)
                    {
                        SetSleeping();
                        m_uiFallAsleepTimer = urand(25000, 90000);
                    }
                    else
                        m_uiFallAsleepTimer -= uiDiff;
                }

                return;
            }

            DoMeleeAttackIfReady();
        }
示例#2
0
void CASW_Simple_Alien::Spawn(void)
{
	BaseClass::Spawn();
	Precache();

	// appearance
	SetModel( SWARM_NEW_DRONE_MODEL );
	m_flAnimTime = gpGlobals->curtime;	
	SetCycle( 0 );
	PlayRunningAnimation();

	// collision
	SetHullType( HULL_MEDIUMBIG ); 
	UTIL_SetSize(this, Vector(-19,-19,0), Vector(19,19,69));
	SetSolid( SOLID_BBOX );
	AddSolidFlags( FSOLID_NOT_STANDABLE );
	SetCollisionGroup( ASW_COLLISION_GROUP_ALIEN );	

	// movement
	SetMoveType( MOVETYPE_STEP );
	m_fArrivedTolerance = 30.0f;

	// health
	m_iHealth = ASWGameRules()->ModifyAlienHealthBySkillLevel(asw_drone_health.GetInt());

	SetMaxHealth(m_iHealth);
	m_takedamage		= DAMAGE_YES;
		
	// state
	SetState(ASW_SIMPLE_ALIEN_IDLING);
	SetSleeping(true);
	m_fLastThinkTime = gpGlobals->curtime;
	SetThink( &CASW_Simple_Alien::SleepThink );
	SetNextThink( gpGlobals->curtime + random->RandomFloat(0.01f, 0.2f) );

	UpdateSleeping();
}