I've received complaints from users and done some testing, and found that trains waiting at a chain signal for a red normal signal will, every 5 seconds or so, change state from defines.train_state.wait_signal to defines.train_state.arrive_signal, and then on the next tick flip back to defines.train_state.wait_signal, but only if the rail signal they are waiting for has been set to red by a circuit condition. It doesn't happen when waiting for a signal that is red due to traffic.
I've linked a screenshot below. The text output is from adding the following to the train state event handler:
Code: Select all
game.print(event.train.locomotives.front_movers.backer_name .. " entered state " .. TRAIN_STATE[event.train.state] .. " on tick " .. event.tick)
S is signal, C is chain signal, the green circle shows the signal that's been set to red by circuit condition.
(there's a third train waiting at another chain signal but it's hidden behind the minimap, the setup is the same as the other two)
if I turn off the constant-combinator and let the signals operate automatically the state-flipping behaviour stops and trains only change state when arriving at signals for the first time.
Sorry for the crappy screenshot and writeup but I'm a bit pressed for time right now.
Edit: the screenshot shows Fat Controller active but disabling it made no difference, and I have no running mods that exert any control on trains, only Honk that reads train state
Edit 2: apologies, forgot version info in title