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