Пошлость, с ходу могу только сказать, что CreateMonster вызывается неправильно, lua такое не понимает:
mood= MONSTER_MOOD_AGGRESSIVE,courage= MONSTER_COURAGE_CAN_FLEE_JOIN,rotation= 0
Вероятно парсер на этой строке и слетел.
Второе, если скрипт крашится, хорошим тоном всё таки является заглянуть в консоль и привести здесь текст ошибки (да он и вам часто может помочь понять проблему самостоятельно).
Третье, если вы нацелились на более-менее скриптовую карту (>200 строчек кода), рекомендую другой подход к структуре кода. Сейчас все ваши инициализирующие функции расположены на верхнем уровне в разнобой, в результате чего достаточно одной мелкой ошибки в коде, чтобы интерпретатор вылетел, скрипты полностью перестали работать, и главное непонятно где искать проблему.
Рекомендую всё, что выполняется непосредственно при старте карты, поместить в отдельную функцию, дополнив её периодически printa'ми:
function InitMap()
print('init start');
EnableHeroAI('Brem', nil);
EnableHeroAI('Straker', nil);
print('init heroes OK');
Trigger(REGION_ENTER_AND_STOP_TRIGGER, "rew", "rewF" );
Trigger(PLAYER_REMOVE_HERO_TRIGGER, PLAYER_2, 'Player2LoseHero');
print('init triggers OK');
print('init finish');
end
InitMap();
Этот код помещается в самый конец скрипта и при запуске карты первым делом заглядываем в консоль.
Если в коде была ошибка синтаксиса, которую lua-интерпретатор не переварил, консоль будет пустая, до функции InitMap() дело просто не дойдёт.
Если всё хорошо, консоль будет заканчиваться строчкой 'init finish'.
Если мы попытаемся что-то инициализировать неправильно, к примеру ошибемся с названием региона "rew", то в консоли будет:
init start
init heroes OK
какая-нибудь ошибка красным шрифтом
и по этому логу сразу ясно в каких строчках искать ошибку.