Я так ещё не пробовал, поэтому - что означают строки:
store_lvar(time, 0)
sigid = next_sig_id (SIGFN_NORMAL);
store_lvar(time, wait_time);
train_requires_next_signal(sigid,1);
И как работа светофора будет выглядеть на практике? Задержка переключения огней?
Добавлено через 4 минуты

Помню, как-то давно получил мигающий огонь, считывая состояние второй головы в одном светофоре, и изменяя ее состояние в зависимости от первой, которая тоже меняла аспект в зависимости от второй.
Случайно ошибившись в скрипте, получил такой вот круговорот аспектов в светофоре!