//skill1: target_z 0
action elevator()
{
c_setminmax(my);
set(my,POLYGON);
if(!my.skill1) error("Elevator: Enter a target height in WED!");
my.skill2 = my.z;
my.skill3 = 1;
while(!player) wait(1);
while(1)
{
if(player.x > my.x+my.min_x && player.x < my.x+my.max_x
&& player.y > my.y+my.min_y && player.y < my.y+my.max_y
&& player.z+player.min_z > my.z+my.max_z && player.z+player.min_z < my.z+my.max_z+32) //you may have to adapt the 32 quants here
{
my.skill4 = maxv(my.skill4-time_step,0);
if(!my.skill4) my.skill5 = 1; //activate elevator
}
else my.skill4 = 16; // one second delay
if(my.skill5)
{
if(my.skill3 == 1)
{
my.skill6 = minv(my.skill1,my.z+10*time_step);
c_move(me,nullvector,vector(0,0,my.skill6-my.z),IGNORE_MODELS | IGNORE_SPRITES | IGNORE_WORLD);
if(my.skill6 >= my.skill1)
{
my.skill3 = -1;
my.skill5 = 0;
my.skill4 = 16;
}
}
else
{
my.skill6 = maxv(my.skill2,my.z-10*time_step);
c_move(me,nullvector,vector(0,0,my.skill6-my.z),IGNORE_MODELS | IGNORE_SPRITES | IGNORE_WORLD);
if(my.skill6 <= my.skill2)
{
my.skill3 = 1;
my.skill5 = 0;
my.skill4 = 16;
}
}
}
wait(1);
}
}