Сделал так, как вы сказали и вот что получилось:
Сделав отладочную печать, выяснилось, что часть этого кода просто не работает само по себе, хотя ошибок никаких нет.

На скрине видно, что function day_3rd обрывается с момента:
if GetTownRace ('player_1') == 1 then
sleep(5);
zaclyatye_1 ()
end;
if GetTownRace ('player_2') == 1 then
sleep(5);
zaclyatye_2 ()
end;
end;
То есть, эта часть почему то не работает в моем коде. В чем может быть причина? И для чего используется функция sleep в данном скрипте?
И да, я сделал как вы сказали, а именно:
function new_day_trigger()
Spawn_army()
day_3rd()
end
Trigger(NEW_DAY_TRIGGER, 'new_day_trigger' );
Это сработало для меня, осталось решить проблему с function day_3rd. Может у вас есть какие то идеи?