столько кода, а никто не ответил, действительно...
sn="snow" and n;
в результате выполнения строчки получаем:
sn = false;
потому как
and - это логическое 'И'
и раз так - то то, что стоит слева и справа от этого оператора расценивается как логические операнды.
а любая строка - это логическое 'НЕТ'
поэтому
sn = 'НЕТ' 'И' 'что_угодно_другое' дает 'false';
таким образом у тебя всего два клипа остается после дублирования - один исходный, и второй - с именем 'false' =)
вот такое, например, будет работать:

Код:
for (var n = 0; n<10; n++) {
sn = "snow"+n;
duplicateMovieClip("snow", sn, n);
this[sn]._x = int(random(1000));
this[sn]._y = int(random(1000));
}