示例#1
0
//-----------------------------------------------------------------------------
// Returns true if the entity may be teleported
//-----------------------------------------------------------------------------
bool CPointTeleport::EntityMayTeleport( CBaseEntity *pTarget )
{
	if ( pTarget->GetMoveParent() != NULL )
	{
		// Passengers in a vehicle are allowed to teleport; their behavior handles it
		CBaseCombatCharacter *pBCC = pTarget->MyCombatCharacterPointer();
		if ( pBCC == NULL || ( pBCC != NULL && pBCC->IsInAVehicle() == false ) )
			return false;
	}

	return true;
}
//-----------------------------------------------------------------------------
// Purpose: Determines if an enemy is inside a vehicle or not
// Output : Returns true if the enemy is outside the vehicle.
//-----------------------------------------------------------------------------
bool CAI_PassengerBehaviorZombie::EnemyInVehicle( void )
{
	// Obviously they're not...
	if ( GetOuter()->GetEnemy() == NULL )
		return false;

	// See if they're in a vehicle, currently
	CBaseCombatCharacter *pCCEnemy = GetOuter()->GetEnemy()->MyCombatCharacterPointer();
	if ( pCCEnemy && pCCEnemy->IsInAVehicle() )
		return true;

	return false;
}
bool CAI_ScriptConditions::EvalActorInVehicle( const EvalArgs_t &args )
{
    // We don't care
    if ( m_fActorInVehicle == TRS_NONE )
        return true;

    if ( !args.pActor )
        return true;

    // Must be able to be in a vehicle at all
    CBaseCombatCharacter *pBCC = args.pActor->MyCombatCharacterPointer();
    if ( pBCC == NULL )
        return false;

    // Desired states must match
    return ( !!pBCC->IsInAVehicle() == m_fActorInVehicle );
}