//------------------------------------------------------------------------------------ // M10_valkaryne.script // // (c) Ritual Entertainment 2005 // Author: JSchuch and Reid Kimball //------------------------------------------------------------------------------------ namespace map_m10 { #include "scripts/doom_defs.script" // Prototypes void navajasDies(); void animateNavajas(); void bobbing_dropship(); void rolling_dropship(); void turning_dropship(); void dropshipAbortsExtraction(); void gunners4and5Fight(); void animDropShipFlyByLanding(); void theEnd(); void animBanners(); void makronMovers(); // Global Vars boolean MACHINE1ACTIVE; boolean MACHINE2ACTIVE; boolean MACHINE3ACTIVE; boolean MACHINE4ACTIVE; boolean EXIT_DOOR_ONE_CLOSED; boolean EXIT_DOOR_TWO_CLOSED; boolean EXIT_DOOR_THREE_CLOSED; boolean ESCAPE_ELEVATOR_CLEAR; boolean PLAYER_ON_EXIT_ELEVATOR; boolean VALK_ALIVE; boolean VALK_DOCKED; boolean PLAYER_ON_DROPSHIP; boolean GAME_OVER; entity entValkaryne; float q4doorIsOpen = 1; float valkStageOneSpeed = 8; // this is time in seconds float valkStageTwoSpeed = 4; // this is time in seconds float valkStageThreeSpeed = 1; // this is time in seconds float valkStage = 1; float intValk01_moving = 1; // which spline for valk to move on float intTimer = 1; float intPlayerOnDropShip = 0; /////////////////////////////////////////////////////////////// // Objectives // /////////////////////////////////////////////////////////////// void m10_giveObjective( float n ) { entity p; p = sys.getEntity( "item_objective_" + n ); sys.trigger( p ); } void m10_completeObjective( float m ) { entity q; q = sys.getEntity( "item_objectivecomplete_" + m ); sys.trigger( q ); } void valk01_moves() { $mvr_valk01.time( 6 ); $mvr_valk01.accelTime( 0.5 ); $mvr_valk01.decelTime( 0.5 ); if ( intValk01_moving == 1 ) { sys.println( intValk01_moving ); $mvr_valk01.startSpline( $spline_valk01 ); intValk01_moving = intValk01_moving + 1; sys.waitFor( $mvr_valk01 ); } else if ( intValk01_moving == 2 ) { sys.println( intValk01_moving ); $mvr_valk01.startSpline( $spline_valk02 ); intValk01_moving = intValk01_moving + 1; sys.waitFor( $mvr_valk01 ); } else if ( intValk01_moving == 3 ) { sys.println( intValk01_moving ); $mvr_valk01.startSpline( $spline_valk03 ); sys.waitFor( $mvr_valk01 ); } else { sys.println( "COUNTER NOT WORKING" ); } } /////////////////////////////////////////////////////////////// // Valkaryne Taunts // /////////////////////////////////////////////////////////////// //In first large cave after initial descent void valktauntOne() { float r; entity t; for(r=0;r<=30;r++) { t = sys.getEntity( "vt_light_" + r ); t.fadeOutLight( 0.05 ); } sys.wait( 1 ); $func_static_55279.guiEvent( "valkinfluenceOn" ); $vt_light_red_1.fadeInLight( 0.5 ); sys.wait( 3.5 ); $vt_light_red_1.fadeOutLight( 0.5 ); $func_static_55279.guiEvent( "valkinfluenceOff" ); sys.wait( 1 ); for(r=31;r>=1;r--) { t = sys.getEntity( "vt_light_" + r ); t.fadeInLight( 0.25 ); } } //Part way down second tube shaft, following the Valkaryne void valktauntTwo() { float r; entity t; for(r=0;r<=14;r++) { t = sys.getEntity( "vt2_light_" + r ); t.fadeOutLight( 0.05 ); } sys.wait( 1 ); $func_static_54716.guiEvent( "valkinfluenceOn" ); $vt2_light_red_1.fadeInLight( 0.5 ); sys.wait( 3.5 ); $vt2_light_red_1.fadeOutLight( 0.5 ); $func_static_54716.guiEvent( "valkinfluenceOff" ); sys.wait( 1 ); for(r=15;r>=1;r--) { t = sys.getEntity( "vt2_light_" + r ); t.fadeInLight( 0.25 ); } } //In the round blue tube room, on the elevator console void valktauntThree() { float r; entity t; for(r=0;r<=10;r++) { t = sys.getEntity( "vt3_light_" + r ); t.fadeOutLight( 0.05 ); } sys.wait( 1 ); $func_elevator_1_call_1_valk.guiEvent( "valkinfluenceOn" ); $func_elevator_1_call_1.hide(); $func_elevator_1_call_1_valk.show(); $vt3_light_red_1.fadeInLight( 0.5 ); sys.wait( 3.5 ); $vt3_light_red_1.fadeOutLight( 0.5 ); $func_elevator_1_call_1_valk.hide(); $func_elevator_1_call_1.show(); sys.wait( 1 ); for(r=11;r>=1;r--) { t = sys.getEntity( "vt3_light_" + r ); t.fadeInLight( 0.25 ); } } void showElevatorGUI() { $func_elevator_1_call_1_fake.hide(); $func_elevator_1_call_1.show(); } /////////////////////////////////////////////////////////////// // Repair Bots // /////////////////////////////////////////////////////////////// void repairBotOne() { float t; aiScriptedMoveWait( $repbot_1, $repbot_repspot_1, 8, 0 ); aiScriptedFaceWait( $repbot_1, $repspot_1_target, 0 ); $repbot_1.bind( $repbot_repspot_1 ); sys.wait( 1 ); for(t=0;t++;t<5) { aiScriptedActionWait( $repbot_1, $repspot_1_target, 0 ); sys.wait( 8 ); } } void endRepairBotOne() { $repbot_1.unbind(); aiScriptedAnimLoop( $repbot_1, "idle", 12 ); } void repairBotTwo() { float t; aiScriptedMoveWait( $repbot_2, $repbot_repspot_2, 8, 0 ); aiScriptedFaceWait( $repbot_2, $repspot_2_target, 0 ); $repbot_2.bind( $repbot_repspot_2 ); sys.wait( 1 ); for(t=0;t++;t<5) { aiScriptedActionWait( $repbot_2, $repspot_2_target, 0 ); sys.wait( 8 ); } } void endRepairBotTwo() { $repbot_2.unbind(); aiScriptedAnimLoop( $repbot_2, "idle", 12 ); } /////////////////////////////////////////////////////////////// // Valkaryne Chamber Machines // /////////////////////////////////////////////////////////////// /////////////////////////////////////////////////////////////// // Valkaryne Finale // /////////////////////////////////////////////////////////////// void makron_shield_battle() { // 550 - health = 50 $mak_shield.time( valkStageOneSpeed * 1.5 ); $mak_shield.accelTime( valkStageOneSpeed * 1.5 ); $mak_shield.decelTime( 0 ); $mak_shield_1.time( valkStageOneSpeed * 1.5); $mak_shield_1.accelTime( valkStageOneSpeed * 1.5 ); $mak_shield_1.decelTime( 0 ); $mak_shield.rotate( '60 0 0' ); $mak_shield_1.rotate( '60 0 0' ); //sys.waitFor( $mak_shield ); //sys.waitFor( $mak_shield_1 ); } /* void valkStageOne() { $mak_shield.time( valkStageOneSpeed * 1.5 ); $mak_shield.accelTime( valkStageOneSpeed * 1.5 ); $mak_shield.decelTime( 0 ); $mak_shield_1.time( valkStageOneSpeed * 1.5); $mak_shield_1.accelTime( valkStageOneSpeed * 1.5 ); $mak_shield_1.decelTime( 0 ); $mak_shield.rotateOnce( '360 0 0' ); $mak_shield_1.rotateOnce( '360 0 0' ); sys.waitFor( $mak_shield ); sys.waitFor( $mak_shield_1 ); while( VALK_DOCKED ) { $mak_shield.time( valkStageOneSpeed ); $mak_shield.accelTime( 0 ); $mak_shield.decelTime( 0 ); $mak_shield_1.time( valkStageOneSpeed ); $mak_shield_1.accelTime( 0 ); $mak_shield_1.decelTime( 0 ); $mak_shield.rotateOnce( '360 0 0' ); $mak_shield_1.rotateOnce( '360 0 0' ); sys.waitFor( $mak_shield ); sys.waitFor( $mak_shield_1 ); sys.waitFrame(); } $mak_shield.time( valkStageOneSpeed * 1.5 ); $mak_shield.accelTime( 0 ); $mak_shield.decelTime( valkStageOneSpeed * 1.5 ); $mak_shield_1.time( valkStageOneSpeed * 1.5 ); $mak_shield_1.accelTime( 0 ); $mak_shield_1.decelTime( valkStageOneSpeed * 1.5 ); $mak_shield.rotateOnce( '360 0 0' ); $mak_shield_1.rotateOnce( '360 0 0' ); sys.waitFor( $mak_shield ); sys.waitFor( $mak_shield_1 ); } void valkStageTwo() { $mak_shield.time( valkStageTwoSpeed * 1.5 ); $mak_shield.accelTime( valkStageTwoSpeed * 1.5 ); $mak_shield.decelTime( 0 ); $mak_shield_1.time( valkStageTwoSpeed * 1.5 ); $mak_shield_1.accelTime( valkStageTwoSpeed * 1.5); $mak_shield_1.decelTime( 0 ); $mak_shield.rotateOnce( '360 0 0' ); $mak_shield_1.rotateOnce( '360 0 0' ); sys.waitFor( $mak_shield ); sys.waitFor( $mak_shield_1 ); //$mak_sphere_200.setOrigin( '-3520 -208 -4352' ); $mak_sphere_200.setOrigin( '-3520 -200 -4348' ); $mak_sphere_200.show(); $mak_sphere_300.remove(); while( VALK_DOCKED ) { $mak_shield.time( valkStageTwoSpeed ); $mak_shield.accelTime( 0 ); $mak_shield.decelTime( 0 ); $mak_shield_1.time( valkStageTwoSpeed ); $mak_shield_1.accelTime( 0 ); $mak_shield_1.decelTime( 0 ); $mak_shield.rotateOnce( '360 0 0' ); $mak_shield_1.rotateOnce( '360 0 0' ); sys.waitFor( $mak_shield ); sys.waitFor( $mak_shield_1 ); sys.waitFrame(); } $mak_shield.time( valkStageTwoSpeed * 1.5 ); $mak_shield.accelTime( 0 ); $mak_shield.decelTime( valkStageTwoSpeed * 1.5 ); $mak_shield_1.time( valkStageTwoSpeed * 1.5 ); $mak_shield_1.accelTime( 0 ); $mak_shield_1.decelTime( valkStageTwoSpeed * 1.5 ); $mak_shield.rotateOnce( '360 0 0' ); $mak_shield_1.rotateOnce( '360 0 0' ); sys.waitFor( $mak_shield ); sys.waitFor( $mak_shield_1 ); } void valkStageThree() { $mak_shield.time( valkStageThreeSpeed * 1.5 ); $mak_shield.accelTime( valkStageThreeSpeed * 1.5); $mak_shield.decelTime( 0 ); $mak_shield_1.time( valkStageThreeSpeed * 1.5 ); $mak_shield_1.accelTime( valkStageThreeSpeed * 1.5); $mak_shield_1.decelTime( 0 ); $mak_shield.rotateOnce( '360 0 0' ); $mak_shield_1.rotateOnce( '360 0 0' ); sys.waitFor( $mak_shield ); sys.waitFor( $mak_shield_1 ); //$mak_sphere_100.setOrigin( '-3520 -208 -4352' ); $mak_sphere_100.setOrigin( '-3520 -200 -4348' ); $mak_sphere_100.show(); $mak_sphere_200.remove(); while( VALK_DOCKED ) { $mak_shield.time( valkStageThreeSpeed ); $mak_shield.accelTime( 0 ); $mak_shield.decelTime( 0 ); $mak_shield_1.time( valkStageThreeSpeed ); $mak_shield_1.accelTime( 0 ); $mak_shield_1.decelTime( 0 ); $mak_shield.rotateOnce( '360 0 0' ); $mak_shield_1.rotateOnce( '360 0 0' ); sys.waitFor( $mak_shield ); sys.waitFor( $mak_shield_1 ); sys.waitFrame(); } $mak_shield.time( valkStageThreeSpeed * 1.5 ); $mak_shield.accelTime( 0 ); $mak_shield.decelTime( valkStageThreeSpeed * 1.5 ); $mak_shield_1.time( valkStageThreeSpeed * 1.5 ); $mak_shield_1.accelTime( 0 ); $mak_shield_1.decelTime( valkStageThreeSpeed * 1.5 ); $mak_shield.rotateOnce( '360 0 0' ); $mak_shield_1.rotateOnce( '360 0 0' ); sys.waitFor( $mak_shield ); sys.waitFor( $mak_shield_1 ); } */ void valkaryne_dock() { vector valkloc; //Where is she? vector valkdockloc; //Her docking spot entValkaryne = $valk; sys.println( "Valk docking" ); valkloc = $valk.getOrigin(); valkdockloc = $dock.getOrigin(); $valk_tele_fx.setOrigin( valkloc ); sys.waitFrame(); sys.trigger( $valk_tele_fx ); $valk.hide(); entValkaryne.docked(); $valk.setOrigin( valkdockloc ); sys.wait( 4 ); $valk_tele_fx.setOrigin( valkdockloc ); sys.waitFrame(); sys.trigger( $valk_tele_fx ); aiScriptedFace( $valk, $faceNode, 1); $valk.show(); VALK_DOCKED = true; /* NOT NEEDED ANYMORE if( valkStage == 2 ) { valkStageTwo(); } if( valkStage == 3 ) { valkStageThree(); } */ } void valkaryne_undock() { entValkaryne = $valk; //valkStage = ( valkStage + 1 ); entValkaryne.undock(); sys.wait( 3 ); sys.trigger( $target_bossValk ); } /* void makSphere300dead() { aiScriptedAnim( $valk, "plugin_pain1", 4, 1 ); VALK_DOCKED = false; sys.wait( 3 ); valkaryne_undock(); } void makSphere200dead() { aiScriptedAnim( $valk, "plugin_pain2", 4, 1 ); VALK_DOCKED = false; sys.wait( 3 ); valkaryne_undock(); } */ void makSphereDead() { //turn on goo spawning $mak_sphere.remove(); sys.trigger( $baby_goo01 ); sys.wait( 0.2 ); sys.trigger( $baby_goo02 ); sys.wait( 0.7 ); sys.trigger( $baby_goo03 ); //stop the rotating pieces of armor $mak_shield_1.rotate( '0 0 0' ); $mak_shield.rotate( '0 0 0' ); aiScriptedAnim( $valk, "plugin_pain1", 4, 1 ); VALK_DOCKED = false; sys.wait( 3 ); valkaryne_undock(); //turn off goo spawning sys.trigger( $baby_goo01 ); sys.wait( 0.2 ); sys.trigger( $baby_goo02 ); sys.wait( 0.7 ); sys.trigger( $baby_goo03 ); } void animMakronRolling() { // makron ball rolls into position $makShield01.accelTime( 0 ); $makShield01.decelTime( 1 ); $makShield01.time( 6 ); $makShield01.rotate( '-180 0 0' ); $makShield01.disableSplineAngles(); $makShield01.startSpline( $spline_makShield ); sys.waitFor( $makShield01 ); $mvr_makShields.rotate( '0 0 0' ); } void initValk() { //$mak_sphere_100.setOrigin( '-3808 1224 -4520' ); //$mak_sphere_200.setOrigin( '-3808 1224 -4520' ); sys.trigger( $target_bossMakronEgg ); VALK_DOCKED = true; thread makronMovers(); thread makron_shield_battle(); // valkStageOne(); } void valkIntro() { VALK_ALIVE = true; sys.trigger( $valkcamera ); //sys.wait( 1 ); animMakronRolling(); $makShield01.remove(); $makShield02.remove(); $mak_shield_1.show(); $mak_shield.show(); $baby_mak.show(); $baby_mak_light01.On(); $mak_sphere.show(); $func_door_119.lock( 1 ); $func_door_120.lock( 1 ); $func_static_54386.setShaderParm( 7, 0 ); sys.trigger( $valkcamera ); sys.wait( 2 ); $valk.becomeAggressive(); thread initValk(); } void makronMovers() { $side_rotator01.bind( $orig_side_rotator01 ); $top_rotator01.bind( $orig_top_rotator01 ); $orig_top_rotator01.accelTime( 0.5 ); $orig_top_rotator01.decelTime( 0.5 ); $orig_top_rotator01.time( 2 ); $orig_side_rotator01.accelTime( 0.5 ); $orig_side_rotator01.decelTime( 0.5 ); $orig_side_rotator01.time( 2 ); // while( 1 ) { $orig_top_rotator01.rotateUpTo( 1, 90 ); $orig_side_rotator01.rotateUpTo( 2, 90 ); sys.wait( 3 ); $orig_top_rotator01.rotateDownTo( 1, 0 ); $orig_side_rotator01.rotateDownTo( 2, 0 ); } } void valkDead() { VALK_ALIVE = false; thread m10_completeObjective( 1 ); sys.wait( 1 ); //exit area out of Valk chamber sys.trigger( $undervalkdoor ); $valkseat_static.remove(); sys.trigger( $undervalk_steamfx_1 ); sys.trigger( $undervalk_steamfx_2 ); sys.trigger( $undervalk_steamfx_3 ); sys.trigger( $undervalk_steamfx_4 ); sys.trigger( $undervalk_steamfx_5 ); sys.trigger( $undervalk_steamfx_6 ); sys.trigger( $valkroom_rumble ); sys.trigger( $func_fx_50 ); sys.wait( 2 ); sys.trigger( $func_fx_53 ); sys.wait( 1 ); sys.trigger( $func_fx_52 ); sys.wait( 1.25 ); sys.trigger( $func_fx_54 ); sys.wait( 1.5 ); sys.trigger( $func_fx_55 ); sys.wait( 2 ); sys.trigger( $func_fx_51 ); //blow some shit up and stuff sys.wait( 4 ); thread m10_giveObjective( 2 ); //time for player to get out of Valk room sys.wait( 10 ); sys.trigger( $valkroom_bigfx ); sys.trigger( $valkroom_hurt ); sys.wait( 1 ); sys.trigger( $valkroom_bigsmoke ); sys.trigger( $valkroom_bigsmoke_1 ); //time for player to get out of Markron room sys.wait( 10 ); if( !EXIT_DOOR_ONE_CLOSED ) { sys.trigger( $makronroom_bigfx ); $monster_makron_6.kill(); $monster_makron_5.kill(); $monster_makron_8.kill(); $monster_makron_10.kill(); sys.trigger( $makronroom_hurt ); sys.wait( 1 ); sys.trigger( $makronroom_bigsmoke ); } if( EXIT_DOOR_ONE_CLOSED ) { sys.trigger( $makron_exp_speaker_1 ); sys.wait( 1 ); sys.trigger( $makron_exp_speaker_2 ); //give the player a few extra seconds because he closed the doors sys.wait( 2 ); } //time for player to get out of first tunnel section sys.wait( 5 ); if( !EXIT_DOOR_TWO_CLOSED ) { sys.trigger( $exit_tun_bigfx ); sys.trigger( $exit_tun_hurt_1 ); sys.wait( 1 ); sys.trigger( $exit_tun_1_bigsmoke ); } if( EXIT_DOOR_TWO_CLOSED ) { sys.trigger( $exit_tun_1_exp_speaker_1 ); sys.wait( 1 ); sys.trigger( $exit_tun_1_exp_speaker_2 ); //give the player a few extra seconds because he closed the doors sys.wait( 2 ); } //time for player to get out of second tunnel section sys.wait( 5 ); if( !EXIT_DOOR_THREE_CLOSED ) { sys.trigger( $exit_tun_bigfx_2 ); sys.trigger( $exit_tun_hurt_2 ); sys.wait( 1 ); sys.trigger( $exit_tun_2_bigsmoke ); } if( EXIT_DOOR_THREE_CLOSED ) { sys.trigger( $exit_tun_2_exp_speaker_1 ); sys.wait( 1 ); sys.trigger( $exit_tun_2_exp_speaker_2 ); //give the player a few extra seconds because he closed the doors sys.wait( 2 ); } //time for player to get out of third tunnel section sys.wait( 5 ); sys.trigger( $exit_tun_bigfx_3 ); sys.trigger( $exit_tun_hurt_3 ); sys.wait( 1 ); sys.trigger( $exit_tun_3_bigsmoke ); } /////////////////////////////////////////////////////////////// // Escape Sequence // /////////////////////////////////////////////////////////////// void exitDoorOneDisable() { $exitdooronepanel.setGuiParm( "noninteractive", "1" ); sys.wait( 2 ); EXIT_DOOR_ONE_CLOSED = true; } void exitDoorTwoDisable() { $exitdoortwopanel.setGuiParm( "noninteractive", "1" ); sys.wait( 2 ); EXIT_DOOR_TWO_CLOSED = true; } void exitDoorThreeDisable() { $exitdoorthreepanel.setGuiParm( "noninteractive", "1" ); sys.wait( 2 ); EXIT_DOOR_THREE_CLOSED = true; } void animateMakrons() { // DELETE THE MAKRONS // MAKE THIS ROOM THE ROOM WHERE YOU SEE ALL THE MANUFACTURING CRAP FOR THE MAKRONS?! $monster_makron_5.becomePassive( 1 ); $monster_makron_6.becomePassive( 1 ); $monster_makron_8.becomePassive( 1 ); $monster_makron_10.becomePassive( 1 ); aiScriptedAnim( $monster_makron_8, "death_start", 16, 1 ); sys.wait( 0.2 ); aiScriptedAnim( $monster_makron_10, "death_start", 16, 1 ); sys.wait( 0.5 ); aiScriptedAnim( $monster_makron_5, "death_start", 16, 1 ); sys.wait( 0.7 ); aiScriptedAnim( $monster_makron_6, "death_start", 16, 1 ); sys.wait( 0.3 ); } void broken_glass01() { $broken_glass01.show(); sys.trigger( $broken_glass_steam01 ); } void rd_spawner( entity rag ) { sys.wait( 2.5 ); rag.kill(); } void escapeSeqExplosions() { //Series of timed explosion FX and trigger hurts up the exit tunnel //Give the elevator time to get to its stopping point if( PLAYER_ON_EXIT_ELEVATOR ) { sys.wait( 40 ); } //Activate FX and trigger hurt sys.trigger( $esc_bot_bigfx_1 ); sys.trigger( $esc_bot_hurt_1 ); //Kill the large light for that section of tunnel $esc_light_1.Off(); //Start the secondary smoke sys.trigger( $esc_bot_bigfx_1b ); sys.wait( 8 ); sys.trigger( $esc_bot_bigfx_2 ); sys.trigger( $esc_bot_hurt_2 ); $esc_light_2.Off(); sys.trigger( $esc_bot_bigfx_2b ); sys.wait( 8 ); sys.trigger( $esc_bot_bigfx_3 ); sys.trigger( $esc_bot_hurt_3 ); $esc_light_3.Off(); sys.trigger( $esc_bot_bigfx_3b ); sys.wait( 8 ); sys.trigger( $esc_bot_bigfx_4 ); sys.trigger( $esc_bot_hurt_4 ); $esc_light_4.Off(); sys.trigger( $esc_bot_bigfx_4b ); sys.wait( 8 ); sys.trigger( $esc_bot_bigfx_5 ); sys.trigger( $esc_bot_hurt_5 ); $esc_light_5.Off(); sys.trigger( $esc_bot_bigfx_5b ); //Remove the secondary smoke as its very, very far below sys.trigger( $esc_bot_bigfx_1b ); sys.wait( 8 ); sys.trigger( $esc_bot_bigfx_6 ); sys.trigger( $esc_bot_hurt_6 ); sys.trigger( $esc_bot_bigfx_6b ); //Remove the secondary smoke as its very, very far below sys.trigger( $esc_bot_bigfx_2b ); sys.wait( 8 ); sys.trigger( $esc_bot_bigfx_7 ); sys.trigger( $esc_bot_hurt_7 ); sys.trigger( $esc_bot_bigfx_7b ); //Remove the secondary smoke as its very, very far below sys.trigger( $esc_bot_bigfx_3b ); } //If the player doesn't get on and start the elevator, start the explosions and kill him void esc_playerEnteredShaft() { sys.wait( 15 ); if( !PLAYER_ON_EXIT_ELEVATOR ) { thread escapeSeqExplosions(); } } void esc_playerRidingElevator() { PLAYER_ON_EXIT_ELEVATOR = true; } void esc_startSwingBeam() { $esc_swingbeam.time( 2 ); $esc_swingbeam.accelTime( 0.5 ); $esc_swingbeam.decelTime( 0.5 ); $esc_swingbeam.rotateOnce( '0 0 95' ); sys.waitFor( $esc_swingbeam ); $esc_swingbeam.time( 2 ); $esc_swingbeam.accelTime( 0.5 ); $esc_swingbeam.decelTime( 0.5 ); $esc_swingbeam.rotateOnce( '0 0 -35' ); sys.waitFor( $esc_swingbeam ); $esc_swingbeam.time( 2 ); $esc_swingbeam.accelTime( 0.5 ); $esc_swingbeam.decelTime( 0.5 ); $esc_swingbeam.rotateOnce( '0 0 25' ); sys.waitFor( $esc_swingbeam ); $esc_swingbeam.time( 2 ); $esc_swingbeam.accelTime( 0.5 ); $esc_swingbeam.decelTime( 1 ); $esc_swingbeam.rotateOnce( '0 0 -5' ); sys.waitFor( $esc_swingbeam ); } void esc_dropBeamOne() { $esc_beam_1.time( 5 ); $esc_beam_1.accelTime( 1 ); $esc_beam_1.move( DOWN, 2264 ); $esc_beam_1.rotateOnce( '180 180 180' ); sys.waitFor( $esc_beam_1 ); } void esc_dropBeamTwo() { $esc_beam_2.time( 9 ); $esc_beam_2.accelTime( 1 ); $esc_beam_2.move( DOWN, 3352 ); $esc_beam_2.rotateOnce( '180 180 180' ); sys.waitFor( $esc_beam_2 ); } void esc_dropBeamSix() { sys.trigger( $esc_beam6_static ); $esc_beam_6.time( 3 ); $esc_beam_6.accelTime( 1 ); $esc_beam_6.move( DOWN, 1048 ); $esc_beam_6.rotateOnce( '-180 180 -180' ); sys.waitFor( $esc_beam_6 ); } void esc_dropBeamThree() { sys.wait( 5 ); $esc_beam_3.time( 2 ); $esc_beam_3.accelTime( 1 ); $esc_beam_3.move( DOWN, 1048 ); $esc_beam_3.rotateOnce( '180 180 180' ); sys.waitFor( $esc_beam_3 ); //hits beam_6 sys.wait( 0.01 ); thread esc_dropBeamSix(); $esc_beam_3.time( 3 ); $esc_beam_3.accelTime( 1 ); $esc_beam_3.move( DOWN, 1048 ); $esc_beam_3.rotateOnce( '180 180 180' ); sys.waitFor( $esc_beam_3 ); } void esc_dropBeamFive() { sys.wait( 0.1 ); $esc_beam_5.time( 5 ); $esc_beam_5.accelTime( 1 ); $esc_beam_5.move( DOWN, 2000 ); $esc_beam_5.rotateOnce( '-180 -180 -180' ); sys.waitFor( $esc_beam_5 ); } void esc_dropBeamFour() { sys.wait( 0.25 ); thread esc_dropBeamFive(); $esc_beam_4.time( 5 ); $esc_beam_4.accelTime( 1 ); $esc_beam_4.move( DOWN, 2000 ); $esc_beam_4.rotateOnce( '180 180 180' ); sys.waitFor( $esc_beam_4 ); } void esc_walkwayFallOne() { $esc_walkway_1.time( 10 ); $esc_walkway_1.accelTime( 1 ); $esc_walkway_1.move( DOWN, 4600 ); $esc_walkway_1.rotateOnce( '180 360 360' ); sys.waitFor( $esc_walkway_1 ); } void esc_elevatorHit() { sys.wait( 8 ); sys.trigger( $esc_elv_hitbottom ); } void esc_elevatorFall() { ESCAPE_ELEVATOR_CLEAR = true; sys.trigger( $esc_speaker_1 ); sys.wait( 0.35 ); sys.trigger( $esc_speaker_2 ); sys.wait( 1 ); sys.trigger( $esc_fake_elev_speaker ); thread esc_elevatorHit(); $exit_fake_elevator.show(); $exit_elevator_panel_fake.show(); sys.wait( 0.1 ); $exit_elevator.remove(); $exit_fake_elevator.time( 8 ); $exit_fake_elevator.accelTime( 3 ); $exit_fake_elevator.move( DOWN, 5872 ); sys.trigger( $fake_ele_sparks_1 ); sys.trigger( $fake_ele_sparks_2 ); sys.trigger( $fake_ele_sparks_3 ); sys.trigger( $fake_ele_sparks_4 ); sys.waitFor( $exit_fake_elevator ); $fake_ele_sparks_1.remove(); $fake_ele_sparks_2.remove(); $fake_ele_sparks_3.remove(); $fake_ele_sparks_4.remove(); } //the elevator is at the top, wait a bit and if the player hasn't grappled off of it, drop the sucker void esc_elevatorUp() { sys.wait( 10 ); if( !ESCAPE_ELEVATOR_CLEAR ) { sys.trigger( $esc_speaker_2 ); sys.wait( 1 ); sys.trigger( $esc_speaker_1 ); } sys.wait( 5 ); if( !ESCAPE_ELEVATOR_CLEAR ) { thread esc_elevatorFall(); } } /////////////////////////////////////////////////////////////// // AI intro stuff // /////////////////////////////////////////////////////////////// void navajasPlantsBomb() { sys.println( "NAVAJAS: I'm going to rig a bomb on the Makron egg" ); // navajas jumps in daring fashion, what a hero sys.wait( 3 ); aiScriptedAnimWait( $navajas, "cine_mcc_rail_vault", 10, 1 ); // play place bomb anim aiScriptedFaceWait( $navajas, $lookAtMeDickhead, 1 ); aiScriptedAnimLoop( $navajas, "cine_medic_treating", 10 ); $navajas.bind( $mover_icecube ); sys.wait( 3 ); sys.trigger( $bomb01 ); $light_bomb01.On(); sys.println( "NAVAJAS: Find another way to follow me, I'll meet you later." ); } //Called via a trigger_once just before first platform the player lands on after grappling void activate_ai_room_1() { sys.println( "moving gunners" ); //thread gunner01(); $monster_gunner_2.becomeAggressive(); aiScriptedMove( $monster_gunner_2, $gunner02_spot01, 8, 1 ); aiScriptedTetherMoveWait( $monster_gunner_1, $ai_tether_radius_5 ); $monster_gunner_1.faceEntity( $func_static_55019 ); aiScriptedAnim( $monster_gunner_1, "gunner_intro", 10, 1 ); $monster_gunner_1.becomeAggressive(); } void gunner01() { aiScriptedTetherMoveWait( $monster_gunner_1, $ai_tether_radius_5 ); $monster_gunner_1.faceEntity( $func_static_55019 ); aiScriptedAnim( $monster_gunner_1, "gunner_intro", 10, 1 ); $monster_gunner_1.becomeAggressive(); } void jumpDownGuy() { sys.trigger( $osbt_1 ); //turn off the AAS obstacle on the ledge sys.trigger( $geronimo ); sys.wait( 0.1 ); aiScriptedMoveWait( $geronimo, $geronimo_jumpnull, 8, 1); $geronimo.scriptedJumpDown( 90 ); // this is the jump angle aiScriptedWait( $geronimo ); sys.wait( 0.1 ); $geronimo.becomeAggressive(); } void domeRoomJump1() { sys.trigger( $dude1 ); sys.trigger( $cold_breath_39 ); sys.wait( 0.1 ); aiScriptedMoveWait( $dude1, $domeroomnull, 8, 1); aiScriptedWait( $dude1 ); $dude1.scriptedJumpDown( 150 ); // this is the jump angle aiScriptedWait( $dude1 ); sys.wait( 0.1 ); aiScriptedMoveWait( $dude1, $domenull2, 8, 1); $dude1.becomeAggressive(); } void domeRoomJump3() { sys.trigger( $dude3 ); sys.trigger( $cold_breath_38 ); sys.wait( 0.1 ); aiScriptedMoveWait( $dude3, $domeroomnull, 8, 1); aiScriptedWait( $dude3 ); $dude3.scriptedJumpDown( 150 ); // this is the jump angle aiScriptedWait( $dude3 ); sys.wait( 0.1 ); aiScriptedMoveWait( $dude3, $domenull2, 8, 1); $dude3.becomeAggressive(); } void domeRoomJump4() { sys.trigger( $dude4 ); sys.trigger( $cold_breath_37 ); sys.wait( 0.1 ); aiScriptedMoveWait( $dude4, $domeroomnull, 8, 1); aiScriptedWait( $dude4 ); $dude4.scriptedJumpDown( 150 ); // this is the jump angle aiScriptedWait( $dude4 ); sys.wait( 0.1 ); aiScriptedMoveWait( $dude4, $domenull2, 8, 1); $dude4.becomeAggressive(); } /////////////////////////////////////////////////////////////// // /////////////////////////////////////////////////////////////// // /////////////////////////////////////////////////////////////// // Machines // /////////////////////////////////////////////////////////////// void steamersLoop() { while( 1 ) { $steamer_1_light.On(); sys.wait( 0.1 ); $steamer_1_lightb.On(); $steamer_1_light.fadeInLight( 4 ); sys.trigger( $steamer_1_liquid_speaker ); $steamer_1_fluid.time( 6 ); $steamer_1_fluid.move( UP, 390 ); sys.waitFor( $steamer_1_fluid ); $steamer_1_part_1.time( 2 ); $steamer_1_part_1.move( DOWN, 84 ); sys.waitFor( $steamer_1_part_1 ); $steamer_1_part_2.time( 2 ); $steamer_1_part_2.move( DOWN, 60 ); sys.waitFor( $steamer_1_part_2 ); $steamer_1_light.fadeOutLight( 5 ); $steamer_1_lightb.fadeInLight( 5 ); sys.wait( 5 ); $steamer_1_part_1.time( 2 ); $steamer_1_part_1.move( UP, 84 ); sys.waitFor( $steamer_1_part_1 ); $steamer_1_part_2.time( 2 ); $steamer_1_part_2.move( UP, 60 ); sys.waitFor( $steamer_1_part_2 ); $steamer_1_lightb.fadeOutLight( 6 ); $steamer_1_fluid.time( 6 ); $steamer_1_fluid.move( DOWN, 390 ); sys.waitFor( $steamer_1_fluid ); sys.trigger( $steamer_1_liquid_speaker ); $steamer_1_light.Off(); sys.wait( 0.1 ); $steamer_1_lightb.Off(); sys.wait( 2 ); $steamer_2_light.On(); sys.wait( 0.1 ); $steamer_2_lightb.On(); $steamer_2_light.fadeInLight( 4 ); sys.trigger( $steamer_2_liquid_speaker ); $steamer_2_fluid.time( 6 ); $steamer_2_fluid.move( UP, 390 ); sys.waitFor( $steamer_2_fluid ); $steamer_2_part_1.time( 2 ); $steamer_2_part_1.move( DOWN, 84 ); sys.waitFor( $steamer_2_part_1 ); $steamer_2_part_2.time( 2 ); $steamer_2_part_2.move( DOWN, 60 ); sys.waitFor( $steamer_1_part_2 ); $steamer_2_light.fadeOutLight( 5 ); $steamer_2_lightb.fadeInLight( 5 ); sys.wait( 5 ); $steamer_2_part_1.time( 2 ); $steamer_2_part_1.move( UP, 84 ); sys.waitFor( $steamer_2_part_1 ); $steamer_2_part_2.time( 2 ); $steamer_2_part_2.move( UP, 60 ); sys.waitFor( $steamer_2_part_2 ); $steamer_2_lightb.fadeOutLight( 6 ); $steamer_2_fluid.time( 6 ); $steamer_2_fluid.move( DOWN, 390 ); sys.waitFor( $steamer_2_fluid ); sys.trigger( $steamer_2_liquid_speaker ); $steamer_2_light.Off(); sys.wait( 0.1 ); $steamer_2_lightb.Off(); sys.wait( 2 ); } } void init_steamers() { $steamer_1_light.bind( $steamer_1_fluid ); $steamer_2_light.bind( $steamer_2_fluid ); $steamer_1_lightb.bind( $steamer_1_fluid ); $steamer_2_lightb.bind( $steamer_2_fluid ); $steamer_1_light.fadeOutLight( 1 ); $steamer_1_lightb.fadeOutLight( 1 ); $steamer_2_light.fadeOutLight( 1 ); $steamer_2_lightb.fadeOutLight( 1 ); sys.wait( 0.1 ); $steamer_1_fluid.time( 0.1 ); $steamer_1_fluid.move( DOWN, 390 ); sys.waitFor( $steamer_1_fluid ); sys.wait( 0.1 ); $steamer_1_part_1.time( 2 ); $steamer_1_part_1.move( UP, 84 ); sys.waitFor( $steamer_1_part_1 ); sys.wait( 0.1 ); $steamer_1_part_2.time( 2 ); $steamer_1_part_2.move( UP, 60 ); sys.waitFor( $steamer_1_part_2 ); sys.wait( 0.1 ); $steamer_2_fluid.time( 0.1 ); $steamer_2_fluid.move( DOWN, 390 ); sys.waitFor( $steamer_2_fluid ); sys.wait( 0.1 ); $steamer_2_part_1.time( 2 ); $steamer_2_part_1.move( UP, 84 ); sys.waitFor( $steamer_2_part_1 ); sys.wait( 0.1 ); $steamer_2_part_2.time( 2 ); $steamer_2_part_2.move( UP, 60 ); sys.waitFor( $steamer_2_part_2 ); sys.wait( 0.1 ); thread steamersLoop(); } //Machines in the dome cave room void machine_1_on() { MACHINE1ACTIVE = true ; while( MACHINE1ACTIVE ) { $machine_1.time( 2 ); $machine_1.accelTime( 0.25 ); $machine_1.decelTime( 0.25 ); $machine_1.rotateOnce( '0 40 0' ); sys.waitFor( $machine_1 ); sys.wait( 0.1 ); $machine_1.time( 2 ); $machine_1.accelTime( 0.25 ); $machine_1.decelTime( 0.25 ); $machine_1.rotateOnce( '0 -40 0' ); sys.waitFor( $machine_1 ); sys.wait( 0.1 ); } } void machine_1_off() { MACHINE1ACTIVE = false; $machine_1_light.fadeOutLight( 1 ); } void machine_2_on() { MACHINE2ACTIVE = true ; while( MACHINE2ACTIVE ) { $machine_2.time( 2 ); $machine_2.accelTime( 0.25 ); $machine_2.decelTime( 0.25 ); $machine_2.rotateOnce( '0 40 0' ); sys.waitFor( $machine_2 ); sys.wait( 0.1 ); $machine_2.time( 2 ); $machine_2.accelTime( 0.25 ); $machine_2.decelTime( 0.25 ); $machine_2.rotateOnce( '0 -40 0' ); sys.waitFor( $machine_2 ); sys.wait( 0.1 ); } } void machine_2_off() { thread machine_1_off(); MACHINE2ACTIVE = false; $machine_2_light.fadeOutLight( 1 ); } void machine_4_on() { MACHINE4ACTIVE = true ; while( MACHINE4ACTIVE ) { $machine_4.time( 2 ); $machine_4.accelTime( 0.25 ); $machine_4.decelTime( 0.25 ); $machine_4.rotateOnce( '0 40 0' ); sys.waitFor( $machine_4 ); sys.wait( 0.1 ); $machine_4.time( 2 ); $machine_4.accelTime( 0.25 ); $machine_4.decelTime( 0.25 ); $machine_4.rotateOnce( '0 -40 0' ); sys.waitFor( $machine_4 ); sys.wait( 0.1 ); } } void machine_4_off() { MACHINE4ACTIVE = false; $machine_4_light.fadeOutLight( 1 ); } void machine_3_on() { MACHINE3ACTIVE = true ; while( MACHINE3ACTIVE ) { $machine_3.time( 2 ); $machine_3.accelTime( 0.25 ); $machine_3.decelTime( 0.25 ); $machine_3.rotateOnce( '0 40 0' ); sys.waitFor( $machine_3 ); sys.wait( 0.1 ); $machine_3.time( 2 ); $machine_3.accelTime( 0.25 ); $machine_3.decelTime( 0.25 ); $machine_3.rotateOnce( '0 -40 0' ); sys.waitFor( $machine_3 ); sys.wait( 0.1 ); } } void machine_3_off() { thread machine_4_off(); MACHINE3ACTIVE = false; $machine_3_light.fadeOutLight( 1 ); } void start_machines() { thread machine_1_on(); sys.wait( 0.4 ); thread machine_2_on(); sys.wait( 0.3 ); thread machine_3_on(); sys.wait( 0.6 ); thread machine_4_on(); } void sendLiftUp() { $elevator_1.gotoFloor( 2 ); } // The second tall tunnel void moveIceCubeDown2() { $navajas.remove(); $valkaryne01.remove(); // navajas animated on the makron egg sys.trigger( $navajas02 ); aiScriptedAnimLoop( $navajas02, "cine_medic_treating", 10 ); sys.trigger( $bomb02 ); $light_bomb02.On(); // open door sys.trigger( $tubedoor2_north ); //move out of tube $mover_icecube_2.bind( $mover_icecube_trackthing_2 ); $mover_icecube_trackthing_2.time( 3 ); // was 5 $mover_icecube_trackthing_2.moveTo( $cube_null_4 ); sys.waitFor( $mover_icecube_trackthing_2 ); sys.trigger( $tubedoor2_north ); //open the teeth $s2_upperarm_teeth_1.time( 1 ); $s2_upperarm_teeth_1.move( 225, 32 ); sys.waitFor( $s2_upperarm_teeth_1 ); $s2_upperarm_teeth_2.time( 1 ); $s2_upperarm_teeth_2.move( 45, 32 ); sys.waitFor( $s2_upperarm_teeth_2 ); //Move out to end of track and move the upper grabber into position $mover_icecube_trackthing_2.time( 6 ); $mover_icecube_trackthing_2.decelTime( 1 ); $mover_icecube_trackthing_2.moveTo( $cube_null_5 ); $mover_icecube_trackthing_3.time( 5 ); $mover_icecube_trackthing_3.accelTime( 1 ); $mover_icecube_trackthing_3.decelTime( 1 ); $mover_icecube_trackthing_3.moveTo( $cube_null_7 ); $mover_upper_icecube_grabber.time( 5 ); $mover_upper_icecube_grabber.accelTime( 1 ); $mover_upper_icecube_grabber.decelTime( 1 ); $mover_upper_icecube_grabber.rotateOnce( '0 -180 0' ); sys.waitFor( $mover_icecube_trackthing_2 ); sys.wait( 1 ); $mover_icecube_2.unbind(); $mover_icecube_2.bind( $mover_upper_icecube_grabber ); //close the teeth $s2_upperarm_teeth_1.time( 1 ); $s2_upperarm_teeth_1.move( 225, 32 ); sys.waitFor( $s2_upperarm_teeth_1 ); $s2_upperarm_teeth_2.time( 1 ); $s2_upperarm_teeth_2.move( 45, 32 ); sys.waitFor( $s2_upperarm_teeth_2 ); //move the upper grabber out over the middle $mover_icecube_trackthing_3.time( 5 ); $mover_icecube_trackthing_3.accelTime( 1 ); $mover_icecube_trackthing_3.decelTime( 1 ); $mover_icecube_trackthing_3.moveTo( $cube_null_6 ); $mover_upper_icecube_grabber.time( 5 ); $mover_upper_icecube_grabber.accelTime( 1 ); $mover_upper_icecube_grabber.decelTime( 1 ); $mover_upper_icecube_grabber.rotateOnce( '0 180 0' ); sys.waitFor( $mover_icecube_trackthing_3 ); thread navajasDies(); sys.wait( 1 ); //move the upper grabber down $mover_upper_icecube_grabber.time( 3 ); $mover_upper_icecube_grabber.accelTime( 0.5 ); $mover_upper_icecube_grabber.decelTime( 0.5 ); $mover_upper_icecube_grabber.move( -2, 224 ); sys.waitFor( $mover_upper_icecube_grabber ); sys.wait( 1 ); //open the teeth $s2_upperarm_teeth_1.time( 1 ); $s2_upperarm_teeth_1.move( 225, 32 ); sys.waitFor( $s2_upperarm_teeth_1 ); $s2_upperarm_teeth_2.time( 1 ); $s2_upperarm_teeth_2.move( 45, 32 ); sys.waitFor( $s2_upperarm_teeth_2 ); $mover_icecube_2.unbind(); //move the upper grabber back up $mover_upper_icecube_grabber.time( 1.5 ); $mover_upper_icecube_grabber.accelTime( 0.5 ); $mover_upper_icecube_grabber.decelTime( 0.5 ); $mover_upper_icecube_grabber.move( -1, 224 ); sys.waitFor( $mover_upper_icecube_grabber ); //--------------------------- //Begin descent //--------------------------- $mover_icecube_2.bind( $mover_spiralarms ); $mover_spiralarms.time( 5 ); $mover_spiralarms.accelTime( 1 ); $mover_spiralarms.decelTime( 1 ); $mover_spiralarms.move( -2, 360 ); $mover_spiralarms.rotateOnce( '0 45 0' ); sys.waitFor( $mover_spiralarms ); //Machine 1 - do something cool! $mover_tube2_mach_1.time( 5 ); $mover_tube2_mach_1.accelTime( 0.5 ); $mover_tube2_mach_1.decelTime( 0.5 ); $mover_tube2_mach_1.rotateOnce( '0 45 0' ); sys.waitFor( $mover_tube2_mach_1 ); sys.wait( 2 ); $mover_tube2_mach_1.time( 5 ); $mover_tube2_mach_1.accelTime( 0.5 ); $mover_tube2_mach_1.decelTime( 0.5 ); $mover_tube2_mach_1.rotateOnce( '0 -45 0' ); sys.waitFor( $mover_tube2_mach_1 ); sys.wait( 1 ); $mover_spiralarms.time( 5 ); $mover_spiralarms.accelTime( 1 ); $mover_spiralarms.decelTime( 1 ); $mover_spiralarms.move( -2, 360 ); $mover_spiralarms.rotateOnce( '0 45 0' ); sys.waitFor( $mover_spiralarms ); //Machine 2 - do something cool! $mover_tube2_mach_2.time( 5 ); $mover_tube2_mach_2.accelTime( 0.5 ); $mover_tube2_mach_2.decelTime( 0.5 ); $mover_tube2_mach_2.rotateOnce( '0 35 0' ); sys.waitFor( $mover_tube2_mach_2 ); sys.wait( 2 ); $mover_tube2_mach_2.time( 5 ); $mover_tube2_mach_2.accelTime( 0.5 ); $mover_tube2_mach_2.decelTime( 0.5 ); $mover_tube2_mach_2.rotateOnce( '0 -35 0' ); sys.waitFor( $mover_tube2_mach_2 ); sys.wait( 1 ); $mover_spiralarms.time( 5 ); $mover_spiralarms.accelTime( 1 ); $mover_spiralarms.decelTime( 1 ); $mover_spiralarms.move( -2, 360 ); $mover_spiralarms.rotateOnce( '0 45 0' ); sys.waitFor( $mover_spiralarms ); //Machine 3 - do something cool! $mover_tube2_mach_3.time( 5 ); $mover_tube2_mach_3.accelTime( 0.5 ); $mover_tube2_mach_3.decelTime( 0.5 ); $mover_tube2_mach_3.rotateOnce( '0 45 0' ); sys.waitFor( $mover_tube2_mach_3 ); sys.wait( 2 ); $mover_tube2_mach_3.time( 5 ); $mover_tube2_mach_3.accelTime( 0.5 ); $mover_tube2_mach_3.decelTime( 0.5 ); $mover_tube2_mach_3.rotateOnce( '0 -45 0' ); sys.waitFor( $mover_tube2_mach_3 ); sys.wait( 1 ); $light_spiralarms_1.Off(); $light_spiralarms_2.Off(); $light_spiralarms_3.Off(); $light_spiralarms_4.Off(); //nothing else to do, move it all the way down $mover_spiralarms.time( 25 ); $mover_spiralarms.accelTime( 1 ); $mover_spiralarms.decelTime( 1 ); $mover_spiralarms.move( -2, 1800 ); $mover_spiralarms.rotateOnce( '0 225 0' ); sys.waitFor( $mover_spiralarms ); } void navajasWhereAreYou() { sys.println( "NAVAJAS: Dekard, where are you?" ); sys.wait( 3 ); sys.println( "NAVAJAS: I've almost got the charges set!" ); } void navajasDies() { // Navajas jumps off the Makron egg aiScriptedAnimWait( $navajas02, "idle", 10, 1 ); $navajas02.remove(); sys.trigger( $navajas03 ); $navajas03.becomePassive( 1 ); // Valkaryne preys on navajas sys.trigger( $valkaryne02 ); $valkaryne02.becomePassive( 1 ); aiScriptedMove( $navajas02, $navajas02_spot01, 8, 1 ); thread animateNavajas(); aiScriptedAnimWait( $valkaryne02, "va_najavas_dies", 10, 1 ); $valkaryne02.remove(); } void animateNavajas() { sys.wait( 3 ); $navajas03.kill(); // aaaaahhhhhhhhhhhhHHHHHH... *SPLAT* } void spawnTactical01() { // sys.println( "OPEN THE FUCKING DOOR!" ); sys.trigger( $monster_lt_tank_3 ); $tact_door01.lock( 0 ); $tact_door01.open(); aiScriptedMoveWait( $monster_lt_tank_3, $monster_lt_tank_3_spot01, 8, 1 ); $monster_lt_tank_3.becomeAggressive(); $tact_door01.lock( 1 ); $tact_door01.close(); } //The first tall tunnel void moveIceCubeDown() { thread navajasPlantsBomb(); // ** VO ** sys.trigger( $valk_speaker_1 ); //" .Reborn." sys.wait( 3 ); radioChatterPlay( $radiochatter, "vo_10_1_2" ); //" Dekard! What's going on? We're getting heavy(static) EM interference and (static) Losing you." $mover_icecube.bind( $mover_icecubearm_1 ); $mover_icecubearm_1.bind( $mover_icecubearmbase_1 ); $mover_icecubearm_2.bind( $mover_icecubearmbase_2 ); $mover_icecubearmbase_1.time( 60 ); $mover_icecubearmbase_1.decelTime( 1 ); $mover_icecubearmbase_1.move( -2, 1064 ); // 1144 $mover_icecubearmbase_2.time( 60 ); $mover_icecubearmbase_2.decelTime( 1 ); $mover_icecubearmbase_2.move( -2, 1064 ); // 1144 sys.waitFor( $mover_icecubearmbase_1 ); sys.wait( 1 ); $mover_icecubearm_1_teeth.time( 1 ); $mover_icecubearm_1_teeth.move( SOUTH, 24 ); sys.waitFor( $mover_icecubearm_1_teeth ); $mover_icecubearm_2_teeth.time( 1 ); $mover_icecubearm_2_teeth.move( WEST, 24 ); sys.waitFor( $mover_icecubearm_2_teeth ); sys.wait( 1 ); $mover_icecube.unbind(); $mover_icecubearm_1.time( 6 ); $mover_icecubearm_1.accelTime( 1 ); $mover_icecubearm_1.decelTime( 1 ); $mover_icecubearm_2.time( 6 ); $mover_icecubearm_2.accelTime( 1 ); $mover_icecubearm_2.decelTime( 1 ); $mover_icecubearmbase_1.move( -1, 1062 ); // 1142 $mover_icecubearmbase_2.move( -1, 1062 ); // 1142 $mover_icecubearm_1.rotateOnce( '0 0 60' ); $mover_icecubearm_2.rotateOnce( '-60 0 0' ); sys.waitFor( $mover_icecubearm_1 ); $mover_icecube.bind( $mover_icecube_trackthing ); $mover_icecube_trackthing.time( 5 ); $mover_icecube_trackthing.accelTime( 1 ); $mover_icecube_trackthing.decelTime( 1 ); $mover_icecube_trackthing.moveTo( $cube_null_1 ); sys.waitFor( $mover_icecube_trackthing ); } //Large iris doors at bottom of second descent shaft void operate_4door() //opens and closes 4 part door { if ( q4doorIsOpen == 1 ) { //close door $mover_4door_1.time( 3 ); $mover_4door_2.time( 3 ); $mover_4door_3.time( 3 ); $mover_4door_4.time( 3 ); $mover_4door_1.accelTime( 0.5 ); $mover_4door_2.accelTime( 0.5 ); $mover_4door_3.accelTime( 0.5 ); $mover_4door_4.accelTime( 0.5 ); $mover_4door_1.decelTime( 0.5 ); $mover_4door_2.decelTime( 0.5 ); $mover_4door_3.decelTime( 0.5 ); $mover_4door_4.decelTime( 0.5 ); $mover_4door_1.rotateOnce( '0 45 0' ); $mover_4door_2.rotateOnce( '0 45 0' ); $mover_4door_3.rotateOnce( '0 45 0' ); $mover_4door_4.rotateOnce( '0 45 0' ); sys.waitFor( $mover_4door_1 ); q4doorIsOpen = 0; } else { //open door $mover_4door_1.time( 3 ); $mover_4door_2.time( 3 ); $mover_4door_3.time( 3 ); $mover_4door_4.time( 3 ); $mover_4door_1.accelTime( 0.5 ); $mover_4door_2.accelTime( 0.5 ); $mover_4door_3.accelTime( 0.5 ); $mover_4door_4.accelTime( 0.5 ); $mover_4door_1.decelTime( 0.5 ); $mover_4door_2.decelTime( 0.5 ); $mover_4door_3.decelTime( 0.5 ); $mover_4door_4.decelTime( 0.5 ); $mover_4door_1.rotateOnce( '0 -45 0' ); $mover_4door_2.rotateOnce( '0 -45 0' ); $mover_4door_3.rotateOnce( '0 -45 0' ); $mover_4door_4.rotateOnce( '0 -45 0' ); sys.waitFor( $mover_4door_1 ); q4doorIsOpen = 1; } } void moveDropship() { sys.trigger( $char_dropship); aiScriptedAnimLoop( $char_dropship, "ad_bidwell_wave", 10 ); sys.trigger( $dropship ); //sys.trigger( $dropship_thruster01 ); // effects/cinematics/intro/vtol_5sec //sys.trigger( $dropship_thruster02 ); //sys.trigger( $dropship_thruster03 ); //sys.trigger( $dropship_thruster04 ); playAnimWait( $dropship, ANIMCHANNEL_ALL, "intro_idle" ); $mover_dropship.time( 3 ); $mover_dropship.decelTime( 1 ); $mover_dropship.moveTo( $dropship_null ); $mover_dropship.rotateOnce( '0 -180 0' ); sys.waitFor( $mover_dropship ); $mover_dropship.time( 3 ); $mover_dropship.accelTime( 1 ); $mover_dropship.decelTime( 1 ); $mover_dropship.moveTo( $dropship_null_1 ); $mover_dropship.rotateOnce( '0 -180 0' ); sys.wait( 2 ); $busted_beam01.remove(); sys.trigger( $busted_beam_explo01 ); $busted_beam02.remove(); sys.trigger( $busted_beam_explo02 ); sys.waitFor( $mover_dropship ); thread bobbing_dropship(); thread rolling_dropship(); thread turning_dropship(); } void bobbing_dropship() { //scriptEvent void bob( float speed, float phase, vector distance ); $mover_dropship.accelTime( 0.3 ); $mover_dropship.decelTime( 0.3 ); $mover_dropship.time( 1.5 ); $mover_dropship.bob( 8, 0, '0 0 6' ); } void rolling_dropship() { //scriptEvent void sway( float speed, float phase, vector angles ); $mover_dropship.accelTime( 0.3 ); $mover_dropship.decelTime( 0.3 ); $mover_dropship.time( 1.5 ); $mover_dropship.sway( 8, 4, '10 0 0' ); } void turning_dropship() { //scriptEvent void sway( float speed, float phase, vector angles ); $mover_dropship.accelTime( 0.3 ); $mover_dropship.decelTime( 0.3 ); $mover_dropship.time( 1.5 ); $mover_dropship.sway( 4, 1, '0 5 0' ); } //Large iris doors at end of level void operate_exit_4door() //opens and closes 4 part door { thread dropshipAbortsExtraction(); // waits 20 seconds sys.println( "HURRY! The doors are closing!" ); //close door | time was 25 $mover_4door_5.time( 45 ); $mover_4door_6.time( 45 ); $mover_4door_7.time( 45 ); $mover_4door_8.time( 45 ); $mover_4door_5.accelTime( 0.5 ); $mover_4door_6.accelTime( 0.5 ); $mover_4door_7.accelTime( 0.5 ); $mover_4door_8.accelTime( 0.5 ); $mover_4door_5.decelTime( 0.5 ); $mover_4door_6.decelTime( 0.5 ); $mover_4door_7.decelTime( 0.5 ); $mover_4door_8.decelTime( 0.5 ); $mover_4door_5.rotateOnce( '0 45 0' ); $mover_4door_6.rotateOnce( '0 45 0' ); $mover_4door_7.rotateOnce( '0 45 0' ); $mover_4door_8.rotateOnce( '0 45 0' ); sys.waitFor( $mover_4door_5 ); } void youAreTehWinnar() { aiScriptedAnimLoop( $char_dropship, "relaxed_idle", 10 ); PLAYER_ON_DROPSHIP = true; $player1.bind( $mover_dropship ); $player1.disableWeapon(); $mover_dropship.time( 5 ); $mover_dropship.accelTime( 1 ); $mover_dropship.moveTo( $dropship_null_2 ); sys.waitFor( $mover_dropship ); $mover_dropship.moveTo( $dropship_null_3 ); sys.waitFor( $mover_dropship ); thread animBanners(); // animate the banners outside facility // cut to outside room sys.trigger( $cine_shot01 ); // make ship fly $mover_cine_dropship.enableSplineAngles(); playAnimWait( $cine_dropship, ANIMCHANNEL_ALL, "idle_all_closed" ); $mover_cine_dropship.time( 10 ); $mover_cine_dropship.accelTime( 2 ); $mover_cine_dropship.decelTime( 0.5 ); $mover_cine_dropship.startSpline( $spline_dropship ); // wait a sec or two sys.wait( 3.5 ); // trigger explosions sys.trigger( $cine_explo01 ); sys.wait( 0.7 ); sys.trigger( $cine_explo02 ); sys.wait( 4 ); //sys.println( "FANTASTIC! Blowjobs for everyone!" ); //sys.fadeOut( '0 0 0', 3 ); // rock the camera $cine_shot01.bind( $mover_cine_shot01 ); //scriptEvent void bob( float speed, float phase, vector distance ); $mover_cine_shot01.bob( 10, 1, '0 0 16' ); //scriptEvent void sway( float speed, float phase, vector angles ); $mover_cine_shot01.sway( 10, 1, '0 10 0' ); sys.wait( 3 ); $cine_shot01.unbind(); sys.trigger( $cine_shot01 ); $player1.unbind(); // teleport player to the next cinematic scene which has a trigger_once that executes the "end_cine02" thread below $player1.setWorldOrigin( $cine02.getOrigin() ); } void end_cine02() { // WARPTO( "$cine02" ); sys.println( "ENDING IN SPACE" ); // unhide space props sys.trigger( $stroggos ); sys.trigger( $destroyer ); sys.trigger( $outro_dropship ); // make dropship fly away from stroggos thread animDropShipFlyByLanding(); $cine02_shot00.bind( $mover_shot00 ); // start camera shot00 in space sys.trigger( $cine02_shot00 ); $mover_shot00.accelTime( 1 ); $mover_shot00.decelTime( 1 ); $mover_shot00.time( 2 ); //scriptEvent void bob( float speed, float phase, vector distance ); $mover_shot00.bob( 10, 1, '0 0 8' ); $mover_shot00.sway( 10, 1, '0 12 0' ); sys.wait( 8 ); // RHINO SQUAD??? sys.trigger( $npc_fatigues01 ); sys.trigger( $npc_fatigues02 ); sys.trigger( $npc_fatigues03 ); sys.trigger( $npc_fatigues04 ); sys.trigger( $npc_fatigues05 ); // Bay doors open up for dropship sys.trigger( $door_uppper_top_2 ); sys.println( "ENDING IN PATTON BAY" ); // start camera shot01 in patton bay sys.trigger( $cine02_shot01 ); sys.wait( 12 ); sys.trigger( $npc_dekard ); $npc_dekard.setAnimRate( 1.2 ); $npc_dekard.setMoveSpeed( AIMOVESPEED_WALK ); aiScriptedMoveWait( $npc_dekard, $dekard_spot01, 8, 0 ); aiScriptedMoveWait( $npc_dekard, $dekard_spot02, 8, 0 ); // show makron/valkaryne emerging thread theEnd(); } void theEnd() { sys.println( "GAME OVER!! BLOWJOBS FOR EVERYONE!" ); sys.fadeOut( '0 0 0', 5); sys.wait( 5 ); sys.trigger( $TEHEND ); } void animDropShipFlyByLanding() { $outro_dropship.playAnim(ANIMCHANNEL_ALL, "outro_dropship"); sys.wait(25); sys.trigger($light_1846); //turn off red spinner } void dropshipAbortsExtraction() { // sys.println( "dropshipAbortsExtraction thread waiting 20sec" ); sys.wait( 20 ); // sys.println( PLAYER_ON_DROPSHIP ); if( !PLAYER_ON_DROPSHIP ) { sys.println( "DROPSHIP: We can't wait anymore, the doors are about to shut on us, we gotta jet, NOW!" ); $mover_dropship.time( 5 ); $mover_dropship.accelTime( 1 ); $mover_dropship.moveTo( $dropship_null_2 ); sys.waitFor( $mover_dropship ); $mover_dropship.moveTo( $dropship_null_3 ); sys.waitFor( $mover_dropship ); sys.println( "YOU BOOB! You were too slow!" ); sys.wait( 1 ); sys.fadeOut( '0 0 0', 5); } } void gotchaDekard() { aiScriptedAnimLoop( $char_dropship, "medic_treating", 10 ); sys.println( "I gotcha Dekard, just hop on up here!" ); } //Crane with grapple node attached void moveCrane() { $cranepipe.time( 8 ); $cranepipe.accelTime( 2 ); $cranepipe.decelTime( 2 ); $cranepipe.move( UP, 280 ); sys.waitFor( $cranepipe ); } //This is called by a trigger_once when the player is at the bottom of the first shaft void playerBottomShaftOne() { thread endRepairBotOne(); thread endRepairBotTwo(); //Move the Valk into the tube $mover_icecube.bind( $mover_icecube_trackthing ); $mover_icecube_trackthing.time( 5 ); $mover_icecube_trackthing.accelTime( 1 ); $mover_icecube_trackthing.decelTime( 1 ); $mover_icecube_trackthing.moveTo( $cube_null_2 ); sys.waitFor( $mover_icecube_trackthing ); sys.trigger( $tubedoor1_north ); $mover_icecube.bind( $mover_icecube_trackthing ); $mover_icecube_trackthing.time( 5 ); $mover_icecube_trackthing.accelTime( 1 ); $mover_icecube_trackthing.decelTime( 1 ); $mover_icecube_trackthing.moveTo( $cube_null_3 ); sys.waitFor( $mover_icecube_trackthing ); sys.trigger( $tubedoor1_north ); } void nexusDestroyed() { $monster_q4x_tactical_railgun_1.becomePassive( 1 ); aiScriptedAnimLoop( $monster_q4x_tactical_railgun_1, "floating_tube", 10 ); // thread gunners4and5Fight(); sys.trigger( $nexus_sparks01 ); sys.trigger( $nexus_sparks02 ); sys.trigger( $nexus_sparks03 ); sys.trigger( $nexus_sparks04 ); sys.println( "MARKSWELL: The nexus has been destroyed, the Strogg communication network is down." ); sys.wait( 3 ); sys.println( "MARKSWELL: All the Strogg are fighting each other!" ); } void gunners4and5Fight() { // $monster_gunner_4.becomePassive( 1 ); $monster_gunner_5.becomePassive( 1 ); while ( 1 ) { aiScriptedAnim( $monster_gunner_4, "melee_attack1", 10, 1 ); aiScriptedAnimWait( $monster_gunner_5, "evade_right", 10, 1 ); sys.wait( 0.5 ); aiScriptedAnim( $monster_gunner_4, "evade_left", 10, 1 ); aiScriptedAnimWait( $monster_gunner_5, "melee_attack2", 10, 1 ); sys.wait( 0.5 ); } } void sci_madienFight() { sys.println( "scientist fights maiden" ); sys.trigger( $monster_scientist_1 ); $monster_scientist_1.becomePassive( 1 ); aiScriptedMoveWait( $monster_scientist_1, $ms01_spot01, 8, 1 ); aiScriptedAnimWait( $monster_scientist_1, "melee_attack1", 10, 1 ); aiScriptedAnimWait( $monster_scientist_1, "melee_attack3", 10, 1 ); aiScriptedAnimWait( $monster_scientist_1, "melee_attack1", 10, 1 ); sys.trigger( $env_wall_casket_6 ); sys.trigger( $monster_iron01 ); $monster_scientist_1.becomePassive( 0 ); } void killValk() { // script thread map_m10::killValk(); $valk.kill(); } void warpTo( entity warp ) { $player1.setWorldOrigin( warp.getOrigin() ); } void animBanners() { $env_q4x_banner_1.playCycle( ANIMCHANNEL_ALL, "idle" ); $env_q4x_banner_2.playCycle( ANIMCHANNEL_ALL, "idle" ); $env_q4x_banner_3.playCycle( ANIMCHANNEL_ALL, "idle" ); $env_q4x_banner_4.playCycle( ANIMCHANNEL_ALL, "idle" ); $env_q4x_banner_5.playCycle( ANIMCHANNEL_ALL, "idle" ); $env_q4x_banner_6.playCycle( ANIMCHANNEL_ALL, "idle" ); $env_q4x_banner_7.playCycle( ANIMCHANNEL_ALL, "idle" ); $env_q4x_banner_8.playCycle( ANIMCHANNEL_ALL, "idle" ); } // script thread map_m10::warpTo( nexus ); ////////////////////////// // // Raven's Core Room Script // /////////////////////////// void streamerScrolling() { sys.println( "streamer started" ); // fancy stuff to make sure that the shader effects don't get out of sync with the effects emitters float streamerPosition = 0; float oldTime = sys.getTime(); float nowTime = sys.getTime(); float startTime = sys.getTime(); float deltaTime; float streamerState = 0; float streamerSpeed = -0.125; while(1){ nowTime = sys.getTime(); deltaTime = nowTime - oldTime; oldTime = nowTime; streamerPosition += streamerSpeed * deltaTime; $coreStreamers.setShaderParm( 4, streamerPosition ); if ((nowTime - startTime) >= 8.0) { //sys.print("reset"); startTime = nowTime; streamerState = 0; } else if ((nowTime - startTime) >= 1.7 && streamerState == 2) { //sys.print("third one"); sys.trigger($thirdHex); streamerState = 3; } else if ((nowTime - startTime) >= 1.4 && streamerState == 1) { //sys.print("second one"); sys.trigger($secondHex); streamerState = 2; } else if ((nowTime - startTime) >= 0.35 && streamerState == 0) { //sys.print("first one"); sys.trigger($firstHex); streamerState = 1; } sys.waitFrame(); } } void markswellIsMrObvious() { sys.println( "MARKSWELL: Dekard, get out of there! The place is falling apart!" ); } void parallax() { $skyportal.bind( $mvr_skyportal ); $mvr_skyportal.time( 12 ); $mvr_skyportal.accelTime( 0 ); $mvr_skyportal.decelTime( 0 ); //while( 1 ) //{ $mvr_skyportal.moveTo( $target_sky_spot02 ); //sys.waitFor( $mvr_skyportal ); //$mvr_skyportal.moveTo( $target_sky_spot01 ); //sys.waitFor( $mvr_skyportal ); //} } void newsky() { // move the skyportal ent to a new sky location $skyportal.setOrigin( $sky_null.getOrigin() ); } /////////////////// // // AI cold breath // /////////////////// void coldInHere() { $cold_breath_1.bindToJoint( $monster_gunner_1, "legs_channel", 1 ); $cold_breath_1.setOrigin( '10 0 72' ); //gunner position $cold_breath_2.bindToJoint( $monster_gunner_2, "legs_channel", 1 ); $cold_breath_2.setOrigin( '10 0 72' ); $cold_breath_4.bindToJoint( $monster_iron_maiden_2, "legs_channel", 1 ); $cold_breath_4.setOrigin( '6 0 92' ); $cold_breath_5.bindToJoint( $monster_gunner_3, "legs_channel", 1 ); $cold_breath_5.setOrigin( '10 0 72' ); $cold_breath_7.bindToJoint( $monster_strogg_marine_3, "legs_channel", 1 ); $cold_breath_7.setOrigin( '4 0 60' ); //Strogg Marine Position $cold_breath_8.bindToJoint( $monster_hh_tank_1, "legs_channel", 1 ); //scientist $cold_breath_8.setOrigin( '26 0 26' ); //Scientist position $cold_breath_10.bindToJoint( $monster_q4x_berserker_1, "legs_channel", 1 ); $cold_breath_10.setOrigin( '8 0 72' ); //Berserker position $cold_breath_11.bindToJoint( $monster_lt_tank_3, "legs_channel", 1 ); //tactical railgun $cold_breath_11.setOrigin( '0 0 0' ); //Tactical position $cold_breath_12.bindToJoint( $monster_lt_tank_2, "legs_channel", 1 ); //tactical railgun $cold_breath_12.setOrigin( '0 0 0' ); $cold_breath_14.bindToJoint( $monster_lt_tank_4, "legs_channel", 1 ); $cold_breath_14.setOrigin( '4 0 90' ); //Lt Tank position $cold_breath_15.bindToJoint( $monster_strogg_marine_2, "legs_channel", 1 ); $cold_breath_15.setOrigin( '4 0 60' ); $cold_breath_16.bindToJoint( $monster_gunner_9, "legs_channel", 1 ); $cold_breath_16.setOrigin( '10 0 72' ); $cold_breath_17.bindToJoint( $monster_q4x_tank_1, "legs_channel", 1 ); //Lt Tank $cold_breath_17.setOrigin( '4 0 90' ); $cold_breath_18.bindToJoint( $monster_q4x_strogg_marine_1, "legs_channel", 1 ); $cold_breath_18.setOrigin( '4 0 60' ); $cold_breath_19.bindToJoint( $monster_gunner_11, "legs_channel", 1 ); $cold_breath_19.setOrigin( '10 0 72' ); $cold_breath_20.bindToJoint( $monster_strogg_marine_4, "legs_channel", 1 ); $cold_breath_20.setOrigin( '4 0 60' ); $cold_breath_21.bindToJoint( $monster_berserker_2, "legs_channel", 1 ); $cold_breath_21.setOrigin( '8 0 72' ); $cold_breath_22.bindToJoint( $monster_berserker_1, "legs_channel", 1 ); $cold_breath_22.setOrigin( '8 0 72' ); $cold_breath_23.bindToJoint( $monster_scientist_3, "legs_channel", 1 ); $cold_breath_23.setOrigin( '26 0 26' ); $cold_breath_24.bindToJoint( $monster_hh_tank_2, "legs_channel", 1 ); //scientist $cold_breath_24.setOrigin( '26 0 26' ); $cold_breath_25.bindToJoint( $monster_gunner_8, "legs_channel", 1 ); $cold_breath_25.setOrigin( '10 0 72' ); $cold_breath_26.bindToJoint( $monster_scientist_4, "legs_channel", 1 ); $cold_breath_26.setOrigin( '26 0 26' ); $cold_breath_27.bindToJoint( $geronimo, "legs_channel", 1 ); $cold_breath_27.setOrigin( '4 0 60' ); $cold_breath_28.bindToJoint( $monster_gunner_7, "legs_channel", 1 ); $cold_breath_28.setOrigin( '10 0 72' ); $cold_breath_29.bindToJoint( $monster_q4x_tactical_railgun_1, "legs_channel", 1 ); $cold_breath_29.setOrigin( '0 0 0' ); $cold_breath_30.bindToJoint( $monster_gunner_5, "legs_channel", 1 ); $cold_breath_30.setOrigin( '10 0 72' ); $cold_breath_31.bindToJoint( $monster_gunner_4, "legs_channel", 1 ); $cold_breath_31.setOrigin( '10 0 72' ); $cold_breath_32.bindToJoint( $monster_scientist_1, "legs_channel", 1 ); $cold_breath_32.setOrigin( '26 0 26' ); $cold_breath_33.bindToJoint( $monster_tactical_railgun_1, "legs_channel", 1 ); //retch $cold_breath_33.setOrigin( '12 13 64' ); //Retch position $cold_breath_34.bindToJoint( $monster_scientist_2, "legs_channel", 1 ); $cold_breath_34.setOrigin( '26 0 26' ); $cold_breath_35.bindToJoint( $monster_gunner_6, "legs_channel", 1 ); $cold_breath_35.setOrigin( '10 0 72' ); $cold_breath_37.bindToJoint( $dude4, "legs_channel", 1 ); //Strogg Marine $cold_breath_37.setOrigin( '4 0 60' ); $cold_breath_38.bindToJoint( $dude3, "legs_channel", 1 ); //Strogg Marine $cold_breath_38.setOrigin( '4 0 60' ); $cold_breath_39.bindToJoint( $dude1, "legs_channel", 1 ); //Strogg Marine $cold_breath_39.setOrigin( '4 0 60' ); $cold_breath_40.bindToJoint( $monster_gladiator_1, "legs_channel", 1 ); $cold_breath_40.setOrigin( '20 0 86' ); //Gladiator Position $cold_breath_41.bindToJoint( $monster_gladiator_2, "legs_channel", 1 ); //Gunner $cold_breath_41.setOrigin( '10 0 72' ); } /////////////////////////////////////////////////////////////// // /////////////////////////////////////////////////////////////// // /////////////////////////////////////////////////////////////// // Initialization Threads // /////////////////////////////////////////////////////////////// void setupMachines() { $mover_icecube_trackthing_3.time( 5 ); $mover_icecube_trackthing_3.accelTime( 1 ); $mover_icecube_trackthing_3.decelTime( 1 ); $mover_icecube_trackthing_3.moveTo( $cube_null_6 ); sys.waitFor( $mover_icecube_trackthing_3 ); $mover_tube2_mach_2.time( 5 ); $mover_tube2_mach_2.accelTime( 0.5 ); $mover_tube2_mach_2.decelTime( 0.5 ); $mover_tube2_mach_2.rotateOnce( '0 10 0' ); sys.waitFor( $mover_tube2_mach_2 ); } /////////////////////////////////////////////////////////////// // /////////////////////////////////////////////////////////////// // /////////////////////////////////////////////////////////////// // Main // /////////////////////////////////////////////////////////////// void main() { thread setupMachines(); thread init_steamers(); //Setup booleans ESCAPE_ELEVATOR_CLEAR = false; PLAYER_ON_EXIT_ELEVATOR = false; EXIT_DOOR_ONE_CLOSED = false; EXIT_DOOR_TWO_CLOSED = false; EXIT_DOOR_THREE_CLOSED = false; sys.trigger( $navajas ); $navajas.becomePassive( 1 ); sys.trigger( $valkaryne01 ); $valkaryne01.becomePassive( 1 ); aiScriptedAnimLoop( $valkaryne01, "idle", 10 ); sys.trigger( $monster_gunner_1 ); sys.trigger( $monster_gunner_2 ); sys.trigger( $repbot_1 ); sys.trigger( $repbot_2 ); thread coldInHere(); thread repairBotOne(); thread repairBotTwo(); sys.wait( 2 ); m10_giveObjective( 1 ); thread moveIceCubeDown(); PLAYER_ON_DROPSHIP = false; GAME_OVER = false; } } // end namespace