func_rotate_train is an extremely flexible (read: complex) controller for a rotate_object. It allows you to move the rotate_object in a sequence of different translations and rotations. It must be set up in conjunction with a series of path_rotate entities, and so that article is required reading.
target must contain the targetname of the rotate_object that the func_rotate_train is to control.
path must contain the targetname of the first path_rotate
Setting this key to 1 gives the func_rotate_train the usual ratchet sounds of a func_train. Alternatively…
noise contains the name of the sound to play when train stops and noise1 contains the name of the sound to play when train moves. These two fields can be overwritten by path_rotate entities – and changes by path_corners persist until another path_corner sets them.
The train will start moving automatically unless you give it a targetname.
deathtype sets the obituary message for players killed by the train.
dmg sets the amount of damage the train inflicts when blocked.
How fast the train moves and how much it rotates is controlled by the path_rotate entities it follows.