mirror of
https://github.com/jmarshall23/DoomRTX.git
synced 2026-08-12 16:21:04 +02:00
2693 lines
66 KiB
Plaintext
2693 lines
66 KiB
Plaintext
namespace map_mc_underground {
|
|
|
|
// global state variables
|
|
float saftey_bridge_state = 1;
|
|
float underarm_work_state = 1;
|
|
float underarm_fingers_state = -64;
|
|
|
|
// variable to track crane movement state
|
|
float crane_main_state = 0;
|
|
float crane_dir = 0;
|
|
|
|
// Start Xian Stuff
|
|
|
|
void cache_sounds() {
|
|
sys.cacheSoundShader ("mset1_movement");
|
|
sys.cacheSoundShader ("mset1_stop");
|
|
sys.cacheSoundShader ("mset2_movement");
|
|
sys.cacheSoundShader ("mset2_stop");
|
|
|
|
sys.cacheSoundShader ("m1_start");
|
|
sys.cacheSoundShader ("m1_loop");
|
|
sys.cacheSoundShader ("m1_stop");
|
|
|
|
sys.cacheSoundShader ("mcu_support_2s");
|
|
sys.cacheSoundShader ("mcu_safteybridge_02");
|
|
sys.cacheSoundShader ("mcu_safteybridge_01");
|
|
sys.cacheSoundShader ("msmall_pounder");
|
|
sys.cacheSoundShader ("servo_1s_01");
|
|
sys.cacheSoundShader ("servo_1s_02");
|
|
sys.cacheSoundShader ("mech_fingers_1_5s");
|
|
sys.cacheSoundShader ("airwhomp");
|
|
sys.cacheSoundShader ("something_interesting");
|
|
sys.cacheSoundShader ("something_interesting_2");
|
|
sys.cacheSoundShader ("metalbounce_1");
|
|
sys.cacheSoundShader ("metalbounce_2");
|
|
sys.cacheSoundShader ("guisounds_pingup");
|
|
|
|
sys.cacheSoundShader ("steelswing_01");
|
|
sys.cacheSoundShader ("steelswing_02");
|
|
sys.cacheSoundShader ("steelswing_03");
|
|
sys.cacheSoundShader ("steelswing_04");
|
|
sys.cacheSoundShader ("steelswing_05");
|
|
sys.cacheSoundShader ("wiresnap");
|
|
sys.cacheSoundShader ("mc_hellblast_explosion");
|
|
sys.cacheSoundShader ("mc_leatherface");
|
|
sys.cacheSoundShader ("mc_invasion_stuff");
|
|
sys.cacheSoundShader ("mc_substing_01");
|
|
sys.cacheSoundShader ("mc_substing_02");
|
|
}
|
|
|
|
// This function triggers sounds to alter the soundscape after the invasion
|
|
void post_invasion_sounds() {
|
|
sys.trigger ($hspeaker_1);
|
|
sys.trigger ($hspeaker_2);
|
|
sys.trigger ($hspeaker_3);
|
|
sys.trigger ($hspeaker_4);
|
|
sys.trigger ($hspeaker_5);
|
|
sys.trigger ($hspeaker_6);
|
|
sys.trigger ($hspeaker_7);
|
|
sys.trigger ($hspeaker_8);
|
|
}
|
|
|
|
void mover_startsound (entity ent) {
|
|
ent.startSoundShader ("m1_start", SND_CHANNEL_VOICE);
|
|
sys.wait (0.75);
|
|
ent.startSoundShader ("m1_loop", SND_CHANNEL_VOICE2);
|
|
}
|
|
|
|
void mover_stopsound (entity ent) {
|
|
ent.startSoundShader ("m1_stop", SND_CHANNEL_VOICE2);
|
|
}
|
|
|
|
// End Xian Stuff
|
|
|
|
|
|
////////////////////////////////////////////////////
|
|
//
|
|
// Setup binds and times etc...
|
|
//
|
|
////////////////////////////////////////////////////
|
|
void setup_objects()
|
|
{
|
|
//rotate crane initially
|
|
$crane_main.rotateOnce('0 80 0');
|
|
|
|
//set initial crane times
|
|
$crane_main.time (6);
|
|
$crane_main.accelTime (3);
|
|
$crane_main.decelTime (2);
|
|
|
|
$crane_carrier.bind ($crane_main);
|
|
$crane_carrier_load.bind ($crane_carrier);
|
|
$crane_main.setGuiParm ( "gui_parm2" , crane_main_state);
|
|
$crane_remote_panel.setGuiParm ( "gui_parm2" , crane_main_state);
|
|
$crane_reset_button.setGuiParm ( "gui_parm2" , crane_main_state);
|
|
|
|
//rotate the two klaxon lights
|
|
$emrredlight1_mover.rotateOnce('0 0 45');
|
|
$emrredlight2_mover.rotateOnce('0 0 45');
|
|
|
|
//set airlock door guis initial states to 1
|
|
$airlock1_door1_gui.setGuiParm ( "gui_parm1" , 1);
|
|
$airlock1_door2_gui.setGuiParm ( "gui_parm1" , 1);
|
|
|
|
$airlock2_door1_gui.setGuiParm ( "gui_parm1" , 1);
|
|
$airlock2_door2_gui.setGuiParm ( "gui_parm1" , 1);
|
|
|
|
//underarm setup
|
|
$underarm_top.bind ($underarm_carrier);
|
|
$underarm_upper.bind ($underarm_top);
|
|
$underarm_lower.bind ($underarm_upper);
|
|
$underarm_fingers.bind ($underarm_lower);
|
|
$underarm_tube.bind ($underarm_lower);
|
|
$underarm_tube_light.bind ($underarm_tube);
|
|
|
|
$underarm_upper.accelTime (.2);
|
|
$underarm_lower.accelTime (.2);
|
|
$underarm_upper.decelTime (.2);
|
|
$underarm_lower.decelTime (.2);
|
|
|
|
$underarm_carrier.speed (150);
|
|
$underarm_carrier.accelTime (.25);
|
|
$underarm_carrier.decelTime (.25);
|
|
|
|
$underarm_fingers.time (.01);
|
|
|
|
$underarm_tube.setColor ( 1, 0, 0 );
|
|
$underarm_tube_light.setColor ( 1, 0, 0 );
|
|
$underarm_can_1.setColor ( 1, 0, 0 );
|
|
$underarm_can_1_light.setColor ( 1, 0, 0 );
|
|
$underarm_can_2.setColor ( 1, 0, 0 );
|
|
$underarm_can_2_light.setColor ( 1, 0, 0 );
|
|
|
|
//fingers to up pose
|
|
while ( underarm_fingers_state < 0 ){
|
|
$underarm_fingers.move ( UP, 1 );
|
|
sys.waitFor ($underarm_fingers);
|
|
underarm_fingers_state += 1;
|
|
}
|
|
|
|
//arm to storage pose
|
|
$underarm_upper.rotateOnce ( '0 0 90' );
|
|
$underarm_lower.rotateOnce ( '0 0 -90' );
|
|
sys.waitFor ($underarm_lower);
|
|
|
|
|
|
//howitzer setup
|
|
$how1_barrel.bind ($how1_base);
|
|
$how1_recep.bind ($how1_base);
|
|
$how1_catcher.bind ($how1_base);
|
|
$how1_base.rotateOnce ( '0 0 45' );
|
|
|
|
$how2_barrel.bind ($how2_base);
|
|
$how2_recep.bind ($how2_base);
|
|
$how2_catcher.bind ($how2_base);
|
|
$how2_base.rotateOnce ( '0 0 45' );
|
|
|
|
$how3_barrel.bind ($how3_base);
|
|
$how3_recep.bind ($how3_base);
|
|
$how3_catcher.bind ($how3_base);
|
|
$how3_base.rotateOnce ( '0 0 45' );
|
|
|
|
sys.waitFor($how1_base);
|
|
|
|
//crankshaft initial bind and rotate
|
|
$mc_pistrod1.bind ($mc_assembly_midpoint);
|
|
$mc_pistrod2.bind ($mc_assembly_midpoint);
|
|
$mc_pistrod3.bind ($mc_assembly_midpoint);
|
|
|
|
$mc_piston1.bind ($mc_assembly_midpoint);
|
|
$mc_piston2.bind ($mc_assembly_midpoint);
|
|
$mc_piston3.bind ($mc_assembly_midpoint);
|
|
|
|
$mc_crankshaft.bind ($mc_assembly_midpoint);
|
|
|
|
$mc_assembly_midpoint.rotateOnce ( '-135 0 0' );
|
|
sys.waitFor ($mc_assembly_midpoint);
|
|
|
|
//crankshaft binds and times
|
|
$mc_pistrod1.bind ($mc_piston1);
|
|
$mc_pistrod2.bind ($mc_piston2);
|
|
$mc_pistrod3.bind ($mc_piston3);
|
|
|
|
$mc_piston1.time (.125);
|
|
$mc_pistrod1.time (.125);
|
|
$mc_piston2.time (.125);
|
|
$mc_pistrod2.time (.125);
|
|
$mc_piston3.time (.125);
|
|
$mc_pistrod3.time (.125);
|
|
$mc_crankshaft.time (.125);
|
|
|
|
//little piston machine binds and times
|
|
$pistrod1.bind ($piston1);
|
|
$pistrod2.bind ($piston2);
|
|
$pistrod3.bind ($piston3);
|
|
|
|
$piston1.time (.125);
|
|
$pistrod1.time (.125);
|
|
$piston2.time (.125);
|
|
$pistrod2.time (.125);
|
|
$piston3.time (.125);
|
|
$pistrod3.time (.125);
|
|
$crankshaft.time (.125);
|
|
}
|
|
|
|
|
|
void safety_rails_down ()
|
|
{
|
|
//set rail 1 times
|
|
$safety_rail_1.time( 1 );
|
|
$safety_rail_1.accelTime( .25 );
|
|
$safety_rail_1.decelTime( .25 );
|
|
|
|
//rails down
|
|
$safety_rail_1.move( DOWN, 40 );
|
|
}
|
|
|
|
void safety_rails_up ()
|
|
{
|
|
//set rail 1 times
|
|
$safety_rail_1.time( 1 );
|
|
$safety_rail_1.accelTime( .25 );
|
|
$safety_rail_1.decelTime( .25 );
|
|
|
|
//rails up
|
|
$safety_rail_1.move( UP, 40 );
|
|
}
|
|
|
|
|
|
|
|
////////////////////////////////////////////////////
|
|
//
|
|
// Saftey Bridge AWAY PAIR
|
|
// this will put the bridge piece and it's partner
|
|
// in the away position
|
|
//
|
|
////////////////////////////////////////////////////
|
|
void saftey_bridge_away_pair(float bridge_number)
|
|
{
|
|
entity bh1, bh2, bf1, bf2;
|
|
|
|
bh1=sys.getEntity ("saftey_bridge_holder_" + bridge_number );
|
|
bh2=sys.getEntity ("saftey_bridge_holder_" + (bridge_number+1) );
|
|
|
|
bf1=sys.getEntity ("saftey_bridge_floorpiece_" + bridge_number );
|
|
bf2=sys.getEntity ("saftey_bridge_floorpiece_" + (bridge_number+1) );
|
|
|
|
bf1.bind (bh1);
|
|
bf2.bind (bh2);
|
|
|
|
bh1.startSoundShader ("mcu_support_2s", SND_CHANNEL_VOICE2);
|
|
|
|
bh1.rotateOnce ( '45 0 0' );
|
|
bh2.rotateOnce ( '-45 0 0' );
|
|
sys.waitFor (bh1);
|
|
|
|
bf1.unbind ();
|
|
bf2.unbind ();
|
|
|
|
bf1.startSoundShader ("mcu_safteybridge_02", SND_CHANNEL_VOICE2 );
|
|
|
|
bf1.move ( REL_FORWARD, 256 );
|
|
bf2.move ( REL_BACK, 256 );
|
|
sys.waitFor (bf1);
|
|
|
|
bh1.startSoundShader ("mcu_safteybridge_01", SND_CHANNEL_VOICE );
|
|
bh1.rotateOnce ( '-135 0 0' );
|
|
bh2.rotateOnce ( '135 0 0' );
|
|
sys.waitFor (bh1);
|
|
|
|
if (bridge_number==7){
|
|
//sys.print( "\nlast bridge is done\n" );
|
|
saftey_bridge_state = 0;
|
|
$saftey_bridge_gui.setGuiParm ( "gui_parm1" , 1);
|
|
//sys.print( "setting bridge gui parm \n" );
|
|
$underarm_centralight2.fadeInLight (1);
|
|
$underarm_centralight1.fadeInLight (1);
|
|
}
|
|
|
|
}
|
|
|
|
|
|
////////////////////////////////////////////////////
|
|
//
|
|
// Saftey Bridge FORTH_PAIR
|
|
// this will put the bridge piece and it's partner
|
|
// in the traversable position
|
|
//
|
|
////////////////////////////////////////////////////
|
|
void saftey_bridge_forth_pair(float bridge_number)
|
|
{
|
|
entity bh1, bh2, bf1, bf2;
|
|
|
|
bh1=sys.getEntity ("saftey_bridge_holder_" + bridge_number );
|
|
bh2=sys.getEntity ("saftey_bridge_holder_" + (bridge_number+1) );
|
|
|
|
bf1=sys.getEntity ("saftey_bridge_floorpiece_" + bridge_number );
|
|
bf2=sys.getEntity ("saftey_bridge_floorpiece_" + (bridge_number+1) );
|
|
|
|
|
|
|
|
bh1.startSoundShader ("mcu_safteybridge_01", SND_CHANNEL_VOICE );
|
|
bh1.rotateOnce ( '135 0 0' );
|
|
bh2.rotateOnce ( '-135 0 0' );
|
|
sys.waitFor (bh1);
|
|
|
|
bf1.unbind ();
|
|
bf2.unbind ();
|
|
|
|
bf1.startSoundShader ("mcu_safteybridge_02", SND_CHANNEL_VOICE2 );
|
|
bf1.move ( REL_BACK, 256 );
|
|
bf2.move ( REL_FORWARD, 256 );
|
|
|
|
sys.waitFor (bf1);
|
|
|
|
bf1.bind (bh1);
|
|
bf2.bind (bh2);
|
|
bh1.time ( 2 );
|
|
bh2.time ( 2 );
|
|
bh1.accelTime ( 1 );
|
|
bh2.accelTime ( 1 );
|
|
bh1.decelTime ( 0 );
|
|
bh2.decelTime ( 0 );
|
|
|
|
bh1.startSoundShader ("mcu_support_2s", SND_CHANNEL_VOICE2);
|
|
|
|
bh1.rotateOnce ( '-45 0 0' );
|
|
bh2.rotateOnce ( '45 0 0' );
|
|
sys.waitFor (bh1);
|
|
|
|
//bounce it
|
|
bh1.time( .15 );
|
|
bh2.time( .15 );
|
|
bh1.accelTime( 0 );
|
|
bh2.accelTime( 0 );
|
|
bh1.decelTime( .15 );
|
|
bh2.decelTime( .15 );
|
|
bh1.startSoundShader ("metalbounce_1", SND_CHANNEL_VOICE );
|
|
bh1.rotateOnce( '.75 0 0' );
|
|
bh2.rotateOnce( '-.75 0 0' );
|
|
sys.waitFor (bh1);
|
|
|
|
bh1.time( .15 );
|
|
bh2.time( .15 );
|
|
bh1.accelTime( .15 );
|
|
bh2.accelTime( .15 );
|
|
bh1.decelTime( 0 );
|
|
bh2.decelTime( 0 );
|
|
//bh1.startSoundShader ("metalbounce_2", SND_CHANNEL_VOICE2 );
|
|
bh1.rotateOnce( '-.75 0 0' );
|
|
bh2.rotateOnce( '.75 0 0' );
|
|
sys.waitFor (bh1);
|
|
|
|
bh1.time ( 2 );
|
|
bh2.time ( 2 );
|
|
bh1.accelTime ( .5 );
|
|
bh2.accelTime ( .5 );
|
|
bh1.decelTime ( .5 );
|
|
bh2.decelTime ( .5 );
|
|
bf1.unbind ();
|
|
bf2.unbind ();
|
|
|
|
if (bridge_number==1){
|
|
saftey_bridge_state = 1;
|
|
$saftey_bridge_gui.setGuiParm ( "gui_parm1" , 2);
|
|
$underarm_centralight2.fadeOutLight (1);
|
|
$underarm_centralight1.fadeOutLight (1);
|
|
}
|
|
}
|
|
|
|
////////////////////////////////////////////////////
|
|
//
|
|
// Saftey Bridge AWAY
|
|
// this will put the bridge in the away position
|
|
//
|
|
////////////////////////////////////////////////////
|
|
void saftey_bridge_away()
|
|
{
|
|
float thread1;
|
|
|
|
if (saftey_bridge_state == 1){
|
|
//set the bridge state to prevent reuse
|
|
$saftey_bridge_gui.setGuiParm ( "gui_parm1" , 0);
|
|
saftey_bridge_state = 9;
|
|
|
|
thread saftey_bridge_away_pair(1);
|
|
sys.wait (1);
|
|
|
|
thread saftey_bridge_away_pair(3);
|
|
sys.wait (1);
|
|
|
|
thread saftey_bridge_away_pair(5);
|
|
sys.wait (1);
|
|
|
|
thread1 = thread saftey_bridge_away_pair(7);
|
|
sys.waitForThread( thread1);
|
|
|
|
//trigger the aas
|
|
sys.trigger ($bridge_aas);
|
|
|
|
//rails up
|
|
safety_rails_up ();
|
|
|
|
} else {
|
|
//sys.print ("bridge already away\n");
|
|
;
|
|
}
|
|
}
|
|
|
|
|
|
|
|
////////////////////////////////////////////////////
|
|
//
|
|
// Saftey Bridge FORTH
|
|
// this will put the bridge in the traversalbe position
|
|
//
|
|
////////////////////////////////////////////////////
|
|
void saftey_bridge_forth()
|
|
{
|
|
float thread1;
|
|
//sys.print( "saftey_bridge_state = " + saftey_bridge_state + "\n" );
|
|
if (saftey_bridge_state == 0){
|
|
|
|
//rails down
|
|
safety_rails_down ();
|
|
|
|
//set the bridge state to prevent reuse
|
|
$saftey_bridge_gui.setGuiParm ( "gui_parm1" , 0);
|
|
saftey_bridge_state = 9;
|
|
|
|
thread saftey_bridge_forth_pair(7);
|
|
sys.wait (1);
|
|
|
|
thread saftey_bridge_forth_pair(5);
|
|
sys.wait (1);
|
|
|
|
thread saftey_bridge_forth_pair(3);
|
|
sys.wait (1);
|
|
|
|
thread1 = thread saftey_bridge_forth_pair(1);
|
|
sys.waitForThread( thread1);
|
|
|
|
//trigger the aas
|
|
sys.trigger ($bridge_aas);
|
|
//sys.print ("bridge aas should be on\n");
|
|
|
|
} else {
|
|
//sys.print ("bridge already out\n");
|
|
;
|
|
}
|
|
}
|
|
|
|
|
|
////////////////////////////////////////////////////
|
|
//
|
|
// Rotary movement - the two big rotating
|
|
// light chambers
|
|
//
|
|
////////////////////////////////////////////////////
|
|
void rotary()
|
|
{
|
|
$fly_around_light.bind ($fly_around_main);
|
|
$fly_around_speaker.bind ($fly_around_main);
|
|
$fly_around_end.bind ($fly_around_main);
|
|
|
|
$fly_around_main.rotate ( '0 100 0' );
|
|
$fly_around_middle.rotate ( '0 100 0' );
|
|
|
|
$fly_around2_light.bind ($fly_around2_main);
|
|
$fly_around2_speaker.bind ($fly_around2_main);
|
|
$fly_around2_end.bind ($fly_around2_main);
|
|
|
|
$fly_around2_main.rotate ( '0 -100 0' );
|
|
$fly_around2_middle.rotate ( '0 -100 0' );
|
|
}
|
|
|
|
|
|
|
|
////////////////////////////////////////////////////
|
|
//
|
|
// howitzer #1 movement ... this is the 1st of
|
|
// the big piston like rods
|
|
//
|
|
////////////////////////////////////////////////////
|
|
void howitzer_1()
|
|
{
|
|
//random numbers to keep howitzers unsynced
|
|
float ran1,ran2;
|
|
ran1=sys.random(1);
|
|
ran2=sys.random(1);
|
|
|
|
while (1){
|
|
//move the catcher up 8 for the recoil action
|
|
$how1_catcher.time (.4);
|
|
$how1_catcher.accelTime (.2);
|
|
$how1_catcher.decelTime (.2);
|
|
|
|
$how1_barrel.time (.4);
|
|
$how1_barrel.accelTime (.2);
|
|
$how1_barrel.decelTime (.2);
|
|
|
|
$how1_barrel.move ( UP, 10 );
|
|
$how1_catcher.move ( UP, 10 );
|
|
sys.waitFor ($how1_barrel);
|
|
sys.wait (ran1+1);
|
|
|
|
//move the barrel upwards slowly
|
|
$how1_barrel.time (3+ran2);
|
|
$how1_barrel.accelTime (0);
|
|
$how1_barrel.decelTime (2);
|
|
|
|
$how1_barrel.startSoundShader ("mset2_movement", SND_CHANNEL_VOICE);
|
|
$how1_barrel.move ( UP, 128 );
|
|
sys.waitFor ($how1_barrel);
|
|
$how1_barrel.stopSound ( SND_CHANNEL_VOICE, false );
|
|
$how1_barrel.startSoundShader ("mset2_stop", SND_CHANNEL_VOICE2);
|
|
|
|
//fire the barrel backwards quickly
|
|
$how1_barrel.time (.25);
|
|
$how1_barrel.accelTime (.2);
|
|
$how1_barrel.decelTime (0);
|
|
|
|
|
|
$how1_barrel.move ( DOWN, 128 );
|
|
sys.waitFor ($how1_barrel);
|
|
|
|
$how1_barrel.startSoundShader ("msmall_pounder", SND_CHANNEL_ANY);
|
|
|
|
|
|
//catch the barrel in the catcher... down 8
|
|
$how1_catcher.time (.1);
|
|
$how1_catcher.accelTime (0);
|
|
$how1_catcher.decelTime (.1);
|
|
|
|
$how1_barrel.time (.1);
|
|
$how1_barrel.accelTime (0);
|
|
$how1_barrel.decelTime (.1);
|
|
|
|
$how1_barrel.move ( DOWN, 10 );
|
|
$how1_catcher.move ( DOWN, 10 );
|
|
//sys.trigger ($how1_steam_1);
|
|
sys.waitFor ($how1_barrel);
|
|
}
|
|
}
|
|
|
|
|
|
////////////////////////////////////////////////////
|
|
//
|
|
// howitzer #2 movement ... this is the 2nd of
|
|
// the big piston like rods
|
|
//
|
|
////////////////////////////////////////////////////
|
|
void howitzer_2()
|
|
{
|
|
//random numbers to keep howitzers unsynced
|
|
float ran1,ran2;
|
|
ran1=sys.random(1);
|
|
ran2=sys.random(1);
|
|
|
|
while (1){
|
|
//move the catcher up 8 for the recoil action
|
|
$how2_catcher.time (.4);
|
|
$how2_catcher.accelTime (.2);
|
|
$how2_catcher.decelTime (.2);
|
|
|
|
$how2_barrel.time (.4);
|
|
$how2_barrel.accelTime (.2);
|
|
$how2_barrel.decelTime (.2);
|
|
|
|
$how2_barrel.move ( UP, 10 );
|
|
$how2_catcher.move ( UP, 10 );
|
|
sys.waitFor ($how2_barrel);
|
|
sys.wait (ran1+1);
|
|
|
|
//move the barrel upwards slowly
|
|
$how2_barrel.time (3+ran2);
|
|
$how2_barrel.accelTime (0);
|
|
$how2_barrel.decelTime (2);
|
|
|
|
$how2_barrel.startSoundShader ("mset1_movement", SND_CHANNEL_VOICE);
|
|
$how2_barrel.move ( UP, 128 );
|
|
sys.waitFor ($how2_barrel);
|
|
$how2_barrel.stopSound ( SND_CHANNEL_VOICE, false );
|
|
$how2_barrel.startSoundShader ("mset1_stop", SND_CHANNEL_VOICE2);
|
|
|
|
//fire the barrel backwards quickly
|
|
$how2_barrel.time (.25);
|
|
$how2_barrel.accelTime (.2);
|
|
$how2_barrel.decelTime (0);
|
|
|
|
$how2_barrel.startSoundShader ("msmall_pounder", SND_CHANNEL_ANY);
|
|
$how2_barrel.move ( DOWN, 128 );
|
|
sys.waitFor ($how2_barrel);
|
|
|
|
//catch the barrel in the catcher... down 8
|
|
$how2_catcher.time (.1);
|
|
$how2_catcher.accelTime (0);
|
|
$how2_catcher.decelTime (.1);
|
|
|
|
$how2_barrel.time (.1);
|
|
$how2_barrel.accelTime (0);
|
|
$how2_barrel.decelTime (.1);
|
|
|
|
$how2_barrel.move ( DOWN, 10 );
|
|
$how2_catcher.move ( DOWN, 10 );
|
|
//sys.trigger ($how2_steam_1);
|
|
sys.waitFor ($how2_barrel);
|
|
}
|
|
}
|
|
|
|
|
|
////////////////////////////////////////////////////
|
|
//
|
|
// howitzer #3 movement ... this is the 3rd of
|
|
// the big piston like rods
|
|
//
|
|
////////////////////////////////////////////////////
|
|
void howitzer_3()
|
|
{
|
|
//random numbers to keep howitzers unsynced
|
|
float ran1,ran2;
|
|
ran1=sys.random(.5);
|
|
ran2=sys.random(.35);
|
|
|
|
while (1){
|
|
//move the catcher up 8 for the recoil action
|
|
$how3_catcher.time (.4);
|
|
$how3_catcher.accelTime (.2);
|
|
$how3_catcher.decelTime (.2);
|
|
|
|
$how3_barrel.time (.4);
|
|
$how3_barrel.accelTime (.2);
|
|
$how3_barrel.decelTime (.2);
|
|
|
|
$how3_barrel.move ( UP, 10 );
|
|
$how3_catcher.move ( UP, 10 );
|
|
sys.waitFor ($how3_barrel);
|
|
sys.wait (ran1+1);
|
|
|
|
//move the barrel upwards slowly
|
|
$how3_barrel.time (3+ran2);
|
|
$how3_barrel.accelTime (0);
|
|
$how3_barrel.decelTime (2);
|
|
|
|
$how3_barrel.startSoundShader ("mset2_movement", SND_CHANNEL_VOICE);
|
|
$how3_barrel.move ( UP, 128 );
|
|
sys.waitFor ($how3_barrel);
|
|
$how3_barrel.stopSound ( SND_CHANNEL_VOICE, false );
|
|
$how3_barrel.startSoundShader ("mset2_stop", SND_CHANNEL_VOICE2);
|
|
|
|
//fire the barrel backwards quickly
|
|
$how3_barrel.time (.25);
|
|
$how3_barrel.accelTime (.2);
|
|
$how3_barrel.decelTime (0);
|
|
|
|
$how3_barrel.startSoundShader ("msmall_pounder", SND_CHANNEL_ANY);
|
|
$how3_barrel.move ( DOWN, 128 );
|
|
sys.waitFor ($how3_barrel);
|
|
|
|
//catch the barrel in the catcher... down 8
|
|
$how3_catcher.time (.1);
|
|
$how3_catcher.accelTime (0);
|
|
$how3_catcher.decelTime (.1);
|
|
|
|
$how3_barrel.time (.1);
|
|
$how3_barrel.accelTime (0);
|
|
$how3_barrel.decelTime (.1);
|
|
|
|
$how3_barrel.move ( DOWN, 10 );
|
|
$how3_catcher.move ( DOWN, 10 );
|
|
//sys.trigger ($how3_steam_1);
|
|
sys.waitFor ($how3_barrel);
|
|
}
|
|
}
|
|
|
|
|
|
|
|
////////////////////////////////////////////////////
|
|
//
|
|
// point to point pipe piston movement
|
|
//
|
|
////////////////////////////////////////////////////
|
|
void pipe_piston_move()
|
|
{
|
|
//setup
|
|
$pipe_piston_p2p.time (.4);
|
|
$pipe_piston_p2p.accelTime (.1);
|
|
$pipe_piston_p2p.decelTime (.15);
|
|
$pipe_piston_p1p.time (.7);
|
|
$pipe_piston_p1p.accelTime (.1);
|
|
$pipe_piston_p1p.decelTime (.15);
|
|
$pipe_piston_p3p.time (.35);
|
|
$pipe_piston_p3p.accelTime (.1);
|
|
$pipe_piston_p3p.decelTime (.15);
|
|
|
|
while (1){
|
|
$pipe_piston_p1p.moveTo ( $p1p1 );
|
|
$pipe_piston_p2p.moveTo ( $p2p2 );
|
|
$pipe_piston_p3p.moveTo ( $p3p1 );
|
|
sys.waitFor($pipe_piston_p2p);
|
|
|
|
$pipe_piston_p1p.moveTo ( $p1p2 );
|
|
$pipe_piston_p2p.moveTo ( $p2p1 );
|
|
$pipe_piston_p3p.moveTo ( $p3p2 );
|
|
sys.waitFor($pipe_piston_p2p);
|
|
}
|
|
}
|
|
|
|
|
|
|
|
////////////////////////////////////////////////////
|
|
//
|
|
// piston movement
|
|
//
|
|
////////////////////////////////////////////////////
|
|
void crankshaft_move ()
|
|
{
|
|
while (1) //begin while
|
|
{
|
|
$mc_piston1.move ( REL_UP, 30 );
|
|
$mc_pistrod1.rotateOnce ( '26.56 0 0' );
|
|
$mc_piston2.move ( REL_DOWN, 30 );
|
|
$mc_pistrod2.rotateOnce ( '-26.56 0 0' );
|
|
$mc_piston3.move ( REL_UP, 30 );
|
|
$mc_pistrod3.rotateOnce ( '26.56 0 0' );
|
|
$mc_crankshaft.rotateOnce ( '90 0 0' );
|
|
sys.waitFor ($mc_piston1);
|
|
|
|
$mc_piston1.move ( REL_UP, 30 );
|
|
$mc_pistrod1.rotateOnce ( '-26.56 0 0' );
|
|
$mc_piston2.move ( REL_DOWN, 30 );
|
|
$mc_pistrod2.rotateOnce ( '26.56 0 0' );
|
|
$mc_piston3.move ( REL_UP, 30 );
|
|
$mc_pistrod3.rotateOnce ( '-26.56 0 0' );
|
|
$mc_crankshaft.rotateOnce ( '90 0 0' );
|
|
sys.waitFor ($mc_piston1);
|
|
|
|
$mc_piston1.move ( REL_DOWN, 30 );
|
|
$mc_pistrod1.rotateOnce ( '-26.56 0 0' );
|
|
$mc_piston2.move ( REL_UP, 30 );
|
|
$mc_pistrod2.rotateOnce ( '26.56 0 0' );
|
|
$mc_piston3.move ( REL_DOWN, 30 );
|
|
$mc_pistrod3.rotateOnce ( '-26.56 0 0' );
|
|
$mc_crankshaft.rotateOnce ( '90 0 0' );
|
|
sys.waitFor ($mc_piston1);
|
|
|
|
$mc_piston1.move ( REL_DOWN, 30 );
|
|
$mc_pistrod1.rotateOnce ( '26.56 0 0' );
|
|
$mc_piston2.move ( REL_UP, 30 );
|
|
$mc_pistrod2.rotateOnce ( '-26.56 0 0' );
|
|
$mc_piston3.move ( REL_DOWN, 30 );
|
|
$mc_pistrod3.rotateOnce ( '26.56 0 0' );
|
|
$mc_crankshaft.rotateOnce ( '90 0 0' );
|
|
sys.waitFor ($mc_pistrod1);
|
|
} //end while
|
|
}
|
|
|
|
|
|
|
|
////////////////////////////////////////////////////
|
|
//
|
|
// little first room machine
|
|
//
|
|
////////////////////////////////////////////////////
|
|
void lilfrm_move ()
|
|
{
|
|
$lilfrm_part1.time (.25);
|
|
$lilfrm_part2.time (.4);
|
|
$lilfrm_part3.time (.3);
|
|
$lilfrm_part4.time (.35);
|
|
$lilfrm_part5.time (.4);
|
|
|
|
while (1) //begin main while
|
|
{
|
|
$lilfrm_part1.rotateOnce ( '0 0 2' );
|
|
$lilfrm_part2.rotateOnce ( '0 0 2' );
|
|
$lilfrm_part3.rotateOnce ( '0 0 -2' );
|
|
$lilfrm_part4.rotateOnce ( '0 0 -2' );
|
|
$lilfrm_part5.rotateOnce ( '0 0 -2' );
|
|
sys.waitFor ($lilfrm_part1);
|
|
$lilfrm_part1.rotateOnce ( '0 0 -2' );
|
|
$lilfrm_part2.rotateOnce ( '0 0 -2' );
|
|
$lilfrm_part3.rotateOnce ( '0 0 2' );
|
|
$lilfrm_part4.rotateOnce ( '0 0 2' );
|
|
$lilfrm_part5.rotateOnce ( '0 0 2' );
|
|
sys.waitFor ($lilfrm_part1);
|
|
} //end main while
|
|
}
|
|
|
|
|
|
|
|
////////////////////////////////////////////////////
|
|
//
|
|
// red light thing
|
|
//
|
|
////////////////////////////////////////////////////
|
|
void redthing_move ()
|
|
{
|
|
$redthing_mover.time ( 1 );
|
|
$redthing_mover.accelTime ( .25 );
|
|
$redthing_mover.decelTime ( .25 );
|
|
|
|
float ran1;
|
|
|
|
while (1) //begin main while
|
|
{
|
|
ran1=sys.random(3);
|
|
|
|
if (ran1<1){
|
|
$redthing_mover.moveTo ($redlightpoint_1);
|
|
sys.waitFor ($redthing_mover);
|
|
} else if (ran1<2) {
|
|
$redthing_mover.moveTo ($redlightpoint_2);
|
|
sys.waitFor ($redthing_mover);
|
|
} else {
|
|
$redthing_mover.moveTo ($redlightpoint_3);
|
|
sys.waitFor ($redthing_mover);
|
|
}
|
|
|
|
} //end main while
|
|
}
|
|
|
|
|
|
////////////////////////////////////////////////////
|
|
//
|
|
// underarm_can_1_manip
|
|
//
|
|
////////////////////////////////////////////////////
|
|
void underarm_can_1_manip()
|
|
{
|
|
if (underarm_work_state == 0){
|
|
return;
|
|
}
|
|
|
|
//move to sopt can 1
|
|
|
|
thread mover_startsound ($underarm_carrier);
|
|
|
|
$underarm_carrier.moveTo ($underarm_spot_can1);
|
|
sys.waitFor ($underarm_carrier);
|
|
mover_stopsound ($underarm_carrier);
|
|
|
|
|
|
if (underarm_work_state == 0){
|
|
return;
|
|
}
|
|
|
|
//arm down
|
|
$underarm_upper.startSoundShader ("servo_1s_01", SND_CHANNEL_VOICE );
|
|
$underarm_upper.rotateOnce ( '0 0 -90' );
|
|
$underarm_lower.startSoundShader ("servo_1s_02", SND_CHANNEL_VOICE );
|
|
$underarm_lower.rotateOnce ( '0 0 90' );
|
|
sys.waitFor ($underarm_lower);
|
|
|
|
//fingers to down pose
|
|
$underarm_fingers.startSoundShader ("mech_fingers_1_5s", SND_CHANNEL_VOICE );
|
|
while ( underarm_fingers_state > -64 ){
|
|
$underarm_fingers.move ( DOWN, 1 );
|
|
sys.waitFor ($underarm_fingers);
|
|
underarm_fingers_state -= 1;
|
|
}
|
|
|
|
//bind can 1 to fingers
|
|
$underarm_can_1.bind ($underarm_fingers);
|
|
|
|
//fingers to up pose
|
|
$underarm_tube.startSoundShader ("airwhomp", SND_CHANNEL_VOICE2 );
|
|
$underarm_fingers.startSoundShader ("mech_fingers_1_5s", SND_CHANNEL_VOICE );
|
|
while ( underarm_fingers_state < 0 ){
|
|
$underarm_fingers.move ( UP, 1 );
|
|
sys.waitFor ($underarm_fingers);
|
|
underarm_fingers_state += 1;
|
|
}
|
|
|
|
//do something interesting
|
|
$underarm_tube.startSoundShader ("something_interesting", SND_CHANNEL_VOICE );
|
|
thread crossFadeEnt ($underarm_tube, '1 0 0', '.5 1 1', 1.75);
|
|
thread crossFadeEnt ($underarm_tube_light, '1 0 0', '.5 1 1', 1.75);
|
|
thread crossFadeEnt ($underarm_can_1, '1 0 0', '.5 1 1', 1.75);
|
|
thread crossFadeEnt ($underarm_can_1_light, '1 0 0', '.5 1 1', 1.75);
|
|
|
|
sys.wait (2);
|
|
|
|
//fingers to down pose
|
|
$underarm_fingers.startSoundShader ("mech_fingers_1_5s", SND_CHANNEL_VOICE );
|
|
$underarm_tube.startSoundShader ("something_interesting_2", SND_CHANNEL_VOICE );
|
|
while ( underarm_fingers_state > -64 ){
|
|
$underarm_fingers.move ( DOWN, 1 );
|
|
sys.waitFor ($underarm_fingers);
|
|
underarm_fingers_state -= 1;
|
|
}
|
|
|
|
//unbind can 1 from fingers
|
|
$underarm_can_1.unbind ();
|
|
|
|
|
|
//fingers to up pose
|
|
|
|
|
|
$underarm_fingers.startSoundShader ("mech_fingers_1_5s", SND_CHANNEL_VOICE );
|
|
while ( underarm_fingers_state < 0 ){
|
|
$underarm_fingers.move ( UP, 1 );
|
|
sys.waitFor ($underarm_fingers);
|
|
underarm_fingers_state += 1;
|
|
}
|
|
|
|
//turn tube back to red
|
|
|
|
thread crossFadeEnt ($underarm_tube, '.5 1 1', '1 0 0', 1.75);
|
|
thread crossFadeEnt ($underarm_tube_light, '.5 1 1', '1 0 0', 1.75);
|
|
thread crossFadeEnt ($underarm_can_1, '.5 1 1', '1 0 0', 2);
|
|
thread crossFadeEnt ($underarm_can_1_light, '.5 1 1', '1 0 0', 2);
|
|
|
|
//arm up
|
|
$underarm_upper.startSoundShader ("servo_1s_01", SND_CHANNEL_VOICE );
|
|
$underarm_upper.rotateOnce ( '0 0 90' );
|
|
$underarm_lower.startSoundShader ("servo_1s_02", SND_CHANNEL_VOICE );
|
|
$underarm_lower.rotateOnce ( '0 0 -90' );
|
|
sys.waitFor ($underarm_lower);
|
|
}
|
|
|
|
|
|
|
|
////////////////////////////////////////////////////
|
|
//
|
|
// underarm_can_2_manip
|
|
//
|
|
////////////////////////////////////////////////////
|
|
void underarm_can_2_manip()
|
|
{
|
|
if (underarm_work_state == 0){
|
|
return;
|
|
}
|
|
|
|
//move to sopt can 2
|
|
|
|
thread mover_startsound ($underarm_carrier);
|
|
|
|
$underarm_carrier.moveTo ($underarm_spot_can2);
|
|
sys.waitFor ($underarm_carrier);
|
|
mover_stopsound ($underarm_carrier);
|
|
|
|
if (underarm_work_state == 0){
|
|
return;
|
|
}
|
|
|
|
//arm down
|
|
$underarm_upper.startSoundShader ("servo_1s_01", SND_CHANNEL_VOICE );
|
|
$underarm_upper.rotateOnce ( '0 0 -90' );
|
|
$underarm_lower.startSoundShader ("servo_1s_02", SND_CHANNEL_VOICE );
|
|
$underarm_lower.rotateOnce ( '0 0 90' );
|
|
sys.waitFor ($underarm_lower);
|
|
|
|
//fingers to down pose
|
|
while ( underarm_fingers_state > -64 ){
|
|
$underarm_fingers.move ( DOWN, 1 );
|
|
sys.waitFor ($underarm_fingers);
|
|
underarm_fingers_state -= 1;
|
|
}
|
|
|
|
//bind can 2 to fingers
|
|
$underarm_can_2.bind ($underarm_fingers);
|
|
|
|
//fingers to up pose
|
|
$underarm_tube.startSoundShader ("airwhomp", SND_CHANNEL_VOICE2 );
|
|
$underarm_fingers.startSoundShader ("mech_fingers_1_5s", SND_CHANNEL_VOICE );
|
|
while ( underarm_fingers_state < 0 ){
|
|
$underarm_fingers.move ( UP, 1 );
|
|
sys.waitFor ($underarm_fingers);
|
|
underarm_fingers_state += 1;
|
|
}
|
|
|
|
//do something interesting
|
|
$underarm_tube.startSoundShader ("something_interesting", SND_CHANNEL_VOICE );
|
|
thread crossFadeEnt ($underarm_tube, '1 0 0', '.5 1 1', 1.75);
|
|
thread crossFadeEnt ($underarm_tube_light, '1 0 0', '.5 1 1', 1.75);
|
|
thread crossFadeEnt ($underarm_can_2, '1 0 0', '.5 1 1', 1.75);
|
|
thread crossFadeEnt ($underarm_can_2_light, '1 0 0', '.5 1 1', 1.75);
|
|
|
|
sys.wait (2);
|
|
|
|
//fingers to down pose
|
|
$underarm_fingers.startSoundShader ( "mech_fingers_1_5s", SND_CHANNEL_VOICE );
|
|
$underarm_tube.startSoundShader ( "something_interesting_2", SND_CHANNEL_VOICE );
|
|
while ( underarm_fingers_state > -64 ){
|
|
$underarm_fingers.move ( DOWN, 1 );
|
|
sys.waitFor ($underarm_fingers);
|
|
underarm_fingers_state -= 1;
|
|
}
|
|
|
|
//unbind can 2 from fingers
|
|
$underarm_can_2.unbind ();
|
|
|
|
//fingers to up pose
|
|
|
|
|
|
$underarm_fingers.startSoundShader ("mech_fingers_1_5s", SND_CHANNEL_VOICE );
|
|
while ( underarm_fingers_state < 0 ){
|
|
$underarm_fingers.move ( UP, 1 );
|
|
sys.waitFor ($underarm_fingers);
|
|
underarm_fingers_state += 1;
|
|
}
|
|
|
|
//turn tube back to red
|
|
|
|
thread crossFadeEnt ($underarm_tube, '.5 1 1', '1 0 0', 1.75);
|
|
thread crossFadeEnt ($underarm_tube_light, '.5 1 1', '1 0 0', 1.75);
|
|
thread crossFadeEnt ($underarm_can_2, '.5 1 1', '1 0 0', 2);
|
|
thread crossFadeEnt ($underarm_can_2_light, '.5 1 1', '1 0 0', 2);
|
|
|
|
//arm up
|
|
$underarm_upper.startSoundShader ("servo_1s_01", SND_CHANNEL_VOICE );
|
|
$underarm_upper.rotateOnce ( '0 0 90' );
|
|
$underarm_lower.startSoundShader ("servo_1s_02", SND_CHANNEL_VOICE );
|
|
$underarm_lower.rotateOnce ( '0 0 -90' );
|
|
sys.waitFor ($underarm_lower);
|
|
}
|
|
|
|
////////////////////////////////////////////////////
|
|
//
|
|
// underarm_store
|
|
// stops underarm from doing it's thing and
|
|
// then moves it away to it's store spot
|
|
//
|
|
////////////////////////////////////////////////////
|
|
void underarm_store ()
|
|
{
|
|
//move to corner spot
|
|
$underarm_carrier.moveTo ($underarm_spot_corner);
|
|
sys.waitFor ($underarm_carrier);
|
|
|
|
//rotate around corner
|
|
$underarm_carrier.rotateOnce ( '0 90 0' );
|
|
sys.waitFor ($underarm_carrier);
|
|
|
|
//move to storage spot
|
|
$underarm_carrier.moveTo ($underarm_spot_store);
|
|
sys.waitFor ($underarm_carrier);
|
|
}
|
|
|
|
|
|
|
|
////////////////////////////////////////////////////
|
|
//
|
|
// underarm_work
|
|
// arm moves from spot to spot and does it's thing
|
|
//
|
|
////////////////////////////////////////////////////
|
|
void underarm_work ()
|
|
{
|
|
while ( underarm_work_state == 1 ){
|
|
map_mc_underground::underarm_can_1_manip();
|
|
sys.wait(.1);
|
|
map_mc_underground::underarm_can_2_manip();
|
|
sys.wait(.1);
|
|
}
|
|
//sys.print ("Underarm finishing it's work before storage...\n");
|
|
|
|
map_mc_underground::underarm_store ();
|
|
map_mc_underground::saftey_bridge_forth();
|
|
}
|
|
|
|
|
|
|
|
////////////////////////////////////////////////////
|
|
//
|
|
// underarm_work_state_off
|
|
// state that tells underarm to stop working
|
|
//
|
|
////////////////////////////////////////////////////
|
|
void underarm_work_state_off ()
|
|
{
|
|
sys.wait( 1 );
|
|
underarm_work_state = 0;
|
|
|
|
sys.wait( 2 );
|
|
sys.trigger( $computer_bridgeext7sec_speaker );
|
|
}
|
|
|
|
////////////////////////////////////////////////////
|
|
//
|
|
// underarm_work_state_on
|
|
// state that tells underarm to stop working
|
|
//
|
|
////////////////////////////////////////////////////
|
|
void underarm_work_state_on ()
|
|
{
|
|
//bridge away
|
|
map_mc_underground::saftey_bridge_away ();
|
|
|
|
//bring arm back around the bend
|
|
//move to corner spot
|
|
$underarm_carrier.moveTo ($underarm_spot_corner);
|
|
sys.waitFor ($underarm_carrier);
|
|
|
|
//rotate around corner
|
|
$underarm_carrier.rotateOnce ( '0 -90 0' );
|
|
sys.waitFor ($underarm_carrier);
|
|
|
|
//underarm back to work
|
|
underarm_work_state = 1;
|
|
map_mc_underground::underarm_work();
|
|
}
|
|
|
|
|
|
////////////////////////////////////////////////////
|
|
//
|
|
// Crane load damage off
|
|
//
|
|
////////////////////////////////////////////////////
|
|
void crane_load_damage_off ()
|
|
{
|
|
//turn the damage off the movers
|
|
$crane_box1.enableDamage( 0 );
|
|
$crane_box2.enableDamage( 0 );
|
|
$crane_box3.enableDamage( 0 );
|
|
$crane_box4.enableDamage( 0 );
|
|
$crane_beam1.enableDamage( 0 );
|
|
$crane_beam2.enableDamage( 0 );
|
|
$crane_beam3.enableDamage( 0 );
|
|
$crane_beam4.enableDamage( 0 );
|
|
$crane_beam5.enableDamage( 0 );
|
|
}
|
|
|
|
|
|
////////////////////////////////////////////////////
|
|
//
|
|
// Crane drop the load
|
|
//
|
|
////////////////////////////////////////////////////
|
|
void crane_drop ()
|
|
{
|
|
$platform.startSoundShader ("wiresnap", SND_CHANNEL_BODY );
|
|
$breaking_wires.remove();
|
|
|
|
sys.trigger ($speaker_crane_fall);
|
|
|
|
$platform.time( 1.0 );
|
|
$platform.accelTime( 0.1 );
|
|
$platform.decelTime( 0.5 );
|
|
|
|
$platform.startSoundShader ("steelswing_01", SND_CHANNEL_VOICE );
|
|
|
|
$platform.rotateOnce( '-150 0 0' ); // Swing Sound
|
|
sys.waitFor( $platform );
|
|
|
|
//trigger the rail to break
|
|
sys.trigger($pi_cave_rail);
|
|
|
|
$wires.time( 1.5 );
|
|
$wires.accelTime( 0.25 );
|
|
$wires.decelTime( 0.25 );
|
|
$platform.time( 1.5 );
|
|
$platform.accelTime( 0.25 );
|
|
$platform.decelTime( 0.25 );
|
|
$wires.rotateOnce( '50 0 0' );
|
|
|
|
$platform.startSoundShader ("steelswing_02", SND_CHANNEL_VOICE2 );
|
|
|
|
$platform.rotateOnce( '105 0 0' ); // Swing Sound
|
|
sys.waitFor( $platform );
|
|
|
|
$wires.time( 1.1 );
|
|
$wires.accelTime( 0.2 );
|
|
$wires.decelTime( 0.2 );
|
|
$platform.time( 1.1 );
|
|
$platform.accelTime( 0.2 );
|
|
$platform.decelTime( 0.2 );
|
|
$wires.rotateOnce( '-30 0 0' );
|
|
|
|
$platform.startSoundShader ("steelswing_03", SND_CHANNEL_BODY2 );
|
|
|
|
$platform.rotateOnce( '-75 0 0' ); // Swing sound
|
|
|
|
sys.waitFor( $platform );
|
|
|
|
$wires.time( 0.8 );
|
|
$wires.accelTime( 0.15 );
|
|
$wires.decelTime( 0.15 );
|
|
$platform.time( 0.6 );
|
|
$platform.accelTime( 0.1 );
|
|
$platform.decelTime( 0.1 );
|
|
$wires.rotateOnce( '10 0 0' );
|
|
|
|
$platform.startSoundShader ("steelswing_04", SND_CHANNEL_VOICE );
|
|
|
|
$platform.rotateOnce( '30 0 0' ); // Swing sound
|
|
sys.waitFor( $platform );
|
|
|
|
//turn the damage off the movers
|
|
thread map_mc_underground::crane_load_damage_off();
|
|
|
|
$platform.time( 1.0 );
|
|
$platform.accelTime( 0.2 );
|
|
$platform.decelTime( 0.2 );
|
|
|
|
$platform.startSoundShader ("steelswing_05", SND_CHANNEL_VOICE );
|
|
|
|
$platform.rotateOnce( '-30 0 0' ); // Swing sound
|
|
sys.waitFor( $platform );
|
|
|
|
}
|
|
|
|
|
|
////////////////////////////////////////////////////
|
|
//
|
|
// Open airlock door
|
|
//
|
|
////////////////////////////////////////////////////
|
|
void airlock_door_open( float airlock, float doornum )
|
|
{
|
|
entity ent;
|
|
entity entdoorr, entdoorl;
|
|
entity speaker;
|
|
string door1;
|
|
string door2;
|
|
float portalstate;
|
|
float movedist;
|
|
|
|
if ( doornum == 2 ) {
|
|
door1 = "airlock" + airlock + "_door2";
|
|
door2 = "airlock" + airlock + "_door1";
|
|
portalstate = 2;
|
|
movedist = -16;
|
|
} else {
|
|
door1 = "airlock" + airlock + "_door1";
|
|
door2 = "airlock" + airlock + "_door2";
|
|
portalstate = 1;
|
|
movedist = 16;
|
|
}
|
|
|
|
//turn door1 light on and door2 light off
|
|
ent=sys.getEntity( door2 + "_light" );
|
|
thread crossFadeEnt( ent, '.84 .84 .9', '0.37 0.05 0.01', 1 );
|
|
|
|
sys.wait(1);
|
|
|
|
ent=sys.getEntity( door1 + "_light" );
|
|
thread crossFadeEnt( ent, '0.37 0.05 0.01', '.84 .84 .9', 1 );
|
|
|
|
//move the 4 locks to unlock position
|
|
ent=sys.getEntity( door1 + "_top_lock" );
|
|
ent.time( 0.25 );
|
|
ent.move( UP, 15 );
|
|
|
|
speaker=sys.getEntity( "speaker_" + door1 + "_bottom_lock" );
|
|
sys.trigger( speaker );
|
|
|
|
ent=sys.getEntity( door1 + "_bottom_lock" );
|
|
ent.time( 0.25 );
|
|
ent.move( DOWN, 15 );
|
|
|
|
sys.waitFor( ent );
|
|
|
|
speaker=sys.getEntity( "speaker_" + door1 + "_left_lock" );
|
|
sys.trigger( speaker );
|
|
|
|
ent=sys.getEntity( door1 + "_left_lock" );
|
|
ent.time( 0.75 );
|
|
ent.move( SOUTH, movedist );
|
|
|
|
speaker=sys.getEntity( "speaker_" + door1 + "_right_lock" );
|
|
sys.trigger( speaker );
|
|
|
|
ent=sys.getEntity( door1 + "_right_lock" );
|
|
ent.time( 0.75 );
|
|
ent.move( SOUTH, movedist );
|
|
|
|
sys.waitFor( ent );
|
|
|
|
//open doors
|
|
speaker=sys.getEntity( "speaker_" + door1 + "_open" );
|
|
sys.trigger( speaker );
|
|
|
|
entdoorl=sys.getEntity( door1 + "_left" );
|
|
entdoorl.time( 1.2 );
|
|
entdoorl.rotateOnce( '0 45 0' );
|
|
|
|
entdoorr=sys.getEntity( door1 + "_right" );
|
|
entdoorr.time( 1.2 );
|
|
entdoorr.rotateOnce( '0 -45 0' );
|
|
|
|
//trigger the portal
|
|
ent=sys.getEntity( door1 + "_portal" );
|
|
sys.trigger( ent );
|
|
|
|
sys.waitFor( entdoorr );
|
|
sys.waitFor( entdoorl );
|
|
|
|
//set airlock state
|
|
ent=sys.getEntity( "airlock" + airlock + "_door1_portal" );
|
|
ent.setKey( "state", portalstate );
|
|
|
|
}
|
|
|
|
|
|
////////////////////////////////////////////////////
|
|
//
|
|
// Close airlock door
|
|
//
|
|
////////////////////////////////////////////////////
|
|
void airlock_door_close(float airlock, float doornum )
|
|
{
|
|
entity ent;
|
|
entity entdoorr, entdoorl;
|
|
entity speaker;
|
|
string door;
|
|
float movedist;
|
|
|
|
if ( doornum == 2 ) {
|
|
door = "airlock" + airlock + "_door2";
|
|
movedist = 16;
|
|
} else {
|
|
door = "airlock" + airlock + "_door1";
|
|
movedist = -16;
|
|
}
|
|
|
|
//close doors
|
|
|
|
speaker= sys.getEntity( "speaker_" + door + "_close" );
|
|
sys.trigger (speaker);
|
|
|
|
entdoorl=sys.getEntity ( door + "_left" );
|
|
entdoorl.time (1.2);
|
|
entdoorl.rotateOnce ( '0 -45 0' );
|
|
|
|
entdoorr=sys.getEntity ( door + "_right" );
|
|
entdoorr.time (1.2);
|
|
entdoorr.rotateOnce ( '0 45 0' );
|
|
|
|
sys.waitFor (entdoorr);
|
|
sys.waitFor (entdoorl);
|
|
|
|
//trigger the portal
|
|
ent=sys.getEntity ( door + "_portal" );
|
|
sys.trigger (ent);
|
|
|
|
//move the 4 locks to unlock position
|
|
ent=sys.getEntity ( door + "_top_lock" );
|
|
ent.time (0.25);
|
|
ent.move ( DOWN, 15 );
|
|
|
|
speaker=sys.getEntity ("speaker_" + door + "_bottom_lock");
|
|
sys.trigger (speaker);
|
|
|
|
ent=sys.getEntity ( door + "_bottom_lock" );
|
|
ent.time (0.25);
|
|
ent.move ( UP, 15 );
|
|
|
|
speaker=sys.getEntity ("speaker_" + door + "_left_lock" );
|
|
sys.trigger (speaker);
|
|
|
|
ent=sys.getEntity ( door + "_left_lock" );
|
|
ent.time (0.75);
|
|
ent.move ( SOUTH, movedist );
|
|
|
|
speaker=sys.getEntity ("speaker_" + door + "_right_lock" );
|
|
sys.trigger (speaker);
|
|
|
|
ent=sys.getEntity ( door + "_right_lock" );
|
|
ent.time (0.75);
|
|
ent.move ( SOUTH, movedist );
|
|
|
|
sys.waitFor (ent);
|
|
|
|
}
|
|
|
|
|
|
////////////////////////////////////////////////////
|
|
//
|
|
// Main Activate airlock
|
|
// conditionally chooses based on entrance
|
|
//
|
|
////////////////////////////////////////////////////
|
|
void airlock_main_activate(float airlock)
|
|
{
|
|
entity ent;
|
|
|
|
//check to see which way the palyer entered by checking the airlock_state
|
|
//if 1 then close 1 and open 2
|
|
|
|
ent=sys.getEntity ("airlock" + airlock + "_door1_portal" );
|
|
|
|
if (ent.getFloatKey ("state")==1) {
|
|
airlock_door_close( airlock, 1 );
|
|
airlock_door_open( airlock, 2 );
|
|
|
|
} else { //else close 2 and open 1
|
|
airlock_door_close( airlock, 2 );
|
|
airlock_door_open( airlock, 1 );
|
|
}
|
|
}
|
|
|
|
|
|
|
|
////////////////////////////////////////////////////
|
|
//
|
|
// AIRLOCK main activation
|
|
//
|
|
////////////////////////////////////////////////////
|
|
void airlock1_activate()
|
|
{
|
|
//disable the guis on the doors
|
|
$airlock1_door1_gui.setGuiParm ( "gui_parm1" , 0);
|
|
$airlock1_door2_gui.setGuiParm ( "gui_parm1" , 0);
|
|
$airlock1_innerguiholder.setGuiParm ( "gui_parm11" , 0);
|
|
|
|
airlock_main_activate(1);
|
|
|
|
//check the airlock state and enable the guis on the closed door
|
|
if ($airlock1_door1_portal.getFloatKey ("state")==1) {
|
|
$airlock1_door2_gui.setGuiParm ( "gui_parm1" , 1);
|
|
} else { //else close 2 and open 1
|
|
$airlock1_door1_gui.setGuiParm ( "gui_parm1" , 1);
|
|
}
|
|
|
|
$airlock1_innerguiholder.setGuiParm ( "gui_parm11" , 1);
|
|
}
|
|
|
|
void airlock2_activate()
|
|
{
|
|
//disable the guis on the doors
|
|
$airlock2_door1_gui.setGuiParm ( "gui_parm1" , 0);
|
|
$airlock2_door2_gui.setGuiParm ( "gui_parm1" , 0);
|
|
$airlock2_innerguiholder.setGuiParm ( "gui_parm11" , 0);
|
|
|
|
airlock_main_activate(2);
|
|
|
|
//check the airlock state and enable the guis on the closed door
|
|
if ($airlock2_door1_portal.getFloatKey ("state")==1) {
|
|
$airlock2_door2_gui.setGuiParm ( "gui_parm1" , 1);
|
|
} else { //else close 2 and open 1
|
|
$airlock2_door1_gui.setGuiParm ( "gui_parm1" , 1);
|
|
}
|
|
|
|
$airlock2_innerguiholder.setGuiParm ( "gui_parm11" , 1);
|
|
}
|
|
|
|
|
|
////////////////////////////////////////////////////
|
|
//
|
|
// AIRLOCK doors opening
|
|
//
|
|
////////////////////////////////////////////////////
|
|
void airlock1_door1_open()
|
|
{
|
|
airlock_door_open(1, 1);
|
|
}
|
|
|
|
void airlock1_door2_open()
|
|
{
|
|
airlock_door_open(1, 2);
|
|
}
|
|
|
|
void airlock2_door1_open()
|
|
{
|
|
airlock_door_open(2, 1);
|
|
}
|
|
|
|
void airlock2_door2_open()
|
|
{
|
|
airlock_door_open(2, 2);
|
|
}
|
|
|
|
|
|
|
|
////////////////////////////////////////////////////
|
|
//
|
|
// Break Zombie airlock door
|
|
//
|
|
////////////////////////////////////////////////////
|
|
void airlock1_break()
|
|
{
|
|
//unhide the clip that will prevent the player from getting outside
|
|
//once the gui is pressed
|
|
sys.trigger( $airlock_break_clip );
|
|
|
|
airlock_door_close( 1, 2 );
|
|
|
|
//disable the gui on door1
|
|
$airlock1_door1_gui.setGuiParm ( "gui_parm1" , 0);
|
|
|
|
//turn door1 light on and door2 light off
|
|
thread crossFadeEnt ($airlock1_door2_light, '.84 .84 .9', '0.37 0.05 0.01', 1);
|
|
sys.wait(1);
|
|
thread crossFadeEnt ($airlock1_door1_light, '0.37 0.05 0.01', '.84 .84 .9', 1);
|
|
|
|
//move the 4 locks to unlock position
|
|
$airlock1_door1_top_lock.time (0.25);
|
|
$airlock1_door1_top_lock.move ( UP, 15 );
|
|
|
|
$airlock1_door1_bottom_lock.time (0.25);
|
|
sys.trigger ($speaker_airlock1_door1_bottom_lock);
|
|
$airlock1_door1_bottom_lock.move ( DOWN, 15 );
|
|
sys.waitFor ($airlock1_door1_bottom_lock);
|
|
|
|
$airlock1_door1_left_lock.time (0.75);
|
|
sys.trigger ($speaker_airlock1_door1_left_lock);
|
|
|
|
$airlock1_door1_left_lock.move ( SOUTH, 16 );
|
|
$airlock1_door1_right_lock.time (0.75);
|
|
|
|
sys.trigger ($speaker_airlock1_door1_right_lock);
|
|
$airlock1_door1_right_lock.move ( SOUTH, 16 );
|
|
|
|
sys.waitFor ($airlock1_door1_right_lock);
|
|
|
|
//trigger the portal
|
|
sys.trigger ($airlock1_door1_portal);
|
|
|
|
//lightswitch to sound flicker light
|
|
sys.trigger ($airlock1_door1_light);
|
|
//sys.trigger ($airlockzombielight);
|
|
|
|
//trigger anim shit
|
|
sys.trigger ($airlockzombietrigger);
|
|
|
|
//spark
|
|
sys.trigger ($airlockzombiespark1);
|
|
|
|
//doors open a bit then stutter a bit leaving the crack in the door
|
|
$airlock1_door1_left.time(.4);
|
|
$airlock1_door1_right.time(.4);
|
|
sys.trigger ($speaker_malfunction_1);
|
|
$airlock1_door1_left.rotateOnce ( '0 4 0' );
|
|
$airlock1_door1_right.rotateOnce ( '0 -4 0' );
|
|
sys.waitFor ($airlock1_door1_right);
|
|
|
|
$airlock1_door1_left.time(.3);
|
|
$airlock1_door1_right.time(.3);
|
|
sys.trigger ($speaker_malfunction_2);
|
|
$airlock1_door1_left.rotateOnce ( '0 -3 0' );
|
|
$airlock1_door1_right.rotateOnce ( '0 3 0' );
|
|
sys.waitFor ($airlock1_door1_right);
|
|
|
|
$airlock1_door1_left.time(.3);
|
|
$airlock1_door1_right.time(.3);
|
|
sys.trigger ($speaker_malfunction_2a);
|
|
$airlock1_door1_left.rotateOnce ( '0 10 0' );
|
|
$airlock1_door1_right.rotateOnce ( '0 -3 0' );
|
|
sys.waitFor ($airlock1_door1_right);
|
|
|
|
$airlock1_door1_left.time(.25);
|
|
$airlock1_door1_right.time(.25);
|
|
sys.trigger ($speaker_malfunction_3);
|
|
$airlock1_door1_left.rotateOnce ( '0 -5 0' );
|
|
$airlock1_door1_right.rotateOnce ( '0 -3 0' );
|
|
sys.waitFor ($airlock1_door1_right);
|
|
|
|
//spark
|
|
sys.trigger ($airlockzombiespark2);
|
|
sys.trigger ($airlockzombiespark1);
|
|
|
|
//trigger light to go off completely
|
|
//sys.trigger ($airlockzombielight);
|
|
|
|
sys.wait( 2 );
|
|
|
|
//trigger garage skull fly through
|
|
sys.trigger( $garagelight_break_relay );
|
|
sys.trigger( $garageskulltrigger );
|
|
|
|
//wait
|
|
sys.wait( 4 );
|
|
|
|
//spark
|
|
sys.trigger( $airlockzombiespark2 );
|
|
sys.trigger( $airlockzombiespark1 );
|
|
|
|
//wait
|
|
sys.wait(1);
|
|
|
|
//open one door fully to allow the player to exit the airlock
|
|
$airlock1_door1_right.time(1.2);
|
|
sys.trigger ($speaker_airlock1_door1_open);
|
|
|
|
$airlock1_door1_right.rotateOnce ( '0 -38 0' );
|
|
|
|
}
|
|
|
|
|
|
////////////////////////////////////////////////////
|
|
//
|
|
// piston movement
|
|
//
|
|
////////////////////////////////////////////////////
|
|
void piston_move ()
|
|
{
|
|
while (1) //begin while
|
|
{
|
|
|
|
$piston1.move ( DOWN, 6 );
|
|
$pistrod1.rotateOnce ( '0 0 -26.56' );
|
|
$piston2.move ( UP, 6 );
|
|
$pistrod2.rotateOnce ( '0 0 26.56' );
|
|
$piston3.move ( DOWN, 6 );
|
|
$pistrod3.rotateOnce ( '0 0 -26.56' );
|
|
$crankshaft.rotateOnce ( '0 0 90' );
|
|
sys.waitFor ($piston1);
|
|
|
|
$piston1.move ( DOWN, 6 );
|
|
$pistrod1.rotateOnce ( '0 0 26.56' );
|
|
$piston2.move ( UP, 6 );
|
|
$pistrod2.rotateOnce ( '0 0 -26.56' );
|
|
$piston3.move ( DOWN, 6 );
|
|
$pistrod3.rotateOnce ( '0 0 26.56' );
|
|
$crankshaft.rotateOnce ( '0 0 90' );
|
|
sys.waitFor ($piston1);
|
|
|
|
$piston1.move ( UP, 6 );
|
|
$pistrod1.rotateOnce ( '0 0 26.56' );
|
|
$piston2.move ( DOWN, 6 );
|
|
$pistrod2.rotateOnce ( '0 0 -26.56' );
|
|
$piston3.move ( UP, 6 );
|
|
$pistrod3.rotateOnce ( '0 0 26.56' );
|
|
$crankshaft.rotateOnce ( '0 0 90' );
|
|
sys.waitFor ($piston1);
|
|
|
|
$piston1.move ( UP, 6 );
|
|
$pistrod1.rotateOnce ( '0 0 -26.56' );
|
|
$piston2.move ( DOWN, 6 );
|
|
$pistrod2.rotateOnce ( '0 0 26.56' );
|
|
$piston3.move ( UP, 6 );
|
|
$pistrod3.rotateOnce ( '0 0 -26.56' );
|
|
$crankshaft.rotateOnce ( '0 0 90' );
|
|
sys.waitFor ($piston1);
|
|
|
|
} //end while
|
|
|
|
}
|
|
|
|
|
|
|
|
////////////////////////////////////////////////////
|
|
//
|
|
// canister mover
|
|
//
|
|
////////////////////////////////////////////////////
|
|
void canister_mover ()
|
|
{
|
|
sys.wait (2);
|
|
$canismover_rdoor.time (1);
|
|
$canismover_ldoor.time (1);
|
|
|
|
while (1) //begin while
|
|
{
|
|
//back into recess 192
|
|
sys.trigger ($speaker_can1_move); // SOUND
|
|
$canismover_anchor.time (2);
|
|
$canismover_anchor.accelTime (2);
|
|
$canismover_anchor.decelTime (0);
|
|
|
|
$canismover_anchor.move ( WEST, 192 );
|
|
sys.waitFor ($canismover_anchor);
|
|
|
|
//close doors (move 24)
|
|
sys.trigger ($speaker_candoor1_close); // SOUND
|
|
$canismover_rdoor.move (NORTH, -24);
|
|
$canismover_ldoor.move (NORTH, 24);
|
|
sys.waitFor ($canismover_ldoor);
|
|
|
|
//hide it all
|
|
$canismover.hide ();
|
|
$func_static_5240.hide ();
|
|
$func_static_5239.hide ();
|
|
$light_5120.Off ();
|
|
$func_static_5252.hide ();
|
|
$light_5121.Off ();
|
|
$func_static_5233.hide ();
|
|
$light_5118.Off ();
|
|
$light_5116.Off ();
|
|
$func_static_5248.hide ();
|
|
|
|
//wait after it goes behind the closed doors
|
|
sys.wait (3);
|
|
|
|
//bring it forward 192
|
|
$canismover_anchor.time (.1);
|
|
$canismover_anchor.accelTime (0);
|
|
$canismover_anchor.decelTime (0);
|
|
|
|
$canismover_anchor.move ( WEST, -192 );
|
|
sys.waitFor ($canismover_anchor);
|
|
|
|
//rotate it quickly 90 degs to down position
|
|
$canismover_anchor.time (.1);
|
|
$canismover_anchor.accelTime (0);
|
|
$canismover_anchor.decelTime (0);
|
|
|
|
|
|
$canismover_anchor.rotateOnce ( '90 0 0' );
|
|
sys.waitFor ($canismover_anchor);
|
|
|
|
//unhide it all
|
|
$canismover.show ();
|
|
$func_static_5240.show ();
|
|
$func_static_5239.show ();
|
|
$light_5120.On ();
|
|
$func_static_5252.show ();
|
|
$light_5121.On ();
|
|
$func_static_5233.show ();
|
|
$light_5118.On ();
|
|
$light_5116.On ();
|
|
$func_static_5248.show ();
|
|
|
|
//open doors (move 24)
|
|
sys.trigger ($speaker_candoor2_open); // SOUND
|
|
|
|
$canismover_rdoor.move (NORTH, 24);
|
|
$canismover_ldoor.move (NORTH, -24);
|
|
sys.waitFor ($canismover_ldoor);
|
|
|
|
//rotate it up -90 degs
|
|
$canismover_anchor.time (2);
|
|
$canismover_anchor.accelTime (2);
|
|
$canismover_anchor.decelTime (0);
|
|
|
|
sys.trigger ($speaker_can1_updown); // SOUND
|
|
|
|
$canismover_anchor.rotateOnce ( '-90 0 0' );
|
|
sys.waitFor ($canismover_anchor);
|
|
|
|
//bounce
|
|
$canismover_anchor.time (.15);
|
|
$canismover_anchor.accelTime (.15);
|
|
$canismover_anchor.decelTime (0);
|
|
$canismover_anchor.rotateOnce ( '1.5 0 0' );
|
|
sys.waitFor ($canismover_anchor);
|
|
|
|
$canismover_anchor.time (.15);
|
|
$canismover_anchor.accelTime (0);
|
|
$canismover_anchor.decelTime (.15);
|
|
$canismover_anchor.rotateOnce ( '-1.5 0 0' );
|
|
sys.waitFor ($canismover_anchor);
|
|
|
|
$canismover_anchor.time (.10);
|
|
$canismover_anchor.accelTime (.10);
|
|
$canismover_anchor.decelTime (0);
|
|
$canismover_anchor.rotateOnce ( '.5 0 0' );
|
|
sys.waitFor ($canismover_anchor);
|
|
|
|
$canismover_anchor.time (.10);
|
|
$canismover_anchor.accelTime (0);
|
|
$canismover_anchor.decelTime (.10);
|
|
$canismover_anchor.rotateOnce ( '-.5 0 0' );
|
|
sys.waitFor ($canismover_anchor);
|
|
|
|
//twist it up
|
|
$canismover_anchor.time (4.5);
|
|
$canismover_anchor.accelTime (1.5);
|
|
$canismover_anchor.decelTime (1);
|
|
|
|
sys.trigger ($speaker_can1_rot); // SOUND
|
|
$canismover_anchor.rotateOnce ( '0 0 540' );
|
|
sys.waitFor ($canismover_anchor);
|
|
|
|
sys.wait (0.5);
|
|
|
|
sys.trigger ($speaker_can1_rot); // SOUND
|
|
$canismover_anchor.rotateOnce ( '0 0 -540' );
|
|
sys.waitFor ($canismover_anchor);
|
|
|
|
} //end while
|
|
|
|
}
|
|
|
|
|
|
////////////////////////////////////////////////////
|
|
//
|
|
// canister2 mover
|
|
//
|
|
////////////////////////////////////////////////////
|
|
void canister2_mover ()
|
|
{
|
|
sys.wait (6);
|
|
$canismover2_rdoor.time (1);
|
|
$canismover2_ldoor.time (1);
|
|
while (1) //begin while
|
|
{
|
|
//back into recess 192
|
|
$canismover2_anchor.time (2);
|
|
$canismover2_anchor.accelTime (2);
|
|
$canismover2_anchor.decelTime (0);
|
|
|
|
sys.trigger ($speaker_can2_move); // SOUND
|
|
$canismover2_anchor.move ( WEST, 192 );
|
|
sys.waitFor ($canismover2_anchor);
|
|
|
|
//close doors (move 24)
|
|
sys.trigger ($speaker_candoor2_close); // SOUND
|
|
$canismover2_rdoor.move (NORTH, -24);
|
|
$canismover2_ldoor.move (NORTH, 24);
|
|
sys.waitFor ($canismover2_ldoor);
|
|
|
|
//hide it all
|
|
$canismover2.hide ();
|
|
$func_static_52402.hide ();
|
|
$func_static_52392.hide ();
|
|
$light_51202.Off ();
|
|
$func_static_52522.hide ();
|
|
$light_51212.Off ();
|
|
$func_static_52332.hide ();
|
|
$light_51182.Off ();
|
|
$light_51162.Off ();
|
|
$func_static_52482.hide ();
|
|
|
|
//wait after it goes behind the closed doors
|
|
sys.wait (3);
|
|
|
|
//bring it forward 192
|
|
$canismover2_anchor.time (.1);
|
|
$canismover2_anchor.accelTime (0);
|
|
$canismover2_anchor.decelTime (0);
|
|
|
|
$canismover2_anchor.move ( WEST, -192 );
|
|
sys.waitFor ($canismover2_anchor);
|
|
|
|
//rotate it quickly 90 degs to down position
|
|
$canismover2_anchor.time (.1);
|
|
$canismover2_anchor.accelTime (0);
|
|
$canismover2_anchor.decelTime (0);
|
|
|
|
$canismover2_anchor.rotateOnce ( '90 0 0' );
|
|
sys.waitFor ($canismover2_anchor);
|
|
|
|
//unhide it all
|
|
$canismover2.show ();
|
|
$func_static_52402.show ();
|
|
$func_static_52392.show ();
|
|
$light_51202.On ();
|
|
$func_static_52522.show ();
|
|
$light_51212.On ();
|
|
$func_static_52332.show ();
|
|
$light_51182.On ();
|
|
$light_51162.On ();
|
|
$func_static_52482.show ();
|
|
|
|
//open doors (move 24)
|
|
$canismover2_rdoor.move (NORTH, 24);
|
|
$canismover2_ldoor.move (NORTH, -24);
|
|
sys.trigger ($speaker_candoor2_open); // SOUND
|
|
|
|
sys.waitFor ($canismover2_ldoor);
|
|
|
|
//rotate it up -90 degs
|
|
$canismover2_anchor.time (2);
|
|
$canismover2_anchor.accelTime (2);
|
|
$canismover2_anchor.decelTime (0);
|
|
|
|
sys.trigger ($speaker_can2_updown); // SOUND
|
|
$canismover2_anchor.rotateOnce ( '-90 0 0' );
|
|
sys.waitFor ($canismover2_anchor);
|
|
|
|
//bounce
|
|
$canismover2_anchor.time (.15);
|
|
$canismover2_anchor.accelTime (.15);
|
|
$canismover2_anchor.decelTime (0);
|
|
$canismover2_anchor.rotateOnce ( '1.5 0 0' );
|
|
sys.waitFor ($canismover2_anchor);
|
|
|
|
$canismover2_anchor.time (.15);
|
|
$canismover2_anchor.accelTime (0);
|
|
$canismover2_anchor.decelTime (.15);
|
|
$canismover2_anchor.rotateOnce ( '-1.5 0 0' );
|
|
sys.waitFor ($canismover2_anchor);
|
|
|
|
$canismover2_anchor.time (.10);
|
|
$canismover2_anchor.accelTime (.10);
|
|
$canismover2_anchor.decelTime (0);
|
|
$canismover2_anchor.rotateOnce ( '.5 0 0' );
|
|
sys.waitFor ($canismover2_anchor);
|
|
|
|
$canismover2_anchor.time (.10);
|
|
$canismover2_anchor.accelTime (0);
|
|
$canismover2_anchor.decelTime (.10);
|
|
$canismover2_anchor.rotateOnce ( '-.5 0 0' );
|
|
sys.waitFor ($canismover2_anchor);
|
|
|
|
//twist it up
|
|
|
|
$canismover2_anchor.time (4.5);
|
|
$canismover2_anchor.accelTime (1.5);
|
|
$canismover2_anchor.decelTime (.3);
|
|
|
|
sys.trigger ($speaker_can2_rot);
|
|
$canismover2_anchor.rotateOnce ( '0 0 540' );
|
|
sys.waitFor ($canismover2_anchor);
|
|
|
|
sys.wait (0.5);
|
|
|
|
sys.trigger ($speaker_can2_rot);
|
|
$canismover2_anchor.rotateOnce ( '0 0 -540' );
|
|
sys.waitFor ($canismover2_anchor);
|
|
|
|
} //end while
|
|
}
|
|
|
|
|
|
|
|
////////////////////////////////////////////////////
|
|
//
|
|
// After invasion
|
|
// Things that are triggered after the invasion
|
|
//
|
|
////////////////////////////////////////////////////
|
|
void after_invasion ()
|
|
{
|
|
//unhide the exit elevator
|
|
$light_51518.show();
|
|
|
|
//steps busted by steam
|
|
$preinvasion_steps.hide();
|
|
$postinvasion_steps.show();
|
|
|
|
$pi_steps_steamlight1.On();
|
|
$pi_steps_steamlight2.On();
|
|
|
|
sys.trigger ($pi_steps_steam1);
|
|
sys.trigger ($pi_steps_steam2);
|
|
|
|
sys.trigger($pi_stepsteamsound);
|
|
|
|
//turn on the hazard lights
|
|
$pi_hazlight_proj1.On();
|
|
$pi_hazlight_proj2.On();
|
|
$pi_hazlight_sml1.On();
|
|
$pi_hazlight_sml2.On();
|
|
|
|
$func_rotating_5.show();
|
|
$func_rotating_6.show();
|
|
|
|
sys.trigger($pi_hazspeaker);
|
|
|
|
//impclawdoors
|
|
$impclawdoor1.open();
|
|
$impclawdoor2.open();
|
|
$impclawdoor1.remove();
|
|
$impclawdoor2.remove();
|
|
|
|
$underground_impcrawl_door_3.show();
|
|
$impclawdoorclip.show();
|
|
|
|
//restore position of crane
|
|
$crane_main.restorePosition();
|
|
|
|
//crane load unbind so it can fall
|
|
$crane_box1.unbind();
|
|
$crane_box2.unbind();
|
|
$crane_box3.unbind();
|
|
$crane_box4.unbind();
|
|
$crane_beam1.unbind();
|
|
$crane_beam2.unbind();
|
|
$crane_beam3.unbind();
|
|
$crane_beam4.unbind();
|
|
$crane_beam5.unbind();
|
|
|
|
//unhide the cave railing
|
|
$pi_cave_rail.show();
|
|
|
|
//enable the bridge gui
|
|
$saftey_bridge_gui.setGuiParm ( "gui_parm1" , 1);
|
|
|
|
}
|
|
|
|
|
|
|
|
////////////////////////////////////////////////////
|
|
//
|
|
// Fred stuff
|
|
//
|
|
////////////////////////////////////////////////////
|
|
void guard_switch_head_to_zombie( entity self ) {
|
|
self.setModel( "underground_invasion_zsechead" );
|
|
//sys.print( "Swapping Head\n");
|
|
}
|
|
|
|
void sci_switch_head_to_stump( entity self ) {
|
|
self.setModel( "underground_crazy_stump" );
|
|
//sys.print( "Swapping Head\n");
|
|
}
|
|
|
|
void killzombie()
|
|
{
|
|
$monster_zombie_maint_1.kill();
|
|
}
|
|
|
|
////////////////////////////////////////////////////
|
|
//
|
|
// swing the swinglight
|
|
//
|
|
////////////////////////////////////////////////////
|
|
void swinglight_move ()
|
|
{
|
|
$swinglight_mover.sway( 120, 0, '0 0 60' );
|
|
}
|
|
|
|
////////////////////////////////////////////////////
|
|
//
|
|
// drop_floor
|
|
//
|
|
////////////////////////////////////////////////////
|
|
void drop_floor_down ()
|
|
{
|
|
//trigger the initial speaker
|
|
sys.trigger ($speaker_drop_floor);
|
|
|
|
$drop_floor.time(1);
|
|
$drop_floor.accelTime(1);
|
|
$drop_floor.decelTime(.2);
|
|
|
|
//move drop_floor down
|
|
$drop_floor.move (DOWN, 176);
|
|
|
|
//trigger the weird sound
|
|
sys.trigger($drop_floor_weird_speaker);
|
|
}
|
|
|
|
|
|
|
|
////////////////////////////////////////////////////
|
|
//
|
|
// close security door
|
|
//
|
|
////////////////////////////////////////////////////
|
|
void close_secdoor ()
|
|
{
|
|
$func_door_46.close ();
|
|
}
|
|
|
|
////////////////////////////////////////////////////
|
|
//
|
|
// spooky_postinvasion1
|
|
//
|
|
// Scenario that happens immediately after invasion
|
|
// cinematic.
|
|
//
|
|
////////////////////////////////////////////////////
|
|
void postinvasion_spooky01_speakers_off ()
|
|
{
|
|
float j;
|
|
entity ent;
|
|
for (j=1; j<=11; j++)
|
|
{
|
|
ent = sys.getEntity ( "comm_speaker_" + j );
|
|
ent.fadeSound ( SND_CHANNEL_ANY, -60, 2.5 );
|
|
}
|
|
}
|
|
|
|
void postinvasion_spooky01_speakers_on ()
|
|
{
|
|
float j;
|
|
entity ent;
|
|
for (j=1; j<=11; j++)
|
|
{
|
|
ent = sys.getEntity ( "comm_speaker_" + j );
|
|
ent.fadeSound ( SND_CHANNEL_ANY, 0, 2.5 );
|
|
}
|
|
}
|
|
|
|
void postinvasion_spooky01_lights_off ()
|
|
{
|
|
float j;
|
|
entity ent;
|
|
for (j=1; j<=7; j++)
|
|
{
|
|
ent = sys.getEntity ( "comm_light_" + j );
|
|
ent.fadeOutLight ( 2.5 );
|
|
}
|
|
}
|
|
|
|
void postinvasion_spooky01_lights_on ()
|
|
{
|
|
float j;
|
|
entity ent;
|
|
for (j=1; j<=7; j++)
|
|
{
|
|
ent = sys.getEntity ( "comm_light_" + j );
|
|
ent.fadeInLight ( 2.5 );
|
|
}
|
|
}
|
|
|
|
void postinvasion_spooky01 ()
|
|
{
|
|
/* stuff I gotta trigger
|
|
invasion_spectrum_relay
|
|
invasion_floorskull_relay
|
|
underground_crazy_zombie
|
|
*/
|
|
|
|
// XIAN: Inserted speaker function here...
|
|
thread post_invasion_sounds();
|
|
|
|
//close and lock the door
|
|
$func_door_74.close ();
|
|
sys.trigger ($invasion_door_lock_relay);
|
|
|
|
//power out
|
|
sys.trigger ($comm_speaker_powerout);
|
|
thread postinvasion_spooky01_speakers_off();
|
|
thread postinvasion_spooky01_lights_off();
|
|
|
|
//wait for fades
|
|
sys.wait (2.5);
|
|
|
|
//trigger the suspense trigger
|
|
|
|
sys.trigger ($comm_speaker_suspense);
|
|
|
|
sys.wait (1);
|
|
|
|
sys.trigger ($speaker_airush2);
|
|
|
|
sys.wait (0.5);
|
|
|
|
sys.trigger ($speaker_substing1);
|
|
sys.trigger ($speaker_seq_invasion); // comm chatter stuff from other people
|
|
// on the base
|
|
sys.wait (1);
|
|
|
|
sys.trigger ($speaker_invasion_buildup); // Trigger the 5 second buildup speaker
|
|
sys.wait (4.8);
|
|
|
|
// 5 second buildup here
|
|
|
|
//trigger the skull from the floor
|
|
sys.trigger ($invasion_floorskull_relay);
|
|
|
|
sys.trigger ($speaker_appear); // White column appearing in middle of room stinger
|
|
sys.trigger ($speaker_hellblast_stinger);
|
|
|
|
sys.wait (0.5);
|
|
|
|
$speaker_appear.startSoundShader ("mc_hellblast_explosion", SND_CHANNEL_VOICE2);
|
|
|
|
sys.wait (0.5);
|
|
|
|
sys.trigger ($speaker_hellwind);
|
|
|
|
//trigger spectrum bang
|
|
sys.trigger ($invasion_spectrum_relay);
|
|
|
|
sys.wait (2); // Was 18 -Xian
|
|
|
|
sys.trigger ($speaker_spookything);
|
|
|
|
sys.wait (3);
|
|
|
|
sys.trigger ($speaker_betruger_laugh);
|
|
|
|
sys.wait (5);
|
|
|
|
//trigger transformation
|
|
//skull from wall transforms asian guy into zombie
|
|
sys.trigger ($crazysci_relay_nextthing);
|
|
|
|
sys.trigger ($speaker_leatherface);
|
|
|
|
sys.wait (2);
|
|
|
|
sys.trigger ($speaker_substing2);
|
|
|
|
sys.wait (1);
|
|
|
|
sys.trigger ($speaker_stereothing);
|
|
|
|
sys.wait (1);
|
|
|
|
//trigger the spooky looping sound that remains in the room after the invasion
|
|
sys.trigger ($invasionspookyremain_speaker);
|
|
|
|
//power back on
|
|
sys.trigger ($comm_speaker_poweron);
|
|
sys.wait (1);
|
|
thread postinvasion_spooky01_lights_on();
|
|
thread postinvasion_spooky01_speakers_on();
|
|
|
|
|
|
//trigger the gui that can be triggered on the middle desk
|
|
sys.trigger ($func_static_4730);
|
|
|
|
//trigger zombie security banging
|
|
sys.trigger ($zsec_bang);
|
|
|
|
//trigger first radio chatter
|
|
sys.trigger ($rchat_1);
|
|
|
|
sys.wait (2);
|
|
|
|
$speaker_spookything.startSoundShader ("mc_substing_02", SND_CHANNEL_VOICE2 );
|
|
|
|
sys.wait(2);
|
|
sys.trigger ($rchat_7);
|
|
sys.wait(3);
|
|
|
|
//unlock and open door
|
|
sys.trigger ($invasion_door_unlock_relay);
|
|
|
|
//trigger zombie to come on in
|
|
sys.trigger ($comm_zombie);
|
|
|
|
//break light near guis
|
|
sys.wait(3);
|
|
sys.trigger ($comm_light_6);
|
|
}
|
|
|
|
void init_howitzer() {
|
|
//howitzer setup
|
|
$how1_barrel.bind ($how1_base);
|
|
$how1_recep.bind ($how1_base);
|
|
$how1_catcher.bind ($how1_base);
|
|
$how1_base.rotateOnce ( '0 0 45' );
|
|
|
|
$how2_barrel.bind ($how2_base);
|
|
$how2_recep.bind ($how2_base);
|
|
$how2_catcher.bind ($how2_base);
|
|
$how2_base.rotateOnce ( '0 0 45' );
|
|
|
|
$how3_barrel.bind ($how3_base);
|
|
$how3_recep.bind ($how3_base);
|
|
$how3_catcher.bind ($how3_base);
|
|
$how3_base.rotateOnce ( '0 0 45' );
|
|
|
|
sys.waitFor($how1_base);
|
|
|
|
thread howitzer_1 ();
|
|
thread howitzer_2 ();
|
|
thread howitzer_3 ();
|
|
|
|
}
|
|
|
|
|
|
////////////////////////////////////////////////////
|
|
//
|
|
// brooks gui triggers
|
|
//
|
|
////////////////////////////////////////////////////
|
|
void brooks_guitouch ()
|
|
{
|
|
sys.trigger ($secpanel1);
|
|
}
|
|
|
|
void brooks_guiopen ()
|
|
{
|
|
$secpanel1.setGuiParm ( "gui_parm1" , 2);
|
|
}
|
|
|
|
|
|
////////////////////////////////////////////////////
|
|
//
|
|
// Crane start sound
|
|
//
|
|
////////////////////////////////////////////////////
|
|
void crane_start_thread() {
|
|
sys.trigger ($crane_start_speaker);
|
|
sys.wait (1);
|
|
$crane_main_speaker.On();
|
|
}
|
|
|
|
////////////////////////////////////////////////////
|
|
//
|
|
// Crane Main Move Right
|
|
//
|
|
////////////////////////////////////////////////////
|
|
void crane_main_right()
|
|
{
|
|
vector delta,deltatest;
|
|
vector deltadif;
|
|
|
|
sys.killthread ( "map_mc_underground::crane_main_left" );
|
|
|
|
//set the dir state for correct stopping
|
|
crane_dir = 1;
|
|
|
|
//set crane times back to normal
|
|
$crane_main.time (6);
|
|
$crane_main.accelTime (3);
|
|
$crane_main.decelTime (2);
|
|
|
|
if ( crane_main_state < 90 ) {
|
|
//start sound
|
|
thread crane_start_thread();
|
|
|
|
//start movement
|
|
$crane_main.rotateOnce ( '0 -90 0' );
|
|
|
|
while ( 1 ) {
|
|
delta = anglemod360( $crane_main.getAngles() );
|
|
deltatest = $crane_main.getAngles();
|
|
crane_main_state = (270 - (int( delta_y )));
|
|
//sys.print ("crane_main_state = " + crane_main_state + " " + deltatest +" \n");
|
|
$crane_main.setGuiParm ( "gui_parm2" , crane_main_state);
|
|
$crane_remote_panel.setGuiParm ( "gui_parm2" , crane_main_state);
|
|
$crane_reset_button.setGuiParm ( "gui_parm2" , crane_main_state);
|
|
if (crane_main_state >= 89) {
|
|
break;
|
|
}
|
|
sys.waitFrame();
|
|
}
|
|
|
|
//*****
|
|
//stop movement
|
|
//*****
|
|
|
|
//stop sound
|
|
$crane_main_speaker.Off();
|
|
sys.trigger ($crane_end_speaker);
|
|
|
|
//set crane times to accomodate stopping
|
|
$crane_main.time (.5);
|
|
$crane_main.accelTime (0);
|
|
$crane_main.decelTime (.5);
|
|
|
|
//the final move
|
|
$crane_main.rotateOnce ( '0 -1 0' );
|
|
sys.waitFor ($crane_main);
|
|
|
|
//set crane times back to normal
|
|
$crane_main.time (6);
|
|
$crane_main.accelTime (3);
|
|
$crane_main.decelTime (2);
|
|
|
|
//set crane status and update guis
|
|
crane_main_state = 90;
|
|
//sys.print ("crane_main_state = " + crane_main_state + " \n");
|
|
$crane_main.setGuiParm ( "gui_parm2" , crane_main_state);
|
|
$crane_remote_panel.setGuiParm ( "gui_parm2" , crane_main_state);
|
|
$crane_reset_button.setGuiParm ( "gui_parm2" , crane_main_state);
|
|
|
|
}
|
|
}
|
|
|
|
////////////////////////////////////////////////////
|
|
//
|
|
// Crane Main Move Left
|
|
// this should be redone for smoother movement
|
|
// especially since the player can remotely opperate
|
|
// the crane and see the jerky movement easily
|
|
//
|
|
////////////////////////////////////////////////////
|
|
void crane_main_left()
|
|
{
|
|
vector delta;
|
|
vector deltadif;
|
|
|
|
sys.killthread ( "map_mc_underground::crane_main_right" );
|
|
|
|
//set the dir state for correct stopping
|
|
crane_dir = -1;
|
|
|
|
//set crane times back to normal
|
|
$crane_main.time (6);
|
|
$crane_main.accelTime (3);
|
|
$crane_main.decelTime (2);
|
|
|
|
if ( crane_main_state > 0 ) {
|
|
//start sound
|
|
thread crane_start_thread();
|
|
|
|
//start movement
|
|
$crane_main.rotateOnce ( '0 90 0' );
|
|
|
|
while ( 1 ) {
|
|
delta = anglemod360( $crane_main.getAngles() );
|
|
crane_main_state = (270 - (int( delta_y )));
|
|
//sys.print ("crane_main_state = " + crane_main_state + " \n");
|
|
$crane_main.setGuiParm ( "gui_parm2" , crane_main_state);
|
|
$crane_remote_panel.setGuiParm ( "gui_parm2" , crane_main_state);
|
|
$crane_reset_button.setGuiParm ( "gui_parm2" , crane_main_state);
|
|
if (crane_main_state <= 1) {
|
|
break;
|
|
}
|
|
sys.waitFrame();
|
|
}
|
|
|
|
//*****
|
|
//stop movement
|
|
//*****
|
|
|
|
//stop sound
|
|
$crane_main_speaker.Off();
|
|
sys.trigger ($crane_end_speaker);
|
|
|
|
//set crane times to accomodate stopping
|
|
$crane_main.time (.5);
|
|
$crane_main.accelTime (0);
|
|
$crane_main.decelTime (.5);
|
|
|
|
//the final move
|
|
$crane_main.rotateOnce ( '0 1 0' );
|
|
sys.waitFor ($crane_main);
|
|
|
|
//set crane times back to normal
|
|
$crane_main.time (6);
|
|
$crane_main.accelTime (3);
|
|
$crane_main.decelTime (2);
|
|
|
|
//update guis
|
|
crane_main_state = 0;
|
|
//sys.print ("crane_main_state = " + crane_main_state + " \n");
|
|
$crane_main.setGuiParm ( "gui_parm2" , crane_main_state);
|
|
$crane_remote_panel.setGuiParm ( "gui_parm2" , crane_main_state);
|
|
$crane_reset_button.setGuiParm ( "gui_parm2" , crane_main_state);
|
|
}
|
|
}
|
|
|
|
|
|
////////////////////////////////////////////////////
|
|
//
|
|
// Crane stop
|
|
//
|
|
////////////////////////////////////////////////////
|
|
void crane_main_stop()
|
|
{
|
|
//sys.print ("enter crane_main_stop \n");
|
|
vector delta;
|
|
|
|
sys.killthread ( "map_caves2::crane_main_left" );
|
|
sys.killthread ( "map_caves2::crane_main_right" );
|
|
|
|
//set crane times to accomodate stopping
|
|
$crane_main.time (.3);
|
|
$crane_main.accelTime (0);
|
|
$crane_main.decelTime (.3);
|
|
|
|
//stop movement
|
|
if ( (crane_dir < 0) && (crane_main_state > 0) && (crane_main_state < 90) ) {
|
|
$crane_main.rotateOnce ( '0 1 0' );
|
|
sys.waitFor ($crane_main);
|
|
delta = anglemod360( $crane_main.getAngles() );
|
|
crane_main_state = (270 - (int( delta_y )));
|
|
//sys.print ("crane_main_state = " + crane_main_state + " \n");
|
|
$crane_main.setGuiParm ( "gui_parm2" , crane_main_state);
|
|
$crane_remote_panel.setGuiParm ( "gui_parm2" , crane_main_state);
|
|
$crane_reset_button.setGuiParm ( "gui_parm2" , crane_main_state);
|
|
} else if ( (crane_main_state > 0) && (crane_main_state < 90) ){
|
|
$crane_main.rotateOnce ( '0 -1 0' );
|
|
sys.waitFor ($crane_main);
|
|
delta = anglemod360( $crane_main.getAngles() );
|
|
crane_main_state = (270 - (int( delta_y )));
|
|
//sys.print ("crane_main_state = " + crane_main_state + " \n");
|
|
$crane_main.setGuiParm ( "gui_parm2" , crane_main_state);
|
|
$crane_remote_panel.setGuiParm ( "gui_parm2" , crane_main_state);
|
|
$crane_reset_button.setGuiParm ( "gui_parm2" , crane_main_state);
|
|
}
|
|
|
|
//stop sound
|
|
$crane_main_speaker.Off();
|
|
sys.trigger ($crane_end_speaker);
|
|
|
|
//set crane times back to normal
|
|
$crane_main.time (6);
|
|
$crane_main.accelTime (3);
|
|
$crane_main.decelTime (2);
|
|
}
|
|
|
|
|
|
////////////////////////////////////////////////////
|
|
//
|
|
// return radio chatter 1
|
|
//
|
|
////////////////////////////////////////////////////
|
|
void radio_chat_1()
|
|
{
|
|
float ran1;
|
|
|
|
ran1 = (3 + sys.random(3));
|
|
sys.wait (ran1);
|
|
|
|
sys.trigger ($rchat_8);
|
|
ran1 = (3 + sys.random(5));
|
|
sys.wait (ran1);
|
|
|
|
sys.trigger ($rchat_2);
|
|
ran1 = (8 + sys.random(6));
|
|
sys.wait (ran1);
|
|
|
|
sys.trigger ($rchat_3);
|
|
ran1 = (15 + sys.random(6));
|
|
sys.wait (ran1);
|
|
|
|
sys.trigger ($rchat_4);
|
|
ran1 = (8 + sys.random(3));
|
|
sys.wait (ran1);
|
|
|
|
sys.trigger ($rchat_5);
|
|
ran1 = (12 + sys.random(6));
|
|
sys.wait (ran1);
|
|
|
|
sys.trigger ($rchat_6);
|
|
ran1 = (8 + sys.random(8));
|
|
sys.wait (ran1);
|
|
|
|
sys.trigger ($rchat_7);
|
|
ran1 = (15 + sys.random(3));
|
|
sys.wait (ran1);
|
|
}
|
|
|
|
void radio_chat_2()
|
|
{
|
|
float ran1;
|
|
|
|
ran1 = (8 + sys.random(3));
|
|
sys.wait (ran1);
|
|
|
|
sys.trigger ($rchat_9);
|
|
ran1 = (8 + sys.random(3));
|
|
sys.wait (ran1);
|
|
|
|
sys.trigger ($rchat_10);
|
|
ran1 = (8 + sys.random(6));
|
|
sys.wait (ran1);
|
|
|
|
sys.trigger ($rchat_11);
|
|
ran1 = (8 + sys.random(8));
|
|
sys.wait (ran1);
|
|
|
|
sys.trigger ($rchat_12);
|
|
ran1 = (8 + sys.random(3));
|
|
sys.wait (ran1);
|
|
|
|
sys.trigger ($rchat_13);
|
|
ran1 = (8 + sys.random(5));
|
|
sys.wait (ran1);
|
|
}
|
|
|
|
void radio_chat_3()
|
|
{
|
|
float ran1;
|
|
|
|
ran1 = (0 + sys.random(3));
|
|
sys.wait (ran1);
|
|
|
|
sys.trigger ($rchat_14);
|
|
ran1 = (8 + sys.random(3));
|
|
sys.wait (ran1);
|
|
|
|
sys.trigger ($rchat_15);
|
|
ran1 = (8 + sys.random(5));
|
|
sys.wait (ran1);
|
|
|
|
sys.trigger ($rchat_2);
|
|
ran1 = (8 + sys.random(8));
|
|
sys.wait (ran1);
|
|
}
|
|
|
|
void radio_chat_4()
|
|
{
|
|
float ran1;
|
|
|
|
ran1 = (4 + sys.random(3));
|
|
sys.wait (ran1);
|
|
|
|
sys.trigger ($rchat_1);
|
|
ran1 = (8 + sys.random(9));
|
|
sys.wait (ran1);
|
|
|
|
sys.trigger ($rchat_3);
|
|
ran1 = (8 + sys.random(9));
|
|
sys.wait (ran1);
|
|
|
|
sys.trigger ($rchat_4);
|
|
ran1 = (12 + sys.random(9));
|
|
sys.wait (ran1);
|
|
|
|
sys.trigger ($rchat_5);
|
|
ran1 = (15 + sys.random(9));
|
|
sys.wait (ran1);
|
|
|
|
sys.trigger ($rchat_6);
|
|
ran1 = (8 + sys.random(9));
|
|
sys.wait (ran1);
|
|
}
|
|
|
|
void radio_chat_5()
|
|
{
|
|
float ran1;
|
|
|
|
ran1 = (4 + sys.random(3));
|
|
sys.wait (ran1);
|
|
|
|
sys.trigger ($rchat_7);
|
|
ran1 = (4 + sys.random(3));
|
|
sys.wait (ran1);
|
|
|
|
sys.trigger ($rchat_8);
|
|
ran1 = (4 + sys.random(4));
|
|
sys.wait (ran1);
|
|
|
|
sys.trigger ($rchat_9);
|
|
ran1 = (8 + sys.random(5));
|
|
sys.wait (ran1);
|
|
|
|
sys.trigger ($rchat_10);
|
|
ran1 = (3 + sys.random(9));
|
|
sys.wait (ran1);
|
|
|
|
sys.trigger ($rchat_11);
|
|
ran1 = (8 + sys.random(3));
|
|
sys.wait (ran1);
|
|
|
|
sys.trigger ($rchat_12);
|
|
ran1 = (12 + sys.random(5));
|
|
sys.wait (ran1);
|
|
|
|
sys.trigger ($rchat_13);
|
|
ran1 = (8 + sys.random(9));
|
|
sys.wait (ran1);
|
|
|
|
sys.trigger ($rchat_14);
|
|
ran1 = (2 + sys.random(9));
|
|
sys.wait (ran1);
|
|
|
|
sys.trigger ($rchat_15);
|
|
ran1 = (12 + sys.random(5));
|
|
sys.wait (ran1);
|
|
|
|
sys.trigger ($rchat_1);
|
|
ran1 = (4 + sys.random(9));
|
|
sys.wait (ran1);
|
|
|
|
sys.trigger ($rchat_3);
|
|
ran1 = (8 + sys.random(4));
|
|
sys.wait (ran1);
|
|
|
|
sys.trigger ($rchat_4);
|
|
ran1 = (4 + sys.random(9));
|
|
sys.wait (ran1);
|
|
}
|
|
|
|
void radio_chat_stop()
|
|
{
|
|
sys.killthread ("map_mc_underground::radio_chat_1");
|
|
sys.killthread ("map_mc_underground::radio_chat_2");
|
|
sys.killthread ("map_mc_underground::radio_chat_3");
|
|
sys.killthread ("map_mc_underground::radio_chat_4");
|
|
sys.killthread ("map_mc_underground::radio_chat_5");
|
|
}
|
|
|
|
void fade_blinkypre_sound ()
|
|
{
|
|
$speaker_101.fadeSound ( SND_CHANNEL_ANY, -60, 3 );
|
|
}
|
|
|
|
void fade_scotty_sound ()
|
|
{
|
|
$scotty1.fadeSound ( SND_CHANNEL_ANY, -60, .1 );
|
|
}
|
|
|
|
void crazy_sci_becomeZombie( entity self ) {
|
|
self.setTalkState( TALK_NEVER );
|
|
self.setHealth( self.getFloatKey( "normal_health" ) );
|
|
self.setKey( "snd_chatter_combat", self.getKey( "snd_chatter_combat_precache" ) );
|
|
|
|
// causes the monster to reset his chatter sound. hacky, but it does the job.
|
|
self.show();
|
|
}
|
|
|
|
////////////////////////////////////////////////////
|
|
//
|
|
// MAIN
|
|
//
|
|
////////////////////////////////////////////////////
|
|
void main ()
|
|
{
|
|
thread cache_sounds();
|
|
thread canister_mover ();
|
|
thread canister2_mover ();
|
|
|
|
setup_objects ();
|
|
thread saftey_bridge_away ();
|
|
thread lilfrm_move ();
|
|
thread rotary ();
|
|
thread howitzer_1 ();
|
|
thread howitzer_2 ();
|
|
thread howitzer_3 ();
|
|
thread pipe_piston_move ();
|
|
thread crankshaft_move ();
|
|
thread redthing_move ();
|
|
thread underarm_work ();
|
|
thread piston_move ();
|
|
thread swinglight_move();
|
|
|
|
//setup the airlocks in the correct states
|
|
thread airlock1_door2_open();
|
|
thread airlock2_door2_open();
|
|
|
|
sys.wait(20);
|
|
//disable the bridge gui
|
|
$saftey_bridge_gui.setGuiParm ( "gui_parm1" , 0);
|
|
|
|
}
|
|
|
|
}// namespace |