Алеха, код скрипта выполняется последовательно, любая ошибка приводит к завершению работы интерпретатора и весь дальнейший код выполнен не будет, даже если он правильный. К примеру, если героя с именем "Necros" на карте нет, скрипт слетит на первой строчке EnableHeroAI("Necros", nil) и дальше не пойдет. Распространенные ошибки - точка вместо запятой или наоборот, пропуск закрывающих end'ов и так далее. Включите консоль, там будет написано на какой команде вылетело.