(route_set()) лучше вообще убрать.
И вообще странно, в секции конфига
SignalDrawStates ( проходному прописан белый огонь, хотя в секции
SignalLights ( белого огня нет...

Попробуем вообще убрать "всё насчёт белого" из скрипта.
Строку
next_state = next_sig_lr (SIGFN_NORMAL);
перенести в начало скрипта сразу после
if (enabled)
{...
Вот если так попробовать:
SCRIPT T_Head_YGR
extern float enabled;
extern float block_state ();
extern float next_sig_lr ();
extern float next_sig_mr ();
extern float def_draw_state ();
extern float state;
extern float draw_state;
extern float sig_feature ();
float next_state;
if (enabled)
{ next_state = next_sig_lr (SIGFN_NORMAL);
state = 1;
if ( ( enabled || !sig_feature ( SIGFEAT_USER1 ) ) && ( block_state () == BLOCK_CLEAR ) )
{
if ( ( next_state == 1 ) || ( next_state == 2 ) )
{ state = 3; } /// "Yellow"
else { state = 7; }
}
draw_state = def_draw_state (state);
if ( state == 7)
{
if ( next_state == 4)
{ draw_state = 4; } /// "Yellow F"
else if ( ( next_state == 5 ) || ( next_state == 6 ) )
{ draw_state = 5; } /// "Green F"
}
}
else state = 0;
draw_state = def_draw_state (state);