вероятно, проблема в этих двух строчках:DEFENDER = GetDefenderHero();print(DEFENDER);ATTACKER = GetAttackerHero();print(ATTACKER);
суть в чем - в игре определены 2 константы ATTACKER и DEFENDER, которые соответственно определяют атакующую и защищающуюся стороны боя. Этими строчками ты по сути перезаписываешь эти константы, назначая в них имена юнитов героев вместо стандартных сторон. Дальнейшие ошибки очевидны - GetAttackerCreatures() и GetDefenderCreatures() это просто обертки над функцией более низкого уровня - внутри них происходит вызов GetCreatures(ATTACKER) и GetCreatures(DEFENDER) соответственно. Из-за переопределенных констант, эти функции не могут отработать корректно, что и провоцирует ошибку. Остальной скрипт просто не отрабатывает из-за этих ошибок. Соответственно, решение простое - использовать другие названия для твоих констант имен героев.
Gerter, благодарю за помощь!
Действительно, стоило эти константам дать другие имена, как скрипт пошел как по маслу! По крайней мере, пока я его еще чем-то не сломаю:)
Получается, ATTACKER и DEFENDER это зарезервированные слова, как к примеру, CREATURE_VAMPIRE.