// by Sansa and IAF Arrow main() { level.elevatorDown = true; // elevator starts at bottom: true/false level.elevatorMoving = false; // elevator is not currently moving thread elevator_start(); } elevator_start() { elevator = getentarray ("elevatorswitch","targetname"); if ( isdefined(elevator) ) for (i = 0; i < elevator.size; i++) elevator[i] thread elevator_think(); } elevator_think() { while (1) { self waittill ("trigger"); if (!level.elevatorMoving) thread elevator_move(); } } elevator_move() { elevatormodel = getent ("elevatormodel", "targetname"); level.elevatorMoving = true; speed = 2; height = 1641; wait (1); if (level.elevatorDown) { // moves to top elevatormodel playsound ("elevator1"); // sound definition for soundaliases.csv wait (2); // wait a second to hear the motor start and then start the movement of the lift - feels more realistic elevatormodel moveZ (height, speed); elevatormodel waittill ("movedone"); level.elevatorDown = false; } else { // moves to bottom elevatormodel playsound ("elevator1"); // sound definition for soundaliases.csv wait (2); // wait a second to hear the motor start and then start the movement of the lift - feels more realistic elevatormodel moveZ (height - (height * 2), speed); elevatormodel waittill ("movedone"); level.elevatorDown = true; } level.elevatorMoving = false; }