Two-level elevator: demons in my script, I'm stumped
Posted: Wed Jan 21, 2004 4:08 am
I'm having a little trouble with this elevator of mine (yes, an elevator, very sorry). It's only a two level elevator, very simple. I have three triggers total for it: one inside the elevator that extends to cover both the top and bottom switches inside the elevator shaft (warehouse_elevator_trigger) and then two more triggers, one at the top outside the elevator and one at the bottom outside, both for calling the elevator (warehouse_elevator_trigger_top and warehouse_elevator_trigger_bottom respectively). When the elevator is moved to the bottom (warepos 0) whether by the trigger inside or if it is called there by the bottom switch, I don't have a problem. The elevator stops, the doors open and stay open, and it waits for another trigger. But if it gets moved to the top (warepos 1) it reaches the top, opens the doors up there, and quickly closes them and moves back down to the bottom as if I had initiated the warehouse_elevator_movedown method immediatly after reaching the top. Here's my code, I just can't figure out what's wrong:
Thanks in advance to anyone who can figure out this demon in my code.
Code: Select all
//---------------------------
// Warehouse Elevator
//---------------------------
warehouse_elevator_prep:
$warehouse_elevator moveto $warehouse_top
$warehouse_elevator speed 80
$warehouse_elevator move
$warehouse_door_bottom_right speed 48
$warehouse_door_bottom_left speed 48
$warehouse_door_top_right speed 48
$warehouse_door_top_left speed 48
$warehouse_door_top_right moveNorth 38
$warehouse_door_top_left moveSouth 38
$warehouse_door_top_right move
$warehouse_door_top_left move
level.warepos = 1
thread warehouse_elevator_standby //run inner trigger thread
thread warehouse_elevator_triggertop_standby //run top outer trigger thread
thread warehouse_elevator_triggerbottom_standby //run bottom outer trigger thread
warehouse_elevator_standby:
$warehouse_elevator_trigger triggerable
$warehouse_elevator_trigger waittill trigger
if (level.warepos == 0)
{
goto warehouse_elevator_moveup
end
}
else if (level.warepos == 1)
{
goto warehouse_elevator_movedown
end
}
end
warehouse_elevator_triggertop_standby:
$warehouse_elevator_trigger_top triggerable
$warehouse_elevator_trigger_top waittill trigger
if (level.warepos == 0)
{
goto warehouse_elevator_moveup
end
}
else
{
goto warehouse_elevator_triggertop_standby
}
end
warehouse_elevator_triggerbottom_standby:
$warehouse_elevator_trigger_bottom triggerable
$warehouse_elevator_trigger_bottom waittill trigger
if (level.warepos == 1)
{
goto warehouse_elevator_movedown
end
}
else
{
goto warehouse_elevator_triggerbottom_standby
}
end
warehouse_elevator_moveup:
$warehouse_elevator_trigger nottriggerable
$warehouse_elevator_trigger_top nottriggerable
$warehouse_elevator_trigger_bottom nottriggerable
$warehouse_elevator moveto $warehouse_top
$warehouse_door_bottom_right moveNorth 38 //close bottom doors
$warehouse_door_bottom_left moveSouth 38
$warehouse_elevator playsound door_metal_close_move
$warehouse_door_bottom_right move
$warehouse_door_bottom_left waitmove
$warehouse_elevator playsound door_metal_close_stop
wait .5
$warehouse_elevator loopsound lighthouse_run
$warehouse_elevator waitmove
$warehouse_elevator loopsound lighthouse_run wait
$warehouse_door_top_right moveNorth 38 //open top doors
$warehouse_door_top_left moveSouth 38
$warehouse_elevator playsound door_metal_open_move
$warehouse_door_top_right move
$warehouse_door_top_left waitmove
$warehouse_elevator playsound door_metal_open_stop
level.warepos = 1
thread warehouse_elevator_standby
thread warehouse_elevator_triggertop_standby
thread warehouse_elevator_triggerbottom_standby
warehouse_elevator_movedown:
$warehouse_elevator_trigger nottriggerable
$warehouse_elevator_trigger_top nottriggerable
$warehouse_elevator_trigger_bottom nottriggerable
$warehouse_elevator moveto $warehouse_bottom
$warehouse_door_top_right moveSouth 38 //close top doors
$warehouse_door_top_left moveNorth 38
$warehouse_elevator playsound door_metal_close_move
$warehouse_door_top_right move
$warehouse_door_top_left waitmove
$warehouse_elevator playsound door_metal_close_stop
wait .5
$warehouse_elevator loopsound lighthouse_run
$warehouse_elevator waitmove
$warehouse_elevator loopsound lighthouse_run wait
$warehouse_door_bottom_right moveSouth 38 //open bottom doors
$warehouse_door_bottom_left moveNorth 38
$warehouse_elevator playsound door_metal_open_move
$warehouse_door_bottom_right move
$warehouse_door_bottom_left waitmove
$warehouse_elevator playsound door_metal_open_stop
level.warepos = 0
thread warehouse_elevator_standby
thread warehouse_elevator_triggertop_standby
thread warehouse_elevator_triggerbottom_standby
end