namespace map_alphalabs2 { #define XMACH_BASE_SPEED 2 #define XMACH_JOINT_SPEED 2 //#define DEBUG 1 //#define VERBOSE 1 //#define ENABLE_BEAM 1 float spawn_start_imp = 0; // Is it ok to spawn in the first imp ? float surprise_pinky_spawn = 0; // Did we kill the imp, to spawn in the surprise pinky at the CP ? float surprise_pinky_dead = 0; // Did we kill the surprise pinky ? (Used to prevent retriggers) float xmach_current = 0; // Current rotation angle it's at float xmach_value = 0; // What is the current location of the machine ? (1-12) void bathroom_init() { $bathroom_swinglamp_anchor.sway( 2.5, 1, '0 0 15' ); } void entrance_door() { $start_light1.Off(); $start_light2.Off(); sys.trigger ($start_light3); sys.trigger ($start_particle); sys.wait (1); $start_light2.On(); } //////////////////////////////////////////////////// // Setup binds and times and initial movements etc... //////////////////////////////////////////////////// void setup_objects() { vector beam_dst; $mazelight_red_1.fadeOutLight (0.1); $mazelight_red_2.fadeOutLight (0.1); $mazelight_red_3.fadeOutLight (0.1); //$mfs_redlight1.fadeOutLight (0.1); //$mfs_redlight2.fadeOutLight (0.1); //$mfs_redlight3.fadeOutLight (0.1); $claw_arm_lower.time (0.75); $claw_arm_lower.accelTime (0.25); $claw_arm_lower.decelTime (0.25); $claw_arm_upper.time (0.75); $claw_arm_upper.accelTime (0.25); $claw_arm_upper.decelTime (0.25); $claw_arm_wrist.time (0.75); $claw_arm_wrist.accelTime (0.25); $claw_arm_wrist.decelTime (0.25); $claw_revolver.time (2); $claw_tooth_1.time (0.5); $claw_tooth_2.time (0.5); $claw_arm_upper.rotateOnce ('-40 0 0'); $claw_arm_lower.rotateOnce ('50 0 0'); $claw_arm_wrist.rotateOnce ('180 0 0'); $ddoor_1_anchor.time (1); $ddoor_2_anchor.time (1); $ddoor_1_anchor.accelTime (0.25); $ddoor_2_anchor.accelTime (0.25); $ddoor_1_anchor.decelTime (0.25); $ddoor_2_anchor.decelTime (0.25); $lobby1left.disable(); $lobby1right.disable(); $mal_func_door_55.disable(); $mal_func_door_56.disable(); sys.wait( 1 ); thread entrance_door(); //$br_secretdoor.speed (96); $secret_door2.time (1.5); $secret_ladder.time (3); $secret_ladder.move (DOWN, 106); $exit_ladder.move(DOWN, 126); $elight.rotate ('0 -400 0'); $deadmarine_mover.speed (128); $deadmarine_mover.moveTo ($deadmarine_path1); //break lights in machine room sys.trigger($light_4678); sys.trigger($light_4679); sys.trigger($light_4683); sys.trigger($light_4684); } void br_move_secret_door() { $br_secretdoor.time(.5); $br_secretdoor.accelTime(.25); $br_secretdoor.decelTime(.25); $br_secretdoor.moveTo ($br_secretdoor_path1); sys.waitFor ($br_secretdoor); sys.wait (0.5); $br_secretdoor.time(1.0); $br_secretdoor.accelTime(.5); $br_secretdoor.decelTime(.5); $br_secretdoor.moveTo ($br_secretdoor_path2); sys.waitFor ($br_secretdoor); } void emp_blast() { float i; entity emplight, empspeaker; for (i=1; i<=10; i++) { emplight = sys.getEntity ("emplight_" + i); emplight.On(); empspeaker = sys.getEntity ("empspeaker_" + i); sys.trigger (empspeaker); sys.wait (0.1); emplight.Off(); } } void open_secrethatch() { sys.trigger ($mfs_secretdoor_open); $secret_door2.moveTo ($secret2_path1); sys.waitFor ($secret_door2); $secret_door2.moveTo ($secret2_path2); sys.waitFor ($secret_door2); $secret_ladder_door.open(); sys.waitFor ($secret_ladder_door); sys.trigger ($mfs_speaker_secretladder); $secret_ladder.move (UP, 106); } /////////////////////// // Mal's machine /////////////////////// void spinner() { while (1) { $slidearm.bind ($slidearm_anchor); $can1.bind ($slidearm); $can2.bind ($maindrum); $slidearm_anchor.time (2); $slidearm.time (2); $can1.time (1); $can2.time (1); $maindrum.time (1); $plunger.time (1); //canister1 feed from main drum sys.trigger ($mfs_roller_speaker_in); $slidearm_anchor.moveTo ($slidearm_p2); sys.wait (.1); $slidearm.rotateOnce (' 0 0 -90 '); sys.waitFor ($slidearm_anchor); //canister1 feed into machine sys.wait (1.5); $can1.unbind(); $can1.bind ($plunger); sys.trigger ($mfs_plunger_in); $plunger.move (FORWARD,96); sys.waitFor ($plunger); // was $can1 $can1.unbind(); sys.trigger ($mfs_can1_speaker); $can1.moveTo ($can_target); sys.waitFor ($can1); //canister1 teleport $can1.time (.01); $can1.moveTo ($canspawn); sys.waitFor ($can1); $can1.bind ($maindrum); //slidearm reset sys.trigger ($mfs_roller_speaker_out); $slidearm_anchor.moveTo ($slidearm_p1); $slidearm.rotateOnce (' 0 0 90 '); sys.trigger ($mfs_plunger_out); $plunger.move (BACK,96); sys.waitFor ($slidearm_anchor); //main drum rotation sys.trigger ($mfs_drum_speaker); $maindrum.rotateOnce (' 0 0 -90 '); sys.waitFor ($maindrum); $can2.unbind(); sys.wait (.1); //canister2 feed from main drum $can2.bind ($slidearm); sys.trigger ($mfs_roller_speaker_in); sys.trigger ($mfs_can2_speaker); $slidearm_anchor.moveTo ($slidearm_p2); sys.wait (.1); $slidearm.rotateOnce (' 0 0 -90 '); sys.waitFor ($slidearm_anchor); //canister2 feed into machine sys.wait (1.5); $can2.unbind(); $can2.bind ($plunger); //$can2.move (FORWARD,232); sys.trigger ($mfs_plunger_in); $plunger.move (FORWARD,96); sys.waitFor ($plunger); $can2.unbind(); sys.trigger ($mfs_can2_speaker); $can2.moveTo ($can_target); sys.waitFor ($can2); //canister2 teleport $can2.time (.01); $can2.moveTo ($canspawn); sys.waitFor ($can2); $can2.bind ($maindrum); //slidearm reset sys.trigger ($mfs_roller_speaker_out); $slidearm_anchor.moveTo ($slidearm_p1); $slidearm.rotateOnce (' 0 0 90 '); sys.trigger ($mfs_plunger_out); $plunger.move (BACK,96); sys.waitFor ($slidearm_anchor); //main drum rotation sys.trigger ($mfs_drum_speaker); $maindrum.rotateOnce (' 0 0 -90 '); sys.waitFor ($maindrum); $can1.unbind(); sys.wait (.1); } } // The other half of the rotating tube-thingy machine... void mach2() { entity ent, ent2; vector bm_origin, bm_origin2; bm_origin = $mach2_path1.getOrigin(); while (1) { $mach2_tube.time (2); $mach2_tube.setOrigin (bm_origin); sys.trigger ($mfs_speaker_tube); $mach2_tube.moveTo ($mach2_path2); sys.waitFor ($mach2_tube); sys.wait (1); $mach2_flap_left_anchor.time (1); $mach2_flap_right_anchor.time (1); sys.trigger ($mfs_speaker_flap_close); $mach2_flap_left_anchor.rotateOnce ('0 0 -90'); $mach2_flap_right_anchor.rotateOnce ('0 0 90'); sys.waitFor ($mach2_flap_right_anchor); sys.trigger ($mfs_speaker_decent); $mach2_tube.moveTo ($mach2_path3); sys.waitFor ($mach2_tube); sys.trigger ($mfs_speaker_flap_open); $mach2_flap_left_anchor.rotateOnce ('0 0 90'); $mach2_flap_right_anchor.rotateOnce ('0 0 -90'); sys.waitFor ($mach2_flap_right_anchor); sys.wait (0.2); } } /////////////////////// // Jerry's machine /////////////////////// void spawn_canister() { vector startlocation; startlocation = $canister1.getWorldOrigin(); $spinner1.time (1.5); $spinner1.accelTime (.75); $spinner1.decelTime (.75); $spinner2.time (1.5); $spinner2.accelTime (.75); $spinner2.decelTime (.75); $pivot_point.time (1.75); $pivot_point.accelTime (.75); $pivot_point.decelTime (.75); $body.time (1); $body.accelTime (.75); $body.decelTime (.25); $middle_arm.time (1.5); $middle_arm.accelTime (.75); $middle_arm.decelTime (.75); $clamp_arm.time (1.5); $clamp_arm.accelTime (.75); $clamp_arm.decelTime (.75); $can_door1.time (1); $can_door1.accelTime (.75); $can_door1.decelTime (.25); $can_door2.time (1); $can_door2.accelTime (.75); $can_door2.decelTime (.25); while (1) { //NOTE - machine starts in lowered position $canister1.bind ($clamp_arm); //move arms up $spinner1.rotateOnce ('0 720 0'); $spinner2.rotateOnce ('0 720 0'); $clamp_arm.move (UP, 40 ); $middle_arm.move (UP, 60); $pivot_point.moveTo ($p2); sys.waitFor ($pivot_point); //close doors $can_door1.rotateOnce ('0 0 90'); $can_door2.rotateOnce ('0 0 90'); //rotate machine $body.rotateOnce (' 0 0 90 '); sys.waitFor ($body); //move arms in $spinner1.rotateOnce ('0 -720 0'); $spinner2.rotateOnce ('0 -720 0'); $middle_arm.move (-90, 60); $clamp_arm.move (-90, 40 ); sys.waitFor ($clamp_arm); //release canister $canister1.unbind(); //move arms out $spinner1.rotateOnce ('0 720 0'); $spinner2.rotateOnce ('0 720 0'); $middle_arm.move (90, 60); $clamp_arm.move (90, 40 ); sys.waitFor ($clamp_arm); $body.rotateOnce (' 0 0 -90 '); sys.waitFor ($body); //move canister back to start position $canister1.setWorldOrigin (startlocation); //move arms down $can_door1.rotateOnce ('0 0 -90'); $can_door2.rotateOnce ('0 0 -90'); $spinner1.rotateOnce ('0 -720 0'); $spinner2.rotateOnce ('0 -720 0'); $pivot_point.moveTo ($p1); $middle_arm.move (DOWN, 60); $clamp_arm.move (DOWN, 40 ); sys.waitFor ($clamp_arm); } } void xmachroom() { while (1) { thread spawn_canister(); sys.wait (2); } } void sci_kill_lights() { $mazelight_1.Off(); $mazelight_2.Off(); sys.wait (.75); //sys.trigger ($mazeimp_1); //sys.trigger ($mazeimp_2); //sys.trigger ($mazeimp_3); sys.trigger ($open_impdoors); sys.trigger ($imp_maze_wakeup); //simulate lantern flash sys.wait ( .40 ); $lantern_flash.On(); sys.wait (.15); $lantern_flash.Off(); sys.trigger ($maze_bloodpool); sys.trigger ($maze_bloodpool_1); sys.trigger ($maze_bloodpool_2); sys.trigger ($maze_bloodpool_3); sys.trigger ($maze_bloodpool_4); $mazelight_red_1.fadeInLight (4); $mazelight_red_2.fadeInLight (4); $mazelight_red_3.fadeInLight (4); sys.wait (4); $mazelight_1.fadeInLight (4); $mazelight_2.fadeInLight (4); } /* void mfs_redlights() { $mfs_redlight1.fadeInLight (4); $mfs_redlight2.fadeInLight (4); $mfs_redlight3.fadeInLight (4); } */ // First posessed guy... void move_soldier() { float i; entity ent; $wrist_mover.speed (128); sys.trigger ($start_fadeout_blue); sys.trigger ($start_fadeout_white); //sys.trigger ($start_fadeout_sky); for (i=1; i<=7; i++) { ent = sys.getEntity ("soldier_path" + i); $wrist_mover.moveTo (ent); sys.waitFor ($wrist_mover); if (i == 1) { sys.trigger ($explodinglight_trigger_1); sys.trigger ($explodinglight_trigger_1a); sys.trigger ($explodinglight_trigger_1b); sys.trigger ($explodinglight_trigger_1c); //$body_spinner.rotate ('-10 20 -25'); sys.wait (1); $wrist_mover.speed (200); } if (i == 2) { sys.trigger ($explodinglight_trigger_2); sys.trigger ($explodinglight_trigger_2a); sys.trigger ($explodinglight_trigger_2b); sys.trigger ($explodinglight_trigger_2c); } if (i == 3) { sys.trigger ($explodinglight_trigger_3); sys.trigger ($explodinglight_trigger_3a); sys.trigger ($explodinglight_trigger_3b); sys.trigger ($explodinglight_trigger_3c); $tim_func_door_202.open(); $tim_func_door_203.open(); } if ( i == 4) { $tim_func_door_202.close(); $tim_func_door_203.close(); $tim_func_door_203.lock(1); $tim_func_door_202.lock(1); //disable player forcefield $trigger_once_56.disable(); $env_ragdoll_marine1_1.unbind(); sys.trigger ($start_fadein_blue); sys.trigger ($start_fadein_white); //sys.trigger ($start_fadein_sky); spawn_start_imp = 1; } } $wrist_mover.remove(); $env_ragdoll_marine1_1.remove(); } void spawn_imp_entrance() { while (1) { if (spawn_start_imp == 1) { sys.trigger ($entrance_relay); sys.trigger ($trigger_relay_45); sys.trigger ($trigger_relay_47); sys.trigger ($impstart_influence); sys.wait (1); sys.trigger ($start_imp_forcefield); sys.trigger ($blowout_window); sys.wait (1); //sys.trigger ($surprise_imp_1); return; } sys.wait (1); } } // Called when the first imp dies void unlock_start_door() { $tim_func_door_202.lock(0); $tim_func_door_203.lock(0); } // Guy getting pulled into the ceiling @ start of the map void gank_deadsoldier() { sys.trigger ($impscream); sys.wait (1); $deadmarine_mover.moveTo ($deadmarine_path2); sys.trigger ($impscream_crunch_speaker); sys.wait (1.5); $deadmarine_mover.moveTo ($deadmarine_path3); sys.wait (1.75); $xenv_ragdoll_marine1_0.remove(); //sys.trigger ($imp_scream); //sys.wait (1); sys.trigger ($bodypart_1); sys.wait (1); sys.trigger ($bodypart_2); sys.wait (1.25); sys.trigger ($bodypart_3); sys.wait (0.75); sys.trigger ($bodypart_4); sys.wait (1); sys.trigger ($bodypart_5); sys.wait (1.5); sys.trigger ($bodypart_6); sys.wait (5); sys.trigger ($bodypart_7); } // Trap door in ceiling that a dead scientist drops out of void open_cp_trapdoor() { $trapdoor_1_anchor.time (0.5); $trapdoor_1_anchor.rotateOnce ('0 0 45'); } void exit_ladder_move() { $exit_ladder.time(2); $exit_ladder.accelTime(.5); $exit_ladder.decelTime(1.5); sys.trigger ($speaker_up_2seconds); $exit_ladder.move(UP, 48); sys.waitFor($exit_ladder); sys.wait(4); $exit_ladder.time(2); $exit_ladder.accelTime(.5); $exit_ladder.decelTime(1.5); sys.trigger ($speaker_down_2seconds); $exit_ladder.move(DOWN, 48); sys.waitFor($exit_ladder); sys.wait(5); $exit_ladder.time(3); $exit_ladder.accelTime(1); $exit_ladder.decelTime(2); sys.trigger ($speaker_up_3seconds); $exit_ladder.move(UP, 64); sys.waitFor($exit_ladder); sys.wait(4); $exit_ladder.time(2); $exit_ladder.accelTime(.5); $exit_ladder.decelTime(1.5); sys.trigger ($speaker_down_2seconds); $exit_ladder.move(DOWN, 64); sys.waitFor($exit_ladder); sys.wait(20); $exit_ladder.time(4); $exit_ladder.accelTime(1); $exit_ladder.decelTime(3); sys.trigger ($speaker_up_4seconds); $exit_ladder.move(UP, 126); sys.waitFor($exit_ladder); $exit_ladder_clip.remove(); //trigger gui sys.trigger( $func_static_5089); $func_static_5089.setShaderParm (7, 1); //turn on ladder lights sys.trigger( $ladder_lights_relay); } //////////////////////////////////////////////////// // Main //////////////////////////////////////////////////// void main() { setup_objects(); thread bathroom_init(); thread spinner(); thread mach2(); thread spawn_canister(); } }