doom3-bfg/base/script/map_enpro.script
2022-08-27 13:19:00 +02:00

994 lines
29 KiB
Text

namespace map_enpro {
// Set up exit room sounds for after the battle sequence. Trigger all this stuff when the player
// swaps out the rod.
void xianstuff() {
sys.trigger ($speaker_burn_1); // flame1 in exit room
sys.trigger ($speaker_burn_2); // flame2 in exit room
sys.trigger ($speaker_alarm_1); // alarm sound in exit room
sys.trigger ($speaker_badgen_1); // Red sound for damaged core :: Turns it off
sys.trigger ($speaker_goodgen_1); // Blue sound for fixed core :: Turns it on
sys.trigger ($rflames); // Turns off flame sounds for fixed rod 2
sys.trigger ($speaker_fixed_rod); // Turns on good sound for fixed rod 2
}
void setup_objects()
{
// ceiling room
$ceiling_cover.bind ($ceiling_cover_anchor);
$ceilingroom_pipe.bind ($ceilingroom_pipe_anchor);
$ceiling_cover_anchor.accelTime (.5);
$ceiling_cover_anchor.time (.5);
$ceilingroom_pipe_anchor.accelTime (.3);
$ceilingroom_pipe_anchor.time (.6);
$ceiling_cover_anchor.rotateOnce ('120 0 0');
// bridge setup
$bridge_toprailing_left.bind ($bridge_toprailing_left_anchor);
$bridge_toprailing_left_anchor.bind ($bridge_floor);
$bridge_toprailing_right.bind ($bridge_toprailing_right_anchor);
$bridge_toprailing_right_anchor.bind ($bridge_floor);
$bridge_btmrailing_left.bind ($bridge_btmrailing_left_anchor);
$bridge_btmrailing_left_anchor.bind ($bridge_floor);
$bridge_btmrailing_right.bind ($bridge_btmrailing_right_anchor);
$bridge_btmrailing_right_anchor.bind ($bridge_floor);
$bridge_toprailing_left_anchor.accelTime (.4);
$bridge_toprailing_left_anchor.decelTime (.4);
$bridge_toprailing_left_anchor.time (1);
$bridge_toprailing_right_anchor.accelTime (.4);
$bridge_toprailing_right_anchor.decelTime (.4);
$bridge_toprailing_right_anchor.time (1);
$bridge_btmrailing_left_anchor.accelTime (.4);
$bridge_btmrailing_left_anchor.decelTime (.4);
$bridge_btmrailing_left_anchor.time (1);
$bridge_btmrailing_right_anchor.accelTime (.4);
$bridge_btmrailing_right_anchor.decelTime (.4);
$bridge_btmrailing_right_anchor.time (1);
$bridge_toprailing_left_anchor.rotateOnce ('0 0 -88');
$bridge_btmrailing_left_anchor.rotateOnce ('0 0 -45');
$bridge_toprailing_right_anchor.rotateOnce ('0 0 88');
$bridge_btmrailing_right_anchor.rotateOnce ('0 0 45');
$bridge_floor.moveTo ($bridge_spot1);
// hall 1 emergency light
$light_tunnel_1.bind ($tunnel_anchor_1);
$light_tunnel_1_spin.bind ($tunnel_anchor_1);
$tunnel_anchor_1.rotate ('0 -300 0');
// chamber 2: spinny things
$accelswayL.rotate ('0 -20 0');
$accelspinL.rotate ('0 45 0');
$accelspinM.rotate ('0 -35 0');
$accelspinR.rotate ('0 50 0');
$c2_spin_2.rotate ('0 -40 0');
$c2_spin_3.rotate ('0 20 0');
// rod replacement setup
$rod_door.bind ($rod_replacer);
$rod_door.time (1);
$rod_door.accelTime (.3);
$rod_door.decelTime (.5);
$rod_fire_emitter1.bind ($rod);
$rod_fire_emitter2.bind ($rod);
$rod_redlight1.bind ($rod);
$rod_emitter3.bind ($rod);
$rod_emitter4.bind ($rod);
$rod_emitter1.bind ($rod_2);
$rod_emitter2.bind ($rod_2);
$rod_2_bluelight1.bind ($rod_2);
$rod_2_bluelight2.bind ($rod_2);
$rod_2.hide ();
$rod_replacer.time (1);
$rod_replacer.decelTime (.5);
$rod.time (.5);
$rod.decelTime (.3);
$rod_2.time (.5);
$rod_2.decelTime (.3);
// machineroom binds
$machineclaw1_carrier.bind ($machineclaw1_carrier_anchor);
$machineclaw1_upperarm.bind ($machineclaw1_carrier);
$machineclaw1_forearm.bind ($machineclaw1_upperarm);
$machineclaw1_hand.bind ($machineclaw1_forearm);
$machineclaw1_revolver.bind ($machineclaw1_hand);
$machineclaw1_steam1.bind ($machineclaw1_hand);
$machineclaw1_steam2.bind ($machineclaw1_hand);
$reloader_light.bind ($reloader);
$chamberpivot2.bind ($chamberpivot1);
$filterchamber.bind ($chamberpivot1);
$canspot1.bind ($machineclaw1_revolver);
$canspot2.bind ($machineclaw1_revolver);
$canspot3.bind ($machineclaw1_revolver);
$canspot4.bind ($machineclaw1_revolver);
$can_dirty1.bind ($filterchamber);
$can_dirty2.bind ($filterchamber);
$chamber_filterspot1.bind ($filterchamber);
$chamber_filterspot2.bind ($filterchamber);
$can_dirty4.bind ($cradle4);
$can_dirty5.bind ($cradle5);
$can_dirty6.bind ($cradle6);
$cradle4_x.bind ($cradle4);
$cradle5_x.bind ($cradle5);
$cradle6_x.bind ($cradle6);
// setup mover times for machineroom
$machineclaw1_carrier.time (2);
$machineclaw1_upperarm.time (1);
$machineclaw1_forearm.time (1);
$machineclaw1_hand.time (1);
$machineclaw1_revolver.time (1);
$machineclaw1_carrier.accelTime (.50);
$machineclaw1_upperarm.accelTime (.1);
$machineclaw1_forearm.accelTime (.1);
$machineclaw1_hand.accelTime (.1);
$machineclaw1_revolver.accelTime (.1);
$machineclaw1_carrier.decelTime (.50);
$machineclaw1_upperarm.decelTime (.1);
$machineclaw1_forearm.decelTime (.1);
$machineclaw1_hand.decelTime (.1);
$machineclaw1_revolver.decelTime (.1);
$reloader.time (.25);
//airlock door2 times
$airlock_door2_left.time (1.2);
$airlock_door2_right.time (1.2);
$airlock_door2_left.accelTime (.2);
$airlock_door2_left.decelTime (1);
$airlock_door2_right.accelTime (.2);
$airlock_door2_right.decelTime (1);
$airlock_door2_top_lock.time (.25);
$airlock_door2_bottom_lock.time (.25);
$airlock_door2_left_lock.time (.75);
$airlock_door2_right_lock.time (.75);
$airlock_door2_left_lock.accelTime (.1);
$airlock_door2_left_lock.decelTime (.65);
$airlock_door2_right_lock.accelTime (.1);
$airlock_door2_right_lock.decelTime (.65);
}
///////////////////////////////////////////////
//
// ceilingroom
//
//////////////////////////////////////////////
void ceilingroom_start ()
{
sys.trigger ($explosion_1);
$ceilingroom_pipe_anchor.rotateOnce ('-15 0 0');
$ceilingroom_pipe_anchor.move (DOWN ,28);
$ceilingroom_pipe_anchor.startSoundShader ("metalcrash_01", SND_CHANNEL_VOICE);
sys.waitFor ($ceilingroom_pipe_anchor);
$ceilingroom_pipe_anchor.accelTime (.1);
$ceilingroom_pipe_anchor.decelTime (.1);
$ceilingroom_pipe_anchor.time (.2);
$ceilingroom_pipe_anchor.move (UP ,4);
$ceilingroom_pipe_anchor.rotateOnce ('3 0 0');
sys.waitFor ($ceilingroom_pipe_anchor);
$ceilingroom_pipe_anchor.move (DOWN ,2);
$ceilingroom_pipe_anchor.rotateOnce ('-3 0 0');
$bloodsplat1.show ();
sys.wait (.1);
$bloodsplat2.show ();
sys.wait (.1);
$bloodsplat3.show ();
sys.wait (.1);
$bloodsplat4.show ();
sys.wait (.05);
$bloodsplat5.show ();
sys.wait (.1);
$bloodsplat6.show ();
sys.wait (.05);
$ceiling_cover_anchor.rotateOnce ('-120 0 0');
sys.wait (.3);
sys.trigger ($func_fracture_6);
sys.trigger ($func_forcefield_6);
$func_forcefield_6.startSoundShader ("glasscrash_01", SND_CHANNEL_VOICE);
sys.wait (.3);
sys.trigger ($func_fracture_9);
sys.trigger ($func_forcefield_12);
$func_forcefield_6.startSoundShader ("glasscrash_01", SND_CHANNEL_VOICE);
sys.wait (.1);
sys.trigger ($breakglass_again);
}
///////////////////////////////////////////////
//
// bridge
//
//////////////////////////////////////////////
void bridge_open ()
{
$bridge_floor.time (2);
$bridge_floor.startSoundShader ("enpro_bridge_2s", SND_CHANNEL_VOICE);
$bridge_floor.moveTo ($bridge_spot2);
sys.waitFor ($bridge_floor);
$bridge_toprailing_left_anchor.rotateOnce ('0 0 88');
$bridge_toprailing_right_anchor.startSoundShader ("enpro_bridge_rails_1s", SND_CHANNEL_VOICE);
$bridge_toprailing_right_anchor.rotateOnce ('0 0 -88');
sys.waitFor ($bridge_toprailing_right_anchor);
$bridge_btmrailing_left_anchor.startSoundShader ("enpro_bridge_rails_2_1s", SND_CHANNEL_VOICE);
$bridge_btmrailing_left_anchor.rotateOnce ('0 0 45');
$bridge_btmrailing_right_anchor.rotateOnce ('0 0 -45');
}
///////////////////////////////////////////////
//
// zombie drop
//
//////////////////////////////////////////////
void zombie_drop ()
{ sys.trigger ($zombie_explosion_1);
sys.wait (.5);
sys.trigger ($zombie_explosion_2);
sys.wait (.2);
$zombie1.unbind ();
sys.wait (1);
$zombie_splat.show ();
}
/////////////////////////////////////////////////
//
// coolant rod replacement stuff
//
/////////////////////////////////////////////////
void rod_replace ()
{
thread xianstuff(); // Swap out sounds during this sequence
// grab red rod
sys.wait (1);
$rod_replacer.moveTo ($rod_replacer_spot2);
sys.waitFor ($rod_replacer);
sys.wait (1);
$rod.bind ($rod_replacer);
$rod_replacer.moveTo ($rod_replacer_spot1);
sys.waitFor ($rod_replacer);
$rod.unbind ();
$rod_door.rotateOnce ('0 180 0');
sys.wait (.5);
$rod_shimmer.hide ();
$rod_fire_emitter1.hide ();
$rod_fire_emitter2.hide ();
$rod_emitter3.hide ();
$rod_emitter4.hide ();
sys.trigger ($cyl_smoke);
sys.waitFor ($rod_door);
sys.wait (1);
$rod.moveTo ($rod_spot1);
sys.waitFor ($rod);
// switch
$rod.hide ();
$rod_2.show ();
$rod_fire_emitter1.hide ();
$rod_fire_emitter2.hide ();
$rod_emitter3.hide ();
$rod_emitter4.hide ();
$cyl_smoke.hide ();
sys.trigger ($rod_redlight1);
sys.trigger ($rod_2_bluelight1);
sys.trigger ($rod_2_bluelight2);
// blue rod
$rod_2.moveTo ($rod_spot2);
sys.waitFor ($rod_2);
$rod_2.bind ($rod_replacer);
$rod_replacer.moveTo ($rod_replacer_spot2);
sys.waitFor ($rod_replacer);
$rod_door.rotateOnce ('0 -180 0');
sys.waitFor ($rod_door);
$rod_2.unbind ();
sys.wait (1);
$rod_replacer.moveTo ($rod_replacer_spot1);
sys.waitFor ($rod_replacer);
// switch out colors by hazarddoor up on level 2
sys.trigger ($hazard_redlight);
sys.trigger ($hazard_bluelight);
$hazard_redemitter1.hide ();
$hazard_redemitter2.hide ();
$hazard_redemitter3.hide ();
$hazard_redemitter4.hide ();
$hazard_redtube1.hide ();
$hazard_redtube2.hide ();
$hazard_blueemitter1.show ();
$hazard_blueemitter2.show ();
$hazard_blueemitter3.show ();
$hazard_blueemitter4.show ();
$hazard_bluetube1.show ();
$hazard_bluetube2.show ();
sys.trigger ($cyl_lightrelay);
sys.trigger ($cyltop_on);
sys.trigger ($cyltop_off);
sys.trigger ($cylbottom_on);
sys.trigger ($cylbottom_off);
sys.trigger ($func_emitter_68);
sys.trigger ($func_emitter_69);
sys.trigger ($hazdoortrigger);
sys.trigger ($obj1complete_trigger);
//sys.trigger ($obj1complete);
}
////////////////////////////////////////////////////
//
// Rotate a cradle (machine room thing that -
// accepts dirty filters) around the ends
//
////////////////////////////////////////////////////
void cradle_rotate( entity ent )
{
//whole thing (up, around, and down
//takes 1 second like almost all the moves
ent.time ( .33 );
ent.move ( UP, 16 );
sys.waitFor (ent);
ent.rotateOnce ( '0 0 180');
sys.waitFor (ent);
ent.move ( DOWN, 16 );
ent.time (1);
}
void cache_sounds() {
sys.cacheSoundShader ("rec1_steamchuff");
sys.cacheSoundShader ("metalcrash_01");
sys.cacheSoundShader ("glasscrash_01");
sys.cacheSoundShader ("enpro_bridge_2s");
sys.cacheSoundShader ("enpro_bridge_rails_1s");
sys.cacheSoundShader ("enpro_bridge_rails_2_1s");
sys.cacheSoundShader ("dc3_gui_panel_1");
sys.cacheSoundShader ("tb_m3_loop");
sys.cacheSoundShader ("tb_m4_stop");
sys.cacheSoundShader ("mach_1s");
sys.cacheSoundShader ("rotor_1s");
sys.cacheSoundShader ("tb_m4_stop");
sys.cacheSoundShader ("tb_arm1");
sys.cacheSoundShader ("tb_arm2");
sys.cacheSoundShader ("tb_arm3");
sys.cacheSoundShader ("tb_whomp");
sys.cacheSoundShader ("tb_whompout");
sys.cacheSoundShader ("tb_reloader1");
sys.cacheSoundShader ("tb_reloader2");
sys.cacheSoundShader ("al4_welder_armrot_1s");
}
////////////////////////////////////////////////////
//
// Machineclaw movement
//
////////////////////////////////////////////////////
void machineclaw1_move()
{
// move machineclaw1 from initial position down and around track to filter pick up spot
//1
$sp_m2_carrier.startSoundShader ("dc3_gui_panel_1", SND_CHANNEL_VOICE2 );
$sp_m2_carrier.startSoundShader ("tb_m3_loop", SND_CHANNEL_VOICE ); // Start mover
$machineclaw1_carrier_anchor.rotateOnce ( '0 -90 0' );
sys.waitFor ($machineclaw1_carrier_anchor);
//2
$machineclaw1_carrier_anchor.moveTo ( $machineclaw1_movepoint2 );
sys.waitFor ($machineclaw1_carrier_anchor);
//3
$sp_m2_carrier.startSoundShader ("dc3_gui_panel_1", SND_CHANNEL_VOICE2 );
$machineclaw1_carrier_anchor.rotateOnce ( '0 -90 0' );
sys.waitFor ($machineclaw1_carrier_anchor);
//4
$machineclaw1_carrier_anchor.moveTo ( $machineclaw1_movepoint1 );
sys.waitFor ($machineclaw1_carrier_anchor);
// position machineclaw1 to receive filters
//5
$machineclaw1_carrier_anchor.moveTo ( $machineclaw1_movepoint12 );
$sp_m2_arm.startSoundShader ("mach_1s", SND_CHANNEL_VOICE2 );
$machineclaw1_upperarm.rotateOnce ( '-30 0 35' );
$sp_m2_rev.startSoundShader ("rotor_1s", SND_CHANNEL_VOICE2 );
$machineclaw1_forearm.rotateOnce ( '80 0 0' );
sys.waitFor ($machineclaw1_forearm);
$sp_m2_carrier.startSoundShader ("tb_m4_stop", SND_CHANNEL_VOICE ); // Stop Mover
//6
$sp_m2_rev.startSoundShader ("tb_arm3", SND_CHANNEL_BODY );
$machineclaw1_hand.rotateOnce ( '142.5 10 -90' );
sys.waitFor ($machineclaw1_hand);
sys.waitFor ($machineclaw1_upperarm);
//7
$sp_m2_arm.startSoundShader ("tb_arm2", SND_CHANNEL_VOICE2 );
$machineclaw1_upperarm.rotateOnce ( '-10 0 -43' );
sys.wait (1);
// get 1st new filter
//8
$can_clean1.startSoundShader ("tb_whomp", SND_CHANNEL_VOICE );
$can_clean1.moveTo ($canspot1);
sys.waitFor ($can_clean1);
$can_clean1.bind ($machineclaw1_revolver);
//steam
//9
$machineclaw1_steam1.startSoundShader ("rec1_steamchuff", SND_CHANNEL_VOICE2 );
sys.trigger ( $machineclaw1_steam1 );
sys.trigger ( $machineclaw1_steam2 );
// swing machineclaw1 away from receive position
//10
$sp_m2_arm.startSoundShader ("tb_arm1", SND_CHANNEL_VOICE2 );
$machineclaw1_upperarm.rotateOnce ( '0 0 48' );
$sp_m2_rev.startSoundShader ("tb_arm2", SND_CHANNEL_VOICE2 );
$machineclaw1_forearm.rotateOnce ( '10 0 0' );
sys.waitFor ($machineclaw1_upperarm);
// reload 2
//11
$sp_m2_reloader.startSoundShader ("tb_reloader1", SND_CHANNEL_VOICE );
$reloader.move ( DOWN, 32 );
sys.waitFor ($reloader);
//12
$sp_m2_reloader.startSoundShader ("tb_reloader2", SND_CHANNEL_VOICE2 );
$reloader.move ( UP, 32 );
$can_clean2.time (.25);
$can_clean3.time (.25);
//13
$can_clean2.move ( UP, 32 );
$can_clean3.move ( UP, 32 );
//14
$can_clean2.time (1);
$can_clean3.time (1);
// swing machineclaw1 back into receive position
$sp_m2_arm.startSoundShader ("tb_arm1", SND_CHANNEL_VOICE2 );
$machineclaw1_upperarm.rotateOnce ( '0 0 -48' );
$sp_m2_rev.startSoundShader ("tb_arm2", SND_CHANNEL_VOICE2 );
$machineclaw1_forearm.rotateOnce ( '-10 0 0' );
sys.wait (.5);
// get 2nd new filter
//15
$sp_m2_rev.startSoundShader ("rotor_1s", SND_CHANNEL_BODY );
$machineclaw1_revolver.rotateOnce ( '0 -450 0');
sys.waitFor ($machineclaw1_revolver);
//steam
//16
$machineclaw1_steam2.startSoundShader ("rec1_steamchuff", SND_CHANNEL_VOICE2 );
sys.trigger ( $machineclaw1_steam1 );
sys.trigger ( $machineclaw1_steam2 );
$can_clean2.startSoundShader ("tb_whomp", SND_CHANNEL_VOICE );
$can_clean2.moveTo ($canspot2);
sys.waitFor ($can_clean2);
$can_clean2.bind ($machineclaw1_revolver);
// machineclaw1 movement out of receive position
//17
$sp_m2_arm.startSoundShader ("tb_arm1", SND_CHANNEL_VOICE2 );
$machineclaw1_upperarm.rotateOnce ( '0 0 38' );
sys.waitFor ($machineclaw1_upperarm);
//18
$sp_m2_rev.startSoundShader ("rotor_1s", SND_CHANNEL_VOICE );
$machineclaw1_hand.rotateOnce ( '-142.5 -10 90' );
sys.waitFor ($machineclaw1_hand);
//19
$sp_m2_arm.startSoundShader ("tb_arm1", SND_CHANNEL_VOICE2 );
$machineclaw1_upperarm.rotateOnce ( '0 0 -20' );
$sp_m2_carrier.startSoundShader ("tb_m3_loop", SND_CHANNEL_VOICE ); // Start mover
$machineclaw1_carrier_anchor.moveTo ( $machineclaw1_movepoint1 );
sys.waitFor ($machineclaw1_upperarm);
$sp_m2_carrier.startSoundShader ("tb_m4_stop", SND_CHANNEL_VOICE ); // Stop Mover
//20
$sp_m2_arm.startSoundShader ("tb_arm2", SND_CHANNEL_VOICE );
$machineclaw1_forearm.rotateOnce ( '25 0 0' );
sys.wait (.5);
//21
$sp_m2_arm.startSoundShader ("tb_arm1", SND_CHANNEL_VOICE2 );
$machineclaw1_upperarm.rotateOnce ( '0 0 -10' );
// sys.waitFor ($machineclaw1_upperarm);
// reload 3
$sp_m2_reloader.startSoundShader ("tb_reloader1", SND_CHANNEL_VOICE );
$reloader.move ( DOWN, 32 );
sys.waitFor ($reloader);
//22
$sp_m2_reloader.startSoundShader ("tb_reloader2", SND_CHANNEL_VOICE2 );
$reloader.move ( UP, 32 );
$can_clean3.time (.25);
$can_clean3.move ( UP, 32 );
$can_clean3.time (1);
// move machineclaw1 from filter pick up spot to filterpoint1
//23
$sp_m2_carrier.startSoundShader ("tb_m3_loop", SND_CHANNEL_VOICE ); // Start mover
$machineclaw1_carrier_anchor.moveTo ( $machineclaw1_movepoint2 );
sys.waitFor ($machineclaw1_carrier_anchor);
//24
$machineclaw1_carrier_anchor.rotateOnce ( '0 90 0' );
$sp_m2_arm.startSoundShader ("tb_arm1", SND_CHANNEL_VOICE2 );
$machineclaw1_upperarm.rotateOnce ( '0 -45 0' );
sys.waitFor ($machineclaw1_carrier_anchor);
//25
$machineclaw1_carrier_anchor.moveTo ( $machineclaw1_filterpoint1 );
$sp_m2_arm.startSoundShader ("tb_arm1", SND_CHANNEL_VOICE2 );
$machineclaw1_upperarm.rotateOnce ( '-5 -45 -15' );
$sp_m2_rev.startSoundShader ("tb_arm2", SND_CHANNEL_VOICE2 );
$machineclaw1_forearm.rotateOnce ( '-15 0 0' );
sys.waitFor ($machineclaw1_carrier_anchor);
$sp_m2_carrier.startSoundShader ("tb_m4_stop", SND_CHANNEL_VOICE ); // Stop Mover
// filterchamber movement up and rotate 45 degrees for filter removal
//26
$chamberpivot1.startSoundShader ("tb_arm3", SND_CHANNEL_VOICE2 );
$chamberpivot1.move ( UP, 42 );
sys.waitFor ($chamberpivot1);
//26a
$filterchamber.startSoundShader ("tb_arm3", SND_CHANNEL_VOICE2 );
$filterchamber.rotateOnce ( '45 0 0');
sys.waitFor ($filterchamber);
// exchange filter 1
//27
$sp_m2_arm.startSoundShader ("tb_arm1", SND_CHANNEL_VOICE2 );
$machineclaw1_upperarm.rotateOnce ( '30 0 0' );
$sp_m2_rev.startSoundShader ("tb_arm2", SND_CHANNEL_VOICE2 );
$machineclaw1_forearm.rotateOnce ( '-20 0 0' );
// $machineclaw1_hand.rotateOnce ( '-5 0 0' );
$machineclaw1_hand.rotateOnce ( '-12 0 0' );
sys.waitFor ($machineclaw1_upperarm);
//28
$sp_m2_arm.startSoundShader ("tb_arm3", SND_CHANNEL_VOICE2 );
$machineclaw1_upperarm.rotateOnce ( '0 0 15' );
$sp_m2_rev.startSoundShader ("rotor_1s", SND_CHANNEL_VOICE );
$machineclaw1_revolver.rotateOnce ( '0 90 0');
sys.waitFor ($machineclaw1_upperarm);
//get old filter
//29
$can_dirty1.startSoundShader ("tb_whomp", SND_CHANNEL_VOICE );
$can_dirty1.moveTo ( $canspot3 );
$machineclaw1_steam1.startSoundShader ("rec1_steamchuff", SND_CHANNEL_VOICE2 );
sys.trigger ( $machineclaw1_steam1 );
sys.trigger ( $machineclaw1_steam2 );
sys.waitFor ($can_dirty1);
$can_dirty1.unbind ();
$can_dirty1.bind ( $machineclaw1_revolver );
sys.wait (.5);
//30
$sp_m2_rev.startSoundShader ("rotor_1s", SND_CHANNEL_VOICE );
$machineclaw1_revolver.rotateOnce ( '0 180 0');
sys.waitFor ($machineclaw1_revolver);
//steam
sys.trigger ( $machineclaw1_steam1 );
sys.trigger ( $machineclaw1_steam2 );
$machineclaw1_steam2.startSoundShader ("rec1_steamchuff", SND_CHANNEL_VOICE2 );
//insert new filter
//31
$can_clean1.startSoundShader ("tb_whompout", SND_CHANNEL_VOICE2 );
$can_clean1.moveTo ( $chamber_filterspot1 );
sys.waitFor ($can_clean1);
$can_clean1.unbind ();
$can_clean1.bind ( $chamber_filterspot1 );
// move machineclaw1 from filterpoint1 to filterpoint2
//32
$sp_m2_carrier.startSoundShader ("tb_m3_loop", SND_CHANNEL_VOICE ); // Start mover
$machineclaw1_carrier_anchor.moveTo ( $machineclaw1_filterpoint2 );
sys.waitFor ($machineclaw1_carrier_anchor);
$sp_m2_carrier.startSoundShader ("tb_m4_stop", SND_CHANNEL_VOICE ); // Stop Mover
// exchange filter 2
//33
$sp_m2_rev.startSoundShader ("rotor_1s", SND_CHANNEL_VOICE2 );
$machineclaw1_revolver.rotateOnce ( '0 -270 0');
sys.waitFor ($machineclaw1_revolver);
//steam
//34
$machineclaw1_steam1.startSoundShader ("rec1_steamchuff", SND_CHANNEL_VOICE2 );
sys.trigger ( $machineclaw1_steam1 );
sys.trigger ( $machineclaw1_steam2 );
//get old filter
$can_ditry2.startSoundShader ("tb_whomp", SND_CHANNEL_VOICE );
$can_dirty2.moveTo ( $canspot4 );
sys.waitFor ($can_dirty2);
$can_dirty2.unbind ();
$can_dirty2.bind ( $machineclaw1_revolver );
sys.wait (.5);
//35
$sp_m2_rev.startSoundShader ("rotor_1s", SND_CHANNEL_VOICE );
$machineclaw1_revolver.rotateOnce ( '0 180 0');
sys.waitFor ($machineclaw1_revolver);
//steam
$machineclaw1_steam2.startSoundShader ("rec1_steamchuff", SND_CHANNEL_VOICE2 );
sys.trigger ( $machineclaw1_steam1 );
sys.trigger ( $machineclaw1_steam2 );
//insert new filter
//36
$can_clean2.startSoundShader ("tb_whompout", SND_CHANNEL_VOICE2 );
$can_clean2.moveTo ( $chamber_filterspot2 );
sys.waitFor ($can_clean2);
$can_clean2.unbind ();
$can_clean2.bind ( $chamber_filterspot2 );
sys.wait (1);
// move machineclaw1 from filterpoint2 to dump spot
//37
$sp_m2_carrier.startSoundShader ("tb_m3_loop", SND_CHANNEL_VOICE ); // Start mover
$machineclaw1_carrier_anchor.moveTo ( $machineclaw1_movepoint3 );
$sp_m2_arm.startSoundShader ("tb_arm2", SND_CHANNEL_VOICE );
$machineclaw1_forearm.rotateOnce ( '40 0 0' );
sys.waitFor ($machineclaw1_carrier_anchor);
//38
$machineclaw1_carrier_anchor.rotateOnce ( '0 90 0' );
sys.waitFor ($machineclaw1_carrier_anchor);
//39
$machineclaw1_carrier.rotateOnce ( '0 -90 0' );
$machineclaw1_carrier_anchor.moveTo ( $machineclaw1_movepoint4 );
$sp_m2_rev.startSoundShader ("tb_arm1", SND_CHANNEL_VOICE2 );
$machineclaw1_forearm.rotateOnce ( '-17 0 0' );
$sp_m2_arm.startSoundShader ("tb_arm2", SND_CHANNEL_VOICE2 );
$machineclaw1_upperarm.rotateOnce ( '-15 0 -18' );
sys.waitFor ($machineclaw1_carrier_anchor);
$sp_m2_carrier.startSoundShader ("tb_m4_stop", SND_CHANNEL_VOICE ); // Stop Mover
//40
$sp_m2_rev.startSoundShader ("rotor_1s", SND_CHANNEL_VOICE );
$machineclaw1_hand.rotateOnce ( '39 16 0' );
sys.waitFor ($machineclaw1_hand);
// dump old filters
//move cradles up,down and around
//41
$cradle4.startSoundShader ("al4_welder_armrot_1s", SND_CHANNEL_VOICE );
$cradle4.rotateOnce ( '0 0 180' );
$cradle5.move ( DOWN, 32 );
$cradle6.move ( DOWN, 32 );
thread cradle_rotate ( $cradle1 );
$cradle2.move ( UP, 32 );
$cradle3.move ( UP, 32 );
sys.waitFor ($cradle2);
sys.killthread ( "map_enpro::cradle_rotate" );
$can_dirty4.unbind ();
$can_dirty4.remove ();
//put dirty1 on cradle1
//42
$sp_m2_rev.startSoundShader ("rotor_1s", SND_CHANNEL_VOICE );
$machineclaw1_revolver.rotateOnce ( '0 -90 0' );
sys.waitFor ($machineclaw1_revolver);
//steam
//42a
$machineclaw1_steam1.startSoundShader ("rec1_steamchuff", SND_CHANNEL_VOICE2 );
sys.trigger ( $machineclaw1_steam1 );
sys.trigger ( $machineclaw1_steam2 );
$can_dirty1.startSoundShader ("tb_whomp", SND_CHANNEL_VOICE );
$can_dirty1.moveTo ( $cradlespot );
sys.waitFor ($can_dirty1);
$can_dirty1.unbind ();
$can_dirty1.bind ( $cradle1 );
//move cradles around again
//43
$cradle5.startSoundShader ("al4_welder_armrot_1s", SND_CHANNEL_VOICE );
$cradle5.rotateOnce ( '0 0 180' );
$cradle6.move ( DOWN, 32 );
$cradle1.move ( DOWN, 32 );
thread cradle_rotate ( $cradle2 );
$cradle3.move ( UP, 32 );
$cradle4.move ( UP, 32 );
sys.waitFor ($cradle3);
sys.killthread ( "map_enpro::cradle_rotate" );
$can_dirty5.unbind ();
$can_dirty5.remove ();
//put dirty2 on cradle2
//44
$sp_m2_rev.startSoundShader ("rotor_1s", SND_CHANNEL_VOICE );
$machineclaw1_revolver.rotateOnce ( '0 630 0' );
sys.waitFor ($machineclaw1_revolver);
//steam
//44a
$machineclaw1_steam2.startSoundShader ("rec1_steamchuff", SND_CHANNEL_VOICE2 );
sys.trigger ( $machineclaw1_steam1 );
sys.trigger ( $machineclaw1_steam2 );
$can_dirty.startSoundShader ("tb_whomp", SND_CHANNEL_VOICE );
$can_dirty2.moveTo ( $cradlespot );
sys.waitFor ($can_dirty2);
$can_dirty2.unbind ();
$can_dirty2.bind ( $cradle2 );
//move cradles around again - last time
//45
$cradle6.startSoundShader ("al4_welder_armrot_1s", SND_CHANNEL_VOICE );
$cradle6.rotateOnce ( '0 0 180' );
$cradle1.move ( DOWN, 32 );
$cradle2.move ( DOWN, 32 );
thread cradle_rotate ( $cradle3 );
$cradle4.move ( UP, 32 );
$cradle5.move ( UP, 32 );
sys.waitFor ($cradle4);
sys.killthread ( "map_enpro::cradle_rotate" );
$can_dirty6.unbind ();
$can_dirty6.remove ();
// filterchamber rotate 45 degrees and movement down back to original position
//46
$filterchamber.startSoundShader ("tb_arm3", SND_CHANNEL_VOICE );
$filterchamber.rotateOnce ( '-45 0 0');
sys.waitFor ($filterchamber);
//47
$chamberpivot1.startSoundShader ("tb_arm3", SND_CHANNEL_VOICE );
$chamberpivot1.move ( DOWN, 42 );
sys.waitFor ($chamberpivot1);
sys.trigger ($tube_particle_3);
sys.trigger ($tube_particle_4);
sys.trigger ($tube_particle_5);
sys.trigger ($tube_particle_6);
sys.trigger ($plasmacontrol_light2);
sys.trigger ($plasmacontrol_light3);
}
/////////////////////////////////////
/////////// exit airlock door
/////////////////////////////////////
void exit_open()
{ //disable the gui on door2
$airlock_door2_gui.setGuiParm ( "gui_parm1" , 0);
//move the 4 locks to unlock position
$airlock_door2_top_lock.move ( UP, 15 );
sys.trigger ($speaker_airlock_door2_bottom_lock); // sound
$airlock_door2_bottom_lock.move ( DOWN, 15 );
sys.waitFor ($airlock_door2_bottom_lock);
sys.trigger ($speaker_airlock_door2_left_lock);
$airlock_door2_left_lock.move ( NORTH, 16 );
sys.trigger ($speaker_airlock_door2_right_lock);
$airlock_door2_right_lock.move ( NORTH, 16 );
sys.waitFor ($airlock_door2_right_lock);
//open doors
sys.trigger ($speaker_airlock_door2_open);
$airlock_door2_left.rotateOnce ( '0 45 0' );
$airlock_door2_right.rotateOnce ( '0 -45 0' );
sys.waitFor ($airlock_door2_right);
sys.waitFor ($airlock_door2_left);
}
void main()
{
cache_sounds();
setup_objects();
}
}