При выборе вариантов 1 и 3 все работает как надо, а при 2 выдает ошибку.
Ошибку на ChangeHeroState(heroichik, 4, 5).
Нет такой функции, есть без "e" на конце.
spells = {SPELL_MASS_WEAKNESS, SPELL_MASS_SLOW, SPELL_MASS_CURSE, SPELL_UNHOLY_WORD} как заставить применять случайное заклинание?
В самом общем случае:
random_spell = spells[random(1, length(spells))];
Только если это в бою, там не реализована функция возвращающая случайное число (боевые и походные скрипты имеют разный набор функций). Нужно либо писать её самостоятельно, либо использовать например библиотеку lualib.lua от RedHeavenHero (ищите по форуму). Я использовал библиотеку.