They aren't strictly speaking animations, all the entities are just simple, normally static, solid objects that are being moved around in games space in real time.
The trick to getting it smooth is:
1) Set the entities physics weight to 0.
2) Store the entities for each lift in an array then move the lift platform first followed by all its entities in the same frame.
3) Turn collisions off before moving the lift and on again afterwards.
3) Set vsync to 1 in the init file and only move things by a tiny bit each frame, for example the doors are moved by 0.25 each frame.
4) Have a machine fast enough to always give 60 FPS.
Not only does this only use two scripts but it does not rely on any timers and only uses 3 global variables! (two of which are 'lists'
)
In third person I think it suffers from the Lua before Physics bug* (which Lee is fixing for the next release) so isn't as smooth plus the camera movement as the lifts go up or down is a bit erratic (a common 3rd person problem in enclosed spaces).
(*correction, it happens even when the lifts are stationary so it is some weird camera problem)
The only limitations on the lifts with the current scripts are; 1) that they can only be oriented 0, 90, 180 or 270 degrees, the math required to allow any angle would be possible but not worth it really. 2) they can only currently be 'up' or 'down' .
You can have as many lifts as you want (not sure if there is any limit to how many 'active' entities GG will cope with but the demo here has 15 lifts).
Been there, done that, got all the T-Shirts!