mirror of
https://github.com/jmarshall23/DoomRTX.git
synced 2026-08-12 08:11:10 +02:00
2450 lines
61 KiB
Plaintext
2450 lines
61 KiB
Plaintext
namespace map_alphalabs4 {
|
|
|
|
// Start Globals
|
|
|
|
// Alphapuzzle
|
|
float g_fConveyDoorRefCount = 0.0;
|
|
float g_fWeldDoorRefCount = 0.0;
|
|
|
|
// End Globals
|
|
|
|
///////////////////////////////////////////////
|
|
// blinky eyes
|
|
///////////////////////////////////////////////
|
|
|
|
void cache_sounds() {
|
|
sys.cacheSoundShader ("al4_openslats_2s");
|
|
sys.cacheSoundShader ("al4_support_05s");
|
|
sys.cacheSoundShader ("small_mover_impact");
|
|
sys.cacheSoundShader ("al4_plat_movement");
|
|
sys.cacheSoundShader ("al4_slide_3s");
|
|
sys.cacheSoundShader ("jacob");
|
|
sys.cacheSoundShader ("al4_plat_start");
|
|
sys.cacheSoundShader ("al4_plat_loop");
|
|
sys.cacheSoundShader ("al4_plat_stop");
|
|
}
|
|
|
|
void eKillSound (entity ent, float eTime) {
|
|
sys.wait (eTime);
|
|
ent.stopSound( SND_CHANNEL_ANY, false );
|
|
}
|
|
|
|
void end_vagscene() {
|
|
$speaker_vagfight.fadeSound (SND_CHANNEL_ANY, -60, 5); // Fade out after the fight
|
|
}
|
|
|
|
void start_vagscene() {
|
|
sys.wait (22.5);
|
|
sys.trigger ($speaker_vagfight);
|
|
|
|
}
|
|
|
|
///////////////////////////////////////////////
|
|
// blinky eyes
|
|
///////////////////////////////////////////////
|
|
|
|
void eyesbegone()
|
|
{
|
|
$eyes1.time(.5);
|
|
$eyes1.accelTime(0.1);
|
|
$eyes1.decelTime(0.1);
|
|
$eyes1.move(DOWN, 32);
|
|
sys.waitFor($eyes1);
|
|
sys.trigger($eye1_light);
|
|
}
|
|
|
|
void bind_objects() {
|
|
|
|
$frontroom_door2.bind($frontroom_door1);
|
|
$frontroom_door3.bind($frontroom_door2);
|
|
$frontroom_door4.bind($frontroom_door3);
|
|
|
|
$ambush_door_2.bind($ambush_door_1);
|
|
$ambush_door_3.bind($ambush_door_2);
|
|
$ambush_door_4.bind($ambush_door_3);
|
|
|
|
$scissor_door_2.bind($scissor_door_1);
|
|
$scissor_door_3.bind($scissor_door_2);
|
|
$scissor_door_4.bind($scissor_door_3);
|
|
|
|
$back_scissor_door_2.bind($back_scissor_door_1);
|
|
$back_scissor_door_3.bind($back_scissor_door_2);
|
|
$back_scissor_door_4.bind($back_scissor_door_3);
|
|
|
|
}
|
|
|
|
void frontroom_door_open()
|
|
{
|
|
|
|
$frontroom_door1.startSoundShader ("al4_openslats_2s", SND_CHANNEL_VOICE );
|
|
$frontroom_door1.time(2);
|
|
$frontroom_door1.accelTime(.5);
|
|
$frontroom_door1.decelTime(.5);
|
|
$frontroom_door1.rotateOnce('-90 0 0');
|
|
$frontroom_door2.time(2);
|
|
$frontroom_door2.accelTime(.5);
|
|
$frontroom_door2.decelTime(.5);
|
|
$frontroom_door2.rotateOnce('180 0 0');
|
|
$frontroom_door3.time(2);
|
|
$frontroom_door3.accelTime(.5);
|
|
$frontroom_door3.decelTime(.5);
|
|
$frontroom_door3.rotateOnce('-180 0 0');
|
|
$frontroom_door4.time(2);
|
|
$frontroom_door4.accelTime(.5);
|
|
$frontroom_door4.decelTime(.5);
|
|
$frontroom_door4.rotateOnce('180 0 0');
|
|
}
|
|
|
|
void ambush_door_open()
|
|
{
|
|
|
|
$ambush_door_1.startSoundShader ("al4_openslats_2s", SND_CHANNEL_VOICE );
|
|
$ambush_door_1.time(2);
|
|
$ambush_door_1.accelTime(.5);
|
|
$ambush_door_1.decelTime(.5);
|
|
$ambush_door_1.rotateOnce('0 0 -90');
|
|
$ambush_door_2.time(2);
|
|
$ambush_door_2.accelTime(.5);
|
|
$ambush_door_2.decelTime(.5);
|
|
$ambush_door_2.rotateOnce('0 0 180');
|
|
$ambush_door_3.time(2);
|
|
$ambush_door_3.accelTime(.5);
|
|
$ambush_door_3.decelTime(.5);
|
|
$ambush_door_3.rotateOnce('0 0 -180');
|
|
$ambush_door_4.time(2);
|
|
$ambush_door_4.accelTime(.5);
|
|
$ambush_door_4.decelTime(.5);
|
|
$ambush_door_4.rotateOnce('0 0 180');
|
|
}
|
|
|
|
void scissor_door_open()
|
|
{
|
|
$scissor_door_1.startSoundShader ("al4_openslats_2s", SND_CHANNEL_VOICE );
|
|
$scissor_door_1.time(2);
|
|
$scissor_door_1.accelTime(.5);
|
|
$scissor_door_1.decelTime(.5);
|
|
$scissor_door_1.rotateOnce('0 0 90');
|
|
$scissor_door_2.time(2);
|
|
$scissor_door_2.accelTime(.5);
|
|
$scissor_door_2.decelTime(.5);
|
|
$scissor_door_2.rotateOnce('0 0 -180');
|
|
$scissor_door_3.time(2);
|
|
$scissor_door_3.accelTime(.5);
|
|
$scissor_door_3.decelTime(.5);
|
|
$scissor_door_3.rotateOnce('0 0 180');
|
|
$scissor_door_4.time(2);
|
|
$scissor_door_4.accelTime(.5);
|
|
$scissor_door_4.decelTime(.5);
|
|
$scissor_door_4.rotateOnce('0 0 -180');
|
|
}
|
|
|
|
void back_scissor_door1_open()
|
|
{
|
|
|
|
$back_scissor_door_1.startSoundShader ("al4_openslats_2s", SND_CHANNEL_VOICE );
|
|
$back_scissor_door_1.time(2);
|
|
$back_scissor_door_1.accelTime(.5);
|
|
$back_scissor_door_1.decelTime(.5);
|
|
$back_scissor_door_1.rotateOnce('-90 0 0');
|
|
$back_scissor_door_2.time(2);
|
|
$back_scissor_door_2.accelTime(.5);
|
|
$back_scissor_door_2.decelTime(.5);
|
|
$back_scissor_door_2.rotateOnce('180 0 0');
|
|
$back_scissor_door_3.time(2);
|
|
$back_scissor_door_3.accelTime(.5);
|
|
$back_scissor_door_3.decelTime(.5);
|
|
$back_scissor_door_3.rotateOnce('-180 0 0');
|
|
$back_scissor_door_4.time(2);
|
|
$back_scissor_door_4.accelTime(.5);
|
|
$back_scissor_door_4.decelTime(.5);
|
|
$back_scissor_door_4.rotateOnce('180 0 0');
|
|
}
|
|
/*
|
|
|
|
A l p h a p u z z l e c o d e s t a r t s h e r e
|
|
|
|
*/
|
|
|
|
|
|
void ExtendPlatform1()
|
|
{
|
|
$jump_platform1.time(3);
|
|
sys.trigger ($speaker_jump_platform);
|
|
$jump_platform1.move( NORTH, 232 );
|
|
sys.waitFor( $jump_platform1 );
|
|
}
|
|
|
|
|
|
void SetupRotatingBridge()
|
|
{
|
|
$rotating_bridge.bind( $rotating_bridge_joint );
|
|
|
|
$bridge_right_bottom_joint.bind( $rotating_bridge );
|
|
$bridge_left_bottom_joint.bind( $rotating_bridge );
|
|
|
|
// $rotating_bridge_railing_right.bind( $rotating_bridge );
|
|
// $rotating_bridge_railing_left.bind( $rotating_bridge );
|
|
|
|
$bridge_right_top_hydro_machine.bind( $rotating_bridge_spinner );
|
|
$bridge_left_top_hydro_machine.bind( $rotating_bridge_spinner );
|
|
|
|
$bridge_right_top_hydro.bind( $bridge_right_top_hydro_machine );
|
|
$bridge_left_top_hydro.bind( $bridge_left_top_hydro_machine );
|
|
|
|
$bridge_right_bottom_hydro.bind( $bridge_right_top_hydro );
|
|
$bridge_left_bottom_hydro.bind( $bridge_left_top_hydro );
|
|
|
|
$rotating_bridge.time( 0.1 );
|
|
$rotating_bridge.rotateOnce( '-60 0 0' );
|
|
sys.waitFor( $rotating_bridge );
|
|
|
|
$bridge_right_top_hydro.time( 0.1 );
|
|
$bridge_left_top_hydro.time( 0.1 );
|
|
$bridge_right_top_hydro.rotateOnce( '-30 0 0' );
|
|
$bridge_left_top_hydro.rotateOnce( '-30 0 0' );
|
|
sys.waitFor( $bridge_left_top_hydro );
|
|
|
|
$bridge_right_bottom_hydro.time( 0.1 );
|
|
$bridge_left_bottom_hydro.time( 0.1 );
|
|
$bridge_right_bottom_hydro.move( REL_UP, 272 );
|
|
$bridge_left_bottom_hydro.move( REL_UP, 272 );
|
|
sys.waitFor( $bridge_left_bottom_hydro );
|
|
|
|
$bridge_right_bottom_joint.time( 0.1 );
|
|
$bridge_left_bottom_joint.time( 0.1 );
|
|
$bridge_right_bottom_joint.move( REL_FORWARD, 16 );
|
|
$bridge_left_bottom_joint.move( REL_FORWARD, 16 );
|
|
sys.waitFor( $bridge_left_bottom_hydro );
|
|
}
|
|
|
|
|
|
void RotatingBridgeStart()
|
|
{
|
|
$bridge_right_bottom_hydro.time( 5.0 );
|
|
$bridge_left_bottom_hydro.time( 5.0 );
|
|
$bridge_right_bottom_joint.time( 5.0 );
|
|
$bridge_left_bottom_joint.time( 5.0 );
|
|
$rotating_bridge.time( 5.0 );
|
|
$bridge_right_bottom_hydro.move( REL_DOWN, 272 );
|
|
$bridge_left_bottom_hydro.move( REL_DOWN, 272 );
|
|
$bridge_right_bottom_joint.move( REL_BACK, 16 );
|
|
$bridge_left_bottom_joint.move( REL_BACK, 16 );
|
|
sys.trigger ($speaker_rotating_bridge);
|
|
$rotating_bridge.rotateOnce( '60 0 0' );
|
|
sys.waitFor( $rotating_bridge );
|
|
}
|
|
|
|
|
|
void RotatingBridgeLoop()
|
|
{
|
|
while( true )
|
|
{
|
|
$rotating_bridge_spinner.accelTime( 1.0 );
|
|
$rotating_bridge_spinner.time( 5.0 );
|
|
$rotating_bridge_spinner.decelTime( 1.0 );
|
|
$rotating_bridge_joint.accelTime( 1.0 );
|
|
$rotating_bridge_joint.time( 5.0 );
|
|
$rotating_bridge_joint.decelTime( 1.0 );
|
|
sys.trigger ($speaker_rotating_bridge);
|
|
$rotating_bridge_spinner.rotateOnce( '0 90 0' );
|
|
sys.trigger ($speaker_rotbridge_tech);
|
|
$rotating_bridge_joint.rotateOnce( '0 90 0' );
|
|
sys.waitFor( $rotating_bridge_joint );
|
|
|
|
sys.wait( 2.0 );
|
|
}
|
|
}
|
|
|
|
|
|
void SectionBridgeGuardSequence( entity eLeftGuard, entity eRightGuard, float nOrient )
|
|
{
|
|
if( nOrient == NORTH )
|
|
{
|
|
eLeftGuard.time( 0.5 );
|
|
eLeftGuard.decelTime( 0.25 );
|
|
|
|
eRightGuard.time( 0.5 );
|
|
eRightGuard.decelTime( 0.25 );
|
|
|
|
eLeftGuard.startSoundShader ("al4_support_05s", SND_CHANNEL_ANY);
|
|
|
|
eLeftGuard.rotateOnce( '-90 0 0' );
|
|
eRightGuard.rotateOnce( '90 0 0' );
|
|
sys.wait( 0.5 );
|
|
return;
|
|
}
|
|
|
|
if( nOrient == SOUTH )
|
|
{
|
|
eLeftGuard.time( 0.5 );
|
|
eLeftGuard.decelTime( 0.25 );
|
|
|
|
eRightGuard.time( 0.5 );
|
|
eRightGuard.decelTime( 0.25 );
|
|
|
|
eLeftGuard.startSoundShader ("al4_support_05s", SND_CHANNEL_ANY);
|
|
eLeftGuard.rotateOnce( '-90 0 0' );
|
|
eRightGuard.rotateOnce( '90 0 0' );
|
|
sys.wait( 0.5 );
|
|
return;
|
|
}
|
|
|
|
if( nOrient == EAST )
|
|
{
|
|
eLeftGuard.time( 0.5 );
|
|
eLeftGuard.decelTime( 0.25 );
|
|
|
|
eRightGuard.time( 0.5 );
|
|
eRightGuard.decelTime( 0.25 );
|
|
|
|
eLeftGuard.startSoundShader ("al4_support_05s", SND_CHANNEL_ANY);
|
|
eLeftGuard.rotateOnce( '0 0 -90' );
|
|
eRightGuard.rotateOnce( '0 0 90' );
|
|
sys.wait( 0.5 );
|
|
return;
|
|
}
|
|
|
|
if( nOrient == WEST )
|
|
{
|
|
eLeftGuard.time( 0.5 );
|
|
eLeftGuard.decelTime( 0.25 );
|
|
|
|
eRightGuard.time( 0.5 );
|
|
eRightGuard.decelTime( 0.25 );
|
|
|
|
eLeftGuard.startSoundShader ("al4_support_05s", SND_CHANNEL_ANY);
|
|
eLeftGuard.rotateOnce( '0 0 90' );
|
|
eRightGuard.rotateOnce( '0 0 -90' );
|
|
sys.wait( 0.5 );
|
|
return;
|
|
}
|
|
}
|
|
|
|
void stop_platsound (entity ent, float fTime) {
|
|
sys.wait (fTime);
|
|
ent.startSoundShader ("small_mover_impact", SND_CHANNEL_ANY);
|
|
}
|
|
|
|
void SectionBridgePartsSequence( string strBaseName, float nOrient, float nCount )
|
|
{
|
|
string strTemp;
|
|
|
|
entity eSection;
|
|
entity eLight;
|
|
entity eLeftGuard;
|
|
entity eRightGuard;
|
|
float fTime;
|
|
string sTemp;
|
|
|
|
float ii;
|
|
|
|
for( ii = nCount ; ii > 0; ii-- )
|
|
{
|
|
strTemp = strBaseName + "_part" + ii;
|
|
eSection = sys.getEntity( strTemp );
|
|
sTemp = strTemp;
|
|
|
|
//strTemp = strBaseName + "_guard_left" + ii;
|
|
//eLeftGuard = sys.getEntity( strTemp );
|
|
|
|
//strTemp = strBaseName + "_guard_right" + ii;
|
|
//eRightGuard = sys.getEntity( strTemp );
|
|
|
|
//eLeftGuard.bind( eSection );
|
|
//eRightGuard.bind( eSection );
|
|
|
|
eSection.accelTime( 0.25 );
|
|
fTime = ( 1.0 + ((ii - 1) / 2) );
|
|
eSection.time( fTime );
|
|
eSection.decelTime( 0.25 );
|
|
|
|
|
|
|
|
// void eKillSound (entity ent, float eTime) {
|
|
|
|
// This sounds crappy. Killing the mover sound is enough...
|
|
// thread stop_platsound (eSection, fTime);
|
|
|
|
eSection.move( nOrient, (128 + ((ii - 1) * 64) ) );
|
|
thread eKillSound (eSection, fTime);
|
|
eSection.startSoundShader ("al4_plat_movement", SND_CHANNEL_ANY);
|
|
sys.wait( 0.9 );
|
|
|
|
//thread SectionBridgeGuardSequence( eLeftGuard, eRightGuard, nOrient);
|
|
|
|
strTemp = strBaseName + "_light" + ii + "_left";
|
|
eLight = sys.getEntity( strTemp );
|
|
|
|
if( eLight )
|
|
{
|
|
eLight.On();
|
|
}
|
|
|
|
strTemp = strBaseName + "_light" + ii + "_right";
|
|
eLight = sys.getEntity( strTemp );
|
|
|
|
if( eLight )
|
|
{
|
|
eLight.On();
|
|
}
|
|
}
|
|
}
|
|
|
|
void SectionBridgeRailsSequence( string strBaseName, float nDirection, float nCount )
|
|
{
|
|
string strRightRail;
|
|
string strLeftRail;
|
|
|
|
entity eRightRail;
|
|
entity eLeftRail;
|
|
|
|
strRightRail = strBaseName + "_rail_right";
|
|
eRightRail = sys.getEntity( strRightRail );
|
|
|
|
strLeftRail = strBaseName + "_rail_left";
|
|
eLeftRail = sys.getEntity( strLeftRail );
|
|
|
|
eRightRail.time( 3.0 );
|
|
eRightRail.accelTime( 0.5 );
|
|
eRightRail.decelTime( 0.5 );
|
|
eLeftRail.time( 3.0 );
|
|
eLeftRail.accelTime( 0.5 );
|
|
eLeftRail.decelTime( 0.5 );
|
|
|
|
eRightRail.move( nDirection, ((nCount + 1) * 64) );
|
|
|
|
eRightRail.startSoundShader ("al4_slide_3s", SND_CHANNEL_ANY);
|
|
|
|
eLeftRail.move( nDirection, ((nCount + 1) * 64) );
|
|
sys.waitFor( eLeftRail );
|
|
}
|
|
|
|
|
|
void ExtendSectionBridges()
|
|
{
|
|
SectionBridgeRailsSequence( "sectionbridge1", WEST, 6 );
|
|
SectionBridgePartsSequence( "sectionbridge1", WEST, 6 );
|
|
sys.trigger($bridge1_aas_block);
|
|
|
|
SectionBridgeRailsSequence( "sectionbridge2", NORTH, 6 );
|
|
SectionBridgePartsSequence( "sectionbridge2", NORTH, 6 );
|
|
sys.trigger($bridge2_aas_block);
|
|
|
|
SectionBridgeRailsSequence( "sectionbridge3", SOUTH, 6 );
|
|
SectionBridgePartsSequence( "sectionbridge3", SOUTH, 6 );
|
|
sys.trigger($bridge3_aas_block);
|
|
|
|
SectionBridgeRailsSequence( "sectionbridge4", SOUTH, 8 );
|
|
SectionBridgePartsSequence( "sectionbridge4", SOUTH, 8 );
|
|
sys.trigger($bridge4_aas_block);
|
|
|
|
SectionBridgeRailsSequence( "sectionbridge5", SOUTH, 8 );
|
|
SectionBridgePartsSequence( "sectionbridge5", SOUTH, 8 );
|
|
sys.trigger($bridge5_aas_block);
|
|
|
|
SectionBridgeRailsSequence( "sectionbridge6", SOUTH, 6 );
|
|
SectionBridgePartsSequence( "sectionbridge6", SOUTH, 6 );
|
|
sys.trigger($bridge6_aas_block);
|
|
}
|
|
|
|
|
|
void SectionBridgeRemoveOne( float nBridge )
|
|
{
|
|
string strRemove;
|
|
entity eRemove;
|
|
float ii;
|
|
|
|
strRemove = "sectionbridge" + nBridge + "_rail_right";
|
|
eRemove = sys.getEntity( strRemove );
|
|
eRemove.remove();
|
|
|
|
strRemove = "sectionbridge" + nBridge + "_rail_left";
|
|
eRemove = sys.getEntity( strRemove );
|
|
eRemove.remove();
|
|
|
|
for( ii = 1; ii > 0; ii++ )
|
|
{
|
|
strRemove = "sectionbridge" + nBridge + "_part" + ii;
|
|
eRemove = sys.getEntity( strRemove );
|
|
|
|
if( !eRemove )
|
|
break;
|
|
|
|
eRemove.remove();
|
|
|
|
//strRemove = "sectionbridge" + nBridge + "_guard_right" + ii;
|
|
//eRemove = sys.getEntity( strRemove );
|
|
//eRemove.remove();
|
|
|
|
//strRemove = "sectionbridge" + nBridge + "_guard_left" + ii;
|
|
//eRemove = sys.getEntity( strRemove );
|
|
//eRemove.remove();
|
|
}
|
|
}
|
|
|
|
|
|
void SectionBridgeRemoveAll()
|
|
{
|
|
float ii;
|
|
|
|
for( ii = 1; ii <= 6; ii++ )
|
|
{
|
|
SectionBridgeRemoveOne( ii );
|
|
}
|
|
}
|
|
|
|
|
|
void SetupRideOfDeathObjects()
|
|
{
|
|
entity eParent;
|
|
entity eChild;
|
|
|
|
float ii;
|
|
|
|
for( ii = 1; ii < 7; ii++ )
|
|
{
|
|
eParent = sys.getEntity( "ride_of_death" + ii + "_parent" );
|
|
eChild = sys.getEntity( "ride_of_death" + ii );
|
|
eChild.bind( eParent );
|
|
|
|
eParent = eChild;
|
|
eChild = sys.getEntity( "ride_of_death" + ii + "_front_support" );
|
|
eChild.bind( eParent );
|
|
|
|
eChild = sys.getEntity( "ride_of_death" + ii + "_rear_support" );
|
|
eChild.bind( eParent );
|
|
|
|
eChild.time( 0.1 );
|
|
eChild.move( SOUTH, 64 );
|
|
sys.waitFor( eChild );
|
|
|
|
eChild = sys.getEntity( "ride_of_death" + ii + "_light1" );
|
|
eChild.bind( eParent );
|
|
eChild.Off();
|
|
|
|
eChild = sys.getEntity( "ride_of_death" + ii + "_light2" );
|
|
eChild.bind( eParent );
|
|
eChild.Off();
|
|
}
|
|
}
|
|
|
|
void ROD_startSound (entity ent) {
|
|
ent.startSoundShader ("al4_plat_start", SND_CHANNEL_VOICE);
|
|
sys.wait (0.55);
|
|
ent.startSoundShader ("al4_plat_loop", SND_CHANNEL_VOICE2);
|
|
}
|
|
|
|
void ROD_stopSound (entity ent) {
|
|
ent.startSoundShader ("al4_plat_stop", SND_CHANNEL_VOICE2);
|
|
}
|
|
|
|
void ROD_stopSound_time (entity ent, float fTime) {
|
|
sys.wait (fTime);
|
|
ent.startSoundShader ("al4_plat_stop", SND_CHANNEL_VOICE2);
|
|
}
|
|
|
|
|
|
void RideOfDeathPath( string strRideName )
|
|
{
|
|
entity eRide;
|
|
entity eRideBase;
|
|
entity eFrontSupport;
|
|
entity eRearSupport;
|
|
entity eLight1;
|
|
entity eLight2;
|
|
|
|
eRide = sys.getEntity( strRideName + "_parent" );
|
|
eRideBase = sys.getEntity (strRideName);
|
|
|
|
eFrontSupport = sys.getEntity( strRideName + "_front_support" );
|
|
eRearSupport = sys.getEntity( strRideName + "_rear_support" );
|
|
eLight1 = sys.getEntity( strRideName + "_light1" );
|
|
eLight2 = sys.getEntity( strRideName + "_light2" );
|
|
|
|
eLight1.fadeInLight( 2.0 );
|
|
eLight2.fadeInLight( 2.0 );
|
|
|
|
// west 2112
|
|
thread ROD_startSound (eRideBase);
|
|
eRide.time( 33.0 ); // 64u/sec
|
|
eRide.accelTime( 0.0 );
|
|
eRide.decelTime( 0.5 );
|
|
eRide.move( WEST, 2112 );
|
|
|
|
sys.waitFor( eRide );
|
|
|
|
eRearSupport.time( 1.0 );
|
|
eRearSupport.move( NORTH, 64 );
|
|
|
|
sys.waitFor( eRearSupport );
|
|
|
|
ROD_stopSound (eRideBase);
|
|
|
|
sys.wait( 1.0 );
|
|
|
|
eFrontSupport.time( 1.0 );
|
|
eFrontSupport.move( NORTH, 64 );
|
|
sys.waitFor( eFrontSupport );
|
|
|
|
thread ROD_startSound (eRideBase);
|
|
|
|
// west 64
|
|
eRide.time( 1.0 ); // 64u/sec
|
|
eRide.accelTime( 0.5 );
|
|
eRide.decelTime( 0.0 );
|
|
eRide.move( WEST, 64 );
|
|
sys.waitFor( eRide );
|
|
|
|
// turn C 90deg
|
|
eRide.time( 4.0 ); // 22.5deg/sec
|
|
eRide.accelTime( 0.0 );
|
|
eRide.decelTime( 0.0 );
|
|
eRide.rotateOnce( '0 -90 0' );
|
|
sys.waitFor( eRide );
|
|
|
|
// 41s
|
|
|
|
// north 64
|
|
eRide.time( 1.0 );
|
|
eRide.accelTime( 0.0 );
|
|
eRide.decelTime( 0.5 );
|
|
eRide.move( NORTH, 64 );
|
|
|
|
sys.waitFor( eRide );
|
|
|
|
ROD_stopSound (eRideBase);
|
|
|
|
eFrontSupport.time( 1.0 );
|
|
eFrontSupport.move( EAST, 64 );
|
|
|
|
sys.waitFor( eFrontSupport );
|
|
sys.wait( 1.0 );
|
|
|
|
eRearSupport.time( 1.0 );
|
|
eRearSupport.move( EAST, 64 );
|
|
|
|
sys.waitFor( eRearSupport );
|
|
|
|
thread ROD_startSound (eRideBase);
|
|
|
|
// north 352
|
|
eRide.time( 5.5 );
|
|
eRide.accelTime( 0.5 );
|
|
eRide.decelTime( 0.5 );
|
|
eRide.move( NORTH, 352 );
|
|
|
|
sys.waitFor( eRide );
|
|
|
|
// down 320
|
|
eRide.time( 5.0 );
|
|
eRide.accelTime( 0.5 );
|
|
eRide.decelTime( 0.5 );
|
|
eRide.move( DOWN, 320 );
|
|
|
|
sys.waitFor( eRide );
|
|
|
|
// north 480
|
|
eRide.time( 7.5 );
|
|
eRide.accelTime( 0.5 );
|
|
eRide.decelTime( 0.0 );
|
|
eRide.move( NORTH, 480 );
|
|
|
|
sys.waitFor( eRide );
|
|
|
|
// 22s
|
|
|
|
// bind to origin 1
|
|
eRide.bind( $ride_of_death_origin1 );
|
|
|
|
// turn CC 90deg
|
|
$ride_of_death_origin1.time( 4.0 );
|
|
$ride_of_death_origin1.accelTime( 0.0 );
|
|
$ride_of_death_origin1.decelTime( 0.0 );
|
|
$ride_of_death_origin1.rotateOnce( '0 90 0' );
|
|
|
|
sys.waitFor( $ride_of_death_origin1 );
|
|
|
|
// unbind from origin 1
|
|
eRide.unbind();
|
|
$ride_of_death_origin1.restorePosition();
|
|
|
|
// 896
|
|
eRide.time( 14.0 );
|
|
eRide.accelTime( 0.0 );
|
|
eRide.decelTime( 0.0 );
|
|
eRide.move( WEST, 896 );
|
|
|
|
sys.waitFor( eRide );
|
|
|
|
// bind to origin 2
|
|
eRide.bind( $ride_of_death_origin2 );
|
|
|
|
// turn CC 90deg
|
|
$ride_of_death_origin2.time( 4.0 );
|
|
$ride_of_death_origin2.accelTime( 0.0 );
|
|
$ride_of_death_origin2.decelTime( 0.0 );
|
|
$ride_of_death_origin2.rotateOnce( '0 90 0' );
|
|
|
|
sys.waitFor( $ride_of_death_origin2 );
|
|
|
|
// unbind from origin 2
|
|
eRide.unbind();
|
|
|
|
$ride_of_death_origin2.restorePosition();
|
|
|
|
// 22s
|
|
|
|
// south 480
|
|
eRide.time( 7.5 );
|
|
eRide.accelTime( 0.0 );
|
|
eRide.decelTime( 0.5 );
|
|
eRide.move( SOUTH, 480 );
|
|
|
|
sys.waitFor( eRide );
|
|
|
|
// up 320
|
|
eRide.time( 5.0 );
|
|
eRide.accelTime( 0.5 );
|
|
eRide.decelTime( 0.5 );
|
|
eRide.move( UP, 320 );
|
|
|
|
sys.waitFor( eRide );
|
|
|
|
// south 1182
|
|
thread ROD_stopSound_time (eRideBase, 17);
|
|
eRide.time( 18.5 );
|
|
eRide.accelTime( 0.5 );
|
|
eRide.decelTime( 0.0 );
|
|
eRide.move( SOUTH, 1182 );
|
|
|
|
sys.waitFor( eRide );
|
|
//ROD_stopSound (eRideBase);
|
|
eRide.restorePosition();
|
|
|
|
// 31s
|
|
}
|
|
// 116s
|
|
|
|
|
|
void RideOfDeathLoop()
|
|
{
|
|
while( true )
|
|
{
|
|
thread RideOfDeathPath( "ride_of_death1" );
|
|
sys.wait( 20.0 );
|
|
|
|
thread RideOfDeathPath( "ride_of_death2" );
|
|
sys.wait( 20.0 );
|
|
|
|
thread RideOfDeathPath( "ride_of_death3" );
|
|
sys.wait( 20.0 );
|
|
|
|
thread RideOfDeathPath( "ride_of_death4" );
|
|
sys.wait( 20.0 );
|
|
|
|
thread RideOfDeathPath( "ride_of_death5" );
|
|
sys.wait( 20.0 );
|
|
|
|
thread RideOfDeathPath( "ride_of_death6" );
|
|
sys.wait( 20.0 );
|
|
}
|
|
}
|
|
|
|
|
|
void RemoveRideOfDeathObjects()
|
|
{
|
|
entity eObject;
|
|
float ii;
|
|
|
|
for( ii = 1; ii < 7; ii++ )
|
|
{
|
|
eObject = sys.getEntity( "ride_of_death" + ii + "_parent" );
|
|
eObject.remove();
|
|
|
|
eObject = sys.getEntity( "ride_of_death" + ii );
|
|
eObject.remove();
|
|
|
|
eObject = sys.getEntity( "ride_of_death" + ii + "_front_support" );
|
|
eObject.remove();
|
|
|
|
eObject = sys.getEntity( "ride_of_death" + ii + "_rear_support" );
|
|
eObject.remove();
|
|
|
|
eObject = sys.getEntity( "ride_of_death" + ii + "_light1" );
|
|
eObject.remove();
|
|
|
|
eObject = sys.getEntity( "ride_of_death" + ii + "_light2" );
|
|
eObject.remove();
|
|
}
|
|
}
|
|
|
|
|
|
void SetupWeldingMachine( string strBaseName )
|
|
{
|
|
// the cover object is not bound in this function
|
|
entity eParent;
|
|
entity eChild;
|
|
|
|
eParent = sys.getEntity( strBaseName + "_support" );
|
|
eChild = sys.getEntity( strBaseName + "_right_grip" );
|
|
eChild.bind( eParent );
|
|
|
|
eChild = sys.getEntity( strBaseName + "_left_grip" );
|
|
eChild.bind( eParent );
|
|
|
|
eChild = sys.getEntity( strBaseName + "_base" );
|
|
eChild.bind( eParent );
|
|
|
|
eParent = eChild;
|
|
eChild = sys.getEntity( strBaseName + "_arm" );
|
|
eChild.bind( eParent );
|
|
|
|
eParent = eChild;
|
|
eChild = sys.getEntity( strBaseName + "_light" );
|
|
eChild.bind( eParent );
|
|
eChild.Off();
|
|
|
|
eChild = sys.getEntity( strBaseName + "_arm" );
|
|
eChild.time( 0.1 );
|
|
eChild.rotateOnce( '135 0 0' );
|
|
sys.waitFor( eChild );
|
|
}
|
|
|
|
|
|
void SetupRideOfDeathTrap1()
|
|
{
|
|
SetupWeldingMachine( "weld1_front" );
|
|
SetupWeldingMachine( "weld1_rear" );
|
|
SetupWeldingMachine( "weld2_front" );
|
|
SetupWeldingMachine( "weld2_rear" );
|
|
|
|
$weld1_rear_support.time( 0.1 );
|
|
$weld2_rear_support.time( 0.1 );
|
|
$weld1_rear_support.rotateOnce( '0 180 0' );
|
|
$weld2_rear_support.rotateOnce( '0 180 0' );
|
|
sys.waitFor( $weld2_rear_support );
|
|
}
|
|
|
|
|
|
void WeldingMachineSequence( string strBaseName, string strConveyName )
|
|
{
|
|
entity eSupport;
|
|
entity eSupport_speaker;
|
|
entity eSupport_05s_speaker;
|
|
|
|
entity eCover;
|
|
entity eLeftGrip;
|
|
entity eRightGrip;
|
|
|
|
entity eBase;
|
|
entity eBase_speaker;
|
|
|
|
entity eArm;
|
|
entity eArm_speaker;
|
|
entity eArm_weld_speaker;
|
|
|
|
entity eLight;
|
|
entity eSpark;
|
|
|
|
eSupport = sys.getEntity( strBaseName + "_support" );
|
|
eSupport_speaker = sys.getEntity( strBaseName + "_support_speaker" );
|
|
eSupport_05s_speaker = sys.getEntity( strBaseName + "_support_05s_speaker" );
|
|
eCover = sys.getEntity( strBaseName + "_cover" );
|
|
|
|
eLeftGrip = sys.getEntity( strBaseName + "_left_grip" );
|
|
|
|
eRightGrip = sys.getEntity( strBaseName + "_right_grip" );
|
|
|
|
eBase = sys.getEntity( strBaseName + "_base" );
|
|
|
|
eArm = sys.getEntity( strBaseName + "_arm" );
|
|
eArm_weld_speaker = sys.getEntity ( strBaseName + "_arm_speaker" );
|
|
eArm_speaker = sys.getEntity ( strBaseName + "_arm_rot_speaker" );
|
|
|
|
eLight = sys.getEntity( strBaseName + "_light" );
|
|
eSpark = sys.getEntity( strBaseName + "_sparks" );
|
|
|
|
eCover.bind( eSupport );
|
|
|
|
eSupport.time( 2.0 );
|
|
eSupport.accelTime( 0.25 );
|
|
eSupport.decelTime( 0.25 );
|
|
sys.trigger (eSupport_speaker);
|
|
eSupport.move( DOWN, 192 );
|
|
sys.waitFor( eSupport );
|
|
|
|
eSupport.time( 0.5 );
|
|
eSupport.accelTime( 0.0 );
|
|
eSupport.decelTime( 0.0 );
|
|
sys.trigger (eSupport_05s_speaker);
|
|
eSupport.move( REL_BACK, 12 );
|
|
sys.waitFor( eSupport );
|
|
|
|
eBase.time( 1.0 );
|
|
eArm.time( 1.0 );
|
|
eBase.move( UP, 48 );
|
|
sys.trigger (eArm_speaker);
|
|
eArm.rotateOnce( '-135 0 0' );
|
|
sys.waitFor( eArm );
|
|
|
|
// turn on sparks
|
|
eLight.On();
|
|
sys.trigger (eSpark);
|
|
|
|
|
|
eBase.time( 2.0 );
|
|
sys.trigger ( eArm_weld_speaker );
|
|
eBase.move( DOWN, 48 );
|
|
sys.waitFor( eBase );
|
|
|
|
// turn off sparks
|
|
eLight.Off();
|
|
sys.trigger (eSpark);
|
|
|
|
eCover.unbind();
|
|
eCover.bind( sys.getEntity( strConveyName ) );
|
|
|
|
eArm.time( 1.0 );
|
|
sys.trigger (eArm_speaker);
|
|
eArm.rotateOnce( '135 0 0' );
|
|
sys.waitFor( eArm );
|
|
|
|
eLeftGrip.time( 0.25 );
|
|
eRightGrip.time( 0.25 );
|
|
eLeftGrip.rotateOnce( '0 15 0' );
|
|
eRightGrip.rotateOnce( '0 -15 0' );
|
|
sys.waitFor( eRightGrip );
|
|
|
|
eSupport.time( 1.0 );
|
|
eSupport.accelTime( 0.0 );
|
|
eSupport.decelTime( 0.0 );
|
|
sys.trigger (eSupport_05s_speaker);
|
|
eSupport.move( REL_FORWARD, 12 );
|
|
sys.waitFor( eSupport );
|
|
|
|
eSupport.time( 2.0 );
|
|
eSupport.accelTime( 0.25 );
|
|
eSupport.decelTime( 0.25 );
|
|
sys.trigger (eSupport_speaker);
|
|
eSupport.move( UP, 192 );
|
|
sys.waitFor( eSupport );
|
|
|
|
eLeftGrip.time( 0.25 );
|
|
eRightGrip.time( 0.25 );
|
|
eLeftGrip.rotateOnce( '0 -15 0' );
|
|
eRightGrip.rotateOnce( '0 15 0' );
|
|
sys.waitFor( eRightGrip );
|
|
}
|
|
// 10s TOTAL
|
|
|
|
|
|
void ConveyDoorsOpen()
|
|
{
|
|
if( g_fConveyDoorRefCount < 1 )
|
|
{
|
|
$convey_left_door.open();
|
|
$convey_right_door.open();
|
|
}
|
|
|
|
g_fConveyDoorRefCount++;
|
|
}
|
|
|
|
|
|
void ConveyDoorsClose()
|
|
{
|
|
g_fConveyDoorRefCount--;
|
|
|
|
if( g_fConveyDoorRefCount < 1 )
|
|
{
|
|
$convey_left_door.close();
|
|
$convey_right_door.close();
|
|
}
|
|
}
|
|
|
|
|
|
void WeldDoorsOpen()
|
|
{
|
|
if( g_fWeldDoorRefCount < 1 )
|
|
{
|
|
$weld_left_door.open();
|
|
$weld_right_door.open();
|
|
}
|
|
|
|
g_fWeldDoorRefCount++;
|
|
}
|
|
|
|
|
|
void WeldDoorsClose()
|
|
{
|
|
g_fWeldDoorRefCount--;
|
|
|
|
if( g_fWeldDoorRefCount < 1 )
|
|
{
|
|
$weld_left_door.close();
|
|
$weld_right_door.close();
|
|
}
|
|
}
|
|
|
|
|
|
void Convey1ShortPathSequence()
|
|
{
|
|
thread ConveyDoorsOpen();
|
|
|
|
$convey1_base.time( 2.0 );
|
|
$convey1_base.accelTime( 0.25 );
|
|
$convey1_base.decelTime( 0.25 );
|
|
sys.trigger ($speaker_convey_1_2s);
|
|
$convey1_base.move( SOUTH, 520 );
|
|
sys.waitFor( $convey1_base );
|
|
|
|
thread ConveyDoorsClose();
|
|
thread WeldDoorsOpen();
|
|
|
|
thread WeldingMachineSequence( "weld1_front", "convey1_base" );
|
|
thread WeldingMachineSequence( "weld1_rear", "convey1_base" );
|
|
sys.wait( 11.0 );
|
|
|
|
thread WeldDoorsClose();
|
|
thread ConveyDoorsOpen();
|
|
|
|
$convey1_base.time( 2.0 );
|
|
$convey1_base.accelTime( 0.25 );
|
|
$convey1_base.decelTime( 0.25 );
|
|
sys.trigger ($speaker_convey_1_2s);
|
|
$convey1_base.move( NORTH, 520 );
|
|
sys.waitFor( $convey1_base );
|
|
|
|
thread ConveyDoorsClose();
|
|
}
|
|
// 15s
|
|
|
|
|
|
void Convey1LongPathSequence()
|
|
{
|
|
thread ConveyDoorsOpen();
|
|
|
|
$convey1_base.time( 2.5 );
|
|
$convey1_base.accelTime( 0.25 );
|
|
$convey1_base.decelTime( 0.25 );
|
|
sys.trigger ($speaker_convey_1_2p5s);
|
|
$convey1_base.move( SOUTH, 632 );
|
|
sys.waitFor( $convey1_base );
|
|
|
|
thread ConveyDoorsClose();
|
|
thread WeldDoorsOpen();
|
|
|
|
thread WeldingMachineSequence( "weld1_front", "convey1_base" );
|
|
thread WeldingMachineSequence( "weld1_rear", "convey1_base" );
|
|
sys.wait( 11.0 );
|
|
|
|
thread WeldDoorsClose();
|
|
thread ConveyDoorsOpen();
|
|
|
|
$convey1_base.time( 2.5 );
|
|
$convey1_base.accelTime( 0.25 );
|
|
$convey1_base.decelTime( 0.25 );
|
|
sys.trigger ($speaker_convey_1_2p5s);
|
|
$convey1_base.move( NORTH, 632 );
|
|
sys.waitFor( $convey1_base );
|
|
|
|
thread ConveyDoorsClose();
|
|
}
|
|
// 16s
|
|
|
|
|
|
void Convey2ShortPathSequence()
|
|
{
|
|
thread ConveyDoorsOpen();
|
|
|
|
$convey2_base.time( 2.0 );
|
|
$convey2_base.accelTime( 0.25 );
|
|
$convey2_base.decelTime( 0.25 );
|
|
sys.trigger ($speaker_convey_2_2s);
|
|
$convey2_base.move( SOUTH, 520 );
|
|
sys.waitFor( $convey2_base );
|
|
|
|
thread ConveyDoorsClose();
|
|
thread WeldDoorsOpen();
|
|
|
|
thread WeldingMachineSequence( "weld2_front", "convey2_base" );
|
|
thread WeldingMachineSequence( "weld2_rear", "convey2_base" );
|
|
sys.wait( 11.0 );
|
|
|
|
thread WeldDoorsClose();
|
|
thread ConveyDoorsOpen();
|
|
|
|
$convey2_base.time( 1.5 );
|
|
$convey2_base.accelTime( 0.25 );
|
|
sys.trigger ($speaker_convey_2_1p5s);
|
|
$convey2_base.move( NORTH, 520 );
|
|
sys.waitFor( $convey2_base );
|
|
|
|
thread ConveyDoorsClose();
|
|
}
|
|
// 15s
|
|
|
|
|
|
void Convey2LongPathSequence()
|
|
{
|
|
thread ConveyDoorsOpen();
|
|
|
|
$convey2_base.time( 2.5 );
|
|
$convey2_base.accelTime( 0.25 );
|
|
$convey2_base.decelTime( 0.25 );
|
|
sys.trigger ($speaker_convey_2_2p5s);
|
|
$convey2_base.move( SOUTH, 632 );
|
|
sys.waitFor( $convey2_base );
|
|
|
|
thread ConveyDoorsClose();
|
|
thread WeldDoorsOpen();
|
|
|
|
thread WeldingMachineSequence( "weld2_front", "convey2_base" );
|
|
thread WeldingMachineSequence( "weld2_rear", "convey2_base" );
|
|
sys.wait( 11.0 );
|
|
|
|
thread WeldDoorsClose();
|
|
thread ConveyDoorsOpen();
|
|
|
|
$convey2_base.time( 2.5 );
|
|
$convey2_base.accelTime( 0.25 );
|
|
$convey2_base.decelTime( 0.25 );
|
|
sys.trigger ($speaker_convey_2_2p5s);
|
|
$convey2_base.move( NORTH, 632 );
|
|
sys.waitFor( $convey2_base );
|
|
|
|
thread ConveyDoorsClose();
|
|
}
|
|
// 16s
|
|
|
|
|
|
void RideOfDeathTrap1Loop()
|
|
{
|
|
float fTemp;
|
|
|
|
sys.wait( 4.0 );
|
|
|
|
while( true )
|
|
{
|
|
$weld1_front_cover.unbind();
|
|
$weld1_rear_cover.unbind();
|
|
$weld2_front_cover.unbind();
|
|
$weld2_rear_cover.unbind();
|
|
$weld1_front_cover.restorePosition();
|
|
$weld1_rear_cover.restorePosition();
|
|
$weld2_front_cover.restorePosition();
|
|
$weld2_rear_cover.restorePosition();
|
|
|
|
fTemp = sys.random( 3.0 );
|
|
|
|
if( fTemp < 1 )
|
|
{
|
|
// 1 goes long, 2 goes short
|
|
$weld1_front_support.time( 0.1 );
|
|
$weld1_front_cover.time( 0.1 );
|
|
$weld1_rear_support.time( 0.1 );
|
|
$weld1_rear_cover.time( 0.1 );
|
|
$weld2_front_support.time( 0.1 );
|
|
$weld2_front_cover.time( 0.1 );
|
|
$weld2_rear_support.time( 0.1 );
|
|
$weld2_rear_cover.time( 0.1 );
|
|
$weld1_front_support.moveTo( $weld1_front_long_origin );
|
|
$weld1_front_cover.moveTo( $weld1_front_long_origin );
|
|
$weld1_rear_support.moveTo( $weld1_rear_long_origin );
|
|
$weld1_rear_cover.moveTo( $weld1_rear_long_origin );
|
|
$weld2_front_support.moveTo( $weld2_front_short_origin );
|
|
$weld2_front_cover.moveTo( $weld2_front_short_origin );
|
|
$weld2_rear_support.moveTo( $weld2_rear_short_origin );
|
|
$weld2_rear_cover.moveTo( $weld2_rear_short_origin );
|
|
sys.waitFor( $weld2_rear_cover );
|
|
|
|
fTemp = sys.random( 3.0 );
|
|
if( fTemp < 1 )
|
|
{
|
|
// early/early
|
|
thread Convey1LongPathSequence();
|
|
thread Convey2ShortPathSequence();
|
|
sys.wait( 30.0 );
|
|
}
|
|
else if( fTemp < 2 )
|
|
{
|
|
// late/early
|
|
sys.wait( 2.0 );
|
|
|
|
thread Convey2ShortPathSequence();
|
|
sys.wait( 8.0 );
|
|
|
|
thread Convey1LongPathSequence();
|
|
sys.wait( 20.0 );
|
|
}
|
|
else
|
|
{
|
|
// early/late
|
|
sys.wait( 10.0 );
|
|
|
|
thread Convey1LongPathSequence();
|
|
sys.wait( 2.0 );
|
|
|
|
thread Convey2ShortPathSequence();
|
|
sys.wait( 18.0 );
|
|
}
|
|
}
|
|
else if( fTemp < 2 )
|
|
{
|
|
// 1 goes short, 2 goes long
|
|
$weld1_front_support.time( 0.1 );
|
|
$weld1_front_cover.time( 0.1 );
|
|
$weld1_rear_support.time( 0.1 );
|
|
$weld1_rear_cover.time( 0.1 );
|
|
$weld2_front_support.time( 0.1 );
|
|
$weld2_front_cover.time( 0.1 );
|
|
$weld2_rear_support.time( 0.1 );
|
|
$weld2_rear_cover.time( 0.1 );
|
|
$weld1_front_support.moveTo( $weld1_front_short_origin );
|
|
$weld1_front_cover.moveTo( $weld1_front_short_origin );
|
|
$weld1_rear_support.moveTo( $weld1_rear_short_origin );
|
|
$weld1_rear_cover.moveTo( $weld1_rear_short_origin );
|
|
$weld2_front_support.moveTo( $weld2_front_long_origin );
|
|
$weld2_front_cover.moveTo( $weld2_front_long_origin );
|
|
$weld2_rear_support.moveTo( $weld2_rear_long_origin );
|
|
$weld2_rear_cover.moveTo( $weld2_rear_long_origin );
|
|
sys.waitFor( $weld2_rear_cover );
|
|
|
|
fTemp = sys.random( 3.0 );
|
|
if( fTemp < 1 )
|
|
{
|
|
// early/early
|
|
thread Convey1ShortPathSequence();
|
|
thread Convey2LongPathSequence();
|
|
sys.wait( 30.0 );
|
|
}
|
|
else if( fTemp < 2 )
|
|
{
|
|
// late/early
|
|
sys.wait( 2.0 );
|
|
|
|
thread Convey2LongPathSequence();
|
|
sys.wait( 8.0 );
|
|
|
|
thread Convey1ShortPathSequence();
|
|
sys.wait( 20.0 );
|
|
}
|
|
else
|
|
{
|
|
// early/late
|
|
sys.wait( 10.0 );
|
|
|
|
thread Convey1ShortPathSequence();
|
|
sys.wait( 2.0 );
|
|
|
|
thread Convey2LongPathSequence();
|
|
sys.wait( 18.0 );
|
|
}
|
|
}
|
|
else
|
|
{
|
|
$weld1_front_support.time( 0.1 );
|
|
$weld1_front_cover.time( 0.1 );
|
|
$weld1_rear_support.time( 0.1 );
|
|
$weld1_rear_cover.time( 0.1 );
|
|
$weld2_front_support.time( 0.1 );
|
|
$weld2_front_cover.time( 0.1 );
|
|
$weld2_rear_support.time( 0.1 );
|
|
$weld2_rear_cover.time( 0.1 );
|
|
$weld1_front_support.moveTo( $weld1_front_long_origin );
|
|
$weld1_front_cover.moveTo( $weld1_front_long_origin );
|
|
$weld1_rear_support.moveTo( $weld1_rear_long_origin );
|
|
$weld1_rear_cover.moveTo( $weld1_rear_long_origin );
|
|
$weld2_front_support.moveTo( $weld2_front_long_origin );
|
|
$weld2_front_cover.moveTo( $weld2_front_long_origin );
|
|
$weld2_rear_support.moveTo( $weld2_rear_long_origin );
|
|
$weld2_rear_cover.moveTo( $weld2_rear_long_origin );
|
|
sys.waitFor( $weld2_rear_cover );
|
|
|
|
// 1 goes long, 2 goes long
|
|
fTemp = sys.random( 3.0 );
|
|
if( fTemp < 1 )
|
|
{
|
|
// early/early
|
|
thread Convey1LongPathSequence();
|
|
sys.wait( 2.0 );
|
|
|
|
thread Convey2LongPathSequence();
|
|
sys.wait( 28.0 );
|
|
}
|
|
else if( fTemp < 2 )
|
|
{
|
|
// late/early
|
|
sys.wait( 2.0 );
|
|
|
|
thread Convey2LongPathSequence();
|
|
sys.wait( 8.0 );
|
|
|
|
thread Convey1LongPathSequence();
|
|
sys.wait( 20.0 );
|
|
}
|
|
else
|
|
{
|
|
// late/late
|
|
sys.wait( 10.0 );
|
|
|
|
thread Convey1LongPathSequence();
|
|
sys.wait( 2.0 );
|
|
|
|
thread Convey2LongPathSequence();
|
|
sys.wait( 18.0 );
|
|
}
|
|
}
|
|
}
|
|
}
|
|
|
|
|
|
void SetupRideOfDeathTrap2()
|
|
{
|
|
$spinner_top.time( 0.1 );
|
|
$spinner_bottom.time( 0.1 );
|
|
$spinner_top.rotateOnce( '0 -45 0' );
|
|
$spinner_bottom.rotateOnce( '0 -45 0' );
|
|
sys.waitFor( $spinner_bottom );
|
|
}
|
|
|
|
|
|
void TopSpinnerRotate()
|
|
{
|
|
$spinner_top.time( 2.0 );
|
|
$spinner_top.accelTime( 0.25 );
|
|
$spinner_top.decelTime( 0.25 );
|
|
sys.trigger ($speaker_spinner_top);
|
|
$spinner_top.rotateOnce( '0 -90 0' );
|
|
sys.waitFor( $spinner_top );
|
|
|
|
// do some effects stuff
|
|
sys.wait( 3.0 );
|
|
}
|
|
|
|
|
|
void BottomSpinnerRotate()
|
|
{
|
|
$spinner_bottom.time( 2.0 );
|
|
$spinner_bottom.accelTime( 0.25 );
|
|
$spinner_bottom.decelTime( 0.25 );
|
|
$spinner_bottom.rotateOnce( '0 -90 0' );
|
|
sys.trigger ($speaker_spinner_bottom);
|
|
sys.waitFor( $spinner_bottom );
|
|
|
|
// do some effects stuff
|
|
sys.wait( 3.0 );
|
|
}
|
|
|
|
|
|
void RideOfDeathTrap2Loop()
|
|
{
|
|
while( true )
|
|
{
|
|
thread BottomSpinnerRotate();
|
|
sys.wait( 0.5 );
|
|
|
|
thread TopSpinnerRotate();
|
|
sys.wait( 4.5 );
|
|
}
|
|
}
|
|
|
|
|
|
void SetupRideOfDeathTrap3()
|
|
{
|
|
}
|
|
|
|
|
|
void RideOfDeathTrap3Loop()
|
|
{
|
|
sys.trigger($trap3_impspawn);
|
|
|
|
//bring everything else out 160
|
|
$discharge_arm_1.bind ($discharge_stack_1);
|
|
$discharge_arm_2.bind ($discharge_stack_2);
|
|
|
|
$spin_pooperplat1.move (WEST, 24);
|
|
$spin_pooperplat2.move (EAST, 24);
|
|
|
|
sys.trigger ($discharge_stack_1_speaker);
|
|
$discharge_stack_1.move (NORTH, 160);
|
|
sys.wait (1);
|
|
sys.trigger ($discharge_stack_2_speaker);
|
|
$discharge_stack_2.move (NORTH, 160);
|
|
sys.waitFor ($discharge_stack_2);
|
|
|
|
$discharge_arm_1.unbind ();
|
|
$discharge_arm_2.unbind ();
|
|
|
|
sys.trigger ($discharge_arm_1_speaker);
|
|
$discharge_arm_1.move (NORTH, 112);
|
|
sys.wait (0.5);
|
|
sys.trigger ($discharge_arm_2_speaker);
|
|
$discharge_arm_2.move (NORTH, 112);
|
|
sys.waitFor ($discharge_arm_2);
|
|
|
|
sys.trigger ($discharge_lens_1_speaker);
|
|
$discharge_lens_1.rotateOnce ('0 0 90');
|
|
sys.wait (0.33);
|
|
sys.trigger ($discharge_lens_2_speaker);
|
|
$discharge_lens_2.rotateOnce ('0 0 90');
|
|
//sys.wait(.5);
|
|
|
|
//bring to ready position
|
|
sys.trigger ($speaker_pooper1); // Who the hell named this "pooper" anyway ?
|
|
$spin_pooper1.move (DOWN, 96); // Ahh.. the scatological humor runs rampant... -Xian
|
|
sys.wait (1.5);
|
|
sys.trigger ($speaker_pooper2);
|
|
$spin_pooper2.move (DOWN, 96);
|
|
|
|
//bring the nipples up
|
|
$discharge_nipple_1.time (2);
|
|
$discharge_nipple_2.time (2);
|
|
|
|
sys.trigger ($discharge_nipple_1_speaker);
|
|
$discharge_nipple_1.move (UP, 176);
|
|
sys.wait (0.48);
|
|
$discharge_nipple_2.move (UP, 176);
|
|
sys.trigger ($discharge_nipple_2_speaker);
|
|
sys.waitFor($discharge_nipple_2);
|
|
|
|
//initial movement to make sure the particles are on correctly
|
|
$spin_paddle1.time( 1.2 );
|
|
$spin_paddle1.accelTime( 0.25 );
|
|
$spin_paddle1.decelTime( 0.25 );
|
|
sys.trigger ($speaker_paddle1);
|
|
$spin_paddle1.rotateOnce( '0 180 0' );
|
|
sys.waitFor( $spin_paddle1 );
|
|
|
|
|
|
//trigger the lightning on
|
|
|
|
$dbuzz1.startSoundShader ("jacob", SND_CHANNEL_VOICE );
|
|
|
|
sys.trigger ($dbuzz1);
|
|
sys.trigger ($dbuzz1_light);
|
|
sys.wait( 1.0 );
|
|
|
|
$spin_paddle2.time( 1.2 );
|
|
$spin_paddle2.accelTime( 0.25 );
|
|
$spin_paddle2.decelTime( 0.25 );
|
|
sys.trigger ($speaker_paddle2);
|
|
$spin_paddle2.rotateOnce( '0 -180 0' );
|
|
sys.waitFor( $spin_paddle2 );
|
|
|
|
//trigger the lightning on
|
|
$dbuzz2.startSoundShader ("jacob", SND_CHANNEL_VOICE );
|
|
sys.trigger ($dbuzz2);
|
|
sys.trigger ($dbuzz2_light);
|
|
|
|
sys.wait( 1.0 );
|
|
|
|
while( true ) {
|
|
//trigger the lightning off
|
|
sys.trigger ($dbuzz1);
|
|
sys.trigger ($dbuzz1_light);
|
|
$spin_paddle1.time( 1.2 );
|
|
$spin_paddle1.accelTime( 0.25 );
|
|
$spin_paddle1.decelTime( 0.25 );
|
|
sys.trigger ($speaker_paddle1);
|
|
$spin_paddle1.rotateOnce( '0 180 0' );
|
|
sys.waitFor( $spin_paddle1 );
|
|
//trigger the lightning on
|
|
$dbuzz1.startSoundShader ("jacob", SND_CHANNEL_VOICE );
|
|
sys.trigger ($dbuzz1);
|
|
sys.trigger ($dbuzz1_light);
|
|
sys.wait( 1.0 );
|
|
|
|
//trigger the lightning off
|
|
sys.trigger ($dbuzz2);
|
|
sys.trigger ($dbuzz2_light);
|
|
$spin_paddle2.time( 1.2 );
|
|
$spin_paddle2.accelTime( 0.25 );
|
|
$spin_paddle2.decelTime( 0.25 );
|
|
sys.trigger ($speaker_paddle2);
|
|
$spin_paddle2.rotateOnce( '0 -180 0' );
|
|
sys.waitFor( $spin_paddle2 );
|
|
//trigger the lightning on
|
|
$dbuzz2.startSoundShader ("jacob", SND_CHANNEL_VOICE );
|
|
sys.trigger ($dbuzz2);
|
|
sys.trigger ($dbuzz2_light);
|
|
sys.wait( 1.0 );
|
|
}
|
|
}
|
|
|
|
|
|
|
|
void SetupRideOfDeathTrap5()
|
|
{
|
|
$pounder1_left_base.time( 0.1 );
|
|
$pounder1_left_cushion.time( 0.1 );
|
|
$pounder1_left_inside.time( 0.1 );
|
|
$pounder1_left_outside.time( 0.1 );
|
|
$pounder2_left_base.time( 0.1 );
|
|
$pounder2_left_cushion.time( 0.1 );
|
|
$pounder2_left_inside.time( 0.1 );
|
|
$pounder2_left_outside.time( 0.1 );
|
|
$pounder1_right_base.time( 0.1 );
|
|
$pounder1_right_cushion.time( 0.1 );
|
|
$pounder1_right_inside.time( 0.1 );
|
|
$pounder1_right_outside.time( 0.1 );
|
|
$pounder2_right_base.time( 0.1 );
|
|
$pounder2_right_cushion.time( 0.1 );
|
|
$pounder2_right_inside.time( 0.1 );
|
|
$pounder2_right_outside.time( 0.1 );
|
|
$pounder1_left_base.rotateOnce( '-30 0 0' );
|
|
$pounder1_left_cushion.rotateOnce( '-30 0 0' );
|
|
$pounder1_left_inside.rotateOnce( '-30 0 0' );
|
|
$pounder1_left_outside.rotateOnce( '-30 0 0' );
|
|
$pounder2_left_base.rotateOnce( '-30 0 0' );
|
|
$pounder2_left_cushion.rotateOnce( '-30 0 0' );
|
|
$pounder2_left_inside.rotateOnce( '-30 0 0' );
|
|
$pounder2_left_outside.rotateOnce( '-30 0 0' );
|
|
$pounder1_right_base.rotateOnce( '30 0 0' );
|
|
$pounder1_right_cushion.rotateOnce( '30 0 0' );
|
|
$pounder1_right_inside.rotateOnce( '30 0 0' );
|
|
$pounder1_right_outside.rotateOnce( '30 0 0' );
|
|
$pounder2_right_base.rotateOnce( '30 0 0' );
|
|
$pounder2_right_cushion.rotateOnce( '30 0 0' );
|
|
$pounder2_right_inside.rotateOnce( '30 0 0' );
|
|
$pounder2_right_outside.rotateOnce( '30 0 0' );
|
|
sys.waitFor( $pounder2_right_outside );
|
|
|
|
$pounder1_left_inside.time( 0.1 );
|
|
$pounder1_left_outside.time( 0.1 );
|
|
$pounder2_left_inside.time( 0.1 );
|
|
$pounder2_left_outside.time( 0.1 );
|
|
$pounder1_right_inside.time( 0.1 );
|
|
$pounder1_right_outside.time( 0.1 );
|
|
$pounder2_right_inside.time( 0.1 );
|
|
$pounder2_right_outside.time( 0.1 );
|
|
$pounder1_left_inside.move( REL_FORWARD, 288 );
|
|
$pounder1_left_outside.move( REL_FORWARD, 256 );
|
|
$pounder2_left_inside.move( REL_FORWARD, 288 );
|
|
$pounder2_left_outside.move( REL_FORWARD, 256 );
|
|
$pounder1_right_inside.move( REL_BACK, 288 );
|
|
$pounder1_right_outside.move( REL_BACK, 256 );
|
|
$pounder2_right_inside.move( REL_BACK, 288 );
|
|
$pounder2_right_outside.move( REL_BACK, 256 );
|
|
sys.waitFor( $pounder2_right_outside );
|
|
}
|
|
|
|
|
|
void Pounder1Sequence()
|
|
{
|
|
float fRandom;
|
|
|
|
fRandom = sys.random( 2.0 );
|
|
|
|
if( fRandom < 1.0 )
|
|
{
|
|
// extending out
|
|
|
|
$pounder1_left_inside.time( 0.5 );
|
|
$pounder1_left_inside.accelTime( 0.0 );
|
|
$pounder1_left_inside.decelTime( 0.0 );
|
|
sys.trigger ($speaker_pounder1_halfsecond);
|
|
$pounder1_left_inside.move( REL_BACK, 288 );
|
|
sys.waitFor( $pounder1_left_inside );
|
|
sys.wait( 0.25 );
|
|
|
|
$pounder1_left_outside.time( 0.2 );
|
|
$pounder1_left_outside.accelTime( 0.0 );
|
|
$pounder1_left_outside.decelTime( 0.0 );
|
|
sys.trigger ($speaker_pounder1_left_outside_p2);
|
|
$pounder1_left_outside.move( REL_BACK, 256 );
|
|
sys.waitFor( $pounder1_left_outside );
|
|
|
|
$pounder1_left_outside.time( 0.1 );
|
|
$pounder1_left_outside.accelTime( 0.0 );
|
|
$pounder1_left_outside.decelTime( 0.1 );
|
|
$pounder1_left_cushion.time( 0.1 );
|
|
$pounder1_left_cushion.accelTime( 0.0 );
|
|
$pounder1_left_cushion.decelTime( 0.1 );
|
|
$pounder1_left_outside.move( REL_BACK, 16 );
|
|
sys.trigger ($speaker_pounder1_left_cushion);
|
|
$pounder1_left_cushion.move( REL_BACK, 16 );
|
|
sys.waitFor( $pounder1_left_cushion );
|
|
|
|
$pounder1_left_outside.time( 0.2 );
|
|
$pounder1_left_outside.accelTime( 0.0 );
|
|
$pounder1_left_outside.decelTime( 0.0 );
|
|
$pounder1_left_cushion.time( 0.2 );
|
|
$pounder1_left_cushion.accelTime( 0.0 );
|
|
$pounder1_left_cushion.decelTime( 0.0 );
|
|
$pounder1_left_outside.move( REL_FORWARD, 16 );
|
|
$pounder1_left_cushion.move( REL_FORWARD, 16 );
|
|
sys.waitFor( $pounder1_left_cushion );
|
|
|
|
sys.wait( 2.0 );
|
|
|
|
// Sucking back in
|
|
|
|
$pounder1_left_outside.time( 1.0 );
|
|
$pounder1_left_outside.accelTime( 0.25 );
|
|
$pounder1_left_outside.decelTime( 0.25 );
|
|
$pounder1_left_inside.time( 2.0 );
|
|
$pounder1_left_inside.accelTime( 0.5 );
|
|
$pounder1_left_inside.decelTime( 0.5 );
|
|
sys.trigger ($speaker_pounder1_left_outside_1s);
|
|
$pounder1_left_outside.move( REL_FORWARD, 256 );
|
|
sys.trigger ($speaker_pounder1_left_inside);
|
|
$pounder1_left_inside.move( REL_FORWARD, 288 );
|
|
sys.waitFor( $pounder1_left_inside );
|
|
}
|
|
else
|
|
{
|
|
$pounder1_right_inside.time( 0.5 );
|
|
$pounder1_right_inside.accelTime( 0.0 );
|
|
$pounder1_right_inside.decelTime( 0.0 );
|
|
sys.trigger ($speaker_pounder1_halfsecond);
|
|
$pounder1_right_inside.move( REL_FORWARD, 288 );
|
|
sys.waitFor( $pounder1_right_inside );
|
|
sys.wait( 0.25 );
|
|
|
|
$pounder1_right_outside.time( 0.2 );
|
|
$pounder1_right_outside.accelTime( 0.0 );
|
|
$pounder1_right_outside.decelTime( 0.0 );
|
|
sys.trigger ($speaker_pounder1_right_outside_p2);
|
|
$pounder1_right_outside.move( REL_FORWARD, 256 );
|
|
sys.waitFor( $pounder1_right_outside );
|
|
|
|
$pounder1_right_outside.time( 0.1 );
|
|
$pounder1_right_outside.accelTime( 0.0 );
|
|
$pounder1_right_outside.decelTime( 0.1 );
|
|
$pounder1_right_cushion.time( 0.1 );
|
|
$pounder1_right_cushion.accelTime( 0.0 );
|
|
$pounder1_right_cushion.decelTime( 0.1 );
|
|
$pounder1_right_outside.move( REL_FORWARD, 16 );
|
|
sys.trigger ($speaker_pounder1_right_cushion);
|
|
$pounder1_right_cushion.move( REL_FORWARD, 16 );
|
|
sys.waitFor( $pounder1_right_cushion );
|
|
|
|
$pounder1_right_outside.time( 0.2 );
|
|
$pounder1_right_outside.accelTime( 0.0 );
|
|
$pounder1_right_outside.decelTime( 0.0 );
|
|
$pounder1_right_cushion.time( 0.2 );
|
|
$pounder1_right_cushion.accelTime( 0.0 );
|
|
$pounder1_right_cushion.decelTime( 0.0 );
|
|
$pounder1_right_outside.move( REL_BACK, 16 );
|
|
$pounder1_right_cushion.move( REL_BACK, 16 );
|
|
sys.waitFor( $pounder1_right_cushion );
|
|
|
|
sys.wait( 2.0 );
|
|
|
|
$pounder1_right_outside.time( 1.0 );
|
|
$pounder1_right_outside.accelTime( 0.25 );
|
|
$pounder1_right_outside.decelTime( 0.25 );
|
|
$pounder1_right_inside.time( 2.0 );
|
|
$pounder1_right_inside.accelTime( 0.5 );
|
|
$pounder1_right_inside.decelTime( 0.5 );
|
|
sys.trigger ($speaker_pounder1_right_outside_1s);
|
|
$pounder1_right_outside.move( REL_BACK, 256 );
|
|
sys.trigger ($speaker_pounder1_right_inside);
|
|
$pounder1_right_inside.move( REL_BACK, 288 );
|
|
sys.waitFor( $pounder1_left_inside );
|
|
}
|
|
}
|
|
|
|
|
|
void Pounder2Sequence()
|
|
{
|
|
float fRandom;
|
|
|
|
fRandom = sys.random( 2.0 );
|
|
|
|
if( fRandom < 1.0 )
|
|
{
|
|
$pounder2_left_inside.time( 0.5 );
|
|
$pounder2_left_inside.accelTime( 0.0 );
|
|
$pounder2_left_inside.decelTime( 0.0 );
|
|
sys.trigger ($speaker_pounder2_halfsecond);
|
|
$pounder2_left_inside.move( REL_BACK, 288 );
|
|
sys.waitFor( $pounder2_left_inside );
|
|
sys.wait( 0.25 );
|
|
|
|
$pounder2_left_outside.time( 0.2 );
|
|
$pounder2_left_outside.accelTime( 0.0 );
|
|
$pounder2_left_outside.decelTime( 0.0 );
|
|
sys.trigger ($speaker_pounder2_left_outside_p2);
|
|
$pounder2_left_outside.move( REL_BACK, 256 );
|
|
sys.waitFor( $pounder2_left_outside );
|
|
|
|
$pounder2_left_outside.time( 0.1 );
|
|
$pounder2_left_outside.accelTime( 0.0 );
|
|
$pounder2_left_outside.decelTime( 0.1 );
|
|
$pounder2_left_cushion.time( 0.1 );
|
|
$pounder2_left_cushion.accelTime( 0.0 );
|
|
$pounder2_left_cushion.decelTime( 0.1 );
|
|
$pounder2_left_outside.move( REL_BACK, 16 );
|
|
$pounder2_left_cushion.move( REL_BACK, 16 );
|
|
sys.waitFor( $pounder2_left_cushion );
|
|
|
|
$pounder2_left_outside.time( 0.2 );
|
|
$pounder2_left_outside.accelTime( 0.0 );
|
|
$pounder2_left_outside.decelTime( 0.0 );
|
|
$pounder2_left_cushion.time( 0.2 );
|
|
$pounder2_left_cushion.accelTime( 0.0 );
|
|
$pounder2_left_cushion.decelTime( 0.0 );
|
|
$pounder2_left_outside.move( REL_FORWARD, 16 );
|
|
sys.trigger ($speaker_pounder2_left_cushion);
|
|
$pounder2_left_cushion.move( REL_FORWARD, 16 );
|
|
sys.waitFor( $pounder2_left_cushion );
|
|
|
|
sys.wait( 2.0 );
|
|
|
|
$pounder2_left_outside.time( 1.0 );
|
|
$pounder2_left_outside.accelTime( 0.25 );
|
|
$pounder2_left_outside.decelTime( 0.25 );
|
|
$pounder2_left_inside.time( 2.0 );
|
|
$pounder2_left_inside.accelTime( 0.5 );
|
|
$pounder2_left_inside.decelTime( 0.5 );
|
|
sys.trigger ($speaker_pounder2_left_outside_1s);
|
|
$pounder2_left_outside.move( REL_FORWARD, 256 );
|
|
sys.trigger ($speaker_pounder2_left_inside);
|
|
$pounder2_left_inside.move( REL_FORWARD, 288 );
|
|
sys.waitFor( $pounder2_left_inside );
|
|
}
|
|
else
|
|
{
|
|
$pounder2_right_inside.time( 0.5 );
|
|
$pounder2_right_inside.accelTime( 0.0 );
|
|
$pounder2_right_inside.decelTime( 0.0 );
|
|
sys.trigger ($speaker_pounder2_halfsecond);
|
|
$pounder2_right_inside.move( REL_FORWARD, 288 );
|
|
sys.waitFor( $pounder2_right_inside );
|
|
sys.wait( 0.25 );
|
|
|
|
$pounder2_right_outside.time( 0.2 );
|
|
$pounder2_right_outside.accelTime( 0.0 );
|
|
$pounder2_right_outside.decelTime( 0.0 );
|
|
sys.trigger ($speaker_pounder2_right_outside_p2);
|
|
$pounder2_right_outside.move( REL_FORWARD, 256 );
|
|
sys.waitFor( $pounder2_right_outside );
|
|
|
|
$pounder2_right_outside.time( 0.1 );
|
|
$pounder2_right_outside.accelTime( 0.0 );
|
|
$pounder2_right_outside.decelTime( 0.1 );
|
|
$pounder2_right_cushion.time( 0.1 );
|
|
$pounder2_right_cushion.accelTime( 0.0 );
|
|
$pounder2_right_cushion.decelTime( 0.1 );
|
|
$pounder2_right_outside.move( REL_FORWARD, 16 );
|
|
sys.trigger ($speaker_pounder2_right_cushion);
|
|
$pounder2_right_cushion.move( REL_FORWARD, 16 );
|
|
sys.waitFor( $pounder2_right_cushion );
|
|
|
|
$pounder2_right_outside.time( 0.2 );
|
|
$pounder2_right_outside.accelTime( 0.0 );
|
|
$pounder2_right_outside.decelTime( 0.0 );
|
|
$pounder2_right_cushion.time( 0.2 );
|
|
$pounder2_right_cushion.accelTime( 0.0 );
|
|
$pounder2_right_cushion.decelTime( 0.0 );
|
|
$pounder2_right_outside.move( REL_BACK, 16 );
|
|
$pounder2_right_cushion.move( REL_BACK, 16 );
|
|
sys.waitFor( $pounder2_right_cushion );
|
|
|
|
sys.wait( 2.0 );
|
|
|
|
$pounder2_right_outside.time( 1.0 );
|
|
$pounder2_right_outside.accelTime( 0.25 );
|
|
$pounder2_right_outside.decelTime( 0.25 );
|
|
$pounder2_right_inside.time( 2.0 );
|
|
$pounder2_right_inside.accelTime( 0.5 );
|
|
$pounder2_right_inside.decelTime( 0.5 );
|
|
sys.trigger ($speaker_pounder2_right_outside_1s);
|
|
$pounder2_right_outside.move( REL_BACK, 256 );
|
|
sys.trigger ($speaker_pounder2_right_inside);
|
|
$pounder2_right_inside.move( REL_BACK, 288 );
|
|
sys.waitFor( $pounder2_left_inside );
|
|
}
|
|
}
|
|
|
|
|
|
void RideOfDeathTrap5Loop()
|
|
{
|
|
// FIXME: add a light cue where the rods come out to let the player
|
|
// know which one is about to fire
|
|
sys.wait( 7.5 );
|
|
|
|
while( true )
|
|
{
|
|
thread Pounder1Sequence();
|
|
sys.wait( 2.0 );
|
|
|
|
thread Pounder2Sequence();
|
|
sys.wait( 8.0 );
|
|
}
|
|
}
|
|
|
|
|
|
|
|
void SetupRideOfDeathTraps()
|
|
{
|
|
SetupRideOfDeathObjects();
|
|
|
|
SetupRideOfDeathTrap1();
|
|
SetupRideOfDeathTrap2();
|
|
SetupRideOfDeathTrap3();
|
|
SetupRideOfDeathTrap5();
|
|
|
|
thread RideOfDeathTrap1Loop();
|
|
thread RideOfDeathTrap2Loop();
|
|
thread RideOfDeathTrap5Loop();
|
|
}
|
|
|
|
|
|
void LightGroup1Sequence()
|
|
{
|
|
$lightgroup1_swing_light1.accelTime( 0.25 );
|
|
$lightgroup1_swing_light1.time( 1.0 );
|
|
$lightgroup1_swing_light1.decelTime( 0.25 );
|
|
$lightgroup1_swing_light2.accelTime( 0.25 );
|
|
$lightgroup1_swing_light2.time( 1.0 );
|
|
$lightgroup1_swing_light2.decelTime( 0.25 );
|
|
$lightgroup1_swing_light1.rotateOnce( '0 0 135' );
|
|
$lightgroup1_swing_light2.rotateOnce( '0 0 135' );
|
|
sys.waitFor( $lightgroup1_swing_light2 );
|
|
|
|
$lightgroup1_swing_light1_light.On();
|
|
$lightgroup1_swing_light2_light.On();
|
|
|
|
$lightgroup1_lighta.On();
|
|
$lightgroup1_lightb.On();
|
|
$lightgroup1_lightc.On();
|
|
}
|
|
|
|
|
|
void GlideLight1Loop()
|
|
{
|
|
float fTime;
|
|
|
|
while( true )
|
|
{
|
|
fTime = sys.random( 2.0 );
|
|
|
|
$glide_light1.time( fTime + 1.0 );
|
|
$glide_light1.accelTime( fTime / 4 );
|
|
$glide_light1.decelTime( fTime / 4 );
|
|
$glide_light1.move( NORTH, 448 );
|
|
sys.waitFor( $glide_light1 );
|
|
|
|
fTime = sys.random( 2.0 );
|
|
sys.wait( fTime + 1.0 );
|
|
|
|
fTime = sys.random( 2.0 );
|
|
|
|
$glide_light1.time( fTime + 1.0 );
|
|
$glide_light1.accelTime( fTime / 4 );
|
|
$glide_light1.decelTime( fTime / 4 );
|
|
$glide_light1.move( SOUTH, 448 );
|
|
sys.waitFor( $glide_light1 );
|
|
|
|
fTime = sys.random( 2.0 );
|
|
sys.wait( fTime + 1.0 );
|
|
}
|
|
}
|
|
|
|
|
|
void GlideLight2Loop()
|
|
{
|
|
float fTime;
|
|
|
|
while( true )
|
|
{
|
|
fTime = sys.random( 1.5 );
|
|
|
|
$glide_light2.time( fTime + 0.5 );
|
|
$glide_light2.accelTime( fTime / 4 );
|
|
$glide_light2.decelTime( fTime / 4 );
|
|
$glide_light2.move( WEST, 256 );
|
|
sys.waitFor( $glide_light2 );
|
|
|
|
fTime = sys.random( 1.25 );
|
|
sys.wait( fTime + 0.5 );
|
|
|
|
fTime = sys.random( 1.5 );
|
|
|
|
$glide_light2.time( fTime + 0.5 );
|
|
$glide_light2.accelTime( fTime / 4 );
|
|
$glide_light2.decelTime( fTime / 4 );
|
|
$glide_light2.move( EAST, 256 );
|
|
sys.waitFor( $glide_light2 );
|
|
|
|
fTime = sys.random( 1.25 );
|
|
sys.wait( fTime + 0.5 );
|
|
}
|
|
}
|
|
|
|
|
|
void CargoObjectLoop( string strObject )
|
|
{
|
|
entity eObject;
|
|
entity eLight;
|
|
|
|
eObject = sys.getEntity( strObject );
|
|
eLight = sys.getEntity( strObject + "_light" );
|
|
|
|
eObject.time( 3.0 );
|
|
eObject.move( SOUTH, 176 );
|
|
sys.waitFor( eObject );
|
|
|
|
eObject.bind( $cargo_object_origin1 );
|
|
|
|
$cargo_object_origin1.time( 1.75 );
|
|
$cargo_object_origin1.rotateOnce( '0 90 0' );
|
|
sys.waitFor( $cargo_object_origin1 );
|
|
|
|
eObject.unbind();
|
|
$cargo_object_origin1.restorePosition();
|
|
|
|
eObject.time( 0.6 );
|
|
eObject.move( EAST, 48 );
|
|
sys.waitFor( eObject );
|
|
|
|
eLight.On();
|
|
|
|
eObject.bind( $cargo_object_origin2 );
|
|
|
|
$cargo_object_origin2.time( 1.75 );
|
|
$cargo_object_origin2.rotateOnce( '0 90 0' );
|
|
sys.waitFor( $cargo_object_origin2 );
|
|
|
|
eObject.unbind();
|
|
$cargo_object_origin2.restorePosition();
|
|
|
|
eObject.time( 4.25 );
|
|
eObject.move( NORTH, 304 );
|
|
sys.waitFor( eObject );
|
|
|
|
eObject.bind( $cargo_object_origin3 );
|
|
|
|
$cargo_object_origin3.time( 6.0 );
|
|
$cargo_object_origin3.rotateOnce( '0 -90 0' );
|
|
sys.waitFor( $cargo_object_origin3 );
|
|
|
|
eObject.unbind();
|
|
$cargo_object_origin3.restorePosition();
|
|
|
|
eObject.time( 14.0 );
|
|
eObject.move( EAST, 896 );
|
|
sys.waitFor( eObject );
|
|
|
|
eObject.bind( $cargo_object_origin4 );
|
|
|
|
$cargo_object_origin4.time( 6.0 );
|
|
$cargo_object_origin4.rotateOnce( '0 -90 0' );
|
|
sys.waitFor( $cargo_object_origin4 );
|
|
|
|
eObject.unbind();
|
|
$cargo_object_origin4.restorePosition();
|
|
|
|
eObject.time( 1.0 );
|
|
eObject.move( SOUTH, 64 );
|
|
sys.waitFor( eObject );
|
|
|
|
eObject.bind( $cargo_object_origin5 );
|
|
|
|
$cargo_object_origin5.time( 4.0 );
|
|
$cargo_object_origin5.rotateOnce( '0 -90 0' );
|
|
sys.waitFor( $cargo_object_origin5 );
|
|
|
|
eObject.unbind();
|
|
$cargo_object_origin5.restorePosition();
|
|
|
|
eLight.Off();
|
|
|
|
eObject.time( 2.0 );
|
|
eObject.move( WEST, 128 );
|
|
sys.waitFor( eObject );
|
|
|
|
eObject.restorePosition();
|
|
}
|
|
// 46s
|
|
|
|
|
|
void CargoObjectSequence()
|
|
{
|
|
string strObject;
|
|
float ii;
|
|
|
|
while( true )
|
|
{
|
|
for( ii = 1; ii < 5; ii++ )
|
|
{
|
|
strObject = "cargo_object" + ii;
|
|
thread CargoObjectLoop( strObject );
|
|
sys.wait( 15.0 );
|
|
}
|
|
}
|
|
}
|
|
|
|
|
|
|
|
void LightsOffThread()
|
|
{
|
|
sys.trigger($dark_door_open);
|
|
sys.trigger($dark_backstab);
|
|
sys.trigger($dark_b2);
|
|
sys.trigger($dark_triteclimb);
|
|
sys.trigger($rod_doortrig);
|
|
sys.trigger($lightsoff_lock);
|
|
|
|
thread ExtendSectionBridges();
|
|
|
|
SetupRideOfDeathTraps();
|
|
RemoveRideOfDeathObjects();
|
|
}
|
|
|
|
|
|
void LightsOnThread()
|
|
{
|
|
sys.trigger($lights_on_doortrig);
|
|
sys.trigger($lightside_lock_1);
|
|
thread SectionBridgeRemoveAll();
|
|
|
|
thread ExtendPlatform1();
|
|
thread RotatingBridgeStart();
|
|
|
|
thread LightGroup1Sequence();
|
|
sys.wait( 5.0 );
|
|
|
|
thread RotatingBridgeLoop();
|
|
}
|
|
|
|
|
|
void RideOfDeathThread()
|
|
{
|
|
sys.trigger($rod_doortrig);
|
|
SetupRideOfDeathTraps();
|
|
RideOfDeathLoop();
|
|
}
|
|
|
|
/*--------------------------------------------------------------------
|
|
|
|
F r a g c h a m b e r scripting START
|
|
|
|
--------------------------------------------------------------------*/
|
|
|
|
|
|
// -------------------------------------------------
|
|
// Chamber Core DOWN
|
|
// -------------------------------------------------
|
|
void chamber_core_down()
|
|
{
|
|
$chamber_core.time(5);
|
|
$chamber_core.accelTime(1);
|
|
$chamber_core.decelTime(1.5);
|
|
$chamber_core.moveTo($chamber_core_down);
|
|
|
|
sys.trigger ($chamber_core_down_speaker);
|
|
sys.wait (4);
|
|
//no turning back... remove cancel option
|
|
$guicon1.setGuiParm ( "gui_parm9" , 0);
|
|
sys.trigger ($speaker_juicer);
|
|
sys.waitFor ($chamber_core);
|
|
|
|
}
|
|
|
|
// -------------------------------------------------
|
|
// Chamber Core UP
|
|
// -------------------------------------------------
|
|
void chamber_core_up()
|
|
{
|
|
$chamber_core.time(3);
|
|
$chamber_core.accelTime(2.5);
|
|
$chamber_core.decelTime(.5);
|
|
$chamber_core.moveTo($chamber_core_up);
|
|
|
|
sys.trigger ($chamber_core_up_speaker);
|
|
|
|
sys.waitFor ($chamber_core);
|
|
}
|
|
|
|
// -------------------------------------------------
|
|
// Chamber Rods DOWN
|
|
// -------------------------------------------------
|
|
void chamber_rods_down()
|
|
{
|
|
$chamber_rods.time(4);
|
|
$chamber_rods.accelTime(1);
|
|
$chamber_rods.decelTime(.5);
|
|
$chamber_rods.moveTo($chamber_rod_down);
|
|
|
|
sys.trigger ($chamber_rods_down_speaker);
|
|
|
|
sys.waitFor ($chamber_rods);
|
|
}
|
|
|
|
// -------------------------------------------------
|
|
// Chamber Rods UP
|
|
// -------------------------------------------------
|
|
void chamber_rods_up()
|
|
{
|
|
$chamber_rods.time(3);
|
|
$chamber_rods.accelTime(1);
|
|
$chamber_rods.decelTime(.5);
|
|
$chamber_rods.moveTo($chamber_rod_up);
|
|
|
|
sys.trigger ($chamber_rods_up_speaker);
|
|
|
|
sys.waitFor ($chamber_rods);
|
|
}
|
|
|
|
|
|
// -------------------------------------------------
|
|
// Chamber Sockets OUT
|
|
// -------------------------------------------------
|
|
void chamber_sockets_out()
|
|
{
|
|
$chamber_socket1.time(2);
|
|
$chamber_socket1.moveTo($chamber_socket1_out);
|
|
$chamber_socket2.time(2);
|
|
$chamber_socket2.moveTo($chamber_socket2_out);
|
|
$chamber_socket3.time(2);
|
|
$chamber_socket3.moveTo($chamber_socket3_out);
|
|
$chamber_socket4.time(2);
|
|
$chamber_socket4.moveTo($chamber_socket4_out);
|
|
|
|
sys.trigger ($chamber_sockets_out_speaker);
|
|
|
|
sys.waitFor ($chamber_socket4);
|
|
}
|
|
|
|
// -------------------------------------------------
|
|
// Chamber Sockets IN
|
|
// -------------------------------------------------
|
|
void chamber_sockets_in()
|
|
{
|
|
$chamber_socket1.time(2);
|
|
$chamber_socket1.moveTo($chamber_socket1_in);
|
|
$chamber_socket2.time(2);
|
|
$chamber_socket2.moveTo($chamber_socket2_in);
|
|
$chamber_socket3.time(2);
|
|
$chamber_socket3.moveTo($chamber_socket3_in);
|
|
$chamber_socket4.time(2);
|
|
$chamber_socket4.moveTo($chamber_socket4_in);
|
|
|
|
sys.trigger ($chamber_sockets_in_speaker);
|
|
|
|
sys.waitFor ($chamber_socket4);
|
|
}
|
|
|
|
// -------------------------------------------------
|
|
// Close the chamber doors
|
|
// -------------------------------------------------
|
|
void chamber_closedoors()
|
|
{
|
|
$chamber_door2a.close();
|
|
$chamber_door2b.close();
|
|
$chamber_door4a.close();
|
|
$chamber_door4b.close();
|
|
|
|
$chamber_door2a.lock(1);
|
|
$chamber_door2b.lock(1);
|
|
$chamber_door4a.lock(1);
|
|
$chamber_door4b.lock(1);
|
|
|
|
$fragchamber_door1_gui.setGuiParm ("gui_parm3", 0);
|
|
$fragchamber_door2_gui.setGuiParm ("gui_parm3", 0);
|
|
|
|
$fragchamber_door1_gui.setShaderParm (7, 0);
|
|
$fragchamber_door2_gui.setShaderParm (7, 0);
|
|
|
|
$fragchamber_door1_blinky_red.show();
|
|
$fragchamber_door1_blinky_green.hide();
|
|
$fragchamber_door2_blinky_red.show();
|
|
$fragchamber_door2_blinky_green.hide();
|
|
|
|
$fragchamber_door1_bl1.setColor (1, 0, 0);
|
|
$fragchamber_door1_bl2.setColor (1, 0, 0);
|
|
$fragchamber_door2_bl1.setColor (1, 0, 0);
|
|
$fragchamber_door2_bl2.setColor (1, 0, 0);
|
|
}
|
|
|
|
// -------------------------------------------------
|
|
// Trigger the Chamber into action!
|
|
// -------------------------------------------------
|
|
void chamber_trigger()
|
|
{
|
|
float moverthread;
|
|
|
|
$guicon1.setGuiParm ("gui_parm9", 1);
|
|
|
|
//bridge times
|
|
$chamber_bridge1.time(.5);
|
|
$chamber_bridge2.time(.5);
|
|
$chamber_bridge3.time(.5);
|
|
$chamber_bridge4.time(.5);
|
|
|
|
//doors CLOSE and LOCK
|
|
thread chamber_closedoors();
|
|
|
|
//bridges up
|
|
sys.trigger ($bridge_up_speaker);
|
|
$chamber_bridge1.rotateOnce( '0 0 -61' );
|
|
$chamber_bridge2.rotateOnce( '100 0 0' );
|
|
$chamber_bridge3.rotateOnce( '0 0 61' );
|
|
$chamber_bridge4.rotateOnce( '-100 0 0' );
|
|
|
|
//core DOWN
|
|
|
|
thread chamber_core_down();
|
|
|
|
//trigger the NPC to panic
|
|
sys.trigger ($fragchamber_npc_panic);
|
|
|
|
//sockets OUT
|
|
sys.waitFor($chamber_bridge1);
|
|
|
|
moverthread = thread chamber_sockets_out();
|
|
sys.waitForThread ( moverthread );
|
|
|
|
//rods DOWN
|
|
|
|
moverthread = thread chamber_rods_down();
|
|
sys.waitForThread ( moverthread );
|
|
sys.wait(1);
|
|
|
|
//kill npc
|
|
$fragchamber_npc.kill();
|
|
sys.trigger ($skeleton_spawn);
|
|
sys.trigger ($punish_lock);
|
|
//thread frontroom_door_open();
|
|
|
|
//kill the 2nd scientist standing at the door
|
|
$alphalabs3_fragchamber_scientist2_2.remove();
|
|
|
|
sys.trigger ($speaker_warmup);
|
|
sys.wait (2.5);
|
|
|
|
//...Dramatic pause and doing stuff sound
|
|
sys.trigger ($fragchamber_active);
|
|
sys.wait (1);
|
|
sys.trigger ($punish_relay);
|
|
sys.wait (1);
|
|
|
|
//rods up and sockets in
|
|
thread chamber_rods_up();
|
|
sys.wait (1);
|
|
moverthread = thread chamber_sockets_in();
|
|
sys.waitForThread ( moverthread );
|
|
|
|
//bridges DOWN
|
|
sys.trigger ($bridge_down_speaker);
|
|
$chamber_bridge1.rotateOnce( '0 0 61' );
|
|
$chamber_bridge2.rotateOnce( '-100 0 0' );
|
|
$chamber_bridge3.rotateOnce( '0 0 -61' );
|
|
$chamber_bridge4.rotateOnce( '100 0 0' );
|
|
|
|
//core up
|
|
|
|
moverthread = thread chamber_core_up();
|
|
sys.waitForThread ( moverthread );
|
|
|
|
//doors OPEN and unlock
|
|
sys.wait(1);
|
|
$chamber_door2a.open();
|
|
$chamber_door2b.open();
|
|
$chamber_door4a.open();
|
|
$chamber_door4b.open();
|
|
|
|
$chamber_door2a.lock(0);
|
|
$chamber_door2b.lock(0);
|
|
$chamber_door4a.lock(0);
|
|
$chamber_door4b.lock(0);
|
|
|
|
$fragchamber_door1_gui.setGuiParm ("gui_parm3", 1);
|
|
$fragchamber_door2_gui.setGuiParm ("gui_parm3", 1);
|
|
|
|
$fragchamber_door1_gui.setShaderParm (7, 1);
|
|
$fragchamber_door2_gui.setShaderParm (7, 1);
|
|
|
|
$fragchamber_door1_blinky_red.hide();
|
|
$fragchamber_door1_blinky_green.show();
|
|
$fragchamber_door2_blinky_red.hide();
|
|
$fragchamber_door2_blinky_green.show();
|
|
|
|
$fragchamber_door1_bl1.setColor (0, 1, 0);
|
|
$fragchamber_door1_bl2.setColor (0, 1, 0);
|
|
$fragchamber_door2_bl1.setColor (0, 1, 0);
|
|
$fragchamber_door2_bl2.setColor (0, 1, 0);
|
|
|
|
//trigger control gui to reset it
|
|
$guicon1.setGuiParm ("gui_parm8", 1);
|
|
$guicon1.setGuiParm ("gui_parm9", 1);
|
|
}
|
|
|
|
// -------------------------------------------------
|
|
// Cancel the Chamber
|
|
// -------------------------------------------------
|
|
void chamber_cancel()
|
|
{
|
|
float moverthread;
|
|
|
|
sys.print ("chamber_cancel\n");
|
|
sys.killthread ("map_alphalabs4::chamber_trigger");
|
|
sys.killthread ("map_alphalabs4::chamber_core_down");
|
|
sys.trigger($npc_backup);
|
|
|
|
//rods up and sockets in
|
|
thread chamber_rods_up();
|
|
thread chamber_sockets_in();
|
|
|
|
//core up
|
|
moverthread = thread chamber_core_up();
|
|
//sys.waitForThread ( moverthread );
|
|
|
|
//trigger the NPC relief
|
|
sys.wait( 1 );
|
|
sys.trigger ($fragchamber_npc_relief );
|
|
|
|
//bridges DOWN
|
|
sys.trigger ($bridge_down_speaker);
|
|
$chamber_bridge1.rotateOnce( '0 0 61' );
|
|
$chamber_bridge2.rotateOnce( '-100 0 0' );
|
|
$chamber_bridge3.rotateOnce( '0 0 -61' );
|
|
$chamber_bridge4.rotateOnce( '100 0 0' );
|
|
sys.waitFor ($chamber_bridge4);
|
|
|
|
//doors OPEN and unlock
|
|
sys.wait(1);
|
|
$chamber_door2a.open();
|
|
$chamber_door2b.open();
|
|
$chamber_door4a.open();
|
|
$chamber_door4b.open();
|
|
|
|
$chamber_door2a.lock(0);
|
|
$chamber_door2b.lock(0);
|
|
$chamber_door4a.lock(0);
|
|
$chamber_door4b.lock(0);
|
|
|
|
$fragchamber_door1_gui.setGuiParm ("gui_parm3", 1);
|
|
$fragchamber_door2_gui.setGuiParm ("gui_parm3", 1);
|
|
|
|
$fragchamber_door1_gui.setShaderParm (7, 1);
|
|
$fragchamber_door2_gui.setShaderParm (7, 1);
|
|
|
|
$fragchamber_door1_blinky_red.hide();
|
|
$fragchamber_door1_blinky_green.show();
|
|
$fragchamber_door2_blinky_red.hide();
|
|
$fragchamber_door2_blinky_green.show();
|
|
|
|
$fragchamber_door1_bl1.setColor (0, 1, 0);
|
|
$fragchamber_door1_bl2.setColor (0, 1, 0);
|
|
$fragchamber_door2_bl1.setColor (0, 1, 0);
|
|
$fragchamber_door2_bl2.setColor (0, 1, 0);
|
|
|
|
sys.wait (1);
|
|
|
|
//trigger control gui to reset it
|
|
$guicon1.setGuiParm ("gui_parm8", 3);
|
|
$guicon1.setGuiParm ("gui_parm9", 1);
|
|
|
|
//trigger the NPC to leave
|
|
sys.print ("trigger\n");
|
|
sys.trigger ($fragchamber_npc);
|
|
|
|
// keep the doors open for a few seconds
|
|
float end_time = sys.getTime() + 7;
|
|
while( sys.getTime() < end_time ) {
|
|
sys.trigger( $chamber_door2a );
|
|
sys.trigger( $chamber_door2b );
|
|
sys.trigger( $chamber_door4a );
|
|
sys.trigger( $chamber_door4b );
|
|
sys.wait( 0.5 );
|
|
}
|
|
}
|
|
|
|
// -------------------------------------------------
|
|
// Open the chamber doors
|
|
// -------------------------------------------------
|
|
void chamber_opendoors()
|
|
{
|
|
// doors OPEN and unlock
|
|
sys.wait(1);
|
|
sys.trigger($npc_backup);
|
|
$chamber_door2a.open();
|
|
$chamber_door2b.open();
|
|
$chamber_door4a.open();
|
|
$chamber_door4b.open();
|
|
|
|
$chamber_door2a.lock(0);
|
|
$chamber_door2b.lock(0);
|
|
$chamber_door4a.lock(0);
|
|
$chamber_door4b.lock(0);
|
|
|
|
$fragchamber_door1_gui.setGuiParm ("gui_parm3", 1);
|
|
$fragchamber_door2_gui.setGuiParm ("gui_parm3", 1);
|
|
|
|
$fragchamber_door1_gui.setShaderParm (7, 1);
|
|
$fragchamber_door2_gui.setShaderParm (7, 1);
|
|
|
|
$fragchamber_door1_blinky_red.hide();
|
|
$fragchamber_door1_blinky_green.show();
|
|
$fragchamber_door2_blinky_red.hide();
|
|
$fragchamber_door2_blinky_green.show();
|
|
|
|
$fragchamber_door1_bl1.setColor (0, 1, 0);
|
|
$fragchamber_door1_bl2.setColor (0, 1, 0);
|
|
$fragchamber_door2_bl1.setColor (0, 1, 0);
|
|
$fragchamber_door2_bl2.setColor (0, 1, 0);
|
|
|
|
sys.wait (0.5);
|
|
|
|
//trigger the NPC to leave
|
|
sys.trigger ($fragchamber_npc_leave);
|
|
|
|
//trigger control gui to reset it
|
|
$guicon1.setGuiParm ("gui_parm8", 2);
|
|
$guicon1.setGuiParm ("gui_parm9", 1);
|
|
|
|
// keep the doors open for a few seconds
|
|
float end_time = sys.getTime() + 7;
|
|
while( sys.getTime() < end_time ) {
|
|
sys.trigger( $chamber_door2a );
|
|
sys.trigger( $chamber_door2b );
|
|
sys.trigger( $chamber_door4a );
|
|
sys.trigger( $chamber_door4b );
|
|
sys.wait( 0.5 );
|
|
}
|
|
}
|
|
|
|
/*--------------------------------------------------------------------
|
|
|
|
F r a g c h a m b e r scripting END
|
|
|
|
--------------------------------------------------------------------*/
|
|
|
|
|
|
/* ***********************************************************************************
|
|
|
|
Please place non-init code and functions above these init functions
|
|
|
|
*********************************************************************************** */
|
|
|
|
/*
|
|
Pre-init state. Define starting state of key entities
|
|
*/
|
|
|
|
void setup_objects() {
|
|
g_fConveyDoorRefCount = 0;
|
|
g_fWeldDoorRefCount = 0;
|
|
}
|
|
|
|
|
|
void init_world() {
|
|
// -- Start Alphapuzzle
|
|
thread SetupRotatingBridge();
|
|
|
|
thread GlideLight1Loop();
|
|
thread GlideLight2Loop();
|
|
thread CargoObjectSequence();
|
|
// -- End Alphapuzzle
|
|
}
|
|
|
|
void main() {
|
|
cache_sounds();
|
|
bind_objects();
|
|
setup_objects();
|
|
init_world();
|
|
}
|
|
} |