Теперь пишут ошибку на строчкеif GetHeroName(defH) == "Shadwyn" and GetHeroName(attH) == "Nur" then
Может, я, конечно, endами обсчиталась, но непохоже.
Просмотрите каждый блок и проверьте, везде ли стоит end, т.к если вы не поставили end где-то, то вам интерпретатор может и не выдать адекватного местоположения пропущенного end`а, так уж он работает.
Будь яростней пред ночью всех ночей,
Не дай погаснуть свету своему!
Хоть мудрый знает – не осилишь тьму
Во мгле словами не зажжёшь лучей –
Не уходи безропотно во тьму.