bool CAI_Enemies::ShouldDiscardMemory( AI_EnemyInfo_t *pMemory ) { CBaseEntity *pEnemy = pMemory->hEnemy; if ( pEnemy ) { CAI_BaseNPC *pEnemyNPC = pEnemy->MyNPCPointer(); if ( pEnemyNPC ) { if ( pEnemyNPC->GetState() == NPC_STATE_DEAD ) return true; // forget about the enemy if he changes faction if ( pEnemyNPC->GetFaction() != pMemory->nFaction ) return true; } } else { if ( !pMemory->bDangerMemory ) return true; } if ( !pMemory->bUnforgettable && gpGlobals->curtime > pMemory->timeLastSeen + m_flEnemyDiscardTime ) { return true; } return false; }
void CAI_GoalEntity::ResolveNames() { m_actors.SetCount( 0 ); CBaseEntity *pEntity = NULL; for (;;) { switch ( m_SearchType ) { case ST_ENTNAME: { pEntity = gEntList.FindEntityByName( pEntity, m_iszActor, NULL ); break; } case ST_CLASSNAME: { pEntity = gEntList.FindEntityByClassname( pEntity, STRING( m_iszActor ) ); break; } } if ( !pEntity ) break; CAI_BaseNPC *pActor = pEntity->MyNPCPointer(); if ( pActor && pActor->GetState() != NPC_STATE_DEAD ) { AIHANDLE temp; temp = pActor; m_actors.AddToTail( temp ); } } m_hGoalEntity = gEntList.FindEntityByName( NULL, m_iszGoal, NULL ); }