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(); }
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(); }