ваш скрипт конвертирует атеистов в целевом городе во все религии исходного
этот подход порождает множество проблем
во-первых он основан на том, что SetPopulation увеличивает число атеистов. Вы уверены в этом?
беглый взгляд в исходник такого механизма не выявил:
https://github.com/Gedemon/Civ5-DLL/...DLL/CvCity.cpp

во-вторых, давление атеизма в произвольно взятом городе может быть любым, от 100 до нескольких тысяч.
например город размера 10 может иметь от 100 до 1000 очков атеизма.
поэтому воздействие миграции будет непредсказуемым, от ничтожного до очень сильного, если он скажем 900 очков атеизма конвертнет в какую-то другую религию. или если там было всего 100 атеизма, и чел прибыл из города 10 размера, он обратит только 10 очков. будет лучше если эффект миграции будет легко пресказуемым.

я предлагаю для простоты выбирать какую-то одну религию из домашнего города и создавать одного последователя в городе назначения. это будет наглядно для игрока.

напр.
а) приехал буддист в город размера 9, 900 очков атеизма: обращаем 1/(1+9) в буддизм, в итоге будет 1 буддист и 9 атеистов
б) приехал буддист в город размера 9, 500 очков атеизма и 1000 индуизма (3 атеиста, 6 индуистов), конвертируем 50 из атеизма в буддизм и 100 из индуизма в буддизм, получаем 450 атеизма, 900 индуизма, 150 буддизма (3 атеиста, 6 индуистов, 1 буддист).