ATC Command Syntax A train runs the current ATC command once it receives it, including delayed instructions. If the train receives a new command, the current command is discarded. Spaces can be inserted into commands as needed and are ignored. # simple commands: S<[0-9]+ speed or 'M'> Set target speed of train to . Accelerates if slower, rolls if faster. 'M' means maximum speed. Execution of command continues immediately. B<[0-9]+ speed> Brake until speed is reached. If faster, apply brakes, if slower, do nothing. Execution of command continues immediately. Examples: SM : accelerate to maximum speed S0 : roll to stand B0 : brake to stand S0B3 or B3S0: brake to 3, then roll to stand. W Wait until S and/or B commands reached the desired speed before continuing execution. D<[0-9]+ time> Delay: Wait for time seconds before continuing execution. R Reverse: change movement direction of train. ONLY WORKS WHEN TRAIN STANDS, else no-op. Use B0WR to definitely change direction. Examples: B0 W R D10 SM Subway train stopping in dead end station and returning in opposite direction OL Open left doors OR Open right doors OC Close Doors All door commands are relative to the arrow direction, so if a train drives to opposite arrow direction, L will open its right doors from driver perspective. Execution continues immediately, there is no way to wait for all doors to be opened/closed. Example: B0 W OL D10 OC D1 SM Subway train: stop in station and open doors, depart after 10 seconds. K Kick all passengers out of the trains This command kicks all passengers (non-driving players) off the train. This command works only if the train is stopped and its doors are open. # conditional statements: I; Execute code only if condition applies IE; Execute code1 only if condition applies, else execute code2 Conditions: + / - Tests the train's movement direction against the arrow on the ATC rail: M+ is true when train drives in direction of arrow. [/<=/>=][speed] Test if train's speed is greater or smaller than the given value Examples: I- B0 W R ; S8 If the train drives in the 'wrong' direction, stop and reverse; independently accelerate to speed 8 afterwards. I<8 S8 ; If the train is slower than 8, accelerate to 8. # Interlocking With advtrains_interlocking, there's one more available command: A0 Disable ARS on the train. A1 Enable ARS on the train. When disabled, the train will not trigger automatic route setting on signals based on ARS. # Persistence ATC controllers that are configured as 'static' or 'mesecon' are persistent over mapblock unloads and will even command the train when the mapblock is unloaded. This is not possible with digilines since these do not work in unloaded mapchunks. # LUA ATC controller (in development) The LUA ATC Controller will operate by using LUA code. All operations shown above will have a function equivalent. Additionally all LUA ATC controllers share an environment and setting signal and switch status will be possible to allow for complicated railway systems/fully automated subways a.s.o. Also planned: - digicompute add-on to allow computer access to the ATC environment (railway maps... ... ... ... ...)