102 lines
1.9 KiB
Plaintext
102 lines
1.9 KiB
Plaintext
|
#include common_scripts\utility;
|
||
|
|
||
|
/*******************
|
||
|
|
||
|
- prefabs/bookstore/escalator_up.map
|
||
|
- prefabs/bookstore/escalator_down.map
|
||
|
|
||
|
These two prefabs are set up to work with the script.
|
||
|
|
||
|
TODO: Make them trigger or radius based so that they don't run all the time.
|
||
|
|
||
|
*******************/
|
||
|
|
||
|
init()
|
||
|
{
|
||
|
flag_init( "_escalator_on" );
|
||
|
flag_set( "_escalator_on" );
|
||
|
|
||
|
level.escalator_movespeed = .5;
|
||
|
array = getentarray( "escalator", "targetname" );
|
||
|
array_thread( array, ::escalator_startup );
|
||
|
}
|
||
|
|
||
|
escalator_startup()
|
||
|
{
|
||
|
step = self;
|
||
|
|
||
|
while ( isdefined( step.target ) )
|
||
|
{
|
||
|
step StartUsingLessFrequentLighting();
|
||
|
step.true_origin = step.origin;
|
||
|
step.next_step = getent( step.target, "targetname" );
|
||
|
step = step.next_step;
|
||
|
}
|
||
|
|
||
|
step.true_origin = step.origin;
|
||
|
step.last = 1;
|
||
|
step.next_step = self;
|
||
|
|
||
|
thread escalator_move( self );
|
||
|
}
|
||
|
|
||
|
escalator_move( first_step )
|
||
|
{
|
||
|
step = first_step;
|
||
|
first_origin = step.origin;
|
||
|
|
||
|
while ( flag( "_escalator_on" ) )
|
||
|
{
|
||
|
movespeed = level.escalator_movespeed;
|
||
|
next_step = step.next_step;
|
||
|
|
||
|
step show();
|
||
|
|
||
|
if ( next_step != first_step )
|
||
|
step moveto( next_step.true_origin, movespeed );
|
||
|
else
|
||
|
step.origin = first_origin;
|
||
|
|
||
|
if ( next_step == first_step )
|
||
|
{
|
||
|
step hide();
|
||
|
step.true_origin = first_origin;
|
||
|
first_step = step;
|
||
|
wait movespeed;
|
||
|
continue;
|
||
|
}
|
||
|
|
||
|
step.true_origin = next_step.true_origin;
|
||
|
step = next_step;
|
||
|
}
|
||
|
|
||
|
step = first_step;
|
||
|
|
||
|
while( 1 )
|
||
|
{
|
||
|
movespeed = 2;
|
||
|
next_step = step.next_step;
|
||
|
|
||
|
step show();
|
||
|
|
||
|
step thread final_move( movespeed, next_step );
|
||
|
|
||
|
if ( next_step == first_step )
|
||
|
{
|
||
|
step hide();
|
||
|
step.true_origin = first_origin;
|
||
|
}
|
||
|
|
||
|
step.true_origin = next_step.true_origin;
|
||
|
step = next_step;
|
||
|
if( step == first_step )
|
||
|
return;
|
||
|
}
|
||
|
}
|
||
|
|
||
|
final_move( movespeed, next_step )
|
||
|
{
|
||
|
self moveto( next_step.true_origin, movespeed, 0, movespeed );
|
||
|
wait movespeed;
|
||
|
self moveto( self.origin, .05 );
|
||
|
}
|